3_c言語入門 - c言語の基本
TRANSCRIPT
C 言語入門~ C 言語の基本 ~
2本日の目標
• C 言語の基本を覚える
• printf の使い方を覚える
プログラミングしてみる
の前に ...
プロジェクトをつくる
5プロジェクトをつくる①
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
ファイル → 新規作成 → プロジェクトをクリック
6プロジェクトをつくる②
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
名前: Sample1場所:任意のフォルダソリューション名: Sample
7プロジェクトをつくる③
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
Sample1 を右クリック → 追加 → 新しい項目をクリック
8プロジェクトをつくる④
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
名前: Sample1.c場所:そのまま
9プロジェクトをつくる⑤
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
ここにプログラムを書く
作られているフォルダとファイル
10プロジェクトをつくる⑥
※ Visual Studio Community 2013 を使っているので、表示が異なることがあります。
2 つ目以降のプロジェクトのつくり方
ソリューションを右クリック → 追加 → 新しいプロジェクト
あとは「プロジェクトをつくる②」と同じ
プログラミングしてみる
12プログラムを書く
ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .
入力するプログラム( Sample1.c )
実行結果
2 行表示される
( \n はあとで説明)
「やさしい C 」 p.16
/* 画面に文字を出力するコード */ #include <stdio.h> int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }
プログラムのしくみ
14プログラムのしくみ①
「やさしい C 」 p.21
/* 画面に文字を出力するコード */ #include <stdio.h> int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }
コメント行
ソースコードの注釈実行時には無視される→ 人間のためのしくみ
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 関数の宣言」で学びます
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 関数」で学びます
17プログラムのしくみ④
「やさしい C 」 p.24
/* 画面に文字を出力するコード */ #include <stdio.h> int main(void) { printf(" ようこそ C 言語へ !\n"); printf("C 言語をはじめましょう !\n"); return 0; }
printf のカッコ内の文字が表示されたか
ら ...
もしかして、画面に表示させる処理?
printf の正体を調べる
19printf の正体を調べる①
/* 画面に文字を出力するコード */ #include <stdio.h> int main(void) { printf (" ようこそ C 言語へ !\n"); printf ("C 言語をはじめましょう !\n"); return 0; }
「 printf 」を選択して、[F1] キーを押してみると ...
20printf の正体を調べる②
「やさしい C 」 p.24
int printf( const char *format [, argument]... );
printf(format, argument)
カッコの中に書いた文字列が表示されるしくみっぽい※argument は省略可
標準出力ストリームとは?標準入力ストリームとは?
22標準入出力ストリームとは
「やさしい C 」 p.25 ~ 26
標準出力ストリームStandard Output
標準入力ストリームStandard Input
printf をもっと詳しく!
24printf をもっと詳しく①
ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .
入力するプログラム( Sample2.c )
実行結果
printf ひとつなのに2 行表示される
\n があやしい ...
「やさしい C 」 p.26
#include <stdio.h> int main(void) { printf(“ ようこそ C 言語へ !\nC 言語をはじめましょう !\n”); return 0; }
25printf をもっと詳しく②
ようこそ C 言語へ !C 言語をはじめましょう ! 続行するには何かキーを押してください . . .
入力するプログラム( Sample3.c )
実行結果
\n を消してみると ...
printf がふたつあるのに 1 行で表示される
\n は改行を表す記号
「やさしい C 」 p.27
#include <stdio.h> int main(void) { printf (" ようこそ C 言語へ !"); printf (“C 言語をはじめましょう !"); return 0; }
演 習
27演 習
1. 自分の名前を表示する(ファイル名: ex03-01.c )
2. 自分の誕生日を表示する(ファイル名: ex03-02.c )
3. 自分の名前と誕生日を 2 行で表示する (ファイル名: ex03-03.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 は小数です。
実行結果
30いろんな値を表示する②
「やさしい C 」 p.30
printf(“%c は文字です。 \n”, ‘A’); = “ A は文字です。 \n”
printf(“%d は整数です。 \n”, 123); = “ 123 は整数です。 \n”
printf(“%f は小数です。 \n”, 10.5); = “ 10.5 は小数です。\n”
「 %○ 」の部分が置き換わっている
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( 小数 )
の頭文字と覚えると楽
文字・整数・小数について
33文字について
• 1 つの文字(例:‘ A’ )
• シングルクォートでくくる
• 文字に与えられたコード
「やさしい C 」 p.31 、 37
• 文字の並び(例:“ ABC” )
• ダブルクォートでくくる
• 文字の集合体(配列)詳しくは「 7.6 文字列と配列」で学ぶ
文字 文字列
言葉は似てるけど、異なる存在
ちょっと脱線して ...文字について詳しく
文字に与えられたコード?
36文字に与えられたコード
• コンピュータの内部では、
文字も数値として扱われている
• 数値と文字を対応付けたものが文字コード
「やさしい C 」 p.33
文字コードについては、ほとんど使わないので「しくみ」を知るだけでも OK
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 ッ ソ マ ゚
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ビット
で、ひとつの文字を表している。(※半角文字の場合)
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 進数については、また今度
40エスケープシーケンス①
• 文字以外も表現したい ... (改行とかスペースとか)
• 特定の文字に割り当てよう!
• でも、そのままだと文字と同じ表現に
なってしまう ......• 頭に「 \ 」をつけて表現しよう!!
「やさしい C 」 p.32
41エスケープシーケンス②
「やさしい C 」 p.32
エスケープシーケンス 意 味
\n 改行
\t 水平タブ
\b バックスペース
\” “ ( ダブルクォーテーション )\’ ‘ ( シングルクォーテーション )\0 ヌル (null) 文字
\(8 進数 ) 8 進数で示された文字コード
\x(16 進数 ) 16 進数で示された文字コード
42整数・小数について
• 整数( integer )
• 浮動小数点数( float )
• n 進数については、また次回
「やさしい C 」 p.37
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 は小数です。
実行結果
442 つ以上の値の表示①
「やさしい C 」 p.40
printf(“%c は文字、 %d は整数です。” , ‘A’, 123);
printf("%d は整数、 %f は小数です。 ", 123, 10.5);
左から順番に割り当てられる
45演 習
1. 自分の生年月日を 1 行で表示する出力結果「 1996 年 11 月 6 日生まれ」
(ファイル名: ex03-04.c )
2. 「 \100 もらった」と表示する※ヒント :’\’ はエスケープシーケンスを使う
(ファイル名: ex03-05.c )
なぜ、変換仕様を使うの?
便利だから!!
48変換仕様を使う理由①
数値の合計は 15 です。実行結果
こんなことができちゃう!?
#include <stdio.h> int main(void) { int sum; sum = 1 + 2 + 3 + 4 + 5; printf(“ 数値の合計は %d です。” , sum );
return 0; }
49変換仕様を使う理由②こんなことができちゃう!?
#include <stdio.h> int main(void) { int sum; sum = 1 + 2 + 3 + 4 + 5; printf(“ 数値の合計は %d です。” , sum );
return 0; }
「変数」を使うときに便利!
“sum” のことを「変数」と呼ぶ
次回、変数について
51参考文献
• やさしい C 第 4 版
• 新版 明解 C 言語 入門編