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

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
21
0
0

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

全文

(1)

情報ネットワーク導入ユニットⅠ

C言語

(2)

• if文

if(条件) ・・・ 条件が成立すれば実行

• if(条件) ~ else ・・・ 場合分け(成立,不成立)

• if(条件A) ~ else if(条件B) ~ else if(条件C) ~ else

・・・ 場合分け(複数の条件での場合分け)

• 等価演算子 : == (等しい) , != (等しくない)

• 関係演算子 : > < >= <=

• 論理演算子 : && (AND,かつ)

|| (OR,または)

• 条件演算子 : a==b ? a=10 : a=20;

aとbが等しいなら,aに10を,そうでないならaに20を代入)

• 複合文 (ブロック) : { }

← ひとつのかたまりとして扱われる

• switch – case文 : 場合分けに便利な方法

(3)

3章:プログラムの流れの分岐

#include <stdio.h>

int main(void) {

int vx;

printf("整数を入力:");

scanf("%d", &vx );

printf("5で割ったあまり%d¥n",

vx%5 );

return(0);

}

C言語のプログラムの流れの基本

mainから始まり上→下に順番に実行

される.

■ 上→下 の単純な流れを変えたい

場合がある.例えば,

・条件によって実行したり,

しなかったり

if文, switch文

・同じようなプログラムを繰返す

do文,while文,for文

実行の方向

C言語のプログラムの流れの基本と条件分岐,繰り返し

if(条件) ~ else ~

(4)

#include <stdio.h> int main(void){ int vx; printf("整数を入力:"); scanf("%d", &vx ); if( vx % 2 == 0 ) { printf("偶数です %d¥n",vx ); } else { printf("奇数です %d¥n",vx ); } printf("終了! ¥n"); return(0); }

if文 基本形① (if ~ else ~ )

if( 条件 ) {

}

else {

}

条件が成立した場合に, 実行するプログラムを書く 条件が成立しない場合に, 実行するプログラムを書く

if( x == y ) xとyは等しい if( vx%3 == 0 ) if( x!= y ) xとyは等しくない if( dx%2 != 0 )

if( x > y ) xはyより大きい if( x1-x2 > 0 ) if( x >= y ) xはy以上(大きいか等しい) if( x1 >= 0.5 ) if( x < y ) xはyより小さい if( 0 < sum ) if( x <= y ) xはy以下(小さいか等しい) if( sum <= 100 )

いろいろな条件

整数を入力:10 偶数です. 10 終了! 整数を入力:11 奇数です. 11 終了! 実行結果1 実行結果2 整数を読込み, 2で割った余りが0なら 偶数です そうでないなら 奇数です と表示する

(5)

#include <stdio.h> int main(void){ int vx; printf("整数を入力:"); scanf("%d", &vx ); if( vx % 2 == 0 ) { printf("偶数です %d¥n",vx ); } printf("終了! ¥n"); return(0); }

if文 基本形②(ifだけ)

if( 条件 ) {

}

条件が成立した場合に, 実行するプログラムを書く 整数を入力:10 偶数です. 10 終了! 整数を入力:11 終了! 実行結果1 実行結果2 整数を読込み, 2で割った余りが0なら 偶数です と表示する *そうでない場合は何も しない vx%2は0か? 奇数です 偶数です 終了 Yes No vx%2は0か? 偶数です 終了 Yes No

if ~ else ~

ifだけ

(6)

#include <stdio.h> int main(void){ int vx; printf("整数を入力:"); scanf("%d", &vx ); if( vx >= 90 ) { printf("%dは90以上です¥n",vx ); } else if( vx >= 80 ) { printf("%dは80以上です¥n",vx ); } else if( vx >= 70 ) { printf("%dは70以上です¥n",vx ); } else { printf("%dは69以下です¥n",vx ); } printf("終了! ¥n"); return(0); }

if文 基本形③ (if ~ else if ~ else if ~ else )

if( 条件1 ) {

}

else if( 条件2 ){

}

