3_c言語入門 - c言語の基本

51
C 言言言言 C 言言言言言

Upload: bcrikko

Post on 12-Feb-2017

1.550 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 3_C言語入門 - C言語の基本

C 言語入門~ C 言語の基本 ~

Page 2: 3_C言語入門 - C言語の基本

2本日の目標

• C 言語の基本を覚える

• printf の使い方を覚える

Page 3: 3_C言語入門 - C言語の基本

プログラミングしてみる

Page 4: 3_C言語入門 - C言語の基本

の前に ...

プロジェクトをつくる

Page 5: 3_C言語入門 - C言語の基本

5プロジェクトをつくる①

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

ファイル → 新規作成 → プロジェクトをクリック

Page 6: 3_C言語入門 - C言語の基本

6プロジェクトをつくる②

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

名前: Sample1場所:任意のフォルダソリューション名: Sample

Page 7: 3_C言語入門 - C言語の基本

7プロジェクトをつくる③

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

Sample1 を右クリック → 追加 → 新しい項目をクリック

Page 8: 3_C言語入門 - C言語の基本

8プロジェクトをつくる④

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

名前: Sample1.c場所:そのまま

Page 9: 3_C言語入門 - C言語の基本

9プロジェクトをつくる⑤

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

ここにプログラムを書く

作られているフォルダとファイル

Page 10: 3_C言語入門 - C言語の基本

10プロジェクトをつくる⑥

※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。

2 つ目以降のプロジェクトのつくり方

ソリューションを右クリック → 追加 → 新しいプロジェクト

あとは「プロジェクトをつくる②」と同じ

Page 11: 3_C言語入門 - C言語の基本

プログラミングしてみる

Page 12: 3_C言語入門 - C言語の基本

12プログラムを書く

ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .

入力するプログラム( Sample1.c )

実行結果

2 行表示される

( \n はあとで説明)

「やさしい C 」 p.16

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }

Page 13: 3_C言語入門 - C言語の基本

プログラムのしくみ

Page 14: 3_C言語入門 - C言語の基本

14プログラムのしくみ①

「やさしい C 」 p.21

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }

コメント行

ソースコードの注釈実行時には無視される→ 人間のためのしくみ

Page 15: 3_C言語入門 - C言語の基本

15プログラムのしくみ②

「やさしい C 」 p.22 、 p.266

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }

標準入出力ストリーム

Standard Input/Output の略

「 printf 」を使うための宣言詳しくは「 8.8 関数の宣言」で学びます

Page 16: 3_C言語入門 - C言語の基本

16プログラムのしくみ③

「やさしい C 」 p.17 、 p.216 、 p.236

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }

プログラムの出口

詳しくは「 8.4 戻り値」で学びます

ひとつのプログラムに、必ずひとつしかない

プログラムの入り口

詳しくは「 8.1 関数」で学びます

Page 17: 3_C言語入門 - C言語の基本

17プログラムのしくみ④

「やさしい C 」 p.24

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }

printf のカッコ内の文字が表示されたか

ら ...

もしかして、画面に表示させる処理?

Page 18: 3_C言語入門 - C言語の基本

printf の正体を調べる

Page 19: 3_C言語入門 - C言語の基本

19printf の正体を調べる①

/* 画面に文字を出力するコード */ #include <stdio.h>   int main(void) { printf (" ようこそ C 言語へ !\n"); printf ("C 言語をはじめましょう !\n"); return 0; }

「 printf 」を選択して、[F1] キーを押してみると ...

Page 20: 3_C言語入門 - C言語の基本

20printf の正体を調べる②

「やさしい C 」 p.24

int printf( const char *format [, argument]... );

printf(format, argument)

カッコの中に書いた文字列が表示されるしくみっぽい※argument は省略可

Page 21: 3_C言語入門 - C言語の基本

標準出力ストリームとは?標準入力ストリームとは?

Page 22: 3_C言語入門 - C言語の基本

22標準入出力ストリームとは

「やさしい C 」 p.25 ~ 26

標準出力ストリームStandard Output

標準入力ストリームStandard Input

Page 23: 3_C言語入門 - C言語の基本

printf をもっと詳しく!

Page 24: 3_C言語入門 - C言語の基本

24printf をもっと詳しく①

ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .

入力するプログラム( Sample2.c )

実行結果

printf ひとつなのに2 行表示される

\n があやしい ...

「やさしい C 」 p.26

#include <stdio.h>   int main(void) { printf(“ ようこそ C 言語へ !\nC 言語をはじめましょう !\n”); return 0; }

Page 25: 3_C言語入門 - C言語の基本

25printf をもっと詳しく②

ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .

入力するプログラム( Sample3.c )

実行結果

\n を消してみると ...

printf がふたつあるのに 1 行で表示される

\n は改行を表す記号

「やさしい C 」 p.27

#include <stdio.h>   int main(void) { printf (" ようこそ C 言語へ !"); printf (“C 言語をはじめましょう !"); return 0; }

Page 26: 3_C言語入門 - C言語の基本

