「循環構造のアルゴリズム。Pascal でのループのプログラミング」をテーマにしたコンピューター サイエンスのプレゼンテーション。 循環アルゴリズム。 Pascal のループと循環コマンドの種類 Pascal の前提条件付きループ - WHILE

スライド 1

パフォーマーROBOT 循環アルゴリズム
コンピューター サイエンスの授業のプレゼンテーション。 9 年生のトピック: 制御とアルゴリズム

スライド 2

FOR i:=1 TO N DO BEGIN action1; アクション2; 終わり;
FOR i:=1 TO N DO アクション 1; アクション2;
1

スライド 3

2
(条件が TRUE) の間、アクション 1 を開始します。 アクション2; 終わり;
(条件が TRUE) の間、アクション 1 を実行します。 アクション2;

スライド 4

3
17セル
12セル

スライド 5

4
プログラム N1; 変数 i: 整数; For i:=1 ~ 12 で RobotForw を開始します。 ロボット左; i:=1 ~ 17 の場合、RobotForw を実行します。 ロボット左; i:=1 ~ 12 の場合、RobotForw を実行します。 ロボット左; i:=1 ~ 17 の場合、RobotForw を実行します。 ロボット左; 終わり。
私たちは下に移動しています
右に移動
上昇
左に移動
これと次のコマンドはロボットを角で左に回転させます

スライド 6

5
壁を置くとロボットが壁に衝突してプログラムが停止します

スライド 7

6
プログラム N2; 変数 i: 整数; FreeForw が RobotForw を実行している間に開始します。 ロボット左; FreeForw は RobotForw を実行します。 ロボット左; FreeForw は RobotForw を実行します。 ロボット左; FreeForw は RobotForw を実行します。 ロボット左; 終わり。
前方に空きスペースがある間に、ロボットを前方に動かします。

スライド 8

スライド 9

8
プログラム N3; 変数 i: 整数; Begin for i:=1 to 4 do begin FreeForw が RobotForw を実行している間、 ロボット左; 終わり; 終わり。
障害物があるまで4回前進し、左折します

スライド 10

9
障害物があるまで4回前進し、左折します

スライド 11

10
独立した仕事のためのタスク
タスク 1. 障害物を設定の左側の壁のランダムな場所に配置します。 ロボットはポイント 1 に到達し、元の状態に戻らなければなりません。 注: 3 つの直列接続ループを使用してください。
1
1

スライド 12

11
タスク 2. 設定の左側の壁の任意の場所に重りを置きます。 ロボットは荷物に到達し、荷物を受け取り、倉庫に輸送し、元の状態に戻さなければなりません。 注: 2 つの直列接続ループを使用してください。

スライド 13

12
タスク 3. 5 つの重りを設定の左側の壁のランダムな場所に置きます。 ロボットはすべての商品を倉庫に運ばなければなりません。 注: パラメーターを含むループ内にネストされた 2 つの連続して接続された WHILE ループを使用します。

スライド 14

13
例 1 ロボットは廊下の入り口の前にいます。 廊下内のすべてのセルにマークを付けて戻る必要があります

スライド 15

14
プログラム N7; RobotForw を開始します。 FreeLeft ではありませんが、Select を開始します。 ロボットフォウ; 終わり; ロボットバック; FreeLeft ではありませんが、RobotBack を実行します。 終わり。
トンネルに入るために一歩を踏み出す
左側に壁がある間にマスをマークして一歩前に進みます
トンネルに戻ります
左側に壁がある中、一歩下がっていきます

スライド 16

15
例 2 斜めに配置された 2 つの壁があります。 壁の長さは任意です。 ロボットは壁の間の隅にあります (写真を参照)。 ロボットが壁の内側のすべてのセルにマークを付けるプログラムを作成する必要があります。 ロボットの最終的な位置は任意です。

スライド 17

