プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.

Slides:



Advertisements
Similar presentations
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラムのパタン演習 解説.
プログラミング基礎I(再) 山元進.
プログラミング言語としてのR 情報知能学科 白井 英俊.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミングができるようになるには…. 一週間に1回では無理! 自分の力でできるだけがんばる
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
数値計算及び実習 第3回 プログラミングの基礎(1).
VBA H106077 寺沢友宏.
基礎プログラミングおよび演習 第9回
プログラミング基礎I(再) 山元進.
C言語 配列 2016年 吉田研究室.
C言語講座 第4回 ポインタ.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
第6章 2重ループ&配列 2重ループと配列をやります.
条件式 (Conditional Expressions)
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
基礎プログラミング演習 第7回 繰り返し.
スクリプト言語を用いたPHITSの連続実行
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第7回 条件による繰り返し.
整数データと浮動小数データ 整数データと浮動小数データの違い.
繰り返し計算 while文, for文.
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
アルゴリズムとプログラミング (Algorithms and Programming)
コンピュータに計算させる命令を確かめよう!
情報とコンピュータ 静岡大学工学部 安藤和敏
Structured programming
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
情報とコンピュータ 静岡大学工学部 安藤和敏
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
第7回 条件による繰り返し.
情報とコンピュータ 静岡大学工学部 安藤和敏
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
VBで始めるプログラミング 第三回 コードを書こう!! まきはた@ナーク ’04/05/21.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング言語論 第5回 手続きの引数機構 変数の有効範囲
プログラムの基本構造と 構造化チャート(PAD)
制御文の役割と種類 IF文 論理式と関係演算子 GO TO文
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
情報とコンピュータ 静岡大学工学部 安藤和敏
統計ソフトウエアRの基礎.
プログラミング 3 2 次元配列.
基礎プログラミング演習 第6回.
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
情報とコンピュータ 静岡大学工学部 安藤和敏
ウェブデザイン演習 第6回.
C#プログラミング実習 第2回.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
C言語講座第5回 2017 構造体.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
Presentation transcript:

プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説

プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1

プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていく. TicTa cToe1 TicTacT oe2

プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていく. TicTa cToe1 TicTacT oe2 TicTacToe3

盤のデータ構造 2次元配列で表す場合 type TBan = array [1..3,1..3] of ~ ; 1,11,21,3 2,12,22,3 3,13,23,3

盤のデータ構造 1次元配列で表す場合 type TBan = array [1..9] of ~ ;

盤のデータ構造 今回は1次元配列を使うことにします. 盤の枡を指す番号は 1 ~ 9 で, integer 型のほ んの一部に過ぎません. 一部の範囲だけを動くデータのために,固有 の型名をつけると,わかりやすくなります. type TBangou = 1..9; これを部分範囲型といいます.

盤のデータ構造 から 盤の枡の状態は,空, ○ , × の3つあります. それぞれを 0,1,2 で表すことにして type TYouso = 0..2; としてもよいのですが, 名前で表すとわかりやすくなります. type TYouso = (Kara,Maru,Batu); これを列挙型といいます.

盤のデータ構造 合わせて次のようになります. type TBangou = 1..9; TYouso = (Kara,Maru,Batu); TBan = array [TBangou] of TYouso; var Ban : TBan;

盤の表示 枠の線を +-|を使って書きます. +-+-+-+ 1行目 | | × | | 2行目 +-+-+-+ 3行目 | | ○ | | 4行目 +-+-+-+ 5行目 | ○ | | | 6行目 +-+-+-+ 7行目

盤の表示 9つの空の枡を一直線に書くのは簡単です. for N := 1 to 9 do begin Write(‘ | ’); // 左の線 Write(‘ ’); end; WriteLn(‘ | ’); // 最後の線 実行すると | | | | |

盤の表示 空白の代わりにN番目の要素を書くようにします. for N := 1 to 9 do begin Write(‘ | ’); YousoWoKaku(N); end; WriteLn(‘ | ’); 実行すると | | × | | | ○ | | ○ | | |

盤の表示 3枡書いたら右の線を書いて改 行するようにします. for N := 1 to 9 do begin Write(‘ | ’); YousoWoKaku(N); if N mod 3 = 0 then WriteLn(‘ | ’); end; 実行すると | | × | | | | ○ | | | ○ | | |

盤の表示 横の線を書くようにします. WriteLn(‘ +-+-+-+ ’); for N := 1 to 9 do begin Write(‘ | ’); YousoWoKaku(N); if N mod 3 = 0 then begin WriteLn(‘ | ’); WriteLn(‘ +-+-+-+ ’); end; 実行すると +-+-+-+ | | × | | +-+-+-+ | | ○ | | +-+-+-+ | ○ | | | +-+-+-+