演 習

Page 27: 3_C言語入門 - C言語の基本

27演 習

1. 自分の名前を表示する(ファイル名: ex03-01.c )

2. 自分の誕生日を表示する(ファイル名: ex03-02.c )

3. 自分の名前と誕生日を 2 行で表示する (ファイル名: ex03-03.c )

Page 28: 3_C言語入門 - C言語の基本

いろんな値を表示する

Page 29: 3_C言語入門 - C言語の基本

29いろんな値を表示する①

「やさしい C 」 p.29

入力するプログラム( Sample4.c )

#include <stdio.h>   int main(void) { printf("%c は文字です。 \n", 'A'); printf("%d は整数です。 \n", 123); printf("%f は小数です。 \n", 10.5); return 0; }

A は文字です。 123 は整数です。 10.500000 は小数です。

実行結果

Page 30: 3_C言語入門 - C言語の基本

30いろんな値を表示する②

「やさしい C 」 p.30

printf(“%c は文字です。 \n”, ‘A’); = “ A は文字です。 \n”

printf(“%d は整数です。 \n”, 123); = “ 123 は整数です。 \n”

printf(“%f は小数です。 \n”, 10.5); = “ 10.5 は小数です。\n”

「 %○ 」の部分が置き換わっている

Page 31: 3_C言語入門 - C言語の基本

31いろんな値を表示する③

printf(“%c は文字です。 \n”, ‘A’); → A は文字です。printf(“%c は整数です。 \n”, 123); → { は整数です。printf(“%c は小数です。 \n”, 10.5); → _ は小数です。  printf(“%d は文字です。 \n”, ‘A’); → 65 は文字です。printf(“%d は整数です。 \n”, 123); → 123 は整数です。printf(“%d は小数です。 \n”, 10.5); → 0 は小数です。  printf(“%f は文字です。 \n”, ‘A’); → 0.000000 は文字です。printf(“%f は整数です。 \n”, 123); → 0.000000 は整数です。printf(“%f は小数です。 \n”, 10.5); → 10.500000 は小数です。 

表示したい値にあわせて、変換仕様を選ぶ

%c : character( 文字 )%d : decimal(10 進数 )%f : float( 小数 )

の頭文字と覚えると楽

Page 32: 3_C言語入門 - C言語の基本

文字・整数・小数について

Page 33: 3_C言語入門 - C言語の基本

33文字について

• 1 つの文字(例:‘ A’ )

• シングルクォートでくくる

• 文字に与えられたコード

「やさしい C 」 p.31 、 37

• 文字の並び(例:“ ABC” )

• ダブルクォートでくくる

• 文字の集合体(配列)詳しくは「 7.6 文字列と配列」で学ぶ

文字 文字列

言葉は似てるけど、異なる存在

Page 34: 3_C言語入門 - C言語の基本

ちょっと脱線して ...文字について詳しく

Page 35: 3_C言語入門 - C言語の基本

文字に与えられたコード?

Page 36: 3_C言語入門 - C言語の基本

36文字に与えられたコード

• コンピュータの内部では、

文字も数値として扱われている

• 数値と文字を対応付けたものが文字コード

「やさしい C 」 p.33

文字コードについては、ほとんど使わないので「しくみ」を知るだけでも OK

Page 37: 3_C言語入門 - C言語の基本

37文字コード①

シフト JIS ( Shift_JIS )の 1 バイト(半角文字)のコード表

0 1 2 3 4 5 6 7 8 9 A B C D E F0 NUL DLE SP 0 @ P ` p ー タ ミ1 SOH DC1 ! 1 A Q a q 。 ア チ ム2 STX DC2 “ 2 B R b r 「 イ ツ メ3 ETX DC3 # 3 C S c s 」 ウ テ モ4 EOT DC4 $ 4 D T d t 、 エ ト ヤ5 ENQ NAK % 5 E U e u ・ オ ナ ユ6 ACK SYN & 6 F V f v ヲ カ ニ ヨ7 BEL ETB ‘ 7 G W g w ァ キ ヌ ラ8 BS CAN ( 8 H X h x ィ ク ネ リ9 HT EM ) 9 I Y I y ゥ ケ ノ ルA LF SUB * : J Z j z ェ コ ハ レB VT ESC + ; K [ k { ォ サ ヒ ロC FF FS , < L \ l | ャ シ フ ワD CR GS - = M ] m } ュ ス ヘ ンE SO RS . > N ^ n ~ ョ セ ホ ゙F SI US / ? O _ o DEL ッ ソ マ ゚

Page 38: 3_C言語入門 - C言語の基本

380 1 2 3 4 5 6 7 8 9 A B C D E F

0 NUL DLE SP 0 @ P ` p ー タ ミ1 SOH DC1 ! 1 A Q a q 。 ア チ ム2 STX DC2 “ 2 B R b r 「 イ ツ メ3 ETX DC3 # 3 C S c s 」 ウ テ モ4 EOT DC4 $ 4 D T d t 、 エ ト ヤ5 ENQ NAK % 5 E U e u ・ オ ナ ユ6 ACK SYN & 6 F V f v ヲ カ ニ ヨ7 BEL ETB ‘ 7 G W g w ァ キ ヌ ラ8 BS CAN ( 8 H X h x ィ ク ネ リ9 HT EM ) 9 I Y I y ゥ ケ ノ ルA LF SUB * : J Z j z ェ コ ハ レB VT ESC + ; K [ k { ォ サ ヒ ロC FF FS , < L \ l | ャ シ フ ワD CR GS - = M ] m } ュ ス ヘ ンE SO RS . > N ^ n ~ ョ セ ホ ゙F SI US / ? O _ o DEL ッ ソ マ ゚

文字コード②

シフト JIS ( Shift_JIS )の 1 バイト(半角文字)のコード表

上位 4 ビット( 16 進数表記)

下位 4 ビット( 16 進数表記)

上位 4 ビット + 下位 4 ビット = 計 8ビット

で、ひとつの文字を表している。(※半角文字の場合)

Page 39: 3_C言語入門 - C言語の基本

39文字コード③

シフト JIS ( Shift_JIS )の 1 バイト(半角文字)のコード表

0 1 2 3 4 50 NUL DLE SP 0 @ P1 SOH DC1 ! 1 A Q2 STX DC2 “ 2 B R

下位 4 ビット 16 進数で「 1 」、 8 進数で「 1 」、 2 進数で「 0001 」

上位 4 ビット 16 進数で「 4 」、 8 進数で「 4 」、 2 進数で「 0100 」

‘A’ は ...... ・ 16 進数で「 41 」 ・ 10 進数で「 65 」 ・ 8 進数で「 101 」 ・ 2 進数で「 01000001 」  ※16, 8, 2 進数については、また今度

Page 40: 3_C言語入門 - C言語の基本

40エスケープシーケンス①

• 文字以外も表現したい ... (改行とかスペースとか)

• 特定の文字に割り当てよう!

• でも、そのままだと文字と同じ表現に

なってしまう ......• 頭に「 \ 」をつけて表現しよう!!

「やさしい C 」 p.32

Page 41: 3_C言語入門 - C言語の基本

41エスケープシーケンス②

「やさしい C 」 p.32

エスケープシーケンス 意  味

\n 改行

\t 水平タブ

\b バックスペース

\” “ ( ダブルクォーテーション )\’ ‘ ( シングルクォーテーション )\0 ヌル (null) 文字

\(8 進数 ) 8 進数で示された文字コード

\x(16 進数 ) 16 進数で示された文字コード

Page 42: 3_C言語入門 - C言語の基本

42整数・小数について

• 整数( integer )

• 浮動小数点数( float )

• n 進数については、また次回

「やさしい C 」 p.37

Page 43: 3_C言語入門 - C言語の基本

432 つ以上の値の表示①

「やさしい C 」 p.40

#include <stdio.h>   int main(void) { printf(“%c は文字、 %d は整数です。” , ‘A’, 123); printf("%d は整数、 %f は小数です。 ", 123, 10.5);

return 0; }

