• 検索結果がありません。

Microsoft Word - no02.doc

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft Word - no02.doc"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

使い方 ①ソースプログラムの入力 今回の講義では、C++言語用の統合環境ソフトと いわれるプログラムを利用します。デスクトップに ある CPad for C++のアイコン(右参照)をダブルクリ ックしましょう。(同じアイコンで Java_pad とかい てあるものもありますので気をつけてください。)これで、起 動します。統合環境を立ち上げると、エディタ部とメッセー ジ部をもった画面が出てきます。エディタ部はソースを入 力・編集する部分で、メッセージ部はコンパイラ等のメッセ ージを表示します。 ではエディター部に次のとおり入力しましょう。 ex01.c #include <stdio.h> int main(void) { printf("Hello, world¥n"); return (0); } 入力が終われば、「ファイル」メニューから「名前をつけて 保存」を選んで保存してください。このとき、「保存する場 所」を変更するのを忘れないでください。ファイル名は必ず 「ex01.c」としてください。適当なフォルダ(例えば応プ ロ)を作成して、その中に保存しましょう。 ②コンパイル・実行 次にこれをコンパイルして実行形式のファイルを作成します。 アプリケーションの三角のボタン(右図参照)を押します。そうす ると、メッセージ部に次のように表示され(左)、プログラムがコ ンパイルされたものが、実行されます(右)。 エディタ部 メッセージ部

(2)

タイプミスなどがなければこのように実行されます。もし、タイプミスなどがありましたらエラーが 出ます。このときには、ソースプログラムに戻って、間違いを直してください。たとえば、「printf」 とすべきところを「print」としてしまうと、左のようなダイアログが出て、メッセージ部につぎの ようなエラーが出ます。 「警告 W8065 ex01.c 4:プロトタイプ宣言のない…」の部分のコロンの前の数字 4 がエラーのあ る行を意味しています。このときにはミスがある可能性があります ので、自分で調べてください。 「ソースファイルを作って、コンパイル、そして実行する」という流れを必ず覚えていてください。

講義の Web

http://hakuto.mis.ous.ac.jp/~yanagi/aprog2009/

講義で配布した資料をここに全ておいておきます。紛失、欠席したとには自分で印刷しておいてくだ さい、。また、レポート提出もこのページから行ってもらいます。        

(3)

応用プログラミング I・II

1.

基本型と演算子

1.1 基本型 「プログラミング基礎」では大きく分けて整数型(int) と実数型(double) の2通りだけを使っ ていました。しかし、実際は C 言語で使われる基本型は次のものがあります。 char 文字型・8 ビット(=1 バイト)整数型 int 整数型 float 単精度浮動小数点型 double 倍精度浮動小数点型 前の2つが整数の値を保持するための型、後2つが実数の値を保持するための型です。もちろん、実 数は正確な値が保持できるわけないので、近似値となります。 この基本型に次のような修飾子をつけることができます。 signed 符号付きを表す(char, int)

unsigned 符号なしを表す(char, int) short 短い整数を表す(int)

long 長い整数を表す(int), 拡張精度を表す(double)

「短い」とか「長い」とかありますが、これに関しては C 言語の規格書で定義されていないためで す。short より long が長いビット数を持つということだけが規定されています。実際、この大き さはシステム・処理系によって異なります。 今回使っている Borland C++ Compiler では、次のようになっています。 short int = 16ビット = 2 バイト long int = 32ビット = 4 バイト では、「プログラミング基礎」で使った int は何ビットでしょうか? sizeof という型の大きさ (バイト) を調べる演算子がありますのでそれを使って調べてみましょう。 ex02a.c #include <stdio.h> int main(void) { int x; printf("%d¥n",sizeof(x)); return (0); }

(4)

ex02b.c #include <stdio.h> int main(void) { printf("%d¥n",sizeof(int)); return (0); }

結果をみると、4 バイトですから int = long int となっています。しかし、これは Borland C++ Compilerの仕様です。単に int としたとき、それを short int とみなすか long int とみなすか はシステムやコンパイラで異なります。

まとめると表 1 のような型が利用できます。

表 1 基本データ型

表記 ビット数 値の範囲

char, signed char 8ビット –128 ~ 127 unsigned char 8ビット 0 ~ 255 short, signed short,

short int,

signed short int

16ビット –32768 ~ 32767 unsigned short,

unsigned short int 16ビット 0 ~ 65535 int, signed int,

long, signed long, long int,

signed long int

32ビット -2147483648 ~ 2147483647

unsigned int, unsigned long, unsigned long int

32ビット 0 ~ 4294967295 float 32ビット 0, 1.210-37 ~ 3.410+38, -1.210-37~ -3.410+38 double 64ビット 0, 2.210-307 ~ 1.710+308, -2.210-307 ~ -1.710+308 long double 80ビット 0, 2.210-4931 ~ 1.110+4932, -2.210-4931 ~ -1.110+4932

(5)

