プログラミング演習 初級編 2004年6月17日(木) 奈良先端科学技術大学院大学 情報科学研究科 猿渡 洋 斎藤 将人 新保 仁 変数を使う(1) #include <stdio.h> main() 型宣言 { int i; 代入演算 i = 2004; printf("This year is %d\n", i); } 変数を使う(2) #include <stdio.h> main() { 同じ型はコンマで区切って同時に宣言可能 int i, j; i = 2004; 代入演算 printf("This year is %d\n", i); j = i + 1; printf("Next year is %d\n", j); } データを読み込む #include <stdio.h> main() { int i, j; printf("What year is this?\n"); scanf("%d", &i); printf("This year is %d\n", i); j = i + 1; printf("Next year is %d\n", j); } 変数 i の値キーボード から得る (詳細は後ほど) 式と算術演算子 算術演算子 和差積: a + b a – b a * b 商: a / b 整数演算の商は小数点以下切り捨て 剰余: a % b 単項演算子 インクリメント(1増加): a++ ++a デクリメント(1減少): a-- --a 括弧:() 演習問題 演習1-1 キーボードから整数を2個,順に読み込んで, それらの 四則演算と剰余を出力するプログラムを作成せよ. 演算とデータ型(1) #include <stdio.h> main() { 出力結果は int x; どうなる? int y; x = 8; printf("diameter is %d\n", x); y = x * 3.1415926; printf("circumference is %d\n", y); } 演算とデータ型(2) #include <stdio.h> main() C言語では変数の型に { 注意が必要 double x; double y; x = 8.0; printf("diameter is %f\n", x); y = x * 3.1415926; printf("circumference is %f\n", y); } ここが%dの ままだと…? 演算とデータ型(3) #include <stdio.h> main() { int x; double y; x = 8; printf("diameter is %d\n", x); 異なる型との演算時には 型変換が行われる y = x * 3.1415926; printf("circumference is %f\n", y); } scanf: 書式付き入出力 整数(10進数) 不動小数点数 文字(一文字) 文字列 %d %f %c %s 出力形式、桁数などを細かく指定可能 (詳細は配布資料を参照) int, char double, float scanf でデータを読み込む #include <stdio.h> main() { double x; double y; printf("Enter diameter:\n"); scanf("%f", &x); 引数の前に「&」 printf("diameter is %f\n", x); y = x * 3.1415926; printf("circumference is %f\n", y); } 演習問題 演習1-2 センチメートルとインチの相互変換をするプログラムを 作成せよ. なお,1インチは2.54cmである. if 文(1):条件分岐 #include <stdio.h> main() { int i; printf("Type any number between 1 and 10.\n"); scanf("%d", &i); 条件式が真のときのみ 直後の1文を実行 if (i < 1) printf("%d is less than 1\n", i); printf("end of program\n"); } if 文(2):ブロック #include <stdio.h> {…} で複数の文をひとまとめ main() (ブロック)として扱える. { int i; printf("Type any number between 1 and 10.\n"); scanf("%d", &i); if (i < 1) { printf("%d is less than 1\n", i); printf("It’s too small!\n"); } printf("end of program\n"); 条件式が真のとき、{…} 内 } の文が順に実行される if 文(3):else #include <stdio.h> main() { int i; printf("Type any number between 1 and 10.\n"); scanf("%d", &i); if (i < 1) { printf("%d is less than 1\n", i); } else { printf("%d is greater than or equal to 1\n", i); } printf("end of program\n"); } 条件式が偽のときはこちらを実行 if 文(4):else if #include <stdio.h> main() { int i; printf("Type any number between 1 and 10.\n"); scanf("%d", &i); if (i < 1) { printf("%d is less than 1\n", i); } else if (i > 10) { printf("%d is greater than 10\n", i); } else { printf("%d is between 1 and 10\n", i); } } if 文(5):条件式 例 関係演算子 大小 < 数値の等値性 == (y % 4) == 0 非等値性 != (y % 4) != 0 && 例 (i >= 1) && (i <= 10) 論理演算子 論理積(かつ) 論理積(または) || 論理否定 ! > <= >= i > (j + 1) (i == 2) || (i == 4) !((i < 1) || (i > 10)) 演算子の優先順位に注意(詳細は資料を参照) 演習問題 演習1-3 整数を入力させ, その整数の符号が正か,負か,あ るいは0かを判定するプログラムを作成せよ. 演習1-4 タクシーの乗車距離から運賃を算出するプログラム を作成せよ. 料金表は次のとおり. 初乗り 2kmまで 以後加算 300mまでごとに 630円 80円 if 文:補足 if (式) 文1 else 文2 式が真の場合には文1を実行. 偽の場合文2を実行. 式の真偽,とは? #include <stdio.h> main() { if (0) printf("0\n"); if (1) printf("1\n"); if (2) printf("2\n"); } 条件式の真偽 式が真,とは "式の値が 0 でない" こと. したがって,たとえば == は厳密に言うと, 両辺の値が等しいときには 1,そうでないときに 0 を返す 演算子 #include <stdio.h> main() { int a; a = (2 == 1 + 1) printf("2==1+1? %d\n", a); printf("3==1+1? %d\n", 3 == 1 + 1); }
© Copyright 2024 ExpyDoc