要素を書く 要素は3種類あるので,場合分け( case 分 岐)を使います. case Ban[N] of Kara : Write(‘ ’); Maru : Write(‘○’); Batu : Write(‘×’); end;

どこに置くか 手番のプレイヤーに,どこに置くか訊きま す. 正しい番号を入れるまで,繰り返し訊かな いといけません.

どこに置くか repeatループを使った例 repeat Write(‘ どこに置きますか [1 ~ 9] ? ’); ReadLn(N); until (N in [1..9]) and (Ban[N] = Kara); Result := N; 実行すると どこに置きますか [1 ~ 9] ? 0 どこに置きますか [1 ~ 9] ?

どこに置くか whileループを使った例 Write(‘ どこに置きますか [1 ~ 9] ? ’); ReadLn(N); while not (N in [1..9]) or (Ban[N] <> Kara) do begin WriteLn(‘ そこは置けません ’); Write(‘ どこに置きますか [1 ~ 9] ? ’); ReadLn(N); end; Result := N; 実行すると どこに置きますか [1 ~ 9] ? 0 そこは置けません どこに置きますか [1 ~ 9] ?

集合を使うと便利 整数Nが 1~9 の数であるかの判定. 不等式を使うと (1 <= N) and (N <= 9) 集合を使うと N in [1..9] これは,数学での式 N ∈ { 1,2,3,4,5,6,7,8,9 } と同じ意味です.

集合を使うと便利 「M月が大の月( 31 日まである月)か」を 不等式で書くと (M=1) or (M=3) or (M=5) or (M=7) or (M=8) or (M=10) or (M=12) ですが,集合で書くと M in [1,3,5,7,8,10,12] と簡潔でわかりやすくなります.

集合を使うと便利 「M月とN月が両方とも大の月か」を 不等式で書くと,とても長くなります. 集合で書くと [M,N] <= [1,3,5,7,8,10,12] と簡単です. これは,数学での式 {M,N} ⊆ {1,3,5,7,8,10,12} と同じ意味です.

繰り返しの条件 repeat ~ until (N in [1..9]) and (Ban[N] = Kara); while not (N in [1..9]) or (Ban[N] <> Kara) do begin ~ end; repeatループでは終了条件を書き, whileループでは継続条件を書きます. ちょうど反対(否定)になります.

ゲームの終了条件 とりあえず,勝敗は気にしないで,すべて の 枡が埋まるまで(9手)続けるとします. Tesuu := 0; repeat Inc(Tesuu); // Tesuu := Tesuu+1; と同じ ~ until Tesuu = 9;

Boolean(論理値) 次のプログラムを実行してみてくださ い. var Tesuu : Integer; begin {Main} Tesuu := 0; repeat Inc(Tesuu); WriteLn(Tesuu:2, (Tesuu=9):6); until Tesuu=9; ReadLn; end.

Boolean(論理値) Tesuu の値は 1 2 … 9 で,整数値( Integer) で す. Tesuu=9 の値は 9=1 9=2 … 9=9 すなわち False False … True で,論理値( Boolean ) です. 実行しましたか.

ゲームの終了条件 勝敗は,今 ○ か × を置いたことによって,そ れが3つ並んだら「勝った」とわかりま す. 変数 Katta : Boolean を使うことにします. Tesuu := 0; repeat Inc(Tesuu); ~ Katta := Naranda(Basyo); until (Tesuu = 9) or Katta;

ゲームの終了条件 function Naranda(N : TBangou) : Boolean; は,今 Ban[N] に ○ か × を置いたところで,そ れが3つ並んだか調べる論理値関数です. N によって並ぶ筋が異なるので場合分けして 調べます. case N of 1 : Onaji(1,2,3) or Onaji(1,4,7) or Onaji(1,5,9); ~ end;

ゲームの終了条件 関数 Naranda を完成させてください.

問題 procedure TebanKoutai(var Player : TPlayer); は case分岐を使っていますが,二分岐 なので if 分岐でも書けます. if 分岐に書き換えてください.

問題 盤の線を罫線 ( ┌ ─ など) を使うともっとき れいに書けます. ┌─┬─┬─┐ 1行目 | | × | | 2行目 ├─┼─┼─┤ 3行目 | | ○ | | 4行目 ├─┼─┼─┤ 5行目 | ○ | | | 6行目 └─┴─┴─┘ 7行目 罫線を使うように改良してください. 「けいせん」を変換していろいろな線が選べます. 7行目が3,5行目と異なるので,ちょっと工夫 しないといけません.