プログラミング入門2003

第2回[平成15年4月24日(木)]:PN03ー02.ppt
変数と代入・読込と表示
今日の内容
1
2
3
4
5
6
プログラムの構造(復習)
文字列と数値(整数値)の出力(復習)
変数と変数宣言
入力文とアドレス指定
代入と代入演算子
変換指定子の補足
0. 参考書
 情報処理技術者試験向け雑誌、解説書・演習書
アスキー(田口景介著)
入門C言語、実習C言語、応用C言語
ソフトバンク(林晴比古著)
新C言語入門スーパービギナー編、
ビギナー編、シニア編、応用編
オーム社(三田典玄著)
入門C言語、実習C言語、応用C言語
C言語によるプログラミング[基礎編][応用編]
[スーパーリファレンス編](内田智史編著)
 図書館を利用しよう
1.プログラムの構造
復習
• 教科書6頁:List1-3(見出し付き出力)
/*
整数値15と37の和を表示する
注釈行
*/
#include <stdio.h>
標準ヘッダ
int main(void)
メイン関数の始まり
{
printf(”15+37=%d\n”,15+37);
実行部分
return (0);
}
プログラム
の一般形
#include <stdio.h>
int main(void)
{ 実行部分 return(0);}
2.文字列と整数値の出力
復習
printf("1日は %d秒\n",24*60*60);
文字列はそのまま
書式を指定
変換指定子(%d)による変換
1日は 86400秒
書式は " で囲むこと!!
見出し付き
の出力
となる
サンプルプログラム
List1-8:二つの変数に整数値を格納して表示
/* List1-8 (11頁) */
注釈行
#include <stdio.h>
int main(void){
int vx, vy;
変数宣言
vx = 57;
式と代入文
vy = vx + 10;
printf("vxの値は%dです。\n", vx);
printf("vyの値は%dです。\n", vy);
return(0);
書式指定(見出し)
}
3.変数と変数宣言
• 変数(識別子)
– プログラムの中で値を記憶する場所
– 場所の名前→変数名
main関数の { の後に宣言する
型指定子(int) 変数名リスト;
• 命名法:英文字か_で始まり、
32文字以内の英数文字と_
(_はアンダーバー)
変数名
vx
• 変数を宣言する
英字 _
変数
英字 _
数字
vy
wa
seki
82頁を
参照
予約語(キーワード)と変数名
予約語:プログラム特有の文字列
特定の意味を持っている語(82頁参照)
int double return if do for while 等
変数名:予約語は使わない
大文字(ABC…)・小文字(abc…)の区別あり
32文字までが有効
利用可能文字
A B C ・・・ X Y Z a b c ・・・ x y z 0 1 2 ・・・ 9 _
演習(変数名)
問.次の名前の中で変数名として不適当な名前
を、理由と共に指摘せよ。
(1) gakuseki_bangou
(2) 2nennsei
(3) jyouhou-kanri
(4) Nyuumon
(5) _abc
(6) const
(7) PROGRAM2001
(8) No.
(9) Asahi Univ
(10) enshuu_13
サンプルプログラム
List1-12:二つの整数の入力と和の計算と表示
#include <stdio.h>
出力文
int main(void){
int n1, n2;
入力文
変数宣言
int wa;
puts("two integers ? ");
printf("整数1:");
scanf("%d",&n1);
printf("整数2:");
式と代入文
scanf("%d",&n2);
wa = n1 + n2;
書式指定(見出し)
printf("それらの和は%dです。\n",
文字列のみの改行付きの出力
•puts関数: puts(実引数[文字列])
– 出力制御(例えば、%d)は不可
– 文字列の最後に改行(\n)を付して出力
–\nを入れれば強制的に改行する
puts("強制改行\nする。");
強制改行
する。
文字列のみの改行付きの出力
•puts関数: puts(実引数[文字列])
– 実引数は一つ:文字列を分けても良い
"abcde" → "abc" "de"
–"\n"という文字列を出力する場合には
"\\n"と記述する
puts("\\nがなくても");
puts("改行" "する。");
\nがなくても
改行する。
4.入力文とアドレス指定
• scanf関数
scanf(入力制御、値を入れる変数のアドレス)
– 入力制御で変換指定(%d,%c,%f)をする
– アドレス指定子(&)を変数名の前に付ける
scanf("%d",&a); scanf("%f",&X)
• 複数のデータを入力する → 複数の変数名
scanf("%d %d %d",&a,&b,&c);
それぞれ対応
12 13 14
• 入力装置は標準でキーボードとなる
入力装置がFD,HD内のファイル:別巻『実践編』
入力文とアドレス指定
• アドレス指定の考え方
scanf("%d",&a);
変数の
ある場所
(アドレスは&a)
変数 a
12[Enter]
%d
12
変数 a の場所へ
整数の値として
&a
12を入れる
演習
• キーボードから整数値を一つ入力し、画面
に、その2倍の値を出力せよ。
#include <stdio.h>
int main(void) {
int a;
printf("整数値を入力せよ:");
scanf(
);
printf(
return(0);
}
);
[補足]入力文とアドレス指定
• 複数のデータを入力 → 複数の変数名
scanf("%d %d %d",&a,&b,&c)
それぞれ対応
scanf("%d %d %d",&a,&b
)
scanf("%d %d
",&a,&b,&c)
12 13 14
プログラム
暴走???
次のキーボード入力に反映
scanf("%d,%d,%d",&a,&b,&c) 12,13, 14
入力値の直後にコンマが必要
12 ,13, 14
5.代入文と代入演算子
• 代入:変数に新たに値を割り当てること
– 代入演算子による式 → 代入式
• 代入演算子は = (イコール)
変数名
足し算
掛け算
わり算
= 式 で式の値が変数に代入される
+、 引き算 ー
a
*(xではない)
/(÷ではない)
b
数学の等式
と違うことに
注意
a = 3 ; b = 4 ;
sum = a + b;
prod = a * b;
a = a + 2;
sum
prod
演習(代入式の文:式文)
問. 次の代入式の文に間違いがあれば指摘せよ
(1) a = a + b;
(2) d = a(b + d);
(3) d = {(a + b)/c};
(4) d = a/b/c;
(5) a+b = c+d;
(6) i = a*b;
(7) b = a + a + a;
(8) f = a ÷ b;
(9) x = a^b;
演習
• 二つの整数値を読込み、その差(最初の
値から後の値を引く)を出力せよ。
int main(void) {
int a, b, sa;
puts("二つの整数を入力せよ");
printf("a :"); scanf("%d", &a);
printf("b :"); scanf("%d", &b);
printf("差は%dです。\n", sa);
return(0);
}
6.変換指定子の補足(%c)
計算結果を文字として出力
printf("%c",15*2+18*4);
文字"%c"の代わりに
整数値(文字コード)に
対応する文字を出力
計算式
整数値を与える式
人間が読める文字
として表示する
計算結果 → 102
%c による変換
パソコンのメモリ内では
(102)10は(01100110)2
で表現されている
文字コードについて
2進数、10進数、16進数の変換
2進数
0000
0001
0010
0011
0100
0101
10進数
0
1
2
3
4
5
0
1
2
3
4
5
16進数
0110
0111
1000
1001
1010
1011
6
7
8
9
10
11
6
7
8
9
A
B
4ビットの場合
1100
1101
1110
1111
12
13
14
15
C
D
E
F
文字コードについて
文字コード:ASCIIコード表(200頁)
上位4ビット 下位4ビット
0000 0000
2進数
0110 0011
(0110 0011)2
16進数
10進数
6
3
~
0111 1111
(63)16
c
99
(99)10
128通り
演習
• 画面に、ASCIIコード表の77番目の文字
を表示するプログラムを作成せよ
#include <stdio.h>
int main(void)
{
printf(
);
return(0)
}
演習
• 次のプログラムの誤りを正せ
#include <stdio.h>
int main(void) {
printf("結果の文字は%cです\n",30*
5);
}
第2回P入門は終了です。
次回(第3回)は5月8日
続いて、P演習に入ります。
しばらく、休憩します。
5月1日は自宅研修日です。各
自で教科書を良く復習・予習して
おきましょう。