授業時間では限られた話題にしか触れることができません。 授業で話すことは、あくまでも自分で勉強するためのキッカケだと考えて下さい。 必ず予習・復習をしてきて下さい。
1 週間に 3 時間、合計 45 時間だけの学習でプログラミング言語がひとつマスターできる、 などということはあり得ません。ある程度の時間が必要です。 奇妙に聞こえるかもしれませんが、 プログラミングの学習は自転車に乗ること・泳ぐことのそれに似ています。 短時間の学習を週に一回程度しても上達しません。どこかで集中して学習する必要があります。 また、一つ一つは短くてもよいので、 できるだけたくさんのプログラムを作成することが、マスターへの道です。
授業時間は限られているので、すべての話題に触れることができません。 結局、プログラミングは自分で勉強しないと身につきません。
情報系の分野は次から次へと新しい技術が出てくるので、社会人になっても、 勉強の連続です。一から十まで、手取り足取りすべてを教わらないと、 勉強できないようでは、社会に出て役に立つ人材になれません。
情報システム・セキュリティコース/情報通信コースは情報系のコースです。 情報系の卒業生ならプログラミングはできて当然、 と世間では思われていると覚悟して下さい。 ワードやエクセルなどを使いこなすことは、 どのような学部・学科であっても今日では当然のことです。 自分でプログラムを作成できてこそ、情報系の学生です。
もちろん、プログラミングが苦手な人がいることは仕方がないことで、 そのような人にも進路はありますが、 それでもプログラミングに関する常識的な知識は持っておく必要があるでしょう。
コンピューターはとても高速に計算をこなし、大量の情報を記憶でき、しかも疲れ知らずですが、常識は知りません。 コンピューターがもともとできることは加減乗除の四則演算や大小の判定など、とても単純なことだけです。 あとは人間の与えた指示(プログラム)通りに実行します。当然間違った指示を与えたら、そのまま実行します。 多少間違った指示を与えても適当に修正して実行してくれるのではないか、というような期待はしないでください。
情報系の卒業生なら C 言語は使いこなせて当然、 と世間では思われていると覚悟して下さい。 C 言語は長年人気の高い言語で、他の言語も C 言語の影響を受けている場合が多いです。 他の言語を勉強するときも、C 言語の知識が役に立つことはひじょうに多いです。
なお、言わずもがなですが、情報システム・セキュリティコース/情報通信コースの 2 年次以降の計算機関係の授業のほとんどは、 C 言語の技能を前提としています。
当然のことですし、絶対ばれます。 友人や TA にわからないところを聞くのはもちろん構わないのですが、 解答そのものではなく、考え方を聞くようにして下さい。
逆に教える立場になった場合も、解答そのものではなく、 考え方を伝えるようにして下さい。 (それが自分の理解度を深めることにもなります。) 解答のコピペは教えた側も同罪です。
文法をちゃんと覚えずに、コンマやカッコをつけたり、はずしたり、 もっともらしく思える組み合わせをすべて試してみようとする人がいます。 そのような組み合わせはあっという間に 1,000 通りを超えて、 人間の能力の限界を超えます。ちゃんと文法を覚えて下さい。 プログラミング言語の文法は、英語や日本語などの自然言語と比べると、 はるかに単純です。
エラーメッセージの内容をよく理解せずに、 すぐに友人や TA に質問する人がいます。 エラーメッセージを良く読んで理解しようとして、 それでもわからない時に初めて質問して下さい。
可能性のあるエラーの種類は多すぎて、 授業でエラーの種類とその対処法を教えることは(ほとんど)できません。 その代わり、大抵はエラーメッセージに対処するための情報が書かれています。
なお、C 言語用のコンパイラーは日本語でエラーメッセージを出してくれるものもありますが、 2 年生以上で使用するツールには、 英語でエラーメッセージを出すものも多くあります。 情報系で英語は避けて通れない、と覚悟して下さい。
キーワードがはっきり決まっているようなこと、例えば、
atan2
という関数の使い方cl
のコマンドラインオプションの使い方のようなことならググっても構いません。しかし、 プログラミングの演習で出すような課題プログラムの作り方を、 Google などで調べても無駄です。 目的とするものに近いプログラムは Google で見つかるかもしれませんが、 そのプログラムを理解して課題の要求どおりに書き換えることができるくらいならば、 最初から作った方が早くできます。
それに、実社会に出て演習問題でないプログラムをつくるとき、 このようなやり方が全く役に立たないのは言うまでもありません。
補足: ところでプログラミング言語に関してある事柄をググるとき、 日本語の情報にはろくなものがない、ということが珍しくありません。 プログラミング言語に関する一次情報は、ほとんどの場合英語ですので、 日本語で必要な情報が得られないときは、検索対象を英語にしてググることを 忘れないようにしてください。
コンパイラーが通れば、よく動作の確認をせずに、 課題を提出する人がたまにいますが、 コンパイルができるのはプログラムの作成のほんの最初の一歩にすぎません。
プログラムが思った通り動作しないとき、「どこが間違っているか教えて下さい。 どこが間違っているかわかれば直せます。」 と言う人がいます。どこが間違っているかを見つけるのがもっとも肝心なことで、 それがわかれば誰でも直せます。
また、「これであっていますか」と教員や TA に聞く人がいます。 こういう質問に対しては、一目見て間違っていればそれを指摘できますが、 完全にあっているかどうかチェックすると時間がかかるので、 授業時間中に各個人に対してそこまではサービスできません。 チェックする責任はあくまでも学習者個人にあります。
上で述べたこととは逆に、30 分も 1 時間も質問せずに自分で悪戦苦闘している人もいます。 プログラミングには、特にはじめのうちは気付きにくい罠もたくさんありますから、 自分でよく考えてもわからない時は、どんどん教員・TAに質問して下さい。
例えば、関数や変数の名前を意味も考えずに例題のまま使っている人がいますが、 書き換えたプログラムでその名前ではヘンなことがよくあります。 プログラムもコンパイルできて実行できれば OK ではなく、 他人に見せる文章の一種だと認識して下さい。
自分なりに、「こういうプログラムを作ってみたい」という目標を持つと、 やる気がでて、学習効果が高くなります。
プログラム中のインデント(字下げ)は首尾一貫してつけて下さい。 採点のときは、 インデントが正しくできないのは、プログラムの構造を理解していないからだ、 と判断します。
プログラミングがある程度できるようになると、今度は逆に 「人間はいかに間違いを犯しやすいか」「人間はいかに間違いに気付かないか」 ということが身に染みてわかってきます。その間違いを見つけることも重要ですが、 間違いは犯しやすいものだ、ということを受け入れる必要があります。 プログラミングには、 そもそも間違いをできるだけ起こさないための良いやり方がいくつもあり、 上で挙げた「インデント」もその一例です。
単に文法を覚えるだけではなく、このような良いやり方も身に着けていく必要があります。
「プログラミング」、「中級プログラミング」で学習することは C 言語の初級編にしかすぎません。 C 言語を一通り理解したと言えるのは、少なくとも、K&R という略称でお馴染の本:
プログラミング言語 C 第 2 版
B.W.カーニハン & D.M.リッチー 著
石田 晴久 訳
共立出版
ISBN 978-4320026926
(またはこれに相当する本)を読破してからです。
これは、「プログラミング」「中級プログラミング」履修後の話になりますが、 情報系の卒業生なら複数のプログラミング言語は使いこなせて当然、 と世間では思われていると覚悟して下さい。 一つの言語を覚えるだけですべての用途で OK、というほど世の中は進んでいません。