PowerPoint プレゼンテーション

前回の復習
課題:
ある動物の t 年における数は、前年と前々年の数の
合計で表わされるという。すなわち
u(t) = u(t-1) + u(t-2)
u(0) = 1, u (1) = 1 として、u(0)から u(10) までを
1. 筆算で求めよ。
2. for文、while文を使って求める流れ図を書け。
ヒント:
u(t), u(t-1), u(t-2)をそれぞれ a, b, c と置くとよい。
この数列をフィボナッチ数といいます。
フィボナッチ数の計算(筆算)
u(t) = u(t-1) + u(t-2) において、u(0) = 1, u (1) = 1 として
u(0)から u(10) まで求める
u(2)=u(1)+u(0)=1+1=2,
u(3)=u(2)+u(1)=2+1=3,
u(4)=u(3)+u(2)=3+2=5,
u(5)=u(4)+u(3)=5+3=8,
u(6)=u(5)+u(4)=8+5=13,
u(7)=u(6)+u(5)=13+8=21,
u(8)=u(7)+u(6)=21+13=34,
u(9)=u(8)+u(7)=34+21=55,
u(10)=u(9)+u(8)=55+34=89.
while文を使った場合の流れ図
u(t) = u(t-1) + u(t-2)
a
b
c
開始
1→b, 1→c
b, c表示
2→i
no
i ≤10
yes
b+c → a
i, a 表示
b → c, a → b
i + 1→i
終了
for文を使った場合の流れ図
u(t) = u(t-1) + u(t-2)
a
b
c
開始
1→b, 1→c
b, c表示
ループ1
i : 2, 1, 10
b+c → a
i, a 表示
b → c, a → b
ループ1
終了
for文を使った場合のプログラム
/*a601013*/
#include <stdio.h>
main()
{
int a,b,c,i;
b=1;
c=1;
for(i=2;i<=10;i=i+1)
{
a=b+c;
c=b;
b=a;
}
printf("goukeiha %d\n",a);
}
プログラム作成の注意
#include <stdio.h> のように、スキマを空ける。
a=b+c;
c=b;
b=a;
を1行に書くとき、
a=b+c, c=b, b=a;
と書くのは誤り。正しくは、
a=b+c; c=b; b=a;
くり返し文: つるかめ算に挑戦
鶴と亀、合わせて56匹(羽)いる。足の数が150本のとき、
鶴、亀それぞれ何匹(何羽)いるか?
この問題を次のようなアルゴリズムで解くプログラムを
作成せよ。先ず流れ図を作成せよ。
鶴の数を t、 亀の数を k とし、最初 t = 0, k = 56 として足の
数が150 になるまで t の数を 1 づつ増やしていく (同じこと
であるが k を1づつ減らしていく)。
ヒント:くり返しで、何回繰り返したらいいかあらかじめ分からない
場合は、 while文を使うとよい。
本日の課題
前回課題を完成させる
フィボナッチ数を計算する流れ図を書き、理解する。
その上で、
1. for文を使ったプログラムを完成する。
課題提出法 cp ファイル名 ~joho1/report1/学生番号
2. while文を使ったプログラムを完成する。
課題提出法 cp ファイル名 ~joho1 /report2/学生番号
3. 鶴亀算の流れ図、プログラムを完成する。
課題提出法 cp ファイル名 ~joho1 /report3/学生番号
注
プログラムには先頭に学生番号をコメント文で入れる
コンパイルの仕方: cc ファイル名 –o 実行可能ファイル名