Cocoa Pro4

Preview:

Citation preview

第4回iPhone輪講Lesson9

Lesson9C言語の文法

変数

変数の型

型 意味

char 文字

int 整数

float 小数

double 小数

修飾子

修飾子

型につけることで,その意味を少し拡張する

修飾子 意味

signed 符号あり

unsigned 符号なし

short 短い

long 長い

文字

文字を表す型はchar型

char型の変数にはシングルクォーテーション(‘’)を使って代入

char c = ‘a’;

char letter = ‘L’;

整数

整数の為の変数はint型

int i = 0;余白

intのとりうる範囲変数 省略した記述 大きさ とりうる値の範囲

sined int int 32bit -2,147,483,648~2,147,483,647

unsigned int unsigned 32bit 0~4,294,967,295

signed short int short 16bit -32,768~32,767

unsigned short int unsigned short 16bit 0~65,535

signed long int long 32bit -2,147,483,648~2,147,483,647

unsigned long int unsigned long 32bit 0~4,294,967,295

signed long long int long long 64bit -263~263-1

unsigned long long int

unsigned long long

64bit 0~264-1

小数

小数の為の型が,float型とdouble型

(Macでは)float型が32ビット,double型64ビット

float f = 12.2f

double value = 1.0

数字の終わりに「f」をつけるとfloat型,ない場合はdouble型

配列

配列は変数の名前の後に角括弧[ ]で確保する値の数を書く

int ages[12];

12個の整数の値が確保できる

最初の変数に値を設定

ages[0]=24;

値を取り出す

int firstAge = ages[0];

ポインタ

ポインタとは,メモリ上にあるひとまとまりのデータを指し示す為のもの

指し示す為にポインタ変数と呼ばれる変数を使う

文字列

文字列はchar型の変数が集まったもの

文字列を作る為にダブルクォーテーション(””)で囲む

この記述で作った文字列をchar型で受けることになる

char* osName = “MacOSX”;

文字列はcharの配列であり,配列とはひとまとまりのデータ

配列はポインタで受けることができる

NULL値:文字列の終端文字

“MacOSX”という文字列を作った

文字の配列は以下のようになっている

文字は6文字だが,配列は7文字分確保してある

最後の文字はNULLと呼ばれる

NULLはなんでもないものや,どこでもないところを示す

文字列の最後に使われている場合NULL終端文字と呼ばれる

M a c O S X NULL

バックスラッシュ

バックスラッシュは後ろに来る文字を特別な意味に変える\n 改行

\r 復帰(キャリッジリターン)

\t タブ

\” C言語の文字列の中に,ダブルクォーテーションを入れたいときに使う.例:”This is a \” Rock\””

\\ バックスラッシュそのもの

置換子

整数の為の置換子%d

文字の為の置換子%c

小数の為の置換子%f

文字列の為の置換子%s

実行結果

論理演算子

論理値

「ある命題が正しいか否か」を表す値 真 偽

TRUE FALSE

YES NO

1 0

論理演算

論理演算にはAND,OR,NOTの3種類がある

ANDの論理演算子は&&,ORは||,NOTは!

ANDとORは2つの論理値の間で,NOTは1つの値に対しての計算になる

0 1

0 0 0

1 0 1

0 1

0 0 1

1 1 1

AND OR NOT

NOT 1 = 0

NOT 0 = 1

制御文

処理1 条件 条件

処理2 処理1 処理2 処理

YES NO YES

NO

1.順に進む 2.条件分岐 3.繰り返し

制御文

処理1 条件 条件

処理2 処理1 処理2 処理

YES NO YES

NO

1.順に進む 2.条件分岐 3.繰り返し

こういった流れを変えることをプログラムの制御と呼ぶ

プログラミングで制御をおこなうのが制御文である

可変引数

stdio.hにあるprintf関数の宣言をみてみる

パスは/usr/include/stdio.h

引数がconst char*となっていて,その後「...」が続いている

「...」はこの関数に指定できる引数の数は固定でないということを示している

こういった引数の指定の仕方を可変引数という

標準ライブラリ

C言語には標準ライブラリというものが定義されている

標準ライブラリでは多くの便利な関数が提供されている

宣言ファイルは「/sur/include」にある

標準ライブラリstdio.h

結果の出力や,キーボードの入力を受け付ける.ファイルの入出力も担当する.

string.h

文字列を操作する関数を集めたもの

math.h

数学に関する関数を集めたもの

stdlib.h

文字と数値の間で変換をしたり,メモリを確保したりする

構造体

構造体はいくつかの変数をまとめておくためのもの

プログラム中でウィンドウ上の座標を管理する事を考えてみる

座標はx軸,y軸の2つの座標で決定されるので,xとyの2つの変数が必要になる

しかし,この2つは常にペアで使う事になるので,まとめて宣言したい…

構造体

こういった時に構造体が使われる

xとyの変数をまとめたpointという名前の構造体の定義

文法はstruct 構造体名 { フィールド1; フィールド2;...};

構造体

構造体の使い方

定義した構造体は以下のように使う

構造体の変数を宣言するときは,先頭にstructをつけるい必要がある

構造体の変数が持つフィールドにアクセスするには「.」の後ろにフィールドの名前を書く事で,値を設定したり,取り出したりする

構造体

typedefを使った構造体の型の宣言

構造体の変数を宣言する際,いちいち先頭にstructをつけるのは面倒

そういうとき以下のように書く事が出来る

構造体

「typedef」は新しい型を宣言するためのもの

あらかじめ用意されているintやcharといった型以外でも自分で色々な型を定義できる

pointが書かれている位置が構造体の定義の最後に書いてあるのは「構造体を使った型の名前」として使われているため

typedefを使っていない方の構造体の宣言ではpointが「構造体の名前」として使われていた

構造体

typedefを使った構造体の型を使うと以下のようにコードが書ける

pointの前にstructをつけなくて良い

pointをintやcharといった型と同じように使う事が出来る

おわり