16
プログラム N8; Begin FreeRight ではない場合は、Select を開始します。 ロボットフォウ; 終わり; FreeBack 中に RobotBack を実行します。 ロボット左; FreeLeft ではありませんが、Select を開始します。 ロボットフォウ; 終わり; 終わり。
右側にスペースがない間に、ボックスにマークを付けて一歩前に進みます。
ロボットを取り戻す
左折してください
左側にスペースがない間に、ボックスにマークを付けて一歩前に進みます。

スライド 18

スライド 19

18
例 3 家具が壁で遮られ、家具が 2 つの部分に分割されています。 壁のランダムな場所に檻サイズの通路があります。 ロボットがこの通路を見つけて環境の別の場所に移動するプログラムを作成する必要があります。

スライド 20

19
プログラム N9; RobotLeft を開始します。 FreeForw は RobotForw を実行します。 ロボット右; FreeLeft ではありませんが、RobotForw を実行します。 ロボット左; ロボットフォウ; ロボットフォウ; 終わり。
ロボットを壁に向けます。
壁にぶつかるまで前に進もう
壁に沿ってロボットを回転させます
壁が終わるまで前進します
ロボットを通路に向けて回転させます
私たちは二歩前進し、状況の残りの半分に移ります

スライド 2

プラン

ループの概念 ループ ステートメント For ループ While ループ 繰り返し 文献

スライド 3

文学

カストルノフ A.F.、エフストラトヴァ G.A. Pascal プログラミング言語: 大学向けの教科書。 - Cherepovets: 州立高等専門教育機関 ChSU、2010 年。 - 117 ページ。 - 参考文献: P.114。 プログラミング言語Pascalの電子教科書 /http://pascal.guti.ru 計画

スライド 4

サイクルの概念

多くの問題を解決するためのアルゴリズムは循環的であり、結果を得るために特定の一連のアクションが複数回実行されます。 たとえば、知識制御プログラムは、質問を表示し、回答を受け入れ、合計スコアに回答のマークを追加し、被験者がすべての質問に回答するまでこれらのアクションを繰り返します。 または、たとえば、リスト内の目的の姓を検索するには、リスト内の最初の姓をチェックして、検索された姓と一致するかどうかを確認し、次に 2 番目、3 番目などと一致する必要があります。 目的の姓が見つかるか、リストの最後に到達するまで。

スライド 5

複数回実行されるステートメントのグループが存在するアルゴリズムは、サイクリックと呼ばれます。 繰り返されるステートメントのグループは、ループの本体と呼ばれます。 Pascal では、For、while、Repeat ループ ステートメントを使用してループを実装できます。 プラン

スライド 6

for ループ演算子

For ループ演算子は、ループ本体を複数回実行する必要があり、繰り返し回数が事前にわかっている場合に使用されます。

スライド 7

For ループ演算子の最初の記述形式

一般に、For 演算子の 1 番目の記述形式は次のようになります。 ここで、For、to、do は機能語です。 カウンタは、ループが繰り返される回数を決定する順序変数 (通常は整数) です。 繰り返しの数は、次の式を使用して計算されます: Final_value – Initial_value+1。 End_Value は Start_Value 以上である必要があります。

スライド 8

ループの本体が複数の演算子で構成されている場合、For 演算子の最初の記述形式は次のようになります。 ForCounter:=Start_valuetoFinal_valuedo Begin (Loop body) End;

スライド 9

最初の記述形式の For ループのアルゴリズムを見てみましょう。 カウンタには Initial_ 値が割り当てられます。 条件がチェックされます: カウンタ値が End_value より大きいか? 条件が真 (Yes) の場合、ループは終了します。 条件が偽 (いいえ) の場合、ループの本体が実行され、カウンタ値が 1 つ増加して、条件が再度チェックされます。 条項2。

スライド 10

For ループ演算子の 2 番目の記述形式

一般に、For 演算子の 2 番目の記述形式は次のようになります。 ここで: for、downto、do は機能語です。 カウンタは、ループが繰り返される回数を決定する順序変数 (通常は整数) です。 繰り返しの数は、Start_value – Final_value+1 という式を使用して計算されます。 Start_Value は End_Value 以上である必要があります。

スライド 11

