ся исключение: переменная вещественного типа, а выражение – целого. Обратное запрещено.
При прочтении данного оператора вычисляется выражение, стоящее в правой части, и его значение присваивается переменной в левой части, то есть найденное значение выражения А заносится в ячейку памяти с именем V.
Для преобразования значений вещественного типа в значения целого типа предназначены функции TRUNC(X) и ROUND(X).
Контрольные вопросы и упражнения
1) Какие из приведенных записей являются правильными?
а) ‘a’ < ‘c’ |
б) ‘1’ > ‘9’ |
в) false < true |
|
г) ‘a’ < ‘b’ and 1 < 2 |
д) 0’ or ‘9’ |
е) (‘d’ > ‘g’) and (1 < 2) |
|
2. Записать на языке Паскаль
а) |
|
|
|
x2 3x y |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
arcsinx ex |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
3 |
|
|
|
1 arctg |
x |
|
|
||||||||||||||||||
в) |
cosx2 |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|||||||||
|
|
|
|
2bc3 3 |
|
|
|
y |
||||||||||||||||||
д) |
|
(abc) |
||||||||||||||||||||||||
|
|
2x | e2xy arcsinx |
|
|
|
|||||||||||||||||||||
ж) |
|
|
|
|
|
|
2ln2(1 x3) e2ax y |
|||||||||||||||||||
|
|
|
arctg(x 3) e2x cos(k 2) |
|||||||||||||||||||||||
|
|
|
arctg2x 5 |
|
|
|
|
|
|
|
||||||||||||||||
и) |
|
3x y |
||||||||||||||||||||||||
|
|
|
3 x7sinx e2x |
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
cosx e p2 |
3 |
|
|
y |
||||||||||||||||
л) |
|
|
|
|
|
2xz |
||||||||||||||||||||
|
|6z3 y2 | csinx tg2(ex) |
|
||||||||||||||||||||||||
н) |
|
|
cos2(x 1) ax c |
|||||||||||||||||||||||
|
|
|
|
|
tg3x e 2x 5 |
|
|
|||||||||||||||||||
п) |
bx |
7 |
|
3x2cos2(x 1) |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
ax3 sinx ex |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||
б) |
|
|
|
x2c4 |
|
|
|
d |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
| x | d |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
г) |
|
|
y |
|
| 4xy 2bz3 | cos |
|
|
x |
||||||||||||||||||||||
2x |
2x |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
x2sin9(x 4) x |
|
π |
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||
е) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|||||
|
|
|
|
|
|
|
arctg(2a) ex |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
x3 |
|
ax bx2 y3 |
||||||||||||||||||||||||||
з) |
|
x |
||||||||||||||||||||||||||||
sin2x ex | bx 4d | |
|
|
|
|||||||||||||||||||||||||||
|
|
xcos2x sin3x3 |
|
|
|
|
||||||||||||||||||||||||
к) |
|
4 |
y |
|
||||||||||||||||||||||||||
|
|
3 x7 csin |
x |
e 2x |
||||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
м) |
|
|
|
2x2 cos2(x 0.003) |
|
|||||||||||||||||||||||||
|
|
|
|
sin |
2x |
e 3x |
y5 |
|||||||||||||||||||||||
|
|
|
|
|
3 |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
о) |
|
|
|
|a3 3x3 | cx y |
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
3 |
|
|
3 |
|
|
|
|
|
|
|
|
3 |
|
x |
|
|
|||||||||
|
|
cx |
|
|
x 1 sin |
e |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
р) |
|
|
2ln2(1 x2) |3x |
y| |
||||||||||||||||||||||||||
|
|
|
|
arctg(x4) sinx 5 |
|
|||||||||||||||||||||||||
9
3. Определить тип результата выражений, если i, j, k : integer;
x, y : real; |
|
|
а) i * i +j * j +2 *k/2 |
б) |
x < y |
в) sin(x) + 2 * cos(y) |
г) |
I + sqrt(j) |
4. Какие из приведенных ниже операторов присваивания явля-
ются правильными (если i, j, k :integer; x, y, z :real; a, b :boolean):
a) x:= y+ sin (sin(z)); |
б) a :=(x<y) or b and (i<>k); |
в) x := i + j – b |
г) i := i + k/j |
5. Вычислить значения выражений, если a = 2.5; b = 7.8; c = - |
|
17.3; m =5; x = 8.7; e = true |
|
а) (a + b)/c * m |
б) 2 + x * x/(x + (a + b)/5) |
в) (a < b) and (c > a) or (c < m) or e
6. Записать приведенные ниже высказывания в виде выражений: а) значение а не принадлежит интервалу (0, 3); б) значение а принадлежит отрезку [ -2, 0];
в) значение а принадлежит одному из отрезков [-5, -4], [0, 2], [3.2, 7].
г) точка а с координатами (x, y) лежит внутри круга с центром в начале координат и радиусом 2.3;
д) точка а с координатами (x, y) лежит на границе или вне единичного круга с центром в начале координат.
2.2. Организация ввода – вывода
Ввод – вывод связан с обменом информацией между оперативной памятью ЭВМ и внешними носителями информации.
Задание исходных данных (ввод) можно выполнить по-разному. 1. В разделе констант задать соответствующие значения. При этом тип константы автоматически определяется по содержимому
правой части.
Пример. Вычислить значение y = ax2 + kx –t при a = 2,5; x = 7,3; k = -17,5; t = 548.
const a = 2.5; x = 7.3; k = -17.5; t = 548;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
begin
y:=a*x*x + k*x – t;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
end.
10
Именованным константам а, х, к, t присваивается вещественный тип, a константе t – целый.
Однако такой способ задания данных не всегда удобен, поскольку позволяет вычислять y только для одного набора параметров, так как изменять значения констант в программе нельзя.
2. В разделе переменных описываются переменные а, х, к, t, а в разделе операторов им присваиваются соответствующие значения:
var a, x, k, t, y :real;
. . . . . . . . . . . . . . . .
begin
a:=2.5; x:= 7.3; k:= -17.5; t:= 548.0; y:=a*x*x + k*x – t;
. . . . . . . . . . . . . . . .
end.
В этом случае возможности варьирования значениями параметров расширяются, так как в программе можно организовать их изменение, однако, набор параметров будет статическим.
3. Для обмена информацией с окружающим миром в программах, написанных на языке Турбо Паскаль (ТП), можно использовать специальные стандартные (встроенные) процедуры. Процедура – это некоторая последовательность операторов языка ТП, к которой можно обратиться по имени. Так используемые для ввода данных операторы
READ (a1, a2, . . . ,an); |
(1) |
READLN (a1, a2, . . . ,an); |
(2) |
READLN; |
(3) |
являются по своей сути операторами обращения к встроенным процедурам ввода данных. Здесь а1, a2, . . . ,an – список имен переменных, значения которых необходимо ввести, то есть эти операторы позволяют выполнить программы с различными наборами исходных данных. Типы переменных должны соответствовать типам вводимых значений. Ввод в языке Паскаль может быть только бесформатным. Могут вводиться данные целого, вещественного и символьного типа. Числа при вводе разделяются символом «пробел» или клавишей «ввод» (Enter). Символы при вводе не разделяются. Ввод строки завершается символом «ввод».
В отличие от READ оператор READLN осуществляет переход к следующей строке после ввода всех указанных в операторе данных.
Возможны различные методы организации ввода этих чисел:
11
а) с использованием одного оператора READ: var a, b, d, t : real;
. . . . . . . . . . . . . . .
begin
. . . . . . . . . . . . . . .
read (a,b,d,t);
. . . . . . . . . . . . . . .
end.
Информация набирается на одной или нескольких строках экрана, так как если чисел в строке больше нет, а список ввода не исчерпан, то автоматически осуществляется переход к новой строке. В дальнейшем рассматриваем ввод – вывод только с терминала в диалоговом режиме.
б) с использованием нескольких операторов READ:
. . . read (a, b, d); |
read (t); . . . |
Набор чисел как в предыдущем случае. |
|
в) с использованием комбинации операторов READ и READLN: |
|
… readln ( a, b, d ) ; |
read ( t ) ; … |
Здесь числа, соответствующие переменным a, b, d, набираются на одной строке, а число, соответствующее переменной t, – на другой, так как после окончания работы оператора readln (a, b, d) оператор
read (t) может считать данные только с начала следующей строки. |
|
Вывод данных. Для вывода данных используются процедуры |
|
WRITE (a1, a2, . . . , an); |
(4) |
WRITELN (a1, a2, . . . , an); |
(5) |
WRITELN ; |
(6) |
где a1, a2, . . . , an – список параметров или выражений, значения которых необходимо вывести; выводимые выражения могут быть целого, вещественного, символьного, логического или строкового типа.
Оператор (5) в отличие от (4) после вывода последнего значения в списке осуществляет переход к следующей строке.
Операторы вывода допускают использование в явном виде указания о ширине поля, отводимого под выводимое значение.
Так, общий вид процедуры при выводе значений целого, символьного, строкового или логического типа
WRITE (a : m); или WRITELN (a : m);
где а – выводимое выражение или имя переменной; m – константа или выражение целого типа, значение которого указывает число позиций, отводимых для записи значения выражения а.
12
При выводе значений вещественного типа с фиксированной десятичной точкой указывается ширина поля, отводимая для записи всего числа m и для записи дробной части числа n. Общий вид:
WRITE (b : m : n); WRITELN (b : m : n);
где b – выводимое выражение вещественного типа, m и n – константы или выражения целого типа.
Приведем примеры операторов вывода.
1. Организация вывода значений переменных a, b, c целого типа:
а) . . . write (a, b); |
writeln (c); . . . |
Все числа печатаются на одной строке. Аналогичный результат |
|
можно получить, написав один оператор write (a, b, c); |
|
б) . . . writeln (a, b); |
writeln (c); . . . |
Значения a и b печатаются на одной строке; с – со следующей строки;
в) . . . write (a : 12, b : 5, c : 4); . . .
При печати под значение переменной а отводится 12 позиций, под b – 5, под с – 4 позиции.
Если число литер в представлении выводимого значения оказывается меньше, чем m, то оно слева дополняется пробелами. Если наоборот количество указанных позиций недостаточно, то происходит автоматическое увеличение поля до необходимых размеров;
г) … write ( ‘a =’, a: 2,’ b = ‘, b: 3, ‘ c=’, c: 1 );
Здесь используется возможность вывода строк символов. Будет напечатaно
a = 12 b= – 25 c= 4.
2.Организация вывода вещественных чисел предполагает задание общего количества позиций и количества позиций после запятой. Если при выводе вещественных значений не указывается n ( или m и n ), то результат получается в нормализованном виде с десятичным порядком, то есть в экспоненциальной форме.
3.При выводе значений символьного типа, если в явном виде не указывается количество позиций, под каждый символ отводится одна позиция. Например,
writeln ( ‘ s1=’, s1:5,’ s2 = ‘, s2 );
напечатает (если символьной переменной s1 в программе присвоено значение ‘*’, а s2 – ‘w’) следующую строку:
s1 = * s2 = w.
4.При выводе значений булевского типа на печать выводится true или false, например, оператор writeln ( a < b : 7 ) ; напечатает в от-
13
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1285 |
| 1560 |
| 1568 |
| 1604248853606027 |
| 1673 |
| 17 |