今回はガイダンスとウォーミングアップです.
このウェブページの内容を熟読し, タスクを順番通りに実行し, 最後にレポートを提出しよう.
本科目の受講学生はレポート提出時, 各自の学習時間を記録・報告しなければなりません. 学習時間=授業時間+自習時間 です. 授業時間内で完了できなかった課題については, 放課後等に自習として取り組んでください.
レポート作成以前に, 新出の専門用語や概念などについても, 教科書やネットなどを活用し, 各自で調査・研究してください. もし不明点があれば,担当教員へ質問してください.
自習の開始・中断・再開・完了の各時刻を 紙やテキストファイルにメモしておくとよいでしょう. その自習時間の合計に,授業の 1.5 時間を加算してください.
本科目はプログラミング言語「C」(通称:C言語) の基礎の修得を目標としています.
電子計算機(コンピュータ)のわずか 100 年未満の歴史の中で, 多種多様なプログラミング言語の 栄枯盛衰がありました. しかし,C言語は 50 年に渡り生き残り, 現在でも実用的なソフトウェアの開発に利用されています.
そんな古い物に興味は持てない? Cとは別種の最新の言語であっても,実はCから多くの性質を受け継いでいます. したがって,Cを理解しておけば,その知識を流用して, 他の言語も簡単に修得できるようになることでしょう.
また,現在流行の言語であっても,やがて廃れる運命ですが, その根本的な部分は生き続けることでしょう.
「手続き型プログラミング (procedual programming)」 または単純に「プログラミング」とは, その仕事をどのように進めるか(How to ...)? 段取りを指示することです. 要するに「仕事の手順の計画書の作成」です. C言語は,この種類のプログラムの記述を得意としています.
コンピュータはプログラムに従って自動的に仕事をこなしてくれます. 人間とは異なり,何時間でも,何回でも,疲れも知らず,文句も言わずに...
ただし,コンピュータは指示された通りにしか動きません. 指示に不備があっても,まったく気にせず,その通りに動いてしまいます. この場合,当然,その仕事は失敗します. プログラム作成者の責任は重大です.
どんなプログラミング言語であっても, 完全に修得するためには,実習の反復(実際にプログラムを作り, それを動かし,結果を見極め,改善策を練り,作り直すこと)が重要です. 座学(講義を聞く,教科書を読む)だけでは, スキル不足なだけでなく,主観(先入観や誤解)によって, 逆効果(誤学習)となることもあります.
人間が相手の自然言語(日本語とか英語)でも難しかった. コンピュータ相手のプログラミング言語では尚更です.
今回はプログラミング学習のウォーミングアップです. 安心してください.いきなり本格的なC言語は使いません.
アルゴリズム体験ゲーム「アルゴロジック」by JEITAを利用して 「手続き型プログラミング=仕事の段取り」の考え方を遊びながら学びましょう. 今回の授業では「アルゴロジック2」を対象とします.
アルゴリズムは「問題の解き方」とか「段取りの組み立て方」のことです. まずは,アルゴロジックの解説 「アルゴリズムとは」 を読もう.
一般に,1つの問題を解くための正しいアルゴリズムは1つだけとは限りません. また,それら複数の正解の中で,どれが最適(最も効率的)なのか? それも1つだけとは限りません.
さらには,アルゴリズム自体の理論的な効率だけでなく, それをプログラムとして実装・実行した場合の 現実的な効率についても考慮すべきです. 評価の観点によって最適解も変わってきます.
プログラムの評価の主な観点:
何だか現実離れ感のある「プログラミング」であっても, 結局は,現実の「ものづくり」と同じく, コストの問題「テマ,ヒマ,カネ(労力,時間,資金)」が非常に重要です.
なお,アルゴロジックの場合,実行効率よりも開発効率を重視しています. まず,材料(コマンドブロックの種類・個数)が限られています. とにかく材料費(コマンドブロック使用数)が最少なら最適解となります. もしロボットが明らかに無駄な動きをしても,それは非効率とは見なされません. これは,ちょっと現実的ではないのですが...
一般的なプログラムの場合,実行効率も開発効率もどちらも重要です.
制御構造は「処理順序の基本パターン」です. 手続き型プログラミングでは,単純な3つの制御構造の組み合わせによって, 複雑な動作を組み立てます. これについても,アルゴロジックの解説 「プログラムの3つの制御構造」 を読もう.
アルゴロジックは解説文も一般人・子供向けです. より専門的な言葉に言い換えましょう:
「アルゴロジック2」について, すべての問題に取り組もう. まずは,使い方を読みましょう.
そして,全24問の正解○(クリアー!one more challenge!)を目指しましょう. その後,できるだけ最適解◎(クリアー!That's great!!)も見つけ出そう. (本日の課題では,応用1〜3の12問が評価対象となります.)
なお,学生同士で助け合う場合, 正解をそのまま伝達するのでは,まったく勉強になりません. 考え方を伝えるように心がけましょう.
自習中の作業の中断・再開の際,時刻の記録をお忘れなく.
タスク1が完了したら, アルゴロジック2の成績表示画面のスクリーンショット画像を撮影しよう. ブラウザのウィンドウ部分だけで良い.
撮影方法:
$ import ユーザ名.png
これで,マウスポインタが「+」に変わったハズ.
これで,画像ファイル「ユーザ名.png」ができたハズ.
$ eog ユーザ名.png
質問 Q1〜Q6 に回答し,電子メールで提出せよ.