Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラムの制御構造 配列・繰り返し.

Similar presentations


Presentation on theme: "プログラムの制御構造 配列・繰り返し."— Presentation transcript:

1 プログラムの制御構造 配列・繰り返し

2 前回の復習 演算子の表の見方 選択 ans1= 1 < 2 < 3; ans2= 3 > 2 > 1;
ans1=1,ans1=2+ans1; 選択 If文、switch文 複文(ブロック)

3 配列 配列=変数名と番号を組み合わせた変数 一次元配列 int data[4]; data[0]=1; data[1]=2;
一次元配列の初期化 int data[]={1,2,3,4}; data[0] data[1] data[2] data[3] 添え字(インデックス)は0から始まる! この場合は省略可能

4 多次元配列 2次元入配列 int data[4][2]; data[0][0]=1; data[0][1]=2; data[1][0]=3;
2次元配列の初期化 int data[][2]={{1,2},{3,4},{5,6},{7,8}}; 3次元配列 Int data[3][4][2]; data[0][0] data[0][1] 1 2 3 4 6 7 8 data[3][0] data[3][1]

5 プログラムの制御構造 繰り返し while文 基本の繰り返し for文 繰り返し回数が予め決まっている do文 実行部分を必ず1回は実行する

6 while文 while文 制御式を評価して、真なら文を実行し while文の先頭に戻る。そうでなけれ ばwhile文を終了する。

7 for文 for文 式1を実行。式2を制御式として {{文}式3}を文とするwhile文 を実行する。

8 do文 do文 文を最低一回は実行し、その後は while文と同じ。

9 平均点を求める:while文を使ったもの
#include <stdio.h> #define N 100 /* 最大答案数 */ int main(void) { int Data[N], Count, Total, No_of_data; double Average; Count = 0; Total = 0;      while(scanf("%d",&Data[Count])!=EOF) { Total += Data[Count++]; } No_of_data = Count; if(No_of_data >0) { Average =(double)Total/no_of_data; printf("Average = %f\n", Average); } else { printf("No data !\n"); コメント(注釈) オブジェクト形式マクロ(マクロ命令) ここを書き換える

10 平均点を求める: for文を使ったもの #include <stdio.h> #define N 100
int main(void) { int Data[N], Count, Total, No_of_data; double Average; scanf(“%d”,&No_of_data); for(count=0,Total=0;count<No_of_data, count++) { scanf(“%d”,&Data[Count]); Total+=Data[Count]; } if(No_of_data >0) { Average = (double)Total/No_of_data; printf("Average = %f\n", Average); } else { printf("No data !\n");

11 平均点を求める: do文を使ったもの #include <stdio.h> #define N 100
int main(void) { int Data[N], Count, Total, No_of_data; double Average; scanf(“%d”,&No_of_data); count=0; Total=0; do { scanf(“%d”,&Data[Count]); Total+=Data[Count++]; } while (count<No_of_count) if(No_of_data >0) { Average = (double)Total/No_of_data; printf("Average = %f\n", Average); } else { printf("No data !\n");

12 繰り返しの制御を途中で変える break breakを含む文の直後に制御を移す
continue continueを含む文の最後に空文を仮定し  てそこに制御を移す goto gotoで示されたラベルの付いた文に制御  を移す  

13 break,continue,gotoの流れ
{ break; } { continue; } { goto L1; } L1: 文  or ;/* 空分*/ break continue goto

14 0点が入力されるまでの平均を求める #include <stdio.h> If(Count >0) {
#define N 100 int main(void) { int Data[N], Count, Total, No_of_data; double Average; scanf("%d", &No_of_data); for(Count=0,Total=0;Count<No_of_data;             Count++){ scanf("%d",&Data[Count]); if(Data[Count]==0) break; Total+=Data[Count]; } If(Count >0) { Average =(double)Total/Count; printf("Average = %f\n", Average); } else { printf("No data !\n");

15 60点以上の人の平均点 #include <stdio.h> if(Subcount >0) {
#define N 100 int main(void) { int Data[N], Count, Total, No_of_data; double Average; int Subcount; scanf("%d", &No_of_data); for(Count=0,Total=0,Subcount=0;Count<No_of_data;             Count++){ scanf("%d",&Data[Count]); if(Data[Count] < 60) coutinue; Total+=Data[Count]; Subcount++; } if(Subcount >0) { Average =(double)Total/Subcount; printf("Average = %f\n", Average); } else { printf("No data !\n");

16 異常な値が入力されたら終了 #include <stdio.h> #define N 100 int main(void) {
int Data[N], Count, Total, No_of_data; double Average; scanf(“%d”,&No_of_data); for(count=0,Total=0;count<No_of_data, count++) { scanf(“%d”,&Data[count]);            if(Data[Count]<0 || Data[Count]>100) goto Err; Total+=Data[count]; } if(No_of_data >0) { Average = (double)Total/No_of_data; printf("Average = %f\n", Average); } else { printf("No data !\n"); return(0); Err: printf(“Invarid data is input !\n”);


Download ppt "プログラムの制御構造 配列・繰り返し."

Similar presentations


Ads by Google