Операторы ввода - вывода.
Простейшие операторы.
Оператор присваивания := выполняет правую часть выражения и присваивает результат переменной, расположенной в левой части выражения.
Пример:
X:=5+6; | {к 5 прибавляется 6 и результат помещается в X} |
X:=X+4 | {к X прибавляется 4 и результат помещается в X} |
X+Y:=15+3 | {ошибка, в левой части не может быть 2-х переменных!} |
Name:=′Петя′; | {переменной Name присваивается значение Петя} |
Ch:= ′+′; | {переменной Ch присваивается значение +} |
Тип переменной и тип выражения должны совпадать кроме случая, когда выражение относится к целому типу, а переменная - к действительному. При этом происходит преобразование значения выражения к действительному типу.
Оператор безусловного перехода GOTO <метка>нарушает последовательное выполнение программы и передает управление оператору, помеченному меткой: GOTO Metka 1;
Внимание! Не забывайте описывать метки в разделе LABEL!
Имейте в виду, что хорошим стилем программирования является сведения операторов GOTO к минимуму.
Оператор вызова процедуры <имя процедуры> вызывает для выполнения подпрограмму-процедуру. После выполнения процедуры управление передается оператору, следующему сразу за оператором вызова процедуры.
Ввод данных осуществляется операторами: READ и READLN. Формат оператора Read для ввода с клавиатуры: READ(X1, X2,…, XN);
где X1, X2,…, Xn-значения типа integer, real, string char и др.
Если вводится несколько значений, между ними должен находиться пробел. Например, для ввода трех целых значений X, Y, S с помощью оператора READ(X, Y, S); надо набрать: 7 8 120 и начать клавишу ENTER. Для исключения ошибок при вводе каждым оператором READ рекомендуется вводить только одно значение. Например:
READ (X); READ (Y); READ (S) ;{ ввод трех значений с одной строки}
Формат оператора READLN для ввода с клавиатуры:
READLN(X1, X2,…, XN);
Единственное отличие READLN от READ-после выполнения READLN курсор перемещается на следующую строку:
READLN(X); READLN(Y); READLN(S); {ввод трех значений с отдельных
строк}
READLN; {пропуск строки}.
Вывод данных на экране осуществляется операторами: WRITE и WRITELN.
Формат оператор WRITE для вывода на экран: WRITE (Y1, Y2, …, YN);
Где Y1, Y2, … ,Yn-значение типа integer, real, string char и др. Единственное отличие WRITELN от WRITE-после выполнения Writeln курсор перемещается на следующую строку. Пример:
Оператор | Результат |
WRITE(′СУММА 5+6=′,5+6); | СУММА 5+6=11 |
WRITE(′ПРИВЕТ′); | ПРИВЕТ |
WRITE(′A′); WRITE(′B′) | AB |
WRITE(А1,А2, … АК); | вывод переменных А1, …,AK в одну строку экрана; |
WRITELN(А1,А2, … АК); | вывод переменных А1, …,AK в одну строку экрана и переход к началу следующей строки; |
WRITELN(′A′); WRITE(′B′); | A B |
WRITELN | пропуск строки и переход к началу следующей строки. |
В языке Паскаль предусмотрена возможность форматировать (упорядочивать) выходные данные. Это делается путем указания длины поля вывода через двоеточие после каждого выводимого значения.
Общий формат: WRITELN(x1 :< n1>, X2 :< n2>, …);
где n1 n2,…-длина поля вывода соответственно для X1, X2,…
формат для чисел с фиксированной точкой имеет несколько иной вид: в нем указывается общая длина поля вывода и количество цифр в дробной части:
WRITELN(x1 :< n1>:<q1>, X2 :< n2>:<q2>…);где n-общая длина поля вывода,
q-количество цифр в дробной части.
Если выводимое значение занимает в поле вывода меньше позиций, чем n1 n2, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля K, то для этого значения будет отведено необходимое количество позиции. Пример:
Оператор вывода | Результат | Оператор вывода | результат |
WRITELN(555:3); | 555 | WRITELN(511.04:8:4); | 511.0400 |
WRITELN(555:4); | 555 | WRITELN(′A′:6); | A |
WRITELN(555:5); | 555 | WRITELN(5:3,10:3); | 510 |
Пример 1. Заданы длины трех сторон треугольника a, b, c. Вычислить периметр и площадь треугольника. Значения a, b, c ввести с клавиатуры.
Решение задачи можно разделить на несколько этапов:
1.Ввод значений a, b, и c.
2.Вычисление полупериметра по формуле
3.Вычисление площади прямоугольника по формуле Герона
4.Вывод площади треугольника s и периметра 2p.
Текст программы с комментариями приведен ниже.
Program four;
{Описаны переменные вещественного типа: a, b, c-стороны треугольника,
s-площадь, p-полупериметр.}
var
a, b, c, s p:real;
begin
{Ввод исходных данных.}
write (′a=′); readln(a);
write (′b=′); readln(b);
write (′c=′); readln(c);
{Вычисление полупериметра треугольника.}
p:=(a+b+c)/2;
{Вычисление площади треугольника.}
s:=sqrt(p*(p-a)*(p-b)*(p-c));
{Вывод периметра и площади в экспоненциальной форме.}
writeln (′периметр треугольника′, 2*p);
writeln (′площадь треугольника′, s);
end.
Пример 2. Заданы радиус основания и высота цилиндра. Вычислить площадь основания и объем. Площадь основания вычисляется по формуле, объем цилиндра равен
Решение задачи можно разделить на несколько этапов:
1.Ввод значений r и h.
2.Вычисление площади основания
3.Вычисление объема цилиндра
4.Вывод площади основания и объема цилиндра.
Текст программы с комментариями приведен ниже:
{Описание переменных.}
var
s,v,r,h:real;
begin
{Ввод исходных данных.}
writeln(′Введите R и H′);
readln (r,h);
{Вычисление площади основания.}
s:=pi*sqr(r);
{Вычисление объема цилиндра.}
v:=s*h;
{Вывод результатов в формате с фиксированной точкой.}
writeln (′v=′, v:6:2);
writeln(′s=′, s:8:3);
end.
Рассмотрим одну особенность форматированного вывода вещественного числа. Пусть есть оператор write (a:m:n), где m-ширина поля вывода, n-количество знаков в дробной части числа. Если число a не помещается в m позиций, то поле вывода расширяется до минимально необходимого. В связи с этим допустимыми являются следующие форматы: а:2:2, а:1:2, а:0:2 и даже
а:-1:2. В этом случае вы фактически указываете только количество разрядов в дробной части числа, а ширина поля вывода определяется в момент вывода вещественного числа на экран.