1. if~ 1.1. 確認を促す まずは簡単な分岐プログラムを作ってみましょう 以下はそのフローチャートです 開始 charc よろしいですか? (y/n) 変数 c の値が 'y' と等しいかどうか c c='y' Yes よろしいですね No 終了 1: 2: 3: 4: 5: 6: 7: 8

Similar documents
JavaプログラミングⅠ

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

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

Microsoft Word - VBA基礎(3).docx

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

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

PowerPoint Presentation

JavaプログラミングⅠ

プログラミング実習I

cp-7. 配列

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

PowerPoint プレゼンテーション

情報システム設計論II ユーザインタフェース(1)

Microsoft PowerPoint - kougi4.ppt

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

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

プログラミング基礎

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

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

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Java講座

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

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

PowerPoint Presentation

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

PowerPoint プレゼンテーション

1999年度 センター試験・数学ⅡB

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

> > <., vs. > x 2 x y = ax 2 + bx + c y = 0 2 ax 2 + bx + c = 0 y = 0 x ( x ) y = ax 2 + bx + c D = b 2 4ac (1) D > 0 x (2) D = 0 x (3

memo

2

プログラミング基礎

プログラミング入門1

) 9 81

情報処理演習 B8クラス

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

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

, 1. x 2 1 = (x 1)(x + 1) x 3 1 = (x 1)(x 2 + x + 1). a 2 b 2 = (a b)(a + b) a 3 b 3 = (a b)(a 2 + ab + b 2 ) 2 2, 2.. x a b b 2. b {( 2 a } b )2 1 =

JavaプログラミングⅠ

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

Transcription:

if 文 条件分岐処理 三池 克明 if 文は条件の判定から処理を分岐させることができます これにより 状況に応じて処理内容の変更ができるようになります 目 次 1. if~...1 1.1. 確認を促す...1 1.2. 条件式で扱える演算子...4 2. if~else~...5 2.1. 確認を促す その2...5 2.2. 合否の判定...8 3. if~elseif~...10 3.1. 確認を促す その3...10 3.2. 合否の判定 その2...13 4. 演習問題...15

1. if~ 1.1. 確認を促す まずは簡単な分岐プログラムを作ってみましょう 以下はそのフローチャートです 開始 charc よろしいですか? (y/n) 変数 c の値が 'y' と等しいかどうか c c='y' Yes よろしいですね No 終了 1: 2: 3: 4: 5: 6: 7: 8: 9: #include<stdio.h> main() { char c; printf(" よろしいですか?(y/n):"); scanf("%c",&c); if1.cpp -1-

