使い方 1ソースプログラムの入力今回の講義では C++ 言語用の統合環境ソフトといわれるプログラムを利用します デスクトップにある CPad for C++ のアイコン ( 右参照 ) をダブルクリ ックしましょう ( 同じアイコンで Java_pad とかい エディタ部 てあるものもありますので気をつけてください ) これで 起 動します 統合環境を立ち上げると エディタ部とメッセージ部をもった画面が出てきます エディタ部はソースを入 メッセージ部 力 編集する部分で メッセージ部はコンパイラ等のメッセージを表示します ではエディター部に次のとおり入力しましょう ex01.c #include <stdio.h> int main(void) { printf("hello, world n"); 入力が終われば ファイル メニューから 名前をつけて保存 を選んで保存してください このとき 保存する場所 を変更するのを忘れないでください ファイル名は必ず ex01.c としてください 適当なフォルダ( 例えば応プロ ) を作成して その中に保存しましょう 2コンパイル 実行次にこれをコンパイルして実行形式のファイルを作成します アプリケーションの三角のボタン ( 右図参照 ) を押します そうすると メッセージ部に次のように表示され ( ) プログラムがコンパイルされたものが 実行されます ( 右 ) i
タイプミスなどがなければこのように実行されます もし タイプミスなどがありましたらエラーが出ます このときには ソースプログラムに戻って 間違いを直してください たとえば printf とすべきところを print としてしまうと のようなダイアログが出て メッセージ部につぎのようなエラーが出ます 警告 W8065 ex01.c 4: プロトタイプ宣言のない の部分のコロンの前の数字 4 がエラーのある行を意味しています このときには ミスがある可能性がありますので 自分で調べてください ソースファイルを作って コンパイル そして実行する という流れを必ず覚えていてください 講義の Web http://hakuto.mis.ous.ac.jp/~yanagi/aprog2009/ 講義で配布した資料をここに全ておいておきます 紛失 欠席したとには自分で印刷しておいてください また レポート提出もこのページから行ってもらいます ii
応用プログラミング I II 1. 基本型と演算子 1.1 基本型 プログラミング基礎 では大きく分けて整数型(int) と実数型 (double) の2 通りだけを使っていました しかし 実際は C 言語で使われる基本型は次のものがあります char int float double 文字型 8 ビット (=1 バイト ) 整数型整数型単精度浮動小数点型倍精度浮動小数点型 前の2つが整数の値を保持するための型 後 2つが実数の値を保持するための型です もちろん 実数は正確な値が保持できるわけないので 近似値となります この基本型に次のような修飾子をつけることができます signed unsigned short long 符号付きを表す (char, int) 符号なしを表す (char, int) 短い整数を表す (int) 長い整数を表す (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)); 1
ex02b.c #include <stdio.h> int main(void) { printf("%d n",sizeof(int)); 結果をみると 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, 16 ビット 32768 ~ 32767 signed short int unsigned short, unsigned short int 16 ビット 0 ~ 65535 int, signed int, long, signed long, -2147483648 ~ 2147483647 long int, 32 ビット signed long int unsigned int, unsigned long, 32 ビット 0 ~ 4294967295 unsigned long int float 32 ビット 0, 1.2 10-37 ~ 3.4 10 +38, -1.2 10-37 ~ -3.4 10 +38 double long double 64 ビット 80 ビット 0, 2.2 10-307 ~ 1.7 10 +308, -2.2 10-307 ~ -1.7 10 +308 0, 2.2 10-4931 ~ 1.1 10 +4932, -2.2 10-4931 ~ -1.1 10 +4932 2
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) と計算されています この順序にも気をつけておきましょう 3
演算子のまとめ 優先順位 演算子 名称 結合性 1 2 ( ) [ ]. -> ++ -- ++ -- sizeof & * + - ~! 関数呼出し演算子添字演算子 ( 配列 ). 演算子 ( 構造体 共用体 ) -> 演算子 ( 構造体 共用体 ) 後置増分演算子後置減分演算子 前置増分演算子前置減分演算子 sizeof 演算子単項 & 演算子 ( アドレス ) 単項 * 演算子 ( 間接演算子 ポインタ ) 単項 + 演算子 ( 符号設定 ) 単項 - 演算子 ( 符号設定 ) ~ 演算子 ( 補数 ) 論理否定演算子 3 ( 型 ) キャスト演算子右 4 5 6 7 8 * / % + - << >> < <= > >= ==!= 2 項 * 演算子 ( 積 ) 2 項 / 演算子 ( 商 ) 2 項 % 演算子 ( 剰余 ) 2 項 + 演算子 ( 和 ) 2 項 - 演算子 ( 差 ) << 演算子 ( シフト ) >> 演算子 ( 右シフト ) < 演算子 ( 大小比較 ) <= 演算子 ( 大小比較 ) > 演算子 ( 大小比較 ) >= 演算子 ( 大小比較 ) == 演算子 ( 等号 )!= 演算子 ( 不等号 ) 9 & ビット単位の AND 演算子 10 ^ ビット単位の排他的 OR 演算子 11 ビット単位の OR 演算子 12 && 論理積演算子 13 論理和演算子 14 = += -= 他 単純代入演算子複合代入演算子 右 右 4
練習問題 1.1 二つの整数を入力してもらい その二つの整数の和 差 積 商 剰余を表示するプログラムを作成しなさい ex04.c < > int ( ) { int, ; printf(" 一つ目の整数を入力してください n"); ("%d", & ); printf(" 二つ目の整数を入力してください n"); ("%d", & ); printf(" と の和は です n",,, ); printf(" と の差は です n",,, ); printf(" と の積は です n",,, ); printf(" を で除算したときの商は です n",,, ); printf(" を で除算したときの剰余は です n",,, ); 練習問題 1.2 x, y の連立方程式 x + y = a x y = b の解を表示するプログラムを作成しなさい ただし a, b はともに整数型とし 解は実数の範囲で計算しなさい a, b はプログラムで入力してもらうように作りなさい 練習問題 1.3 一つの整数を入力してもらい その整数の2 乗 3 乗 4 乗 1 乗を表示するプログラムを作成しなさい 5