データ入力オペレーター。 Pascal でのデータ入出力 入力ステートメントの記述方法

対象研究室 退屈な作業: 標準データ型である整数を使用して変数を正しく記述する方法を学びます。 現実的かつ論理的。 データ入出力演算子を学習し、PascalABC システムを操作する実践的なスキルを開発し、ダイアログ モードで Pascal 言語で簡単なプログラムの作成、コンピュータへの入力、実行と修正を学び、実行時のエラーに関するコンパイラの診断メッセージに慣れる線形アルゴリズムを実装するプログラム。

演算子は、特定のアクションを実行する機能語、識別子、特殊文字の特別なセットです。 演算子はセミコロン「;」で区切られます。

代入演算子: (:=)。 代入演算子は、値を変数に代入するために使用されます。たとえば、次のようになります。 a:=5。 02; b:= 32*a+Sin(x); S:= 「イワン・イワノビッチ」

複合演算子: 開始<операторы>終わり;

複合演算子は、その本体に他の演算子を書き込むために使用されます。この場合、その一連の演算子は 1 つの演算子とみなされます。 このステートメントは、メイン プログラム、サブルーチン、または関数の実行セクションを開始および終了します。 メインプログラムの最後の END ステートメントの後にはピリオドがあります。

    1. データ入出力演算子

I/O 操作の実行には 4 つの演算子が使用されます。

読み取り、読み取りLn、書き込み、書き込みLn。 Read オペレータは、数値データ、文字、文字列などの入力を提供します。 プログラムによるその後の処理のために。

形式: Read(X1, X2, .. , Xn)、X1、X2、..、Xn は有効なデータ型の変数です。

値 X1、X2、...、Xn は、ユーザーによってキーボードで少なくとも 1 つのスペースに入力され、画面に表示されます。 変数値は言語構文に厳密に従って入力する必要があります。 プログラムに複数の Read 演算子がある場合、それらのデータはストリームに入力されます。つまり、1 つの Read 演算子の変数値を読み取った後、次の Read 演算子のデータが前の演算子と同じ行に入力されます。行の終わりまで続くと、次の行への移行が発生します。 ReadLn 読み取り演算子は Read 演算子と似ていますが、唯一の違いは、1 つの ReadLn 演算子のリストの最後の値を読み取った後、次の ReadLn 演算子のデータが新しい行の先頭から読み取られることです。

Write オペレーターはデータ出力を生成します。

形式: Write(X1, X2, .. , Xn)、X1、X2、..、Xn は、整数、バイト、実数、文字、ブールなどの式です。

例: Write(125); (値で表される式)Write(A+B–C); (式の結果が表示されます)。

Write ステートメントを使用すると、次の方法で変数値を表示できます。

    カーソル位置 (I) から始まる、値 I の 10 進表現の出力:

    幅 p のフィールドの右端の位置への値 I の 10 進表現の出力 (I:p):

ここで、 ַ はスペースです。

3. 幅 p のフィールドの右端の位置への値 I の 10 進表現と幅 q の数値の小数部分の出力 (I:p:q):

WriteLn 書き込み演算子は Write 演算子と似ていますが、現在の WriteLn 演算子のリストの最後の値を出力した後、カーソルは次の行の先頭に移動します。 WriteLn ステートメントをパラメーターなしで記述すると、改行が発生します。

表示する位置の数が十分でない場合は、数値またはテキストが完全に表示され、数値の小数部分を表示する形式を除き、形式は無視されます。 出力形式が指定されていない場合、整数変数と文字列変数の値は完全に出力され、実数の値も変数の型に対応する桁数で出力されます。たとえば、次のようになります。

a:=5.12345678912345678912345; Writeln("a=", a); 画面にメッセージが表示されます。

中学2年生公開授業「パスカルの線形計画」(入出力演算子)のまとめ

レッスンのトピック: 「パスカルの線形計画」 (入力および出力ステートメント)

レッスンの目的: Pascal プログラミング言語の基本的な演算子、構文、セマンティクスを学習し、問題を解決する際にこれらの演算子を使用する方法を学生に教えます。

レッスンの目標:

  • 教育的:
  • 演算子とその応用分野についての学生の理解。
  • Pascal プログラミング言語でステートメントを作成するスキルを開発します。
  • 問題を解決するための線形アルゴリズムを実装するプログラムを作成するスキルを開発します。
  • 現像:
  • 生徒の論理的およびアルゴリズム的思考の発達。
  • 学生の認知活動の発達。
  • 記憶力と注意力の発達。
  • 生徒のコミュニケーション能力の開発。
  • 生徒のコンピュータリテラシーと知識を獲得する必要性を開発します。
  • 教育的:
  • 学生に自主的に仕事をするスキルを教え込む。
  • コンピューターテクノロジーに対する思いやりのある態度を育む。
  • 寛容の教育。

