プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.

Slides:



Advertisements
Similar presentations
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
Advertisements

プログラミング入門2 第1回 導入、型と演算、条件分岐、式の評価 情報工学科 篠埜 功.
ループで実行する文が一つならこれでもOK
4章 制御の流れ-3.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング入門2 第7回 情報工学科 篠埜 功.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミング入門2 第1回 導入、型と演算、条件分岐、式の評価 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
C言語 配列 2016年 吉田研究室.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
第6章 2重ループ&配列 2重ループと配列をやります.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
プログラミング入門2 第2回 複合文、繰り返し 情報工学科 篠埜 功.
関数 関数とスタック.
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
第7回 条件による繰り返し.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング入門2 第8回 ポインタ 情報工学科 篠埜 功.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 条件による繰り返し.
プログラミング入門2 第11回 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング入門2 第11回 共用体、列挙体 情報工学科 篠埜 功.
プログラミング入門第6回 ~レゴロボットのプログラミング6~
プログラムの制御構造 配列・繰り返し.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
情報工学科 3年生対象 専門科目 システムプログラミング 第4回 シェルスクリプト 情報工学科 篠埜 功.
プログラミング序論演習.
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
第5回 プログラミングⅡ 第5回
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
プログラミング基礎演習 第4回.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
プログラミング演習I 2003年6月11日(第9回) 木村巌.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
プログラミング1 プログラミング演習I 第2回.
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第11回(後半第5回) 課題の回答
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
Presentation transcript:

プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功

前回までの補足---教科書について 教科書について 上記以外の参考書 新版明解C言語入門編, 柴田望洋著, 2,310円, ソフトバンククリエイティブ を教科書としている。講義では重要な部分のみ説明するので、教科書を読んで補ってもらいたい。余裕のある人は、前回少し紹介した、 新版明解C言語実践編, 柴田望洋著, 2,310円, ソフトバンククリエイティブ を読んでもらいたい。最終的には、 ISO規格書 規格番号 ISO/IEC 9899:1999 標題 Programming languages – C を読むことになる。(日本規格協会から入手可能。33,264円) 上記以外の参考書 図解C言語 ポインタの極意, 柴田望洋著, 2,520円 新ANSI C言語辞典,平林雅英著, 2,300円 (推奨はしない) プログラミング言語C、カーニハン&リッチー、共立出版 第3回 プログラミング入門2

今回の講義内容 複合文 --- 複数の文を1つの文にまとめる。 繰り返し 文を書くところに2つ以上の文を書きたいときに使う。 (例) if文の分岐先の文のところに2つ以上の文を書く場合など。 繰り返し 何らかの処理を何度も繰り返し行う --- 繰り返しは命令型言語における基本的な機構。 (例1) 100以下の素数を小さい順に表示 (例2) ユーザに2つの数を入力させ、その和を表示するということを何度も繰り返す 第3回 プログラミング入門2

複合文の構文 複合文 { d1 d2 … s1 s2 …} の意味 重要 複合文(ブロック) { 0個以上の宣言 0個以上の文 } { 0個以上の宣言 0個以上の文 } 複合文 { d1 d2 … s1 s2 …} の意味 文の並び s1, s2, … を順番に実行 複合文においては、先頭部分で変数宣言をすることができる。その有効範囲は、複合文の最後まで。(ただし、複合文中に複合文があってそこで同じ名前の変数が宣言された場合はそこは除く。) 重要 第3回 プログラミング入門2

複合文の例 { } --- 宣言も文もない複合文 { printf (“test\n”); } --- 文が1つの複合文 { int x; x = 5; } --- 宣言1つ、文1つの複合文 { int x; x = 5; printf (“%d”, x); } --- 宣言1つ、文2つの複合文 { int x; int y; x=5; y=3; printf (“%d”, x); } --- 宣言2つ、文3つの複合文 第3回 プログラミング入門2

複合文を使ったプログラム例(1) 赤字の部分は宣言無し、文2つの複合文である。 前回までのプログラムはすべて複合文を使っていた。 #include <stdio.h> int main (void) { printf (“%d\n”, 15); return 0; } 赤字の部分は宣言無し、文2つの複合文である。 これは、main関数の本体を成している。(関数の説明の回でもう一度説明する) 第3回 プログラミング入門2

複合文を使ったプログラム例(2) 赤字の部分は宣言1つ、文3つの複合文である。 これは、main関数の本体を成している。 #include <stdio.h> int main (void) { int x; scanf (“%d”, &x); printf (“x=%d\n”, x); return 0; } 赤字の部分は宣言1つ、文3つの複合文である。 これは、main関数の本体を成している。 第3回 プログラミング入門2

複合文を使ったプログラム例(3)(打ち込んで確認) #include <stdio.h> int main (void) { int x; x=3; int y; y=5; printf (“x=%d\n”, x); printf (“y=%d\n”, y); } return 0; 赤字の部分は宣言1つ、文3つの複合文であり、外側の複合文の2つ目の文を成している。 第3回 プログラミング入門2

複合文を使ったプログラム例(4)(打ち込んで確認) #include <stdio.h> int main (void) { int x; x=3; printf (“x=%d\n”, x); /* ここではxの値は未定義 */ x=5; printf (“x=%d\n”, x); /* xの値は5 */ } printf (“x=%d\n”, x); /* xの値は3 */ return 0; 内側の複合文で、外側で既に宣言されている変数xを宣言している。この場合、内側の複合文の範囲においては、外側の変数xは隠れて見えなくなる。 第3回 プログラミング入門2

複合文を使ったプログラム例(5)(打ち込んで確認) /* 整数値を入力し、正かどうか判定 */ #include <stdio.h> int main (void) { int x; printf (“Input an integer: “); scanf (“%d”, &x); if (x>0) printf (“%d is greater than 0.\n”, x); else { printf (“%d is less than or equal to 0.\n”, x); } return 0; 赤字の部分は宣言0個、文1個の複合文であり、if文のelseパートを成す。 文1つからなる複合文は中括弧{ }をはずしても意味は変わらない。 第3回 プログラミング入門2

複合文を使ったプログラム例(6)(打ち込んで確認) /* 整数値を入力し、それが正の場合、もう一つの整数値を入力し、それらの積を表示 */ #include <stdio.h> int main (void) { int x; printf (“Input an integer: “); scanf (“%d”, &x); if (x>0) { int y; scanf (“%d”, &y); printf (“%d * %d = %d.\n”, x, y, x*y); } return 0; 赤字の部分は宣言1つ、文3つの複合文であり、if文(elseパート無しのif文)の本体を成す。 このプログラムでは、変数yの宣言をmain関数の先頭部分に移動しても意味は変わらない。 第3回 プログラミング入門2

繰り返し 同じ処理を繰り返すには・・・ 条件により,繰り返すかをどうかを決定 繰り返しの構文 プログラム中に同じ命令を何度も繰り返して書く? --- 繰り返す回数が入力によって変わる場合など、対応できない。 条件により,繰り返すかをどうかを決定 繰り返しの構文 do~ while文 while文 for文 今日はwhile文を紹介する。その他の構文については教科書を参照。 第3回 プログラミング入門2

while (式) 文 while文(教科書 p.68) while文の構文 while文 while (e) s の意味 第3回 プログラミング入門2

while文を使ったプログラム例(打ち込んで確認) /* 羊を10匹まで数えたら寝る */ #include <stdio.h> int main (void) { int x; x = 1; while (x <= 10) { printf (“羊が%d匹\n", x); x=x+1; } printf (“グーグー\n”); return 0; 赤字の部分は宣言0個、文2個の複合文であり、while文の本体を成している。 第3回 プログラミング入門2

無限ループ(打ち込んで実行) #include <stdio.h> int main (void) { int i; i=1; while (1) { printf (“羊が%d匹\n”, i ); i = i + 1; } return 0; Ctrl-c(Ctrlキーを押しながらcを押す)で終了 第3回 プログラミング入門2

ラベル、goto文(打ち込んで実行) #include <stdio.h> int main (void) { int x; aaa: printf ("羊が%d匹\n", x); x=x+1; if (x<=10) goto aaa; printf ("ぐーぐー\n"); return 0; } 青字の部分がラベル、赤字の部分がgoto文である。 第3回 プログラミング入門2

今日の課題 正の整数値をキーボードから読み込み、2の(正の)べき乗のうち、読み込んだ値以下のものを小さい順に表示するプログラムを作成せよ。 (例) 1000以下の2のべき乗を小さい順に並べると、2,4,8,16,32,64,128,256,512である。 正の整数をキーボードから読み込み、その数の約数を小さい順にすべて表示するプログラムを作成せよ。    (例) 20の約数を小さい順に並べると、1,2,4,5,10,20である。 (ヒント) aがbの約数かどうかはb%aの値が0かどうかで判定できる。 チャレンジ課題(1も2もできた人用): 2つの正の整数を入力し、それらの最大公約数を求め、表示するプログラムを作成せよ。 (TAの方へ: goto文を使ったプログラムは正解にしないでください。) 第3回 プログラミング入門2