else if( 条件3 ){

}

else {

}

条件1が成立した場合に, 実行するプログラムを書く 整数を入力:10 10は69以下です. 終了! 実行結果1 条件1が成立しないで, 条件2が成立する場合に, 実行するプログラムを書く 条件1も2も成立しないで, 条件3が成立する場合に, 実行するプログラムを書く どの条件も成立しない場合に, 実行するプログラムを書く

(7)

教科書

List3-1 if(式)

#include<stdio.h> int main(void){ int vx; printf("整数を入力:"); scanf("%d", &vx ); if( vx % 5 ) { printf("その数は5で割り切れません¥n"); } return(0); }

教科書:

p.42の List 3-1

キーボードから読込んだ

整数値が5で割りきれな

いかを調べる

割り切らないならば「割り

切れない」表示して,そう

でないなら何もしない.

整数を入力:17 その数は5で割り切れません 整数を入力:15 実行結果1 実行結果2

if(

)・・・

式の値が

0以外なら

次のプログラムを実行,

0なら

次をとばす.

(8)

教科書

List3-2 if(式)

#include<stdio.h> int main(void){ int no; printf("整数を入力:"); scanf("%d", &no ); if( no % 2 ) { // if( no % 2 != 0 )でも同じ printf("その数は奇数です¥n"); } return(0); }

教科書:

p.43の List 3-2

キーボードから読込んだ

整数値が奇数かを調べる

整数を入力:17 その数は奇数です 整数を入力:10 実行結果1 実行結果2

if(

)・・・

式の値が

0以外なら

次のプログラムを実行,

0なら

次をとばす.

(9)

教科書

List3-3 if(式) ~ else

#include<stdio.h> int main(void){ int vx; printf("整数を入力:"); scanf("%d", &vx ); // if( vx % 5 ) { if( vx % 5 != 0) { //5で割ったあまりが0でない printf("その数は5で割り切れません¥n"); } else { printf("その数は5で割り切れます¥n"); } return(0); }

教科書:p.44の List 3-3

キーボードから読込んだ

整数値が5で割りきれな

いか,割り切れるかを調

べる

整数を入力:17 その数は5で割り切れません 整数を入力:35 その数は5で割り切れます 実行結果1 実行結果2

if(

)~

else ・・・

式の値が

0以外なら

次のプログラムを実行,

0なら

elseの次を実行.

(10)

教科書

List3-6 ==, !=

#include<stdio.h> int main(void){

int x1, x2;

printf("2つの整数を入力:¥n");

printf("整数1:"); scanf("%d", &x1 ); printf("整数2:"); scanf("%d", &x2 );

