[[2016/自主ゼミ]]

* プログラミング講座 [#d2dacd32]
#contents

** お知らせ [#h69870b4]
- 208演習室は29日に使えないことが判明しました(208演習室の扉の貼り紙を参照)ので、29日は実習を行いません。空いている日(演習室だと31日以降)に自分で学習を進めてください。
-- メールで質問は受け付けます。課題の提出は、29日以降もしばらく受け付けます。

** 概要 [#tccd124c]
:代表者 | [[角田]](連絡先:gojiraebon-kuあっとやふー.しーおー.じぇーぴー)
:代表者 | [[角田]](ゴジラ)(連絡先:gojiraebon-kuあっとやふー.しーおー.じぇーぴー)
:TA     | ゴジラ、m西、すずしめ
:内容   | C言語入門
:日程   | 8月中旬~下旬のうち(おそらく連続)3日間(予定)
:日程   | 8月25日(木)、26日(金)、%%29日(月)%%
:時限   | 3~5限(1日目の3限のみ講義、あとは実習にする予定)
:場所   | 講義は未定、演習は208or210号室
:場所   | 講義は理学部6号館302号室、演習は208号室

- C言語でプログラミングしたい人向けにゼロから教えます。
- インターネット上の教材で自分で勉強を進めてもらいます。
-- 分からないことがあれば、すぐにTAに質問することができます。
- 参加表明していなくても、当日飛び入り参加OKです。
- お願い:C言語をある程度学習済みの方で、実習中に参加者から出た質問に答えてくれる人(TA)を募集します。参加表明は下の日程調整欄で。
//- お願い:C言語をある程度学習済みの方で、実習中に参加者から出た質問に答えてくれる人(TA)を募集します。参加表明は下の日程調整欄で。

- 開催日程は3日連続(土日はやらない)の予定ですが、参加希望者の都合に合わせて変更するかもしれません。
//- 開催日程は3日連続(土日はやらない)の予定ですが、参加希望者の都合に合わせて変更するかもしれません。
- 主に自習で勉強する形式なので、3日間全てに参加できなくても構いません。

** 日程調整 [#re22f1cc]
- 参加可能な日時に"o"を不可能な日時に"x"をつけてください。
-- TAとして参加する場合はその旨を明記してください。
- 8月4日に参加日程を決めます。
//- 8月4日に参加日程を決めます。

// |は12本
|8月|18(木)|19(金)|22(月)|23(火)|24(水)|25(木)|26(金)|29(月)|30(火)|31(水)|h
|8月|18(木)|19(金)|22(月)|23(火)|24(水)|''25(木)''|''26(金)''|''29(月)''|30(火)|31(水)|h
|[[角田]](TA)|o|o|o|o|o|o|o|o|o|o|
|[[circle/西田]](TA)|o|x|x|x|o|o|x|x|o|o|
|[[おくだ]]||||||||x|x||
|[[中桐]]|x|x|o|o|o|o|o|o|x|x|
|[[中桐]]|x|x|o|o|x|o|o|o|x|x|
|[[中田]]|x|o|o|o|o|o|o|o|x|x|
|[[田中]]|||||||||||
|[[後藤]]|||||||||||
|サラコナ|||||||||||
|[[川上]]|x|x|o|o|o|o|o|o|o|o|
|田中宏樹|o|o|x|x|x|o|o|o|x|o|
** 詳細 [#mef57d27]
- 1日目の3限のみ講義で、他の時間は実習にする予定です。
-- 講義室が使えるのは18日、19日、22日、25日、26日のみなので、場合によっては講義を行わないかもしれません。
- 実習は208or210演習室にある大学のパソコンを使うので、自分のノートパソコンを持っていなくても構いません。
//-- 講義室が使えるのは18日、19日、22日、25日、26日のみなので、場合によっては講義を行わないかもしれません。
- 実習は208演習室にある大学のパソコンを使うので、自分のノートパソコンを持っていなくても構いません。
-- もちろん自分のノートパソコンを用いて実習に参加しても構いませんが、環境導入は事前に済ませてください。(環境導入の方法についてはググるか人に聞くなどしてください)
- C言語の文法を学習するのに併せて、情報基礎演習[理学部](旧:コンピュータ基礎演習)の問題も解いてもらいます。
-- 希望者は、自分の回答をTAに採点してもらうことができます。(詳細は後日追記します。)
- C言語の文法を学習するのに併せて、コンピュータ基礎演習(現:情報基礎演習[理学部])の問題も解いてもらいます。
-- 希望者は、自分の回答をTAに採点してもらうことができます。(詳細は後述)

- 3日間で、[[Programming Place Plus C言語編>http://ppp-lab.sakura.ne.jp/ProgrammingPlacePlus/c/index.html]](以下、"教材"と呼ぶ)の第25章までを学習することと、[[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]のCプログラミングの課題を解くことを一応の目標とします。そのための進度の目安を以下に書きます。
-- あくまでも目安なので、参加者はマイペースに学習を進めてください。余裕のある人は、どんどん先取りして学習を進めていってください。

*** 1日目 [#k5d780e1]
- 3限に、このプログラミング講座のガイダンスを兼ねた講義を行います。コンパイラの使い方や、C言語プログラミングの初歩を教えます。
- 4,5限は、演習室で実習を進めてもらいます。
-- 実習内容は未定
- 3限に、302号室でこのプログラミング講座のガイダンスを兼ねた講義を行います。コンパイラの使い方や、C言語プログラミングの初歩を教えます。
-- 3限に使用したスライドは[[こちら:http://s2s.undefin.net/wiki/?plugin=attach&pcmd=open&file=prokouzaslide.pdf&refer=2016%2F%E8%87%AA%E4%B8%BB%E3%82%BC%E3%83%9F%2F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%AC%9B%E5%BA%A72016%E5%A4%8F]]です。
- 4,5限は、208演習室で実習を進めてもらいます。
- まずは、[[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]に載っている以下のビデオ教材を見てLinuxやEmacsやC言語のコンパイラの使い方に慣れてください。
-- [[Linuxのマウス操作>http://youtu.be/LWsZjvvrVfM]]
-- [[Linuxのコマンド操作>http://youtu.be/x8BmnY45G8E]]
-- [[ファイルシステムとコマンド操作1>http://youtu.be/-xZZDwTa-5M]]
-- [[Cプログラム作成の手順>http://youtu.be/FAeDM7shJbY]]
--- ビデオ教材「Cプログラム作成の手順」に出てくるコンパイラ「cc」は「gcc」に読み替えてください。(まあccでも支障ないとは思いますが…。)
-- ビデオ教材の視聴の際は、演習室に用意されているヘッドホンを使用できます。なお、演習室のコンピュータはログイン直後は音声がミュート(消音)されていますので適切にボリュームを調整してください。耳の保護のため、いきなりボリュームを最大にしたりしないよう注意してください。
- 教材の第8章まで進めるのを目安とします。

*** 2日目 [#acd0bf4b]
- 演習室で実習を進めてもらいます。
-- 実習内容は未定
- 208演習室で実習を進めてもらいます。
- 教材の第18章まで進めるのを目安とします。
- [[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]のC-A-1とC-A-2を解いてください。

*** 3日目 [#l5052bbd]
- 演習室で実習を進めてもらいます。
-- 実習内容は未定
- 208演習室で実習を進めてもらいます。
- 教材の第25章まで進めるのと、第51章の「乱数」の項目を読むのを目安とします。
- [[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]のC-B-1とC-B-2を解いてください。
- 余裕のある人は、C-X-1を解いてください。
- さらに余裕のある人は、[[2014年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra14/ex.html]]のCプログラミングの課題も解いてください。また、興味のある人は教材の第26章以降も学習してみてください。

*** 教材の進め方 [#vad3d7e3]
- 教材は、[[Programming Place Plus C言語編>http://ppp-lab.sakura.ne.jp/ProgrammingPlacePlus/c/index.html]]です。
- 教材の各章のサンプルプログラムと解説を読み、理解してください。サンプルプログラムは自分で実際に入力して実行してみるとよいでしょう。
-- 大学のパソコンに入っているコンパイラはC99に対応していますが、「C99」と書かれた項目については読んでも読まなくても構いません。
- 各章の末尾には練習問題がついています。プログラミングは自力でソースコードを書けてナンボなので、是非やってみましょう。
-- 練習問題には解答が用意されています。解答はあくまでも一例なので、題意に沿ったプログラムが作れればそれは全て正解です。
-- 第8章と第18章の練習問題は数が多いので、全てやる必要はありません。章の内容を概ね理解できたと思ったら、次の章に進んでよいでしょう。
- Emacsおよび端末はLinux側で開いているので、教材はWindows側のブラウザで開くとよいでしょう。画面の半分をLinux、半分をWindowsのブラウザ、という感じで分けて使うと見やすいかもしれません。

** Emacsのコマンド [#g54ac41e]
- Emacsでは、様々なコマンドが使用できますが、普段Windowsで使用できるショートカットキーとは異なるものが多いので、注意してください。
- Emacsのコマンドは、操作の全てをマウスを使わずキーボードだけで可能にするためのものです。コマンドを使わない場合はマウスで操作を行えばよいので、いきなり全てを覚える必要はありません。
- よく使いそうなコマンドは以下の通りです。("Alt-"は"Escを押してから"でも可。)
|Alt-w|コピー|
|Ctrl-w|切り取り|
|Ctrl-y|貼り付け|
|Ctrl-x Ctrl-s|保存|
|Ctrl-x h|全て選択|
|Ctrl-x u|最後の編集を取り消す(アンドゥ)|
|Ctrl-g|現在のコマンドを中断|
- 他にも沢山のコマンドがあります。興味のある人は[[Emacsコマンド集>http://members3.jcom.home.ne.jp/yrq01133/emacs.html]]をご覧ください。

** Emacsを起動した時に下半分に出てくるウザい画面を消す方法 [#bae89777]
- Emacsを起動すると、下半分にEmacsの説明のバッファ(startup screen)が出てきます。プログラミングをする際には邪魔でしかないので、非表示にする方法を紹介します。
- 1.ホームディレクトリ(a0から始まる自分のECS-IDが名前になっているフォルダ)を開く。
- 2.ツールバーの「表示」から、「隠しファイルを表示する」をクリックする。
- 3.ホームディレクトリにある「.emacs」というファイルを開く。(無ければ新規作成する。)
- 4.「.emacs」ファイルの末尾に「(setq inhibit-startup-screen -1)」と書く。
- 5.ファイルを保存して、Emacsを再起動する。

** コンピュータ基礎演習の課題について [#k861242b]
- 昨年度のコンピュータ基礎演習(現:情報基礎演習[理学部])という授業で扱った課題を解いて、簡単な数値計算を実践しましょう。
-- 難しい課題もありますので、TAに解き方を質問したり、友達同士で教えあったり、ググって調べるなどして構いません。
-- 課題を解いても正しく解けているか分からないと思うので、TAに添削してもらいましょう。
- 教材には載っていない数学関数を使用する課題があります。数学関数については[[Cプログラミング資料(PDFファイル)>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex/linux/cguide.pdf]]の1.7.2節を参照してください。
- 出力された結果をグラフ化して提出する課題があります。gnuplotという、データを座標軸に従ってプロットするグラフ描画ソフトを使用します。gnuplotの使い方については[[Cプログラミング資料(PDFファイル)>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex/linux/cguide.pdf]]の付録Aを参照してください。
- [[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]の一番下の「課題群C: Cプログラミング」に記載されている5つの問題を扱います。各課題を解くのに必要な知識は以下の通りです。
|課題コード|必要な知識|
|C-A-1|教材の第13章まで|
|C-A-2|教材の第13章まで|
|C-B-1|教材の第18章まで|
|C-B-2|教材の第25章まで|
|C-X-1|教材の第25章まで|
- 余裕があれば、一昨年度の課題[[2014年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra14/ex.html]]も解いてみてください。

*** 課題の提出方法 [#a4e604fd]
- [[Ideone>https://ideone.com/]]というWebサービスを使います。
- これはソースコードを書くとWeb上でプログラムが実行されるもので、その際にhttps://ideone.com/bxkz8Oのようにリンクが生成されるので、そのURLを課題添削担当のTA(すずしめ)にメールで送れば添削してくれます。
-- 課題添削担当のメールアドレスは tamagawajousuiroあっとgmailどっとcom (あっとは@、どっとは.に変えてください) です。
-- メールを送る際は、「提出者の名前(ハンドルネーム可)」と「課題コード」と「ソースコードを書いたURL」と「入出力結果(2015年度のC-B-2とC-X-1では要求されている画像を添付)」を明記してください。
- [[Ideone>https://ideone.com/]]の上の方にある「new code」をクリックして、ソースコードを貼り付け、左下の言語選択欄でCを選択し、「Run」を押すと実行結果が表示されURLが生成されます。「enter input」欄は入力せず、入力データの内容はメールの本文に書いてください。


* 参考文献 / 関連リンク [#h09fda6f]
- [[Programming Place Plus C言語編>http://ppp-lab.sakura.ne.jp/ProgrammingPlacePlus/c/index.html]]
-- 今回のプログラミング講座のメイン教材にする予定。
- [[Cプログラミング資料(PDFファイル)>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex/linux/cguide.pdf]]
- [[2014年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra14/ex.html]]
- [[2015年度後期 コンピュータ基礎演習 課題>https://www.math.kyoto-u.ac.jp/~susumu/lecture/compra15/ex.html]]
- [[2013/自主ゼミ/プログラミング講座2013夏]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS