Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

Similar documents
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

cp-7. 配列

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

PowerPoint Presentation

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

PowerPoint プレゼンテーション

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

PowerPoint プレゼンテーション

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - prog03.ppt

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

Microsoft Word - no202.docx

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - kougi2.ppt

Microsoft Word - no103.docx

Microsoft Word - Cプログラミング演習(1)_2012

スライド 1

kiso2-09.key

Microsoft PowerPoint - C4(反復for).ppt

Microsoft Word - no11.docx

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

Cプログラミング1(再) 第2回

Microsoft PowerPoint - kougi6.ppt

Microsoft PowerPoint - program.ppt [互換モード]

プログラミングA

fuga scanf("%lf%*c",&fuga); 改行文字を読み捨てる 10 進数の整数 おまじない取り込んだ値を代入する変数 scanf( %d%*c,&hoge); キーボードから取り込め という命令 1: scanf 1 1: int double scanf %d %lf printf

ポインタ変数

プログラミング実習I

ガイダンス

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

プログラミングA

gengo1-6

Microsoft PowerPoint - 第3回目.ppt [互換モード]

Microsoft PowerPoint - 4.pptx

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

Microsoft PowerPoint - guidance.ppt

ポインタ変数

プログラミング入門1

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

訋箊æ©�ã…Šã…�ㇰㅩã…�ㅳㇰ - 第5åłž 浆㇄ㆮ勶御2

プログラミング基礎

ゲームエンジンの構成要素

Microsoft PowerPoint - while.ppt

ポインタ変数

Microsoft Word - no15.docx

PowerPoint プレゼンテーション

memo

物質工学科 田中晋

Microsoft Word - Cプログラミング演習(3)

PowerPoint Presentation

Microsoft PowerPoint - prog07.ppt

Microsoft PowerPoint - CproNt02.ppt [互換モード]

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

3-4 switch 文 switch 文は 単一の式の値によって実行する内容を決める ( 変える ) 時に用いる 例えば if 文を使って次のようなプログラムを作ったとする /* 3 で割った余りを求める */ #include <stdio.h> main() { int a, b; } pri

