Document

第3回目 [4月27日、H.16(‘04)]
PE04-03.ppt
演算、整数型と浮動小数点型
本日のメニュー
1)前回の課題・宿題
2)ファイルサーバの利用
3)今日のポイント
(演算、整数と浮動小数点数)
4)今日の課題・提出・宿題
前回の課題
1)演習1-4、演習1-5 (p.13)、演習1-6、
演習1-7、演習1-8 (p.15)
を順に出力していくプログラムを作成せよ。
2)上の出力に続いて、次の値を順に見出付
きで出力せよ。(式をそのまま入れて良い)
1年は何秒か(24時間/日、60分/時間等)
ASCIIコード表の64番目の文字
ファイル名は en2-****.c
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
前回の提出
1)プログラムリスト(A4版用紙を縦に使う)
今日の課題の 1)、2)の順にできたところまで
のリストを印刷して提出する
(必ずA4版の用紙で提出すること)
2)aucopyで en2-****.c を転送する。
3)aucopyで en2-****.exe を転送する。
2)、3)共に必ず aucopy を使って転送すること
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
前回の宿題
(1)今日の課題を最後までやる。
(2)教科書第1章を良く復習する。
(1)について、授業中に提出できなかった
場合、提出した後に更に内容を追加した場
合は、オープン利用室から aucopy を使い
4月26日(月)午後1時までに
リスト印刷し提出、ファイル転送する。
リストはオープン利用室のレターケース
#include <stdio.h>
int main(void) {
int a, n1, n2, n3, wa;
printf("123456 朝日太郎\n");
/* (1)の課題 演習 1-4, 1-5 */
printf("整数を入力してください:");
scanf("%d", &a);
printf("その数に10を加えると%dです。"
, a+10 );
printf("整数を入力してください:");
scanf("%d", &a);
printf("その数から10を減じると%dです\n"
, a-10 );
/* (1)の課題 演習 1-6~1-8 */
puts("風\n林\n火\n山");
puts("二つの整数を入力してください");
printf("整数1:"); scanf("%d",&n1);
printf("整数2:"); scanf("%d",&n2);
printf("それらの積は%dです。\n",n1*n2);
puts("三つの整数を入力してください");
printf("整数1:"); scanf("%d",&n1);
printf("整数2:"); scanf("%d",&n2);
printf("整数3:"); scanf("%d",&n3);
wa = n1 + n2 + n3;
printf("それらの和は%dです。\n", wa);
return(0); }
#include <stdio.h>
同じ a の値を
int main(void) {
異なった変換指定で
int a;
出力する
printf("123456 朝日太郎\n");
/* (2)の課題 */
printf("1年は %d 秒です。\n",
365*24*60*60);
printf("ASCIIコードの64番目"
"は %c です。\n",64);
a = 64;
printf("ASCIIコードの%d番目"
"は %c です。\n", a, a);
return(0); }
提出について
◎プログラムについて
・ printf と puts の違い、\n の使い方
・学籍番号・氏名の出力が無い(減点!)
・変数宣言は main(void) { の直後に記述する
複数行でも可能、同じ変数名は1度だけ宣言
・scanf("%d",&n); の" "の位置、&の付け忘れ
・scanf,puts,printfの中、 " "は必ず1組
・かけ算は×ではなく * を使う
・文の最後は ; で終わる → ; の付け忘れ
・プログラム中の全角文字(" "の中以外は不可)
→ スペース(□),セミコロン(;)
提出について
◎プログラムリスト(印刷提出)について
・コメント、評価(A,B,C,….)を記入して返却する
・リストの印刷提出の無いファイル
→ 評価を記入する用紙が無い!→ 評価不可能
・リストは有るが、転送ファイルが無い
→ プログラムをチェックできない!→ 評価不可能
◎プログラムファイルの aucopy による提出
・ファイルを2回以上転送している(最新のもので評価)
・ファイル名が違う、転送フォルダーが違う(減点!)
[.Cを.exeに書き換えて転送→PC暴走の可能性あり]
・転送ファイルと印刷の中身が違う(減点!)
ファイルサーバー内のファイルの扱い
プログラムをFSに保存すると、
en2-****.c というファイルができる
→ FDにコピーし、aucopyで転送
コンパイル後にできるファイル
en2-****.obj → 消去可
en2-****.tds → 消去可
en2-****.exe
→ FDにコピーし、aucopy で転送
不要なファイル *.tds *.obj
は早めに消去すること。
演算子の分類(オペランド数による)
加減演算子
足算:+
引算:ー
乗除演算子
掛算:*
割算:/
単純代入演算子
代入:=
剰余:%
2項演算子:(オペランド)(演算子)(オペランド)
単項+-演算子
符号不変:+
符号反転:ー
(演算子)(オペランド)
整数と浮動小数点数
整数[変換指定子:%d]
誤差なく内部表現される 10進数 → 2進数に変換
表現範囲が狭い(せいぜい10桁)
小数点以下は無い ( … -2 -1 0 1 2 …)
short int : 2バイト(16ビット)
-32,768 ~ 32,767
int, long int : 4バイト(32ビット)
-2,147,483,648~2,147,483,647
unsigned int : 4バイト(32ビット)
0 ~ 4,294,967,295
整数と浮動小数点数
浮動小数点数[変換指定子:%f,%lf,%Lf]
指数と仮数による内部表現:123.4→0.1234×103
表現範囲が広いが、誤差を伴う(有効桁数は数桁)
小数点がある: 1.23 12. .56 1.2e2 5E15
[入力: %f、出力:%f ]
float : 4バイト
1.2×10-38 ~ 3.4×1038 [有効数字7桁]
double : 8バイト
[入力:%lf 、出力:%f ]
2.2×10-308 ~ 1.7×10308 [有効数字15桁]
long double : 10バイト [入力:%Lf 、出力:%Lf ]
3.4×10-4932 ~ 1.1×104932 [有効数字18桁]
今日の課題
(1)2つの整数を変数 a, b に入力し、a を
b で割った時の商と余りを出力せよ。
(2)演習2-1(20頁) 二つの整数を入力せよ。
a, b => 17 3
(3)演習2-2(21頁) 商は 5 です。
(4)演習2-3(27頁) 余りは 2 です。
(1)から(4)を一つのプログラムで実行する。
ファイル名は en3-****.c
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
今日の提出
1)プログラムリスト(A4版用紙を縦に使う)
今日の課題の (1)~(4)までで、できたところ
までのリストを印刷して提出する
(必ずA4版の用紙で提出すること)
2)aucopyで en3-****.c を転送する。
3)aucopyで en3-****.exe を転送する。
2)、3)共に必ず aucopy を使って転送すること
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
今回の宿題
4桁の数値=> 6542
◎キーボードから4桁の
千の位は 6
整数を入力し、それぞ
れの桁の数値を求めよ。 百の位は 5
[発展]続けて、各桁の値
の合計と平均を求めよ。
ファイル名:hw3-****.c
十の位は 4
一の位は 2
合計は 17
平均は 4.25
hw3-****.exe
• 締め切り: 5月8日(土) 午後1時
• リストの提出は、オープン利用室のレポート入れ
• aucopy でのファイル転送フォルダーは、
[森下伊三男]-[プログラミング演習]