レッスンタイプ: 新しい教材を学ぶレッスン。

教育の形式と方法:口頭、視覚的、実践的、問題ベース - 正面からの質問、コンピューター作業。

合計時間: 45 分。

レッスン場所:コンピューターサイエンスルーム。

レッスン用具:コンピュータ プレゼンテーション「Pascal 言語の基本演算子」、マルチメディア プロジェクター、出版社「Equilibrium」によるインタラクティブ トレーニング コース「Turbo Pascal でのプログラミングの基礎」、Turbo Pascal パッケージがインストールされたコンピュータ、スピーカー、教材資料。

レッスンプラン

  1. 組織化の瞬間 – 1 分
  2. 導入の言葉 – 1 分
  3. 生徒の知識とスキルを更新する – 8 分
  4. 新しい教材の学習 – 15 分
  5. 学習内容を強化する コンピューターでの作業 – 15 分
  6. 結論 – 3 分
  7. 宿題 – 2分

授業中

1. 当直職員との会話。こんにちは。

今日は誰が当番ですか? どの生徒が授業を欠席していますか?

2. 紹介の言葉。 今日のレッスンでは、Pascal プログラミング言語の基本的な演算子について学びます。 これらの演算子がどのような場合に使用されるか、およびこれらの演算子を記録するためのどのような形式が今日のレッスンで学習されます。

3. 学生の知識とスキルを更新します。学生の知識とスキルは正面調査中に更新されます。この際、学生は次の質問に答える必要があります。

  1. 線形アルゴリズムを定義します。
  2. 線形アルゴリズムの構造。
  3. 線形アルゴリズムの例を示します。
  4. プログラムのヘッダー形式を書き留めます。

4. 新しい教材を勉強する。

学生は、インタラクティブなトレーニング コース「Turbo Pascal プログラミングの基礎」 - Turbo Pascal\入出力演算子の概要」を聞いて、基本的な概要を作成し、形式とフローチャートをノートに書き留めて、質問に答えるように勧められます。

  1. Read 演算子はどのような場合に使用され、どのような場合に Readln が使用されますか?
  2. Write ステートメントと Writeln ステートメントの違いは何ですか?
  3. CRT モジュールの基本的な手順と機能。

演算子の実行原理といくつかの問題の解決例。

まずはプログラム例を見てみましょう。

キーボードから入力された 3 つの整数の和と積を求めます。

プログラムは次のようになります。

プログラムの要約 (入力、出力);

変数 a、b、c、s、p:整数;

始める

Write('3 つの整数を入力');

Readln(a,b,c);

S:=a+b+c; P:=a*b*c;

Writeln('入力された数値の合計は',s);

Writeln('入力された数値の積は',p);

終わり。

私たちは、推論手順を記録するさまざまな形式に生徒の注意を引き、資料を提示します。

データ入力は手順に従って実行されます read と readln ;

録音フォーマット:

読み取り(変数名); 読み取り(a、b、c);

このプロシージャを使用する場合、変数値を入力した後、カーソルは同じ行に残ります。つまり、次の入力または出力は同じ行から始まります。

Readln(変数名); readln(a,b,c);

この手順を使用すると、データを入力した後、カーソルが新しい行に移動し、次の入力または出力は新しい行から行われます。

出力はプロシージャを使用して実行されます書いて、書いて。

録音フォーマット:

Write('テキスト', 変数名:m:n);

writeln('テキスト', 変数名:m:n);

これらのプロシージャは、入力プロシージャと同じように機能します。

m および n パラメータは出力形式を決定します。 整数型の変数の場合は、パラメーター m のみが指定されます。実数型の変数の場合は、必要な出力形式に応じて両方のパラメーターを指定できます。文字変数および文字列変数の場合は、m のみが指定されます。

次に、モジュールで利用できる手順と機能の学習に進みます。ブラウン管。

学生にはモジュールの基本的な手順と機能を説明します。

手順:

Clrscr (画面をクリア) – 画面をブランクにします (出力ウィンドウをクリアします)。

ゴトキシ(m,n) – カーソルを行 n の位置 m に置きます。

Trxtbackground(c) – 背景色の設定。 c は色を決定する定数 (0 から 7 までの数値) です。

文字色(c) – フォントの色の設定。 c は 0 から 7 までの値を取ることができます。

線引き – カーソルが置かれている行を削除します。 削除された行より下の行はすべて 1 行上にシフトされます。

インライン – カーソル位置に空の行を追加すると、カーソルの後ろのすべての行が 1 行下にシフトされます。

遅延(n) – プログラムの実行を n ミリ秒間一時停止します。

音(n) – トーン周波数 n Hz のサウンドジェネレーターの開始。

無音 音声信号をオフにします。

