Для ввода данных на экран используется оператор. Ввод и вывод данных в языке паскаль. Цикл. Виды Циклов
10. Операторы ввода и вывода
Рассмотрим организациюввода и вывода данных с терминального уст-
ройства. Терминальное устройство - это устройство, с которым работает
пользователь, обычно это экран (дисплей) и клавиатура.
Для ввода и вывода данных используются стандартные процедуры ввода
и вывода Read и Write, оперирующие стандартными последовательными файлами
INPUT и OUTPUT.
Эти файлы разбиваются на строки переменной длины,отделяемые друг
от друга признаком конца строки.Конец строки задается нажатием кла-
Для ввода исходных данных используются операторы процедур ввода:
Read(A1,A2,...AK);
ReadLn(A1,A2,...AK);
Первый из них реализует чтение К значений исходных данных иприс-
ваивание этих значений переменным А1,А2,...,АК. Второй оператор
реализует чтение К значений исходных данных, пропуск остальных значе-
ний до начала следующей строки, присваивание считанных значений пере-
менным А1,А2, ..., АК. Третий оператор реализует пропуск строки ис-
ходных данных.
При вводе исходных данныхпроисходитпреобразованиеизвнешней
формы представления во внутреннюю, определяемую типом переменных. Пе-
ременные, образующиесписок ввода, могут принадлежать либо к целому,
либо кдействительному,либо к символьному типам. Чтение исходных
данных логического типа в языке ПАСКАЛЬ недопустимо.
Операторы вводапри чтении значений переменных целого и
действительного типа пропускает пробелы,предшествующие числу.В то
же время эти операторы не пропускают пробелов,предшествующих значе-
ниям символьных переменных,так как пробелыявляютсяравноправными
символами строк. Пример записи операторов ввода:
var rV, rS: Real;
iW, iJ: Integer;
................
Read(rV, rS, iW, iJ);
Значения исходных данных могут отделяться друг от другапробелами
и нажатием клавиш табуляции и Enter.
Для вывода результатов работы программы на экран используются
операторы:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
Первый из этих операторов реализует вывод значений переменныхА1,
А2,...,АК встроку экрана.Второй оператор реализует вывод
значений переменных А1,А2,...,АК и переход кначалуследующей
строки. Третийоператор реализует пропуск строки и переход к началу
следующей строки.
Переменные, составляющие список вывода, могут относиться к целому,
действительному, символьному или булевскому типам. В качестве элемен-
та списка вывода кроме имен переменных могут использоваться выражения
и строки.
Вывод каждогозначения в строку экрана происходит в соот-
ветствии с шириной поля вывода,определяемой конкретнойреализацией
Форма представления значений в поле вывода соответствует типупе-
ременных и выражений:величины целого типа выводятся как целые деся-
тичные числа,действительного типа - какдействительныедесятичные
числа с десятичным порядком,символьного типа и строки - в виде сим-
волов, логического типа - в виде логических констант TRUE и FALSE.
Оператор выводапозволяетзадатьширину поля вывода для каждого
элемента списка вывода.В этом случае
элемент списка вывода имеет вид А:К, где
А - выражение или строка,К - выражение либо константа целоготипа.
Если выводимое значение занимает в поле вывода меньше позиций, чем К,
то перед этим значением располагаются пробелы.Если выводимое значе-
ние не помещается в ширину поля К,то для этого значения будет отве-
дено необходимое количество позиций. Для величин действительного типа
элемент списка вывода может иметь вид А:К:М, где А - переменная или выраже-
ние действительного типа,К - ширина поля вывода,М-числоцифр
дробной частивыводимого значения.К и М - выражения или константы
целого типа.В этом случае действительные значения выводятся в форме
десятичного числа с фиксированной точкой.
Пример записи операторов вывода:
. . . . . . . . . . . .
var rA, rB: Real;iP,iQ:Integer;
bR, bS: Boolean;chT, chV, chU, chW: Char;
. . . . . . . . . . . .
WriteLn(rA, rB:10:2);
WriteLn(iP, iQ:8);
WriteLn(bR, bS:8);
Операторы размещаются в разделе операторов между ключевыми словами и отделяются друг от друга точкой с запятой. Операторы, не содержащие никаких других операторов, называются простыми:
Оператор присваивания – это самый основной оператор. В нем выражение с правой стороны и индет. результата разделены знаком присваивания:=
Например: 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);
Цель лабор а торной работы: научиться правильно описывать переменные, используя следующие стандартные типы данных:целочисленные. вещественные и логический; изучить операторы ввода-вывода данных, выработать практические навыки работы с системой PascalABC, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы.
Оператором называют специальную совокупность служебных слов, идентификаторов и специальных знаков, выполняющих определенные действия. Операторы отделяются друг от друга точкой с запятой «;».Примеры орераторов.
Оператор присваивания: (:=). Оператор присваивания служит для присваивания значений переменным, например: x:=1; a:=5. 02; b:= 32*a+Sin(x); S:= "Иван Иванович".
Составной оператор: Begin <операторы> End;
Составной оператор служит для записи в свое тело других операторов, последовательность которых рассматривается в данном случае как один оператор. Этим оператором начинается и заканчивается раздел выполнения основной программы, подпрограммы, функции. После последнего оператора END основной программы ставится точка.
Операторы ввода/вывода данных
Для выполнения операций ввода-вывода служат четыре оператора:
Read,ReadLn,Write,WriteLn. Оператор чтения (Read) обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой.
Формат: Read(X1, Х2, .. , Хn), где X1, Х2, .. , Хn–переменные допустимых типов данных.
Значения X1, Х2, .. , Хnнабираются минимум через один пробел на клавиатуре пользователем и высвечиваются на экране. Значения переменных должны вводиться в строгом соответствии с синтаксисом языка. Если в программе имеется несколько операторовRead, данные для них вводятся потоком, т. е. после считывания значений переменных для одного оператораReadданные для следующего оператораRead–набираются на той же строке, что и для предыдущего до окончания строки, затем происходит переход на следующую строку. Оператор чтенияReadLnаналогичен операторуRead, единственное отличие заключается в том, что после считывания последнего в списке значения для одного оператора ReadLn данные для следующего оператора ReadLn будут считываться с начала новой строки.
Оператор записи (Write) производит вывод данных.
Формат: Write(X1, Х2, .. , Хn), где X1, Х2, .. , Хn- выражения типаinteger,byte,real,char,Booleanи т.д.
Пример: Write(125); (выражение представлено значением)Write(А+В–С); {выводится результат выражения).
Оператор Writeдает возможность выводить значения переменных следующими способами.
Вывод десятичного представления величины Iначиная с позиции расположения курсора (I):
Вывод десятичного представления величины I в крайние правые позиции поля шириной р (I:р):
Где ַ– пробел.
3. Вывод десятичного представления величины Iв крайние правые позиции поля шириной р и дробной части числа ширинойq(I:р:q):
Оператор записи WriteLnаналогичен операторуWrite, но после вывода последнего в списке значения для текущего оператора WriteLn происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки.
При недостатке количества позиций для вывода число или текст выводятся полностью, а формат игнорируется, кроме формата вывода дробной части числа. Если формат вывода не задавать, то значения целых и строковых переменных выводятся полностью, а вещественных – с количеством цифр, соответствующих типу переменной, например,
a:=5.12345678912345678912345; Writeln("а=", a); выведет на экран надпись.
Как организован ввод-вывод данных с терминального устройства? Для начала (кто не знает), определим терминальное устройство. Терминальное устройство - это клавиатура, дисплей, т.е. то, с чем пользователь обычно работает. Какие существуют операторы ввода вывода Паскаль ?
Ввод данных Паскаль:
Как ввести данные в Паскале? Очень легко и просто! Ввод исходных данных в Паскале осуществляется процедурой readln:
readln(b1,b2,…,bk)
В этом примере процедура readln осуществляет чтение k значений исходных данных и присваивает эти значения переменным b1, b2,…, bk с переходом на новую строку (похожая процедура read отличается от readln отсутствием перехода на следующую строку). Когда мы вводим данные в Паскале, происходит своеобразное преобразование внешней формы во внутреннюю, которую определяет тип переменных.
Переменные, входящие в состав списка ввода, могут относиться к разным типам: целому, действительному, символьному. Однако чтение логических данных не допускается в Паскале. Исходные данные (т.е. их значения) отделяются друг от друга нажатием клавиши Enter и Tab, пробелами (при вводе данных недопустимо разделять числа запятыми).
Вывод данных Паскаль:
Теперь расскажем о выводе данных в Паскале. Чтобы вывести на экран результат работы вашей программы, обычно пользуются двумя процедурами:
write(b1,b2,…bk) — осуществляет вывод значений переменных b1, b2,…, bk в строку экрана.
writeln(b1,b2,…, bk) - производит как вывод данных на экран, так и переход к началу следующей строки.
Процедура writeln может использоваться без параметров, тогда просто производится пропуск исходной строки и переход к началу следующей. В списке вывода переменные могут иметь нескольких типов: целый, действительный, символьный или булевский. К элементам списка вывода относятся еще выражения и строки. Форма представления значений в поле вывода соответствует типу переменных и выражений:
- целочисленные величины выводятся как целые десятичные числа,
- величины действительного типа представляются как действительные десятичные числа с десятичным порядком,
- величины символьного типа и строки выводятся в виде символов,
- величины логического типа - в виде true и false (логические константы).
Оператор вывода создает возможность задать ширину поля вывода для каждого элемента списка вывода, которые будут иметь вид: А:К, где А - строка или выражение, К - выражение либо целочисленная константа. Возникают две ситуации при этом:
- В случае, когда выводимое значение занимает в поле вывода меньше позиций, чем К, перед ним устанавливаются пробелы.
- Когда же значение не помещается в рамках поля К, то этому значению отводится нужное количество позиций.
Элемент списка вывода для величин действительного типа может иметь вид: А:К:М, где А - выражение действительного типа или переменная, К - ширина поля вывода (выражение или константа), М - число цифр дробной части выводимого значения(выражение или константа). В данной ситуации действительные значения будут выведены как десятичное число с фиксированной точкой. Представим пример записи операторов вывода:
Дальнейшее рассмотрение операторов языков программирования высокого уровня будем вести на примере языка Паскаль. Данный выбор обусловлен простотой языка и строгим синтаксисом.
Операторы присваивания
В языке Паскаль оператор присваивания обозначается двумя символами «:=», между которыми не ставится пробел. В левой части данного оператора должна стоять переменная, а в правой части - выражение, значение которого будет присвоено переменной.
Очень часто в Паскале можно увидеть конструкцию вида p:=p+1. Данная запись не содержит ошибки. Внутри компьютера данный оператор выполняется следующим образом: сначала берется исходное значение переменной, к которому прибавляется единица. После этих действий результат вычислений помещается в переменную p. Таким образом в языке Паскаль реализуется инкремент переменной.
Очень важно следить, чтобы все переменные, которые участвуют в правой части оператора присваивания, были определены к моменту его исполнения. В качестве правых частей для вычисления численных переменных операторы присваивания используют арифметические выражения, состоящие из переменных, констант, знаков операций, скобок и вызовов функций. В общем случае правила построения выражений аналогичны математической записи. Бинарные операции, применимые к целочисленным данным приведены в таблице 1 .
Для примера реализации операции присваивания рассмотрим задачу вычисления гипотенузы треугольника по двум известным катетам. Согласно теореме Пифагора, гипотенуза будет рассчитываться по формуле:
Таблица 1 - Бинарные арифметические операции над типом integer
Исходный код программы:
Program Op_prisv;
c:=sqrt(a*a+b*b);
В данной программе использованы только операторы присваивания. При этом в двух случаях переменным просто присваивается начальное значение - это катеты треугольника. А в третьем случае происходит вычисление выражения, определяющего корень из суммы квадратов катетов.
В результате выполнения данного кода программа вычислит значение гипотенузы треугольника со сторонамиa, b, и занесет это значение в переменную c.
Операторы ввода-вывода
Ввод и вывод необходимы для связи программы с внешним миром - таким образом можно получать входные данные от пользователя и выводить полученные результаты на экран. Очевидно, программа без вывода не имеет смысла. В предыдущем примере было рассмотрено вычисление гипотенузы прямоугольного треугольника, однако, без использования оператора вывода нельзя узнать результат, полученный при исполнении программы.
В языке Паскаль операторы ввода-вывода правильнее называть процедурами. Они служат для обмена данными между программой и внешними устройствами. Так, например, можно ввести данные с клавиатуры, из файла, вывести данные на экран или в файл.
Для ввода с клавиатуры в языке Паскаль существует два оператора: Readи Readln. Для вывода на экран - Writeи Writeln. Дополнение «ln» произошло от английского слова «line» - строка, линия. Операторы, заканчивающиеся на «ln» в результате своих действий переводят курсор на новую строку. Так, например, при работе оператора Write курсор останется на следующей позиции после последнего выведенного символа. А в случае оператора Read очередные данные будут считываться из той же строки, где стоит курсор.
Традиционная запись данных операторов содержит параметры, однако, их может и не быть. В таком случае оператор Writeln будет реализовывать просто переход на новую строку, а оператор Readlnбудет ждать ввода любой клавиши.
Кроме стандартного вывода данных в языке Паскаль предусмотрен и форматированный вывод, который существует для того, чтобы сделать отображение на экране более понятным. Форматированный вывод содержит количество позиций, которые при выводе необходимо отвести под значение переменной .
В качестве примера использования операторов ввода-вывода модифицируем задачу определения гипотенузы прямоугольного треугольника следующим образом:
Program Op_vvod_vyvod;
write("Катет a = ");
write("Катет b = ");
c:=sqrt(a*a+b*b);
writeln("Гипотенуза = ",c:3:2);
writeln("Для завершения нажмите любую клавишу...");
В данной программе используются операторы ввода исходных данных - катетов прямоугольного треугольника. Для вывода результата на экран используется форматированный вывод. Результаты работы программы приведены на рисунке 9.
Рисунок 9 - Пример работы с операторами ввода-вывода
Кроме того, в программе используется оператор Readln без параметров, который подтверждает завершение программы. Так, после нажатия любой клавиши программа выдаст сообщение о том, что ее работа завершена (см. рисунок 10).
Рисунок 10 - Пример работы оператора ввода без параметров