READ および READLN ステートメント。 readLn と read の違い readLn 命令とは
読み取り命令は、キーボードから変数値 (初期データ) を入力するためのものです。 一般に、命令は次のようになります。
read (Variable!, Variable2, ... VariableU ここで variable は、プログラムの実行中にキーボードから値を入力する必要がある変数の名前です。
read ステートメントの記述例を次に示します。
読み取り(a); read(セナ、コル);
read ステートメントが実行されると、次のことが起こります。
1. プログラムは作業を一時停止し、必要なデータがキーボードで入力されてキーが押されるまで待機します。
2. キーを押した後
たとえば、命令を実行した結果として
読み取り (温度);
キーボードで 21 行目を入力すると、Tempérât 変数の値は数値 21 になります。
1 つの read ステートメントで、複数の変数の値を取得できます。 この場合、入力する数字は 1 行に入力し、スペースで区切る必要があります。 たとえば、変数 a、b、および c の型が実数の場合、命令 read (a, b, c) の実行結果として; 行のキーボード入力:
4.5 23 0.17
変数の値は次のとおりです。a = 4.5; b = 23、o; c = 0.17。
read ステートメントの変数よりも多くの数値が行にある場合、行の残りの部分は次の read ステートメントによって処理されます。 たとえば、命令を実行した結果:
読み取り (a、b); 読み取り (C);
とキーボード入力
10 25 18
変数は次の値を取得します: a = 10、b = 25。命令読み取り (C)。 変数 c に値 18 を代入します。
readln 命令は、キーボードから入力された文字列から次の番号を抽出し、readln 命令のリストの最後の変数に割り当てた後、残りの文字列が失われ、次の read または readln 命令が実行されるという点で、read 命令とは異なります。新しい入力が必要になります。
たとえば、次のステートメントを実行した結果:
readln(a, b); 読み取り (C);
キーボードからの入力
10 25 18
変数は次の値を取得します: a = u、b = 25。その後、プログラムは変数 c に割り当てるために新しい数値が入力されるのを待ちます。
それぞれの read 命令または readln 命令の前に、プログラムが期待するデータをユーザーに伝えるために書き込み命令を配置する必要があります。 たとえば、購入費用を計算するプログラムの一部は次のようになります。
Writeln("初期データを入力してください。"); write("商品価格:"); readln(セパ); write("ロット数:"); readln(列); write("割引:"); readln(スキドカ);
キーボードから入力されたデータの型が、読み取り (readln) 命令で指定された名前の変数の型と一致しないかキャストできない場合、プログラムはクラッシュします (読み取りに続く命令は実行されません)。画面にメッセージが表示されます。
Pascal プログラミング言語は、read や readLn などの命令を使用します。 彼らは何ですか?
読み取り命令とは何ですか?
この命令は、Pascal 言語を使用するときに、変数のさまざまな値を PC キーボードから入力できるようにすることを目的としています。 問題の命令を使用するためのスキームは単純に見えます: read (「変数値」) のように。
実際には、 read ステートメントを使用して、特定のデータがファイルから読み取られ、対応するデータから抽出された値が、プロシージャの呼び出し時に指定された変数に割り当てられます。
ユーザーがデータを入力するときに間違えた場合、それらは命令に反映されたどのタイプの変数にも対応していないため、プログラムはコマンドの実行を停止します。 同時にPC画面にアプリにエラーが発生した旨のメッセージが表示されます。
プログラマーが複数の読み取り命令を使用する場合、データは同じ行に何らかの方法で入力されます。 次への遷移は、現在の行が終了した場合にのみ可能です。 ただし、readLn 命令を使用して、別の行に配置された情報を読み取ることができます。 その機能をさらに詳しく考えてみましょう。
readLn 命令とは何ですか?
readLn 命令の本質は、プログラム内で次のような条件を設定することです。
- 行に入力された数値は、命令に従って最後の変数に割り当てられます。
- 行の残りの領域はプログラムによって処理されませんが、次の命令では新しい入力が必要になります。
したがって、次の命令を入力できます。
readLn(C,D); 読み取り (E);
その後、行 1 2 3 がキーボードから入力されると、変数 C は値 1、D - 2 を取得します。ただし、ユーザーが新しい数値を入力するまで、プログラムは変数 E に特定の値を割り当てません。
read ステートメントと同様に、ユーザーが readLn コマンドを使用して誤ったデータ型を入力すると、プログラムは終了し、エラーが発生したことが報告されます。
比較
readLn と read の主な違いは、最初の手順では、命令が記述されているファイルの次の行にプログラムがジャンプすることです。 2 番目の手順では、ユーザーが Enter キーを押した場合に限り、プログラムは次の行に配置されたデータを読み取ることができます。
実際には、readLn 命令の使用は、アプリケーションの実行結果と次の命令への遷移との間に遅延を提供するために最もよく使用されます。 対応する遅延は、ユーザーが Enter キーを押すまで続きます。
readLn と Pascal での read の違いを特定したら、表の結論を修正しましょう。
情報出力ステートメントと同様に、read ステートメントと readln ステートメントは、組み込みにアクセスするための演算子です。 情報入力手順。
演算子 read (読み取り) と readln は、2 つの英単語 read (読み取り) と line (ライン) に由来し、コンピューターのメモリに情報を入力し、" 測定値"値を変数に。
これらのオペレーターの作業と情報を入力する手順を検討してください。
私たちのプログラムには readln(a) 手続きがあります。 プログラムの実行中に readln ステートメントに遭遇すると、コンピューターは情報が入力されるのを待っている間に一時停止します。 キーボードから変数 a - 16 の値を入力すると、コンピューターはこの値を変数 a に割り当てます。 aという名前のメモリ位置にそれを送信し、プログラムの実行を続行します。 このプロセスを「 読む"値を変数に。
そのため、プロシージャ read および readln は変数の値を「読み取り」、それらに書き込まれた変数に割り当てます。
そのような変数がいくつか存在する可能性があり、それらはコンマで区切られたこれらの演算子で記述されます。次に例を示します。
read(a, b, c, n, g, j, i), readln(e, f, k, p, d) など
read プロシージャと readln プロシージャの違いは何ですか?
read プロシージャーは、それ自体の 1 行後に情報の入力または出力を必要とし、readln プロシージャーは、新しい行の先頭からそれ自体の後の情報の入力および出力を可能にします。
例えば:
プログラム内: write("値 a と b を入力してください"); 読み取り (a、b);
write("1行で入力する");
プログラムのこの部分が実行されると、最初の書き込みステートメントに書き込まれたすべてが画面に表示され、カーソルが同じ行に表示され、コンピューターは値 a と b が実行されるのを待ちます。入りました。 それらの値を入力しましょう - 2と3をスペースで、つまりスペースで区切ります。 その後、次の書き込みステートメントで書き込まれた情報が同じ行に出力されます。
画面上:
aとbの値を入力 2 3 1行で情報を入力
プログラムで:
writeln("a、b、および c を入力してください); readln(a、b、c);
writeln("行頭からの入出力情報");
画面上:
値a、b、cを入力してください
行頭からの情報の入力と出力
整数の算術演算。 整数型変数。 実数型
Pascal では、オブジェクトをカウントする過程で形成されるすべての自然数を含む整数が使用されます: 1、2、3、4、5、6、...; 負の数: ...、-6、-5、-4、-3、-2、-1、およびゼロの数: 0。整数は、次のシリーズを形成します。
6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, ...
Pascal では、整数の範囲は -32768 ~ 32767 です。
変数整数値を取る は、タイプ整数 (integer) の表示とともに説明セクションに書き込まれます。
例: var a、b、c、a1、b34、nomb: 整数;
同じプログラム内のこれらの変数とは異なる型の値 割り当てることはできません。
Pascal の整数型の整数と変数を使用した算術演算
「_」記号はスペースを意味します。 変数名と操作名 (div) の間にはスペースが必要です。 (それは英語の部門 - 部門から来ています)。
a を b で割った余り。 a_mod_b
プログラムの違いは 1 行だけです。 最初のプログラムは一目瞭然で、数値 36 を出力します。2 番目のプログラムは、a と b が何であるかをどこにも述べておらず、代わりに ReadLn ステートメントを含んでいます。 彼について話しましょう。
ReadLn は「行を読む」と訳され、「行を読む」と訳されます. これはコンピュータに停止し、人がキーボードから特定の情報を入力するのを待ち、その後作業を続けるように指示します. 特に、ReadLn (a, b) は待機します2 つの整数を入力します。
したがって、最初のプログラムが開始後、最後まで停止することなく動作し、問題なく結果を返す場合、2 番目のプログラムは停止して ReadLn ステートメントを待ちます。 この待機中に、ユーザーはキーボードで数字の 20 を入力し (ReadLn 演算子リストの最初が a であるため)、スペースバーを押し、次に 16 を入力して Enter キーを押す必要があります。 パスカルは、スペースバーを押すことを、キーボードでの数字の入力が終わり、別の数字を入力しようとしているという信号として認識します。 キーボードで最後の数字を入力したら、Enter キーを押して、この ReadLn ステートメントの数字の入力が完了し、コンピューターが引き続き動作できることを示す必要があります。 これに従って、Enterを押した直後のコンピューターは待機を停止し、まず最初に数字20をメモリ、セルaに、数字16をセルbに送信します。 これで、彼は ReadLn ステートメントの実行が完了したと見なし、次のステートメントである WriteLn に進みます。 これにより、数値 36 が出力されます。
したがって、両方のプログラムは同じことを行います。 それでは、代入演算子の代わりに ReadLn を使用するのはなぜでしょうか? 結局、最初のプログラムはより明確であり、停止することなく機能します。 その理由の 1 つは、ReadLn を使用したプログラムがより普遍的で、「より自由」であることです。最初のプログラムが 2 つの特定の数値のみを追加する問題を解決する場合、2 番目のプログラムは任意の 2 つの数値を追加します。 2 つ目の理由は、ReadLn を使用したプログラムを使用すると、プログラマーはプログラムの作成中にソース データの特定の値について考える必要がなくなり、プログラムの実行時にこの頭痛の種が残ることです。 しかし、最も重要な理由は、ReadLn を使用すると、プログラムの実行中にユーザーがコンピューターと通信し、コンピューターと対話できるようになることです。
最初の理由の重要性を確認するために、次の問題を解決するプログラムを作成してみましょう。動物園には 3 頭のゾウと非常に多くのウサギがいて、ウサギの数は頻繁に変化します。 ゾウは1日に100個、ウサギは2個のニンジンを食べるとされています。 飼育係は毎朝、ウサギの数をコンピューターに報告します。 コンピューターは応答して、今日ウサギとゾウに与える必要があるニンジンの総数を係員に伝える必要があります。
変数の名前を考えてみましょう。
kol_krol - 動物園のウサギの数
kol_slon - 動物園のゾウの数
norma_krol - ウサギは 1 日あたり何本のニンジンを食べるべきですか
norma_slon - ゾウが 1 日に必要とするニンジンの数
vsego - 必要なニンジンの数
それでは、プログラムを書きましょう:
VAR kol_krol,kol_slon,norma_krol,norma_slon,vsego:整数;
ノルマ_スロン:=100;
ReadLn(kol_krol);
vsego:= norma_krol * kol_krol + norma_slon * kol_slon;
プログラムを作成すると、プログラマーはそれをコンピューターに入力し、デバッグしてディスクに書き込みます。 これで彼の使命は完了です。 朝、ウサギを数えた係員は、60匹いることを知り、コンピュータに行き、実行のためにプログラムを開始します。
コンピューターは、最初の 2 つのステートメント (norma_krol:=2 および norma_slon:=100) を自動的に実行した後、ReadLn ステートメントで停止します。 サーバントが数字の 60 を入力すると、コンピュータはこの数字を kol_krol セルに送信し、次のステートメント (kol_slon:=3) の実行に進みます。 最終的に、応答がモニターに表示されます: 420.
以下は、プログラム実行プロセスの概略図です。
演算子の実行順序 |
記憶細胞の中にあるもの |
||||
ReadLn (kol_krol) |
|||||
vsego:=ノルマ_クロル |
|||||
翌朝、5 匹のウサギが別の動物園に売られたことを発見すると、係員は同じプログラムを実行し、番号 55 を入力し、答え 410 を取得します。
このやや空想的な例で、ReadLn を使用すると、初期データの任意の値に対していつでも簡単に問題を解決できるプログラムを作成できることを示したいと思いました。 別の方法も可能です。ReadLn の代わりに、kol_krol:=60 などの代入演算子を使用します。 しかし、この場合、プログラマーはプログラム内のこの割り当てステートメントを修正するために、毎朝動物園に出向く必要があります。
ReadLn ステートメントは、 ReadLn のように括弧なしで書くこともできます。 このようなレコードでステートメントを実行すると、コンピューターは停止して待機しますが、情報を入力するのではなく、Enter キーを押すだけです。 したがって、プログラムの実行中に一時停止を作成するステートメントにすぎません。 一時停止が必要な理由について少し下に話します。
ReadLn ステートメントに加えて、Read ステートメントもデータの入力に使用されます。 初心者のプログラマにとって、アプリケーションの違いは重要ではありません。 ここでは、ReadLn のみを使用します。 括弧のない Read ステートメントは一時停止を作成しません。