Document

C言語
第3講
生物機能制御学講座 濱田
農学部7号館209室
1
本日の講義内容
•
•
•
•
お知らせ
おさらい
変数 テキスト Lesson 3
アンケート
2
アンケート結果
質問および要望
1.コメントって何?
2.コンパイルして意味不明のエラーがでる!
3.コンパイルとか専門用語がわからない?
4.コーディング中にmuleに意味不明の文字がでる!
5.小数点以下を整理できるか?
6.教科書の使い方は?
3
開発の手続き
プログラムの作成手順
キーワード
処理手順の流れを熟考
アルゴリズム・フローチャート
編集画面でソースコードを作成
コーディング・プログラミング
ソースコードをコンパイル
コンパイル (機械語へ翻訳)
ソースコードのエラーを駆除
デバッグ
プログラムの実行
a.out ・ エグゼ
% mule prog1.c
% cc prog1.c
% a.out 4
本講義の第1目標
汎用性の高い計算プログラムの開発
適用例:ミハエリスーメンテン式など
プログラムの処理内容
計算条件の入力
式の計算
計算結果の出力
キーワード
定数・係数・初期条件
printf
方程式・公式・四則演算
データ更新・結果表示 printf
5
文字と数値
文字と数値の型について
% 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
小数
6
文字と数値
まとめ
○
○
○
○
○
○
○
main()関数はC言語プログラムの本体
文は処理の最小単位
コメントはプログラムのメモ書き
文字列の出力は「printf」
C言語は、文字・文字列・数値を出力
文字は「‘ ’ 」 (シングルクォーテーション)
文字列は「“ ”」 (ダブルクォーテーション)
7
変数
数値や文字などを記憶しておく箱(メモリ)
必要な理由:汎用的なプログラムを開発する
りんご
(数値)
1
2
3
5
7
8個ほし
いなぁ
7
4
? ?
識別子
(変数名)
記憶
(メモリ)
+
2
1
3
= 6
8
7
5
4
7
6
8
?
8
変数
識別子(変数名)をつける
○
○
○
○
記憶
(メモリ)
1
3
5
7
Address
10
20
30
40
50
識別子
BL
PN
OR
WH
GR
8
識別子は、英字・数字・‘_’ を用いて命名
予約語(main, include・・・)は無効
数字の頭文字は不可
9
大文字・小文字は区別
変数
変数のデータ型
変数に記憶できる主な値は以下の通り!
データ型 名前
文字型%c char
整数型%d short int
int
浮動小%f float
数点型 double
値の範囲例
英数字1文字
整数
±32768
長整数 ±2147483648
単精度 3.4E±38
倍精度 1.7E±308
10
変数
浮動小数点型の特徴
浮動小 float
単精度 3.4E±38
数点型 double 倍精度 1.7E±308
float
double
: 0.1234567 E±38
: 0.123456789012345 E±308
仮数部と指数部
float は、小数点以下7桁の仮数部
doubleは、小数点以下15桁の仮数部
11
変数
以下のソースコードをコーディングし実行しよう!
#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);
}
12
変数
以下のソースコードをコーディングし実行しよう!
#include <stdio.h>
main()
{
%int
cc num;
prog2.c char c;
float f;
%double
a.out db, dd;
/*変数宣言*/
num = 3; 3は整数
c = ‘A’;
f = 4.5;
Aは文字
/*変数入力*/
db = 5.5; dd = db;
4.500000は単精度
printf(“%cは文字 %dは整数\n”, c, num);
5.500000 5.500000は倍精度浮動小数
printf(“%fは単精度\n %lf,%lfは倍精度浮動
%
小数\n”,f,db,dd);
}
13
変数
以下のソースコードをコーディングし実行しよう!
#include <stdio.h>
変数の値の入れ替え
main()
{
int num;
num = 3;
printf(“最初のnum = %dです\n”,num);
num = 5;
printf(“次のnum = %dです\n”,num);
}
14
変数
以下のソースコードをコーディングし実行しよう!
#include <stdio.h>
変数の値の入れ替え
main()
{
% a.out
int num;
最初のnum = 3です
num = 3;
次のnum = 5です
printf(“最初のnum = %dです\n”,num);
%
num = 5;
printf(“次のnum = %dです\n”,num);
}
15
変数
以下のソースコードをコーディングしましょう!
#include <stdio.h>
誤り例
main()
型の不一致による誤り
{
int num;
% a.out
num = 3.14;
num= 3です
printf(“num = %dです\n”,num);
%
}
変数は宣言した型によって記憶できる値の種類が決まる。
整数値を格納する変数に小数値を代入すると、小数点以下
16
が切り捨てられるか、コンパイルエラーとなる。
変数:キーボードからの入力
以下の「prog4.c」をコーディングし実行しよう!
/* キーボードからの数値入力 */
#include <stdio.h>
main()
{
int num;
printf(“整数を入力してください\n”);
printf(“num = ”);
scanf(“%d”, &num);
printf(“%dが入力されました\n”,num);
}
17
変数:キーボードからの入力
以下の「prog4.c」をコーディングし実行しよう!
/* キーボードからの数値入力 */
#include <stdio.h>
main()
1.気配りです!
% {cc prog4.c
% a.out
int num;
2.問い合わせ
整数を入力してください
printf(“整数を入力してください\n”);
3.キーボード入力
printf(“num
num
= 5 Enter = ”);
された数値を
scanf(“%d”, &num);
5 が入力されました
変数に代入
% printf(“%dが入力されました\n”,num);
18
}
変数:キーボードからの入力
以下の「prog4.c」をコーディングし実行しよう!
#include <stdio.h>
単精度浮動小数: %f
main()
倍精度浮動小数: %lf
{
float f; double df;
printf(“単精度浮動小数を入力してください\n f=”);
scanf(“%f”, &f);
printf(“%fが入力されました\n”,f);
printf(“倍精度浮動小数を入力してください\n df=”);
scanf(“%lf”, &df);
printf(“%lfが入力されました\n”,df);
}
19
変数:キーボードからの入力
以下の「prog4.c」をコーディングし実行しよう!
#include
<stdio.h>
%
cc prog4.c
単精度浮動小数: %f
main()
% a.out
倍精度浮動小数: %lf
{
単精度浮動小数を入力してください
float f; double df;
fprintf(“単精度浮動小数を入力してください\n
= 5.1234 Enter
f=”);
scanf(“%f”,
&f);
5.1234000
が入力されました
printf(“%fが入力されました\n”,f);
倍精度浮動小数を入力してください
printf(“倍精度浮動小数を入力してください\n
df=”);
df
= 10.98765 Enter
scanf(“%lf”, &df);
10.9876500
が入力されました
printf(“%lfが入力されました\n”,df);
%
}
20
変数:キーボードからの入力
以下の「prog4.c」をコーディングし実行しよう!
#include <stdio.h>
%5.3f: 仮数部小数点以下3桁
main()
数字表示可能桁5桁以上
{
float f; double df;
printf(“単精度浮動小数を入力してください\n f=”);
scanf(“%f”, &f);
printf(“%5.3fが入力されました\n”,f);
printf(“倍精度浮動小数を入力してください\n df=”);
scanf(“%lf”, &df);
printf(“%10.7lfが入力されました\n”,df);
}
21
変数:キーボードからの入力
以下の「prog5.c」をコーディングし実行しよう!
/*キーボードからの文字入力*/
#include <stdio.h>
main()
{
char c;
printf(“文字を入力してください (英数字) \n”);
printf(“c = ”);
c = getchar();
printf(“%cが入力されました\n”,c);
}
22
変数:キーボードからの入力
以下の「prog5.c」をコーディングし実行しよう!
/*キーボードからの文字入力*/
#include <stdio.h>
main()
1.気配りです!
% {cc prog5.c
% a.out
2.問い合わせ
char c;
文字を入力してください
printf(“文字を入力してください (英数字) \n”);
3.キーボード入力
c = printf(“c
a Enter = ”);
された文字を
c = getchar();
a が入力されました
変数に代入
% printf(“%cが入力されました\n”,c);
23
}
文字と数値と変数
問題 以下の出力を実行するプログラムを作成してください。
% a.out
あなたの性別を入力してください
printf
性別 (M/F) = M
scanf
あなたの年齢を入力してください
getchar
年齢 (歳) = 21
あなたの身長を入力してください。
身長 (cm) = 160.5
----------------------------------------------あなたは、性別M・年齢21歳・身長160.5cmです!
%
24
変数
まとめ
○
○
○
○
○
○
○
変数は、値を格納する
変数は、名前と型を指定して宣言する
変数名は、識別子を使う
変数に値を代入するときは‘=’を使う
変数に新しい値を代入すると、値が入れ替わる
キーボードから数値を入力するときは「scanf 」
キーボードから文字を入力するときは「 getchar 」
25
本講義の第1目標
汎用性の高い計算プログラムの開発
適用例:ミカエリスーメンテン式など
プログラムの処理内容
計算条件の入力
式の計算
計算結果の出力
キーワード
定数・係数・初期条件
printf scanf getchar
方程式・公式・四則演算
データ更新・結果表示
printf
26
次回の予定
○ 整数または小数の四則演算
(テキスト:Lesson4)
Michaelis-Menten’s Equationを
思い出しておいてください!
27
おわりに
• さて、問題です。
1. 変数の型を列記してください!
2. 「getchar」は何?
3. 「scanf」は何?
4. その他、質問など
28