_Ó&J 1;'UShÎÌÁ»¾ÂÔ_Ò^ÍD«/
_Ð&CprÉÅËÂt«
1. 8Nz
2. if - else B
3. QwSb
4. else - if ¹V *1
5. if B«·,
6. uUSb
7. switch B
8. D«fh%

_Ð&CprÉÅËÂttÔ J -¹V ÄÊ½ÈÆ¹ =¶64Ô ÄÊ½ÈÆ¡¹?¶«¦¬©ÎÄÊ½
ÈÆ«sE¹G§Ï.kdK¹»ÇÄ¿Ç¥v¶§Ï%Ô Á»¾Â pp.8082 «fh%´Ð¤ ¹{º¦a©Ô ¼È¾ª³£¥M¶

1. 8Nz B¬g·ª.k·¶

 ´ #k¦·­Î2´ 8Nzª³£¥ÎJ1²9¹©§

¦¶
J 1
if - else BÎswitch B9
forBÎwhileB2. if - else B
T : ZÌJ =]ÍF : ÌJ =]Í

*'lfk:]^\[<
&,3&:]^\[
<
 J

J 4

T

F
ÃÊÀ¼B

ÃÊÀ¼A

4=µ]¥­ÃÊÀ¼Õ¹Î=µ] ©·­ÃÊÀ¼Ö¹.k
 ÃÊÀ¼¬B¦±mB¦±i   ¬YWiif - else B« V
