Microsoft PowerPoint - while.ppt

Similar documents
Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - visualprogram.ppt

cp-7. 配列

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

Microsoft PowerPoint - kougi2.ppt

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

Microsoft PowerPoint - kougi4.ppt

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - kougi6.ppt

Microsoft PowerPoint - guidance.ppt

ガイダンス

xl 1 program Othello6; 2 {$APPTYPE CONSOLE} 3 uses SysUtils; 4 5 type 6 TMasuNo = 0..99; // 7 TYouso = (Soto,Kara,Kuro,Siro); // 8 TBan = array [TMasu

PowerPoint プレゼンテーション

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

Microsoft PowerPoint - Prog05.ppt

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

Microsoft PowerPoint - prog08.ppt

プログラミング入門1

JavaScriptで プログラミング

プログラミングA

Microsoft PowerPoint - class04.ppt

Microsoft PowerPoint - C4(反復for).ppt

2016年度 九州大・理系数学

Microsoft PowerPoint - lec10.ppt

プログラミングA

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

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

Microsoft PowerPoint - kougi7.ppt

gengo1-6

C#の基本

プログラミング基礎

解答編 第 7 章実数型の計算と標準数学関数 演習問題 7.1 文法事項 1 ) 暗黙の型変換とは何か答えなさい 代入演算子 (=) や算術演算子 (+,-,*,/,%) では 2 つの演算項のデータ型が揃っている事が必要です 2 つの演算項のデータ型が異なる場合 可能ならば 演算項のデータ型を変換

プログラミングI (手続き)

Microsoft PowerPoint - 講義10改.pptx

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

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

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

Microsoft PowerPoint - 4.pptx

Microsoft Word - DF-Salford解説09.doc

1999年度 センター試験・数学ⅡB

C#の基本2 ~プログラムの制御構造~

Microsoft Word - VBA基礎(3).docx

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

計算機シミュレーション

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

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

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

Microsoft Word - 微分入門.doc

2015-2018年度 2次数学セレクション(整数と数列)解答解説

PowerPoint Presentation

Microsoft PowerPoint - ca ppt [互換モード]

Microsoft Word - java a.doc

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

情報処理概論(第二日目)

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

やさしくPDFへ文字入力 v.2.0

Prog1_2nd

Microsoft Word - VB.doc

Microsoft PowerPoint - algo ppt [互換モード]

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

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

重要例題113


演習2

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

Microsoft PowerPoint - 3.pptx

フローチャートの書き方

2015年度 信州大・医系数学

ワープロソフトウェア

Microsoft PowerPoint - prog11.ppt

Microsoft Word - no103.docx

2014年度 東京大・文系数学

補足資料

橡挿入法の実践

学習指導要領

三科目合計の算出関数を用いて各教科の平均点と最高点を求めることにする この2つの計算は [ ホーム ] タブのコマンドにも用意されているが 今回は関数として作成する まず 表に 三科目合計 平均 と 最高点 の項目を用意する 項目を入力する際 適宜罫線などを設定し 分かりやすい表作成を心がけること

MS-ExcelVBA 基礎 (Visual Basic for Application)

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

JavaプログラミングⅠ

<4D F736F F D F2095A F795AA B B A815B837D839382CC95FB92F68EAE2E646F63>

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

Microsoft PowerPoint - 10.pptx

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

物質工学科 田中晋

PowerPoint プレゼンテーション

sinfI2005_VBA.doc

PowerPoint Presentation

Microsoft Word -

Chap2

Taro-1803 平行線と線分の比

10. セル範囲に名前を定義します シート : 利用者リスト 1. セル A2:A5 を選択する 2. 名前ボックスに 利用者と入力 3. 続いて B2~B5 を選択 名前ボックスに続柄と入力 名前ボックスを記入するため 余分に選択するとどこまでしたか忘れますので最後のセルに下線を引いておくと解りや

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

スライド 1

memo

Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS Pascal

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

2015年度 2次数学セレクション(整数と数列)

Microsoft PowerPoint - 10.pptx

Microsoft Word - VBA基礎(2).docx

Microsoft PowerPoint - kougi8.ppt

Transcription:

