第5章 まだまだ続く反復処理!! ~繰り返しその2 for~

Slides:



Advertisements
Similar presentations
ループで実行する文が一つならこれでもOK
Advertisements

プログラミング演習(1組) 第7回
4章 制御の流れ-3.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
第2章 数値の入力と変数 scanfと変数をやります.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/26 前回復習 for文、while文による繰り返し計算
基礎プログラミングおよび演習 第9回
基礎プログラミングおよび演習 第8回.
C言語講座 第4回 ポインタ.
第6章 2重ループ&配列 2重ループと配列をやります.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第7回 条件による繰り返し.
第10章 char 文字列; 文字列を入力させるよ!.
C言語講座 第3回 ポインタ、配列.
プログラミング演習 バージョン1 担当教員:綴木 馴.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング序論 2. n人のインディアン.
第10章 これはかなり大変な事項!! ~ポインタ~
高度プログラミング演習 (03).
知能情報工学演習I 第12回(後半第6回) 課題の回答
前回の練習問題.
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (05).
高度プログラミング演習 (05).
関数への道.
プログラムの制御構造 配列・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
今まで写経のように書いてきた『void main()』も、これでようやく話ができる!
第4章 反復作業を楽にする方法!! ~繰り返しその1 while~
第1章 いよいよプログラミング!! ~文章の表示 printf~
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
C言語復習 来週もこの資料を持参してください.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
変数を一度にたくさん宣言するよ! それだけじゃないよ!
プログラミング基礎演習 第4回.
第2章 printf(“変数と入力”); scanf(“%d”,&num);
ループだよ!難しいよ! 第5章 while(ループ);.
標準入出力、変数、演算子、エスケープシーケンス
ループだよ! 第7章 for(ループ応用);.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
第12章 乱数という業の深い存在 ~ランダムな値・他~
モバイルプログラミング第2回 C言語の基礎 (1).
プログラミング1 プログラミング演習I 第2回.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
情報処理Ⅱ 2006年10月20日(金).
C言語講座 四則演算  if ,  switch 制御文.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
第1章 printf(“文字の出力\n”);
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

第5章 まだまだ続く反復処理!! ~繰り返しその2 for~ while 文との違いに注意してね! 第5章 繰り返し その2

前回やったこと 反復処理を楽にやるなら while 文が有効 while 文のループから脱出するなら break 文 新しい演算記号『++』や『+=』など、他にも 色々 第5章 繰り返し その2

今日の予定 while 文以外の反復処理の方法を知ろう 2重ループ 使い方、注意点 while とどう違うのか やり方と使いどころ 第5章 繰り返し その2

