Как записывается оператор вывода. Turbo Pascal. Ввод и вывод данных. Вывод данных Паскаль

Любая программа при вводе исходной информации и выводе результатов взаимодействует с внешними устройствами. Частным случаем обмена данными с внешними устройствами является обмен с консолью. Консоль представляет собой совокупность клавиатуры и экрана монитора.

Рассмотрим способы организации ввода и вывода информации, предоставляемые языком программирования Паскаль .

Процедура ввода

Ввод данных - это процесс передачи исходных данных от внешнего устройства в оперативную память.

В качестве внешнего устройства ввода, как правило, является клавиатура или файл с данными.

Для ввода данных с клавиатуры в языке Паскаль используются процедуры read и readln , имеющие следующий формат:

  • read(список);
  • readln(список);

Процедура readln аналогична процедуре read , единственное отличие заключается в том, что после считывания последнего значения переменной из списка, происходит перевод следующего ввода данных в начало новой строки.

Элементом «список» является список имен переменных через запятую, значения которых будут вводится с клавиатуры (заметим, что список может быть пустым), например:

  • read(a, b, c);
  • readln;

Вводимые значения должны разделяться пробельными символами (пробел, табуляция, перевод строки), причем их количество не ограничено. Ввод данных для одной процедуру завершается нажатием клавиши Enter . Если процедура readln используется без параметров, то происходит ожидание нажатия клавиши Enter .

ВНИМАНИЕ: вводимые значения должны соответствовать типам переменных, в противном случае возникает ошибка (например, переменная b имеет тип integer , а вводится вещественное число).

Процедура вывода

Вывод – это процесс передачи данных после обработки из оперативной памяти на внешнее устройство.

Для вывода данных на экран в языке Паскаль используются процедуры write и writeln , которые имеют следующий вид:

  • write(список);
  • writeln(список);

В случае использования процедуры write , после выведения последнего элемента списка на экран, курсор останется в той же строке. Процедура writeln , после завершения вывода, переводит курсор на следующую строку. Если процедуре writeln не передавать параметры, то курсор просто переводится на следующую строку.

Правила записи параметров процедуры вывода

  1. Список вывода разделяется запятыми
  2. Список вывода может содержать переменные, константы и выражения
  3. Под вывод любого значения можно задать формат поля вывода - количество позиций, в которых будет размещаться величина (указывается сразу после выводимого значения через двоеточие):
    • если значение выводимой величины оказывается короче, то оно «прижимается» к правому краю отведенного поля, в противном случае - поле «раздвигается» до необходимых размеров;
    • для вещественных чисел в формате поля вывода предусматривается возможность указания количество выводимых позиций и отводимых под дробную часть числа (десятичная точка также занимает одну позицию).

Например:

  • writeln("a = ", a:2, " ", 10 + sqrt(a):2:4, " ", pi:4:2);

Линейные программы

Линейные программы представляют собой, как уже отмечалось, последовательность операторов, циклов и условных переходов нет. Структурная схема такой программы включает блок ввода данных, блок вычислений и блок вывода результатов.

Для ввода данных используются операторы LET, DATA, READ, RESTORE, INPUT, LINE INPUT, функция INPUT$.

Оператор LET . Служит для присвоения значений переменным. Формат оператора: LET <имя переменной> = <выражение>

Оператор LET может быть опущен, поэтому выражения

LET A=exp(x)+ sin(x) и A=exp(x)+ sin(x)

эквивалентны.

Операторы DATA и READ позволяют вводить данные из программы. Оператор DATA заносит данные в специальную область оперативной памяти компьютера, а оператор READ считывает эти данные из оперативной памяти и присваивает их переменным. Эта область данных содержит специальный указатель. При запуске программы указатель устанавливается в начале области данных. При считывании данных из области памяти он также перемещается. Если число переменных в операторе READ больше числа значений в операторе DATA , то указатель выходит за область данных и будет выдано сообщение об ошибке.

Типы данных в операторах DATA и READ должны соответствовать друг другу. Эти операторы могут располагаться в любом месте программы. Строковые переменные записываются без кавычек, если в них нет пробелов, и заключаются в кавычки, если содержат пробелы.

Форматы операторов:

DATA <список данных>

READ <список переменных>

