230 likes | 346 Views
プログラミング論. 第四回 画面への出力 . 本日の内容. 画面への出力 printf の働き 文字列を出力する #include ? ; ? 1 行に複数文を記述する コメントを入れる. 画面への出力 printf について考えましょう. printf( “ How are you?<br> ” ) は, main(void) と同様に考えると, 関数名 printf 引数 “ How are you?<br> ” と考えられますね。 そう, printf は,「メッセージを出力するための関数」なのです。
E N D
プログラミング論 第四回 画面への出力
本日の内容 • 画面への出力 • 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? つまり, \n は「改行」の意味になります Z:\C>
次の実行結果を確認しましょう • 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というエスケープシーケンスを試してみましょう。 • \や”そのものを画面に表示したいときはどうすればよいでしょうか?
演習 • 次のように表示されるプログラムを作成してください。 <問題2> <問題1> 私の名前は 「自分の名前」です。 Z:\C> 私は プログラミング論 を履修しています。 Z:\C>
Cプログラムの構成 • #include <stdio.h> • int main(void) • { • printf("How are you?\n"); • return 0; • } 次は,これ。 これは,Cのプログラムに,まず 間違いなく必ず最初に書いてあ る文です。一体,どんな意味が あるのでしょう? ここは 終了。 こういう時は,「じゃ,無かったら どうなるの?」と考えましょう。 この行を消して,コンパイルして みましょう。
コンパイルの結果 こんな警告が出ます。 警告 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"); • return 0; • } プリプロ セッサ main関数 次は,これ。
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次のプログラムを実行してみましょう。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言語を勉強します。 printfを勉強しました。 Z:\C>_ タブ一つ 1行空白