新たな繰り返し文(1) 前回やった繰り返し while 文のおさらいをば while( num < 10){ 上のように、『()』内に条件式を書き、それを 満たす限り『{}』内の処理をループ 『{}』に条件に入れた変数を変化させる処理を 入れ、やがてループからの脱出をする while( num < 10){   printf(“オラ”); num++; } 第5章 繰り返し その2

新たな繰り返し文(2) while に引き続き今回は for 文で繰り返し 書き方例: 『()』内に変数の初期値、条件式、変数の変化 を順に書きいれ、『;』で区切る 『{}』内には相変わらずループさせる処理を入 れる  for(num = 0; num < 10; num++){  printf(“オラ”);  } 第5章 繰り返し その2

新しい繰り返し(3) とにもかくにも以下のプログラムを実行してみ よう #include <stdio.h> void main(){ int num, i; printf(“何個表示する? > ”); scanf(“%d”,&num); for(i = 0; i < num; i++){ printf(“★”); } printf(“\n”); while 文でも似た ようなことやっ たなあ・・・、と 思いつつ 第5章 繰り返し その2

新しい繰り返し(4) ざっとこんな感じ while 文では『{}』内に変数の変化を書いてい た for 文では『()』の中で変数の初期化も再初期化 (変数の変化)もやってしまう 『num++;』とかのこと 初期化は『num = 0;』とかのこと 第5章 繰り返し その2

練習問題1 以下の実行結果と同じようなものが出るよう階 乗計算のプログラムを書いてみよう 自然数以外が入力されたら計算しないように、 プログラムを工夫しよう ヒント:if 文を使って 処理を分岐させては? 第5章 繰り返し その2

練習問題1 回答例 テンプレ ここで変数を宣言してもいい ←『{}』なしで処理を 書くときは1つの文のみ #include <stdio.h> void main(){ int num; int ans = 1; printf(“自然数を入力してください > ”); scanf(“%d”,&num); if( num > 0){ for(int i = 1; i < num; i++) ans *= i; printf(“%d! = %d\n”, num, ans); } else printf(“想定されていない数値です\nプログラムを終了します\n”); テンプレ ここで変数を宣言してもいい ←『{}』なしで処理を 書くときは1つの文のみ 第5章 繰り返し その2

2重ループ(1) さっき説明した for 文の中にさらに for 文を書 き入れることで、2重のループを作ることがで きる 例: for(i = 0; i < num1; i++){ for(n = 1; n < num2; n++){ } 第5章 繰り返し その2

2重ループ(2) 2重ループでは一体どんな風に処理が進んでい るかというと、↓こんな感じ 1つ目の for 文が 1ループしてる間に ループをすべて行う そしてまた同じこと を繰り返す 第5章 繰り返し その2

2重ループ(3) では実際にプログラムを実行してみよう #include <stdio.h> void main(){ int height,width; printf(“縦の長さは? > ”); scanf(“%d”,&height); printf(“横の長さは? > ”); scanf(“%d”,&width); for(int i = 0; i < height; i++){ for(int n = 0; n < width; n++) printf(“★”); printf(“\n”); } 第5章 繰り返し その2

2重ループ(4) 実行結果例はこれ こういう2次元的なことをしたいとき、2重ルー プが有効(と思われる) 第5章 繰り返し その2

練習問題2 以下のように、辺の長さを入力させ、直角三角 形に★を表示させるプログラムを作ってみよう 時間余ったらこちらもどうぞ↓ 第5章 繰り返し その2

練習問題2 回答例 テンプレ なかなか手強い 暇な人用問題は 次のスライドに 回答例 #include <stdio.h> void main(){ int length; printf(“2辺の長さは? > ”); scanf(“%d”,&length); for(int i = 1; i <= length; i++ ){ for(int n = 1; n <= i; n++) printf(“★”); printf(“\n”); } テンプレ なかなか手強い 暇な人用問題は 次のスライドに 回答例 第5章 繰り返し その2

練習問題2 回答例その2 #include <stdio.h> void main(){ int length; printf(“2辺の長さは? > ”); scanf(“%d”,&length); for(int i=length; i>0; i--){ for(int n=i; n>0; n--) printf(“★”); printf(“\n”); } 『>』なのか 『>=』なのか 『i』や『n』の 初期化の値は何に すべきか 一筋縄ではいかな い問題だと思う 第5章 繰り返し その2

2重ループ 補足 スライドでは for 文のみを使った2重ループを 作ったが、 for の中に while、while の中に for、while の 中に while も勿論できる for(){ while(){ } while(){ for(){ } while(){ } 練習問題2を上のいずれかで書き改めても 面白いと思う 第5章 繰り返し その2

次回予告 一度にいくつもの変数をつくる方法 きっとよく使う 配列 の登場 やり方、諸注意 作った変数に一気に値を入れる方法 第5章 繰り返し その2

おまけ問題 以下のように、入力した辺の長さを持つ直角三 角形を右下に表示するプログラムを作ってみよ う 時間余ったらこちらもどうぞ↓ ヒント:for 文は計3つ使う 第5章 繰り返し その2

おまけ問題 回答例その1 先に空白を表示した後、★を表示している ここでは『n』を2回初期化しているので注意 #include <stdio.h> void main(){ int length,i,n; printf(“2辺の長さは? > ”); scanf(“%d”,&length); for(i = 1; i >= length; i++){ for(n = 1; n <= length – i; n++) printf(“ ”); for(n = 1; n <= i; n++) printf(“★”); printf(“\n”); } ピラミッドは次頁です 第5章 繰り返し その2

おまけ問題 回答例その2 その1の回答例の、表示する★の数をいじった だけ(思ったより難しくはないんじゃないかな) #include <stdio.h> void main(){ int length,i,n; printf(“2辺の長さは? > ”); scanf(“%d”,&length); for(i = 1; i >= length; i++){ for(n = 1; n <= length – i; n++) printf(“ ”); for(n = 1; n <= i * 2 - 1; n++) printf(“★”); printf(“\n”); } 時間があったらじっくり説明したい(できたら) 第5章 繰り返し その2

テンプレ テンプレ 第5章 繰り返し その2