210824 c言語基礎編①テキスト 永嶋 - meiji.ac.jp

70
C⾔語 基礎編① 明治⼤学 ⽣⽥メディア⽀援事務室 2021年8⽉

Upload: others

Post on 17-Mar-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

C⾔語 基礎編①

明治⼤学⽣⽥メディア⽀援事務室

2021年8⽉

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

⽬次

© Meiji University,All rights reserved.

1

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

1.C⾔語とは︖

© Meiji University,All rights reserved.

2

⼈間とコンピュータが命令をやり取りするための⾔語 ただ話しかけるだけではコンピュータに命令を出すことはできない

コンパイラ⾔語の⼀種 コンパイラ(プログラムを機械語に翻訳するソフト)が必要 処理速度が早い ハードウェアの制御(ex:モータを操る、ロボットを操る)でも⽤いられる

コンピュータの仕組みと結びつきが強い⾔語 ソフトウェア周りのことは基本何でもできる 頑張ればOS(Windows、iOSなどのこと)も作れる︕

1.C⾔語とは︖

© Meiji University,All rights reserved.

3

C⾔語でコンピュータに命令し、処理を任せよう︕

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

2.C⾔語プログラミングに必要なもの

© Meiji University,All rights reserved.

4

プログラミングの流れと必要なソフトウェア C⾔語で⾏いたい処理をプログラムに書く

▶ エディタ ⼈間が書いたプログラムを機械がわかるように翻訳(コンパイル)

▶ コンパイラ コンパイルしたファイルを実⾏

▶ Linux端末

操作に応じたソフトウェアが必要

2.C⾔語プログラミングに必要なもの

© Meiji University,All rights reserved.

5

C⾔語でプログラムを書くエディタ

コンパイル(翻訳)コンパイラ

実⾏Linux端末

エディタ︓プログラムを記述するソフトウェア Windowsでは「Notepad++、秀丸エディタ」 MacOSでは「CotEditor」 Linuxでは「Gedit、Emacs、Vim」以上が代表的かつおすすめのエディタだが、使ってみて⾃分の好みや使いやすさで選ぶのがベター

本講習会ではLinux環境で「Gedit」を使うコンパイラ︓プログラムを機械語に翻訳するソフトウェア

⼈間が書いたプログラムをコンピュータが理解できるように翻訳を⾏う GCCコンパイラ、BCCコンパイラなど、さまざまな種類がある コンパイルを⾏うと、実⾏ファイルが作成され、これを実⾏するとプログラムが動く

本講習会ではGCCコンパイラを使う

2.C⾔語プログラミングに必要なもの

© Meiji University,All rights reserved.

6

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

7

C⾔語のプログラムを書くエディタを開く3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

8

Step1︓エディタを起動アプリケーション>アクセサリ>テキストエディター

Linux端末を起動する3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

9

Step2︓Linux端末を起動アプリケーション>システムツール>端末

エディタを使⽤してC⾔語で⾏いたい処理をプログラムに書く3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

10

Step3︓エディタでC⾔語ファイルを編集

Step4︓編集出来たらC⾔語ファイルを保存(Ctrl + S)

テキストエディタを保存する3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

11

Step5︓ドキュメント内のフォルダに名前を付けて保存

コンパイラで⼈間が書いたプログラムを機械がわかるように翻訳3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

12

Step6︓保存したC⾔語ファイルをコンパイルして、実⾏ファイルを作成コマンド︓gcc 【保存したC⾔語ファイル名】.c –o 【実⾏ファイル名】

3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

13翻訳失敗(エラーメッセージ)

エラーメッセージが表⽰された場合、これらを修正してもう⼀度コンパイルする必要がある

Linux端末で実⾏ファイルを実⾏3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

14

Step7︓作成した実⾏ファイルを実⾏、実⾏結果を表⽰コマンド︓./【実⾏ファイル名】

