プログラミング演習(後半)

プログラミング演習
初級編
2004年6月24日(木)
奈良先端科学技術大学院大学
情報科学研究科
猿渡 洋 斎藤 将人 新保 仁
switch 文:複数条件式

式の値に応じて多重分岐を行う場合に使用
 switchの式と各caseの定数式とを比較し、一致した所に
分岐する。
 break文によりswitch文から抜ける。
 一致する文がなければdefaultへ行く。
switch 文(2):例
#include <stdio.h>
main()
{
int i;
printf("Type either 0 or 1\n");
条件式に応じて
scanf(“%d”, &i);
分岐
switch (i) {
case 0:
printf(“Input is zero.\n”); break;
case 1:
printf(“Input is one.\n”); break;
default:
printf(“Input is not 0 or 1.\n”); break;
}
}
switch 文(3):break を忘れると?
#include <stdio.h>
main()
{
0 を入力してみる
int i;
printf("Type either 0 or 1\n");
scanf("%d", &i);
switch (i) {
case 0:
printf("Input is zero.\n"); break;
case 1:
printf("Input is one.\n"); break;
default:
printf("Input is not 0 or 1.\n"); break;
}
}
while 文:特定条件下のくりかえし

式の値が特定の条件を満たしている場合にのみ実行する
場合に使用
(書式例)


while (式)
文またはブロック
式が真の (0でない) 間は, 直後の文またはブロックを繰
り返す。
最初から式が偽 (0)の場合は何も実行しない。
while 文(2):例
#include <stdio.h>
main()
{
int i;
scanf("%d", &i);
while (i<5)
{
printf("i=%d\n", i);
i++;
}
}
iをひとつ大きくする
iが5より小さい間
{…} 内を実行
演習問題
演習2-1 好きな初期値、公比に基づく等比数列の最初の10項
を printf 文で標準出力に表示させよ。
また、同じ等比数列の総和を求め、標準出力に表示
させよ。
関数:科学技術計算プログラム

ソースファイルの先頭には,
 #include <stdio.h>
の次行に
 #include <math.h>
を付加.
 コンパイルの際、cc コマンドの最後に
 -lm
(マイナス・エル・エム)
を付ける。
 例: cc file.c –lm ↲
主な数学関数

引数 x, y, 戻り値,いずれも double 型.
平方根
sqrt(x)
絶対値
fabs(x)
指数関数
exp(x)
べき乗関数
pow(x,y)
xのy乗
log(x)
自然対数
log10(x)
常用対数
ceil(x)
小数点以下切り上げ
floor(x)
小数点以下切り捨て
対数
最近接整数
三角関数
三角関数
sin(x)
正弦
cos(.)
余弦
tan(x)
正接
asin(x)
逆正弦
acos(x)
逆余弦
atan(x)
逆正接
atan2(x, y)
象限別逆正接:
y/xの逆正接を符号付きで返す
演習問題
演習2-2
2次元ベクトルを二つ入力させ、
 「それぞれの大きさ(ベクトルノルム)」
 「2ベクトルの内積」
 「2ベクトルのなす角度」
を求めるプログラムを書け。 ただし,大きさが0のベクトルにも対
応できるように配慮せよ.
なお,ベクトルA=(a1, a2), B=(b1, b2)とした場合,
 Aのノルム = |A| = (a1・a1+a2・a2)の平方根,
 内積= a1・b1 + a2・b2 = |A||B|cos(A,B間の角度)
である.