• 締切済み

プログラミング(C言語)の勉強について

情報系の大学1年生です。現在C言語のプログラミングの授業を受けています。 前期C言語の基礎を勉強したのですがいまだによくわかりません。 と、いいますのは、基礎の基礎のプログラムの書き方はわかりますが、難しくなると自分で書けないということです。 授業の課題が自力でできないので、友達のを写させてもらい(ほんとはいけないことはわかっています)、とりあえず提出し、あとでそのプログラムを理解する、というやり方で前期はなんとか乗り越えました。 現在、授業はアルゴリズムに入り、ますます授業についていけなくなり、情けない話ですが友達の書いたプログラムすら理解できないという状況です。 しかし、このままではまずいという思いと、もっと自分で思ったようにC言語を使えるようになりたいという思いから、今質問させていただいています。 C言語の入門書(柴田芒洋・明解 C言語入門編)を読んでいてもパソコンの知識が乏しいため、メモリや処理系など、何がどうなっているかわかりません。 ・C言語を理解するためにはある程度のパソコンの知識は必要ですよね? ・こんな私にも理解できるようなわかりやすい書籍はありますか? 今の自分の能力から考えて、授業の課題を一人でできるとは思いません。もちろん自分で書く努力はしていますが、コンパイルの時点で大量のエラー、実行してもきちんと結果がでません。エラーが出ればまだ修正できますが、実行しても結果がでない場合、自分でミスを見つけられません。 ・友達のプログラムを見せてもらって、後で理解するという勉強法には問題があると思っています。しかし、抜け出すにはどうしたらいいのでしょうか? ・本で勉強しても自分で書いてみなければ身につかないと思っているのですが、何からやればいいんでしょうか?ちなみにプログラムを書く環境はあります。 まとまりのない質問で恐縮ですが、ご指導よろしくお願いします。

みんなの回答

回答No.5

趣味で、C言語とC++言語を使ってゲームプログラミングをしています。 言語に関わらず、プログラミングで必要な能力は、フロー(流れ)を考えることです。 出したい結果に向かうために、どういう処理をどういう順序でするのか。 数学や物理と同じです。 難しくなると解けないのは、知識が無いからではなく、しっかりフローを考えないからです。 プロのように技巧的で美しいコードを書く必要なんて無いんですから、一つずつ日本語で考えて、C言語に翻訳してください。 たとえば、非再帰型クイックソートのアルゴリズムは一見複雑で難解ですが、時間をかけて一つずつ図を描いてみれば理解でします。 大学や専門学校の課題程度のC言語に、難しいコンピューターの知識なんか要りません。 最低限、2進数と16進数、メモリ管理が出来ればいいです。 友人のノートを見せてもらうのは仕方ないですが、その後に友人のプログラムを完璧に理解して、それを見ずに自分だけで書けるようにしなければ無意味です。 僕がC言語学習に利用した本は、『独習C』くらいです。 その後はひたすらコードを書きまくりました。 分からない関数はそのつどネットで検索して記憶。 1年くらいで書きたいと思うコードは大抵書けるようになりました。 まずは今のやり方を改めることからです。 頑張ってください。

22nekoneko
質問者

お礼

回答ありがとうございます。 おっしゃる通り、私はプログラムを書く前にフローを作っていませんでした。 最初は日本語で、ちゃんとフローを考えたいと思います。

  • a_kwn
  • ベストアンサー率34% (8/23)
回答No.4

ここにも、学校で出された課題をまる投げする学生が絶えない中、非常に偉いんだけど…。 プログラムって、「小説を書く」とか「マンガを描く」とかとちょっと似たようなところがあって、残念ながら訓練したらすべての人が、 「ある程度複雑なプログラムを自力で書けるようになる」 訳ではないとまず、断言しておきます。 将来、プログラマを生業にしないのなら、現状の「友達作戦」が一番効率が良いと思います。 問題は、プログラマを職業に目指している場合だけど、一番良いのは、 「自分の作りたいと思ったプログラムを作る!」 プログラムが上達する人は、勝手に課題を見つけてプログラムに没頭できます。 (小説家やマンガ家を志望する人は、そうするでしょ?) そうでなければ、現実的な回答としては、学校の課題を学校の指定された教科書を用いて 「自力で解けるところまで戻って、(友達の答案を見ないで)ちゃんと自力で解く」 これしかないんじゃないでしょうか? 逆に、どうして、他の教材や課題に手を出す余力があるんでしょう? あと、ちゃんと「プログラムが組める」ようになるには、それ相当の時間が必要です。 (参考書がどうのとか言う前に、プログラムに取り組む時間が圧倒的に足りていない気がします) 徹夜を繰り返すぐらい没頭する時間が必要だということを忘れないでください。

22nekoneko
質問者

お礼

