Document

プログラミング入門2
第1回
イントロダクション
芝浦工業大学情報工学科
青木 義満
講義情報
 担当教員
 青木義満
 TA: 授業中紹介
 時間・場所
 月曜日 3~4限
 大学会館2階 実習室
 本講義の目的

プログラミング言語の主流であるC言語の基礎知識の習得
→ CができればBasicなどの他言語も理解は容易



C言語を通して、プログラミングする際に必要な論理的な物の考え方を身につける
今後の学科の授業、卒業研究、就職において重要
基本情報処理技術者試験でも出題
→ ゆえに必修!
1回目
プログラミング入門2
2
講義情報
 授業の進め方


内容説明(3限)
例題 → 演習 → チェック(4限)
 評価方法



授業内演習、レポート
中間テスト
学期末テスト
 テキスト

「新版 明解C言語 入門編」、柴田望洋、ソフトバンク
→ 生協にて購入可能
更にマスターしたい人



「プログラミング言語C」、カーニハン&リッチー、共立出版
「秘伝ポインター問答」、柴田望洋、ソフトバンク
ANSI C言語大辞典、マーク・ウィリアムズ社 編/坂本 文、今泉 貴史 監訳
1回目
プログラミング入門2
3
講義スケジュール(予定)













導入
演算と型
分岐
繰り返し
配列
関数1
関数2,文字列
ファイル入出力
ポインタ1
ポインタ2
構造体
まとめの演習
期末テスト
1回目
中間テスト
プログラミング入門2
4
質問・問い合わせ先
青木 義満
メールアドレス: [email protected]
研究室: 豊洲校舎研究棟14階14-K-32
メディア工学(青木)研究室
1回目
プログラミング入門2
5
まずはプログラムを書いて動かしてみよう
 ディレクトリの作成 mkdir
 エディタを立ち上げる emacs
 プログラムの内容を記述
 保存(***.c)
 コンパイル
gcc source.c -o source
ソースファイル名
(***.c)
コンパイルコマンド
 実行
./source
実行ファイル名
出力実行ファイル名
指定オプション
※ ./ → 現在いるディレクトリのこと
(カレントディレクトリ)
注意: プログラムは半角英数字で記述!
1回目
プログラミング入門2
6
まずはプログラムを書いて動かしてみよう
ソースファイル名: name.c (p.8 List1-4)
コンパイル: gcc name.c –o name
実行: name
#include <stdio.h>
水色部分
おまじない
(常に記述)
int main(void)
{
printf(“Hello, My name is AOKI \n”);
Tabかスペース
で字下げ
return(0);
命令を記述
}
1回目
プログラミング入門2
7
エラーが出たら・・・・
 全て半角英数字で書かれているか?
 スペースも半角
 (), ””(ダブルクォーテーション)などに注意!
 文の最後に;(セミコロン)を忘れずに!
 2つのターミナルを使用して効率的な作業を
 1つはEditor用 として
 1つはDebug用として
1回目
プログラミング入門2
8
プログラムとコンパイル
 コンパイル方式


ソースプログラムをコンピュータが直接理解・実行できる形式に“翻訳”
する方式 (C言語など)
インタプリタ方式

プログラムを1行ずつ解釈しながら実行する方式(Java Scriptなど)
→ 一般に、コンパイル方式の方が実行速度は高速!
1回目
プログラミング入門2
9
printf 関数 ~ データを表示するコマンド
文字列の表示
文の最後にセミコロン
printf( “
Hello Hello \n ” );
“”(ダブルコーテーション)の中に
表示したい文字列を入力
1回目
プログラミング入門2
改行指定
10
プログラムをよりわかりやすく ~ 注釈(コメント)
 ソースファイル中の /* と */ に挟まれた部分
→ 実行時に無視される!
 プログラムを見やすく、読みやすくするために適切なコメントをつける
/*挨拶して自己紹介する プログラム
name.c
/* 挨拶して自己紹介する
*/
*/コメント
複数行も可
#include <stdio.h>
int main(void)
{
/* 挨拶、名前を表示して、改行 */
コメント
printf( “Hello, My name is Yoshimitsu AOKI \n” );
return(0);
}
1回目
プログラミング入門2
11
数字(計算結果)の表示
 コンピュータの大きな役割 → 計算の高速実行
 2つの整数の和を計算して、その値を表示するプログラム
