Процедуры ввода данных с клавиатуры
Для ввода-вывода данных в Паскаль-программе применяются предописанные процедуры ввода-вывода Read, Readln, Write, Writeln (Readln - сокращение слов read line). Каждая из этих процедур представляет собой некоторую подпрограмму, которая активизируется оператором процедуры.
Мы будем рассматривать только ввод с клавиатуры и вывод на экран дисплея. Более подробно процедуры ввода-вывода будут рассмотрены позже.
Основной процедурой ввода является read. С помощью этой процедуры можно прочитать любое количество исходных данных, указав в скобках идентификаторы переменных, которым нужно присвоить значения.
Структура оператора:
read(список-ввода),
где список ввода – это имена переменных, разделенных между собой запятыми.
Если в программе встречается оператор read(x), то решение прерывается и программа ожидает от пользователя набора на клавиатуре значения переменной x и нажатия клавиши Enter.
При наборе с клавиатуры вводимые данные накапливаются в буфере ввода, который представляет собой специально выделенную для этого область памяти. Одновременно набираемые данные высвечиваются на экране дисплея. После нажатия клавиши Enter происходит чтение данных из буфера ввода и присваивание их значений переменным, имена которых записаны в списке ввода. Числа, набираемые с клавиатуры в буфер ввода, должны представлять собой правильные константы и отделяться друг от друга одним или несколькими пробелами.
Пусть в буфер ввода набраны следующие данные:
15.8 -4 73.7 12.9
и после этого нажата клавиша Enter.
Тогда оператор read(a,b,c,d) прочтет четыре числа из буфера ввода и присвоит их значения переменным a,b,c,d. Написанный выше оператор ввода эквивалентен следующим операторам:
read(a); read(b); read(c); read(d) .
Предположим, что в буфере ввода после нажатия клавиши Enter содержатся числа
15.8 -4 73.7
Поскольку оператор read(a,b,c,d) эквивалентен операторам read(a); read(b); read(c); read(d), то будут выполнены только первые три из них. Программа снова приостанавливает свою работу в ожидании нового заполнения буфера ввода и нажатия клавиши Enter.
Пусть в аналогичной ситуации буфер ввода имеет вид:
15.8 -4 73.7 12.9 -16 65.87
Тогда из буфера будут введены первые 4 числа, и программа продолжит свою работу. Если дальше в программе будут встречаться операторы read, то оставшиеся в буфере два числа будут введены этими операторами.
Оператор readln отличается от оператора read тем, что после его выполнения производится переход на новое содержимое буфера ввода.
Пусть буфер ввода имеет вид:
15.8 -4 73.7 12.9 -16 65.87
При выполнении операторов
readln(a,b); readln(c,d);
из буфера будут введены первые два числа, после чего работа программы приостанавливается в ожидании нового заполнения буфера ввода.
Оператор readln без параметров производит только переход к новому содержимому буфера ввода.
Оператор readln(a,b,c,d) эквивалентен следующим операторам:
read(a); read(b); read(c); read(d); readln.
Процедуры вывода данных на экран
Для вывода данных используются процедуры write и writeln.
Процедура writeln отличается от процедуры write тем, что после ее выполнения происходит переход на новую строку экрана.
Элементами списка вывода, в отличие от списка ввода, являются выражения. Частным случаем выражения являются константа, имя переменной, функция. В свою очередь частным случаем константы является текстовая константа, т.е. последовательность символов, заключенная в апострофы.
Пусть заданы две процедуры:
Write(' Переменная x '); Write('Переменная y');
При их выполнении на экране будет отпечатано:
Переменная x Переменная y
Для процедур
Writeln(' Переменная x'); Writeln(' Переменная y');
получим
Переменная x
Переменная y
Выводом можно управлять с помощью форматов. Элемент списка вывода может быть записан в форме
v
или v:w
или v:w:d .
Здесь v – выражение, w и d – форматы.
Если указано только выражение v, то количество позиций в строке экрана, отводимое для печати значения v, зависит от типа этого значения.
Для целых переменных отводится столько позиций, сколько цифр содержит значение переменной. Для знака «–» отводится одна позиция перед первой цифрой числа. Для знака «+» никакой позиции не отводится.
Пример
Var i : integer;
l : longint;
Begin
i:=555; l:=123456789;
Writeln('i=',i); Writeln('l=',l);
i:=-555; l:=-123456789;
Writeln('i=',i); Writeln('l=',l);
Будет отпечатано:
i=555
l=123456789
i=-555
l=-123456789
Для вещественного значения отводится 17 позиций. Число печатается в виде мантиссы и порядка. Длина мантиссы – 11 цифр, из них одна цифра целой части числа.
Пример.
Var R : real;
Begin
R:=555; Writeln('R=',R);
R:=-555; Writeln('R=',R);
Будет отпечатано:
R= 5.5500000000E+02
R=-5.5500000000E+02
Здесь E -признак порядка.
Формат w указывает ширину поля (количество позиций), отводимых для изображения значения v.
Пусть n - количество цифр целой переменной, включая знак "-", если он имеется.
Если w > n, то значение v печатается в правой части поля w; если w < n, то для печати значения v отводится n позиций (отсекание "лишних" цифр не производится).
Если для вещественной переменной w > 17, то слева от значения переменной печатается соответствующее количество пробелов;
если w < 17, то соответственно уменьшается количество цифр мантиссы. Минимальное количество цифр мантиссы равно 2, в этом случае значение w < 8 воспринимается как w = 8. Значение мантиссы округляется по последней печатаемой цифре.
Формат d применяется только для вещественных значений и означает, что число должно печататься в виде целой и дробной частей, разделенных точкой; при этом значение d указывает, сколько позиций из общего количества w должно быть отведено для печати дробной части числа. Если d = 0, то печатается только целая часть числа без разделяющей точки. Если поля w недостаточно для печати всех цифр числа, то к значению w добавляется необходимое количество позиций.
Раздел №10 (2 часа)
Условный оператор
План:
• Алгоритмы с ветвлением
• Структура и синтаксис условного оператора
• Задание логических выражений для передачи управления
• Составные условия с использованием логических операторов
10. Условный оператор
Алгоритмы с ветвлением
Все рассмотренные ранее примеры алгоритмов и программ являлись линейными, т.е. представляли собой сплошной поток действий, выполняемых одно за другим. Однако большая часть реальных программ не может быть представлена в таком виде. Как правило, почти любой алгоритм содержит один или несколько участков, которые выполняются не обязательно, а в зависимости от некоторого условия. В этом случае говорят о разветвляющихся вычислительных процессах.
В алгоритмах ветвление осуществляется с помощью блока
Пример: разработать алгоритм, вычисляющий модуль числа.
Модулем скалярной величины называется её абсолютное значение. Для положительных чисел модуль совпадает с самим числом, для отрицательных – знак меняется на противоположный. Например: ,
. Это позволяет предложить следующий алгоритм:
Язык Паскаль содержит средства, обеспечивающие организацию подобных ветвлений.