Linux端末︓コマンド⼊⼒でコンピュータを操作するソフトウェア 今回はこのソフトウェアを⽤いてコンピュータに命令を出す(結果の出⼒もやってくれる) 例えば、「***.cをGCCコンパイラでコンパイルしてxxxという名前の実⾏ファイルを作って」 ↑の命令は「gcc ***.c –o xxx」と打ち込む(p12参照)

今回覚えてほしいコマンド 【gcc ***.c –o xxx】︓gccというコンパイラで、「***.c」というC⾔語ファイルをコン

パイルし、「xxx」という実⾏ファイルを作成 【./xxx】︓「xxx」という実⾏ファイルを実⾏ その他、【ls】(現在のフォルダにあるファイルの⼀覧を表⽰)や【cd】(指定のフォルダへ移

動)などLinux端末の基本操作に関するコマンド

3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

15

細かいTips ⽂字は基本的に半⾓英数字で⼊⼒する

▶ ファイル名、C⾔語プログラム、コマンドの⽂字は半⾓英数字が基本→ファイル名には半⾓⽂字でも¥ / ︓ * ︖ ” < > |などの記号は使えない

▶ 全⾓で⼊⼒するとエラーや⽂字化けの原因になるので注意▶ 本講習会はわかりやすいようにC⾔語プログラムに全⾓⽂字(⽇本語)が登場する

場⾯があるが本来はやや問題のある書き⽅のため、普段は英語で書くこと推奨 ファイル名はその内容が分かるようにつける

▶ 半⾓英数字なら何でもいいわけではなく、ファイル名から⼀⽬でどのようなファイルかわかるように命名する

エラーメッセージをよく⾒て、表現に慣れる▶ エラーメッセージは「どこの⾏が」「どのように」おかしいのか具体的に教えてくれるため、

積極的に利⽤してエラーを修正する

3.各ソフトウェアの詳細とプログラミングの流れ

© Meiji University,All rights reserved.

16

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

4.C⾔語の3つのフロー

© Meiji University,All rights reserved.

17

4.C⾔語の3つのフロー

© Meiji University,All rights reserved.

18プログラムの流れ(フロー)は主に次の3つ 上から順に(C⾔語 基礎編①で扱う) 場合分け( C⾔語 基礎編②で扱う) 繰り返し( C⾔語 基礎編②で扱う)

上から順に プログラムの上から書いてある順番通りに処理を⾏う

ex:テストを設問1から順番に解いていく

4.C⾔語の3つのフロー

© Meiji University,All rights reserved.

19

処理ex:計算、回答の記⼊

場合分け 条件判断の基準に従って異なった処理を⾏う

ex:信号機の⾊が⻘なら発進、⾚なら停⽌

4.C⾔語の3つのフロー

© Meiji University,All rights reserved.

20

条件ex:信号の⾊は︖

処理ex:発進

処理ex:停⽌

青の場合 赤の場合

繰り返し 指定された開始地点から終了地点まで同じ処理を⾏う

ex:100マス計算

4.C⾔語の3つのフロー

© Meiji University,All rights reserved.

21

処理ex: (a x b) の計算 (10 x 10回まで)

a = 1,2,…10b = 1,2,…10

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

22

C⾔語プログラムの全体像(例)5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

23

おまじない5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

24

“おまじない”としてとりあえず暗記(今⽇は扱わない)

C⾔語プログラムの全体像5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

25

今回の講習会ではここの部分を解説

テーマ1︓表⽰を⾏う 「hello, world!」と表⽰するC⾔語プログラム

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

26

以降のページから解説 ファイル名︓hello_world.c

関数 C⾔語における関数

▶ ある⼊⼒に対して、規則に従った処理を⾏い、出⼒を返す▶ C⾔語では、関数の⼊⼒を「引数(ひきすう)」、出⼒を「戻り値(返り値)」という

→引数には変数や⽂字列が含まれる▶ ⾃作することもできる(詳しくは基礎編③で)

