include

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