SlideShare ist ein Scribd-Unternehmen logo
1 von 25
C++講習会
条件分岐・繰り返し処理
条件分岐
(場合分け)
if文:条件式が真のときのみ
{ }の中の式を実行する
if(条件式){
実行文
}
条件式
実行文
真
偽
else文:if文の条件式が偽のときに実行する
文を書くときに使う
if(条件式){
実行文1
}else{
実行文2
}
条件
実行文1
真
偽
実行文2
if文、else文を使ったサンプルコード
int main(){
int A;
int B;
cin >> A >> B ;
if(A<B){
cout << "A < B" << endl;
}
else{
cout << "A >= B" << endl;
}
return 0;
}
A<B のとき
この式を実行する
A<B でないとき
この式を実行する
条件式を書くときのイコールに注意点!
数学 プログラミング
AとBは等しい
(等号) A=B A==B
AはB以上だ
(不等号) A≧B A>=B
AはB以下だ
(不等号) A≦B A<=B
AはBと異なる A≠B A!=B
else if:条件式を判断して多分岐を行う
if(条件式1){
実行式1
}
else if(条件式2){
実行式2
}
else{
実行式3
}
真
条件1
式1
真
偽
式2
条件2
式3
偽
if、else、else ifを使ったサンプルコード
int main(){
int A;
int B;
cin >> A >> B ;
if( A==B ){
cout << "A = B" << endl;
}
else if( A<B ){
cout << "A < B" << endl;
}
else{
cout << "A>B" << endl;
}
return 0;
}
A==B のとき
この式を実行する
A==B でない かつ
A<B のとき
この式を実行する
A==B でない かつ
A<B でないとき
この式を実行する
AtCoder Beginner Contest 054 A
を解いてみよう!
練習問題:AtCoder Beginner Contest 031 A
攻撃力Aと防御力Dが与えられる
レベルアップするときに、どちらか片方の数値を
1だけ増やすことができる
レベルアップ後の攻撃力と防御力の積の最大値を求めよ
#include<iostream>
using namespace std;
int main(){
int A, B;
cin >> A >> B ;
int x = (A+1) * B;
int y = A * (B+1);
練習問題:AtCoder Beginner Contest 031 A
解法1
攻撃力を1増やす場合と防御力を1増やす場合を両方試し
てみて、大きい方を出力する
if(x > y){
cout << x << endl;
}
else{
cout << y << endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main(){
int A, B;
cin >> A >> B;
練習問題:AtCoder Beginner Contest 031 A
解法2
レベルアップ前の値のうち、小さい方を1増やす
if(A < B){
cout << (A+1) * B << endl;
}
else{
cout << A * (B+1) << endl;
}
return 0;
}
練習問題:じゃんけん
A君とB君がじゃんけんをする
A君の出した手とB君の出した手が与えられるので
A君が勝ったら"A"、B君が勝ったら"B"を、引き分けなら
"C"を出力してください
ただし、入力(A君B君が出した手)は1~3の数字
グーのとき1
チョキのとき2
パーのとき3
例1
入力:1 3
出力:B
例2
入力:2 2
出力:C
繰り返し処理
(ループ)
コードの中で同じことを何度も書くのは辛い...
例
Hello World!を200回出力する
<コード>
int main(){
cout <<"Hello World!"<<endl;
cout <<"Hello World!"<<endl;
cout <<"Hello World!"<<endl;
cout <<"Hello World!"<<endl;
・・・
やってること同じだしもっと簡潔に書きたい…
⇒while文、for文
while文:条件式が真のあいだ繰り返す
while(条件式){
実行文
} 条件式
実行文
真
偽
目標:2のN乗を求めたい
変数Nに数を入力する。変数Aを使って、2
のN乗を計算する。
手順:
1. 変数Nに数を代入する。
2. 変数Aに 1 を代入する。
3. Aに 2 を N 回かける。
a. A に 2 を1度かける。
b. N を 1 減らす
c. N が 0 なら手順 "4" へ、
そうでなければ 手順 "a" へ戻る。
4. 変数 A を出力する
while文を使ったサンプルコード
int main(){
int N;
int A=1;
cin >> N ;
while( N>0 ){
A = A*2 ;
N = N-1 ;
}
cout << A << endl;
return 0;
}
N>0 のとき
この式を実行する
for文:同じことを繰り返し処理させるときに使う。
for( ; ; ){
}
初め 条件式 毎回最後
毎回やる処理
繰り返しする内容を書く
初めにやる内容を書く
㊟繰り返し処理をする前に1回だけ行わ
れる
処理を繰り返す条件
繰り返すたびに
最後にする処理を書く
例
int i,n=1;
for( i=0 ; i<10 ; i++ ){
n=n*2;
}
cout << n <<endl;
for文の流れ
nに1が保管される
iに0が保管される
nに2がかけられる
i<10が成り立つ?
iに1を足す
nを出力
Yes!!
No
もっと具体例で見てみよう!
10回2を足したい。
iは最初0
i<10が成り立てばそのまま処理を続ける
処理が一回行われるたびに i に1が足される。
そうでない(つまりi>=10)になるとループが終わ
る。
結果的に0~9の10回ループが回る。
iはループをカウントするためだけにある!
int main(){
int ans=0;
int i;
for( i=0 ; i<10 ; i++ ){
ans=ans+2;
}
cout << ans << endl;
return 0;
}
もっと他にも… 1~10までの和を求めてみよう
int main(){
int ans=0;
int j=1;
for( ; j<=10; j++){
ans=ans+j;
}
cout << ans << endl;
return 0;
}
jはループカウンタ(何回繰り返し
たかを覚えておく変数)
宣言時に初期化してるのでfor文
の中で初期化しなくて良い。
ansにjを毎回足していく
jをうまく使うこともできる!
i++
iに保管されている値を1増やす演算
子
他に...
i--
iに保管されている値を1減らす演算
子
これは少しややこしいので、
これぐらいを知っておけばいいです
⇒i=i+1してるのと同じ
⇒i=i-1してるのと同じ
補足
while文とfor文の違い
while(条件式){
実行文
}
for( 初め ; 条件式 ; 毎回最後){
実行文
}
int i = 1;
int x = 0;
while( i <= 10 ){
x = x + i ;
i++;
}
int i;
int x = 0;
for( i = 1 ; i <= 10 ; i++ ){
x = x + i ;
}
練習問題:NからMまでの偶数を小さい順に出力せよ
コンパイル方法
$ g++ pra.cpp
$ ./a.out プログラムを
書いている
ファイルの名前
#include<iostream>
using namespace std;
int main(){
int N, M;
cin >> N >> M ;
return 0;
}
ここに書く!!
例
入力:1 10
出力:2
4
6
8
10

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3
 
言語処理系入門€2
言語処理系入門€2言語処理系入門€2
言語処理系入門€2
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第3回 ‟条件とループ„
 
私を SKI に連れてって
私を SKI に連れてって私を SKI に連れてって
私を SKI に連れてって
 
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
 
Emcjp item21
Emcjp item21Emcjp item21
Emcjp item21
 
Stristr
StristrStristr
Stristr
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
ポインタの勉強資料
ポインタの勉強資料ポインタの勉強資料
ポインタの勉強資料
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
 
みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料みんなで Swift 復習会 GO! in 沖縄・発表資料
みんなで Swift 復習会 GO! in 沖縄・発表資料
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
C++ tips4 cv修飾編
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編
 
Pfds20120304
Pfds20120304Pfds20120304
Pfds20120304
 
アルゴリズムとデータ構造2
アルゴリズムとデータ構造2アルゴリズムとデータ構造2
アルゴリズムとデータ構造2
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 

Ähnlich wie 条件分岐・繰り返し処理

Ähnlich wie 条件分岐・繰り返し処理 (9)

講座C入門
講座C入門講座C入門
講座C入門
 
cp-5. 繰り返し計算
cp-5. 繰り返し計算cp-5. 繰り返し計算
cp-5. 繰り返し計算
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
 
業務報告会
業務報告会業務報告会
業務報告会
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算
 
[xDNCL] 配布資料
[xDNCL] 配布資料[xDNCL] 配布資料
[xDNCL] 配布資料
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
プログラミング
プログラミングプログラミング
プログラミング
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

条件分岐・繰り返し処理