2022年度 基礎プログラミング演習I 資料
内容は随時更新されます。必ずブックマークしておき、定期的にチェックしてください。
連絡事項
演習全体に関する連絡事項はここに掲載します。クラスごとの連絡事項は別途担当教員の指示に従ってください。
- 授業にはMacと電源アダプタ(充電器)を忘れず持ってきてください。本体はできるだけフル充電した状態で持ってくるようにしましょう。
- 情報処理教室は飲食厳禁です。特に、蓋の開いた飲みものを持ち込まないでください。
- 雨の日で傘が塗れている場合は、ビニール袋に入れて教室入り口の傘立てに置いてください。教室内に持ち込むと故障・火災の原因になることがあります(床はパネルの下に空間があり、電源やネットワークなどのケーブルが敷設されています)。
【最重要】秋学期筆記試験について
1月11日2限目に筆記試験を実施します。シラバスに記載のとおり成績評価の半分は筆記試験の成績としますので、必ず受験してください。筆記用具を忘れずに持ってきてください。
当日、やむを得ない事情で出席できない場合は速やかに連絡をください。
筆記試験の練習を12月28日に実施します。解き方の解説もします。
TeraCorder
学内プログラミングコンテストTeraCorderが12月25日午後に開催されるそうです。オンラインの参加可能で、易しい問題も1、2問は用意されているはずです。以下、運営からの案内です。
今年も学内プログラミング大会TeraCoderを12/25(日) 14:00~18:00開催します!
TeraCoderは学内で行われるプログラミングコンテストです。
与えられた問題を解くプログラムを早く正確に作成する能力を競う、競技プログラミングと呼ばれる種類のプログラミングコンテストです。入賞すれば、Amazonギフト券が貰えます!
詳細は添付動画及び,ティザーサイトをご覧ください!
https://tcjudge.github.io/teaser-site/2022/index.html
■連絡先
Twitter: 寺子屋公式アカウント @TerakoyaCSE
メール: teracoder52@gmail.com
美しいコードを意識しよう
綺麗なプログラムでも汚いプログラムでも動くことに違いはないですが、綺麗なプログラムを意識することはプログラミング能力の向上に役立ちます。とりあえず次の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に転載してそちらで回答することがあります。
- 締切直前に質問しても回答が間に合いません。課題は締切直前にやるのではなく、基本的には授業のあった日のうちに着手してください。着手した上でうまくいかない場合の試行錯誤や質問対応などを見越して、締切は設定しています。
黙食のススメ
食事中は感染リスクが高いです。
- 食べてる間は黙ろう
- 食べ終わったらマスクをしよう
- 独りで食べよう
- 他の人と距離をとって食べよう
多要素認証について
学外から学内の情報システム(POSTやmoodleなど)を使用するためには、スマートフォンなどを使って本人であることを確認するための設定が必要です。設定方法等は情報センターの多要素認証の利用についてのページに書いてありますので、各自必ず設定するようにしてください。
スクリーンショットの撮り方
電子メールなどで質問する際に単に「動きません」というだけでは何がどう動かないのか分からなくて対応できません。そこで、どう動かないのかを説明するために画面のスクリーンショットを活用してください。Macのスクリーンショットの撮り方はこちらのページを見てください:Mac でスクリーンショットを撮る
他の人に見られるとまずい情報が映り込んでいないように注意してください。Shift+Command+4で画面の一部を撮るのがよいでしょう。
プログラムならばソースコードも送るようにしてください。
Macが入手できていない場合について
授業用の貸出機は今のところ3台ほどしかありません。足りない場合、5月7日の回までの授業は以下のいずれかの手段で受けてください(お手軽度の順ですが、下のものほど勉強にはなります)。
- 教室備え付けのPCでLinuxを使用する。
ログイン方法は情報センターの記事「Linuxを使用する」 のとおり。ターミナルはアイコンバーにあるはずです。テキストエディタはEmacsを使ってください。 - 自分のWindowsパソコンがある場合、コマンドプロンプトを開き、sshでcc2000にログインする。
コマンドプロンプトはWindowsメニューの「Windowsシステムツール」の中にあります。あるいはメニューの検索欄で「コマンド」あるいは"command"などで検索してください。sshの使い方は演習資料「SSHによる遠隔アクセス」を参照してください。公開鍵認証の設定をしておけば自宅からでも使用できます(設定は学内でないとできません)。 - 自分のWindowsパソコンにUNIXライクな環境を構築する。
コマンドを使いたいだけならCygwinあたりでよいです。本格的に使うならばWSLやVirtualBoxを使ってLinux環境を構築してもよいです。設定方法は自力で調べてください。
課題については、4月20日はありません(タイピング練習とテキストエディタの準備が宿題です)。4月27日は「ファイル操作練習」のページの最後に書いてある「本来の課題の内容」のとおりです。5月7日の課題はいずれの環境でも取り組めるはずです。
授業予定
COVID-19感染拡大などの状況により変更になることがあります。下記の日程は定期試験期間中に筆記試験を実施することを想定しています。
- 第1回(4/13) はじめに/コンピュータの基本操作/Webブラウザ/学習支援システムmoodle/タイピング練習/電子メール/Office365メール/電子メール補足
- 第2回(4/20) UNIXコマンドの基礎/ファイルシステム/よく使うUNIXコマンド集
- 第3回(4/27) ディレクトリツリーとファイルパス/テキストエディタ/テキストエディタによるファイル作成〜VS Code編・〜Emacs編/ファイル操作練習/SSHによる遠隔アクセス
- 第4回(5/7, 土曜日・曜日振替) テキストエディタでの編集操作/日本語文字コード/UNIXコマンドの応用
- 第5回(5/11) C言語:コンパイルと実行/順次実行/HandyGraphic基本関数一覧/プログラミングの学習指針
- 第6回(5/18) C言語:変数/入出力
- 第7回(5/25) C言語:入出力と変数
- 第8回(6/1) C言語:条件分岐
- 第9回(6/8) C言語:繰り返し
- 第10回(6/15) C言語:条件分岐と繰り返し
- 第11回(6/22) C言語:配列
- 第12回(6/29) 配列(2)/筆記試験練習
- 第13回(7/6) C言語:アニメーション/(参考情報)高度なテクニック集/自由制作
- 第14回(7/13) C言語:自由制作
- 第15回(7/20) 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