C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

Similar documents
プログラミング基礎

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

プログラミング基礎

JavaプログラミングⅠ

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

program7app.ppt

プログラミングA

JavaプログラミングⅠ

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

ガイダンス

Java講座

Microsoft PowerPoint - CproNt02.ppt [互換モード]

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

PowerPoint プレゼンテーション

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Microsoft PowerPoint - class04.ppt

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

PowerPoint Presentation

プログラミングA

講習No.1

kiso2-09.key

計算機プログラミング

Microsoft PowerPoint - Prog05.ppt

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - ruby_instruction.ppt

初歩のC言語ターミナル_2014_May.pages

Microsoft PowerPoint - kougi6.ppt

プログラミング入門1

物質工学科 田中晋

講習No.12

memo

PowerPoint プレゼンテーション

Microsoft Word - 3new.doc

JavaプログラミングⅠ

プログラミング実習I

Microsoft Word - no02.doc

プログラミング基礎

Microsoft PowerPoint - kougi4.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

cp-7. 配列

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - kougi7.ppt

スライド 1

memo

ファイル入出力

ポインタ変数

02: 変数と標準入出力

Microsoft PowerPoint - 4.pptx

Microsoft PowerPoint - C1(演算と変数).ppt

第1回 プログラミング演習3 センサーアプリケーション

プログラミング実習I

Microsoft PowerPoint - prog03.ppt

kiso2-03.key

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

gengo1-8

ファイル入出力

数値計算

JavaプログラミングⅠ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

gengo1-6

02: 変数と標準入出力

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

第2回講義:まとめ

Microsoft Word - no103.docx

kantan_C_1_iro3.indd

Cプログラミング1(再) 第2回

Microsoft Word - VBA基礎(3).docx

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft Word - 商業-3

ゲームエンジンの構成要素

Taro-C言語の基礎Ⅰ(公開版).j

02: 変数と標準入出力

Microsoft PowerPoint - program.ppt [互換モード]

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

PowerPoint プレゼンテーション

Microsoft PowerPoint - bp02.ppt

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

テキスト処理第 2 回 田中哲産業技術総合研究所情報技術研究部門 akira/textprocess/

Microsoft PowerPoint - 5Chap15.ppt

3. 標準入出力

ポインタ変数

Microsoft PowerPoint - kougi2.ppt

JavaプログラミングⅠ

Microsoft Word - Training10_プリプロセッサ.docx

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

02: 変数と標準入出力

Microsoft PowerPoint - 2.ppt [互換モード]

8 / 0 1 i++ i 1 i-- i C !!! C 2

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Microsoft Word - no11.docx

gengo1-2

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

Microsoft PowerPoint - C_Programming(3).pptx

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Transcription:

