プログラミング入門2 第1回 導入 情報工学科 篠埜 功
講義情報 担当教員 篠埜 功 居室 豊洲校舎 14階 14K32 E-mail: sasano@sic.shibaura-it.ac.jp 講義用web page http://www.sic.shibaura-it.ac.jp/~sasano/lecture/lecture.html ここへ毎回講義用資料を置く。 時間・場所 月曜日 3~4限 大学会館2階 実習室 12:50-13:10はホームルームの時間とする。 第8回 11/15(月) 3限 中間試験 持ち込み不可 第15回 1/17(月) 3限 期末試験 持ち込み不可 1回目 プログラミング入門2
本講義(演習)の目的 現在世界で広く用いられているC言語に触れる。 → C言語を知っていればJava, C++,C#等、Cの影響を受けている言語の理解にも役立つ。 C言語を通して、プログラミングをする際に必要な考え方を身につける。 C言語のすべてを扱うには時間が足りないので、C言語の核となる部分のみを扱う。 扱わなかった内容は各自で教科書等を読んで補う。(他人の書いたプログラムを読むためには、あらゆる構文に対応できる必要がある。必要に応じて補う。) 1回目 プログラミング入門2
講義情報 授業の進め方 評価方法 内容説明(3限) 内容説明(3限) 演習課題(4限) ---第12回までは毎回、基本課題を2問ずつ出題する(1問0.5点)。できた人はTAに確認してもらう。その日に終わらなかったら次の回に確認してもらう。次回以降でも受け付けるが、なるべく早めに終わらせる。(中間試験があるので、この部分は11回分で合計11点。) 基本課題が2問ともできて時間に余裕がある人は発展課題を解いてTAに見てもらう。 第13回、14回は総合演習とし、3問出題する(1問1点、計3点)。 演習の合計得点は14点。(端数が出た場合は切り上げる。) 演習問題の解答のTAによる確認の締め切りは第14回の終了時(16:10)とする。これ以降は受け付けない。 評価方法 授業時の演習 (14点) 中間試験 (36点) --- 筆記試験 期末試験 (50点) --- 筆記試験 出欠、遅刻は記録するが、得点には算入しない。 1回目 プログラミング入門2
教科書、参考書 教科書 参考書 新版明解C言語入門編,柴田望洋著, 2,310円, ソフトバンククリエイティブ 新版明解C言語実践編, 柴田望洋著, 2,310円, ソフトバンククリエイティブ 図解C言語 ポインタの極意, 柴田望洋著, 2,520円, ソフトバンククリエイティブ 新ANSI C言語辞典, 平林雅英著, 2,300円,技術評論社(現在入手困難) (推奨はしない) プログラミング言語C, カーニハン, リッチー, 石田晴久訳, 共立出版 ISO規格書 規格番号 ISO/IEC 9899:1999 Programming languages – C (日本規格協会から入手可能。3-4万円程度。) 1回目 プログラミング入門2
講義スケジュール(予定) 第1回 導入(入出力のある簡単なプログラムの実行) 第2回 型と演算、条件分岐、式の評価 第3回 複合文、繰り返し、ラベル 第4回 式文、代入式、論理演算子、ループの脱出、スキップ 第5回 配列、変数宣言、初期化 第6回 関数 第7回 基本型、文字列 第8回 中間試験(持ち込み不可) 第9回 ポインタ 第10回 構造体 第11回 動的な領域確保 第12回 種々の構文の紹介、ファイル 第13回 総合演習1(総合演習課題3問) 第14回 総合演習2 第15回 期末試験(持ち込み不可) 1回目 プログラミング入門2
TeraTermを起動し、oli.shibaura-it.ac.jpへログイン 準備 TeraTermを起動し、oli.shibaura-it.ac.jpへログイン 1回目 プログラミング入門2
プログラムのコンパイル、実行の手順(例) mkdirコマンドで自分の好きなディレクトリ(dai1kaiなど)を作成する。 $ mkdir dai1kai ($はプロンプト。各自、設定により異なる) cdコマンドでそのディレクトリへ移動 $ cd dai1kai emacsコマンドでEmacsを起動 $ emacs Emacs上でファイルを開く(C-x C-fの後ファイル名(test.cなど)を入力) プログラムを記述した後、保存(C-x C-s) Emacsを終了する(C-x C-c)か、あるいは中断する(C-z) gccコマンドでコンパイル $ gcc test.c –o test 実行 $ ./test test.cを再編集する場合は、Emacsをemacsコマンドでもう一度起動する(さきほど終了した場合)か、あるいはfgコマンドで再開させる(さきほど中断した場合)。 注意: プログラムは半角英数字で記述する 1回目 プログラミング入門2
例(打ち込んで実行) 前ページの手順で、上記プログラムを実行してください。 #include <stdio.h> int main (void) { printf(“test\n”); return 0; } 前ページの手順で、上記プログラムを実行してください。 1回目 プログラミング入門2
コンパイル時にエラーになった場合 全て(スペースも)半角英数字で書く。 記号の書き忘れに注意する。 1回目 プログラミング入門2
改行について さきほどのプログラムで、1行目以外は改行をしなくてもよい。例えば、以下のプログラムはさきほどのプログラムと同じ意味である。 #include <stdio.h> int main (void) { printf(“test\n”); return 0;} [注意事項] #includeの行は特別で、改行が必要である。 int, main, void, printf, returnなどの途中で改行してはいけない。 空白がある場所は自由に改行してよい(ダブルクォートの中、#includeの行は除く)。 1回目 プログラミング入門2
printf関数 ~ 文字列を表示する関数 printf関数により、画面上に文字列を表示させることができる。 printf( “test” ); のように、””の中に表示したい文字列を入れる。 改行させたい時は、改行文字\nを入れる。 printf (“test1\ntest2\n”); などに変えてコンパイルして確認せよ。 1回目 プログラミング入門2
コメント(打ち込んで確認) ソースファイル中の /* と */ に挟まれた部分はコメント。 ソースファイル中の /* と */ に挟まれた部分はコメント。 → コンパイル時に取り除かれる。複数行に渡っていてもよい。 プログラムを読みやすくするために適切なコメントをつける。 ファイル名は自分で自由に考えてつけてください。 名前の部分は自分の名前に置き換えてください。 /* 挨拶して自己紹介する プログラム */ #include <stdio.h> int main (void) { /* 挨拶、名前を表示して、改行 */ printf ( “こんにちは。\n私の名前は篠埜です。\n” ); return 0; } 1回目 プログラミング入門2
注意 コメントの中にコメントを書くことはC言語では許されていない。 /* 挨拶して自己紹介するプログラム /* test */ */ /* 挨拶して自己紹介するプログラム /* test */ */ #include <stdio.h> int main (void) { /* 挨拶、名前を表示して、改行 */ printf ( “こんにちは。\n私の名前は篠埜です。\n” ); return 0; } 上記のようにコメントの中にコメントを書くと、 1-2行目がコメントとなり、3行目で(コンパイル時に)エラーになる。 1回目 プログラミング入門2
数字の表示(打ち込んで実行) /* 2つの整数の和を計算して表示するプログラム */ #include <stdio.h> 2つの整数の和を計算して、その値を表示するプログラム /* 2つの整数の和を計算して表示するプログラム */ #include <stdio.h> int main (void) { printf( “15と37の和は%dです。\n”, 15 + 37); return 0; } 1回目 プログラミング入門2
int x; 変数 変数とは、数値などのデータを 格納するための箱である (数値などのデータを格納する場所に名前を付ける) 57 X 計算の途中結果を保持しておくために変数を用いる。 変数とは、数値などのデータを 格納するための箱である (数値などのデータを格納する場所に名前を付ける) 57 整数値 変数は使用前に宣言しなければならない。 変数xは、整数値を入れることのできる int 型の箱である。 int x; X 変数の名前 型の名前 整数の場合、int (integer の略) 1回目 プログラミング入門2
変数の値を表示するプログラム(打ち込んで実行) /* 整数値を変数に代入し、 表示するプログラム */ #include <stdio.h> int main(void) { int x; x = 80; printf (“x=%d\n”, x); return 0; } int型の変数 x の宣言 変数xに整数値80を代入 画面へ表示 1回目 プログラミング入門2
int x ; x = 50 ; 代入 代入 50 X 代入演算子: 右辺の値を左辺に代入する 代入演算子: 右辺の値を左辺に代入する 注: 「xと50が等しい」という意味ではない。 代入 50 整数値 X xという箱に50を入れる。 1回目 プログラミング入門2
点数の合計を計算して表示するプログラム(打ち込んで確認) /* tensuu.c 2科目の点数の合計を表示するプログラム */ #include <stdio.h> int main (void) { int sugaku; int english; int goukei; sugaku = 90; english = 75; goukei = sugaku + english; printf (“sugaku=%d, english=%d, goukei=%d\n”, sugaku, english, goukei); return 0; } 1回目 プログラミング入門2
キーボードからのデータ入力 実行時にキーボードから点数を入力したい場合、 scanf関数を用いる。 前のプログラム : 点数のデータをプログラム中で記述。 → 点数の値を変更するたびにコンパイルして実行する必要がある。 実行時にキーボードから点数を入力したい場合、 scanf関数を用いる。 1回目 プログラミング入門2
例(打ち込んで確認) /* twice.c キーボードから値を入力し、2倍した値を表示するプログラム */ #include <stdio.h> int main (void) { int x; printf( “整数を入力してください: ”); scanf (“%d”, &x); printf(“その数の2倍は%dです。\n”, 2*x); return 0; } 文字化けの問題がある人は文字コードをutf-8にしてください。 nkfだと-wオプションを指定。EmacsだとC-x RET f の後utf-8を入力。 1回目 プログラミング入門2
今日の課題(基本課題) printf関数を用いて、 ・自分の名前 ・出身地 ・趣味 を表示するプログラムを作成せよ。(kadai1-1.c) ・自分の名前 ・出身地 ・趣味 を表示するプログラムを作成せよ。(kadai1-1.c) (プログラム中に名前等を直接書いてよい。) 2. 数学、英語、国語の3科目の点数をキーボードから入力し、その合計点を表示するプログラムを作成せよ。(kadai1-2.c) 1回目 プログラミング入門2
発展課題 (基本課題が2問ともできた人用) 問2において、3科目の平均点(整数値)の表示も行うようにせよ。 ヒント:合計点を3で割ればよい。割り算は、/を用いる。例えば、合計が200の場合、それがgoukeiという変数に入っていると、goukei/3で66が得られる。 1回目 プログラミング入門2