Пример 9.4.1. Использование операторов DATA, READ

DATA 125, 34.78, 1.24E-5, БРЕСТ, “МИНСК - СТОЛИЦА”

READ A,B,D,C$,C1$

Переменным A, B и D будут присвоены, соответственно, числовые значения 125, 34.78 и 0.0000124, переменным C$ и C1$ - “БРЕСТ” и “МИНСК - СТОЛИЦА”.

Для повторного использования данных используется оператор RESTORE . Формат оператора: RESTORE [<метка>].

Если метка в операторе RESTORE не указана, то указатель устанавливается в начало области данных, иначе указатель устанавливается на соответствующую метку в области данных.

Пример 9.4.2. Использование операторов DATA, READ, RESTORE

10 REM ПРИМЕР ИСПОЛЬЗОВАНИЯ ОПЕРАТОРОВ DATA, DEAD, RESTORE

20 DATA 136.75, 18E5,123.45,1978,.9875

25 DATA .5439,1.567,4.65,12.23,48.56

30 READ A1,A2,A3,A4,А5: REM чтение данных из строки 20

150 READ B1,B2: REM чтение данных из строки 25

250 RESTORE 25: REM перевод указателя данных на метку 25

260 INPUT "Введите размерность массива N, не более 5",N

270 FOR i=1 TO N

280 READ D2(i) : REM чтение данных из строки 25 в одномерный массив



Оператор INPUT служит для ввода данных с клавиатуры в режиме диалога с пользователем. Формат оператора:

INPUT [;] “текстовое выражение”[;/,]<список переменных>

Здесь [;] – необязательный параметр, оставляет курсор в текущей строке; [;/,] - означает, что в качестве разделителя может использоваться один из указанных знаков ";" или ",".

При выполнении оператора INPUT на экран выдается запрос на ввод данных. Если в качестве разделителя используется “;”, то запрос сопровождается выводом на экран вопросительного знака, при использовании в качестве разделителя “,” вопросительный знак на экран не выводится. Текстовое сообщение позволяет сделать запрос понятным пользователю. В списке переменных данные разделяются запятыми или пробелами (предпочтительнее разделять данные запятыми). С помощью оператора INPUT можно вводить как числовые, так и символьные переменные. Если символьная переменная не содержит пробелов и других разделителей, то при вводе данных заключать ее в кавычки не обязательно.

Не используйте оператор INPUT без текстового комментария.

Пример 9.4.3. Использование оператора Input

INPUT “Введите переменные А и B”; A,B

INPUT “Введите Ваш год рождения”, GR$

Здесь A и B - числовые переменные, GR$ - символьная переменная.

Оператор LINE INPUT служит для ввода одной символьной переменной. При вводе значение символьной переменной в кавычки не заключается, в ней допускается наличие пробелов и других разделителей. Конец строки определяется символом возврата каретки - нажатие клавиши ENTER. Формат оператора LINE INPUT аналогичен формату оператора INPUT.

