Процедуры ввода READ и READLN
Процедура READ вызывается с помощью соответствующего оператора процедуры.
Общая форма записи оператора
READ (X,Y,..., Z), где X,Y,..., Z – переменные, называемые
списком ввода.
При выполнении процедуры READ работа программы приостанавливается, ЭВМ ждет ввода данных. Пользователь должен с клавиатуры ввести значения переменных, указанных в списке, отделяя их одним пробелом. Ввод завершается нажатием клавиши ENTER. Можно нажимать клавишу ввода и после набора каждого элемента ввода. В этом случае каждое нажатие клавиши ENTER осуществляет присваивание очередной переменной списка ввода ее значения, набранного с клавиатуры. По завершении ввода программа возобновляет свою работу.
Для лучшего понимания работы данной процедуры и ее умелого использования при задании значений нескольких переменных необходимо знать, что при вводе значений переменных (констант) с клавиатуры они сначала идут в буфер клавиатуры, а потом считываются в ячейки оперативной памяти, отведенные компилятором этим переменным. При считывании буфер очищается по принципу очереди (первым зашел – первым вышел). Это означает, что при вводе сразу нескольких констант и при последующем нажатии клавиши ENTER из буфера клавиатуры будет считано столько констант, сколько переменных в операторе READ, а остальные останутся в буфере. Если же в буфере клавиатуры после очередного считывания останутся еще константы, то при следующем операторе READ остановки работы программы не будет, и его переменные получат свои значения из буфера (если только в нем достаточно констант для всех переменных).
Например, пусть имеется фрагмент программы, включающий в себя два оператора READ:
......................
READ (A, B, C);
…………….
READ (D, E);
…………….
и пусть по первому оператору READ на клавиатуре набрано 5 констант. Тогда при работе второго READ останова работы программы не будет и переменные C и D получат значения последних двух ранее введенных констант. Если же ввести 4 константы, то второй оператор READ затребует еще одну константу с клавиатуры.
Вызов процедуры READLN имеет тот же синтаксис, что и оператор READ, однако ее работа отличается от работы первой процедуры. При однократном вводе констант отличий нет, а при одноразовом вводе нескольких констант происходит очистка буфера клавиатуры. Так, если в нашем примере заменить первый READ на READLN и тоже ввести сразу 5 констант, то второй оператор READ произведет остановку работы программы и затребует повторного ввода последних двух значений для переменных D и E. Заметим также, что оператор READLN используется преимущественно при вводе текстовых констант (READLN – read line – читать текст).
Процедуры вывода WRITE и WRITELN
Процедуры вывода WRITE и WRITELN служат для вывода на экран констант (как числовых, так и текстовых), значений переменных и выражений. Они вызываются с помощью одноименных операторов вызова процедур, например:
WRITE ('программа', X, Y – Z * 3).
По этому оператору на экран будет выведено в одной строке слово «программа» и далее без пробелов значения переменной X и выражения Y – Z * 3. Например, если имеем X = -3, Y = -5, Z = 12, то на экран будет выведено: программа-3-41.
Чтобы отделить элементы вывода друг от друга, используется прием форматирования вывода. Так, WRITE (А:20) – одиночное форматирование – показывает, что значению переменной А отводится 20 позиций на экране монитора. Если в значение переменной А входит менее 20 символов, то они сдвигаются вправо, а слева строка заполняется пробелами.
Двойное форматирование используется только для вывода вещественных значений. Например, WRITE (C:17:7) означает, что для вывода значения переменной C отведено всего 17 позиций, из них 7 позиций предназначены для представления дробной части. Если формат не указан, то вещественные константы выводятся на экран в экспоненциальной форме. Заметим также, что форматировать в операторах WRITE можно не только переменные, но и выражения, например:
WRITE (cos (x + 4): 5: 2);
Работа оператора WRITE отличается от работы оператора WRITELN тем, что по завершении вывода у WRITE курсор остается в конце списка вывода, а у WRITELN он переходит на следующую строку. Часто используют оператор WRITELN без списка вывода для вывода на экран пустой строки.
Проиллюстрируем работу этих операторов на следующем примере:
program AVERAGE;
var FIRST, SECOND, TROIS, SUM: integer;
begin
writeln ('Введите 3 числа ');
readln (FIRST, SECOND, TROIS);
SUM:= FIRST + SECOND + TROIS;
writeln ('Среднее значение ', FIRST:4,',',SECOND:4,',');
write (TROIS:4,' равно ';(SUM div 3):3)
end.
На экран будет выведено:
Введите 3 числа 2 12 9 Среднее значение 3, 12, 9 равно 8 |
Лабораторная работа № 1
Цель работы: выработать практические навыки использования системы программирования Borland Pascal или Delphi, научиться создавать, вводить, отправлять на выполнение и исправлять простейшие программы на языке Паскаль, познакомиться с диагностическими сообщениями компилятора об ошибках на примере программ, реализующих линейные алгоритмы.
Общие сведения
Линейным называется алгоритм, в котором результат получается путем однократного выполнения заданной последовательности действий при любых значениях исходных данных. Операторы программы выполняются последовательно, один за другим, в соответствии с их расположением в программе.
Перед выполнением работы необходимо ознакомиться с теоретическим материалом по темам «Описание языка Паскаль», «Простые операторы. Ввод/вывод данных».
Пример. Определить расстояние на плоскости между двумя точками с заданными координатами M1(x1,y1) и M2(x2,y2).
Решение задачи.
В этом примере проведем полный разбор решения задачи.
Математическая модель: расстояние на плоскости между двумя точками M1(x1,y1) и M2(x2,y2) высчитывается по формуле:
Составим блок-схему алгоритма, а затем уточним содержимое блоков "Вычисление расстояния" и "Вывод расстояния" (см. рис.1):
Рис. 1. Блок-схема алгоритма
Дальнейшая детализация не требуется. Переводим блок-схему на язык Паскаль, доработав программу, чтобы улучшить ее интерфейс:
program example1;var x1, x2, y1, y2: Integer; d:Real; begin Writeln('Эта программа вычисляет расстояние между двумя точками на плоскости'); Writeln('Введите координаты двух точек:'); Write('x1= '); Readln(x1); Write('y1= '); Readln(y1); Write('x2= '); Readln(x2); Write('y2 ='); Readln(y2); d:=sqrt(sqr(x2-x1)+sqr(y2-y1)); Writeln('d= ',d:6:2); Writeln('нажмите Enter для завершения работы программы'); Readln; end.Варианты заданий
Задание 1. Даны x, y. Составить программу вычисления значения выражения:
a) | ![]() | b) | ![]() | c) | ![]() | d) | ![]() |