2 ASCII コードと文字型変数 2-1 ASCII コード 文字 コードコードコードコードコードコードコードコード文字文字文字文字文字文字文字 10 進 10 進 10 進 10 進 10 進 10 進 10 進 10 進 0 16 SP P 80 ` 96 p 112

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

フローチャートの書き方

今までの復習 プログラムで最低限必要なもの 入力 ( キーボードから ファイルから ) 出力 ( 画面へ ファイルへ ) 条件分岐 : 条件の成立 不成立により 異なる動作をする 繰り返し : 一定の回数の繰返し 条件成立の間の繰返し 関数の定義 関数の呼び出し C ではそれ以外に ポインタ データ

Microsoft PowerPoint - C1(演算と変数).ppt

Taro-プログラミングの基礎Ⅱ(公

Taro-再帰関数Ⅲ(公開版).jtd

JavaプログラミングⅠ

演算増幅器

Microsoft PowerPoint - class04.ppt

Microsoft Word - 3new.doc

kiso2-03.key

情報処理演習 B8クラス

Microsoft Word - Training4_判断と制御.docx

Microsoft Word - VBA基礎(3).docx

untitled

情報処理Ⅰ

講習No.1

Microsoft PowerPoint - C_Programming(3).pptx

PowerPoint プレゼンテーション

C言語講座 ~ファイル入出力編~

memo

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

計算機プログラミング

Microsoft Word - 03

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - prog04.ppt

プログラミング実習I

第2回講義:まとめ

PowerPoint プレゼンテーション

Microsoft PowerPoint - 11.pptx

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

PowerPoint Presentation

CプログラミングI

PowerPoint プレゼンテーション

※ ポイント ※

3. 標準入出力

Microsoft Word - no02.doc

Transcription:

C言語の繰り返し処理 for文と while文と do文 臼杵 潤 0) 準備 変数の加減算 int a, b=10; // a= a = 0; a = a+1; // a= a += 1; // a= // a= a ++; a = a + b; // a= a += b; // a= // a= a --; 下を1行ずつ実行すると それぞれ aの値はどう変わるか 0 1 2 3 13 23 22 += ++ -などの使い方 わかりましたね +や 以外に * / % でも使える 1

1) 繰り返し処理 : 概念 1の内容 2の内容 for 文 for( A ) なし while 文 while( B ) なし do 文 do while( C ) ; 1 { // ここから A, B, C の部分には条件などを書く 1 と 2 の書き方を 3 種類覚えましょう 2 // ここまでの処理を繰り返したい! 2) 繰り返し処理 : 基本 1の内容 2の内容 for 文 for( A ) なし while 文 while( B ) なし do 文 do while( C ) ; 忘れずに for( n=0; n<10 A ; n++ ) { // ここから // ここまで A, B, C の部分には条件などを書く A の部分 for( 初期値設定 ; 繰返条件 ; 更新処理 ) 例 ) 繰り返す回数を10 回 ( カウントする ) 初期値 : n = 0 繰返条件 : n < 10 更新処理 : n ++ の場合 for( n = 0 ; n < 10 ; n++ ) 2

for文の練習クイズ 括弧内を繰り返し実行する N=5とすると 何回繰り返す for (i=0; i<n; i++) { 文; for (i=0; i<n; i+=1) { 文; for (i=10; i>n; i ) { 文; for (i=10; i>n; i =2) { 文; ①の内容 2) 繰り返し処理 基本 for文 for( A ) while文 while( B ) n=0; do文 do ②の内容 なし なし while( C ) ; A, B, C の部分には条件などを書く while( n B < 10)) { //ここから while( n++; //ここまで Bの部分 while( 繰返条件 ) 例 繰り返す回数を10回(カウントする) 初期値 n = 0 繰返条件 n < 10 更新処理 n ++ の場合 while( n < 10 ) 3

2) 繰り返し処理 : 基本 1の内容 2の内容 for 文 for( A ) なし while 文 while( B ) なし n=0; do { // ここから n++; while( n < C 10 )); ; // ここまで do 文 do while( C ) ; A, B, C の部分には条件などを書く C の部分 while( 繰返条件 ); 例 ) 繰り返す回数を10 回 ( カウントする ) 初期値 : n = 0 繰返条件 : n < 10 更新処理 : n ++ の場合 while( n < 10 ) ; ; を忘れずに!(do 文だけ必要 ) いずれも処理 A の部分を繰り返すプログラム for 文 for( 初期値設定 ; 繰返条件 ; 更新処理 ){ 処理 A; while 文 while( 繰返条件 ){ 処理 A; do 文 (do-while 文 ) do{ 処理 A; while( 繰返条件 ); do { 処理 A ; printf( やめる場合 :0 n ); printf( 繰り返す場合 :1 n ); scanf( %d, &n); while( n!= 0 ); while 文と do 文が 繰返条件 だけなのは何故? 初期値設定更新処理が不要な例 こんなプログラムも書ける 4

while文とdo文の違いは while文 while( 繰返条件 ){ 処理A; do文(do-while文) do{ 処理A; while( 繰返条件 ); printf( 実行しない 0 n ); printf( 実行する 1 n ); scanf( %d, &n); while( n!= 0 ) { 処理A ; 繰り返すとn=0になる式 ; 例えば カウントダウンする 繰返条件 が 処理Aより前 にあるか 処理Aより後 にあるか どんな違いがある do { 処理A ; printf( やめる 0 n ); printf( 繰り返す 1 n ); scanf( %d, &n); while( n!= 0 ); とにかく1度は 処理A; を 必ず実行したい なら n--; C言語でよく使われる変数名の例 変数名 no, num sum ave 使われ方 番号 数 や 量 合計 平均 備考 No. や number の略 summation の略 average の略 cnt ans, result i, j, k, x, y, z n, a, b, c, カウント count の略 計算結果 answer の略 繰返のカウント 座標 x, y, z は空間表現用 通常の値 これらはよく使われる変数の名前です スペルミスしないように覚えたり 意味を知っておくと 使いやすいです 5

繰り返し処理 ループ文 のプログラム作成の考え方 ループ文作成の考え方の例 for文を例に書いてみる 例題1 キーボードから整数値を読み込んで その値から2倍の値までの整数値を すべて合計するプログラムを作成しなさい まずこれを書く 問題文を細かく分割する step.2 #include <stdio.h> その値 ② step.1 その値 ② 2倍の値 ③ 2倍の値 ③ その値 その値 から から 2倍の値 2倍の値 までの整数値 ④ までの整数値 ④ for文のどこに① ⑤を書く for( 初期値設定; 繰返条件; 更新処理 ){ 処理A; 6

ループ文作成の考え方の例 for文を例に書いてみる for( 初期値設定; 繰返条件; 更新処理 ){ 処理A; その値 ② その値 読み込んだ値 ② 2倍の値 ③ 2倍の値 読み込んだ値の2倍 ③ step.3 その値 その値 から から 2倍の値 2倍の値 までの整数値 ④ までの整数値 ④ とりあえず 書いてみる for( ; ; ){ ①; ②; ③; ④; ⑤; このままプログラムを書いてみると for( 未記入; 未記入; 未記入 ){ ① キーボードから整数値を読み込む ② その値 読み込んだ値を a とする ③ 2倍の値 aの2倍 2*a ④ a から 2*a までの 整数値 それぞれnとする ⑤ nの合計 未記入 部分に書くべきものはどれ ④どこから どこまで は未記入部に書く for( aから; 2*aまで; 整数値 ) step.4 for( n=a; n<=2*a; n++ ) //未記入部に④を書けた ③も書けた ループ文作成の考え方の例 for文を例に書いてみる for( 初期値設定; 繰返条件; 更新処理 ){ 処理A; その値 ② その値 読み込んだ値 ② 2倍の値 ③ 2倍の値 読み込んだ値の2倍 ③ こうなった その値 その値 から から 2倍の値 2倍の値 までの整数値 ④ までの整数値 ④ ①; 残った①②⑤はどこに書くべき step.5 ②; ⑤; ① キーボードから整数値を読み込む ② その値 読み込んだ値を a とする ⑤ nの合計 ②はfor文の前に書かないと for文の中で a を使えない ①ってscanf文だから ②と一緒に書けそう 7

ループ文作成の考え方の例 for文を例に書いてみる for( 初期値設定; 繰返条件; 更新処理 ){ 処理A; その値 ② その値 読み込んだ値 ② 2倍の値 ③ 2倍の値 読み込んだ値の2倍 ③ こうなった その値 その値 から から 2倍の値 2倍の値 までの整数値 ④ までの整数値 ④ ①② キーボードからaに整数値を読み込む プログラムで書くと ⑤ nの合計 scanf( %d, &a); ⑤nの合計; step.6 ⑤は定番の書き方を覚えておこう sum = sum + n; ( sum+=n;でもok ) ただし sumはfor文より前で sum=0 にしておく ループ文作成の考え方の例 for文を例に書いてみる for( 初期値設定; 繰返条件; 更新処理 ){ 処理A; その値 ② その値 読み込んだ値 ② 2倍の値 ③ 2倍の値 読み込んだ値の2倍 ③ こうなった その値 その値 から から 2倍の値 2倍の値 までの整数値 ④ までの整数値 ④ scanf( %d, &a); 各変数の宣言を忘れずに int a, n, sum; sum = 0; step.7 これでOK (#includeとか忘れずに) sum = sum + n; int a, n, sum; これでもOK int a, n, sum=0; scanf( %d, &a); sum += n ; scanf( %d, &a); sum = 0; sum = sum + n ; 8

多重ループ 3) 繰り返し処理 応用 2重ループ(九九表: multiplication table) 九九表を int y, x; 表示する printf("y * x を計算します n n"); プログラム例 ポ O ① あとで工夫 イ x 1行目 ン ト 2行目 ② あとで工夫 y コンピュータでは yは下向き for (y = 1; y <= 9; y++) { //縦方向に9回繰り返す ③ あとで工夫 for (x = 1; x <= 9; x++) { //横方向に9回に繰り返す printf("%3d", y*x); printf(" n"); 9

3) 繰り返し処理 応用 2重ループ(九九表: multiplication table) int y, x; 九九表を 見やすく表示する例 printf("y * x を計算します n n"); printf(" "); ① for (x = 1; x <= 9; x++) { //横9回 printf("%3d", x); ② for (y = 1; y <= 9; y++) { printf(" n"); ③ printf("%2d ", y); printf("--- "); for (x = 1; x <= 9; x++) { for (x = 1; x <= 9; x++) { //横9回 printf("%3d", y*x); printf("---"); printf(" n"); printf(" n"); 多重ループの動きを目で見て確認 1) multiplication_table_0.c を動かして確かめる 2) 同プログラムのコメント部分をアンコメントして動かして みる 3) multiplication_table_1.c はそのまま動かすと 2) と全く 同じもの ここで プログラム内のNo.1から順にNo.5の前 半までアンコメントし動かしてみる 4) 3)のプログラムのNo.5後半もアンコメントする ただし 後半の printf( %3d, y*x); の1行だけコメントアウトす る 何度か実行し yとxの関係から2重ループを理解する 10

二重ループ : 九九の演算表を作る手順! printf("_ _ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9 n"); printf( _ _ 2_ 4_ 6_ 7_10_12_14_16_18 n"); _ _ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9 [ 注意 ] 最大何桁の数字を表示するか? 2 桁ならば %2d 9 回繰り返し for 文を使ってみましょう for( i=1; i<=9; i++) { printf("_ 1"); ただし これだと _ 1_ 1_ 1_ 1_ 1_ 1_ 1_ 1_ 1 そこで i を使ってみよう for( i=1; i<=9; i++) { printf("_ %d", i ); 2 行目 :for( i=1; i<=9; i++) { printf("_ %d", i*2 ); 3 行目 :for( i=1; i<=9; i++) { printf("_ %d", i*3 ); for( j=1; j<=9; j++) { i*1 と書ける j を使おう for( i=1; i<=9; i++) { printf("_ %d", i*j ); あとは ここに _ を表示するプログラムを書く & どこかで改行 n を入れよう! よく考えると 二重ループ : 数字のピラミッドを書く! 段数 N = 6 の場合 1 21 321 4321 54321 654321 1 段目だけを考える スペース 5 個 + 数字 1 個 for 文で (N-1 回 ) スペースを表示する 1 を表示してみる ( とりあえず ) 2 段目を考える ここまでプログラミング! スペース 4 個 + 数字 2 個 for 文で (N-2 回 ) スペースを表示する 2 と 1 を表示してみる i 段目は? スペース N-i 個 + 数字 i 個 for 文で (N-i 回 ) スペースを表示する i から 1 まで表示する 11

二重ループ : 数字のピラミッドを書く! 1 段目 for( j=1; j<=n-1; j++){ スペース表示 ; 1 を表示 ; 2 段目 for( j=1; j<=n-2; j++){ スペース表示 ; 2, 1 を表示 ; i 段目 for( j=1; j<=n-i; j++){ スペース表示 ; i, 2, 1 を表示 ; 段数 N = 6 の場合 1 段目だけを考える スペース 5 個 + 数字 1 個 for 文で (N-1 回 ) スペースを表示する 1 を表示してみる ( とりあえず ) 2 段目を考える ここまでプログラミング! スペース 4 個 + 数字 2 個 for 文で (N-2 回 ) スペースを表示する 2 と 1 を表示してみる i 段目は? スペース N-i 個 + 数字 i 個 for 文で (N-i 回 ) スペースを表示する i から 1 まで表示する 二重ループ : 数字のピラミッドを書く! i 段目 for( j=1; j<=n-i; j++){ スペース表示 ; i, 2, 1 を表示 ; 段数 N = 6 の場合 i 段目は? スペース N-i 個 + 数字 i 個 for 文で (N-i 回 ) スペースを表示する i から 1 まで表示する i 段目 for( j=1; j<=n-i; j++){ スペース表示 ; for( j=i ; j>=1; j--){ j を表示 ; for( i=1; i<=n; i++) { for( j=1; j<=n-i; j++) { printf(" "); for( j=i ; j>=1; j--) { printf("%d", j ); 12