*.$,5%&34%*/ )
sqrt~@¹  °ª:n
*.$,5%&-"4) )
*.4-"*.*.4"2($ $/.34$)"2"2(6 !:%/5#,&8
%/5#,&9J 4
02*.4'8
3$".',' 8J =µ]¤
*'8 :
("ª.k·02*.4'zRSPdhPFUKZ=.
¶|
<
&,3&:J =µ]
931248©("ª.k02*.4'3124''=. 8 9·¶|
<2&452. <3. QwSb J

4«ª¬ÎQwSb²uUSb¹G
Sb,







<$
2x
2x
2x
2x
2x
2x

x³µ0
x 
x³µ+x x§`
x§`©`!¹¤e¶

QwSb«2x x «<$*'"(& :02*.4'/5-"9%2*.+",$/)/,*$#&6&2"(& <&,3&:
>02*.4'/5-534./4%2*.+",$/)/,*$#&6&2"(& <

4. else - if ¹V *1*'lfkC:]^\[<&,3&*'lfkD:]^\[<
&,3&:]^\[<
ÃÊÀ¼AÎÃÊÀ¼BÎÃÊÀ¼C«¢Î·1¤.k
·¶Ï

J 4Ð

T

F
J 4Ñ
F
ÃÊÀ¼C

ÃÊÀ¼A
T
ÃÊÀ¼B

*1«
*.$,5%&34%*/ )
*.4-"*.*.4"2($ $/.34$)"2"2(6 !:*.4"02*.4'x}Yw|IOGNHE@3$".'% "*'":02*.4'qm{c`=.
A
<&,3&*'":02*.4't?go{c `=. B<&,3&:
C
02*.4'ib{c `=.
<2&452. <«¢«Ð¤.k·¶

5. if B«·,
 if - else B«ÃÊÀ¼«ªif - else B¹qy¥±N¸©*'lfkC:*'lfkD:]^\[
<]^\[<&,3&:
]^\[
<

J 4Ð

F

T
J 4Ñ

F
ÃÊÀ¼C

ÃÊÀ¼B

T
ÃÊÀ¼A

6. uUSb ZÎª~¶uUX©Sb¹kÏ

Sb,

<$

A B;;

A



 B

A 
A²B¬J 4¦¶

QwSb§uUSb«c¯"¸uUSb,

Í*'-;;-:99–
-- 
<

QwSb,
m  1 ® ¬ m  2 «Fªµ.kI«H7«D¹l[¶ÄÊ½ÈÆ
*.$,5%&34%*/ )
w|IMeSvnYyjJW *.4-"*.*.4"2($ $/.34$)"2"2(6 !:*.4-/.4) %"9302*.4'vnYsVMEeTA
3$".'% -/.4)
*'-/.4): eSQF 
%"93
<&,3&*'-/.4);;-/.4);;-/.4);;-/.4):    eSQF 
%"93 <&,3&: LX_aSeSQF 
%"93
<02*.4'%eT%vPJ=. -/.4) %"93
2&452. <7. switch B
37*4$)lfk:
$"3&unkC@]^\[
$"3&unkD@]^\[
%&'"5,4@]^\[< J

4-@4§j¶("Î«7«ÃÊÀ¼¹ break ® ¬<T·¶®¦.k ÃÊÀ¼¬B¦±mB¦±i ¨«case ª±5¥¬®´©("¬Îdefault¹.kÌYW±iÍswitch B« V
*.$,5%&34%*/ )
*.4-"*.*.4"2($ $/.34$)"2"2(6 !:*.4"02*.4'prIOGNHE=.
02*.4'=4qmB=.=4t?goB=.=4ibB=.=4=4@3$".'% "37*4$)":$"3&02*.4'qm{c`=.
#2&"+
$"3&02*.4't?go{c `=.
#2&"+
%&'"5,402*.4'ib{c `=.
<2&452. <I«H7«D¹l[¶ÄÊ½ÈÆÌÑÍ
*.$,5%&34%*/ )
w|IMeSvnYyjJW *.4-"*.:
93
*.4-/.4) %"93
YsVMEeTA02*.4'vnYsVMEeTA-/.4)
3$".'% -/.4)
:37*4$)-/.4):
>>$"3&>>$"3&>>$"3&>>$"3&>>$"3&>>$"3& >>$"3& %"93
#2&"+

$"3& 
$"3&$"3&
$"3& 

$"3& 
$"3&$"3&$"3&
%"93%"93
#2&"+>>#2&"+
$"3& 
$"3&>>%"93>>%"93
#2&"+>>#2&"+
%&'"5,4%&'"5,4<<
02*.4'%eT
02*.4'%eT%vPJ 
-/.4) %"93-/.4)<<8. D«fh%
Level

%

C

1¤«A@  ¹l[¶ÄÊ½ÈÆ¹ =³CÐ¤«A@¹¶§Î«3CL¹l[¶ÄÊ½ÈÆ¹ =³BÁ»¾Â p.81 «fh%« 3 «ÄÊ½ÈÆ¹=³

A

Á»¾Â p.81 «fh%« 9 «ÄÊ½ÈÆ¹=³

D«fh%ÌÑÍ ÑOC\4ax2 + bx + c = 0 «o¹R°¶ÄÊ½ÈÆ

¹ µ©
 }o¹Pl[© .@o¹> ©("¬.@o©§l[©Ì4b2 - 4ac «¦J 1¶Í oÑ¤¶«¦Î)@x1§x2ª¹ ¶ 2OC\4«o«4¬«§µb + b 2  4ac
x1 =2ab  b 2  4ac
x2 =
2a

第9回
算術式の計算情報処理演習（テキスト：第３章，第５章，第６章）

今日の内容変数
2. 代入
3. 関数（システム関数）
4. 標準出力関数 printf()
5. 標準入力関数 scanf()
1.

6.

Xcode統合環境の使い方（２）

7.

今日の課題

1. 変数 変数

 データ（数値や文字）を入れるもの（箱） 変数名（識別子：identifier）

 英数字かアンダーバー（_）で作られる
 数字は最初の文字に使えない 大文字と小文字を区別する

例：• 箱には名前が付いている

5• 箱には値を入れることができるi
変数 i• 箱はメモリ上のどこかに作られるメモリ変数名をつける際の注意点
 変数名（識別子：identifier）

 混同しにくい名前（識別子）を使う
 変数の意味を正確に伝える名前を使う 短すぎる名前はよくない 長すぎる名前もよくない
前ページの例よりわかりやすい• baseは底辺、heightは高さ• 変数の用途が名前からわかる

例：

5

8
height

base
メモリ

数の表現

（テキスト19ページ）

1ビット(bit)= 0か1かという2つの状態を表す情報量= 0か1かが入る箱
1バイト(byte) = 8ビット
(アルファベット1文字は1バイトで表現可能)

7 6 5 4 3 2 1 0
2
0

2

2
5
0 0 0 0 0 1 0 1↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑27 26 25 24 23 22 21 20

8ビットで表すことの出来る数字は？

0 ～ 28 1  255

もっと大きな数は？
• ビットをたくさん並べると大きな数を表せるようになる• 負の数も表さなければならない
1バイト（8ビット） → 128～127
2バイト（16ビット） →  32,768～32,767
4バイト（32ビット） →  2,147,483,648～ 2,147,483,647
機械で扱うので，あらかじめビット数を決めておく必要がある．

変数宣言
 宣言

（テキスト21ページ）• コンパイラにユーザーが作った名前をどのように解釈するのかを伝えるもの• 変数を使う前に必ず宣言しなければならない• 値の種類を教える必要がある（型）
箱の大きさ
が異なる

型名
char
short
int
long
unsignedfloat
double

種類
文字
整数
整数
整数
符号なし整数（組合せ）
単精度浮動小数点数
倍精度浮動少数点数

バイト数
Xcodeは
1バイト
4バイト
2バイト
2または4バイト
4または8バイト
4バイト
8バイト

変数の上限下限はヘッダファイル limit.h に記述されている

整数変数
変数宣言

int base, height, area;

コンピュータの中で int 型の変数とは，整数 (..., -2, -1, 0, 1, 2, ...) を蓄えておく３２ビットの箱
下の範囲の整数を1つだけ箱の中に入れることができる 231～ 231 1
 2,147,483,648 2,147,483,647
上の変数宣言をすることで，下の図のような3つの箱が用意されると思ってよい
area
base

heightメモリ

2. 代入（テキスト22ページ）

 変数に数値を格納すること
 C言語ではイコール(=)を使用するが，左辺と右辺が等しいという意味ではない
 変数の型と同じ型のデータを格納する

変数 = 式• 左辺は変数を1つだけ書く• 値を格納する変数

代入式
変数 = 式（テキスト53ページ）

右辺はリテラル，演算式を記入できる式を計算した結果（値）を左辺の変数に代入する
リテラルの代入
i=5

値5が代入される

j = 0x20

5i32

値 20(16) = 32(10)が代入される

演算結果の代入
k=i+j
足し算を計算した値が代入される

37

k

j

リテラル
 "Hello, world"（文字列）や 5（整数）などの具体的なデータをリテラルと言う文字リテラル
文字列リテラル
整数リテラル074 （8進数）
0x2f （16進数）…
浮動小数点数リテラル

シングルクォート

‘A’ ’a’ …
”Hello, world” …
5 （10進数）

5.0

5.

0.2

ダブルクォート.2 …

浮動小数点数リテラルは指定のない限りdouble型となる
3.141592 （double型）
3.1415f （float型）

代入式の文 代入式をプログラム中に書くときには，その後ろにセミ

コロンをつけて文にする
代入式;

代入式の文

例
i = 5;
j = 0x20;
k = i + j;

リテラルの代入
演算式を計算した値を変数に代入
この場合は 5 + 32 で 37 を変数に代入する

f0 = (float)(j / i);
f1 = (float) j / (float)i;

キャスト
直後（右側）にある式，変数，
リテラルの型を変更する

3. 関数（ライブラリ関数）（テキスト22ページ）

 数学的な関数はライブラリ関数として用意されている

 ヘッダファイル math.h を include すると使用できる
 関数 sin()，cos()，tan()，ln() など
 括弧の中に引数を書ける
 使えるライブラリ関数はできるだけ使う

使用例：
x = r * cos(theta);
関数名

関数 cos の求め方は知らなくても使える

引数：• 関数に与えるパラメータ• リテラル，変数，式などを書くことができる• 変数の値が関数に伝わる• 式を計算した結果が関数に伝わる

4. 標準出力関数 printf()（テキスト43ページ）

 変数の値をコンソールに出力する際には 標準出力関数（printf 関数）を使用する
 プログラム中では下のように記述
printf(第１引数,第２引数,第３引数,…); printf では第１引数（出力書式文字列）を使って引数の数とその型が決められる
 2つ目以降の引数として変数（もしくは式）を書く

書式付出力出力変換仕様%文字幅，精度，変換指定子（テキスト46ページ）• 変数が3つある• すべて整数である• 表示幅は5桁

printf("%5d + %5d = %5d¥n", i, j, k);printf("(float)(%5d/%5d) = %7.3f¥n", i, j, f0);
• 3つ目の変数は小数である• 3つ目は小数点以下3桁で表示• 3つ目は小数点を含めて全体で7桁で表示

書式指定出力の例
printf("%5d + %5d = %5d¥n", i, j, k);

3 2

32

+
j

6 5 4 3 2 1

1 5 0

150

j

654321=182k

表示の枠が決
まる

1 8 2
k

変数の値が
表示される

表示する値が枠に収まらない場合は，右にはみ出る (6桁で表示)

変換指定子，文字幅，精度
変換指定子

%5d
%8f
%8.3f

c

変換の文字列の形式
文字

引数のデータ型
char

s
d
u
o
x
f
e

文字列
先頭文字のアドレス
int
符号付10進整数
int
符号なし10進整数
int
符号なし8進整数
int
符号なし16進整数
float/double
浮動小数点数
浮動小数点数（指数表現） float/double
符号付10進整数（少なくとも5文字幅）
浮動小数点数（少なくとも8文字幅）
浮動小数点数（少なくとも8文字幅，小数点以下は3桁）

書式付出力での出力例
出力する形式

出力変換仕様（テキスト50ページ）

表示例

整数

%d

321
12987

桁指定の整数(6桁)

%6d

321
12987
12345678

桁指定の整数(6桁)(頭に0を付ける)%06d

00032101298712345678

小数%f123.456789

桁指定の小数(全体8桁，小数部3桁)(小数点は1桁になる)

%8.3f

1.235
123.457
98765.432

値の桁数のほうが大きい場合は揃わない

整数部が5桁なので，小数点が揃わない例題（１）
どのような出力になるか確認しなさい#include <stdio.h>
int main(int argc, const char * argv[]) {int i, j, k; /* 変数宣言 */float f0, f1;
i = 5;/* 代入 */
j = 3;
k = i + j;/* 算術演算 */printf("%5d + %5d = %5d¥n", i, j, k);printf("%5d - %5d = %5d¥n", i, j, i - j);return 0;}例題（２）
どのような出力になるか確認しなさい#include <stdio.h>
int main(int argc, const char * argv[]) {int i, j, k;/* 変数宣言 */float f0, f1;
i = 5;/* 代入 */
j = 3;
f0 = (float)(i / j);/* キャスト */f1 = (float)i / (float)j;printf("(float)(%d / %d) = %6.3f¥n", i, j, f0);
printf("(float)%d / (float)%d = %6.3f¥n", i, j, f1);
return 0;}

5. 標準入力関数 scanf() （テキスト39ページ）
 前もって, stdio.hを読み込むこと
 プログラム中では下のように記述

scanf(第1引数, 第2引数, 第3引数, …);
char c;int i, j, k;float f;double df;

float型の変数の場合
double型の変数の場合

scanf("%c", &c);/* 変数cに文字を入力 */scanf("%d", &i);/* 変数iに整数を入力 */scanf("%d %d %f %lf", &j, &k, &f, &df);
入力変換仕様%変換指定子& は変数のメモリアドレスを計算する演算子

scanf関数で使用可能な変換文字
変換指定子
c
s

入力文字列の形式
文字
文字列

d
ld
o
x
f
lf

10進整数
10進整数
8進整数
16進整数
浮動小数点数
浮動小数点数

変数の型
char
先頭文字のアドレス
int
long int
int

int
float
doublescanfでは，第2引数以降に与えた変数の型を考慮しないので，注意が必要である
変換指定子で示された型の値だとして，変数に代入する

scanf("%d", &f);

変数 f の型が何であっても10進整数の値を代入する例題（３）#include <stdio.h>

int main(int argc, const char * argv[]) {int i, j, sum, dif;// 変数宣言
printf("Enter two integer:");scanf("%d %d", &i, &j);// 入力
sum = i + j;// 算術演算
dif = i - j;printf("%5d + %5d = %5d¥n", i, j, sum);printf("%5d - %5d = %5d¥n", i, j, dif);
return 0;}例題（４）#include <stdio.h>

int main(int argc, const char * argv[]) {float x, y, f0, f1;// 変数宣言
printf("Enter two float:");scanf("%f %f", &x, &y);// 入力
f0 = x + y;// 算術演算
f1 = x * y;printf("%8.3f + %8.3f = %8.3f¥n", x, y, f0);
printf("%8.3f * %8.3f = %8.3f¥n", x, y, f1);
return 0;}

6. Xcode統合環境の使い方（２） 別の資料にまとめているので，そちらを参照してください．

7. 今日の練習問題（１） 下のプログラムを入力して，出力を確かめなさい．
 各変数の内容として（77，3.14，-255，10.0）が正しく出力されるようにプログラムを修正しなさい．
#include <stdio.h>
int main(){
int i, j;unsigned int u;
float f;i = 077;
j = 3.14;

u = -255;
f = 10;
printf("i = %d¥n", i);printf("j = %d¥n", j);printf("u = %u¥n", u);printf("f = %d¥n", f);return 0;}

7. 今日の練習問題（２）
Level

問題

C

2つの実数a，b に対し，a/b の値を求めるプロ
グラムを作成せよB

上のプログラムの a/b の値を書式付き出力にして表示するプログラムを作成せよ

B

上のプログラムの a/b の値を小数第1位で四捨五入して表示するプログラムを作成せよ

A

テキスト p.62 の練習問題の4（鶴亀算）を解く
プログラムを作成せよ

Xcodeを使った入門C言語プログラミング（2）情報処理演習（テキスト：付録）

プログラム実行までの手順
Step １
プロジェクトの新規作成

既存プロジェク
トを開く

Step 2

Step 3

C言語
ソースファイルの編集

ビルドと実行プログラム実行までの手順
Step １
プロジェクトの新規作成

既存プロジェク
トを開く

Step 2

Step 3

C言語
ソースファイルの編集

ビルドと実行

ソースプログラムの編集
 このウィンドウ内でプログラムを入力・編集する

 文字の色はエディタが適切につけてくれる 文法にかなっているかをある程度判断してくれる 「// insert code here…」と書かれた行があるので，そこからソースコードを記述する

サンプルプログラムの入力
 2つの整数の和を計算するプログラムを入力してみるプログラム実行までの手順
Step １
プロジェクトの新規作成

既存プロジェク
トを開く

Step 2

Step 3

C言語
ソースファイルの編集

ビルドと実行プログラムのビルド ソースプログラムを実行可能コードに変換する 「ビルド」のアイコン（ハンマの絵）をクリックする プログラムに誤りがなければ，「問題なく完了しました」というメッセージがウィンドウの最下部に表示される

ここをクリックする
ここにメッセージが表示される

プログラムのエラー 構文的エラー（文法エラー）
 コンパイル時にエラーメッセージが表示される
 見つけやすい エラーの原因はエラーメッセージが表示された行か，それより前側にある 実行時エラー コンパイル時には見つからない プログラムを実行したときにエラーメッセージとともに終了する
 ゼロで割る計算を実行しようとした アクセス許可されていないメモリを使おうとした 意味的エラー コンパイル時には見つからない 実行して，結果がおかしいということしか分からない（地道に原因を特定するしかない）文法エラー（syntax error）
 文法エラーはコンパイラが指摘してくれる ビルドすると，文法エラーを発見した場所にメッセージを表示する
 赤い×印が表示され，エラーの内容が英語で表示される

error: syntax error before 'scanf'• この例では，scanf の前にエラーがあると言っている• 難しい英語ではないので，読むように心がけよう文法エラーの例
 よく起こる文法エラーは下のようなものがある

 セミコロンを付け忘れた 括弧の対応がおかしい 開き括弧がないのに閉じ括弧がある 対応する閉じ括弧がない 括弧が必要なところに括弧がない

 コンパイラが知らない名前が出てきた
 宣言していない変数・関数がある 予約語の誤り，ミススペル 使えない文字が出てきた
 演算子の誤り
 文字列，コメント以外に日本語文字がある ダブルクォートの閉じ忘れ 全角空白がプログラム中に入っている括弧の対応がおかしいエラーの例

宣言していない変数があるエラーの例

undeclared ： 宣言されていない

定義されていない演算子を使ったエラーの例

ダブルクォートの閉じ忘れのエラーの例

編集上の注意点
 全角文字の入力

 全角文字は，プログラム中の決められた場所にしか入れてはならない コメント 文字列（ダブルクォートで囲まれた部分）

 それ以外に全角文字があるとコンパイル時にエラーとなる 下のようなエラーメッセージがいくつか表示される
error: syntax error at 'OTHER' token

 プログラム中にある全角空白を表示して確認するには…
「表示」 → 「テキスト」 → 「スペースを表示」
を選択すると，半角空白，全角空白がそれぞれ「♢」，「. 」で表示される

実行してみる

ダブルクリックで実行

値の入力
結果の出力

デバッガの起動
 プログラムの誤りを探すツール
 プログラムの実行を途中で停止させることができる ブレイクポイント（一時停止させる箇所）
 任意の位置 複数の位置 1文ずつ実行させることができる ステップ実行 変数の値を見ることができる

デバッガウィンドウ
実行（ブレイクポイントまで実行）

ステップオーバー（次の文まで実行）

変数の表示

ソースプログラムブレイクポイントの設定

この部分をクリックして設定する
ブレイクポイントを削除するときには，
この記号を右へドラッグする

プログラムの一時停止「ステップオーバー」ボタンを押す
ことで，1行ずつ実行する

ブレイクポイントでプログラムの実行が停止
変数名：
まだ値を代入していないので，適当な値が入っている

ここで停止していることを示す（この行はまだ実行されていない）

ブレイクポイントで一時停止
 エディタのウィンドウでも一時停止位置を知ることができる

デバッガコンソールを開く

ここで停止していることを示す

デバッガコンソール
 「ステップオーバー」ボタンをクリックすると，「Input

two integers : 」のメッセージがデバッガコンソールに表示される
 もう一度クリックすると scanf 関数による入力待ちになる

値の入力はデバッガコンソールで行うscanf 関数の実行後• 変数 a には，入力された値が入っている（変数 a の値が変化したので赤色になっている）• 変数 b には，まだ何も入力されていないので，前のまま• 変数 a への入力は実行済み• 変数 b への入力は未実行

値の入力
 変数 a の値として 1 を入力
 「ステップオーバー」ボタンをクリック
 変数 b の値として 2 を入力

1 に続いて 2 を入力

変数の値の確認• 変数 b には，入力された値が入っている（変数 b の値が変化したので赤色になっている）• 2 つの scanf 関数を実行済み

プログラムの終了• 「ステップオーバー」ボタンをクリックしていくと，メイン関数の最後の波括弧に到達する• メイン関数の実行が終了する

プログラム終了時のデバッガコンソール
 プログラムの実行結果が表示されている
 「中止」ボタンをクリックすると，プログラムの実行が終了する
 「続ける」ボタンを押しても実行が終了する