「まず覚えるCの文法」
(ミス多し.校正中)
Ex2-1A: 擬似コード(#11)
//-------------------------------------
#include <stdio.h>
int main(void){
int x, y;
$[総和の計算]$
$[総和の表示]$
return 0;
}
$[総和の計算]$=${
y=0; $[x に整数を入力する]$
while(x!=0){
$[y に x の絶対値を加える]$
$[x に整数を入力する]$
}
}$
$[y に x の絶対値を加える]$=${
if(x>0){y=y+x;}else{y=y-x;}
}$
//-------------------------------------
Ex2-1B: 解答例
//-------------------------------------
#include <stdio.h>
int main(void){
int x, y;
y=0; printf("x="); scanf("%d", &x);
while(x!=0){
if(x>0){y=y+x;}else{y=y-x;}
printf("x="); scanf("%d", &x);
}
printf("y=%d\n", y);
return 0;
}
//-------------------------------------
|
問2-1. つぎの処理をするプログラムを示せ.
(1) 0 が入力されるまでキーボードから整数の
データを読み続ける.
(2) 入力された整数の絶対値の総和を計算して
画面に表示する.
(3) 入力データが整数でないときや,総和が
オーバーフローするときのの対策は考え
なくてよい.
・構造化プログラミングでは所望の処理をトップ
ダウン的に連接,選択,反復の組み合わせに分解
していきます(stepwise refinement).
(1) 連接: 文 → {文1 文2}
(2) 選択: 文 → if(式0){文1}else{文2}
(3) 反復: 文 → while(式0){文0}
・(#11)の擬似コード表現によるトップダウン的
設計例を Ex2-1A に示します.
x: 入力データの記憶用
y: 絶対値の総和の記憶用
・解答例を Ex2-1B に示します.Cでは y=y+x を
y+=x,y=y-x を y-=x と書くことができるので,
//-------------------------------------
#include <stdio.h>
int main(void){
int x, y=0;
while(1){
printf("x="); scanf("%d", &x);
if(x>0){y+=x;}
else if(x<0){y-=x;}
else{break;}
}
printf("y=%d\n", y);
return 0;
}
//-------------------------------------
と変形できます.
|