本日の内容 繰り返し計算 while 文, for 文 例題 1. 自然数の和例題 2. 最大公約数の計算例題 3. ベクトルの長さ while 文例題 4. 九九の表 for 文と繰り返しの入れ子例題 5. ド モアブルの公式計算誤差の累積 今日の到達目標 繰り返し (while 文, for 文 ) を使って, 繰り返し計算を行えるようになること ループカウンタとして, 整数の変数を使うこと 今回も, 見やすいプログラムを書くために, ブロック単位での字下げを行う 条件 繰り返しとは 繰り返しとは, ある条件が満たされるまで, 同じことを繰り返すこと. 繰り返しを行うための文として while 文, for 文などがある.

繰り返しの例 ユークリッドの互助法 m と n の最大公約数を求めるために, 割った余りを求めること を, 余りが 0 になるまで繰り返す. 九九の表 九九の表を求めるために, 掛け算を 81 回繰り返す 例題 1. 自然数の和 整数データ (N とする ) を読み込んで,1 か ら N までの和を求めるプログラムを作る ここでは, 練習のため, 自然数の和の公式は使わずに,while 文を用いる 例 ) 100 5050 など program sum; {$APPTYPE CONSOLE} uses SysUtils; var N, i, s: integer; begin write('sum [1..N] Program. Please Enter N: '); readln(n); s := 0; i := 1; 条件式 while i <= n do begin s := s + i; i := i + 1; end; writeln('sum[1..n] = ', s:8); readln end. 繰り返し実行される部分 自然数の和 実行結果の例 sum [1..N] Program. Please Enter N: 100 sum [1..N] = 5050 sum [1..N] Program. Please Enter N: 1200 sum [1..N] = 720600

実行結果画面 ( 例 ) プログラム実行順 s := 0; i := 1; i <= N No Yes s := s + i; i := i + 1; 繰り返し処理の中身 繰り返しの前 i := 1 と S := 0 を実行 繰り返しの各ステップでなされること 1. S に i を足しこむ S には, その時点での 1から i までの和が入る 2. i の値を1 増やす 繰り返しの終了条件 i <= N が成り立たなくなったら終了 つまり i > N になったら終了 N = 7 とすると 繰り返し 1 回目繰り返し 2 回目繰り返し 3 回目繰り返し 4 回目繰り返し 5 回目繰り返し 6 回目繰り返し 7 回目繰り返し 8 回目 自然数の和 i <= 7 が成立する s = 0 + 1 i <= 7 が成立する s = 1 + 2 i <= 7 が成立する s = 3 + 3 i <= 7 が成立する s = 6 + 4 i <= 7 が成立する s = 10 + 5 i <= 7 が成立する s = 15 + 6 i <= 7 が成立する s = 21 + 7 i <= 7 が成立しない s の値 i の値 はじめは s = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8

while 条件式 do begin end 式 1; 式 2;... while 文 条件式 No Yes 式 1 式 2... 何かの処理の繰り返し 繰り返しのたびに while 文で書かれた条件式の真偽が判定され, 真である限り, while のあとに続く文が実行され続ける. 1 例題 1 のプログラム 練習 1. 例題 1を実行せよ 2 Borland Delphi 6 の起動 スタート プログラム Borland Delphi 6 Delphi 6 3 コンソールアプリケーションの新規作成 ファイル 新規作成 その他 ウインドウが現れる コンソールアプリケーション OK ウインドウが現れる 4 1 のプログラムコードを コピー して 貼り付け 5 コンパイル プロジェクト をコンパイル 6 実行 実行 実行 余裕がある人は練習 2 に進んでください ステップ実行画面 ステップ実行での変数の値の確認 変数 s の値は, 現時点では 3 現在 i := 1; の行を実行中であることを示す ステップ実行は F8 キー 変数の値の確認は CTRL+F7 キー

ステップ実行の終わり方 F9 キーを押すと, ステップ実行が終わって, 通常の実行に切り替わる ステップ実行での注意事項 read, readln 文では, 何かの値を入れるまでプログラムは止まる この間, F8, F9 キーなどは利かない 練習 2. 例題 1をステップ実行せよ 1 すでに 練習 1 を終えていること正確には, 練習 1 の 5 コンパイル を終えた状態であること 2 ここで, F8 を押す F8 はステップ実行の意味 実行画面が現れる. 実行中の行が 青色 で表示される 3 さらに F8 を 2 回押す readln の行に達したことを確認すること 4 実行画面 のウインドウで N の値を入れる N の値を入れるまでプログラムは止まっている ( F8 などは受け付けられない ) 5 さらに F8 を押しつづける 6 ステップ実行に飽きたら, F9 を押すとプログラムの最後の行まで 1 度に実行される ステップ実行の意味 プログラムの 間違い を探すのに便利 ステップ実行によって, プログラムの実行の流れを確認できる プログラム実行の途中で, 変数の値などを確認できる Borland Delphi 6 では F9: 通常の実行 F8: ステップ実行 CTRL+F7: 変数の値などの表示