Функция INPUT$ служит для ввода символов, не отображаемых на экране, например пароля. Формат функции: с1$ = INPUT$(n [,[#]nf])

Здесь n - число вводимых символов, # - номер канала при вводе данных из файла, nf - имя файла.

Пример 9.4.4. Использование оператора LINE INPUT и функции INPUT$

LINE INPUT "Введите фамилию, имя и отчество ",FIO$

Символьной переменной B$ присваивается код из пяти символов, при выдаче запроса вводимые символы отображаться на экране не будут. Когда в программе встречается оператор INPUT$(n), программа останавливается и ожидает ввода данных. Поэтому данный оператор в формате B$= Input$(1) может быть использован для остановки программы до нажатия любой клавиши.

Функция Input$(1) может быть использована для остановки программы до нажатия любой клавиши.

Операторы размещаются в разделе операторов между ключевыми словами и отделяются друг от друга точкой с запятой. Операторы, не содержащие никаких других операторов, называются простыми:

Оператор присваивания – это самый основной оператор. В нем выражение с правой стороны и индет. результата разделены знаком присваивания:=

Например: y:=x + 5 div 2

Оператор вызова процедуры служит для активизации предварительно определенной пользователем, или стандартной, процедуры. Например: clrscr; и т.д.

Пустой оператор не содержит никаких символов и не выполняет никаких действий. Обычно пустой оператор используется для организации перехода к концу локального или глобального блока в случаях, если необходимо пропустить несколько операторов, но не выходить из блока. Для этого перед зарезервированным словом end ставятся метка и двоеточие.

Оператор безусловного перехода gotoозначает “перейти к “ и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор. Пример:gotometka1;

ВВОД-ВЫВОД ДАННЫХ: процедура чтения Readввод числовых данных, символов, строк и т.д. для последующей их обработки программой. Формат:read(x1,x2,x3…); илиread(FV,x1,x2,x3…); , где х1,х2,х3.. – переменные,FV– переменная, связанная с фалом, откуда будет выполнятся чтение. Процедура чтенияReadlnаналогична процедуреRead, только осуществляется переход на следующую строку. Процедура записиWriteпроизводит вывод числовых данных, символов, строк и булевских значений. Формат: Write (x1,x2,x3…); или Write (FV,x1,x2,x3…);

где x– переменные,FV– имя файла, куда производится вывод.Writeln– перевод на другую строку.

26.Операторы ввода данных с клавиатуры.

Read("список переменных");

Readln("список переменных");

Write("введите значение а="); Readln(a);

введите значение а= .

Readln(a); Readln(b); Readln(c); или Readln(a, b, c);

Readln(с1, с2, с3, c4); {ожидает ввода значений символьных переменных с1, с2, с3, c4, например: "У", "Р", "А", "!" и нажатия Enter }

Writeln(с1, с2, с3, c4); выведет на экран надпись: УРА!

27.Оператор выбора.

Case "параметр" Of

"список помеченных операторов"

Else "оператор" End;

Пример операторов для определения порядка целого числа N от 0 до 999:

0..9: writeln("однозначное");

10..99: writeln("двузначное");

100..999: writeln("трехзначное")

else writeln("Число "N" не входит в указанный диапазон") end;

28.Условный оператор.

IF "условие" Then "оператор1" Else "оператор2";

Например, вычисление квадратного корня из числа "a" проводится при условии a>=0,

IF a >= 0 Then b:= Sqrt(a) Else begin WriteLn ("a<0"); Readln; Halt end;

Оператор Halt прекращает выполнение программы.

29.Оператор цикла.

С параметром

For i:= N1 To N2 Do "оператор";

For i:= N1 DownTo N2 Do "оператор";

С условием

While "условие" DO "оператор";

Repeat "операторы" Until "условие";

"условие" - выражение логического типа (Boolean).

30 .Оператор перехода к метке.

Goto "метка";

M1: Write("Введите x>=0"); Readln(x); If x<0 Then Goto M1;

Метки описываются в разделе описания, например:Label M1;

31.Линейные массивы.

Описание массивов:

VarA:array[ 1. .30 ] of byte;

S: array[ 1. . 30 ] of string;

SO:array[ 1. . 30 ]ofstring;

Присвоение значений элементам массива:

A:= 5; A:= 4; и т. д.

S:= "Иванов"; S:= "Петров"; и т. д.

Присвоение значения элементам массива "y" по зависимости:

y=sin(x), где x= Pi * i/180, 0<= i <=180 .

For i:= 0 to 180 Do y[i]:= sin(Pi * i/180);

Присвоение случайных значений в диапазоне от -30 до +40 ста элементам массива "R":

Randomize; for i:=1 to 100 Do R[i]:= - 30+Random(71);

При рассмотрении примера работы оператора присваивания мы столкнулись с необходимостью узнать результат выполнения программы. Мы разобрались с тем, как информацию сохранять (в переменных), как обрабатывать (с использованием выражений), но два фундаментальнейших информационных процесса остались вне нашего внимания: получение информации и передача ее во внешний по отношению к компьютеру мир. Пока наши программы могут использовать лишь информацию, которая находится непосредственно в тексте программы. Узнать, какие значения в данный момент имеют переменные, также не представлялось возможным. Программирование в таких условиях теряет смысл.

Взаимодействие устройств обработки и хранения информации с внешней редой (хотя бы с пользователем) является совершенно необходимым. За такой интерфейс в языке Паскаль отвечают операторы ввода-вывода информации. Эти инструкции позволяют ввести аргументы, параметры расчетов во время выполнения программы (а не на этапе ее написания), осуществить вывод рассчитанных данных в понятном человеку виде.

Операторы ввода (форматы операторов):

Read(<Список ввода>); Readln(<Список ввода>);

В таком формате эти команды позволяют вводить данные в переменные во время выполнения программы с клавиатуры. Элементами списка ввода могут быть имена переменных, которые должны быть заполнены значениями, введенными с клавиатуры. Выполнение операторов ввода происходит так: ход программы приостанавливается, на экран выводится курсор, компьютер ожидает от пользователя набора данных для переменных, имена которых указаны в списке ввода. Пользователь с клавиатуры вводит необходимые значения в том порядке, в котором они требуются списком ввода, нажимает Enter. После этого набранные данные попадают в соответствующие им переменные и выполнение программы продолжается.

Примечание: данные при вводе разделяются пробелами.

Разница между работой процедур Read и Readln (от Read line) состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln - с новой строки.

Для вывода информации в Паскале также есть две команды:

Write(<Список вывода>); Writeln(<Список вывода>);

Такой формат использования Write и Writeln позволяет выводить на экран монитора данные из списка вывода. Элементами списка вывода могут являться имена переменных, выражения, константы. Прежде чем вывести на экран компьютер значения выражений сначала вычислит. Элементы списка, также как и в операторах ввода, разделяются запятыми. Различие между двумя операторами вывода таково: после выполнения оператора Writeln (от Write line) происходит переход на новую строчку, а после выполнения инструкции Write, переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке. При вызове оператора Writeln без параметров просто происходит переход на новую строчку.

Приведем пример использования операторов ввода и вывода:

Program Inteface;

Write("Введите радиус круга "); {Печать на экране просьбы о вводе}

Readln(R); {Ввод значения в

переменную R с клавиатуры}

S:=4*ARCTAN(1)*SQR(R); {Вычисление площади круга (pR2)}

Writeln("Площадь круга радиусом ",R," равна ",S)

Эта программа запрашивает у пользователя значение радиуса круга, обеспечивает возможность ввести его значение, рассчитывает и выводит на экран величину площади круга с таким радиусом. Таким образом, появляется возможность, не внося изменений в текст программы, вводить различные значения радиуса и получать, соответствующие им значения площади круга. Для этого достаточно несколько раз запустить программу. Также эта программа демонстрирует следующее правило: выдача результатов должна быть прокомментирована так, чтобы был ясен смысл напечатанных чисел. Действительно, ведь можно было бы ограничиться Writeln(S), но значение выведенного программой числа в этом случае было бы ясно только тому, кто эту программу написал.

Для того, чтобы просмотреть результат работы этой программы, ее необходимо сначала откомпилировать. Сделать это в Паскале можно, нажав сочетание клавиш Ctrl+F9. Программа будет проверена на ошибки (если они найдутся, то вам будет выдано сообщение вверху экрана и курсор встанет на место ошибки). Если ошибок не нашлось, то результат будет выдан и просмотреть его можно, если нажать сочетание клавиш Alt+F5.

Набор программы на Паскале похож на набор обычного текстового файла, только для этого используется среда ТурбоПаскаль. Запустить ее можно с Вашего Рабочего стола.

Пример . Определить объём и площадь боковой поверхности цилиндра с заданными радиусом основания R и высотой H.

Program Cylinder;

R, {радиус основания цилиндра}

H, {высота цилиндра }

V, {объем цилиндра }

S: Real; {площадь боковой поверхности цилиндра}

Write("Введите высоту цилиндра: "); ReadLn(H);

Write("Введите радиус основания: "); ReadLn(R);

V:= Pi * R * R * H;

S:= 2 * Pi * R * H; WriteLn;

WriteLn("Объем цилиндра = ", V: 5: 2); {Здесь 5 – общее количество позиций, занимаемых переменной V при выводе, а 2 - количество позиций в дробной части значения V}

WriteLn("Площадь боковой поверхности = ",);

Задание для лабораторной работы.

1. Вычислить длину окружности, площадь круга и объём шара одного и того же заданного радиуса.

2. Вычислить значение функции y = 3x 2 + 4(sin(x)- x 3)

Понравилось? Лайкни нас на Facebook