機能:

キーが押されました – 関数の値は、true または false の 2 つの値を取ることができます。 クリップボードに文字がない場合は true、それ以外の場合は false。

読み取りキー – 画面に文字を表示せずに、キーボードから文字を入力する。

これらの手順と機能の使用方法を簡単に説明します。 この場合、学生は、どのような手順と機能が存在するのか、その形式は何なのか、そしてそれらが何を提供するのかのみを学ぶ必要があります。 研究室での作業中に、彼らとより完全に知り合いになるでしょう。

5. 研究した資料の統合。 コンピューターでの作業学習した内容を定着させるために、学生は実験作業を完了するように求められます。

この作業の本質は、生徒が教師によって指定されたファイルをシステム エディターにロードし、プログラムの指示に従ってその内容を分析し、特定の手順がどのように機能するかを学ぶことです。

この段階で生徒が実行するタスク:

問題 1

プログラム期間。

使用scrt;

変数 a、b、c、d、p:実数;

始める

Writeln('台形の辺の長さを入力してください a,b,c,d');

Readln(a,b,c,d);

P:=a+b+c+d;

Writeln('周囲=',p);

Writeln('エディタに戻るには、任意のキーを押してください');

keypressrdまで繰り返します。

終わり。

プログラムのテキストを読んで、それが何をするのかを調べてください。

プログラムを起動して実行します。

出力結果を注意深く見てください。

エディタを終了して、次の操作を行います。

開始後に、プロシージャ gotoxy(25,5); を挿入します。

画面上に周長の値を表示する writeln プロシージャで、エントリ p を p:7:2 に変更します。

それを実行して実行し、プログラム ロボットで何が変更されたかを調べます。

問題 2

プログラム dvij;

scrt,graph を使用します。

変数 i,j,x:整数;

始める

i:= 検出; initgraph(i,j,''); サウンド(400);

for x:=0 ~ 640 を実行します

始める

セットカラー(5); 円(x,100.5); 遅延(300); セットカラー(0);

終わり;

無音

終わり。

実行のために実行します。

処刑を観察してください。

エディタに戻ったら、サウンドプロシージャのパラメータ値を 400 から 800 に、ディレイプロシージャのパラメータ値を 300 から 1000 に変更します。

プログラムを再起動します。

変更がプログラムの動作にどのような影響を与えたかを分析します。

クラスがタスクをすぐに完了した場合は、子供たちにこれらのプログラムを実験する機会を与えることができます。

6. 結論。 授業が総括され、各生徒の取り組みが分析され、評価されます。

反射:
- 今日の授業は快適でしたか?
- 今日のレッスンで何を新しく学びましたか?
-具体的にはどのような困難に直面しましたか?
- あなたにとって簡単だと思われたタスクはどれですか?

7. 宿題。

  1. サポートノートを確認してください。
  2. 与えられた量の生地のコストを求めます。 価格と数量はキーボードを使用して入力します。 問題を解決するためのフローチャートとプログラムを作成します。
  3. 変数の値は次のように与えられます: a=12; b=5。 次のプログラム部分を実行した後のこれらの変数の値はどうなりますか。

a) a:=b; b:=a; c:= a+b;

b) f:=y; y:=x; x:=f; c:=a+b。


端末装置からのデータ入出力はどのように構成されていますか? まず (ご存知ない方もいるでしょうが)、端末デバイスを定義しましょう。 端末装置はキーボード、ディスプレイなどです。 ユーザーが普段作業しているもの。 どれが存在しますか? パスカル入出力演算子?

パスカルデータ入力:

Pascal にデータを入力するにはどうすればよいですか? とても簡単でシンプルです! Pascal での初期データの入力は、readln プロシージャによって実行されます。

readln(b1,b2,…,bk)

この例では、readln プロシージャはソース データの k 個の値を読み取り、これらの値を新しい行で変数 b1、b2、...、bk に割り当てます (同様の read プロシージャは、次の点で readln とは異なります)。次の行には進みません)。 Pascal にデータを入力すると、外部形式から内部形式への独特の変換が発生します。これは変数の型によって決まります。

入力リストに含まれる変数には、整数、実数、文字などのさまざまなタイプを使用できます。 ただし、Pascal ではブール データの読み取りは許可されていません。 ソース データ (つまり、その値) は、Enter キーと Tab キー、スペースを押すことによって互いに区切られます (データを入力する場合、数値をカンマで区切ることはできません)。

パスカルデータ出力:

次に、Pascal でのデータ出力について説明します。 プログラムの出力を画面に表示するには、通常、次の 2 つの手順を使用します。

write(b1,b2,…bk)— 変数 b1、b2、…、bk の値を画面行に出力します。

writeln(b1,b2,…,bk)- 画面上のデータ出力と次の行の先頭への遷移の両方を生成します。

