4章 制御の流れ2(スライド) (7/9)

4章 制御の流れ-2
くり返し(1)
フローチャートで考える
0
1
2
3
4
5
100
くり返し(2)
フローチャートで考える
0
1
2
3
4
5
止める方法は?
100
くり返し(3)
出口を作る
0
1
2
3
4
5
A>100 ならばこちら側へ分岐
100
くり返し(4)
a=0;
while (a<=100)
{
printf("%d\n",a);
a = a+1;
}
while 文
while (条件式)
{
文;
}
no
yes
/* 66666 Tachibana Masayoshi */
/* p134 list411.c */
#include <stdio.h>
int main(void)
{
int s = 1;
int total = 0;
while (s<=10)
{
total = total+s;
s = s+1;
}
printf("1から10までの和は%dです。\n",total);
return 0;
}
1から10までの和を求めるプログラム
list411.c
list411.c
1から10までの和は55です。
1から10までの和を求めるプログラム
list410.c
/* 66666 Tachibana Masayoshi */
/* p133 list410.c */
#include <stdio.h>
#include <math.h>
int main(void)
{
int s;
double a,b,c;
double value;
s =1;
printf("
printf("
逆数
2乗
平方根\n");
------------------------------\n");
while (s<=10)
{
value = s;
a = 1/value;
b = value*value;
c = sqrt(value);
printf(" %5.1f %5.3f %6.1f %6.4f\n",value,a,b,c);
s = s+1;
}
return 0;
}
逆数、2乗、平方根の数表を作るプログラム
list410.c
逆数
2乗
-----------------------------1.0 1.000
1.0 1.0000
2.0 0.500
4.0 1.4142
3.0 0.333
9.0 1.7321
4.0 0.250 16.0 2.0000
5.0 0.200 25.0 2.2361
6.0 0.167 36.0 2.4495
7.0 0.143 49.0 2.6458
8.0 0.125 64.0 2.8284
9.0 0.111 81.0 3.0000
10.0 0.100 100.0 3.1623
平方根
逆数、2乗、平方根の数表を作るプログラム
インクリメント、デクリメント(1)
increment
i++;
++i;
decrement
i--;
--i;
i = i+1;
post-increment
pre-increment
i = i-1;
post-decrement
pre-decrement
インクリメント、デクリメント(2)
post-increment
a = a*i++;
a = a*i;
i = i+1;
pre-increment
b = b*++j;
j = j+1;
b = b*j;
インクリメント、デクリメント(3)
total = 0;
s = 1;
while (s<=10)
{
total = total + s;
s++;
sを1ふやす
}
printf("結果1は%dです。\n",total);
s<10 のあとでsを1ふやす
total = 0;
s = 0;
while ((s++)<10)
{
total = total + s;
}
printf("結果2は%dです。\n",total);
インクリメント、デクリメント(4)
total = 0;
s = 0;
while (s<10)
{
++s;
sを1ふやす
total = total + s;
}
printf("結果3は%dです。\n",total);
for 文(1)
for (a=0; a<=100; a=a+1)
{
printf("%d\n",a);
}
for 文(2)
カウンタ変数
a=0;
while (a<=100)
{
printf("%d\n",a);
a = a+1;
}
初期化;
while (継続条件)
{
文;
カウンタ変数の更新;
}
for 文(3)
for (初期化;継続条件;カウンタ変数の更新)
{
文;
}
for (a=0; a<=100; a=a+1)
{
printf("%d\n",a);
}
for 文(4)
初期化、継続条件、カウンタ変数の更新をひとまとめに書ける
for (a=0; a<=100; a=a+1)
{
printf("%d\n",a);
}
a=0;
while (a<=100)
{
printf("%d\n",a);
a = a+1;
}
/* 66666 Tahibana Masayoshi */
/* p144 list416.c */
list416.c
#include <stdio.h>
int main(void)
{
int i,n;
n=0;
for (i=1;i<=10;i++)
{
n = n+i;
}
printf("for文で求めた和は%d\n",n);
n=0;
i=1;
while (i<=10)
{
n = n+i;
i++;
}
printf("while文で求めた和は%d\n",n);
return 0;
}
for文とwhile文の比較
list416.c
for文で求めた和は55
while文で求めた和は55
for文とwhile文の比較
コンマ式
for (i=0,j=29;i<30;i++,j++)
{
文1;
}
i=0;
for (j=29;i<30;i++)
{
文1;
j++;
}
コンマ式、代入式(+=)、post-incrementなど
使いすぎに注意
n=0;
for (i=1;i<=10;i++)
{
n = n+i;
}
printf("for文で求めた和は%d\n",n);
コンマ式、代入式(+=)、
post-increment
for (n=0,i=1;i<=10;n+=i++);
printf("for文で求めた和は%d\n",n);
見にくくなるので注意!
カウンタ変数は整数にする
/* 66666 Tachibana Masayoshi */
/* p146 list417.c */
#include <stdio.h>
#include <math.h>
int main(void)
{
double i,sine,cosine;
printf("三角関数\n");
printf(" i sin
cos\n");
printf("----------------------\n");
for (i=0.0;i<1.0;i+=0.1)
{
sine = sin(i);
cosine = cos(i);
printf(" %3.1f %6.4f %6.4f\n",i,sine,cosine);
}
return 0;
}
カウンタ変数は整数にする
i=1.0!!
三角関数
i sin
cos
---------------------0.0 0.0000 1.0000
0.1 0.0998 0.9950
0.2 0.1987 0.9801
0.3 0.2955 0.9553
0.4 0.3894 0.9211
0.5 0.4794 0.8776
0.6 0.5646 0.8253
0.7 0.6442 0.7648
0.8 0.7174 0.6967
0.9 0.7833 0.6216
1.0 0.8415 0.5403
カウンタ変数は整数にする
/* 66666 Tachibana Masayoshi */
/* p146 list417.c */
#include <stdio.h>
#include <math.h>
int main(void)
{
double i,sine,cosine;
printf("三角関数\n");
printf(" i sin
cos\n");
printf("----------------------\n");
for (i=0.0;i<1.0;i+=0.1)
{
sine = sin(i);
cosine = cos(i);
printf(" %3.1f %6.4f %6.4f\n",i,sine,cosine);
}
return 0;
}
修正版
カウンタ変数は整数にする
/* 66666 Tachibana Masayoshi */
/* p146 list417x.c */
#include <stdio.h>
#include <math.h>
int main(void)
{
int i;
double x,sine,cosine;
printf("三角関数\n");
printf(" i sin
cos\n");
printf("----------------------\n");
for (i=0;i<10;i++)
{
カウンタ変数は整数にする
x = i/10.0;
sine = sin(x);
cosine = cos(x);
printf(" %3.1f %6.4f %6.4f\n",x,sine,cosine);
}
return 0;
}
修正版
カウンタ変数は整数にする
三角関数
i sin
cos
---------------------0.0 0.0000 1.0000
0.1 0.0998 0.9950
0.2 0.1987 0.9801
0.3 0.2955 0.9553
0.4 0.3894 0.9211
0.5 0.4794 0.8776
0.6 0.5646 0.8253
0.7 0.6442 0.7648
0.8 0.7174 0.6967
0.9 0.7833 0.6216