ループの本体が複数の演算子で構成されている場合、For 演算子の 2 番目の記述形式は次のようになります。 ForCounter:=Start_valuedowntoFinal_valuedo Begin //Loop body End;

スライド 12

2 番目の表記形式での For ループのアルゴリズムを考えてみましょう。カウンターには Initial_ 値が割り当てられます。 条件がチェックされます: カウンタ値が End_value より小さいか? 条件が真 (Yes) の場合、ループは終了します。 条件が偽 (いいえ) の場合、ループの本体が実行され、その後カウンター値が 1 減らされ、条件が再度チェックされます。 条項2。

スライド 13

for ループ演算子

プログラムEx1; 変数 i、n:整数; (i – カウンター、n – 必要な星の数) s:string;(s – 生成された星の文字列) begin Writeln("星の数を入力してください"); (星の数を問い合わせる) Readln(n); (ユーザーは星の数 n を入力します) s:=""; (アスタリスクの文字列の形成は空の文字列で始まります) (文字列は For ループを使用して形成されます。カウンタの初期値は 1、最終値は必要な星の数 n です。) fori:= 1 to n do s :=s+"*"; (ループの各ステップで 1 つのアスタリスクが行に貼り付けられます) Writeln(s) (行が出力されます) Readln; 終わり。 計画の例: プログラムは一連の星を生成します。 行内の星の数はユーザーが決定します。

スライド 14

While ループ

While ループは、プログラム開発中にループ本体の繰り返し回数が不明で、プログラムの実行中にのみ決定できる場合に使用されます。 一般に、while ステートメントは次のように記述されます。 While は機能語です。 条件は、ループの継続を決定する論理式です。

スライド 15

ループの本体が複数のステートメントで構成されている場合、while ループは次のように記述されます。 WhileCondition do Begin //Loop body End;

スライド 16

While ループのアルゴリズムを見てみましょう。条件がチェックされます。 条件が true の場合、ループの本体が実行されます。 その後、再度状態を確認します。 条件が false の場合、ループは終了します。

スライド 17

したがって、while は前提条件付きのループ、または「while」ループ (条件が true の間にループの本体が実行されます) です。 ループの最初のパスで条件が false の場合、ループの本体は一度も実行されません。 条件が決して false にならない場合、ループは無限に繰り返されます。 ループが発生してしまいます。

スライド 18

プログラムEx2; varAccount: 実数。 (アカウント サイズ) 月: 整数。 (口座開設からの経過月数) begin Account:=1000; (1000 ルーブルが口座に入金されました) 月:=0; (アカウントは開設されたばかりです) whileアカウント

スライド 19

繰り返しサイクル

繰り返しループは、while ループと同様、ループ本体を複数回実行する必要があるが、繰り返し回数が事前に不明な場合にプログラム内で使用されます。 一般に、Repeat ループは次のように記述されます。 ここで、Repeat、Until は機能語です。 条件は、ループの終了を決定するブール式です。

スライド 20

リピートループのアルゴリズムを考えてみましょう。予約語のRepeatとUntilの間にあるループの本体が実行されます。 状態は確認済みです。 条件が true の場合、ループは終了します。 条件が false の場合、ループの本体が再度実行されます。

スライド 21

したがって、Repet は事後条件付きのループ、または「Before」ループ (条件が true になるまでループの本体が実行されます) です。 したがって、ループの本体は少なくとも 1 回実行されます。 条件が true にならない場合、ループは無限になります。

スライド 22

プログラムEx3; var 時間:整数; (分裂時間) Cells: integer;(cells の数) begin Time:=0;(細胞はまだ分裂を開始していない) Cells:=1;(1 つのセル)repeat Time:=Time+3;(次の 3 時間) ) セル数: =Cells*2;(セル数が 2 倍に増加) セル数が 24 を超えるまで; (「セル数が 24 より大きい」という条件が成立するまで) Writeln(Time) (結果を出力) Readln; 終わり。 計画例: 単細胞アメーバは 3 時間ごとに 2 つの細胞に分裂します。 何時間後にセルの数が 24 を超えるかを調べます。

すべてのスライドを表示

