• ベストアンサー

C言語する必要が出てしまったのですが   勉強方法

 わたしはいま大学院生で、過去の研究を引き継ぐことになったのですが、2日前120ページにわたるプログラムのリストをわたされ5月末までに理解しなおかつ組みなおしてくれといわれてしまいました.Cの知識がほとんどない状態で何から手をつけていいのか混乱しています.何かいい参考書やまた勉強方法があれば教えてください。そのプログラムは体重変化を解析していろいろな生体情報を得るといったものなのですが。助手の方はそんなに難しいことはしていないといっているのですが、知識がないものとしてはなかなか難しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jppy
  • ベストアンサー率14% (14/99)
回答No.5

たぶん、いきなりプログラムを渡されその解読にいそしんでいるかと思うのですが。 「フローチャート」を書いてみる。または先任者の作ったフローチャートや仕様書を研究してみる 事からはじめてみたらいかがでしょう。研究室レベルであると そのようなもの(フローチャートなど)は非常に粗野に扱われますが・・・・・ 蛇足ですが フローはまず、大まかなもの(体重変化の解析>>生態情報を得る くらいの) 次に少し詳しくしたもの(体重変化の解析に必要な処理は、どのようなこと? くらいの) そして、それではその処理に使うデータ構造、データアクセス方法はどうなのかな?と 3段階くらいに分けておくといいかもしれません。 そして「最後」にプログラムの解析をなさったらどうでしょうか? 一気に20ページは、無理なので、少しづつ部品(関数)に分けて、 見ていったらよいと思います。 補足への返答 ○Cの知識 配列>>ポインタ>>構造体(>>共用体) たぶん、配列はお出来になると思いますのでポインタと構造体あたりでしょうか? > 今回のような長いプログラムになると自分で作った関数やヘッダーや解らない関数が > どんどん出てきたりして、どのように読んでいけばいいのかがわかりません プログラムが長い:分けましょう、長いと思うと長いのです。 自分で作った関数:VBのものと一緒です、とりあえずは何をもらって何を返すのかそれだけです          中身はその後でも良いかと思います ヘッダー:ヘッダーの中身はご覧になりましたか?(テキストエディターで開けます)      そうです。単なる宣言の集まりだったりします。これに、変数の型が書いてあるかもしれません      ので見ておいたほうが良いでしょう。 わからない関数:これも自分で作った関数同様何をもらって何を返すかこれだけでいいかと思います 自分もわかってないくせに長々と書いてしまいました。 多少でも参考にしていただければ幸いです。 他の経験者様へ もし間違った理解などございましたら指摘していただけると幸いです。

その他の回答 (4)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.4

うーむ、では少しながらVBの知識があるとして、VBプログラマーからCへ移行した経験者としての意見を出せば、少しは役に立つでしょうか。 ○ 関数名はVBよりもかなり略語の連結が多い VBはせいぜい3文字程度までしか略しませんが、Cのランタイム関数は頭文字しか残ってないこともしばしばです。 何かの頭文字の連結だと思って、関数名から大体の機能を予測してください。 ○ 文字列に代入はできない Cの文字列はchar(byte)配列で仮想化してるだけですから、単純に=演算子ではコピーできないことを覚えておいてください。 ○ 数を文字列に勝手に変換してくれない 文字列を出力する関数に数を入れても、変換できないのでエラーとなります。 リファレンスでsscanf関数とかを勉強してください。 ○ ポインタをとにかくがんばって勉強する ポインタはアドレスを格納する変数です。 これについてはVBをやっていてもぜんぜんわかりません。 ポインタだけについて語っている本はいくらでもあります。 ソースコードをざっと見て、掛け算ではなさそうなところに*が頻繁に使われていたり、->とかがたくさん見られるなら、ポインタの入門書も導入したほうがいいと思います。 わからなくなったら、またここに来てください。 アドバイスしてくれる人はたくさんいますから。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

NO.1のymmasayanです。 > 組直しの内容はCからCです。組直しの必要性は取り合えずパソコンを取り替えるとのことでそれまでにいまのプログラムを理解しておき、その後、改造を加えます。 状況はわかりました。パソコン取替えで組みなおしの必要があるかどうかは別として、改造を加えなければいけないと言うことですね。 Cはもともと、プロが使う言語として作られています。もちろん、初心者にも使えますが、それなりの難しさと危険性があります。 前置きはさておき、まず、入門書と文法書が1冊づつ必要です。 最初に入門書にざっと眼を通し大体のところを頭に入れます。(自分で組むわけではないのでざっとでいいです) 次に、与えられたプログラムを解読していき、疑問点が出てくるごとに、文法書と入門書に照らしていくのがいいと思います。C言語は関数の塊(メインプログラム自体も関数)ですので関数ごとに区分けして、理解していくといいと思います。 誰かに、一部の解読を一緒にやってもらいながら覚えていければ一番いいのですが。後どうしてもわからないところは、この欄で質問をするのもいいと思います。 頑張って下さい。

  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

組みなおすってのは、紙からデジタルにしろってことですよね。 120ページの紙メディアなんて、打ち込むだけでいやな話ですね・・・。 ひとまず、スキャナ+OCRソフトである程度デジタルメディアにしないと、ヤル気の失せる話です。 さて、理解しろとのことですが・・・。 ほかのプログラミング言語の知識はあるのでしょうか。 ymmasayanさんに加えて、次のことも補足してください。 ○ 専攻分野 ○ その他の言語知識(VB? Pascal? JAVA? Perl?) ○ Cの知識がないとは、具体的に・・・(いや、これが説明できないほどCの知識がないとしたら、もはやムリのような・・・)

bloody
質問者

補足

回答ありがとうございました。 ○専攻分野→機械科学専攻です。医療・福祉機器を扱う研究室です。 ○プログラミング言語の知識→かんたんプログラミングVisual Basic の基礎編という本で勉強したことはあります. ○Cの知識がないとは→ほんとうの入門用の本を昨日読んだのですがにそういう本に載っているような短いコードならVBと似ていないこともないので解るのですが今回のような長いプログラムになると自分で作った関数やヘッダーや解らない関数がどんどん出てきたりして、どのように読んでいけばいいのかがわかりません。たどたどしい説明ですいません。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

状況がつかみきれません。 引き継いだプログラムを理解するところまではいいとして (1)組直しの内容は。 CからC? 他言語からC? Cから他言語? (2)組直しの必要性。 理解のため? 言語を変えるため? 今回改造を加える? 将来の改造に備える? その他? が判らないのでアドバイスのしようがありません。 補足して下さい。 

bloody
質問者

補足

回答ありがとうございます。状況を説明しますと  組直しの内容はCからCです  組直しの必要性は取り合えずパソコンを取り替えるとのことでそれまでにいまの      プログラムを理解しておき、その後、改造を加えます。

関連するQ&A