if( x1 == x2 ) { //x1とx2は等しい printf("それらの値は同じです¥n"); } else { printf("それらの値は違います¥n"); } return(0); }

教科書:p.48の List 3-6

キーボードから読込んだ2

つの整数値が等しいかど

うか?

2つの整数を入力: 整数1:-5 整数2:-5 それらの値は同じです. 2つの整数を入力: 整数1:40 整数2:45 それらの値は違います. 実行結果1 実行結果2

if( a==b )

・・・

aとbが等しいなら

次のプログラムを実行,

if( a!=b )

・・・

aとbが等しくないなら

次のプログラムを実行.

(11)

教科書

List3-7 ==, !=

#include<stdio.h> int main(void){

int x1, x2;

printf("2つの整数を入力:¥n");

printf("整数1:"); scanf("%d", &x1 ); printf("整数2:"); scanf("%d", &x2 );

if( x1 != x2 ) { //x1とx2は等しくない printf("それらの値は違います¥n"); } else { printf("それらの値は同じです¥n"); } return(0); }

教科書:p.49の List 3-7

キーボードから読込んだ2

つの整数値が等しいかど

うか?

2つの整数を入力: 整数1:-5 整数2:-5 それらの値は同じです. 2つの整数を入力: 整数1:40 整数2:45 それらの値は違います. 実行結果1 実行結果2

if( a==b )

・・・

aとbが等しいなら

次のプログラムを実行,

if( a!=b )

・・・

aとbが等しくないなら

次のプログラムを実行.

(12)

教科書

p.48~50 いろいろな条件

if( x == y )

xとyは等しい

if( vx%3 == 0 )

if( x != y )

xとyは等しくない

if( dx%2 != 0 )

if( x > y )

xはyより大きい

if( x1-x2 > 0 )

if( x >= y )

xはy以上(大きいか等しい)

if( x1 >= 0.5 )

if( x < y )

xはyより小さい

if( 0 < sum )

if( x <= y )

xはy以下(小さいか等しい)

if( sum <= 100 )

教科書:

p.48~50

(13)

• if文

if(条件) ・・・ 条件が成立すれば実行

• if(条件) ~ else ・・・ 場合分け(成立,不成立)

• if(条件A) ~ else if(条件B) ~ else if(条件C) ~ else

・・・ 場合分け(複数の条件での場合分け)

• 等価演算子 : == (等しい) , != (等しくない)

• 関係演算子 : > < >= <=

• 論理演算子 : && (AND,かつ)

|| (OR,または)

• 条件演算子 : a==b ? a=10 : a=20;

aとbが等しいなら,aに10を,そうでないならaに20を代入)

• 複合文 (ブロック) : { }

← ひとつのかたまりとして扱われる

• switch – case文 : 場合分けに便利な方法

(14)

条件演算子

a

?

b

:

c

#include<stdio.h> int main(void){

int n1, n2, max;

printf("2つの整数を入力¥n");

printf("整数1:"); scanf("%d", &n1 ); printf("整数2:"); scanf("%d", &n2 ); max = ( n1 > n2 ) ? n1 : n2; printf("大きい方の値は%dです¥n", max); return(0); }

教科書:

p.56

読込んだ2つの整数値の

大きい方を求めて表示

2つの整数を入力 整数1:83 整数2:45 大きい方の値は83です 実行結果1

a

?

b

:

c ・・・ aが0でなければb,そうでなければcの値

(条件)

?

b

:

c ・・・ 条件が成立すればb,そうでなければcの値

教科書:

p.56 List3-14

if( n1 > n2 ) { max = n1; } else { max = n2; }

(15)

条件演算子

a

?

b

:

c

教科書:

p.56

a

?

b

:

c ・・・ aが0でなければb,そうでなければcの値

(条件)

?

b

:

c ・・・ 条件が成立すればb,そうでなければcの値

vx = (n1 > n2) ? n1-n2 : n2-n1;

n1とn2の大きい方から小さい方を引いた値をvxに代入.

if (n1 > n2)

{

vx = n1 - n2;

}

else

{

vx = n2 - n1;

}

条件演算子を使ったプログラムと同じものは,

if文でプログラムできる.

(16)

複合文 (ブロック)

教科書:

p.58

{ } で囲むことで単一の文とみなされる

{

printf("ABC ¥n");

printf("DEF ¥n");

}

{

int x;

x = 5;

printf(" x = %d¥n", x );

}

if( 条件 )

文1

else

文2

条件が成立すれば

文1を実行

不成立なら

文2を実行

if( n1 > n2 )

max = n1;

else

max = n2;

if( n1 > n2 )

max = n1;

min = n2;

else

max = n2;

min = n1;

if( n1 > n2 )

{

max = n1;

min = n2;

}

else

{

max = n2;

min = n1;

}

エラー

正しい

if( n1 > n2 )

{

max = n1;

}

else

{

max = n2;

}

正しい

教科書:

p.58 List3-16

(17)

論理演算子

&&, ||

#include<stdio.h> int main(void){ int n; printf("整数nを入力:"); scanf("%d", &n ); if( (n%2 == 0) && (n %3 == 0) ) { printf("成立¥n"); } else { printf("不成立¥n"); } return(0); }

教科書:

p.60

読込んだ整数値

nが

・偶数で,