writeln プロシージャはパラメータなしで使用でき、元の行を単純にスキップして次の行の先頭に移動します。 出力リストでは、変数には整数、実数、文字、またはブール値などのいくつかのタイプがあります。 出力リストの要素には、式と文字列も含まれます。 出力フィールドの値の表示形式は、変数と式のタイプに対応します。

  • 整数値は 10 進数の整数として出力されます。
  • 実数型の値は、10 進指数を伴う実数 10 進数として表現されます。
  • 文字型の値や文字列は文字として出力され、
  • 論理型の値 - true と false (論理定数) の形式。

出力演算子は、出力リストの各要素の出力フィールドの幅を設定する機能を作成します。A:K のようになります。A は文字列または式、K は式または整定数です。 この場合、次の 2 つの状況が発生します。

  1. 出力フィールド内で出力値が K よりも少ない位置を占める場合は、その前にスペースが配置されます。
  2. 値が K フィールド内に収まらない場合、必要な位置数がこの値に割り当てられます。

実数型の値の出力リスト要素は、A:K:M の形式をとることができます。ここで、A は実数型または変数の式、K は出力フィールド (式または定数) の幅、 M は、出力値 (式または定数) の小数部分の桁数です。 この場合、実際の値は固定小数点の 10 進数として出力されます。 出力ステートメントの作成例を想像してみましょう。

思い出してください。代入演算子の例を検討するときに、プログラムの実行結果を調べる必要に直面しました。 私たちは情報を (変数に) 格納する方法と、それを処理する方法 (式を使用して) を理解しましたが、情報の受信とコンピューターの外部の世界への送信という 2 つの基本的な情報プロセスは私たちの注意の外に残っていました。 これまでのところ、私たちのプログラムはプログラム テキスト内に直接ある情報のみを使用できます。 また、変数が現在どのような値を持っているかを調べることもできませんでした。 このような状況ではプログラミングは無意味になります。

情報処理デバイスと記憶デバイスと外部環境 (少なくともユーザー) との相互作用は絶対に必要です。 Pascal では、情報の入出力演算子がこのようなインターフェースを担当します。 これらの命令を使用すると、プログラムの実行中に (作成段階ではなく) 引数や計算パラメータを入力し、計算されたデータを人間が理解できる形式で出力できます。

まず入力ステートメント (ステートメント形式):

読む(<Список ввода>);

Readln(<Список ввода>);

この形式では、これらのコマンドにより、プログラムの実行中にキーボードからデータを変数に入力できます。 入力リストの要素は変数名にすることができ、キーボードから入力された値を入力する必要があります。

入力ステートメントの実行は次のように行われます。プログラムが一時停止され、画面にカーソルが表示され、コンピューターはユーザーが入力リストに名前が示されている変数のデータ セットを提供することを期待します。 ユーザーは、入力リストで必要な順序でキーボードから必要な値を入力し、Enter キーを押します。 この後、型指定されたデータが対応する変数に入力され、プログラムの実行が続行されます。

注: 入力されたデータはスペースで区切られます。

Read プロシージャと Readln プロシージャ (Read 行から) の操作の違いは次のとおりです。Read の実行後は次のデータの値が同じ行から読み取られ、Readln の実行後は新しい行から読み取られます。

Pascal で情報を表示するコマンドも 2 つあります。

書く(<Список вывода>);

ライトルン(<Список вывода>);

WriteとWritelnを使用したこの形式では、出力リストのデータをモニタ画面に表示することができます。 出力リストの要素には、変数名、式、定数を指定できます。 式の値を画面に表示する前に、コンピューターはまず式の値を計算します。 リスト要素は、入力ステートメントと同様に、カンマで区切られます。

2 つの出力演算子の違いは次のとおりです。Writeln 演算子を実行した後 (Write 行から)、新しい行への遷移が発生しますが、Write 命令の実行後は新しい行への遷移は発生せず、後続の行で出力されます。 Write または Writeln 出力コマンドは同じ行に発生します。 パラメータを指定せずに Writeln オペレータを呼び出すと、単に新しい行にジャンプします。

次に、入力演算子と出力演算子の使用例を示します。

プログラムインターフェイス。

Write("円の半径を入力してください"); (入力を求める画面を印刷します)

Readln(R); (キーボードからR変数に値を入力)

S:=4*ARCTAN(1)*SQR(R); (円の面積の計算(pR2))