回答ありがとうございます。 今のところ、プログラマーを生業にするつもりはありません。しかし、試験や来年度のことを考えると、自分で書けるようになりたいという思いがあります。また、実力は伴っていませんが、プログラミングに興味も持っています。 友達がすらすらプログラムを書けるのは、高校からやってきたからだそうです。確かに私は取り組む時間が絶対的に少ないと思っています。もっと勉強時間を増やしていきたいです。

  • shorinji36
  • ベストアンサー率17% (406/2381)
回答No.3

現在、電子情報系の大学3年です。 C言語をマスターするためには参考書は1、2冊では足りません。 まず、明解C言語入門編はあなたには難しすぎます。 技術評論社の3ステップでしっかり学ぶC言語入門 朝井淳・著をやってみてください。

22nekoneko
質問者

お礼

回答ありがとうございます。 おすすめしていただいた本や自分のレベルに合った書籍を書店で探してみます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

あともう一つ良いのがありました。 まずC言語のプログラムを読んで自分なりに日本語で動作を書き出します。 つぎに、元のプログラムを見ずに自分で書いた日本語の動作を元にプログラムを作ります。 作れなかったら文法の理解度なのか、自分の書いた日本語の動作が悪いのか分析して出来るまでやり直します。 これを繰り返して段々と難しいものに挑戦していきましょう。

22nekoneko
質問者

お礼

> まずC言語のプログラムを読んで自分なりに日本語で動作を書き出します。 > つぎに、元のプログラムを見ずに自分で書いた日本語の動作を元にプログラムを作ります。 とても参考になります。 この方法なら授業の課題からでもできそうです。 ありがとうございます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

コンピュータの知識を得るのに情報処理試験関係の勉強をするのはどうでしょうか? あと、プログラムのサンプルコードを変更する事で身に付くこともあります。 基本的なところだとforをwhileに変えてみるとか、ifをswitchにするとか、無理やり関数化してみるとか色々変えてみるというのが手です。 それと根本的な問題としてプログラムの流れが理解できていないという問題がある人がいますので、 printf( "(1)\n" ); printf( "(2)\n" ); と自分でプログラムに埋め込んで思った順番に番号が表示されるか確認してはどうでしょうか?これは、printfデバッグ法といってプロでも確認に使う手法の簡単なワザです。 応用として、 printf( "(1) x=%d\n", x ); とやって、(1)の地点通過時に変数がどの値になっているかを確認するのも有効な手です。これも自分の動作イメージと実際のプログラムの動作を一致させてやる為ですね。 最後に、じゃんけんプログラムとか三目並べとか簡単なゲームっぽいものを作ってみるのも勉強になりますよ。

22nekoneko
質問者

お礼

回答ありがとうございます。 情報処理試験などの機会を利用して、勉強していきたいと思います。