循環アルゴリズム2017/04/06
循環アルゴリズム
周期の種類と周期
パスカルコマンド

サイクルは複数ある
シーケンスの繰り返し
行動
アルゴリズムの繰り返し部分
ループの本体と呼ばれる
サイクルの種類
与えられた番号で
繰り返し
履行条件
サイクル
条件付き
終了条件
サイクル

サイクルの種類(内容)
前提条件付きのループ
練習する
事後条件付きループ
練習する
パラメータを使用したループ
練習する
複雑な問題の解決

前提条件付きのループ

練習する

条件、およびのみ実行する必要があるアクション
条件を確認したら、前提条件でループを使用します。


ループ本体の実行前にチェックが行われます。
条件に一致し、結果が「true」の場合、ループの本体が実行されます。
もう一度言いますが、「false」の場合、ループは終了します。
ブロック図上で
サイクルの始まり
いいえ
状態
はい
ループ本体
サイクルの終わり
パスカルで
その間<условие>する
始める
<тело цикла>
終わり;

事後条件付きループ

練習する
繰り返し回数が事前に不明で、指定されているだけの場合
条件とその前に実行する必要があるアクション
条件テストでは、事後条件を含むループを使用します。
論理式が条件、本文として使用されます。
ループ - 単純または複合演算子。
ループ本体が実行されるたびにチェックが行われます。
条件が満たされ、結果が false の場合、ループの本体が実行されます。
もう一度言いますが、「true」の場合、ループは終了します。
ブロック図上で
パスカルで
繰り返す
ループ本体
<тело цикла>
はい
いいえ
状態
それまで<условие>;

パラメータ付きループ

練習する
パラメータ付きループ
繰り返し回数があらかじめわかっている場合
パラメータにループが適用されます。
繰り返し回数を指定する変数が呼び出されます。
ループパラメータまたは制御変数。
ループ本体が実行されるたびに、コントロール
変数の増減、ループ
どちらかを超えるまで実行されます
制限が少なくなります。
ブロック図上で
パスカルで
X:=A から B の場合は次のようにします
X:=A、B、C
ループ本体
X – 制御変数(サイクルパラメータ)
A – X の初期値、B – X の最終値
C – ステップ X を変更します
始める
<тело цикла>
終わり;
ステップとして使用できるのは、
のみ:
「へ」= 1;
「ダウントゥ」 = -1

前提条件のあるループを使用したタスクの例
理論

口頭アルゴリズム:
最初に 1 に等しい数値 X を掛けます。
指定された回数 (N) × 3。
始める
プログラムステップ;
ヴァール
H、B、X: 整数;
始める
Writeln('学位?');
Readln(H);
X:=1;
B:=1;
Bの間<=H do
始める
X:=X*3;
B:=B+1;
終わり;
Writeln('結果',X);
終わり。
パスカル
N
希望の学位を入力する
X:=1
初期値
B:=1
いいえ
「B」度カウンター
B≦H
はい
X:=X*3
3を掛ける
B=B+1
カウンター増加
バツ
結果の出力
価値観
終わり
ブロック図
説明

事後条件付きループを使用したタスクの例
理論
タスク: 数値 3 を指定の累乗します
口頭アルゴリズム:

プログラムステップ;
ヴァール
H、B、X: 整数;
始める
Writeln('学位?');
Readln(H);
X:=1;
B:=0;
繰り返す
X:=X*3;
B:=B+1;
いいえ
B>=Hまで;
Writeln('結果',X);
終わり。
始める
N
希望の学位を入力する
X:=1
初期値
B:=0
3を掛ける
X:=X*3
カウンター増加
B=B+1
はい
B>=H
「B」度カウンター
バツ
結果の出力
価値観
終わり
パスカル
ブロック図
説明