Writeln("半径「,R,」の円の面積は「,S」です)

このプログラムは、ユーザーに円の半径を尋ね、その値を入力する機能を提供し、この半径の円の面積を計算して表示します。 したがって、プログラムテキストを変更せずに、異なる半径値を入力し、対応する円の面積値を取得することが可能になります。 これを行うには、プログラムを数回実行するだけです。 このプログラムは、次のルールも示しています。出力される数値の意味が明確になるように、結果の出力にはコメントを付ける必要があります。 確かに、Writeln(S) に限定することもできますが、この場合にプログラムによって出力される数値の意味は、プログラムを書いた人にしかわかりません。

入出力演算子

端末装置からのデータ入出力の構成を考えてみましょう。 端末デバイスは、ユーザーが対話するデバイスであり、通常は画面 (ディスプレイ) とキーボードです。 データの入出力には、標準の入出力プロシージャ Read および Write が使用され、標準のシーケンシャル ファイル INPUT および OUTPUT で動作します。

これらのファイルは可変長の行に分割され、行終端記号で相互に区切られます。 行末はENTERキーで指定します。

ソース データを入力するには、入力プロシージャ演算子が使用されます。

読み取り(A1,A2,...AK);

ReadLn(A1,A2,...AK);

そのうちの 1 つ目は、ソース データの K 値を読み取り、これらの値を変数 A1、A2、...、AK に割り当てることを実装します。 2 番目の演算子は、ソース データの K 値を読み取り、次の行の先頭まで残りの値をスキップし、読み取った値を変数 A1、A2、...、AK に割り当てることを実装します。 3 番目の演算子は、ソース データの行のスキップを実装します。

ソース データを入力すると、変数のタイプによって決定される、外部表現形式から内部表現形式への変換が発生します。 入力リストを構成する変数は、整数型、実数型、または文字型のいずれかになります。 PASCAL でのブール ソース データの読み取りは許可されていません。

整数および実数型変数の値を読み取る際の入力ステートメントは、数値の前のスペースをスキップします。 同時に、スペースは文字列内の等しい文字であるため、これらの演算子は文字変数の値の前にあるスペースをスキップしません。 入力ステートメントの記述例:

var rV、rs: 実数。

iW、iJ: 整数。

................

Read(rV, rS, iW, iJ);

ソース データの値は、スペースで区切ったり、Tab キーと Enter キーを押したりすることで互いに区切ることができます。

プログラムの結果を画面に表示するには、次の演算子が使用されます。

書き込み(A1,A2,...AK);

WriteLn(A1,A2,...AK);

これらの演算子の最初の演算子は、変数 A1、A2、...、AK の値の画面の行への出力を実装します。 2 番目の演算子は、変数 A1、A2、...、AK の値の出力と次の行の先頭への遷移を実装します。 3 番目の演算子は、行をスキップして次の行の先頭に移動することを実装します。

出力リストを構成する変数には、整数、実数、文字、またはブール型を使用できます。 変数名に加えて、式と文字列を出力リストの要素として使用できます。

各値は、言語の特定の実装によって決定される出力フィールドの幅に従って、画面の 1 行に出力されます。

出力フィールドの値の表現形式は、変数と式のタイプに対応します。整数タイプの値は、実数タイプの 10 進整数として、文字の 10 進順序の実数 10 進数として出力されます。 type と string - 論理タイプの文字として - 論理定数 TRUE および FALSE として。

出力演算子を使用すると、出力リストの各要素の出力フィールドの幅を設定できます。 この場合、出力リスト要素は A:K の形式になります。A は式または文字列、K は式または整定数です。 出力フィールド内で出力値が K よりも少ない位置を占める場合、この値の前にスペースが置かれます。 表示された値が K フィールドの幅に収まらない場合は、必要な数の位置がこの値に割り当てられます。 実数型の値の場合、出力リストの要素は A:K:M の形式になります。A は実数型の変数または式、K は出力フィールドの幅、M は数値です出力値の小数部の桁数。 K と M は、整数型の式または定数です。 この場合、実際の値は固定小数点 10 進数形式で出力されます。 出力ステートメントの記述例:

. . . . . . . . . . . .

var rA、rB: 実数。 iP、iQ:整数;

bR、bS: ブール値。 chT、chV、chU、chW: 文字。

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

タグ。 無条件ジャンプ演算子.

通りの各家には独自の番号があり、すべての人々は独自の名前を持ち、コンピューターのメモリセルもそれぞれ独自の住所を持っています。 これらはすべて、定義されているオブジェクトを明確に示すことができるようにするために行われます。 同様に、ラベルはプログラム内のステートメントを示すために使用されます。

Pascal 言語標準のラベルは、負ではない整数です。 プログラムで使用されるすべてのラベルは、サービス語 Label で始まるラベル説明セクションにリストする必要があります。次に例を示します。

1 つのラベルでマークできる演算子は 1 つだけです。 ラベルは、マークされたステートメントからコロンで区切られます。

6: ライトルン(14/2);

前に示したすべてのプログラムでは、ステートメントはテキストに記述された順序で次々に実行されます。 このアルゴリズム構造は直接継承と呼ばれます。 ただし、Pascal 言語には、プログラムの線形実行を中断し、制御を任意の点に移す演算子が最初に存在します。 この命令は無条件ジャンプと呼ばれ、次の形式になります。

後藤<метка>;

遷移先の演算子には、このラベルを付ける必要があります。

無条件ジャンプ演算子は、誤った結果が得られたり、プログラムが完全にループしたりしないように、細心の注意を払って使用する必要があります。 一般に、プログラマの間でこのコマンドを使用することは悪いやり方とみなされます。 ご覧のとおり、それなしでも常に可能です。

構造化プログラミングの要素

構造化プログラム (またはサブプログラム) は、固定された基本構造のセットで構成されるプログラムです。 基本的な定義と、アルゴリズム スキームでこれらの構造を形成する方法を考えてみましょう。

操作、フォーク、マージから、フォロー、分岐、サイクルなどの基本構造が構築されます。 これら 3 つの構造だけを使用して、あらゆる問題を解決するためのアルゴリズムを実装できます。

2 つ以上の操作の順次実行を表す構造を以下と呼びます。

フォーク、2 つの操作、およびマージで構成される構造はフォークと呼ばれます。 操作の 1 つが欠落している可能性があります。

前の操作または分岐につながる制御線があるデザインは、ループと呼ばれます。

以下の分岐およびループ構造は、入力と出力が 1 つずつあるため、操作と考えることができます。 任意の一連の操作を 1 つの操作として表すことができます。

この操作は、GOTO 遷移演算子を除く、任意の PASCAL 言語演算子 (単純または複合)、または演算子のグループによって実装できます。

PASCAL 言語では、基本構造の数が 6 つに増加しました。これらは次のとおりです。

続く;

分岐;

前提条件付きのループ。

事後条件付きのループ。

パラメータ付きのループ。

条件演算子

主要なアルゴリズム構造の 1 つは分岐 (代替) です。

条件が満たされる場合は命令「1」が実行され、条件が満たされない場合は命令「2」が実行されます。 回路内に 2 つのアクションがあっても、条件が false または true であるため、実行されるのは 1 つだけです。 3番目はありません。 このスキームを使用すると、一般的な状況に応じて、何らかのアクションを実行する必要がある問題を解決できます。 この種の問題の数が膨大であることは間違いありません。 さらに、実行アルゴリズムに単純な直接コマンド シーケンスが含まれる、本当に重要なタスクを思いつくことは非常に困難です。 数学の授業で取り上げた原始的な例であっても、後でわかるように、分岐を使用せずに解くことはできません。 したがって、式 y=1/x の値を計算する必要があります。 与えられた関数が常に値を持っているわけではない、つまり、すべての引数の値が結果値を持っているわけではないことがわかります。 私たちの仕事は、引数としてゼロを受け取った場合でも、実行プログラムが決して行き止まりに陥らないような方法でアルゴリズムを構成することです。 これを自然言語で定式化するのは難しくありません。

1. x の値を取得します。

2. x=0 の場合は、式に値がないことが報告され、それ以外の場合は、y が 1/x として計算されます。

上記のアルゴリズム構造はこのように使用されます。 それは簡単な言葉で表現できます。

もし<усл.>(条件を満たしていれば)

それ<действие 1>(その後、アクション 1 を実行します)

さもないと<действие 2>(そうでない場合は、アクション 2 を実行します)

これをパスカルで書くにはどうすればよいでしょうか? はい、まったく同じですが、英語のみです。

Pascal の条件演算子の形式:

もし<условие>

それから<оператор 1>

それ以外<оператор 2>;

Then 部分と Else 部分にはステートメントが 1 つだけあることに注意してください。 しかし、条件を満たすか満たさないために、1 つではなく複数のアクションを実行する必要がある問題を解決するにはどうすればよいでしょうか? ここで、あなたがすでに知っている複合演算子が役に立ちます。 任意の数の演算子を演算子括弧で囲むことができます。

この場合の条件演算子の変形例は次のとおりです。

もし<условие>

それから始める<группа операторов 1>終わり

それ以外の場合は開始します< группа операторов 2>終わり;

セミコロンは Else 機能語の前に配置されませんが、グループ内のステートメントは自然にこのセミコロンによって互いに区切られます。

それでは条件についてお話していきます。 Pascal プログラムでは、条件は値がブール値である式です。 これは、指定されたタイプの単純な変数、または論理演算によって接続された複雑なステートメントのシーケンスのいずれかになります。

単純な条件では、比較演算子を使用できます: >(より大きい)、<(меньше), =(равно), <>(等しくない)、>= (以上)、<=(меньше или равно).

単純な条件の例: A=5 (変数 A の値は 5)

(C+D3)>=(D1*(45-2)) (左辺の式の値が右辺の式の値以上である)

S<>"ABC" (変数 S の値は文字列定数 "ABC" と等しくありません)

別の問題を解く例として、「2 つの数値のうち最大のものを選択してください」を見てみましょう。

一見したところ、解決策は明白ですが、見た目ほど簡単ではありません。

プログラム例;

変数 A、B、C: 実数。 (A、B - 引数の保存用、C - 結果)

Writeln("2 つの数字を入力してください");

Readln(A,B); (キーボードから引数を入力します)

A>B の場合 C:=A それ以外の場合 C:=B; (A>B の場合、結果は A、それ以外の場合、結果は B)

WriteIn(C); (結果を画面に表示します)

もう 1 つの典型的な例は、「与えられた係数を使用して二次方程式を解く」です。 この作業はさらに複雑になるので、プログラムを書く前に、係数を入力し、判別式を計算するアルゴリズムをブロック図の形式で作成しましょう。 ここで 2 つの可能性が生じます。負の判別式の場合には実際の根が存在しないか、または非負の判別式の場合でもこれらの根が計算されて表示されるかのどちらかです (判別式が 0 に等しい場合もここに含まれます)。 、ルートが 2 つありますが、それらが同じであるだけです J)。

