プログラミング論 第四回 画面への出力 本日の内容 画面への出力 – 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>_
© Copyright 2024 ExpyDoc