わたしはいま大学院生で、過去の研究を引き継ぐことになったのですが、2日前120ページにわたるプログラムのリストをわたされ5月末までに理解しなおかつ組みなおしてくれといわれてしまいました.Cの知識がほとんどない状態で何から手をつけていいのか混乱しています.何かいい参考書やまた勉強方法があれば教えてください。そのプログラムは体重変化を解析していろいろな生体情報を得るといったものなのですが。助手の方はそんなに難しいことはしていないといっているのですが、知識がないものとしてはなかなか難しいです。
No.5ベストアンサー
- 回答日時:
たぶん、いきなりプログラムを渡されその解読にいそしんでいるかと思うのですが。
「フローチャート」を書いてみる。または先任者の作ったフローチャートや仕様書を研究してみる
事からはじめてみたらいかがでしょう。研究室レベルであると
そのようなもの(フローチャートなど)は非常に粗野に扱われますが・・・・・
蛇足ですが
フローはまず、大まかなもの(体重変化の解析>>生態情報を得る くらいの)
次に少し詳しくしたもの(体重変化の解析に必要な処理は、どのようなこと? くらいの)
そして、それではその処理に使うデータ構造、データアクセス方法はどうなのかな?と
3段階くらいに分けておくといいかもしれません。
そして「最後」にプログラムの解析をなさったらどうでしょうか?
一気に20ページは、無理なので、少しづつ部品(関数)に分けて、
見ていったらよいと思います。
補足への返答
○Cの知識
配列>>ポインタ>>構造体(>>共用体)
たぶん、配列はお出来になると思いますのでポインタと構造体あたりでしょうか?
> 今回のような長いプログラムになると自分で作った関数やヘッダーや解らない関数が
> どんどん出てきたりして、どのように読んでいけばいいのかがわかりません
プログラムが長い:分けましょう、長いと思うと長いのです。
自分で作った関数:VBのものと一緒です、とりあえずは何をもらって何を返すのかそれだけです
中身はその後でも良いかと思います
ヘッダー:ヘッダーの中身はご覧になりましたか?(テキストエディターで開けます)
そうです。単なる宣言の集まりだったりします。これに、変数の型が書いてあるかもしれません
ので見ておいたほうが良いでしょう。
わからない関数:これも自分で作った関数同様何をもらって何を返すかこれだけでいいかと思います
自分もわかってないくせに長々と書いてしまいました。
多少でも参考にしていただければ幸いです。
他の経験者様へ
もし間違った理解などございましたら指摘していただけると幸いです。
No.4
- 回答日時:
うーむ、では少しながらVBの知識があるとして、VBプログラマーからCへ移行した経験者としての意見を出せば、少しは役に立つでしょうか。
○ 関数名はVBよりもかなり略語の連結が多い
VBはせいぜい3文字程度までしか略しませんが、Cのランタイム関数は頭文字しか残ってないこともしばしばです。
何かの頭文字の連結だと思って、関数名から大体の機能を予測してください。
○ 文字列に代入はできない
Cの文字列はchar(byte)配列で仮想化してるだけですから、単純に=演算子ではコピーできないことを覚えておいてください。
○ 数を文字列に勝手に変換してくれない
文字列を出力する関数に数を入れても、変換できないのでエラーとなります。
リファレンスでsscanf関数とかを勉強してください。
○ ポインタをとにかくがんばって勉強する
ポインタはアドレスを格納する変数です。
これについてはVBをやっていてもぜんぜんわかりません。
ポインタだけについて語っている本はいくらでもあります。
ソースコードをざっと見て、掛け算ではなさそうなところに*が頻繁に使われていたり、->とかがたくさん見られるなら、ポインタの入門書も導入したほうがいいと思います。
わからなくなったら、またここに来てください。
アドバイスしてくれる人はたくさんいますから。
No.3
- 回答日時:
NO.1のymmasayanです。
> 組直しの内容はCからCです。組直しの必要性は取り合えずパソコンを取り替えるとのことでそれまでにいまのプログラムを理解しておき、その後、改造を加えます。
状況はわかりました。パソコン取替えで組みなおしの必要があるかどうかは別として、改造を加えなければいけないと言うことですね。
Cはもともと、プロが使う言語として作られています。もちろん、初心者にも使えますが、それなりの難しさと危険性があります。
前置きはさておき、まず、入門書と文法書が1冊づつ必要です。
最初に入門書にざっと眼を通し大体のところを頭に入れます。(自分で組むわけではないのでざっとでいいです)
次に、与えられたプログラムを解読していき、疑問点が出てくるごとに、文法書と入門書に照らしていくのがいいと思います。C言語は関数の塊(メインプログラム自体も関数)ですので関数ごとに区分けして、理解していくといいと思います。
誰かに、一部の解読を一緒にやってもらいながら覚えていければ一番いいのですが。後どうしてもわからないところは、この欄で質問をするのもいいと思います。
頑張って下さい。
No.2
- 回答日時:
組みなおすってのは、紙からデジタルにしろってことですよね。
120ページの紙メディアなんて、打ち込むだけでいやな話ですね・・・。
ひとまず、スキャナ+OCRソフトである程度デジタルメディアにしないと、ヤル気の失せる話です。
さて、理解しろとのことですが・・・。
ほかのプログラミング言語の知識はあるのでしょうか。
ymmasayanさんに加えて、次のことも補足してください。
○ 専攻分野
○ その他の言語知識(VB? Pascal? JAVA? Perl?)
○ Cの知識がないとは、具体的に・・・(いや、これが説明できないほどCの知識がないとしたら、もはやムリのような・・・)
この回答への補足
回答ありがとうございました。
○専攻分野→機械科学専攻です。医療・福祉機器を扱う研究室です。
○プログラミング言語の知識→かんたんプログラミングVisual Basic の基礎編という本で勉強したことはあります.
○Cの知識がないとは→ほんとうの入門用の本を昨日読んだのですがにそういう本に載っているような短いコードならVBと似ていないこともないので解るのですが今回のような長いプログラムになると自分で作った関数やヘッダーや解らない関数がどんどん出てきたりして、どのように読んでいけばいいのかがわかりません。たどたどしい説明ですいません。
No.1
- 回答日時:
状況がつかみきれません。
引き継いだプログラムを理解するところまではいいとして
(1)組直しの内容は。 CからC? 他言語からC? Cから他言語?
(2)組直しの必要性。 理解のため? 言語を変えるため? 今回改造を加える? 将来の改造に備える? その他?
が判らないのでアドバイスのしようがありません。
補足して下さい。
この回答への補足
回答ありがとうございます。状況を説明しますと
組直しの内容はCからCです
組直しの必要性は取り合えずパソコンを取り替えるとのことでそれまでにいまの プログラムを理解しておき、その後、改造を加えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 大学受験 自己推薦書の添削や意見・アドバイスお願いします 2 2022/08/27 19:34
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- 宅地建物取引主任者(宅建) 未経験・知識ゼロからの宅建取引士勉強方法について 2 2022/06/10 14:38
- 弁護士・行政書士・司法書士・社会保険労務士 宅建等の法律関係の勉強法について 2 2022/06/23 01:10
- その他(職業・資格) 弁理士試験の勉強方法について 1 2022/09/11 07:32
- IT・エンジニアリング ITエンジニアの勉強時間や勉強方法について 初めまして閲覧いただきありがとうございます。 当方25歳 4 2022/06/09 18:51
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- 簿記検定・漢字検定・秘書検定 [簿記] 簿記に詳しい方や、日商簿記2級に合格した方に質問です。 学生です。 -日商簿記の2級を取り 1 2023/01/17 02:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
戻り値で構造体を返すことは可...
-
init関数の意味
-
C言語でのconstを返す関数
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
コンストラクタでnewを失敗した...
-
Run-Time Check Failure #3とい...
-
ハンドル、アドレス、ポインタ...
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
VBはCを混乱させる?
-
ハンドルはポインタか
-
構造体の中の構造体
-
パスからファイル名を抽出
-
C言語でポインタを使ってピタ...
-
単方向リスト
-
AESのC言語による実装
-
ExcelVBAでのkernel32(64bit)
-
nullポインタを逆参照とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
C言語の関数と配列に関する質問
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
セグメントエラー
-
アプリを32bitから64bit移行
-
コンストラクタでnewを失敗した...
-
ExcelVBAでのkernel32(64bit)
-
Cで作成したDLL関数をVBから呼...
-
ハンドルはポインタか
-
DLL<->VB間での受け渡し(文字...
-
C言語でのconstを返す関数
-
ポインタについて
-
参照型で受け取った引数をポイ...
-
TCHAR文字列内の検索について
-
デバイスハンドルとは?
-
基本アルゴリズムの『返す』の...
おすすめ情報