プログラミング言語でアルゴリズムを記述する場合、「no」分岐にはアクションが 1 つではなく 3 つあるため、複合演算子を使用する必要があることを考慮する必要があります。 パスカル言語の規則に従って算術式を記述することを忘れないでください。 それ以外の点では、このプログラムは前のプログラムよりも複雑ではありません。

変数 A、B、C、D、X1、X2: 実数。

Writeln("二次方程式の係数を入力してください");

Dの場合<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

興味深いのは、条件演算子が、条件が満たされるか満たされないときに実行される演算子として機能することです。 今回は、ネストされた条件文について説明します。 この種の問題を解決するときは、ノートにアルゴリズムのフローチャートを作成することを強くお勧めします。 後は、プログラムを作成するときに、まず Then 部分全体を注意深く書き出してから、Else 部分に進むだけです。 通常、Pascal で条件ステートメントを記述する場合 (特に複数の分岐がある場合)、コマンドは右と下にインデントされて記述されます。 これにより可視性が向上し、デバッグにかかる​​無駄な時間が削減されると思います。

説明のために、別の問題を解いてみましょう。「A*x^2 + B*x + C = 0 という形式の方程式を解きます。」 係数 A がゼロに等しくないことがわかっている二次方程式と混同しないでください。 ここで、係数には任意の数値を指定できます。 初歩的な数学的推論に基づいて、次のアルゴリズムが得られます。