1.2 演算子の優先順序 「プログラミング基礎」ではいくつかの演算子を習ってきました。このまとめをします。次のプロ グラムを実行するとどのような数値が表示されるでしょうか? ex03.c 1 :#include <stdio.h> 2 : 3 :int main(void) { 4 : int x, y; 5 : 6 : x = 1 + 2 * 3; 7 : y = 5 - 3 + 1; 8 : printf("x=%d, y=%d¥n",x,y); 9 : 10 : y = 5 +- x; 11 : printf("x=%d, y=%d¥n",x,y); 12 : 13 : y = x == 5; 14 : printf("x=%d, y=%d¥n",x,y); 15 : 16 : y = x = 5; 17 : printf("x=%d, y=%d¥n",x,y); 18 : 19 : return(0); 20 :} 10 行目ですが、「+-」という演算子は存在しません。「+」と「-」にわけて考えます。後の「-」は 負の記号を表す「-」です。つまり「y = 5 + (-x)」と同じ意味になるのです。13 行目は「x == 5」 を計算して、その結果を y に代入しているのです。同様に 16 行目は「x = 5」を計算して、その結 果を y に代入しています。 普通の加減乗除と同様に、C 言語でも演算に優先順位が定まっています。式はその優先順位の順序 で行われるのです。まだ習っていない演算子もありますが、まとめておきます。 なお、結合度というのは同じ優先順位のものがあったとき、それが右から計算されるか左から計算 されるかを表しています。実際、7 行目は「y = (5 - 3) + 1」と計算され、16 行目は「y = (x = 5)」と計算されています。この順序にも気をつけておきましょう。

(6)

演算子のまとめ 優先順位 演算子 名称 結合性 1 ( ) [ ] . -> ++ -- 関数呼出し演算子 添字演算子(配列) . 演算子(構造体・共用体) -> 演算子(構造体・共用体) 後置増分演算子 後置減分演算子 左 2 ++ -- sizeof & * + - ~ ! 前置増分演算子 前置減分演算子 sizeof演算子 単項 & 演算子(アドレス) 単項 * 演算子(間接演算子・ポインタ) 単項 + 演算子(符号設定) 単項 - 演算子(符号設定) ~ 演算子(補数) 論理否定演算子 右 3 (型) キャスト演算子 右 4 * / % 2項 * 演算子(積) 2項 / 演算子(商) 2項 % 演算子(剰余) 左 5 + - 2項 + 演算子(和) 2項 - 演算子(差) 左 6 << >> << 演算子(左シフト) >> 演算子(右シフト) 左 7 < <= > >= < 演算子(大小比較) <= 演算子(大小比較) > 演算子(大小比較) >= 演算子(大小比較) 左 8 == != == 演算子(等号) != 演算子(不等号) 左 9 & ビット単位の AND 演算子 左 10 ^ ビット単位の排他的 OR 演算子 左 11 | ビット単位の OR 演算子 左 12 && 論理積演算子 左 13 || 論理和演算子 左 14 = += -=他 単純代入演算子 複合代入演算子 右

(7)

練習問題 1.1 二つの整数を入力してもらい、その二つの整数の和、差、積、商、剰余を表示するプログラムを作成 しなさい。 ex04.c ________ <_______> int ____(____) { int ___, ___; printf("一つ目の整数を入力してください¥n"); _____("%d", &___); printf("二つ目の整数を入力してください¥n"); _____("%d", &___); printf("__と__の和は__です。¥n", ___, ___, ___ _ ____); printf("__と__の差は__です。¥n", ___, ___, ___ _ ____); printf("__と__の積は__です。¥n", ___, ___, ___ _ ____); printf("__を__で除算したときの商は__です。¥n", ___, ___, ___ _ ____); printf("__を__で除算したときの剰余は__です。¥n", ___, ___, ___ _ ____); return (0); } 練習問題 1.2 x, yの連立方程式

x + y = a

x  y = b







の解を表示するプログラムを作成しなさい。ただし、a, b はともに整数型とし、解は実数の範囲で計 算しなさい。a, b はプログラムで入力してもらうように作りなさい。 練習問題 1.3 一つの整数を入力してもらい、その整数の2乗、3乗、4乗、1乗を表示するプログラムを作成し なさい。

表 1  基本データ型

参照

関連したドキュメント

の知的財産権について、本書により、明示、黙示、禁反言、またはその他によるかを問わず、いかな るライセンスも付与されないものとします。Samsung は、当該製品に関する

はありますが、これまでの 40 人から 35

わかりやすい解説により、今言われているデジタル化の変革と

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

基準の電力は,原則として次のいずれかを基準として決定するも

高さについてお伺いしたいのですけれども、4 ページ、5 ページ、6 ページのあたりの記 述ですが、まず 4 ページ、5

○齋藤部会長 ありがとうございました。..

これからはしっかりかもうと 思います。かむことは、そこ まで大事じゃないと思って いたけど、毒消し効果があ