プログラミング実習

プログラミング論
第四回
画面への出力
本日の内容

画面への出力
– printfの働き

文字列を出力する
– #include ?
–;?
– 1行に複数文を記述する
– コメントを入れる
画面への出力
printfについて考えましょう

printf(“How are you?\n”)は,main(void)と同
様に考えると,
– 関数名 printf
– 引数 “How are you?\n”
と考えられますね。
 そう,printfは,「メッセージを出力するための関
数」なのです。
 “ “で囲まれた文字や数値などいろんな形式
の出力が出来ます。
もう一度,実行結果に注目。
ensyu3.c
How are you?
Z:\C>
printf(“How are you?\n”)
これはどこ?何?
それでは,これを実行してみましょう
#include <stdio.h>
int
{
main(void)
printf("How are you?");
return 0;
}
実行結果はどうなりましたか?
How are you?
Z:\C>
比較してみましょう
How are you?
Z:\C>
実行結果はどうなりましたか?
How are you?
Z:\C>
ここでリターン,つまり改行しているんですね
行間が空いて
いるということは
How are you?
Z:\C>
つまり, \n は「改行」の意味になります
次の実行結果を確認しましょう
problem-1:
printf("How ");
printf("are ");
printf("you?\n");
problem-2:
printf("ABC\nDEF\nGHI\n");
problem-3:
printf("ABC\n\nDEF\nGHI\n");
\で始まる記号について




\nなど,\で始まる記号は「エスケープ文
字列(エスケープシーケンス)」と呼ばれ
ます。
「本来の文字の意味を離れて(エスケー
プ)」別の意味を表すため,そう呼ばれま
す。
printfの中で, \a と \t というエスケープ
シーケンスを試してみましょう。
\や”そのものを画面に表示したいときは
どうすればよいでしょうか?
演習

次のように表示されるプログラムを作成し
てください。
<問題1>
私の名前は
「自分の名前」です。
<問題2>
私は
プログラミング論
を履修しています。
Z:\C>
Z:\C>
Cプログラムの構成
#include <stdio.h>
int
{
main(void)
次は,これ。
これは,Cのプログラムに,まず
間違いなく必ず最初に書いてあ
る文です。一体,どんな意味が
あるのでしょう?
printf("How are you?\n");
ここは
終了。
return 0;
}
こういう時は,「じゃ,無かったら
どうなるの?」と考えましょう。
この行を消して,コンパイルして
みましょう。
コンパイルの結果
こんな警告が出ます。
警告 W8065 ensyu3.c 4: プロトタイプ宣言のない
関数 ‘printf’ の呼び出し(関数 main)
ということは・・・?
「プロトタイプ宣言」とは,「こういう関数を使いますよ!」
とあらかじめ宣言することです。
#include <stdio.h> という部分が,「printfっていうのは,こ
んな関数ですよ」って教えてくれている(定義している)部分?
その通り!
#include文






英単語「include」は,「含む」という意味ですね。
つまり,#include <stdio.h> という文は,「このプログ
ラムは,stdio.h というファイルを含みます」という意味
です。
stdio.hは,「Standard Input Output」の意味で,標準
入出力,という意味になります。
.hで終わるファイルは,「ヘッダファイル」と呼ばれ,いろ
いろな関数が定義されています。
stdio.hには,「標準的な入出力に関する関数が定義さ
れている」訳です。printfもその一つです。
つまり,Cが用意してくれている関数を使う場合は,その
関数が定義されているヘッダファイルをインクルードし
ないと使えない,ということです。
Cプログラムの構成
プリプロ
セッサ
#include <stdio.h>
int
{
main(void)
printf("How are you?\n");
main関数
return 0;
}
次は,これ。
Cプログラムの構成を整理。

プリプロセッサ
– ヘッダファイルの読み込み,プログラム内で利用する関数の定義など
を行います。

関数
– 独立に作成出来る最小単位のプログラムです。
– 必要な関数を集める事により,所望のプログラムを作っていきます。
– main関数はプログラムに必ず1つあり,最初に実行されます。他の関
数を呼び出して実行します。
– 関数の範囲は,{ } で示されます。これを区切子といいます。

副文
– 複数の「文」のまとまりです。
– 繰り返す範囲や処理を分岐するときに実行する処理範囲の事です。
これらの範囲は,{ } で示されます。

文
– 処理の最小単位です。
– 文の終わりは,; (セミコロン)で表します。
書き方の工夫
#include <stdio.h>
改行
int
{
main(void)
空白
printf("How are you?\n");
改行
return 0;
}
区切子{ }ごとに文を字下げ
すると見やすくなります。
空白や余分な改行は無視されます。
読みやすいように工夫しましょう。
書き方の工夫
#include <stdio.h>
int main(void)
{
printf("How are you?\n");
return 0;
}
#include <stdio.h>
int main(void){printf("How are you?\n");return 0;}
どちらが理解しやすいでしょうか?
全て1行に書いてしまったらどうなるでしょう?
次のプログラムを実行してみましょう。
ensyu4.c
/* sample program ensyu4.c */
#include <stdio.h>
int
{
main(void)
printf("今日は良い天気です。\n");
printf("今日は");
printf("良い天気");
printf("です。\n");
printf("今日は"); printf("良い天気"); printf("です。\n");
return 0;
}
複数の文の記述
/* sample program ensyu4.c */
#include <stdio.h>
int
{
main(void)
printf("今日は良い天気です。\n");
printf("今日は");
printf("良い天気");
printf("です。\n");
printf("今日は"); printf("良い天気"); printf("です。\n");
return 0; ; で文末が判断されるので,1行に複数の文も可能です。
}
コメント文-1
/* sample program ensyu4.c */
#include <stdio.h>
int
{
main(void)
/* で始まり */ で終わる範囲は
コメントとなります。実行処理
からは無視されます。
printf("今日は良い天気です。\n");
printf("今日は");
printf("良い天気");
printf("です。\n");
printf("今日は"); printf("良い天気"); printf("です。\n");
return 0;
}
コメント文-2
/* sample /* program */ ensyu4.c */
#include <stdio.h>
/* */ の範囲内に,さらに/* */を
入れる事は出来ません。
int
main(void)
試しにコンパイルしてみましょう。
{
printf("今日は良い天気です。\n");
printf("今日は");
printf("良い天気");
printf("です。\n");
printf("今日は"); printf("良い天気"); printf("です。\n");
return 0;
}
コメント文-3
#include <stdio.h> // sample program ensyu4.c
int
{
main(void)
このようなコメントも可能です。
// が書かれた位置からその行の
最後までがコメントとなります。
printf("今日は良い天気です。\n");
printf("今日は");
printf("良い天気");
printf("です。\n");
printf("今日は"); printf("良い天気"); printf("です。\n");
return 0;
}
演習




右のように表示され
るプログラムを作成し
してください。
printf処理は1回だけ
実行してください。
プログラムには,学
生番号と氏名をコメ
ント文として入れてく
ださい。
表示した後にビープ
音が鳴るようにしてく
ださい。
Hello, C World
タブ一つ C言語を勉強します。
1行空白
printfを勉強しました。
Z:\C>_