/* 2つの整数値の和を計算して表示するプログラム */
#include <stdio.h>
int main(void)
{
/* Calculate sum of 15 and 37 */
コメント
printf( “%d\n”, 15 + 37 );
return(0);
早速書いて実行してみよう!
}
1回目
プログラミング入門2
12
解説 ~ 整数値を printf で表示する方法
整数値の表示
printf関数の ” ” の中には文字のデータしか入れられない
→ 数値データを文字列に変換する必要!!
代入!
printf( “ %d \n
52
” , 15+37 );
改行指定 カンマ
カンマの後に続く整数値データを
10進数で表示 → 変換指定
1回目
プログラミング入門2
13
数字(計算結果)の表示をもっとわかりやすく
/* 2つの整数値の和を計算して表示するプログラム */
#include <stdio.h>
int main(void)
{
/* Calculate sum of 15 and 37 */
printf( “15 + 37 = %d \n”, 15 + 37 );
return(0);
実行してみよう!
}
1回目
プログラミング入門2
14
もっと複雑な計算へ ~
変数
の必要性
 先ほどのプログラム → 15,37,15+37 → 全て定数(Constant)
 実際の計算では, 計算の途中経過を覚えさせておく必要が生じる
重要
変数とは、数値などのデータを
格納するための箱である
変数の宣言方法(整数の場合)
57
整数値
int x ;
型名
整数の場合、int (イント: integer の略)
1回目
X
変数の名前
(わかりやすい名前をつける)
変数xは、整数値を入れることのできる
int 型の箱である。
プログラミング入門2
15
変数の値を表示するプログラム
ファイル名: hensuu1.c
/* 2つの整数値を変数を使って表示するプログラム */
#include <stdio.h>
int main(void)
{
int x;
int y;
Int型変数 x, y の宣言
注: 変数の宣言はmainの直後に!
x = 80 ;
y = 65 ;
変数に整数値データを代入
printf( “変数 x に入っているデータは%dです。\n”, x );
printf( “変数 y に入っているデータは%dです。\n”, y );
return(0);
表示
}
1回目
プログラミング入門2
16
代入とは?
int x ;
x = 50 ;
代入演算子: 右辺のデータを左辺に代入する
注: 数学でいう、「xと50が等しい」という意味ではない!
代入
50
整数値
x = 50 ;
y = x + 10 ;
X
yの値は?
変数xに50を代入!
1回目
プログラミング入門2
17
点数の合計を計算して表示するプログラム
ファイル名: tensuu.c
/* 2科目の点数の合計を表示するプログラム */
#include <stdio.h>
int main(void)
{
int sugaku;
int english;
int goukei;
sugaku = 90;
english = 75;
変数goukeiにsugakuとenglishの合計点を計算して代入
printf でsugaku, english, goukeiの点数をそれぞれ表示
return(0);
}
1回目
プログラミング入門2
18
キーボードからのデータ入力
 前のプログラム : 点数のデータをプログラム中で記述。
→ 点数の値を変更するたびにコンパイルして実行する必要がある
→ 面倒!!
実行時にキーボードから点数を入力できないか?
scanf 関数
1回目
プログラミング入門2
19
キーボードからのデータ入力と表示 ~ scanf 関数
ファイル名: keyinput.c
/* キーボードから点数を入力して値を表示するプログラム */
#include <stdio.h>
int main(void)
{
int sugaku;
アンド,アンバサンド
(変数の前に必ず付ける!)
注:printfには不要!
printf( “Input score of math :”);
scanf( “%d”, & sugaku );
printf(“Score of Math = %d \n”, sugaku);
return(0);
}
1回目
プログラミング入門2
20
puts関数(プットエス)
 printf とほぼ同じ役割
 文字の並びを出力し、最後に改行を行う
 %d などとの併用はできない → 書式化は不可
printf ( “ABC\n” );
=
puts ( “ABC” );
改行不要!
puts(“値は%dです”, x );
1回目
printfを使用
プログラミング入門2
21
今日の課題(第1回目、まずはウォーミングアップ)
1.
printf関数を用いて、
・自分の名前
・出身地
・趣味
を表示するプログラムを作成せよ。(kadai1-1.c)
2. 数学、英語、国語の3科目の点数をキーボードから入力し、その合計
点を表示するプログラムを作成しなさい。(kadai1-2.c)
終わったらTAもしくは先生に声をかけて下さい。
チェックが終了したら、授業終了です。
1回目
プログラミング入門2
22