関連するQ&A

  • C言語の勉強について

    C言語の勉強について わたしは、前からC言語に興味を持っており入門書を買って勉強しました。 基本的なことは理解できましたが、これからどうすればいいのかわからなくなってしまいました Cに興味を持つ前はHSPをしていたのですが、これはさすがにプログラムの基本さえわかっていれば ヘルプを開き自分で考えて、だいぶ本格的ななゲームも作れたのですが、Cは思ったとおりに行かなくて そもそも、コマンドプロンプトから実行するプログラムしかわからないのですが みなさんは、私くらいのころはどんなことをしていましたか? ひたすらプログラムを書いていましたか? それとwindowsアプリケーションの開発はもっと後になりますか? C言語ではどんなソフトを作ったりしたことがありますか?

  • プログラミング言語C 参考書

    大学一年の者です。 大学の前期の授業でプログラミング言語Cの基礎を学び、 夏休みに自分なりに勉強をしようと思ったのですが どの参考書が自分に合っているのかわからず、質問いたしました。 授業で習ったこと ・四則計算 ・if while for 文 ・ソート ・関数の概念 ・ポインタの基礎 ・文字列の基礎 ・ファイルの入出力 です。 上記に関係する簡単なプログラムなら組むことができます。 ・入力した複数の数字をソートして表示する。 ・ファイルの中の小文字のアルファベットを大文字で表示する。など こんな自分に合った書籍がありましたら、アドバイスよろしくお願いいたします。 また 余談ですが 友人のプログラムは実行すると 日本語が表示されていました。 「桁数が足りていません。」「桁数が多すぎます」など これはASCIIコードか何か使用しているのでしょうか?? 長々となってしまいましたが よろしくお願いいたします。

  • プログラミングの勉強について教えてください。

    現在自分は学校でC言語を学んでいます。 もちろん学校で学ぶことなのでテストもあり先日行いました。 授業では毎回資料が送られ、それについての課題(レポート)を作成しなければいけません。 そこで行う課題では自分はいつも早めに終わらせることができるのですが、 テストとなると全くできません。 テストはいつも筆記でプログラムを手書きで書く、プログラムから読み取る、プログラムの意味を書くなどがあります。 パソコンではかけても手書きで書くことができないのです。 先生にはいつも、「それは理解してないだけでしょ」と言われます。 しかし、正直プログラミングの勉強法と言うものがわかりません。 頭の中ではある程度理解していても実際書けなかったり、 先生の言うとおり意味がよくわからないので型を間違っていたりすることが多いです。 実際プログラミングはどのように勉強すればいいのでしょうか?

  • C言語の勉強法

    C言語の勉強法で実用的なプログラムのソースが載っているサイトもしくは書籍はご存じないでしょうか? 種類はゲームやアプリケーションなどなんでもよく、作っておくとためになるようなものなら問いません。 自分のCプログラムのレベルは、C言語の入門書を終了し、じゃんけんプログラムや数当てゲームなどの簡単なプログラムを組めるようになった程度です。 それよりも、少し難しいプログラムを紹介してくださると大変ありがたいです。(厚かましいかもしれませんが…)

  • C言語の参考書について

    大学の後期の授業でC言語の参考書を買ってくるように言われました。 でもどの参考書がいいのかわからないので教えてください!! 前期の授業では ・C言語で作成したプログラムのコンパイルと実行の 流れ ・コンパイルエラーのエラーメッセージの見方 ・実行時のエラーとプログラムの修正 ・C言語のプログラムの基本形 ・printf()と定数 ・変数 ・数値型 ・文字型 ・文字列 ・printf()の書式指定 ・プログラム記述時の約束、予約語 ・算術演算子 ・代入演算子 ・インクリメント、デクリメント演算子 ・比較演算子(関係演算子) ・式が持っている値 ・論理演算子 ・条件付き代入 を勉強しました。 その範囲は、まだちゃんとに覚えてないけど授業でもらったプリントを見れば一応できます。 それで先生いわく、参考書は入門編でもいいらしいんですけど、さらに実践編も買い足さなければいけないらしいんです。 今の状態で実践編でも大丈夫ですかねぇ??

  • 入門より少し進んだC言語の勉強方法

    初めまして。 現在、C言語の勉強をしています。 C言語入門用の本を2~3冊読み、実際に自分で書いてみて関数やポインタ、構造体などの初歩的な事は理解しました。 また、基本情報技術者試験をC言語で受験し、合格する事が出来ました。 しかし、基本情報技術者試験に出てくるプログラミングの問題を読み、どのような動作をするのか追いかける事は出来ますが、似たようなレベルのプログラムを「自分で1から書けるか」と言われたら難しいと思います。 入門用の本を卒業し、次のステップに進みたいと思うのですが、どのように勉強すればいいのかよく分からず、止まってしまっている状態です。 ぜひ、今後におけるおすすめの勉強方法がありましたら教えてください。 宜しくお願いします。

  • C言語を勉強中で・・・・

    現在C言語を参考書を読みながら勉強しています。 ですが参考書を読むだけではいまいち理解が出来ないので実際にパソコン上でプログラムを実行してみたいと思いました。 そこで初心者でも扱いやすい無料のコンパイラを探しています。 出来ればダウンロードやインストール等も簡単でわかりやすいととても助かるのですが何方かご存知の方はいませんか? よろしくお願いします。

  • C言語が解りません。。。

    こんにちは。 現在、僕は30歳でコンピュータの専門学校に通ってます。 当初、プログラマー志望でしたが、C言語が解らないので、プログラマー職には就けそうにないです。 最初の授業を休んでしまい基礎が身に付いてないので、今ではC言語が全然解らなくなりました。 自宅でのC言語の勉強方法は、教科書や参考書を読んで勉強する方法です。 自宅のパソコンでは、実際に実行コンパイルする方法が解らないので、教科書などを読んで勉強してます。 この方法だと、構文などの基礎的な事は解るのですが、応用が解りません。 この方法だと、いくら教科書を読んで勉強しても、自由にプログラムを書ける様になるとは思えないです。 専門学校を卒業するまでの、残り約半年間でこの方法で僕は、C言語をマスターできるでしょうか?。 マスターできればプログラマーを目指そうかなと思ってます。 良ければアドバイスお願いします。

  • C言語の勉強方法を教えて下さい

    この度、はじめてC言語でプログラムを組む事になりました。 実際の仕事に入るまで1週間程度時間がありますので、せめて 基礎知識くらいは付けてから行きたいと考えています。 また、今回は時間の関係上「基礎知識」程度しか出来ないと 思いますが、これからの事もありますので業務と平行して 勉強も続けていきたいと思っています。 何か良い勉強方法や本・サイト等がありましたら、ご指示 願います。

  • C言語プログラミングソースについての質問です

    数値を入力してその数値が10以上ならその数値に3足して2乗するプログラムを表しそれ以外の数値には不可能と表す(課題)プログラミングを作りたいのですが。どなたかご教授お願いします C言語はまだ授業で3カ月程度かじった程度でたいして知識もありません。 本当はこんな質問するべきではないのですが

専門家に質問してみよう