При написании программ на Паскале часто требуется, чтобы в определенном месте несколько операторов условно фигурировали (представлялись) как один оператор. Для этого используется составной оператор, который объединяет последовательность (цепочку) операторов в единый оператор путем обрамления этой последовательности операторными скобками - словами "begin" и "end". Внутри операторных скобок операторы отделяются друг от друга знаком ";". Выполнение составного оператора сводится к последовательному - в порядке их написания - выполнению входящих в него операторов:
begin i:=0; j:=0 end;
begin
y:=x/2;
x:=x+h;
begin
Sym:='A';Str:='Строка'
end
end;
Операторы ввода-вывода необходимы для ввода в компьютер данных с клавиатуры либо вывода результатов расчета на экран дисплея.
Для ввода данных используется оператор "Readln", например Readln(A), где А- имя переменной.
Встретив в тексте программы оператор Readln (имя переменной), компьютер останавливается и ждет, когда с клавиатуры будет введено значение для указанной переменной и нажата клавиша ENTER. После этого ячейка оперативной памяти, отведенная для переменной, будет заполнена введенными данными.
Вывод данных на экран осуществляется операторами Write(A,B,C, ... ,Z),либоWriteln(A,B,C, ... ,Z),где A,B,C, ... ,Z - имена переменных либо выражения.
Разница между этими двумя схожими операторами в следующем: при выполнении оператора Writeln( ) все перечисленные в нем элементы печатаются в одну строку в заданном порядке, после чего курсор переводится в начало следующей строки. Если после вывода последнего элемента списка необходимо оставить курсор на той же строке, следует использовать оператор вывода Write( ).
Часто при программировании необходимо вывести на экран небольшие текстовые сообщения: заголовок таблицы, пояснение к вводимым или выводимым данным и т.п. Для этого выводимый текст ограничивается с обеих сторон апострофами и записывается в оператор вывода:
Writeln('Введите исходные данные');
Такой оператор выводит на экран все символы, заключенные между апострофами, но сами апострофы не печатаются.
Если в операторе вывода числовые переменные отделяются друг от друга только запятыми, то при выводе на экран их значения будут сливаться в одну строку, что затруднит чтение:
Program Vvod-Vivod;
Var A,B,C: integer;
Begin
Write('A= '); Readln(A);
Write('B= '); Readln(B);
Write('C= '); Readln(C);
Writeln('Вывод значений переменных A,B,C:');
Writeln(A,B,C)
End.
Предположим, что при выполнении этой программы с клавиатуры ввели числа 3,4,5 (в переменные A,B,C соответственно). В этом случае оператор Writeln(A,B,C) выведет на экран строку:
345.
Чтобы выводимые числовые значения не сливались визуально в одно число, перечисляемые в операторе Writeln( ) переменные следует разделять пробелами, заключенными в апострофы:
Writeln(A,' ', B,' ',C).
Другой способ разделения выводимых данных заключается в использовании формата длины поля:
Writeln(A:N),
где А - имя переменной; N - число знакомест, резервируемых в строке на экране под выводимое значение переменной.
Если количество цифр в значении переменной окажется меньше, чем было заказано в длине поля вывода (N), то выводимые символы будут выравниваться по правой границе отведенного поля, а в оставшееся слева от числа незаполненное пространство поместятся пробелы. Если длина поля окажется недостаточной для печати числа, Паскаль автоматически увеличит длину поля до минимально необходимого размера.
При выводе на экран значений вещественных переменных (типа Real), в формате поля вывода необходимо, кроме длины поля, указывать количество знакомест, резервируемых под дробную часть числа. В противном случае число будет распечатано в неудобной для чтения экспоненциальной форме.
Writeln(A:N:K),
здесь А - имя переменной типа "Real";
N - общая длина поля;
K - число знакомест в длине поля, отводимых под дробную часть числа.
Например: X:=248.74; Writeln(X:6:2).
Рассмотрим текст программы, содержащей все изученные нами операторы:
Program Stepen;
Var A,B: Real;
N: Integer;
Begin
Writeln('Программа возведения числа в степень');
Write('Введите число = '); Readln(A);
Write('Укажите степень = '); Readln(N);
Writeln;
B:=Exp(N*Ln(A));
Writeln('Результат:');
Writeln('B= ',B:8:2);
Readln
End.
В данной программе оператор Writeln без параметра использован для того, чтобы создать на экране пустую строку и отделить ею результат от исходных данных.
Стоящий в конце программы оператор Readln без параметра позволяет программным путем задержать окно пользователя USER SCREEN до тех пор, пока не будет нажата клавиша ENTER.
Если результаты расчета надо вывести не на экран, а на принтер, то в раздел описаний программы надо добавить блок Uses, в котором указать имя модуля PRINTER. Далее, в тех операторах вывода (Write, Writeln), которые должны выводить данные на бумагу, надо добавить после открывающейся скобки слово LST, например:
Writeln(LST,'B= ',B:8:2).
С учетом сказанного, нашу программу возведения числа в степень можно модифицировать следующим образом:
Program Stepen_2;
Uses Printer;
Var A,B:Real;
N:Integer;
Begin
Write('Число = '); Readln(A);
Write('Степень ='); Readln(N);
B:=Exp(N*Ln(A));
Writeln;
Writeln('B= ',B:8:2);
Writeln(Lst,'Число',A:5:1,'в степени',N:2);
Writeln(Lst,'равно ',B:7:1);
Readln
End.
4.2.4. Условный оператор
4.2.4.1. Понятие об условном операторе
Программы, составленные исключительно из операторов присваивания и ввода-вывода, могут иметь только линейную структуру:
Рисунок 8.Блок-схема линейного алгоритма
Между тем, часто бывает нужно, чтобы какой-нибудь блок программы выполнялся или не выполнялся в зависимости от задаваемого условия. Для подобного разветвления вычислительного процесса служат условные операторы. В Паскале имеется 2 формы условного оператора: полная и сокращенная.