プログラミング論 第二回 まずは動かしてみよう 本日の内容 出席メールの送信 実習1 ~とりあえず動かしてみよう~ 言語の学習としてのプログラミング – 単語,文法,文型,用例 実習2 ~プログラミングの流れを理解し よう~ Cプログラムの構成 出席メールの送信 宛先 [email protected] CC 自分のメールアドレス 件名 EK**** 氏名 注意:学番,氏名以外は書かないこと! 本文 なし 出席の確認 自動的に確認メールが返信されます。 同時に多人数が送信した場合,確認メールの 送信が対応できない場合があります。次回の 講義で出席受付名簿を公開しますので確認し てください。 確認メールが届かないからといって,何度も出 席メールを送信することは止めてください。 「出したのに出席登録されていない」場合は, CCのメールにてメールを出したこと(出席したこ と)を確認した上で出席登録します。CCで自分 に届いたメールは,出席を確認するまで削除し ないようにお願いします。 実習1 ~とりあえず動かしてみよう~ Cプログラムのコンパイル,実行をやって みましょう。 ensyu1.cを使います。プリントの指示に 従ってやっていきましょう。 ボーランドCコンパイラ 以下のサイトからダウンロードできます。 http://www.codegear.com/jp/downloads/free/cppbui lder インストールはちょっと面倒です。他の大学のサイトです が,参考になります↓ http://www.setsunan.ac.jp/~center/kyositu/freec/bo rland.html または以下のサイトから環境設定用のソフトをダウン ロードできます。 http://www.vector.co.jp/soft/win95/prog/se149182. html 言語の学習としてのプログラミング 単語を覚えよう – main, printf, int, void, return, include ・・・ 文法を覚えよう – printf(‘Hello, world\n’); ではだめなの? 基本文型を覚えよう – 英語には「基本5文型」があります。 – プログラミング言語に基本文型はあるのでしょうか? 用例を積極的に利用しよう – 単語や文法を覚えても英作文は出来ない。。 – 誰かが書いた英文を利用しよう! – プログラミングも同じです! 言語の学習としてのプログラミング 単語を覚えよう – 識別子 プログラム作成時,変数などに付ける名前 – キーワード(予約語) C言語にあらかじめ用意されている名前 int, double, if, for, while, ・・・・ – 定数 100や23.456など,値が決まっていて変わる事のない数 – 文字列 2文字以上の連続した文字定数。エスケープ文字を利用可 詳しくは来週。 – 演算子 計算や処理のための記号 +, -, /, *, <, >, <=, >=, ==, !, &&, ||, ++, --, など – 区切子 文や関数,副文の区切りを表す。 { } , ; の記号 言語の学習としてのプログラミング 用語を覚えよう – 変数 数値や文字などデータを入れておくための箱の働きをするもの – コメント プログラムの注釈。コンパイル時には無視される。 //で始まる行,または/* */で囲まれた部分 – データ型 整数や実数など性質が異なるデータは,コンピュータ内では異なる扱 いをしなければならない。 整数型(int型)のデータは整数を表現出来る – 配列 – 式 同じ性質の変数をたくさん並べたもの。数列,行列に相当する。 定数や変数を演算子で結合したもの a=b+5 関数の呼び出し printf(“Hello, world\n”) ; (セミコロン)をつけると「文」になる。一つの文は一つの処理を表す。 言語の学習としてのプログラミング 用語を覚えよう – 制御文 プログラムの実行の流れを制御する文 分岐や繰り返しなど if, for, whileなどの予約語は制御文を書くための単語。 – 関数 あるデータを渡すと,何かの仕事をして,答えを戻してくれるプ ログラム要素。名前を指定するだけで一連の処理を実行可能。 printf(“Hello, world\n”);は, Hello, world\n という文字列 データを受け取って,「画面に表示する」という仕事(処理)をす る関数。 – メモリ番地とアドレス,ポインタ コンピュータ内のデータの置き場所(メモリ)につけられた住所 – MPUとCPU コンピュータ内部で実際に演算処理を行っている場所。 言語の学習としてのプログラミング 文法を覚えよう – printf(‘Hello, world\n’); ではだめなの? – だめです(実際に試してみましょう) – 英語なら,多少文法が違っていても相手に通 じるかも知れませんが,プログラミング言語の 場合は通じません! 言語の学習としてのプログラミング 基本文型を覚えよう – 英語には「基本5文型」があります。 S+V S+V+C S+V+O S+V+O+O S+V+O+C – プログラミング言語に基本文型はあるのでしょ うか? あります! 言語の学習としてのプログラミング 基本文型を覚えよう – 「制御構造」とも呼ばれます。文(処理)の並べ方の決ま りです。次の3つです。 順次構造 – 順番に処理を実行していく構造。 選択構造 – もしAならば処理Bを実行し,そうでない場合処理Cを実行する。 繰り返し構造 – Aが成り立っている間,処理Bを繰り返し実行する。 – 全てのプログラムは,この3つの構造で書かれています – では,どうやって「与えられた問題をこれら3つの構造で 表現する」のでしょうか? 言語の学習としてのプログラミング 用例を積極的に利用しよう – 以前書いたプログラム,参考書に書いてあるプログラ ム例などをよく理解し,積極的に利用,応用しよう! – 注意:人のものを写せ,ということではありません。 適当な用例が見つからない場合は – プログラムの骨組み=アルゴリズムを自分自身で考え なければなりません。 – これが出来ないと,単語や文法だけを知っていてもプ ログラムが書けません。 実習2 ~プログラミングの流れを理解しよう~ ensyu2.cのプログラムをコピーして,「メ モ帳」で開いてください。 もう一つ,メモ帳を起動してください。 ensyu2.cを見ながら,実際に自分自身の 手で同じプログラムを入力,コンパイル, 実行を行ってみましょう。 決して「コピー&貼り付け」などしないこ と! Cプログラムの構成 Cプログラムの構成 – プリプロセッサ 前処理。#include <stdio.h>がある部分。 – main関数 どのプログラムにも必ずあり,最初に実行される部分 – その他の関数(サブ関数,サブルーチン) 必要に応じて追加される。 関数の構成 – 変数宣言部 その関数内で利用する変数名とその型を宣言する – 処理部 3つの制御構造に従って処理が記述される 多くは「入力処理」「演算処理」「出力処理」の順番になる。 Cプログラムの構成 #include <stdio.h> プリプロセッサ return 0; } *サブ関数は無い main int main(void) *変数宣言部は無い { /* 画面に出力する */ printf("さぁ"); printf("C言語を"); 処理部 printf("勉強しよう!!\n"); (順次構造) printf("Hello,\n\n c \nworld\n"); 関 数 とりあえず入力して動かしてみよう ensyu3.c #include <stdio.h> int { main(void) printf("How are you?\n"); return 0; } Cプログラムの構成-1 #include <stdio.h> とりあえず,これ。 int { main(void) printf("How are return 0; } これは,「関数」と呼ばれる 処理の単位です。 関数の範囲は,{ }で囲み you?\n"); ます。この中に,実行する文 を書きます。 ‘main’は「関数名」といいます。 さて,では’int’や’void’は何で しょう? intをvoidにしてみたら? #include <stdio.h> void main(void) { printf("How are you?\n"); return 0; } こんな警告が出ます void 関数は値を返してはならない(関数 main ) はぁ? 何のこと? こうやってみよう #include <stdio.h> void main(void) { printf("How are you?\n"); return 0; } return 0を消します あれっ? 警告が消えた。。。。。 ? これがキーワード 関数が値を返す – 関数というのは,「ある値を受け取って,何か処理を行って,その 結果を出力する」ものです。この,「関数が結果を出力する」ことを 「関数が値を返す」といいます。必ず一つの結果を返します。 戻り値 – 関数の結果として出力されるデータ,つまり,「関数を実行したと ころへ返す値」のことを「戻り値」といいます。ちなみに,実行時に 関数が受け取る値のことを「引数」といいます。 戻り値の型 – プログラムでは,戻り値が数値とは限りません。無いかもしれま せん。数値としても,整数か実数か指定しなければなりません。 プログラムでは,どのようなタイプの戻り値なのかを指定する必 要があるのです。 return – 関数の中で処理を実行すると,いろいろな結果が得られます。関 数は,その結果として一つの結果だけを出力するので,いったい どの結果が関数の結果なのかを指定する必要があります。 returnは,「関数の結果はこれだよ」と指定してくれるものです。 というわけで。 #include <stdio.h> int { main(void) ‘void’は,「この関数には引数 はありません」つまり,「関数 の処理を行うとき,何も値は もらいません」という意味を表 しています。数学の関数,f(x) と同じ考え方です。 printf("How are you?\n"); return 0; } ‘return 0’は,「この関数の 結果として戻る値は,整数 値の0です」という意味です。 ‘int’は,「この関数は,int型, つまり整数の数値を結果とし て出力します(戻します)」と いう意味を表しています。ここ に’void’があると,「関数の結 果は何も戻りません」という 意味になります。 それでは,考えてみましょう。 void main(void) と書いたとき,どうして あのような警告が出たのでしょうか? 「関数の結果は何も戻ってこない」とvoid で指定しているにも関わらず,return 0と いう表現で,「関数の結果として0を戻しま す(returnする)」と指定しているためです。 main関数 実行したい処理や,何か画面に表示したい処理な どは,すべて「関数」の中に記述します。 関数は,ある役割を持った処理の集まりです。つま り,プログラムの処理実行中に,同じ処理が何度も 出てくる場合は,いちいちその処理を全て書くので はなく,関数の名前を指定して呼び出せばよい事 になります。 では,最初に実行する関数はどうやって指定すれ ば良いのでしょうか? それがmain関数です。 main関数は,全てのプログラムに一つだけある特 別な関数で,最初に実行される関数です。 では,もう一度見てみましょう 関数の戻り値 #include <stdio.h> の型を指定 関数名 関数へ与える引数 int 関数の開始 { main(void) printf("How are you?\n"); 実行される処理 return 0; main関数の戻り値の指定 関数の終了 } *空行は無視されて何も処理されません。 *大文字と小文字は区別されます。注意しましょう。 画面への出力 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>
© Copyright 2024 ExpyDoc