Presentation is loading. Please wait.

Presentation is loading. Please wait.

多重ループ 繰り返し構造:補足事項 第8回[平成16年6月8日(火)]:PN0 4ー08. ppt 1 繰り返し構造(for)の復習 2 演算子の復習 3 多重ループ 4 繰り返し構造の補足:break文、 continue 文 5 その他(プログラムの要素と書式) 6 演習 今日の内容.

Similar presentations


Presentation on theme: "多重ループ 繰り返し構造:補足事項 第8回[平成16年6月8日(火)]:PN0 4ー08. ppt 1 繰り返し構造(for)の復習 2 演算子の復習 3 多重ループ 4 繰り返し構造の補足:break文、 continue 文 5 その他(プログラムの要素と書式) 6 演習 今日の内容."— Presentation transcript:

1 多重ループ 繰り返し構造:補足事項 第8回[平成16年6月8日(火)]:PN0 4ー08. ppt 1 繰り返し構造(for)の復習 2 演算子の復習 3 多重ループ 4 繰り返し構造の補足:break文、 continue 文 5 その他(プログラムの要素と書式) 6 演習 今日の内容

2 皆さんのミニレポートから しばらく休んでいたので、だいぶ進んでいたので頑 張って追いつけるようにしたいです。 休まないで ね! 教科書・ppt忘れてしまいました。反省 忘れな いでね! さぶいです。冷房より窓を開ける方が今の時期は過 ごしやすいと思うのですが・・・。冷房を弱くしま しょう だいぶわかった。 goodです 教の授業は前回の while 文、 do-while 文の復習を スライドを多く使って説明したので分かりやすかっ た。 増減演算子や複合代入演算子を習って、プログラム が少し短くなった気がする。今回は85%以上理解 できたと思う。 プログラムを書く効率が上がりま すよ 今日は途中までの流れは良かったけれど、最後の課 題を考える時間がほとんど無かった。 反省します とても難しいと思いました。 教科書で復習を! 講義の出欠席を採るのが早い。個々によって2,3 分のズレがあるのでその辺は多めに見て欲しい。 一度だけ、今までの総復習を講義でやらなくてもい いが、。先生のフォルダーにでも復習問題でも設け て欲しい。 そのうち、過去問を掲載します。 今週は先週よりは理解することができました。 good です 30~40%分かった。 更に複雑になってきました。良く整理しておいて下 さい。 何となく理解できたと思う。しっかり復習して ’ 何と なく ’ ではないようにしたい。 後置演算子と前置演算子をうっかり使い間違えそう なので、しっかり理解して覚えたい。 これで、プログラムに重要な if や繰り返し構造を習 得したので、後はプログラムを組む考え方の習得を しないといけないと思った。 考え方を身につける のは大切です 今回の授業は do と while の構造についてでしたが、 今回の授業だけではまだ完全には理解できない部分 が多いです。後は、自分で復習するなり演習するな り何とか消化しようと思います。 復習よろしく 結構覚えることが多くて混乱しました。自分で復習 します。 do-while 文と while 文の使い分けが7割ぐらい分 かりました。また、今回新しく for 文を習ったので 分かるようにしておきたいです。 演習をたくさん しよう もうちょっと早く終わって欲しい。 努力します

3 構造化プログラミング 順次構造 A B B 判断 A true false 判断 A true false 選択構造 ・二者択一、 複数場合分け ・ if 文、 switch 文 繰り返し(反復)構造 ・定数回繰り返し、前判断、後判 断 ・ for 文、 while 文、 do-while 文 どの構造も入口と出口 が一つだけ 復習

4 for 文 例 for ( k=1; k<=200; k=k+1) printf("A"); for( 初期設定式 ; 継続条件式 ; 再設定式 ) 文 初期設定式 継続条件式 文 再設定式 初回の1回のみ 文実行後再設定 1(true) なら継続 0(false) で終了 k=1 k<=200 ? printf("A") k=k+1 復習

5 演算子の復習 複合代入演算子 @= @ → + - * / % 等 a @= ba = a @ b 復習 i++ i = i + 1 i-- i = i - 1 増分演算子 減分演算子 式が評価される 前に1だけ増減 する 式が評価された後 で1だけ増減する ++i --i (前・後)置・(増・減)分演算子

6 ( 前・後 ) 置 ( 増・減 ) 分演算子の演 習 ++b; b++; a=++b; a=b++; --b; b--; a=--b; a=b--; b=5; を実行した後、次の式をそれぞれ 別々に実行すると、 a,b の値は? a b -- -- -- --

7 一定回数の繰り返し:いろい ろ for ( i=0; i<n; i++) f=f * a; 一定回数を繰り返す for 文と while 文 例えば、 a の n 乗を計算する場合 a(=5) を n(=4) 回掛けるとする。 for ( i=1; i<=n; i++) f=f * a; while ( n-- > 0) f = f * a; while ( --n >= 0) f = f * a; int i, a=5, n=4, f=1; とする

8 一定回数の繰り返し:いろい ろ while (n-->0) f * = a; while (--n>=0) f * = a; int i, a=5, n=4, f=1; とする まず -- を実行し、次に 条件 (>=0) を判断(評価)す る 条件 (>0) を判断(評価)し、 次に -- を実行する n=n-1 n を判断 n=n-1 n を判断 n→3,2,1,0 n→4,3,2,1 n→0→-1 n→-1

9 多重ループ (p.78-) 次のような九九の表を作ってみよう 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 : 9 18 27 36.... 81 j 列 → i 行 ↓ for ( i ; i ; i ) { for ( j ; j ; j ) printf("%3d",i * j); ; }