パラメータ付きのループを使用したタスクの例
理論
タスク: 数値 3 を指定の累乗します
口頭アルゴリズム:
最初は 1 に等しい数値 X を、指定された回数 (H) で 3 で乗算します。
プログラムステップ;
ヴァール
H、B、X: 整数;
始める
Writeln('学位?');
Readln(H);
X:=1;
B:=1 から H の場合は次のようにします
始める
X:=X*3;
終わり;
Writeln('結果',X);
終わり。
パスカル
始める
N
X:=1
B:=1,H,1
X:=X*3
バツ
終わり
ブロック図
希望の学位を入力する
初期値 X=1
1からHまでのパラメータ
3を掛ける
結果の出力
価値観
説明

サイクルの選択は、問題の状態の特性によって異なります。 実践するだけで最適な解決策がわかります。

タスク: トレーニングを開始した初日のアスリート
10km走った。 毎日彼は毎日の量を増やしました
基準は前日の基準の 10% です。
アスリートが 7 日間で移動する合計距離はどれくらいですか?
入力変数:
d – 日数
Sd – 今日の距離
出力変数:
S – 共通パス

ソリューションのブロック図

始める
S:=10
Sd:=10
d:=1
d:=d+1
Sd:=Sd*1.1
S:=S+Sd
いいえ
D=7
はい
s
終わり

パスカルでのプログラム

サイクル「のために」
サイクル「バイ」
サイクル「前」
プログラムを始めてください。
プログラムを始めてください。
プログラムを始めてください。
ヴァール
ヴァール
ヴァール
S、Sd: 実数。
S、Sd: 実数。
S、Sd: 実数。
d:バイト;
d:バイト;
d:バイト;
始める
始める
始める
S:=10;
S:=10;
S:=10;
Sd:=10;
Sd:=10;
Sd:=10;
d:=2 ~ 7 の場合は次のようにします
始める
その間、<7 do
始める
繰り返す
d:=d+1;
Sd:=1.1*Sd;
d:=d+1;
Sd:=1.1*Sd;
S:=S+Sd;
Sd:=1.1*Sd;
S:=S+Sd;
終わり;
S:=S+Sd;
(d=7) まで;
Writeln('S=',S);
終わり;
Writeln('S=',S);
終わり。
Writeln('S=',S);
終わり。
終わり。

管理のための質問:
1. Pascal のどの演算子がループを定義するか
前提条件
2. ループ内のパラメータとしてステップ「1」と「-1」を指定する方法
3. ループはどのブランチから終了しますか?
事後条件
4. ループ内にパラメータを含む条件はありますか?
5. ループの本体となるものは何ですか
6. パラメータ付きループを使用する場合
終わり





前提条件付きループ 繰り返し回数が事前に不明で、条件のみで指定され、条件を確認してから実行する必要があるアクションの場合は、前提条件付きループを使用します。 論理式が条件として使用され、ループの本体は単純または複合演算子です。 ループ本体の各実行前に条件がチェックされ、結果が「true」の場合はループ本体が再度実行され、「false」の場合はループが終了します。 ブロック図上で Pascal では開始終了します。 条件 ループ本体 No 練習 ループの開始 ループの終了 YES While do


事後条件付きループ 繰り返し回数が事前に不明で、条件と、条件をチェックする前に実行する必要があるアクションによってのみ指定される場合は、事後条件付きループを使用します。 論理式が条件として使用され、ループの本体は単純または複合演算子です。 ループ本体が実行されるたびに条件がチェックされ、結果が「false」の場合はループ本体が再度実行され、「true」の場合はループが終了します。 ブロックダイアグラム上 In Pascal 繰り返し条件ループ本体 Yes No Practice until ;


パラメータ付きループ 繰り返し回数が事前にわかっている場合は、パラメータ付きループを使用します。 繰り返し回数を指定する変数をループパラメータまたは制御変数と呼びます。 ループ本体が実行されるたびに、制御変数が増加または減少し、制限を超えるか制限未満になるまでループが実行されます。 Pascal のブロック線図では、X は制御変数 (サイクル パラメーター)、A は X の初期値、B は X の最終値、C は X を変更するステップです。ステップとして使用できるのは次のとおりです。「to」 = 1; 「downto」 = -1 X:=A,B,C ループ ボディ プラクティス For X:=A to B do Begin End;


