C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室
本日の講義内容 おさらい C言語の基本 文字と数字 変数 アンケート テキスト やさしいC 第2版 高橋麻奈著 ソフトバンク 社
プログラミングのこつ 1.とにかく、手本をまねる 2.様々なテキストを参考にする 3.プログラムには、おまじないが 含まれていることを認知しておく 4.構文があることを悟る 5.とりあえず、1つの言語を修める
C言語をはじめよう ここまでのまとめ ○ プログラムはコンピュータに特定の仕事を付与 ○ ソースコードはエディタ(Mule)にて作成 ○ プログラムはコンピュータに特定の仕事を付与 ○ ソースコードはエディタ(Mule)にて作成 ○ ソースコードは英数半角を用いて作成 ○ ソースコードは大文字・小文字を区別して作成 ○ 実行ファイルはソースコードをコンパイルし作成 ○ 実行ファイルは指示した「仕事」を実行 % mule prog1.c % cc prog1.c % a.out
アンケート結果 質問および要望 1.ソースコードの意味も一緒に教えてほしい 2.エラーを指摘する文字列の意味がわからない 3.何をしているのかあまりわからない 4.もう少しスローペースで 5.「a.out」を実行する前に「cc prog1.c」が必要か? 6.コンパイルって何?
C言語の基本 /* コメント */ ← コメント文 #include <stdio.h> ← 画面出力に使用 /* コメント */ ← コメント文 #include <stdio.h> ← 画面出力に使用 main() ← main 関数の開始部 { printf(“△○×■\n”); ← 最初に実行 printf(“*%$#\n”); ← 次に実行 } ← main 関数の終了部 C言語は、main関数に記載された1文ずつ(処理の順)実行する。段落ごとにインデントを利用するとわかりやすい。またコメント文を記載するとコードの内容が理解しやすくなる。
文字と数値 % a.out A は文字です 文字と数値の型について 123は整数です 10.500000は小数です % #include <stdio.h> main() { printf(“%cは文字です\n”, ‘A’); ← 文字を出力 printf(“%dは整数です\n”, 123); ← 整数を出力 printf(“%fは小数です\n”, 10.5); ← 小数を出力 } %c Character 文字 %d Decimal 10進整数 %f Floating 小数
文字と数値 誤り例 % a.out A は文字です 107***は整数です 0.000000は小数です % #include <stdio.h> main() { printf(“%cは文字です\n”, ‘ABC’); ← 文字を出力 printf(“%dは整数です\n”, 123.5); ← 整数を出力 printf(“%fは小数です\n”, 10); ← 小数を出力 } 誤り例 型の不一致による誤り % a.out A は文字です 107***は整数です 0.000000は小数です %
文字と数値 2つ以上の文字または数値の出力 % a.out A は文字 123は整数 123は整数 10.500000は小数 % #include <stdio.h> main() { printf(“%cは文字 %dは整数\n”, ‘A’, 123); printf(“%dは整数 %fは小数\n”, 123,10.5); } % a.out A は文字 123は整数 123は整数 10.500000は小数 %
文字と数値 問題 以下の出力を実行するプログラムを作成してください。 % a.out 10+5.5=15.500000 問題 以下の出力を実行するプログラムを作成してください。 % a.out 10+5.5=15.500000 10-5.5=4.500000 10*5=50 10/4=2.500000 %
文字と数値 問題 以下の出力を実行するプログラムを作成してください。 % a.out 10+5.5=15.500000 問題 以下の出力を実行するプログラムを作成してください。 % a.out 10+5.5=15.500000 10-5.5=4.500000 10*5=50 10/4=2.500000 % #include <stdio.h> main() { printf(“%d+%f=%f\n”,10,5.5,10+5.5); printf(“%d-%f=%f\n”,10,5.5,10-5.5); printf(“%d*%d=%d\n”,10,5,10*5); printf(“%d/%d=%f\n”,10,4,10.0/4.0); } #include <stdio.h> main() { printf(“%d+%f=%f\n”,10,5.5,15.500000); printf(“%d-%f=%f\n”,10,5.5,4.500000); printf(“%d*%d=%d\n”,10,5,50); printf(“%d/%d=%f\n”,10,4,2.500000); } #include <stdio.h> main() { printf(“10+5.5=15.500000\n”); printf(“10-5.5=4.500000\n”); printf(“10*5=50\n”); printf(“10/4=2.500000\n”); }
文字と数値 まとめ ○ main()関数はC言語プログラムの本体 ○ 文は処理の最小単位 ○ コメントはプログラムのメモ書き ○ 文は処理の最小単位 ○ コメントはプログラムのメモ書き ○ 文字列の出力は「printf」 ○ C言語は、文字・文字列・数値を出力 ○ 文字は「‘ ’ 」 (シングルクォーテーション) ○ 文字列は「“ ”」 (ダブルクォーテーション)
変数 1 3 5 7 8 + = 1 3 5 7 8 3 1 7 5 8 数値や文字などを記憶しておく箱(メモリ) りんご (数値) 識別子 8個ほしいなぁ りんご (数値) 1 3 5 7 8 + = 識別子 (変数名) 記憶 (メモリ) 1 3 5 7 8 3 1 7 5 8
変数 1 3 5 7 8 識別子(変数名)をつける ○ 識別子は、英字・数字・‘_’ を用いて命名 記憶 (メモリ) 1 3 5 7 8 Address 10 20 30 40 50 識別子 BL PN OR WH GR ○ 識別子は、英字・数字・‘_’ を用いて命名 ○ 予約語(main, include・・・)は無効 ○ 数字の頭文字は不可 ○ 大文字・小文字は区別
変数 変数のデータ型 変数に記憶できる主な値は以下の通り! データ型 名前 値の範囲例 文字型 char 英数字1文字 データ型 名前 値の範囲例 文字型 char 英数字1文字 整数型 short int 整数 ±32768 int 長整数 ±2147483648 浮動小 float 単精度 3.4E±38 数点型 double 倍精度 1.7E±308
変数 浮動小数点型の特徴 浮動小 float 単精度 3.4E±38 数点型 double 倍精度 1.7E±308 可数部と指数部 float は、小数点以下7桁の可数部 doubleは、小数点以下15桁の可数部
変数 以下のソースコードをコーディングし実行しよう! #include <stdio.h> main() { int num; char c; float f; double db, dd; num = 3; c = ‘A’; f = 4.5; db = 5.5; dd = db; printf(“%cは文字 %dは整数\n”, c, num); printf(“%fは単精度\n %lf,%lfは倍精度浮動 小数\n”,f,db,dd); }
変数 % cc prog2.c % a.out Aは文字 3は整数 4.500000は単精度 以下のソースコードをコーディングし実行しよう! #include <stdio.h> main() { int num; char c; float f; double db, dd; num = 3; c = ‘A’; f = 4.5; db = 5.5; dd = db; printf(“%cは文字 %dは整数\n”, c, num); printf(“%fは単精度\n %lf,%lfは倍精度浮動 小数\n”,f,db,dd); } % cc prog2.c % a.out Aは文字 3は整数 4.500000は単精度 5.500000 5.500000は倍精度浮動小数 % /*変数宣言*/ /*変数入力*/
変数 以下のソースコードをコーディングし実行しよう! #include <stdio.h> main() { 変数の値の入れ替え int num; num = 3; printf(“最初のnum = %dです\n”,num); num = 5; printf(“次のnum = %dです\n”,num); } 変数の値の入れ替え
変数 % cc prog2.c % a.out 最初のnum = 3です 次のnum = 5です % 以下のソースコードをコーディングし実行しよう! #include <stdio.h> main() { int num; num = 3; printf(“最初のnum = %dです\n”,num); num = 5; printf(“次のnum = %dです\n”,num); } 変数の値の入れ替え % cc prog2.c % a.out 最初のnum = 3です 次のnum = 5です %
変数 誤り例 % a.out num= 3です % 以下のソースコードをコーディングしましょう! #include <stdio.h> main() { int num; num = 3.14; printf(“num = %dです\n”,num); } 誤り例 型の不一致による誤り % a.out num= 3です % 変数は宣言した型によって記憶できる値の種類が決まる。 整数値を格納する変数に小数値を代入すると、小数点以下 が切り捨てられる。
変数 キーボードからの数値入力 以下の「prog3.c」をコーディングしましょう! #include <stdio.h> main() { int num; printf(“整数を入力してください\n”); printf(“num = ”); scanf(“%d”, &num); printf(“%dが入力されました\n”,num); }
変数 1.気配りです! % cc prog3.c % a.out 整数を入力してください 2.問い合わせ num = 5 キーボードからの数値入力 以下の「prog3.c」をコーディングしましょう! #include <stdio.h> main() { int num; printf(“整数を入力してください\n”); printf(“num = ”); scanf(“%d”, &num); printf(“%dが入力されました\n”,num); } 1.気配りです! % cc prog3.c % a.out 整数を入力してください num = 5 5 が入力されました % Enter 2.問い合わせ 3.キーボード入力 された数値を 変数に代入
変数 以下の「prog3.c」をコーディングし実行しようう! #include <stdio.h> main() { float f; double df; printf(“単精度浮動小数を入力してください\n f=”); scanf(“%f”, &f); printf(“%fが入力されました\n”,f); printf(“倍精度浮動小数を入力してください\n df=”); scanf(“%lf”, &df); printf(“%lfが入力されました\n”,df); } 単精度浮動小数: %f 倍精度浮動小数: %lf
変数 キーボードからの文字入力 以下の「prog4.c」をコーディングし実行しよう! #include <stdio.h> main() { char c; printf(“文字を入力してください (英数字) \n”); printf(“c = ”); c = getchar(); printf(“%cが入力されました\n”,c); }
変数 1.気配りです! % cc prog4.c % a.out 文字を入力してください 2.問い合わせ c = a a が入力されました キーボードからの文字入力 以下の「prog4.c」をコーディングしましょう! #include <stdio.h> main() { char c; printf(“文字を入力してください (英数字) \n”); printf(“c = ”); c = getchar(); printf(“%cが入力されました\n”,c); } 1.気配りです! % cc prog4.c % a.out 文字を入力してください c = a a が入力されました % Enter 2.問い合わせ 3.キーボード入力 された文字を 変数に代入
変数 以下の「prog4.c」をコーディングし実行しよう! #include <stdio.h> main() { float f; double df; printf(“単精度浮動小数を入力してください\n f=”); scanf(“%f”, &f); printf(“%fが入力されました\n”,f); printf(“倍精度浮動小数を入力してください\n df=”); scanf(“%lf”, &df); printf(“%lfが入力されました\n”,df); } 単精度浮動小数: %f 倍精度浮動小数: %lf
文字と数値と変数 問題 以下の出力を実行するプログラムを作成してください。 % a.out あなたの性別を入力してください 問題 以下の出力を実行するプログラムを作成してください。 % a.out あなたの性別を入力してください 性別 (M/F) = M あなたの年齢を入力してください 年齢 (歳) = 21 あなたの身長を入力してください。 身長 (cm) = 160.5 ----------------------------------------------- あなたは、性別M・年齢21歳・身長160.5cmです! %
変数 まとめ ○ 変数は、値を格納する ○ 変数は、名前と型を指定して宣言する ○ 変数名は、識別子を使う ○ 変数は、値を格納する ○ 変数は、名前と型を指定して宣言する ○ 変数名は、識別子を使う ○ 変数に値を代入するときは‘=’を使う ○ 変数に新しい値を代入すると、値が入れ替わる ○ キーボードから数値を入力するときは「scanf 」 ○ キーボードから文字を入力するときは「 getchar 」
おわりに さて、問題です。 1. 「%c」 「%d」 「%lf」は何型でしょうか? 2. 「printf」は何? 1. 「%c」 「%d」 「%lf」は何型でしょうか? 2. 「printf」は何? 3. 「int」は何型の変数? 4. 「char」は何型の変数? 5. その他、質問など メールの本文に 氏名と学籍番号 を記載してください