関数呼び出し(関数を使いたいときは︖)▶ 関数を使⽤することを「関数呼び出し(function call)」という▶ 関数呼び出しは⼀般的に以下のように書く

関数名(引数);

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

27

テーマ1︓表⽰を⾏う printf関数

▶ ⼊⼒された⽂字列を表⽰(出⼒)する関数▶ ⾃作せずとも、おまじない(#include<stdio.h>)を書くだけで使⽤できる▶ 「\n」は改⾏⽂字といい、改⾏を意味する

→printf内でenterを押して改⾏しても実⾏結果は改⾏してくれない▶ 今回は引数が「”hello, world! \n”」なので以下のように関数呼び出しを⾏う

(表⽰させたい⽂字列をダブルクォーテーション(” ”)で囲うことに注意)

関数名 引数 改⾏⽂字

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

28

※バックスラッシュ (\) の⼊⼒は 「Back Space」の左

or 「Shift」の左

(JISコードでは「\」ではなく「¥」と表⽰される)

テーマ1︓表⽰を⾏う 「hello, world!」と表⽰させるプログラムを作成する

▶ とりあえずプログラムを書いて、実⾏させてみる▶ 最初は既存のプログラムを丸ごと写して実⾏し、理解することが⼤事

具体的な⼿順▶ Step1︓エディタとLinux端末を起動【p8、p9参照】▶ Step2︓エディタでC⾔語ファイルを編集(p26を丸写し)【p10参照】▶ Step3︓編集出来たら保存【p10、p11参照】▶ Step4︓C⾔語ファイルをコンパイルして、実⾏ファイルを作成【p12参照】▶ Step5︓作成した実⾏ファイルを実⾏【p13、p14参照】▶ Step6︓「hello, world」と表⽰されているか確認

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

29

テーマ1︓表⽰を⾏う 実⾏結果(p26のhello_world.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

30

「hello, world!」と表⽰されていればOK

細かいTips ファイル名はわかりやすく

▶ 今回は「hello, world!」と表⽰させるため、C⾔語ファイル名も実⾏ファイル名もそれぞれ「hello_world.c」、「hello_world」のようにするのがよい

よくあるエラーの原因▶ スペースを全⾓で⼊⼒してしまった

スペースは⾒た⽬でどこにあるか、わかりづらいため、半⾓で書くことを⼼掛ける▶ セミコロン(;)を⼊⼒し忘れてしまった

セミコロンは⽂の終わりには必ず書いておく(⽇本語の句点に相当)これがないと⽂が終わったとみなされず、エラーになってしまう

▶ その他、綴りの間違いpritnf(誤) ⇒ printf(正)<studio.h>(誤) ⇒ <stdio.h>(正)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

31

テーマ2︓変数の表⽰ 変数に値を代⼊し、表⽰するプログラム

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

32

以降のページから解説 ファイル名︓variable.c

変数 変数

▶ 数値や⽂字を保存するための仮想的(バーチャル)な箱▶ C⾔語では、変数に数値や⽂字を保存して利⽤する場⾯が多く存在する

変数の宣⾔(変数を使いたいときは︖)▶ 変数を使⽤するには「宣⾔」という⼿続きが必要【箱を⽤意する】▶ 変数の宣⾔は⼀般的に以下のように書く

変数の型 変数名; 変数の型

▶ 変数には「型」が存在し、変数の性質【箱の形や⼤きさ】を表す▶ 変数の宣⾔時に決める必要がある

変数名▶ 変数の名前【箱の名前】であり、役割が⼀⽬でわかるように名前をつける

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

33

箱の名前(変数名)

テーマ2︓変数の表⽰ 符号付き整数型変数の宣⾔「int」

▶ 「符号付き(正負どちらも表せること)の整数」を保存する変数の型を意味する▶ 符号付き整数で宣⾔された変数(今回は「a」)を「int型変数」と呼ぶ▶ 符号付き整数型変数を宣⾔するときは、以下のように書く▶ 変数名は半⾓英数字かつ⼩⽂字が基本

変数の型 変数名

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

34

符号付き整数とは逆に、符号なし整数も存在する符号なし整数型は負の数が表現できない代わりに、表現できる値の最⼤値が符号付きの約2倍となる

テーマ2︓変数の表⽰ printf関数に引数が2つ存在する場合

▶ 関数内に複数の引数があるとき、各引数はカンマ(,)で区切る▶ 1つ⽬の引数を「第1引数」、2つ⽬の引数を「第2引数」という▶ 第1引数は前回と同様、ダブルクォーテーションで囲う▶ 第2引数は変換指定⼦に表⽰したい変数をそのまま書く

変換指定⼦「%d」▶ 「続く引数を”整数を10進数”で表⽰せよ」という変換指定を意味する▶ 今回は、「a」という変数に保存した数値を10進数に変換して%dの位置に表⽰する

第1引数 第2引数 10進数の変換指定⼦

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

35

テーマ2︓変数の表⽰ 具体的な⼿順

▶ Step1︓エディタとLinux端末を起動【p8、p9参照】▶ Step2︓エディタでC⾔語ファイルを編集(p32を丸写し)【p10参照】▶ Step3︓編集出来たら保存【p10、p11参照】▶ Step4︓C⾔語ファイルをコンパイルして、実⾏ファイルを作成【p12参照】▶ Step5︓作成した実⾏ファイルを実⾏【p13、p14参照】▶ Step6︓保存した変数aの値が表⽰されているか確認

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

36

テーマ2︓変数の表⽰ 実⾏結果(p32のvariable.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

37

このように表⽰されていればOK

テーマ3︓整数値を読み取って表⽰ 整数値を読み取ってその値の表⽰を⾏うプログラム

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

38

以降のページから解説 ファイル名︓num_read.c

テーマ3︓整数値を読み取って表⽰ scanf関数

▶ キーボードからの読み取り(⼊⼒)を⾏う関数▶ 第1引数は読み取る数値の変換指定⼦をダブルクォーテーションで囲う▶ 第2引数は読みとった数値を保存するための変数を書く▶ ↑のとき、変数の前にアンド(&)をつける必要がある▶ 今回は「キーボードから⼊⼒された変数を10進数で読み取ってaに保存する」ので

以下のように関数呼び出しを書く

関数名 第1引数 第2引数

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

39

テーマ3︓整数値を読み取って表⽰ 具体的な⼿順

▶ Step1︓エディタとLinux端末を起動【p8、p9参照】▶ Step2︓エディタでC⾔語ファイルを編集(p38を丸写し)【p10参照】▶ Step3︓編集出来たら保存【p10、p11参照】▶ Step4︓C⾔語ファイルをコンパイルして、実⾏ファイルを作成【p12参照】▶ Step5︓作成した実⾏ファイルを実⾏【p13、p14参照】▶ Step6︓「整数を⼊⼒してください︓」と表⽰されたら、好きな整数を⼊⼒▶ Step7︓⼊⼒した整数値が表⽰されることを確認

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

40

テーマ3︓整数値を読み取って表⽰ 実⾏結果(p38のnum_read.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

41

実⾏ファイルを実⾏すると、「整数を⼊⼒してください︓」と表⽰される

テーマ3︓整数値を読み取って表⽰ 実⾏結果(p38のnum_read.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

42

例として、120を⼊⼒しエンターを押すと「あなたの⼊⼒した整数は120です」と表⽰されるこのような画⾯になっていればOK

細かいTips 変数名はわかりやすく

▶ 例では、「a」という変数名を⽤いているが本来は望ましいとは⾔えない▶ その変数の役割が⼀⽬でわかるように名前をつける▶ 今回の場合、数値を格納する変数なので

数字を意味する「num」や「no」などの名前にするとよい よくあるエラーの原因

▶ scanf関数の第2引数のアンド(&)を⼊⼒し忘れてしまったコンパイル時エラーメッセージが表⽰されないエラーメッセージが表⽰されないにもかかわらずプログラムがうまく実⾏されないため注意

▶ 引数の区切りのカンマ(,)を⼊⼒し忘れてしまった今回は関数の引数が2つあるので注意

▶ その他、改⾏⽂字などの⼊⼒忘れに注意

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

43

テーマ4︓整数値を読み取り、四則演算を⾏う 2つの整数値を読み取り、四則演算すべてを⾏うプログラム

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

44

以降のページから解説 ファイル名︓four_calc_int.c

演算⼦ 演算⼦

▶ 演算の機能を持った記号▶ ここでいう演算は四則演算だけでなく、論理演算(ANDやOR)や⼤⼩⽐較(<、>)など多くの機能を含み、C⾔語には多くの演算⼦が存在する

▶ 本講習会では、その中でも基本の5つを学習する▶ 四則演算の演算⼦▶ 記号は「+(⾜し算)」、「-(引き算)」、「*(掛け算)」、「/(割り算)」

代⼊演算⼦▶ 記号は「=」▶ 数学の場合のように「等しい」という意味ではなく、「代⼊」を意味することに注意

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

45

テーマ4︓整数値を読み取り、四則演算を⾏う 演算⼦を⽤いて数値計算、代⼊を⾏う

▶ 前ページで学習した演算⼦は例えば以下のように⽤いる

▶ 演算⼦には演算の順番に優先順位があり、 * / > + - > = の順位▶ したがって、上記の例では必ず四則演算が⾏われてから代⼊が⾏われる▶ ↑のことは感覚としては当たり前に感じるかもしれないが、重要なので意識する

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

46

int型変数aとbを⾜し算して、int型変数addに代⼊

int型変数aからbを引き算して、int型変数subに代⼊

int型変数aとbを掛け算して、int型変数mulに代⼊

int型変数aをbで割り算して、int型変数divに代⼊

細かいTips printf関数の引数が複数個存在する場合

▶ それぞれの変換指定⼦と第2引数は、以下のように対応関係にある

(-)演算⼦についてよくある間違い▶ a-bは”aからbを減じた値”を求める▶ aとbの差の絶対値を求めるわけではないことに注意(3-5を⾏うと”-2”が出⼒)

(/)演算⼦についてよくある間違い▶ バックスラッシュ(\)と間違えないように注意

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

47

細かいTips 複数個の変数を宣⾔する場合

▶ 各変数間をカンマ(,)で区切る▶ 変数の数が多い場合は、”その役割ごとに”数段に分けて書くとわかりやすくてよい▶ 具体的には、以下の例のように宣⾔する

変数の型 変数名

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

48

役割︓キーボード⼊⼒の値を保存する役割︓各計算結果を保存する

テーマ4︓整数値を読み取り、四則演算を⾏う 具体的な⼿順

▶ Step1︓エディタとLinux端末を起動【p8、p9参照】▶ Step2︓エディタでC⾔語ファイルを編集(p44を丸写し)【p10参照】▶ Step3︓編集出来たら保存【p10、p11参照】▶ Step4︓C⾔語ファイルをコンパイルして、実⾏ファイルを作成【p12参照】▶ Step5︓作成した実⾏ファイルを実⾏【p13、p14参照】▶ Step6︓「整数aを⼊⼒してください︓」と表⽰されたら、好きな整数を⼊⼒▶ Step7︓「整数bを⼊⼒してください︓」と表⽰されたら、好きな整数を⼊⼒▶ Step8︓すべての四則演算の結果が正しく表⽰されているかどうか確認

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

49

テーマ4︓整数値を読み取り、四則演算を⾏う 実⾏結果(p44のfour_calc_int.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

50

実⾏ファイルを実⾏すると、「整数aを⼊⼒してください︓」と表⽰される

テーマ4︓整数値を読み取り、四則演算を⾏う 実⾏結果(p44のfour_calc_int.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

51

整数aに値を⼊⼒すると、「整数bを⼊⼒してください︓」と表⽰される

テーマ4︓整数値を読み取り、四則演算を⾏う 実⾏結果(p44のfour_calc_int.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

52

変数a、bに整数値が⼊⼒されると、四則演算の結果が表⽰される“すべての”演算結果が正しいかどうか確かめる

※整数の割り算については割り切れない場合、⼩数点以下切り捨てとなる

テーマ5︓実数値を読み取り、四則演算を⾏う 2つの実数値を読み取り、四則演算すべてを⾏うプログラム

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

53

以降のページから解説 ファイル名︓four_calc_float.c

テーマ5︓実数値を読み取り、四則演算を⾏う 実数型変数の宣⾔「float」

▶ 実数を保存する変数の型▶ 実数で宣⾔した変数(今回はaやaddなど)を「float型変数」と呼ぶ▶ 実数型変数を宣⾔するときは、以下のように書く▶ 変数名は半⾓英数字かつ⼩⽂字が基本

変数の型 変数名

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

54

テーマ5︓実数値を読み取り、四則演算を⾏う int型変数とfloat型変数の違い

▶ int型は整数値だけしか保存できない(⼩数部は切り捨てされてしまう)▶ float型は実数値が保存できる(⼩数まで扱うことができる)

テーマ4の商の計算例では…

float型だけ使えばよいように思えるが、int型にも利点があり、float型には相応の⽋点があるので⼀⻑⼀短であることを押さえておく

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

55

int型の箱(変数)

3/5=0.6

0

代入

float型の箱(変数)0.6

3/5=0.6代入

テーマ5︓実数値を読み取り、四則演算を⾏う float型の変換指定⼦

▶ int型の場合はprintf関数、scanf関数ともに「%d」だった▶ float型の場合はともに「%f」で記述する

具体例では、以下のように記述している

変換指定⼦

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

56

テーマ5︓実数値を読み取り、四則演算を⾏う 具体的な⼿順

▶ Step1︓エディタとLinux端末を起動【p8、p9参照】▶ Step2︓エディタでC⾔語ファイルを編集(p53を丸写し)【p10参照】▶ Step3︓編集出来たら保存【p10、p11参照】▶ Step4︓C⾔語ファイルをコンパイルして、実⾏ファイルを作成【p12参照】▶ Step5︓作成した実⾏ファイルを実⾏【p13、p14参照】▶ Step6︓「実数aを⼊⼒してください︓」と表⽰されたら、好きな実数を⼊⼒▶ Step7︓「実数bを⼊⼒してください︓」と表⽰されたら、好きな実数を⼊⼒▶ Step8︓すべての四則演算の結果が正しく表⽰されているかどうか確認

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

57

テーマ5︓実数値を読み取り、四則演算を⾏う 実⾏結果(p53のfour_calc_float.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

58

実⾏ファイルを実⾏すると、「実数aを⼊⼒してください︓」と表⽰される

テーマ5︓実数値を読み取り、四則演算を⾏う 実⾏結果(p53のfour_calc_float.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

59

実数aに値を⼊⼒すると、「実数bを⼊⼒してください︓」と表⽰される

テーマ5︓実数値を読み取り、四則演算を⾏う 実⾏結果(p53のfour_calc_float.c)

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

60

変数a、bに実数値が⼊⼒されると、四則演算の結果が表⽰される“すべての”演算結果が正しいかどうか確かめる

※float型では出⼒される際に⼩数点以下6桁まで表⽰される

細かいTips コメントアウトを記⼊してみる

▶ 他⼈にとってわかりやすいプログラムにするために処理の内容をコメントで残す▶ コメントをスラッシュ(/)とアスタリスク(*)を⽤いて囲う

(//をコメントの前に置くことで、直後から⾏末までがコメントアウト可能だが、複数⾏に跨ぐことはできない)

▶ ↑のようにすると、その内容がプログラムに影響しなくなる▶ 以下は、テーマ4のプログラムの後半にコメントを残してわかりやすくした例

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

61

「/*」でコメントの始まり「*/」でコメントの終了/* コメントはこのように

複数行でもOK */

5.C⾔語の3つのフロー(上から順に)

© Meiji University,All rights reserved.

62細かいTips(データ型とprintf・scanf変換指定⼦)種類 型名 サイズ

(バイト)値の範囲 scanf

変換指定⼦printf変換指定⼦

⽂字型 char 1 -128 〜 127 %c(⽂字で⼊⼒) %c(⽂字で出⼒)

整数型 short int 2 -32768 〜 32767 %hd(整数を10進数として⼊⼒)

%d(整数を10進で出⼒)

整数型 int 4 -2147483648 〜2147483647

%d(整数を10進数として⼊⼒)

%d(整数を10進で出⼒)

実数型 float 4 1.175494 10-38〜3.402823 10+38

(10進数なら7桁)

%f(浮動⼩数点数(float型)で⼊⼒)

%f(浮動⼩数点数で出⼒)

実数型 double 8 2.225074 10-308 〜1.797693 10+308

(10進数なら15桁)

%lf(浮動⼩数点数(double型)で⼊⼒)

%f(浮動⼩数点数で出⼒)

同じ型でも、scanfとprintfで変換指定子が異なる場合もあるので注意が必要 この他にも、8進数や16進数で入出力するなど多様な変換指定子がある

1. C⾔語とは︖2. C⾔語プログラミングに必要なもの3. 各ソフトウェアの詳細とプログラミングの流れ4. C⾔語の3つのフロー5. C⾔語の3つのフロー(上から順に)

• テーマ1 表⽰を⾏う• テーマ2 変数の表⽰• テーマ3 整数値を読み取って表⽰• テーマ4 整数値を読み取り、四則演算を⾏う• テーマ5 実数値を読み取り、四則演算を⾏う

6. まとめの演習• 演習1• 演習2

6.まとめの演習

© Meiji University,All rights reserved.

63

演習1 ⼆つの実数値を読み込んで、前者の値が後者の何%であるかを実数で

表⽰するプログラムを作成

Hint▶ printf関数、scanf関数を⽤いて、⼆つの実数値の⼊⼒を⾏う

6.まとめの演習

© Meiji University,All rights reserved.

64

実⾏結果

演習2 ⼆つの実数値を読み込んで、その平均値を表⽰するプログラムを作成

Hint▶ printf関数、scanf関数を⽤いて、⼆つの実数値の⼊⼒を⾏う▶ 平均値は、実数値の和/⾜した数

6.まとめの演習

© Meiji University,All rights reserved.

65

実⾏結果

プログラムの流れ(フロー)は主に次の3つ 上から順に(C⾔語講習会①で扱う) 完了 場合分け( C⾔語講習会②で扱う) 未完了 繰り返し( C⾔語講習会②で扱う) 未完了

まとめ

© Meiji University,All rights reserved.

66

お疲れさまでしたC⾔語①はこれで終了です︕

さあ次はC⾔語②を受講しましょう︕

新版 明解C⾔語 ⼊⾨編(ソフトバンククリエイティブ株式会社)

参考資料

© Meiji University,All rights reserved.

67

以上

演習1の解答 ⼆つの実数値を読み込んで、前者の値が後者の何%であるかを実数で

表⽰するプログラムを作成

演習の解答

© Meiji University,All rights reserved.

68

演習2の解答 ⼆つの実数値を読み込んで、その平均値を表⽰するプログラムを作成

演習の解答

© Meiji University,All rights reserved.

69