Операторы вызова процедур. Ввод/вывод данных



Оператор вызова процедуры определяет активизацию процедуры, обозначенную с помощью идентификатора (имени) процедуры. Другими словами, с помощью операторов этого типа осуществляется вызов процедур с указанием в них входных и выходных параметров (подробнее об этом будет сказано в разделе «Процедуры»). Мы начнем знакомство с операторами-процедурами на базе организации ввода/вывода данных в языке Паскаль.

Для организации ввода и вывода данных используются следующие встроенные (машинные) процедуры: READ, WRITE, READLN, WRITELN.

Процедуры ввода 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)

Задание 2. Составить программу для решения следующей задачи:

a) Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.

b) Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

c) Вычислить высоту треугольника, опущенную на сторону а, по известным значениям длин его сторон a, b, c.

d) По данным сторонам прямоугольника вычислить его периметр, площадь и длину диагонали.

Задание 3. Вывести значение true, если приведенное высказывание для предложенных исходных данных является истинным, и значение false в противном случае (все числа, для которых не указано иное, являются действительными):

a) данное число x принадлежит отрезку [- a , a];

b) данное число x не принадлежит интервалу (a , b);

c) данное целое число x является нечетным;

d) данное число x является корнем уравнения: ax2+bx+c=0;

Дополнительные задания

1. Ученик начал решать задачи данного урока программирования, когда электронные часы показывали h1 часов и min1 минут, а закончил, когда было h2 часов и min2 минут. Составьте программу, позволяющую определить, сколько времени (в часах и минутах) ученик решал эти задачи.

2. Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения, получить: а) а4 за две операции; б) а6 за три операции; в) а7 за четыре операции; г) а8 за три операции.

Контрольные вопросы

1. Каковы назначение и возможности системы программирования?

2. Как запустить программу на трансляцию и выполнение?

3. Как обозначается начало и конец программы?

4. Из каких разделов состоит программа на языке Паскаль?

5. Как в языке Паскаль осуществляется вывод на экран?

6. Для чего предназначен оператор присваивания?

7. Как вывести на экран значение переменной?

 


Дата добавления: 2018-11-24; просмотров: 427; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!