例題 2. 最大公約数の計算 2つの整数データを読み込んで, 最大公約数を求めるプログラムを作る. ユークリッドの互助法を用いること ユークリッドの互助法を行うために while 文を書く例 ) 20, 12 のとき : 4 ユークリッドの互助法 最大公約数を求めるための手続き m,nの最大公約数は, m n とすると, m をn で割った余り = 0 なら, 最大公約数は n m をn で割った余り > 0 なら,m と n の最大公約数は, m をn で割った余り と n の最大公約数に等しい ( なお,n > m をn で割った余り が成り立つ ) program sum; {$APPTYPE CONSOLE} uses SysUtils; var r, m, n: integer; begin write('gcd Program. Please Enter m: '); readln(m); write('please Enter n: '); 条件式 readln(n); r := m mod n; while r > 0 do begin m := n; 条件が成り立つ限り, n := r; r := m mod n; 実行されつづける部分 end; writeln('gcd = ', n:8); readln end. 最大公約数の計算 実行結果の例 GCD Program. Please Enter m: 80 Please Enter n: 35 GCD = 5

実行結果画面 ( 例 ) プログラム実行順 r := m % n; r > 0 No Yes m := n; n := r; r := m mod n; 繰り返しの前 繰り返し処理の中身 r := m mod n を実行 (m を n で割った余りが r に入る ) 繰り返しの各ステップでなされること m := n; n := r; r := m mod n; を実行 (m, n, r の値は小さくなっていく ) 繰り返しの終了条件 r が 0 になったら終了 最大公約数の計算 m = 80, n = 35 とすると, 最初の r = m mod n; で, r = 10 になる 繰り返し 1 回目 繰り返し 2 回目 繰り返し 3 回目 r > 0 が成立する m = 35 n = 10 r = 5 r > 0 が成立する m = 10 n = 5 r = 0 r > 0 が成立しない m の値 n の値 r の値 80, 35 の最大公約数は 35, 10 の最大公約数に等しい 35, 10 の最大公約数は 10, 5 の最大公約数に等しい

1 例題 2 のプログラム 練習 3. 例題 2を実行せよ 2 Borland Delphi 6 の起動 スタート プログラム Borland Delphi 6 Delphi 6 3 コンソールアプリケーションの新規作成 ファイル 新規作成 その他 ウインドウが現れる コンソールアプリケーション OK ウインドウが現れる 4 1 のプログラムコードを コピー して 貼り付け 5 コンパイル プロジェクト をコンパイル 6 実行 実行 実行 余裕がある人は ステップ実行 してください 例題 3. 総和と平均 データ x 1, x 2,... x k を1つづつ読み込んで, 合計と平均を求めるプログラムを作成する 負の数が入力されたら終了する例 ) 整数のデータ 1, 2, 3 に対して 1 2 入力 3-1 program sum; {$APPTYPE CONSOLE} uses SysUtils; var x, s: real; var i: integer; begin s := 0; 条件式 i := 0; write('please Enter x[', i:3, ']: '); readln(x); while 0 <= x do begin s := s + x; i := i + 1; write('please Enter x[', i:3, ']: '); readln(x); end; writeln('sum =', s:8:3); writeln('average =', (s/i):8:3); readln end. 条件が成り立つ限り, 実行されつづける部分 総和と平均 実行結果の例 Please Enter x[ 0]: 1 Please Enter x[ 1]: 2 Please Enter x[ 2]: 3 Please Enter x[ 3]: -1 sum = 6.000 average = 2.000

実行結果画面 ( 例 ) プログラム実行順 s := 0; i := 0; write('please Enter x[', i:3, ']: '); readln(x); 0 <= x No Yes s := s + x; i := i + 1; write('please Enter x[', i:3, ']: '); readln(x); 繰り返し処理の中身 繰り返しの前 S := 0 と i := 0 を実行 X 0 を読み込む 繰り返しの各ステップでなされること 1. S に Xi を足しこむ S には, その時点での X0 から Xi までの和が入る 2. i の値を 1 増やす 3. Xi を読み込む 繰り返しの終了条件 Xi < 0 ならば終了 1 例題 3 のプログラム 練習 4. 例題 3を実行せよ 2 Borland Delphi 6 の起動 スタート プログラム Borland Delphi 6 Delphi 6 3 コンソールアプリケーションの新規作成 ファイル 新規作成 その他 ウインドウが現れる コンソールアプリケーション OK ウインドウが現れる 4 1 のプログラムコードを コピー して 貼り付け 5 コンパイル プロジェクト をコンパイル 6 実行 実行 実行 余裕がある人は 課題 1 に進んでください