C 言語復習 C 言語の基礎 来週もこの資料を持参してください C 言語, ソースファイルの作成, コンパイル, 実行 1 C 言語 C 言語プログラミングの手順 とは, 計算機を動かす手順を記述したもの. 計算機に命令を与えて動かすには を作成する ことになる. C 言語はプログラミング言語の 1 個 手続き型言語に分類される. C/C++ は非常に多くの場面で使われる言語 C++ は C 言語をオブジェクト指向に拡張したもの 3 ソースファイルを作成し, コンパイルし, 実行. hello.c ソースファイル source file C 言語人間が記述する. コンパイルする compile コンパイラ compiler (Visual C++, gcc, bcc など ) hello.exe 実行ファイル executable exe マシン語通常人間に読めない C 言語では, ソースファイルを直接実行することができない. ソースファイルをコンパイルして実行ファイルを作成し, 実行ファイルを実行する. ソースファイル を 原始ファイル と呼ぶこともある ( ごくまれ ). 実行ファイルの拡張子は OS に依存する.Windows では.exe となる. 厳密には, コンパイルとリンク (link) を行い実行ファイルを作る. 4 コンパイルとリンク C 言語のソースファイルの骨格 エディタ ソースファイル abc.c エディタ ソースファイル def.c コンパイラコンパイルコンパイラコンパイル オブジェクトファイル abc.o オブジェクトファイル def.o リンカ リンク 実行ファイル xyz.exe と で本体を挟む ヘッダ (header) ファイルの読み込み. 先頭に必ず書く. ここにの本体を記述する. 標準ライブラリ 5 と で本体を挟む 6 何も起きない 文字列を表示する 1 3 4 1 3 4 printf("hello, n"); 5 半角で記述する. 大文字と小文字は明確に区別される. 上記を入力し, 実行する. Error メッセージ,Warning( 警告 ) メッセージを確認する. Error は明確な誤りへのメッセージ Warning は誤りではないが好ましくないことへのメッセージ Hello world! と表示する. printf を使えば, で囲った文字列を表示できる. n は, 改行を意味する. printf( Hello n n ); として実行. 動作を確認. 7 8

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a 10 3+4 a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は式 ; printf("hello"); a=3; a++; a; 正しいが, 通常あり得ない 9 10 文字列を表示する インデントとフリーフォーマット 1 3 4 5 printf("c lang. n"); 6 7 上から下に進む for(i=0; i<5; i++){ printf("i=%d n", i); for(i=0; i<5; i++){ printf("i=%d n", i); for(i=0; i<5; i++){ printf("i=%d n", i); 内の空白,T 文字, 改行は無視される. よって, どのように書いても問題ない. 当然, 見やすく書くことが好ましい. hello01.c 対応関係がわかりづらい. 対応関係が誤り. 11 for(i=0; i<5; i++){ printf("i=%d n", i); 理解が困難. 対応関係が分かりづらい. 1 コメント 1 3 4 /* print hello */ 5 // print hello 6 7 8 /* 9 10 */ 11 hello0.c /* と */ で挟まれた領域は, コメントとして無視される. 実行されない. // から行末までの領域も, コメントとして無視される. 実行されない. ただし, これは C++ の機能であり C 言語の機能ではない. ( 実際はほとんどの C 言語のコンパイラにこの機能が付いている ) コメント部にはデタラメに書いても問題ない. 正しい C 言語の文も無視される. 数値計算を行う 変数, 演算 13 14 演算結果の型 X 型と X 型の演算結果は X 型. int a=7, b=; double d; d = a + b; d = a / b; a + b は int 型と int 型の演算. 演算結果も int 型. a+b は 9 (int 型 ). d には 9.0 (double 型 ) が入る. a / b は int 型と int 型の演算. 演算結果も int 型. a / b は 3 (int 型 ). d には 3.0 (double 型 ) が格納される. 3.5 は格納されない. 演算結果の型 X 型と Y 型の演算結果は XorY 型. 優先度の高い型が勝つ. double > float > long > int > char の優先順 int a=7; double d=.0, e; e = a / d; a / b は int 型と double 型の演算. double 型が勝つので, 演算結果は double 型. 7.0 /.0 と解釈され, 演算結果は 3.5 (double 型 ). 15 16

演算結果の型 double d; d = 7 / ; /* int と int の演算. 結果は int の 3 */ d = 7 /.0; /* int と double の演算. 結果は double の 3.5 */ d = 7.0 / ; /* double と int の演算. 結果は double の 3.5 */ d = 7.0 /.0; /* double と double の演算. 結果は double の 3.5 */ 制御文 17 18 真偽 比較演算子 条件が成り立つ場合, その条件式は真である. 例えば, (3 < 4) は真 true (3 == 4) は偽 false a==b : a と b が等しい a!=b : a と b が等しくない a<b : b は a より大きい a<=b : b は a 以上 ( 大きいか等しい ) a>b : a は b より大きい a>=b : a は b 以上 注意! 19 比較 a==b 代入 a=b OK!= <= >= NG =! =< => 0 論理演算子 条件 && 条件論理積 (and): 両方成り立つ場合に真 条件 条件論理和 (or): 少なくとも片方が成り立つ場合に真 if( 条件式 X ){ 式 X が真の場合 ( 成り立つ場合 ), 中身 ( ) が実行される. 偽の場合 ( 成り立たない場合 ) は何も実行されない.! 条件否定 (not): 条件が成り立たないときに真. 真偽が逆転される if( 条件式 X ){ else { 条件 X が真の場合前半の が実行され, 偽の場合 ( 成り立たない場合 ) 後半 (else 部 ) の が実行される 1 if( 条件式 X ){ else if( 条件式 Y ){ else if( 条件式 Z ){ C else { D E 条件式 X が成り立つ場合, が実行され, その後 E に移る.,C,D は全て 条件式 X の else の中にあるため, たとえ条件式 Y や条件式 Z が成り立っても実行されない. 条件式 X が偽の場合に限り, 条件式 Y が検証される. 条件式 X が偽でかつ条件式 Y が真の場合, が実行され, E に移る. C,D は実行されない. 条件式 X が偽, 条件式 Y が偽, 条件式 Z が真の場合, C,E が実行される. 全てが偽の場合, D, E が実行される. 1 3 int a=1; 4 5 printf("a < 10 (a = %d) n", a); 6 else { 7 printf("10 <= a (a = %d) n", a); 8 9 3 4

1 3 int a=8; 4 5 printf("a < 10 (a = %d) n", a); 6 else { 7 printf("10 <= a (a = %d) n", a); 8 9 5 int a=8; 6 int a=1; 7 int a=3; if( 10 <= a ){ if( 0 <= a ){ if( 30 <= a ){ 8 int a=8, b=8; if( b < 10 ){ else { else { if( b < 7 ){ else { printf("d n"); if( b < 10 ){ else { else { if( b < 7 ){ else { printf("d n"); D おまけ著しく読みづらいソースコード 9 30 if( b < 10 ){ else { else { if( b < 7 ){ else { printf("d n"); if( a < 10 && b < 10 ){ else { 31 3

if( a < 10 b < 10 ){ else { if(! (a<10 b<10) ){ else { 33 34 真偽 厳密には,C 言語には条件や真や偽はない. 同じ処理を何度も繰り返すには for 文を使う. 値 ( 式分 ) が 0 以外 なら真, 0 なら偽とみなす. 注意 :NULL は 0 なので偽である. for( i=0; i<5; i++){ 処理 ; 処理 を 5 回繰り返す. Hello! Hello! Hello! if( 1+ ){ 3 は真を意味する. if( 4-4 ){ 結果, に入る 例 printf("hello! n"); else { else { 結果 0 は偽を意味する. 結果, に入る for(i=0; i<7; i++){ C 言語になれるまでは, このような変な (?) 表現は使わなくて良い. 35 36 結果 i=0 として i=1 として i= として (i=0; i<3; i++) i が 0 から 3 未満の範囲で ( まで ), i=0 i が 0 から始まる. i<3 i が 3 未満である限り続ける i++ i は 1 ずつ増える i が 0 から 3 未満 ( まで ) なので, i =0, i =1, i= の 3 回繰り返す. 37 for(i=10; i<13; i++){ for(i=0; i<6; i+=){ for(i=; 0<=i; i--){ i が 10 から始まり 13 未満の範囲で (1 まで ), 結局,i=10, i=11, i=1 の 3 回繰り返す. i が 0 から始まり 6 未満の範囲で, 繰り返す.i は ずつ増える. という意味の繰り返し. 結局,i=0, i=, i=4 の 3 回繰り返す. i が から始まり 0 以上の範囲で, 繰り返す.i は 1 ずつ減る. という意味の繰り返し. 結局,i=, i=1, i=0 の 3 回繰り返す. 38 for(i=10; i<3; i++){ for(i=3; 0<=i; i++){ i が 10 から始まり,3 未満の範囲で, 結局,(10<3 が偽なので )1 回も実行しない. i が 3 から始まり,0 以上の範囲で, 結局, 無限に繰り返す. 動作原理 printf("end n"); N i=0; Y for(i=0; ; i++){ i が 0 から始まり, 無条件で, 結局, 無限に繰り返す. 39 i++; printf("end n"); 40

動作原理 終了 i=0; i++; /*i=1 となる */ i++; /*i= となる */ i++; /*i=3 となる */ 41 for( 式 1; 式 ; 式 3 ){ 最初に式 1 を行う 式 が真である限り, ブロックの中身を繰り返す. 1 回繰り返すたびに式 3 を行う. for (i=0; i<; i++){ i が 0 になる. i< の真偽を調べる. 真である (i=0). よって,for の中のブロックに入る. ブロックが終わり,i++ を行い, ブロックの最初に戻る. i< の真偽を調べる. 真である (i=1). よって,for の中のブロックに入る. ブロックが終わり,i++ を行い, ブロックの最初に戻る. i< の真偽を調べる. 偽である (i=). よって,for を終了する. 4 for 文の中に for 文 for(j=0; j<4; j++){ 同義 for 文の中に for 文 for(j=0; j<4; j++){ printf("i=%d,j=%d n",i,j); 黄 :Hello と 1 回表示. 青 :Hello と 4 回表示. 黄色を 4 回繰り返す. 結果,4 回 3 回 =1 回繰り返す. printf() を j=0~3 の 4 回繰り返す を i=0~ の 3 回繰り返す. 結果,4 回 3 回 =1 回繰り返す. 43 44 繰り返し while 文 繰り返し do-while 文 while( 条件式 X ){ 条件 X が真である限り, 中身 ( ) を繰り返し実行する. 毎回, 条件式を評価してから, を実行する. int i=0; while( i< ){ i++; i が 0 になる. i< の真偽を調べる. 真である (i=0). よって,while の中のブロックに入る. i++ により i が 1 になる. ブロックが終わり, ブロックの最初に戻る. i< の真偽を調べる. 真である (i=1). よって,while の中のブロックに入る. i++ により i が になる. ブロックが終わり, ブロックの最初に戻る. i< の真偽を調べる. 偽である (i=). よって,while を終了する. 45 do{ while( 条件式 X ); 条件 X が真である限り, 中身 ( ) を繰り返し実行する. 毎回, を実行してから, 条件式を評価する. よって, 最低でも 1 回は実行される. int i=0; do{ i++; while( i< ); i が 0 になる. i++ により i が 1 になる. ブロックが終わり,i< の真偽を調べる. 真である (i=1). よって, 再度,while ブロックの中を実行. i++ により i が になる. ブロックが終わり,i< の真偽を調べる. 偽である (i=). よって, 再度,while ブロックの中を実行. 46 break による繰り返しの中断 無限ループ for(i=0; i<10; i++){ if( i==3 ){ break; 繰り返し中断 printf( Fin! n,i); break; を実行すると, 繰り返しが中断される. i=0 i=1 i= i=3 Fin! for(;;){ printf("hello, n"); while(1){ printf("hello, n"); for 文で条件部を書かないと, 無条件で繰り返し. 無限ループとなる. while 文で条件部に 1 と書くと, 条件が必ず成立するので無限ループとなる. (1 は真偽における 真 であるため.) 47 48

例 1, 4, 9, 16, 5, 36,,100 と出力 int i, x; for(i=1; i<=10; i++){ x = i*i; printf("%d n", x); 配列 C 言語 : 変数の宣言と利用 変数の宣言 double d; i = 3; d = 5.7; printf("i=%d, d=%lf n", i, d); i という名前の整数型変数を宣言. 以後 i を使用可能. i は, 整数を格納 ( 記録 ) できる箱. i=3, d=5.700000 d という名前の浮動小数点型変数を宣言. 変数 i に整数 3 を代入. 以後, i には 3 が入っている. 49 51 配列 C 言語 : 配列の宣言と使用 int data[3]; data[0] = 3; data[1] = 4; data[] = 5; printf("data[%d]", i); printf("=%d n", data[i]); int 型が 3 個の配列. data[0]~data[] が使用可能. "0 から始めて,3 未満 " で for 文を使うとやりやすい. 配列の宣言 ( 変数の作成 ) 配列の使用 ( 作成済みの変数の使用 ) data[0]=3 data[1]=4 data[]=5 50 5 C 言語 : 次元配列 int data[3][]; data[0][0] = 3; data[0][1] = 4; data[1][0] = 5; data[1][1] = 6; data[][0] = 7; data[][1] = 8; for(j=0; j<; j++){ printf("data[%d][%d]", i, j); printf("=%d n", data[i][j]); int 型が 3=6 個の配列. data[0][0]~data[][1] が使用可能. 長さ 個の配列 が 3 個. ( 長さ 3 の配列が 個でない ) data[0][0]=3 data[0][1]=4 data[1][0]=5 data[1][1]=6 data[][0]=7 data[][1]=8 53