10: 11: 12: 13: if(c=='y'){ printf(" よろしいですね n"); よろしいですか?(y/n):y よろしいですね 実行例 1 よろしいですか?(y/n):n 実行例 2 よろしいですか?(y/n):Y 実行例 3 このように y を入力した場合は よろしいですね と表示され そうでなけ れば何もせずに終了します この処理を行っているのは以下の部分です 10: 11: 12: if(c=='y'){ printf(" よろしいですね n"); また 今回はじめて使用した if 文の構文は以下のとおりです 構文 : if( 条件式 ){ 処理 偽 ( 条件が成り立たない ) 条件式真 ( 条件が成り立つ ) 処理 -2-

このように条件式が真 ( 成り立つ ) ときだけ中カッコ { 内の処理を行わせることができます ここでいう条件式とは数学的 論理的なことがらを表現する式で if2.cpp の 10 行目にある c=='y' は 変数 cの値は 'y' と等しい という意味になります 数学的には c='y' ですが =は代入演算子で使用しているため C 言語では == を使います 続いて以下のソースプログラムを入力し コンパイル 実行してみましょう 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> main() { char c; printf(" よろしいですか?(y/n):"); scanf("%c",&c); if(c=='y' c=='y'){ printf(" よろしいですね n"); if2.cpp よろしいですか?(y/n):y よろしいですね 実行例 1 よろしいですか?(y/n):Y よろしいですね 実行例 2 今度は y か Y が入力されたときだけ よろしいですね と表示されるよ うになりました -3-

分算子1.2. 条件式で扱える演算子 条件式で扱える演算子を表にまとめました 必要に応じて参照するようにしましょう 類演意味読み方使用例 関係演算子 論理演算(Aが 1である または Bが 0) 子==!= < > <= >= && = ( 等しい ) ( 等しくない ) < ( より小さい ) > ( より大きい ) ( 以下 ) ( 以上 ) かつ または! 否定 イコールイコールイコール ノットイコール 小なり 大なり 小なりイコール 大なりイコール アンドアンドアンドオアオアオアノットビックリイクスクラメーション A==B (Aと Bは等しい ) A!=0 (Aは 0と等しくない ) A<B (Aは Bより小さい ) A>0 (Aは 0より大きい Aは正の数 ) A<=0 (Aは 0 以下 ) A>=80 (Aは 80 以上 ) A==1&&B==0 (Aが 1であり且つ Bが 0) A==1 B==0!(A==0) (A=0 ではない A 0) if2.cpp の 10 行目の条件式 c=='y' c=='y' は 変数 cは 'y' と等しい または変数 cは 'Y' と等しい となりますね もっとわかりやすく表現すれば 変数 cの値は 'y' あるいは 'Y' である という意味になります -4-

2. if~else~ 2.1. 確認を促す その 2 if2.cpp を少しだけ改良しました 以下がそのフローチャートです 開始 charc よろしいですか? (y/n) c c='y' または 'Y' No Yes よろしいですね 中止します 終了 そしてそのソースプログラムです 入力し コンパイル 実行してみましょう 1: 2: 3: 4: 5: #include<stdio.h> main() { char c; if3.cpp -5-

6: 7: 8: 9: 10: 11: 12: 13: 14: 15: printf(" よろしいですか?(y/n):"); scanf("%c",&c); if(c=='y' c=='y'){ printf(" よろしいですね n"); else{ printf(" 中止します n"); よろしいですか?(y/n):Y よろしいですね 実行例 1 よろしいですか?(y/n):N 中止します 実行例 2 よろしいですか?(y/n):a 中止します 実行例 3 このように Y( または y) を入力すれば よろしいですね と表示され そうでなければ 中止します と表示されるようになりました ですから実行例 3のように Yでも Nでもない文字を入力しても 中止します と表示されます これを問題と捉えるか捉えないかは状況によりまちまちですので本書では判断できません とりあえず コンピュータは逐一指示してやらないといけない と理解しておきましょう -6-

なお このプログラムで使った if 文の構文は以下のとおりです 構文 : if( 条件式 ){ 処理 A else{ 処理 B 条件式 真 処理 A 偽 処理 B -7-

2.2. 合否の判定 今度は点数から合否を判定するプログラムです 以下はその変数リストとフローチャート そしてソースプログラムです フローチャートでの変数名ソースプログラムでの変数名型 点数 score int 開始 点数 点数 点数 60 No Yes 合格です 不合格です 終了 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: #include<stdio.h> main() { int score; printf(" 点数を入力してください :"); scanf("%d",&score); if(score>=60){ printf(" 合格です n"); else{ if4.cpp -8-

13: 14: 15: printf(" 不合格です n"); 点数を入力してください :70 合格です 実行例 1 点数を入力してください :50 不合格です 実行例 2 点数を入力してください :12245 合格です 実行例 3 点数を入力してください :-134 不合格です 実行例 4 このように点数が 60 以上かそうでないかで 合格です あるいは 不合格です が表示されるようになりました ですから点数が 100 を越えていようと 0を下回ろうとお構いなしに判定をします -9-

3. if~elseif~ 3.1. 確認を促す その 3 if3.cpp を改良しました 以下はそのフローチャートとソースプログラムです 開始 charc よろしいですか? (y/n) c c は 'y' または 'Y' No Yes c は 'n' または 'N' No Yes よろしいですね 中止します ミスタイプしましたね 終了 -10-

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: #include<stdio.h> main() { char c; printf(" よろしいですか?(y/n):"); scanf("%c",&c); if(c=='y' c=='y'){ printf(" よろしいですね n"); elseif(c=='n' c=='n'){ printf(" 中止します n"); else{ printf(" ミスタイプしましたね n"); if5.cpp よろしいですか?(y/n):y よろしいですね 実行例 1 よろしいですか?(y/n):N 中止します 実行例 2 よろしいですか?(y/n):x ミスタイプしましたね 実行例 3 今回は Y N その他の文字で処理を分岐させました このように if 文は 2 つだけでなく 3 つ以上の分岐処理も可能です -11-

なお このプログラムで使った if 文の構文は以下のとおりです 構文 : if( 条件式 1){ 処理 A elseif( 条件式 2){ 処理 B else{ 処理 C 条件式 1 偽 真 条件式 2 真 偽 処理 A 処理 B 処理 C -12-

3.2. 合否の判定 その 2 if4.cpp を改良しました 以下はそのフローチャートとソースプログラムです 開始 点数 点数 0 点数 <60 No Yes 不合格です 60 点数 100 Yes 合格です No 点数が不自然です 終了 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> main() { int score; printf(" 点数を入力してください :"); scanf("%d",&score); if(0<=score&&score<60){ printf(" 不合格です n"); elseif(60<=score&&score<=100){ printf(" 合格です n"); if6.cpp -13-

14: 15: 16: 17: else{ printf(" 点数が不自然です n"); 点数を入力してください :70 合格です 実行例 1 点数を入力してください :50 不合格です 実行例 2 点数を入力してください :125 点数が不自然です 実行例 3 今回は 0~59 なら不合格 60~100 なら合格 そしてそれ以外なら不自然と判定するようにしました これにより 0より小さい あるいは 100 より大きい点数にも対応できるようになりました -14-

4. 演習問題 4-1. 試験の点数を入力させてから A~D の 4 段階評価を判定するプログラム ensyu4-1.cpp を作りなさい また以下の仕様に従うこと 0~59 点は D 判定 60~69 点は C 判定 70~79 点は B 判定 80~100 点は A 判定とする 点数は int 型で入力させる 点数が不自然な場合は警告メッセージを表示する実行例 1 点数を入力してください :79 判定は Bです 点数を入力してください :-20 点数が不自然です 実行例 2 2 4-2. 二次方程式 Ax Bx C 0 がある 各定数 A~C を入力させ二方程式を表示し さらに判別式から解の種類を表示するプログラム ensyu4-2.cpp を作りなさい なお A B Cは全て整数とする 実行例 1 xの二次方程式 Ax^2+Bx+C=0 の A B Cを入力してください ただし A B Cは全て整数とします A=2 B=16 C=1 方程式は 2x^2+16x+1=0 ですね 異なる2つの実数解です -15-

xの二次方程式 Ax^2+Bx+C=0 の A B Cを入力してください ただし A B Cは全て整数とします A=4 B=4 C=1 方程式は 4x^2+4x+1=0 ですね 重解です 実行例 2 xの二次方程式 Ax^2+Bx+C=0 の A B Cを入力してください ただし A B Cは全て整数とします A=2 B=3 C=4 方程式は 2x^2+3x+4=0 ですね 異なる2つの虚数解です 実行例 3 ヒント : 2 二次方程式 ax bx c 0 の判別式は D b 2 4ac でしたよね また D<0 なら 異なる2つの虚数解 D=0 なら 重解 D>0 なら 異なる2つの実数解 でしたよね -16-