課題 1.m から n までの和 2 つの整数データ (M, N とする ) を読み込んで,M から N までの和を求めるプログラムを作りなさい while 文を使いなさい. 例題 1 のプログラムを参考にしなさい 必ず, 動作確認まで行うこと ( 余裕がある人のみ ) 和だけでなく平均も表示させよ 例題 4. 九九の表 九九の表を表示するプログラムを作成する 九九の表を表示するために, 繰り返しの入れ子を使う program sum; {$APPTYPE CONSOLE} uses SysUtils; var i, j: integer; begin for i := 1 to 9 do begin write( i:3, ':' ); for j := 1 to 9 do begin write( (i*j):3 ); end; writeln; end; readln end. 繰り返し実行される部分 実行結果画面 ( 例 )

繰り返しの入れ子 i := 1 i <= 9 Yes 九九の表 No j := 1 j <= 9 Yes No i := i + 1; 九九の表を表示 j := j + 1; for 文 for 変数名 := 初期値 to 終了値 do begin 式 1; 式 2;... end 例題 5. ド モアブルの定理 θを読み込んで, 次の値を計算するプログラムを作る ( cos θ + i sin θ ) n cos n θ + i sin n θ なお,i は虚数単位 ここでは (sinθ+ i cosθ) n を求めるために, while 文を用いた繰り返し計算を行ってみる

z 1 = x 1 + i y 1 z 2 = x 2 + i y 2 のとき 複素数の積 z 1 z 2 = (x 1 + i y 1 ) (x 2 + i y 2 ) = x 1 x 2 + x 1 i y 2 + i y 1 x 2 + i y 1 i y 2 = x 1 x 2 - y 1 y 2 + i (x 1 y 2 + y 1 x 2 ) 実数部 虚数部 program sum; {$APPTYPE CONSOLE} uses SysUtils; var j, n: integer; var x1, y1, x2, y2, theta: real; begin write('please Enter n: '); readln(n); write('please Enter theta: '); readln(theta); x1 := cos(theta); y1 := sin(theta); x2 := x1; y2 := y1; j := 1; while j <= n do begin 条件式 繰り返し実行される部分 writeln( '(cos theta + i sin theta)', j, '=', x1:8:3, '+ i ', y1:8:3 ); writeln( 'cos', j, 'theta + i sin', j, 'theta =', cos( j * theta ):8:3, sin( j * theta ):8:3 ); x1 := x1 * x2 - y1 * y2; y1 := x1 * y2 + x2 * y1; j := j + 1; end; readln end. 実行結果画面 ( 例 ) 繰り返し処理の中身 繰り返しの前 x1 := cos θ y1 := sin θ x2 := x1 y2 := y1 を実行 繰り返しの各ステップでなされること x1 := x1 * x2 - y1 * y2 y1 := x1 * y2 + x2 * y1; を実行 (x1 が実数部,y1 が虚数部 )

(cosθ+ i sinθ) n = cos nθ+ i sin nθ (cosθ+ i sinθ) 2 = cos 2 θ- sin 2 θ+ 2i cosθsin θ = cos2θ+ i sin2θ (cosθ+ i sinθ) 3 = (cosθ+ i sinθ) 2 (cosθ+ i sinθ) = (cos2θ+i sin2θ) (cosθ+ i sinθ) = cos2θcosθ- sin2θsinθ + i (cos2θsinθ- sin2θcosθ) = cos (2θ+θ) + i sin (2θ+θ) = cos3θ+ i sin3θ ( 以下同様に考える. 数学的帰納法で証明できる ) 計算結果から分かること 本来なら (cosθ+ i sinθ) n = cos nθ+ i sin nθ が成り立つはず しかし, 浮動小数 の計算は, あくまでも近似計算 ( 有効精度 12 桁程度 ) 計算を繰り返す ( つまり 計算結果を使った計算 ) たびに, 誤差が積み重なる