情報処理II

情報処理Ⅱ
第1回
2006年10月6日(金)
情報処理Ⅱについて


担当は村川猛彦([email protected])
「プログラミング基礎Ⅱ」(松田先生)と連携して実施





演習の疑問や誤解を講義で解説し,
講義で紹介する技法を演習で活用する.
成績評価は別々.
目標:「情報処理Ⅱ」および「プログラミング基礎Ⅱ」を通じて,
Cで数十行程度のプログラムが自在に作成できるようになる
こと.
予習は不要.復習は必要かも.
2
成績評価の方法


レポート:10点満点×2回
期末試験:80点満点


Cに関する書籍1冊と自筆ノート1冊の持ち込みを認める.
毎回授業開始時に実施する小テストは,成績に加味しない.
しかし,受けるのと受けないのでは期末試験で大きく差が開
くので,毎回出席することを期待する.
3
他の科目との関連
セメ
スター
科目
内容
目標
1
情報処理Ⅰ
プログラミング基礎Ⅰ
リテラシー
プログラミングの入門
計算機に慣れる
2
情報処理Ⅱ
プログラミング基礎Ⅱ
プログラミングとCの基礎(講義)
プログラミングとCの基礎(演習)
プログラミング
を学ぶ
3
アルゴリズム演習Ⅰ
プログラミングとCの基礎(演習)
Cで自在に
プログラミング
4
ビジュアル情報演習
情報ネットワーク演習
ビジュアライズ(可視化)
通信
ライブラリの活用
5
6
情報通信システム演習
7 ~ 卒業研究
研究室配属.研究テーマに応じたプログラム作成
4
プログラミングにまつわる用語

プログラミング(programming)


プログラム(program)



プログラムを作ること
「EXE(エグゼ)ファイル」,「バイナリ」
とも呼ばれる
プログラミングの結果,作られたファイル
実行可能なファイルを作って計算機に渡すことで,プログラム
の指示通りに動作する.
• Cのファイルは実行可能ではなく(ソースファイルと呼ばれ
る),コンパイラを用いて,実行可能なファイルに変換する.
コマンド(command)

計算機に何をしてもらうか指示すること
5
プログラミングの順序
目的・アイデア
プログラミング
(テキストエディタ)
(Cなどで書いた)
ソースファイル
コンパイル
(コンパイラ)
エラー
実行
実行ファイル
失敗…
成功!
6
なぜプログラミングをするのか?

高速・高精度が要求される処理が可能




ロボット,車,原子炉などの「制御」
データの「整理整頓」,整形出力など
他の計算機・プロセス・デバイスとの「通信」
問題解決に要する時間を短縮


それは,自分がすべき仕事か?
それは,計算機に向いた仕事か?
7
なぜC?(1)

有名なプログラミング言語










C,C++
Java ⇒「情報処理Ⅲ」「オブジェクト指向1~2」で
非手続き型言語: Lisp,Prolog,Haskell,SQL
Lightweight Language: Perl,PHP,Python,Ruby
Pascal,Delphi,Kylix
Fortran,COBOL,BASIC,PL/Ⅰ,ALGOL
HSP
JavaScript (JScript, ECMAScript)
シェルスクリプト,バッチファイル
アセンブリ言語
8
なぜC?(2)


普及しているプログラミング言語
適度に高水準,適度に低水準



他のプログラミング言語の習得に役立つ


高水準:人間が読み書きしやすい.
低水準:計算機向けの記述がしやすい.
実用的な多くのプログラミング言語が,Cの影響を受けて設計
された.
Cは,プログラミング言語の世界の「英語」のようなもの!
9
情報処理Ⅱで学んでほしいこと

Cプログラミングにおける技法や文法









型,式,演算子
制御文
配列とポインタ,多次元配列,文字列
識別子,変数,関数,再帰
構造体
入出力
基本的なライブラリ関数
有用なツール
していいこと,してはいけないことの区別
10
コラッツの問題(1)

ルール




上のルールを繰り返すことで,どんな正整数もやがては1に
なる.
例



奇数ならば,3倍して1を加える.
偶数ならば,2で割る.
正整数…1以上の整数
非負整数…0以上の整数
「自然数」は使わない.
5 ⇒ 16 ⇒ 8 ⇒ 4 ⇒ 2 ⇒ 1
3 ⇒ 10 ⇒ 5 ⇒ (上を利用) ⇒ 1
数学的証明はなされていないが,具体的な正整数が与えら
れれば,それが正しいことを検証できる.
11
コラッツの問題(2)

コラッツの問題の検証プログラムを作ろう!



テキストエディタ(Emacs)でソースファイルを作り,保存する(こ
こではcollatz.cというファイル名にする).
ターミナル(GNOME端末など)で「cc collatz.c」を実行する.
コンパイルが成功すれば,a.outという実行ファイルができる.
続いてターミナルで「./a.out」を実行する.
プログラムを実
際に作って見せ
るサインです.
12
プログラムの読み方(1)

Cプログラムの骨格
#include <stdio.h>
int main()
{
...
return 0;
}
①インクルード文
②メイン関数の宣言
③ブロック開始
④処理
⑤メイン関数の終了
⑥ブロック終了
13
プログラムの読み方(2)

内部で何をしているのか?




while文
最初に,値を変数xに格納する.
変数xの値は,ルールの適用により変わっていく.
xが1なら,計算終了!(xが1でない間は,ずっと繰り返す.)
xが奇数なら,3x+1を計算し,これを新しいxの値とする.
xが偶数なら,x/2を計算し,これを新しいxの値とする.
• 「偶数か奇数か」は,2で割った余りが0か1かで判定する.
14
プログラムの読み方(3)

printf("%d\n", x);



printf("%d / 2 => %d\n", x, x / 2);



x=10のとき,「10 / 2 => 5」を出力する.
x=16のとき,「16 / 2 => 8」を出力する.
printf("OK\n");


x=3のとき,「3」を出力する(画面に「3」が表示される).
x=5のとき,「5」を出力する.
変数の値に関係なく,「OK」を出力する.
「\n」は改行文字
15
まとめ



半年かけて,Cプログラミングの技法や文法を学ぼう!
ソースファイルを作るのはテキストエディタ,
そこから実行ファイルを作るのはコンパイラ.
単純な計算は,Cでも単純に記述できる.
使用する記号に注意.
16