10 演習(つづき) 前に作った九九の表に枠などを入れよう  1 行目と2行目の間に = だけの行  左端の数字の後に : の列 を入れる for と printf を駆使して作ろう 1: 2 3 4 5 6 7 8 9 ========================== 2: 4 6 8 10 12 14 16 18 3: 6 9 12 15 18 21 24 27 : 9: 18 27 36.... 81 j 列 → → i行i行

11 演習(つづき) for ( i ; i ; i ) { printf("%1d:",i); for ( j ; j ; j ) printf("%3d",i * j); printf("\n"); if ( ) { for ( k ; k ; k ) printf("="); printf("\n"); } } 1: 2 3 4 5 6 7 8 9 ========================== 2: 4 6 8 10 12 14 16 18 3: 6 9 12 15 18 21 24 27 : 9: 18 27 36.... 81 j 列 → → i行i行

12 前回の課題の発展問題 整数nを入力せよ: 30 約数は、 1 2 3 5 6 10 15 30 整数nを入力せよ: 29 約数は、 1 29 : 素数です。 自然数 n について、 1~n までの すべての値に対する剰余を計算して、n の約数をすべて表示せよ。また、約数の 数が2個(1と自分自身) 「素数で す。」と表示せよ。 上の課題で、nが 2~500までの数 について調べ、素数表を作れ。  多重ループを利用する 素数は 2 3 5 ・・・

13 int n, m, cnt=0; printf(" 整数を入力せよ \n"); scanf("%d",&n); printf(" 約数は "); for ( m ; m ; m ) if ( ) { printf(" %3d",m); cnt++; } if( ) puts(": 素数です \n"); 前回の課題

14 int main(void) { int n, m, cnt; printf(" 素数は \n"); for ( n ; n ; n ) { cnt = 0; for ( m ; m ; m ) if ( ) ; if ( ) printf("%4d",n); } }

15 文字、文字列の出力 printf("x= %f\n", x); 文字列・書式を用いた値を出力す る puts(" 番号・氏名 "); 二つ以上の文字(文字列) を 改行付きで出力する (p.14) putchar('a'); putchar('\n'); 一つの文字 ( 含:制御文 字 ) を出力する (p.69) 'a'( 一文字 ) と "a"( 文字列 ) の違いは? a a\0 (p.208) 終端印

16 繰り返し構造内の continue 文 for 文、 while 文、 do 文の繰返し部分 内で条件式を用いて continue により 繰返し部分の最後にある } に跳躍で きる while ( ・・ ) { 文 1 文 2 ・・ 文 n-1 if ( 条件式 ) continue; 文 n 文 n+1 ・・ 文 m }

17 for文による無限ループと break 文 for ( ; ; ) 文 は無限ループ(永久に文を実行し続け る) 脱出のためには、 break を使う for ( ; ; ) { printf(" 文字を入力 (Z,z で終 了 )?"); scanf(" %c",&c); if (c=='Z' || c=='z') break; }

18 continue 文と break 文 for 文、 while 文、 do 文の繰り返し部分 内で 条件式を用いて、 continue により、繰り返し部分の最後 にある } に跳躍し、次の繰り返しに移 る break により、繰り返しを終了(脱 出)する while ( ・・ ) { 文 1 ・・ 文 n-1 if ( 条件式 ) continue; 文 n ・・ 文 m }

19 プログラムの要素と書式 (p.82- ) キーワード 識別子:名前の付けたか 区切り子: [ ] ( ) { } : = ; 等 演算子 (p.177) 定数、文字列リテラル 'z' 3 "abc" 等 自由形式:制限事項あり 隣接文字列リテラルの結合 "ab" "cd" インデンテーション:リストは読み やすく

20 インデンテーションの大切さ for ( i=1; i<=9; i++) { printf("%1d:",i); for ( j=2; j<=9; j++) printf("%3d",i * j); printf("\n"); if ( i==1 ) { for ( k=1; k<=26; k++) printf("="); printf("\n"); } }

21 インデンテーションの大切さ for ( i=1; i<=9; i++) { printf("%1d:",i); for ( j=2; j<=9; j++) printf("%3d",i * j); printf("\n"); if ( i==1 ) { for ( k=1; k<=26; k++) printf("="); printf("\n"); } }

22 今日の課題 *を利用して、三角形や四角形を表示し てみよう。 (p.80,81) 辺1:3 辺2:5 *** *** *** *** *** 何段ですか:5 * ** *** **** *****

23 縦長・横長の四角形の表示 / * hen1, hen2 に値を入力する * / if( ) { tate=hen1; yoko=hen2; } else { tate=hen2; yoko=hen1; } for ( i=1; i<=tate; i++) { for ( j=1; j<=yoko; j++) putchar(' * '); putchar('\n'); }

24 三角形・逆三角形の表示 / * ln に段数を入力する * / for ( i=1; i<=ln; i++ ) { for ( j=1; j<=ln-i; j++) putchar(' '); for ( j=1; j<=i; j++) putchar(' * '); putchar('\n'); }


Download ppt "多重ループ 繰り返し構造:補足事項 第8回[平成16年6月8日(火)]:PN0 4ー08. ppt 1 繰り返し構造(for)の復習 2 演算子の復習 3 多重ループ 4 繰り返し構造の補足:break文、 continue 文 5 その他(プログラムの要素と書式) 6 演習 今日の内容."

Similar presentations


Ads by Google