第4章 反復作業を楽にする方法!! ~繰り返しその1 while~

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

University of Electro-Communications Human Interface section 基礎プログラミングおよび演 習 第7回.
ループで実行する文が一つならこれでもOK
4章 制御の流れ-3.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
第2章 数値の入力と変数 scanfと変数をやります.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
基礎プログラミングおよび演習 第9回
プログラミング基礎I(再) 山元進.
プログラミング入門 第5回講義 第5回講義 制御の流れ(1) ループ(その1) - while - インデント(3) ループとは(7)
C言語講座 第4回 ポインタ.
第6章 2重ループ&配列 2重ループと配列をやります.
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
第7回 条件による繰り返し.
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
プログラミング演習 バージョン1 担当教員:綴木 馴.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
第10回関数 Ⅱ (ローカル変数とスコープ).
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング序論 2. n人のインディアン.
第10章 これはかなり大変な事項!! ~ポインタ~
高度プログラミング演習 (03).
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (05).
高度プログラミング演習 (05).
関数への道.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
今まで写経のように書いてきた『void main()』も、これでようやく話ができる!
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
第1章 いよいよプログラミング!! ~文章の表示 printf~
プログラミングⅡ 第2回.
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
変数を一度にたくさん宣言するよ! それだけじゃないよ!
プログラミング基礎演習 第4回.
第2章 printf(“変数と入力”); scanf(“%d”,&num);
ループだよ!難しいよ! 第5章 while(ループ);.
標準入出力、変数、演算子、エスケープシーケンス
ループだよ! 第7章 for(ループ応用);.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
第12章 乱数という業の深い存在 ~ランダムな値・他~
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング1 プログラミング演習I 第2回.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
第2章 数値の入力と変数 scanfと変数をやります.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
C言語講座 四則演算  if ,  switch 制御文.
計算技術研究会 C言語講座 第二回 制御構文 if , switch.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
情報処理技法(Javaプログラミング)1 第8回 同じ処理を何回も繰り返すには?
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

第4章 反復作業を楽にする方法!! ~繰り返しその1 while~ 「君が 泣くまで 殴るのをやめない!!」と 似たようなこと(本当か?) 第4章 繰り返し

前回やったこと 条件を立てて、それを満たすなら true (真)、満 たさないなら false (偽)となる 条件を満たすか満たさないかで処理を変える、 条件分岐 if と switch 文 第4章 繰り返し

今日の予定 同じ処理を繰り返させる方法 さらなる計算の記号(演算子) ループから強制的に抜ける方法 条件の設定とループさせる記述 ループから抜ける方法 さらなる計算の記号(演算子) ループから強制的に抜ける方法    ひとつ前にやった true と false がここでも活躍するよ 第4章 繰り返し

繰り返し(1) たとえば、「オラ」という文字を 10 回表示さ せたいとき、今までだと ⇒な感じに書かなきゃいけ ない   100 回だともっとしんどい 同じことをさせたいなら、  繰り返し文が実に有効!! printf(“オラ”); printf(“オラ\n”); 第4章 繰り返し

繰り返し(2) 処理の繰り返しをさせる文は while 文 書き方例: 『()』内に条件を書き入れ、それを満たす限り (すなわち true )『{}』内の作業をさせ続ける while( num == 0 ){ printf(“オラ”); } 第4章 繰り返し

繰り返し(3) ちょっと実行(Ctrl + F5)してみよう 実行してヤバイと思ったら×押してね #include <stdio.h> void main(){ int num = 0; while( num == 0 ){ printf(“オラ”); } 第4章 繰り返し

繰り返し(4) これはヤバイ・・・ このように while 文は条件を満たし続 ける限り無限に処理 をループし続ける  文は条件を満たし続  ける限り無限に処理  をループし続ける ループを抜けるにはどうにか『()』内の条件を 満たさない( false )ようにするしかない ↑この間大抵のキー操作も受け付けない 第4章 繰り返し

繰り返し(5) さっきのプログラムを以下のように書き換えて 実行してみよう ここで『++』とは 『num = num + 1 ;』 と同じ処理だよ ちなみに『--』は 『num = num – 1 ;』 と同じ #include <stdio.h> void main(){ int num = 0; while( num < 10 ){ printf(“オラ”); num++; } printf(“\n”); 第4章 繰り返し

繰り返し(6) ほっ(安堵) これは while  文の『{}』内にあった『 num++;』によって、 10回ループした後に『num』の値が 10 になっ てしまい、『num < 10』の条件をクリアできな くなってしまった。これでループから抜け出た ちなみに『printf(“\n”);』はこの位置だと、 while文を抜けた後に実行することになる 第4章 繰り返し

