Операторы ввода - вывода.

Простейшие операторы.

Оператор присваивания := выполняет правую часть выражения и присваивает результат переменной, расположенной в левой части выражения.

Пример:

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. В этом случае вы фактически указываете только количество разрядов в дробной части числа, а ширина поля вывода определяется в момент вывода вещественного числа на экран.