変数 A、B、C、D、X、X1、X2: 実数。

Writeln("方程式 (A, B, C) の係数を入力してください");

C=0 の場合 Writeln("X は任意の数値")

Else Writeln("ルーツがない!")

それ以外の場合は X:=-C/B を開始します。 Writeln("X=",X:8:3) 終了

Dの場合<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Writeln("X1=", X1:8:3, " X2=",X2:8:3)

サイクル。 サイクルの種類。

サイクルとは、同じ種類のアクションが繰り返されることです。 サイクルの本体は、何度も繰り返す必要がある同じアクションです。

ご存知のとおり、無条件ジャンプ演算子を使用すると、同じアクションを繰り返すことができます。 これらのアクションをプログラム内に次々と記述し、最後にこのブロックの先頭にジャンプ演算子を置くとします。 ただし、この方法では永久に実行される (ループする) プログラムしか得られません。 これは、条件演算子を遷移演算子と一緒に使用して、遷移の実行を特定の条件の充足に依存させることで回避できます。 したがって、条件付きジャンプの構造と最終ループを構成する機能が得られます。 一般に、この方法で、循環アルゴリズムの実装を必要とするほとんどすべての問題を解決できます。 もちろん斧1本あれば家も建てられます。 次の質問を自問してみましょう: 「この家は美しくなりますか? あらゆる種類の特別なツールを使用すると、どれくらいの時間と労力を節約できますか?」 何のために? - 利便性、簡潔さ、プログラムの読みやすさ、そしてあえて言えば美しさのため。 したがって、ループを作成するための独自の Pascal 演算子を持つ 3 種類のループがあります。 これらの型には、「while」、「Before」、「Withparameter」という独自の慣習的な名前が付いています。 これらは互いに多少異なり、それぞれ独自のクラスのタスクに使用されます。

「バイ」サイクル

この図から判断すると、「ループ本体」と呼ばれる演算子のグループは、ループ条件が true である限り実行されます。 条件が true でなくなると、ループは終了します。

