バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回)...

25
バイオプログラミング第一 (第4回) 榊原 康文、佐藤 健吾 慶應義塾大学理工学部 生命情報学科

Upload: others

Post on 06-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

バイオプログラミング第一 (第4回)

榊原 康文、佐藤 健吾

慶應義塾大学理工学部 生命情報学科

Page 2: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

処理の流れ (繰り返し)

処理を繰り返す

◆1から10まで合計する

◆1番から100番までの体重の平均を求める

◆1番から100番までの点数の最高点を求める

◆ファイルの先頭から最後まで文字を読み込む

◆ ・・・

Page 3: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

インクリメント・デクリメント演算子①インクリメント演算子

◆ 変数に1を加える演算子

◆ 【変数名】++ または ++【変数名】

例) x++ ++y

例) int main(void)

int n;

n=1;

n++;

return 0;}

n=2となる

Page 4: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

インクリメント・デクリメント演算子①インクリメント演算子

◆ 変数の前に付けた場合と後に付けた場合の違い

b=++a; ⇔ a=a+1;

b=a;

(aの値がbに代入される前に,aに1が加わる)

b=a++; ⇔ b=a;

a=a+1;

(aの値がbに代入された後に,aに1が加わる)

Page 5: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

インクリメント・デクリメント演算子②デクリメント演算子

◆ 変数から1を引く演算子

◆ 【変数名】 -- または -- 【変数名】

例) x-- --y

例) int main(void)

int n;

n=1;

n--;

return 0;}

n=0となる

Page 6: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

処理の流れ (繰り返し)

(1) for 文① for (【式1】; 【式2】 ; 【式3】 )

【文】;

・ ・ ・

【文】;

【式1】が繰り返しの前に処理され,

【式2】が真の間, 【文】が繰り返し実行され,

繰り返しの最後に,【式3】が実行される

【式2】

【文】

【式1】

【式3】

Page 7: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (1から10まで合計)

#include <stdio.h>int main(void){int i,total;

total=0;for (i=1; i<=10; i++){total=total+i;

}printf(”total= %d¥n”,total);

return 0;

制御変数

初期値

最終値

インクリメント

Page 8: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例

#include <stdio.h>int main(void){int i,total;

total=0;for (i=1; i<=10; i++){total=total+i;

}printf(”total= %d¥n”,total);

return 0;

total=0

i=1, i<=10,

total=total+i

=0+1=1

i++,i=2, i<=10,

total=3

i=3, total=6

i=4, total=10

i=5, total=15

i=6, total=21

i=7, total=28

i=8, total=36

i=9, total=45

i=10,total=55

Page 9: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

for 文(1) for 文

◆ forループのインデックス(制御変数)や限界値

(最終値)は,ループ内で変更できる

◆ forループの制御変数が数値的に増えないと

いけないという制限もない

→ 極端な例

for (;;) {【文】}

は,文を永久に実行する(無限ループ)

◆ for (i=11; i<=10; i++) {【文】}

では,文は一回も実行されない

Page 10: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (1から10まで合計)

#include <stdio.h>int main(void){int i,total;

total=0;for (i=10; i >=1; i--){total=total+i;

}printf(”total= %d¥n”,total);

return 0;

初期値

最終値

デクリメント

Page 11: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例

#include <stdio.h>int main(void){int i,total;

total=0;for (i=10; i >=1; i--){total=total+i;

}printf(”total= %d¥n”,total);

return 0;

total=0

i=10,i>=1,

total=total+i

=10

i--,i=9,i>=1,

total=19

i=8, total=27

i=7, total=34

i=6, total=40

i=5, total=45

i=4, total=49

i=3, total=52

i=2, total=54

i=1, total=55

Page 12: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (階乗の計算)

#include <stdio.h>int main(void){int i,total;

total=1;for (i=1; i<=10; i++){total=total*i;

}printf(”total= %d¥n”,total);

return 0;

Page 13: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (平均を求める)#include <stdio.h>int main(void){int i,num=10 ;float x,total;

total=0;

for (i=1; i<=num; i++)

{scanf(”%f”,&x);total=total+x;

printf(”average= %f¥n”,total/num);

return 0;

Page 14: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (最大値を求める)

#include <stdio.h>

int main(void)

{int i,x,num=10 ,max;

max=0 ;

for (i=1; i<=num; i++)

{scanf(”%d”,&x);if (max<x) {max=x;}

printf(”maximum= %d¥n”,max);

return 0;

Page 15: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

while 文

(2) while 文

① while (【式】 )

【文】;

・ ・ ・

【文】;

【式】

【文】

【式】が真の間, 【文】を繰り返し実行

Page 16: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (1から10まで合計)

#include <stdio.h>int main(void){int i,total;total=0;

i=1;

while (i<=10)

{total=total+i;i++;

printf(”total= %d¥n”,total);

return 0;

制御変数

初期値

最終値

インクリメント

Page 17: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例

#include <stdio.h>

int main(void)

{int i,total;

total=0;

for (i=1; i<=10; i++)

{total=total+i;

printf(”total= %d¥n”,total);

return 0;

#include <stdio.h>

int main(void)

{int i,total;

total=0;

i=1;

while (i<=10)

{total=total+i;i++;

printf(”total= %d¥n”,total);

return 0;

Page 18: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

do-while 文

(6) do-while 文

① do

【文】;

・ ・ ・

【文】;

} while (【式】 ) ;

【式】

【文】

② 【式】が真の間, 【文】を繰り返し実行

する点は,whileと同じ

do-whileは,繰り返し処理の後で,

式を判定

セミコロン

Page 19: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

do-while 文

(6) do-while 文

◆ for (i=11; i<=10; i++) {【文】}

◆ i=11;

while (i<=10) {【文】}

では,文は一回も実行されない

◆ i=11;

do {【文】} while (i<=10);

では,文は一回実行される

Page 20: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (1から10まで合計)

#include <stdio.h>

int main(void)

{int i,total;total=0;

i=1;

do

{total=total+i;i++;

} while (i<=10);

printf(”total= %d¥n”,total);

return 0;

Page 21: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

break 文

(7) break 文

① break文は,繰り返しから抜け出し,次の処理へ移る

② 例えば,

for (・・・)

・・・

break;

・・・

};

【次の文】

外へ抜け出す

Page 22: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

continue 文

(8) continue 文

① continue文は,繰り返しを中断し,繰り返しの先頭へ

② 例えば,

for (・・・)

・・・

continue;

・・・ (残り)

};

残りを飛ばして先頭へ戻る

Page 23: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例#include <stdio.h>

int main(void)

{int i,x;

for (i=1; i<=10; i++)

{scanf(”%d”,&x);

if (x==0) {break;}

if (x<0) {continue;}

printf(”positive %d¥n”,x);

printf(”End!¥n” );

return 0;

Page 24: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

goto 文

(9) goto 文

① goto 【ラベル】;

ラベル付き文とは,

【ラベル】: 【文】

② 例えば,

int main(void)

・・・

if (n>0) {goto next;}

・・・

next:x=100;

・・・

直接ジャンプ

Page 25: バイオプログラミング第一(第4回)...バイオプログラミング第一(第4回) 榊原康文、佐藤健吾 慶應義塾大学理工学部生命情報学科 処理の流れ(繰り返し)

プログラム例 (素数の判定)

#include <stdio.h>

int main(void)

{int i,num;

scanf(”%d”,&num);

for (i=2; i<num; i++)

{if ((num % i) == 0) {break;}

if (i == num) {printf(”%d is prime¥n”,num);}

else {printf(”%d is not prime¥n”,num);}

return 0;