前提条件のあるループを使用した問題の例 数値 3 を指定の累乗します。 タスク: 口頭アルゴリズム: 数値 X (最初は 1 に等しい) を指定の回数 (H) で 3 倍します。 start H BHBH X: =1 X:=X*3 end X 与えられた度数を入力 初期値「B」度カウンタ B=B+1 3を掛ける カウンタを増加させる 結果の値を出力する Programm Stepen; 変数H、B、X:整数; Writeln(学位?) を開始します。 Readln(H); X:=1; B:=1; Bの間


H X:=1 X:=X*3 end X 指定されたべき乗を入力します。 初期値" title="事後条件付きループを使用したタスクの例 数値 3 を指定されたべき乗します。 タスク: 言語アルゴリズム: 乗算数値 X は、最初は 3 の指定された回数 (H) 1 に等しくなります。 start N B>=H X:=1 X:=X*3 end X 指定された次数を入力します 初期値" class="link_thumb"> 8 !}事後条件付きループを使用した問題の例 数値 3 を指定の累乗します。 タスク: 口頭アルゴリズム: 最初は 1 に等しい数値 X を、指定された回数 (H) で 3 で乗算します。 start H B>=H X :=1 X:=X*3 end X 任意の度数を入力 初期値「B」度カウンタ B=B+1 3を掛ける カウンタを増加させる 結果の値を出力 Programm Stepen; 変数H、B、X:整数; Writeln(学位?) を開始します。 Readln(H); X:=1; B:=0; X:=X*3 を繰り返します。 B:=B+1; B>=Hまで; Writeln(結果,X); 終わり。 No Yes パスカル理論ブロック図の説明 B:=0 =H X:=1 X:=X*3 end X 任意の度数を入力 初期値"> =H X:=1 X:=X*3 end X 任意の度数を入力 初期値 "B"度カウンタ B=B +1 3 を掛ける 結果の値を出力 Programm H,B,X:integer;Readln(H):=B+1; Writeln (Result,X);パスカルブロック図の説明 B:=0"> =H X:=1 X*3 end X 指定した次数を入力 初期値" title=" 事後条件付きループを使用した問題の例 3 を a に上げます与えられたべき乗 タスク: 言語アルゴリズム: 最初に 1 に等しい数値 X を指定された回数 (H) で 3 で乗算します。 開始 N B>=H X: =1 X:=X*3 終了 X 指定された次数の入力 初期値"> title="事後条件付きループを使用した問題の例 数値 3 を指定の累乗します。 タスク: 口頭アルゴリズム: 最初は 1 に等しい数値 X を、指定された回数 (H) で 3 で乗算します。 start H B>=H X :=1 X:=X*3 end X 任意の次数を入力 初期値"> !}


パラメーターを指定したループを使用するタスクの例 数値 3 を指定の累乗します タスク: 口頭アルゴリズム: 数値 X (最初は 1 に等しい) を指定された回数 (H) で 3 で乗算します。 start H X:=1 X:=X*3 end X 所定のべき乗を入力 初期値 X=1 1 ~ N のパラメータ 3 を乗算 結果の値を出力 Programm Stepen; 変数H、B、X:整数; Writeln(学位?) を開始します。 Readln(H); X:=1; B:=1 から H の場合、Begin X:=X*3 を実行します。 終わり; Writeln(結果,X); 終わり。 B:=1,H,1 パスカル理論のブロック図の説明




タスク: トレーニングを開始したアスリートは、初日に 10 km を走りました。 彼は毎日、その日の基準を前日の基準の 10% ずつ増加させました。 アスリートが 7 日間で移動する合計距離はどれくらいですか? 入力変数: 出力変数: S – 合計パス d – 日数 Sd – 今日の距離


以上 制御に関する質問: 1. Pascal のどの演算子が前提条件付きループを定義しますか 2. ループ内のパラメータでステップ「1」と「-1」を指定する方法 3. 事後条件付きループはどの分岐に従いますか? 4. 条件パラメーターはありますか 5. ループの本体となるものは何ですか 6. パラメーターを含むループが使用されるのはいつか