最初に条件が false の場合、ループの本体は一度も実行されません。 条件が最初に true で、この条件の真偽に影響を与えるアクションがループ本体にない場合、ループ本体は無限回実行されます。 この状況を「ループ」と呼びます。 ループ プログラムは、ステートメント (Ctrl+C を押す) によって、または変数のオーバーフローやゼロ除算などの場合にプログラム自体を緊急停止することによって中断できます。そのため、ループ構造は次のように使用する必要があります。繰り返しの実行が終了する場合があることを十分に理解して、注意してください。

Pascal では、while ループの構造は次のように記述されます。

その間<условие>する<оператор>;

本当に、簡潔に? ロシア語では、「条件が true である限り、ステートメントを実行する」と解釈できます。 ここでは、条件文形式と同様に、実行される文は 1 つだけです。 複数のアクションを実行する必要がある場合は、複合演算子を使用できます。 この場合、演算子の形式は次の形式になります。

その間<условие>する

<оператор #1>;

<оператор #2>;

<оператор #3>;

サイクル「前」

このタイプのループは、主に、ループ本体の繰り返し条件のチェックがループの前ではなく後に行われるという点で、前のループとは異なります。 したがって、「Before」サイクルを「with postcondition」サイクル、「while」サイクルを「with precondition」サイクルと呼びます。

新しい反復 (ループ本体の再実行) は、条件が true の場合ではなく、正確に false の場合に発生することにも注意してください。 これが、ループにその名前が付けられた理由です (対応する条件が満たされるまでループの本体を実行します)。

データ入力- これは、外部デバイスから RAM への情報の転送です。 原則として、解決する問題の初期データが入力されます。 結論- データが RAM から外部メディア (プリンター、ディスプレイ、磁気デバイスなど) に転送される場合は、その逆のプロセス。 問題を解決した結果は、これらのメディアのいずれかに表示する必要があります。

パソコンの主な入出力デバイスはキーボードとディスプレイ(モニタ画面)です。 人間と PC の間の対話は主にこれらのデバイスを通じて行われます。

入力演算子の読み取り

キーボード入力プロシージャ (標準入力の呼び出し) の形式は次のとおりです。

読む(<список ввода>)

どこ<список ввода>カンマで区切られた一連の変数名です。 ソース データを入力すると、変数のタイプによって決定される、外部表現形式から内部表現形式への変換が発生します。 入力リストを構成する変数は、整数型、実数型、または文字型のいずれかになります。 Pascal ではブール ソース データの読み取りは許可されていません。 ソース データの値は、スペースで区切ったり、Tab キーやキーを押すことで互いに区切ることができます。 入力.

プログラム内に複数のステートメントがある場合 読む、その後、それらのデータがストリームに入力されます。 1つのステートメントの変数値を読み取った後 読む次のステートメントのデータは、画面上の前のステートメントと同じ行から行末まで読み取られ、その後次の行に移動します。

キーボード入力演算子の別のバリエーションは次のとおりです。

Readln(<список ввода>)

この演算子は次のものとは異なります 読む 1 つの演算子のリストの最後の値を読み取った後のみ 読む次のステートメントのデータは新しい行の先頭から読み取られます。

書き込み出力演算子

表示ステートメント (標準出力プロシージャを呼び出す) の形式は次のとおりです。

書く(<список вывода>)

出力リストを構成する変数には、整数、実数、文字、またはブール型を使用できます。 変数名に加えて、式と文字列を出力リストの要素として使用できます。 複数の数値を一行に表示する場合、数値はスペースで区切られません。 プログラマ自身がこの部分を管理する必要があります。

画面を表示するための 2 番目のオプション:

ライトルン(<список вывода>)

その動作はオペレータとは異なります 書くリストの最後の値を表示した後、カーソルは次の行の先頭に移動します。 オペレーター 書くパラメータなしで記述すると改行が発生します。

各値は、言語の特定の実装によって決定される出力フィールドの幅に従って、画面の 1 行に出力されます。 出力フィールドの値の表現形式は、変数と式のタイプに対応します。整数タイプの値は、実数タイプの整数 10 進数として、10 進順序の実数 10 進数として出力されます。文字型と文字列 - 論理型の文字として - 論理定数として 真実そして 間違い.

出力演算子を使用すると、出力リストの各要素の出力フィールドの幅を設定できます。 この場合、出力リスト要素は A:K の形式になります。A は式または文字列、K は式または整定数です。 出力フィールド内で出力値が K よりも少ない位置を占める場合、この値の前にスペースが置かれます。 表示された値が K フィールドの幅に収まらない場合は、必要な数の位置がこの値に割り当てられます。 実数型の値の場合、出力リストの要素は A:K:M の形式になります。A は実数型の変数または式、K は出力フィールドの幅、M は数値です出力値の小数部の桁数。 K と M は、整数型の式または定数です。 この場合、実際の値は固定小数点 10 進数形式で出力されます。