2023年度 基礎プログラミング演習I 資料
内容は随時更新されます。必ずブックマークしておき、定期的にチェックしてください。
連絡事項
演習全体に関する連絡事項はここに掲載します。クラスごとの連絡事項は別途担当教員の指示に従ってください。
- 授業にはMacと電源アダプタ(充電器)を忘れず持ってきてください。本体はできるだけフル充電した状態で持ってくるようにしましょう。
- 情報処理教室は飲食厳禁です。特に、蓋の開いた飲みものを持ち込まないでください。
- 雨の日で傘が塗れている場合は、ビニール袋に入れて教室入り口の傘立てに置いてください。教室内に持ち込むと故障・火災の原因になることがあります(床はパネルの下に空間があり、電源やネットワークなどのケーブルが敷設されています)。
コース選択期間について
登録期間:7月19日(水)0:00~8月3日(木)23:59
結果発表:9月6日(水)12:00
- できるだけ3つのコースを選択しましょう。
- 同じコースを複数選択できてしまうようですが、しないように気をつけてください。
- 人数制限のあるコースのみを選択しないようにしてください(そのコースが除外されたときにコース無選択状態になります)。
- 3つのコースの順位付けはあまり気にしなくてOKですが、受講人数制限がある授業での優先順位に影響します。
【最重要】筆記試験について
定期試験期間中に筆記試験を実施します(日程は7月10日発表予定、おそらく水曜の午前です)。未受験の場合は単位認定できませんので必ず受験してください。学生証と筆記用具を忘れずに持ってきてください。その他、定期試験に関する大学からの公式アナウンスをよく読んでください。
当日、大学が認める事情により試験を受験できない場合は、大学所定の手続きに則って追試験※を実施します。事情に応じた証明書が必要なことに注意してください(病気の場合、診断書が必要になります)。また、追試験料も必要になります(事情によっては免除)。
【最重要】自由制作(最終課題)について
提出期限は7月15日(土曜日)23時59分とします。遅延した場合は評価対象外となります。必ず期限内に提出してください。
13回目(7月5日)の後半、14回目(7月12日)は自由制作に取り組んでもらいます。質問対応しますので活用してください。まずはどんなものを作るか考えてください。自由制作のレギュレーションについては「自由制作」のページを見てください。
最終回(7月19日)は、提出した作品を全員に発表してもらいます。プログラムを動かしてどのような作品か説明し、次にソースコードを見せながら工夫した点や苦労した点を説明してください。発表内容も評価対象です。
美しいコードを意識しよう
綺麗なプログラムでも汚いプログラムでも動くことに違いはないですが、綺麗なプログラムを意識することはプログラミング能力の向上に役立ちます。とりあえず次の4点を意識してみてください。また、課題提出時はこれらを直してから提出してください。あまりに酷い場合は評価を下げることがあります。
- そんなインデントで大丈夫か?
{ }で囲まれる範囲をインデント(字下げ)することで、条件や繰り返しの対象範囲が見やすくなります。現在の新しめのプログラミング言語では{ }を使わずにインデントだけでブロックを表現することが多いので、今から慣れておくことがお薦めです。
VS Codeでは⌘K⌘Fで選択範囲のインデントを直してくれます。Option+Shift+Fで全体を直してくれます。なお、標準の設定では{ }の位置をifやwhileの次の行に書くスタイルです。本講義のスタイルに合わせるには次のように設定してください。3.の入力は、次のとおりです(コピー&ペーストするとよいでしょう)。
{BasedOnStyle: Google, IndentWidth: 4}
学部で配布しているEmacsの場合はF6(fnキーを押しながらF6と書いてあるキーを押す)で全体を直してくれます。
- 一番いい変数名を頼む
変数名は、できるだけ変数が扱う値の意味が分かるように付けましょう。慣れないうちや、ちょっとややこしいなと思った場合はコメントも付けておくとよいです。プログラミングが苦手な人は変数の役割が意識できていないことが多いです。また、今は変な変数名で大丈夫でも、複雑なプログラムを書くようになってきたときに困ることになります。 - 空白を適切に入れるのです
文字の間やプログラム全体で空白や空行を挟まずに詰めて書くと見通しが悪くなります。適切にスペースを入れたり空行を挟んで見やすくしましょう。演算子の前後にはスペースを、ひとかたまりの処理の前後には空行を入れると見やすくなります。情報デザインの原則は「関連のあるものはくっつける、関連のないものは離す」です。具体的にはプログラム例等を真似てみてください。
スペースや空行を入れすぎても見にくくなります。あくまで「適切」に。 - コンパイラは言っている、そのプログラムは良くないと
コンパイル時にwarningが出た場合、コンパイルは通っているものの、何か良くない書き方をしています。現段階のプログラムでは、warningが出た場合は基本的に間違っているものと思って直してください。全ての警告を表示するには-Wallオプションを付けてコンパイルしてください。gcc -Wall -o hogehoge hogehoge.c
プログラムの質問について
- 質問する場合、必ずソースファイルを付けてください。スクリーンショットでは間違いの原因を調査することができません。
- 何を、どのようにしたら、どのような問題が生じたか、を自分の言葉で説明してみてください。また、ソースコードの各行に何をしている文なのかをコメントで説明を書いてみてください。多くの場合、この作業をちゃんとやれば自己解決します。
- 質問はTeamsの質問チャンネルに投稿してください。質問と解決方法を共有することができ、スタッフも他の受講生も勉強になります。質問する人はエライのです!! なお、プライベートな質問や相談はこの限りではありません。共有する価値があると判断した場合、メールで質問を送られた場合もTeamsに転載してそちらで回答することがあります。
- 締切直前に質問しても回答が間に合いません。課題は締切直前にやるのではなく、基本的には授業のあった日のうちに着手してください。着手した上でうまくいかない場合の試行錯誤や質問対応などを見越して、締切は設定しています。
ICPC挑戦者募集中!!
ICPC (International Collegiate Programming Contest = 国際大学対抗プログラミングコンテスト)の参加募集が来ています。3人1チームで出題された問題を解くプログラムを作成し、時間内にどれだけ解けたか、どれだけ早く解けたかを競うコンテストです。競技プログラミングと呼ばれるもので、独特な問題形式を読み解いて理解したり、幾つかの定石パタンを知っている必要はありますが、基礎プロIで学習する内容まででも最初の1問は解けます。
毎年開催されるので、まずは腕試しと思って参加してみてください。腕に自信のある人はより多く解けるように挑戦してみるとよいです。IT系の企業では入社試験のスキルテストに競技プログラミング的な問題を出すところもあるようなので、やってみて損はないとおもいます。なお、参加する場合は練習問題を解いてみるなど必ず事前に準備をしておきましょう。過去に書いた、ビギナー向け解説ページも参考になるかもしれません。
基礎プロIの知識でICPC問題を1問解こう
3人揃わない場合、ソロでもデュオでもOKです。可能な限りマッチングします。なお、本戦は金曜の夕方ですが、少なくとも情報理工学部の授業は欠席しても成績評価で不利にならないよう配慮します。さらに、本科目ではICPC参加者は最終成績にわずかですが加点します。
詳しくは、次の案内のリンク先を見てください。
2023年度のICPCの案内が来ております.興味がありそうな学生への周知をお願いします.
https://icpc.iisf.or.jp/2023-yokohama/
2023年度のICPCはコロナ時代の特別ルールは撤廃され,
2019年度のルールと同じルールで実施されるようです.
https://icpc.iisf.or.jp/2023-yokohama/
チーム登録の〆切が 2023-06-22 (Thu),インターネット予選が 2022-07-07 (Fri) です.
参加案内のページを以下に作成しております.
https://tamadalab.github.io/misc/icpc/
参加したいという学生には,以下のサイトで登録していただくようお願いします.
学生から監督の特別の要望がなければ,このFormに登録された学生は
玉田が順次登録していきます.
https://forms.gle/ddV6Yhn4JrHSCw9D9
多要素認証について
学外から学内の情報システム(POSTやmoodleなど)を使用するためには、スマートフォンなどを使って本人であることを確認するための設定が必要です。設定方法等は情報センターの多要素認証の利用についてのページに書いてありますので、各自必ず設定するようにしてください。
スクリーンショットの撮り方
電子メールなどで質問する際に単に「動きません」というだけでは何がどう動かないのか分からなくて対応できません。そこで、どう動かないのかを説明するために画面のスクリーンショットを活用してください。Macのスクリーンショットの撮り方はこちらのページを見てください:Mac でスクリーンショットを撮る
他の人に見られるとまずい情報が映り込んでいないように注意してください。Shift+Command+4で画面の一部を撮るのがよいでしょう。
プログラムならばソースコードも送るようにしてください。
授業予定
- 第1回(4/12) はじめに/コンピュータの基本操作/Webブラウザ/学習支援システムmoodle/タイピング練習/電子メール/Office365メール/電子メール補足
- 第2回(4/19) UNIXコマンドの基礎/ファイルシステム/よく使うUNIXコマンド集
- 第3回(4/26) ディレクトリツリーとファイルパス/テキストエディタ/テキストエディタによるファイル作成〜VS Code編・〜Emacs編/ファイル操作練習
- 第4回(5/1, 月曜日・曜日振替) テキストエディタでの編集操作/日本語文字コード/UNIXコマンドの応用
- 第5回(5/10) C言語:コンパイルと実行/順次実行/HandyGraphic基本関数一覧/プログラミングの学習指針
- 第6回(5/17) C言語:変数/入出力
- 第7回(5/24) C言語:入出力と変数
- 第8回(5/31) C言語:条件分岐
- 第9回(6/7) C言語:繰り返し
- 第10回(6/14) C言語:条件分岐と繰り返し
- 第11回(6/21) C言語:配列
- 第12回(6/28) 配列(2)/筆記試験練習
- 第13回(7/5) C言語:アニメーション/(参考情報)高度なテクニック集/自由制作
- 第14回(7/12) C言語:自由制作
- 第15回(7/19) C言語:制作発表会
参考情報
ワードプロセッサ/表計算/プレゼンテーション(情報理工学部では基礎プロIで扱わない内容になりましたが参考として。ただし最新版のPages, Numbers, Keynoteでは表示や操作がかなり変わっているかもしれません。)
基礎プロI 100本ノック(基礎プロIで扱う範囲のC言語の練習問題集です)
Emacs超クイックリファレンス(最低限知っておくべきEmacsのキー操作。Emacsクイックリファレンスをさらに減らしたもの。)
過去の資料サイト(大昔の基礎プログラミング演習Iの内容です)
コンピュータ環境の使い方(大学全体の情報です)
コンピュータ理工学部(学部独自運営のサイトです)
プログラミングとは関係無いけどお薦めのIT系ニュースサイト(最初は意味がよく分からなくてもOK。なんとなくでも読み続けて、解らない言葉が出てきたら調べてみましょう。)
Impress Watch
IT media
Engadget Japanese
Gismodo Japan
/.J
TechCrunch Japan
@IT