入力するプログラム( Sample4.c )

A は文字、 123 は整数です。123 は整数、 10.500000 は小数です。

実行結果

Page 44: 3_C言語入門 - C言語の基本

442 つ以上の値の表示①

「やさしい C 」 p.40

printf(“%c は文字、 %d は整数です。” , ‘A’, 123);

printf("%d は整数、 %f は小数です。 ", 123, 10.5);

左から順番に割り当てられる

Page 45: 3_C言語入門 - C言語の基本

45演 習

1. 自分の生年月日を 1 行で表示する出力結果「 1996 年 11 月 6 日生まれ」

(ファイル名: ex03-04.c )

2. 「 \100 もらった」と表示する※ヒント :’\’ はエスケープシーケンスを使う

(ファイル名: ex03-05.c )

Page 46: 3_C言語入門 - C言語の基本

なぜ、変換仕様を使うの?

Page 47: 3_C言語入門 - C言語の基本

便利だから!!

Page 48: 3_C言語入門 - C言語の基本

48変換仕様を使う理由①

数値の合計は 15 です。実行結果

こんなことができちゃう!?

#include <stdio.h>   int main(void) { int sum; sum = 1 + 2 + 3 + 4 + 5; printf(“ 数値の合計は %d です。” , sum );

return 0; }

Page 49: 3_C言語入門 - C言語の基本

49変換仕様を使う理由②こんなことができちゃう!?

#include <stdio.h>   int main(void) { int sum; sum = 1 + 2 + 3 + 4 + 5; printf(“ 数値の合計は %d です。” , sum );

return 0; }

「変数」を使うときに便利!

“sum” のことを「変数」と呼ぶ

Page 50: 3_C言語入門 - C言語の基本

次回、変数について

Page 51: 3_C言語入門 - C言語の基本

51参考文献

• やさしい C 第 4 版

• 新版 明解 C 言語 入門編