Document

プログラミング入門2
第1回
導入
情報工学科
篠埜 功
講義情報
 担当教員
 篠埜
功
 居室 豊洲校舎 14階 14K32
 E-mail: [email protected]
 講義用web page
http://www.sic.shibaura-it.ac.jp/~sasano/lecture/lecture.html
ここへ毎回講義用資料を置く。
 時間・場所
 月曜日 3~4限
 2号館PC実習室6,7,8
 12:50-13:10はホームルームの時間とする。
 11/21(月) 中間試験(3限のみ) 持ち込み不可
 1/16(月) 期末試験(3限のみ) 持ち込み不可
1回目
プログラミング入門2
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回は総合演習とする。出題は第12回に行う。3問出題する(1問1点、計3
点)。
 演習の合計得点は14点。(端数が出た場合は切り上げる。)
 演習問題の解答のTAによる確認の締め切りは第13回の終了時(16:10)とする。
これ以降は受け付けない。
 評価方法
 授業時の演習 (14点)
 中間試験 (36点) --- 筆記試験
 期末試験 (50点) --- 筆記試験
 出欠、遅刻は記録するが、得点には算入しない。
1回目
プログラミング入門2
4
教科書、参考書
 教科書
新版明解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
5
講義スケジュール(予定)














第1回 導入(入出力のある簡単なプログラムの実行)
第2回 型と演算、条件分岐、式の評価
第3回 複合文、繰り返し、ラベル
第4回 式文、代入式、論理演算子、ループの脱出、スキップ
第5回 配列、変数宣言、初期化
第6回 関数
第7回 基本型、文字列
第8回 中間試験(持ち込み不可)
第9回 ポインタ
第10回 構造体
第11回 動的な領域確保
第12回 種々の構文の紹介、ファイル、総合演習課題出題
第13回 総合演習
第14回 期末試験(持ち込み不可)
1回目
プログラミング入門2
6
準備
 TeraTermを起動し、oli.shibaura-it.ac.jpへログ
イン
1回目
プログラミング入門2
7
プログラムのコンパイル、実行の手順(例)
 mkdirコマンドで自分の好きなディレクトリ(1kaiなど)を作成する。
$ mkdir 1kai ($はプロンプト。各自、設定により異なる)
 cdコマンドでそのディレクトリへ移動







$ cd 1kai
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
8
例(打ち込んで実行)
#include <stdio.h>
int main (void)
{
printf(“test\n”);
return 0;
}
前ページの手順で、上記プログラムを実行してくださ
い。
注意: C言語プログラムのファイル名は.cで終わる名前
にしてください。(gccがファイル名の拡張子部分を見る
ため)
1回目
プログラミング入門2
9
コンパイル時にエラーになった場合
 全て(スペースも)半角英数字で書く。
 記号の書き忘れに注意する。
1回目
プログラミング入門2
10
改行について
さきほどのプログラムで、1行目以外は改行をしなくてもよ
い。例えば、以下のプログラムはさきほどのプログラムと
同じ意味である。
#include <stdio.h>
int main (void) { printf(“test\n”); return 0;}
[注意事項]
#includeの行は特別で、改行が必要である。
int, main, void, printf, returnなどの途中で改行してはいけない
。
空白がある場所は自由に改行してよい(ダブルクォートの中、
#includeの行は除く)。
1回目
プログラミング入門2
11
printf関数 ~ 文字列を表示する関数
printf関数により、画面上に文字列を表示させることが
できる。
printf( “test” );
のように、””の中に表示したい文字列を入れる。
改行させたい時は、改行文字\nを入れる。
printf (“test1\ntest2\n”);
などに変えてコンパイルして確認せよ。
1回目
プログラミング入門2
12
コメント(打ち込んで確認)
 ソースファイル中の /* と */ に挟まれた部分はコメント。
→ コンパイル時に取り除かれる。複数行に渡っていてもよい。
 プログラムを読みやすくするために適切なコメントをつける。
 ファイル名は自分で自由に考えてつけてください。
 名前の部分は自分の名前に置き換えてください。
/* 挨拶して自己紹介する プログラム
*/
#include <stdio.h>
int main (void)
{
/* 挨拶、名前を表示して、改行 */
printf ( “こんにちは。\n私の名前は篠埜です。\n” );
return 0;
}
1回目
プログラミング入門2
13
注意
 コメントの中にコメントを書くことはC言語では許されていない。
/* 挨拶して自己紹介するプログラム
/* test */
*/
#include <stdio.h>
int main (void)
{
/* 挨拶、名前を表示して、改行 */
printf ( “こんにちは。\n私の名前は篠埜です。\n” );
return 0;
}
上記のようにコメントの中にコメントを書くと、
1-2行目がコメントとなり、3行目で(コンパイル時に)エラーになる。
1回目
プログラミング入門2
14
数字の表示(打ち込んで実行)
 2つの整数の和を計算して、その値を表示するプログラム
/* 2つの整数の和を計算して表示するプログラム */
#include <stdio.h>
int main (void)
{
printf( “15と37の和は%dです。\n”, 15 + 37);
return 0;
}
1回目
プログラミング入門2
15
変数
 計算の途中結果を保持しておくために変数を用いる。
変数とは、数値などのデータを
格納するための箱である
(数値などのデータを格納する場所に名前を付ける)
57
変数は使用前に宣言しなければならない。
整数値
int x;
変数の名前
型の名前
X
変数xは、整数値を入れることのできる
int 型の箱である。
整数の場合、int (integer の略)
1回目
プログラミング入門2
16
変数の値を表示するプログラム(打ち込んで実行)
/* 整数値を変数に代入し、
表示するプログラム */
#include <stdio.h>
int main(void)
{
int x;
x = 80;
printf (“x=%d\n”, x);
return 0;
}
1回目
int型の変数 x の宣言
変数xに整数値80を代入
画面へ表示
プログラミング入門2
17
代入
int x ;
x = 50 ;
代入演算子: 右辺の値を左辺に代入する
注: 「xと50が等しい」という意味ではない。
代入
50
X
整数値
xという箱に50を入れる。
1回目
プログラミング入門2
18
点数の合計を計算して表示するプログラム(打ち込んで確認)
/* 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
19
キーボードからのデータ入力
 前のプログラム : 点数のデータをプログラム中で記述。
→ 点数の値を変更するたびにコンパイルして実行する必要がある。
実行時にキーボードから点数を入力したい場合、
scanf関数を用いる。
1回目
プログラミング入門2
20
例(打ち込んで確認)
/* 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
21
今日の課題(基本課題)
1.
printf関数を用いて、
・自分の名前
・出身地
・趣味
を表示するプログラムを作成せよ。(kadai1-1.c)
(プログラム中に名前等を直接書いてよい。)
2. 数学、英語、国語の3科目の点数をキーボードから入力し、その
合計点を表示するプログラムを作成せよ。(kadai1-2.c)
1回目
プログラミング入門2
22
発展課題1
 (基本課題が2問ともできた人用)
問2において、3科目の平均点(整数値)の表示も行うよ
うにせよ。
ヒント:合計点を3で割ればよい。割り算は、/を用いる。
例えば、合計が200の場合、それがgoukeiという変数に
入っていると、goukei/3で66が得られる。
1回目
プログラミング入門2
23