繰り返し(7) 図にする と⇒かな? ループの 中に条件内 の変数を いじる記述 を加えて、 ループを脱   出する 第4章 繰り返し

練習問題 以下の実行結果と同じようになるように、プロ グラムを書いてみよう(while 文使って) このプログラムは入力した数だけ『★』を表示 させるよ ヒント:変数を2個くらい作ってみて 変数:int num; とかのこと 第4章 繰り返し

練習問題 回答例1 上の『printf(“★”); num2++;』のように、改 行せず『;』で文をつないでもよい(全般的に) #include <stdion.h> void main(){ int num1,num2 = 0; printf(“何個★を表示しますか? > ”); scanf(“%d”,&num1); while( num2 < num1 ){ printf(“★”); num2++; } printf(“\n”); 上の『printf(“★”); num2++;』のように、改 行せず『;』で文をつないでもよい(全般的に) 第4章 繰り返し

練習問題 回答例2 きまぐれに別回答でも #include <stdio.h> void main(){ int num; 変数がひとつになって書く量が減ってます #include <stdio.h> void main(){ int num; printf(“何個★を表示しますか? > ”); scanf(“%d”,&num); while( num > 0){ printf(“★”); num--; } printf(“\n”); 第4章 繰り返し

ループからの脱出(1) 条件を満たさないよう変数を変化させる以外に、 無理やりループ(反復)から脱出する方法がある それが break 文(switch でも見たはず) 使い方は『break;』と記述するだけ 使用例は次のスライド 第4章 繰り返し

ループからの脱出(2) では以下のプログラムを実行してみよう #include <stdio.h> void main(){ int num = 1; while( num == 1){ printf(“無駄”); break; } printf(“\nループから脱出しました\n”); 第4章 繰り返し

ループからの脱出(3) 実行結果⇒ while のループ から脱出完了 ちなみに switch 文では『{}』の中から脱出し ているようです そのままだと下の『case』の処理 もやってしまうらしい switch( num ){ case 0: break; case 1: } 第4章 繰り返し

新たなる演算子(計算などの記号)(1) さっき説明した『++』、『--』以外にも a += 3; ← a = a+3; 必ずあらかじめ変数(ここだとabcd)に値を入れ ておいてね(これを初期化という) a += 3; ← a = a+3; b -= 8; ← b = b-8; c *= 4; ← c = c*4; d /= 5; ← d = d/5; 第4章 繰り返し

新たなる演算子(計算などの記号)(2) 説明を省いていたけど、変数は宣言をした後、 必ず初めに何か値を入れておかないとまずい 例: さっきの計算だと 代入する数(右辺)にも『a』があり、これがNG int num = 0; int a; a = 3; ←↑これが初期化 やらないと実行時に エラーが出る a += 3; ← a = a + 3; 第4章 繰り返し

練習問題 以下のように、数値を入力させ、その階乗を表 示するプログラムをつくってみよう ヒント:『{}』内には『ans *= i;』(ans と i は変数) 1ループごとに『i』の値が増えていく(どこまで?) 第4章 繰り返し

練習問題 回答例 『<=』 が地味に ポイント これで今 回はおし まい(解 散) #include <stdio.h> void main(){ int num,i,ans; i = 1; ans = 1; printf(“数値を入力してください > ”); scanf(“%d”,&num); while( i <= num ){ ans *= i ; i++; } printf(“%d! = %d\n”, num, ans); 『<=』 が地味に ポイント これで今 回はおし まい(解 散) 第4章 繰り返し

練習問題2 0を入力するまで、相手を殴るプログラムをつ くってみよう 実行結果は以下の通り ヒント:if 文を使い、1回目 なんてしょうもない問題だろう ヒント:if 文を使い、1回目 に0の時と、2回目以降に0 が入力されたときの表示を 分けてみる 第4章 繰り返し

練習問題2 回答例 もっといい記述方法がある気がしてならない #include <stdio.h> void main(){ int num; printf("0:殴らない それ以外:殴る\n"); printf("殴りますか? > "); scanf("%d",&num); if(!num) printf("(・ω・)フッ 大したことねえな\n"); while(num != 0){ printf(";;;;;、(>ω(:;(⊂=⊂≡ (・ω・ #)\n"); printf("まだ殴りますか? > "); if(!num) printf("(TωT)スイマセンでした\n"); } 第4章 繰り返し

実際にやる内容はここにある限りじゃないかもしれません 次回予告 ループをさせる文の続き 新たな繰り返し文の仕様 while 文とどう違うのか ゲームでは while より使う(はず)の for 文の登場  実際にやる内容はここにある限りじゃないかもしれません 第4章 繰り返し

テンプレ テンプレ 第4章 繰り返し