かつ

3で割り切れる

ならば,「成立」と表示する.

そうでなければ「不成立」と表

示する.

整数を入力:6 成立 実行結果1

if( 条件A

&&

条件

B ) ・・・ 条件A,条件Bともに成立するなら.

AND

if( 条件A

||

条件

B )

・・・ 条件

A,条件Bのどちらかが成立するなら.

OR

整数を入力:8

不成立

整数を入力:9

不成立

(18)

論理演算子

&&, ||

#include<stdio.h> int main(void){ int n; printf("整数nを入力:"); scanf("%d", &n ); if( (n%2 == 0) || (n %3 == 0) ) { printf("成立¥n"); } else { printf("不成立¥n"); } return(0); }

教科書:

p.60

読込んだ整数値

nが

・偶数

または

3で割り切れる

ならば,「成立」と表示する.

そうでなければ「不成立」と表

示する.

整数を入力:6 成立 実行結果

if( 条件A

&&

条件

B ) ・・・ 条件A,条件Bともに成立するなら.

AND

if( 条件A

||

条件

B )

・・・ 条件

A,条件Bのどちらかが成立するなら.

OR

整数を入力:8

成立

整数を入力:7

(19)

switch文 (switch~case文)

#include<stdio.h> int main(void){ int num; printf("整数を入力:"); scanf("%d", &num ); if( num %3 == 0 ) { //余り0 → 割り切れる printf("3で割り切れる¥n");

} else if( num % 3 == 1 ) { //余り1 printf("1余る¥n"); } else {

//余り2

printf("2余る¥n"); } return(0); }

教科書:

p.64

読込んだ整数値を

3で割った

あまりで分類

整数を入力:6 3で割切れる 実行結果 整数を入力:40 1余る

if文によるプログラム

(20)

switch文 (switch~case文)

#include<stdio.h> int main(void){ int num; printf("整数を入力:"); scanf("%d", &num ); switch( num % 3 ) { case 0 : printf("3で割り切れる¥n"); break; case 1 : printf("1余る¥n"); break; default: printf("2余る¥n"); break; //この行にはbreakは不要! } return(0); }

教科書:

p.64

読込んだ整数値を

3で割った

あまりで分類

整数を入力:6 3で割切れる 実行結果 整数を入力:40 1余る

switch文によるプログラム

(21)

switch文 (switch~case文)

#include<stdio.h> int main(void){ int sw; printf("整数を入力:"); scanf("%d", &sw ); switch( sw ) {

case 1 : printf("A¥n"); printf("B¥n"); break;

case 2 : printf("C¥n");

case 5 : printf("D¥n"); break;

case 6 :

case 7 : prnitf("E¥n"); break;

default : printf("F¥n"); break; //この行はbreak不要

} return(0); }

教科書:

p.66 List3-20

switch文の動作を確認する

整数を入力:1 A B 実行結果 整数を入力:2 C D 整数を入力:3 F 整数を入力:5 D 整数を入力:6 E

参照

関連したドキュメント

First three eigenfaces : 3 個で 90 %ぐらいの 累積寄与率になる.

READ UNCOMMITTED 発生する 発生する 発生する 発生する 指定してもREAD COMMITEDで動作 READ COMMITTED 発生しない 発生する 発生する 発生する デフォルト.

参考資料ー経済関係機関一覧(⑤各項目に関する機関,組織,企業(2/7)) ⑤各項目に関する機関,組織,企業 組織名 概要・関係項目 URL

System Organ Class 器官別大分類 High Level Group Term 高位グループ語 High Level Term 高位語. Preferred

国の5カ年計画である「第11次交通安全基本計画」の目標値は、令和7年までに死者数を2千人以下、重傷者数を2万2千人

入札説明書等の電子的提供 国土交通省においては、CALS/EC の導入により、公共事業の効率的な執行を通じてコスト縮減、品

しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与

ダウンロードしたファイルを 解凍して自動作成ツール (StartPro2018.exe) を起動します。.