Microsoft PowerPoint - 4.pptx

Similar documents
Microsoft PowerPoint - 3.pptx

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

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

Microsoft PowerPoint - C4(反復for).ppt

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

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

Taro-数値計算の基礎Ⅱ(公開版)

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

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

C による数値計算法入門 ( 第 2 版 ) 新装版 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 新装版 1 刷発行時のものです.

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt

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

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

cp-7. 配列

kiso2-09.key

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

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

PowerPoint Presentation

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

Microsoft PowerPoint - 11.pptx

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

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

Microsoft Word - 3new.doc

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

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

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

Taro-ポインタ変数Ⅰ(公開版).j

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

スライド 1

頻出問題の解法 4. 絶対値を含む関数 4.1 絶対値を含む関数 絶対値を含む関数の扱い方関数 X = { X ( X 0 のとき ) X ( X <0 のとき ) であるから, 絶対値の 中身 の符号の変わり目で変数の範囲を場合分けし, 絶対値記号をはずす 例 y= x 2 2 x = x ( x

Microsoft PowerPoint - kougi2.ppt

物質工学科 田中晋

ポインタ変数

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

PowerPoint プレゼンテーション

Taro-リストⅠ(公開版).jtd

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - C_Programming(3).pptx

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

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

Prog1_15th

プログラミング実習I

kiso2-03.key

gengo1-6

kiso2-06.key

第2回講義:まとめ

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

PowerPoint プレゼンテーション

Microsoft Word - no103.docx

Microsoft Word - VBA基礎(3).docx

C 2 2.1? 3x 2 + 2x + 5 = 0 (1) 1

4 単元構想図 ( 全 14 時間 ) 生徒の意識の流れ 表を使って解く 縦 (m) 0 8 横 (m) x= 右辺の形に式を変形して 二次方程式を解こう1 ax = b (x + m) = nは平方根の考えで解くことができる x= 右辺の形に式を変形して 二次方程式を解こう2 x +

Microsoft Word - no11.docx

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

1. 入力した文字列を得る 1.1. 関数 scanf() を使う まずは関数 scanf() を使ったプログラムを作ってみましょう 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> #define SIZE 128 main(

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

Taro-最大値探索法の開発(公開版

Taro-ファイル処理(公開版).jtd

ポインタ変数

ポインタ変数

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

PowerPoint Presentation

8 / 0 1 i++ i 1 i-- i C !!! C 2

講習No.10

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

PowerPoint プレゼンテーション

Microsoft PowerPoint - class04.ppt

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

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

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

2006年10月5日(木)実施

memo

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

Microsoft PowerPoint - kougi4.ppt

PowerPoint Presentation

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

プログラミング基礎

gengo1-2

Prog1_12th

JavaプログラミングⅠ

PowerPoint プレゼンテーション

2018年度 岡山大・理系数学


PowerPoint プレゼンテーション

プログラミング実習I

Java講座

C 言語固有の命令で全部で32 個 の関数C 言語第 1 回 C 言語って?( シラバス 1 2 回目 ) 関数型言語 コンピュータに実行してもらう命令はすべて関数の中に記述されている 関数がプロ グラム

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

Microsoft Word - NumericalComputation.docx

フローチャートの書き方

講習No.1

< F2D837C E95CF CF68A4A94C5816A2E6A>

Taro-2分探索木Ⅱ(公開版).jtd

4STEP 数学 Ⅲ( 新課程 ) を解いてみた関数 1 微分法 1 微分係数と導関数微分法 2 導関数の計算 272 ポイント微分法の公式を利用 (1) ( )( )( ) { } ( ) ( )( ) ( )( ) ( ) ( )( )

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

プログラミング基礎

Taro-スタック(公開版).jtd

PowerPoint プレゼンテーション

ポインタ変数

Transcription:

while 文 (1) 繰り返しの必要性 while の形式と動作 繰り返しにより平 根を求める ( 演習 ) 繰り返しにより 程式の解を求める ( 課題 )

Hello. をたくさん表示しよう Hello. を画面に 3 回表示するには, 以下で OK. #include <stdio.h> int main() { printf("hello. n"); printf("hello. n"); printf("hello. n"); では,Hello. を 100 回表示するにはどうしたらいい? 勿論, printf("hello Hello. n n"); を100 個書けばいいのだが, そんな面倒なことはしたくない! これを実現するためには, 繰り返しを使う 1

while 文の形式と動作 形式 while ( 式 ) 文 動作 (1) 式を評価 ( 計算 ) する. (2) 式の値が真ならば文を実行し,(1) に戻る. 式の値が偽ならば while 文を終了する. 文が複数の文から構成されるときは, if 文のときと同様に,{ で囲む. 2

繰り返しの際に良く使う式 (a) (b) 変数 = 変数 + 1 ; 変数に記憶している値を 1 増やす 変数 = 変数 - 1 ; 変数に記憶している値を 1 減らす ex. i=i+1; この代入文を実行すると 1 右辺が計算される. 現在の i の値 (i が記憶している値 ) に1 加えた値が右辺の値となる. 2 右辺の値を, 左辺の変数 i に代入する. 結果として, この文を実行すると i の値が1 増える. これらの式はプログラムで非常によく使われるため, 専用の表現があり, (a) と同じ結果になるのが変数 ++( たとえば i++) (b) と同じ結果になるのが変数 --( たとえば i--) この他にも,++i, --i があるが, 上記との違いは参考テキストを参照. 3

Hello. を 100 回表示するプログラム (1/8) #include <stdio.h> int main() { int i; 変数 i は繰り返しの実行回数を記憶 i = 0 ; while(i < 100){ printf("hello. n"); この2 文を実行すると, i=i+1; i の値が1 増加. 画面に Hello. と表示され, 4

Hello. を 100 回表示するプログラム (2/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 0 画面 (Window) 5

Hello. を 100 回表示するプログラム (3/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 0 画面 (Window) i=0 ゆえ, 繰り返しの条件 i<100 は真 6

Hello. を 100 回表示するプログラム (4/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 1 画面 (Window) Hello. 7

Hello. を 100 回表示するプログラム (5/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 1 画面 (Window) Hello. i=1 ゆえ, 繰り返しの条件 i<100 は真 8

Hello. を 100 回表示するプログラム (6/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 2 画面 (Window) Hello. Hello. 9

Hello. を 100 回表示するプログラム (7/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; 100 回実行したとき i に記憶されている値 100 画面 (Window) Hello. Hello. Hello. 100 回表示 Hello. 10

Hello. を 100 回表示するプログラム (8/8) プログラムの実行過程 #include <stdio.h> int main() { int i; i = 0 ; while(i < 100){ printf("hello. n"); i=i+1; i に記憶されている値 100 画面 (Window) Hello. Hello. Hello. Hello. i=100 ゆえ, 繰り返しの条件 i<100 は偽 while 文終了 11

指定数だけ Hello. と表示するプログラム 右のプログラムは, 整数を 1 つ読み込み, 読み込んだ数だけ Hello.(+ 改行 ) を画面に表示するプログラム. #include <stdio.h> int main() { int n; /* 表示回数を表わす */ int i; /* 繰り返しのカウント */ /* 表示回数の入力 */ printf( tf(" 何回表示しますか :"); scanf("%d",&n); /* 表示 */ i = 0 ; while(i < n){ printf("hello. n"); i=i+1; 12

演習 : a の平方根を求める (1/2) 次頁の解説を参考にして, 実数を 1 つ読み込み, この数の平方根を繰り返しを用いて求めるプログラムを作ろう. 本演習では, 繰り返しの回数は 10 回とし, 各回で求まった平方根の近似値を表示するようにすること. 実は, 次頁で説明する方法は, ニュートン法という, 方程式の数値計算による一般的な解法を x*x-a=0 に特化したもの. 13

演習 : a の平方根を求める (2/2) 縦, 横の長さがそれぞれ x, y の長方形 ( 面積 a) を考える. 最初は,x=a, y=1 であるとする. 毎回の繰り返しで, 縦, 横の長さを以下のように変更. このように変更すると, 面積は a のままで,x, y は以前より近い値になる ( つまり, 正方形に近づく ). これを繰り返せば,x, y の値はそれぞれ a に近づく. a 面積 a a+1 2 面積 a a 正方形 面積 a 1 a a+1 2 a 14

break 文,continue 文 (1/2) 繰り返しの中 ( 以下の図のの部分 ) で,break 文が実行されると, その時点で,while 文を強制的に終了する. while( 条件 1) { if( 条件 2) break; [ 補足 ] continue 文繰り返しの中 (while 文や for 文により繰り返し実行される文の中 ) で, continue 文に出会う (continue 文を実行する ) と, それ以降の文を無視し,while 文であれば, 次の繰り返しをするか否かの条件判定,for 文であれば, 次の繰り返しの準備 ( 第 6 回の資料の for 文の形式と動作 の動作 (3) のところ ) に実行が移る. 15

break 文,continue 文 (2/2) ex. #include <stdio.h> int main() { int x,y; printf(" 割り算をします n"); while(1){ printf(" 一つ目の数は :"); scanf( f("%d",&x); &); printf(" 二つ目の数は :"); scanf("%d",&y); if(y==0){ 2つの整数を入力し, その割り算の答えを表示する ということを繰り返すプログラム. ただし, 二つ目の数が 0 の場合, 繰り返しを終了. printf(" 二つ目の数が 0 でしたので終わります n"); break; printf("%d %d = %d n",x,y,x/y); printf(" お疲れ様... n"); 16

演習問題の修正版 17 break を使えば, 先の演習問題を, x と y の更新の繰り返しは 100 回までで, その最中に, x-y < EPS になった場合は, 繰り返しを強制終了する というようなことも可能. ただし, EPS は 分 さな正の数とする ( たとえば,0.00001). 0 00001)

繰り返しによる方程式の解法 : 二分法 (1/3) 二分法は, ニュートン法と同様に, 方程式の代表的な数値計算による解法の一つ. 関数 f(x) が 区間 a x b で連続で,f(a) と f(b) が異符号 ならば, 区間 a < x < b のどこかに f(x)=0 となる x が存在するはず. 計算の各繰り返しで, その区間幅を半分に狭めていくことにより解を 1 つ求めるのが二分法. 今, f(a) とf(b) が異符号 ( つまり,f(x)=0 の解が存在する区間の下限が a, 上限が b ) とする. a と b の中点 c( つまり,c = (a+b)/2 です ) を考え,f(c) の符号に関して次頁のように場合分けすると, 解が存在する区間が狭まる ( あるいは解が見つかる ). 18

繰り返しによる方程式の解法 : 二分法 (2/3) f(a) と f(c) が同符号 y y=f(x) a c x b f(b) と f(c) が同符号 y y=f(x) a x c b y a f(c)=0 c b y=f(x) x y y y a c b x y=f(x) a c b x y=f(x) a c b x y=f(x) 下限が c 上限が c 解が c y a c y=f(x) b x f(a) と f(c) が同符号の場合でも, 左図のように, 区間 a < x < c にも解がある場合があるが, 解を1つもとめればいいので, この区間は考慮に入れない. 19

繰り返しによる方程式の解法 : 二分法 (3/3) 以上より, 区間 a<x<b における f(x)=0 の解を二分法で求めるには 1. 最初に条件として与えた区間の下限を a, 上限を b に代入する. 2.f(a),f(b) の値を求め, これを変数 fa,fb に代入する. 3. 区間の幅, すなわち,b-a が十分に小さくなる ( 一応,0.000001 以下が十分に小さいとしよう ) まで,while 文により, 以下を繰り返す. (1) a と b の中点を求め c に代入する. また,f(c) の値を求めこれを変数 fc に代入する. (2) fc = = 0 ならば, break 文により while 文を終了. fa と fc が同符号ならば, a に c を代入し,fa に fc を代入する. それ以外, すなわち,fb と fc が同符号ならば, b に c を代入し,fb に fc を代入する. 4.c が求める解なので c の値を表示する. 20

課題 4 ( 二分法による方程式の解法 ) 二分法により, の解を区間 0 < x < 1 の範囲内で 1 つ求めるプログラムを作れ. f(0)=-2,f(1)=1 であり, 勿論 f(x) は 0 x 1で連続であるから,f(x)=0 の解は,0 と 1 の間, 少なくとも一つあり, 二分法によって解の一つが求まることは保証されている. f(a) の値を求め fa に代入するには, 地道にやるならば, fa=a*a*a*a-3*a*a*a+6*a*a-a-2; 本当はマクロ定義を利用して f(x) を定義し, fa=f(a); とできるが, マクロ定義については省略 ( 参考テキスト参照 ). x * y > 0 ならば, 変数 x と y の値は同符号 21