2361
.pdfвыражении они могут отсутствовать. Пусть требуется выражение:
y |
a |
b |
|
|
|
||
c |
d |
||
|
представить с помощью математического оператора присваивания. Такой оператор обязательно должен выглядеть:
у:=(a+b)/(c+d).
Здесь числитель и знаменатель обязательно должен быть заключен в круглые скобки. Отсутствие их приведет к неправильным результатам. Докажем это с помощью вышеизложенного приоритета. Пусть мы забыли заключить в скобки числитель:
y:=a+b/(c+d)
Данный оператор не соответствует исходному выражению, а соответствует совсем другому выражению:
y a |
b |
|
a(c |
d ) |
b |
|
|
|
|
|
|
c d |
|
c |
d |
|
|
|
|
|
Если совсем опустить круглые скобки: y:=a+b/c+d,
то данный оператор также не будет соответствовать исходному выражению:
y a |
b |
d |
|
|
|||
c |
|||
|
и т.д. |
Таким образом, если в исходном выражении в числителе и знаменателе имеется операция сложения и вычитания, то в операторе числитель и знаменатель заключаются в круглые скобки, а дробь заменяется наклонной черточкой.
Рассмотрим более сложный пример:
|
|
|
a |
b |
|
|
|
|
1 |
1 |
|
|
|
y |
|
|
c1 |
d1 |
|
|
|
a2 |
b2 |
|
|
||
|
|
|
|
|||
|
|
c2 |
d 2 |
|
|
Соответствующий математический оператор может выглядеть в следующей форме:
y : ((a1 b1) /(c1 d1)) /((a2 b2) /(c2
;
1 |
2 |
3 |
4 |
|
5 |
|
6 |
7
ВВОД И ВЫВОД ДАННЫХ
Ввод данных осуществляется с помощью операторов read и readln, а вывод осуществляется с помощью операторов write и writeln, приставка ln появилась от служебного слова line (ввод в линию или вывод в линию).
ОПЕРАТОРЫ ВВОДА ДАННЫХ
Для ввода исходных данных справа от соответствующих служебных слов (read, readln) в обязательных круглых скобках, через запятую
указываются переменные, для которых с клавиатуры компьютера через пробел ввести соответствующие данные, например:
READ (А, В, С);
Выполняя данный оператор ЭВМ делает остановку и «ждет»- введенных данных с клавиатуры.
При этом такой ввод для данного оператора ввод можно осуществить по нескольким вариантам:
1.2_3_5.9Е-2<Enter> - это ввод в строчку.
аможно вводить в столбик:
1.2<Enter>
3 <Enter>
5.9E-2 <Enter>
либо,
1.2_3 <Enter>
5.9E-2 <Enter>
В любом из этих случаев в памяти компьютера будут находиться такие значения:
a=1,2 ; b=3;
c=5,9 10 2 ;
В выше приведенном примере ввод a,b и c можно осуществить по другому варианту:
Read (a);
Read (b);
Read (с);
Рассмотрим другой пример. Пусть в программе имеется:
Read (a, b, c); Read (x, y, z); Read (m);
А исходные данные с клавиатуры вводятся следующим образом:
3_7 <Enter>
2_5_9 <Enter>
1_8 |
<Enter> |
В результате переменные примут следующие |
|
значения: |
|
a=3, |
b=7, c=2, m=8, x=5, y=9, z=1. |
Таким образом, все переменные можно включить в один оператор READ, либо в несколько, а исходные данные с клавиатуры можно вводить в одну или несколько строк. Считывание будет осуществленная оператором READ, последовательно слева на право, сверху вниз.
Рассмотрим процедуру ввода данных с помощью оператора READLN. Процедура ввода для него отличается от процедуры READ тем, что оператор READLN после считывания данных из соответствующей строки переходит к считыванию данных с новой строки с помощью нижеследующего оператора ввода. Даже, если в первой строке остались не считанные данные.
Например если в программе:
Readln (a, b); Readln (c, d, e);
Аввод осуществляется по следующей процедуре:
1_2_3 <Enter> 4_5_6_7_8 <Enter>
В результате будет присвоено: a=1; b=2; c=4; d=5; e=6
Другой пример. Пусть в программе:
Read (a, b); Readln (c, d); Read (m, n);
Аввод осуществляется следующим образом:
1_2_3_4_5_6 <Enter> 7_8 <Enter>
В результате будет присвоено: a=1; b=2; c=3; d=4; m=7; n=8
Оператор READLN без списка переменных (пустой оператор) осуществляет переход к началу новой строки данных, т.е. он игнорирует все оставшиеся данные в текущей строке (в том числе и <Enter>) и осуществляет переход к чтению данных из следующей строки. Например:
Readln (a, b); Readln; Readln (c, d);
А вывод осуществляется по следующей процедуре:
1_2_3 <Enter>
4_5 <Enter>
6_7_8 <Enter>
тогда будет присвоено: a=1; b=2; c=6; d=7
Следует отметить, что оператор READLN на практике часто используется только для ввода текстовых данных.
ОПЕРАТОРЫ ВЫВОДА ДАННЫХ
Для вывода данных на экран дисплея необходимо после служебного слова WRITE в обязательных круглых скобках через запятую указать список переменных, выражений либо какого-либо символьного текста.
При этом оператор WRITE отличается от WRITELN тем, что после реализации печати всех данных из оператора WRITELN осуществляется печать с новой строки. Реализация печати из оператора WRITE
всегда осуществляется на той же строке до тех пор, пока на ней есть место.
Другими словами, после выполнения оператора WRITE курсор остается в конце строки, а после реализации оператора WRITELN курсор переходит в начало строки.
Рассмотрим конкретные примеры:
Пример 1.
Для а=1; b=2; с=3, которые находятся в памяти ЭВМ, вывод на экран дисплея можно осуществить следующим образом:
Write (а, b, с);
1 2 3
То же самое (в виде строки) будет напечатано, если вывод осуществляется с помощью следующей процедуры:
Write (а);
Write (b);
Write (с);
Либо:
Write (а);
Write (b);
Writeln (с);
В то же время, если вывод осуществляется по следующей процедуре с ln:
Writeln (а);
Writeln (b);
Writeln (с);
То будет напечатано:
1
2
3
Пример 2.
Для i=1; j=2; k=3; l=4; m=7; n=8 и вывод осуществить по следующей процедуре:
Write (i, j); Writeln (k); Write (l, m, n);
То будет напечатано:
1 2 3
4 7 8
В данных примерах «по умолчанию» компьютером отводится определенное количество позиций на экране дисплея для печати соответствующего числа. На PASCAL есть возможность управлять данным процессом. В этом случае необходимо после написания переменной, текста, либо выражения после обязательного двоеточия указать число позиций, отводимых под каждый из этих данных. Пример 3.
Если а=1; b=2; с=3 и вывод осуществляется с помощью следующего оператора:
Writeln (а:2, b:3, с:4); (указываются позиции),
то будет напечатано :
|
_ 1 _ _ |
2 _ _ |
3 _ |
|
|
а |
b |
c |
|
В тоже время можно управлять и вещественными |
||||
константами (дробные числа). |
|
|
||
Пусть для а=3,2; b=0,072; с=75,25 и вывод |
|
|||
осуществить с помощью следующего оператора: |
|
|||
Writeln (а:6:2, b:7:3, c:8:3); |
|
|
||
|
то будет напечатано: |
|
||
_ |
3 . 20 _ _ 0 . 072 _ _ |
75 . 250 |
_ |
|
а→6 |
b→7 |
|
с→8 |
|
Таким образом, первая цифра после первого двоеточия – это общее количество позиций, а вторая – после второго двоеточия – это количество позиций, отводимых для дробного числа.
Следует отметить, что пустой оператор WRITELN (без списка и скобок) используется для перехода к новой строке, если находится между операторами WRITE, другими словами для печати другой строки (пропуск строки). Так осуществляется регулирование интервала между строк при печати.
С другой стороны без такого пустого оператора невозможно обойтись при печати результатов в виде матрицы (он вставляется между внешним и внутренним циклом).
Рассмотрим другой пример, связанный с выводом произвольного текста на экран дисплея.
Рассмотрим процесс так называемого табулирования функции. Результат удобнее всего вывести на экран дисплея (для удобства чтения), когда переменную со знаком равенства необходимо заключить в апостроф.
Writeln (´x=´, x, ´y=´, y);
Тогда результат будет напечатан в следующем виде (при табулировании в цикле):
x=1 y=… x=2 y=…
.
.
.
x=20 y=…
В результате будет два столбца.
Расстояние между двумя столбцами можно отрегулировать с помощью следующей процедуры:
Writeln (´x=´, x:10, ´y=´, y);
Можно отрегулировать количество позиций и для вещественного значения y:
Writeln (´x=´, x:10, ´y=´, y:10:5)
Следует отметить что, на клавиатуре символ апострофа находится на клавише с символом «Э»(кириллица).
На клавиатуре символ апострофа находится на клавише символа «Э».
Пример 4.
Рассмотрим пример, связанный с какими-либо вычислениями с помощью данного оператора; например, если:
Writeln ((a+b)/c+sin (a));
То компьютер вычисляет выражение:
a b |
sin |
|
|
||
c |
||
|
И результат вычисления выводится на экран дисплея, а сам результат в памяти компьютера не сохраняется.
На основе вышеизложенного материала можно теперь составлять простейшие программы. Рассмотрим некоторые из них. В первую очередь приведѐм несложный текст программы на использование данных runastring:
PROGRAM igra; Var
Name:string; Begin
Write(‗Введите имя и Enter‘);
Readln(Name);
Write(‗Здравствуй,‘,Name);
End.
В результате на экран дисплея выйдет, например: Здравствуй, Masa.
Это, при условии, если в момент останова с клавиатуры ввести «Masa» и нажать клавишу Enter.
Рассмотрим другой пример.
Пусть требуется вычислить следующее значение функции:
y ax2 |
|
|
|
|
|
ax |
b , при х=7,8; |
||
|
||||
3 dx2 |
b |
c cx |
где a=1,2; b=7,8; c=0,2*10; d=17 · 10-4.
Вариант программы будет выглядеть следующим образом.
PROGRAM func; VAR
A,B,C,D,X,Y:REAL; BEGIN
A:=1.2;
B:=7.8; C:=0.2E-2; D:=17E-2; X:=7.8;
Y:=(Y*SQR(X)+SQRT(A*X+B))/ (EXP((1/3)*LN(D*SQR(X)+B))+EXP(-C*X)); WRITE (Y);
END.
Здесь вместо оператора Х:=7.8; (программный ввод аргумента) можно использовать оператор READ(X); (ручной- с клавиатуры ввод аргумента).
ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА IF
Иногда его называют логическим оператором условного перехода. На языке PASCAL имеются две формы данного оператора:
1.Неполная (сокращенная).
2.Полная.
В общем виде неполную форму можно представить: