Для чего используется оператор вывода. Ввод и вывод данных в языке паскаль

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);

Структура программы

Структура программы на языке Turbo Pascal 7.0 содержит разделы:

Рассмотрим структуру программы на конкретном примере.

Создадим новый файл в окне редактора, программу «Hello, World!», которая содержит приветствие для пользователя:

Пример 1

program Hello_World;

var Name: string;

Write (‘Введите ваше имя: ‘);

WriteLn (‘Привет, ‘, Name, ‘!’);

В первой строчке программы содержится название - «Hello_World», служебный оператор program указывает на название программы, что не является обязательной конструкцией. Затем подключаем дополнительные модули, об этом говорит служебное слово uses. В приведенном листинге программы подключен модуль CRT, который выполняет функцию работы с экраном в текстовом режиме.

Затем в листинге используется служебный оператор begin, который указывает на начало тела программы.

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

  1. Происходит очищение экрана от прежней информации (ClrScr;).
  2. Затем выводится просьба пользователя о вводе имени (Write (‘Введите ваше имя: ‘);).
  3. Ожидается введение информации пользователем в переменную Name (ReadLn (Name);).
  4. Выводится на монитор приветствие (WriteLn (‘Привет, ‘, Name,’ !’);).
  5. Программа ожидает действий от пользователя по нажатию клавишы Enter, чтобы завершить программу (ReadLn;).

В последней строчке программы содержится оператор end с точкой в конце, что свидетельствует об окончании программы.

В листинге можно использовать и комментарии. Они относятся к невыполняемой части программы, которая не компилируется в машинные коды. Комментарии составляет программист, чтобы пояснить работу программы, её элементы, операторы и пр.

Комментарий можно оформить следующим образом:

  • в виде произвольного текста, ограниченного с обоих сторон фигурными скобками - {}, (иногда комментарий может содержать несколько строк);
  • в виде произвольного текста, идущего следом за двойным знаком «//» (в этом случае комментарий может содержать только одну строку).

Приведем несколько советов для начинающих программистов:

  1. Прежде чем приступить к написанию программы, четко определитесь с тем, что является исходными данными и какой результат нужно получить в ходе выполнения программы.
  2. Тип переменных необходимо выбирать, учитывая диапазон и требуемую точность представления данных.
  3. Давать имена переменным рекомендуется такие, чтобы они отражали их назначение.
  4. При использовании в программе ввода с клавиатуры вставляйте в код программы строку, содержащую приглашение, а выводимые результаты сопровождайте пояснением.
  5. До запуска программы рекомендуется подготовить тестовые примеры, которые будут содержать первоначальные данные и предполагаемые результаты. Проверить реакцию программы можно путем ввода некорректных исходных данных.
  6. При записи выражений необходимо обращать внимание на приоритет операций.

Операторы языка

Определение 1

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

Операторы работают в режиме автоматического последовательного выполнения в программе и отделяются друг от друга символом «;».

Операторы бывают:

  • простыми, т.е. не содержащими в себе других операторов;
  • составными, т.е. включающими в свой состав дополнительные операторы.

Оператор присваивания (:=)

С помощью него присваивается переменной новое значение. Формат:

Значение, которое присваивается, или выражение должны быть совместимы с типом переменной.

Пример 2

  • $X:=Pi; $
  • $Y:=Sqr(Z*Z+T*T)$;
  • $Bool:=(I>1)or(I

Операторы ввода данных

Данные операторы используются пользователем для ввода исходных данных в программу и имеют вид:

Read(x,y,z,...);

Readln(x,y,z,...);

где: x,y,z,... - имена переменных.

Приведенные операторы позволяют пользователю вводить значения с клавиатуры и присваивают их переменным x,y,z,....

Оператор Readln (x,y,z,...) отличается от Read(x,y,z,...) тем, что после ввода последней переменной курсор переводится в начало новой строки.

Замечание 1

Можно использовать оператор ввода без параметров: Readln, который ставится перед последним оператором end., чтобы остановить программу и показать пользователю её результат.

Операторы вывода данных

Для вывода данных на экран можно использовать следующие операторы:

  • Write (x,y,z,...);
  • Writeln (x,y,z,...);
  • Writeln.

Где: x,y,z,... - имена переменных, вводимых с клавиатуры.

С помощью оператора Write(x,y,z,...) выводятся на экран значения переменных x,y,z,... в одну строчку.

С помощью оператора Writeln (x,y,z,...) помимо вывода на экран значений x,y,z,... переводится курсор в начало новой строки после вывода последнего значения.

С помощью оператор Writeln осуществляется пропуск строки, содержащей курсор, к началу новой строки.

В операторах вывода можно указывать на ширину поля, которое отводится для записи значения в явном виде:

  • Write (y:m:n,x:k:l,...);
  • Writeln (y:m:n:,x:k:l,...).

m и k – это количество позиций, которые отводятся для записи целой части значения переменных y и x;

n и l – это количество позиций, которые отводятся для записи дробной части чисел y и x.

Например:

Пример 3

Write("Сумма = ",Sum); {вывод на экран текста «Сумма = », затем значения суммы, которое хранится в переменной Sum} Writeln("Введите ",I,"-й элемент: ").

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

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

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

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

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

Для ввода данных с клавиатуры в языке Паскаль используются процедуры 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);

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

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

Например: 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 , которые предназначены для чтения данных, как с клавиатуры, так и из файла. В данном разделе рассматривается ввод данных только с клавиатуры. Добавление к оператору READ символов LN обеспечивает автоматический переход курсора после ввода данных на новую строку.

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

READ (a1,a2,a3,...,an);

Здесь a1,a2,a3,...,an – переменные, которым последовательно присваиваются значения. Если в тексте программы встречается оператор READ , компьютер приостанавливает работу и ожидает ввода значений переменных с клавиатуры. Когда все значения переменных, перечисленных в операторе ввода, введены, процесс выполнения программы продолжается.

READLN;

который выполняет переход на новую строку при вводе данных.

При вводе данных с помощью оператора READ нужно иметь в виду следующие основные правила:

  • логические данные в Турбо Паскале вводить не разрешается;
  • при вводе числовых данных, числа разделяются пробелом или символом окончания ввода (клавиша ENTER). Ввод всегда заканчивается нажатием клавиши ввода – ENTER;
  • пробелы перед числом и между числами игнорируются, поэтому их можно ставить в любом количестве;
  • если переменная описана как Integer , ее значение вводится как целое число, т.е. не допускается использование точки после числа;
  • если переменная описана как вещественная (Real), а ее значение является целым числом, то можно вводить число как целое (т.е. без точки) и как вещественное число – с точкой. Преобразование целого числа к вещественному числу будет выполнено автоматически;
  • ввод символьных данных имеет особенности. Поскольку пробел является символом, как и любой другой символ языка Турбо Паскаль, то символьные данные необходимо вводить сплошной строкой;
  • одной символьной переменной можно присвоить значение только одного символа;
  • нажатие клавиши ENTER воспринимается как символ, поэтому для правильного ввода символьных данных рекомендуется перед каждым оператором ввода символьных данных ставить оператор перехода на новую строку READLN , чтобы их ввод осуществлялся с новой строки.

ЗАДАЧА. Ввод данных.

Program a4; Var a,b,c:integer; {Переменные целого типа} x,y,z:real; {Переменные вещественного типа} s1,s2,s3:char; {Переменные символьного типа} Begin Write(‘Введите а,b,с:’); Readln(a,b,c); {Ввод целых: при вводе недопустима точка, но допустимо любое количество пробелов. Нажатие Enter после ввода значения переменной с, закачивает работу оператора READLN.} Write(‘Введитеx,y,z:’); Readln(x,y,z); {Ввод вещественных чисел} Writeln(‘Введите s1,s2,s3:’); Readln(s1,s2,s3);{Ввод значений символьных переменных. Ввод должен производится сплошной строкой.} End.

Введем в программу следующие исходные данные:

x=44.4, y=47.5, z=76

s1=’A’,s2=’B’,s3=’C’

Обозначим символом пробел при вводе. При вводе числа будем разделять пробелом. Между числами допускается любое количество пробелов. Тогда экран монитора при вводе данных может выглядеть следующим образом:

Введите a, b, c:23 {между числами}

Введите x, y, z:44.447.576 {допускается любое количество пробелов}

Введите s1,s2,s3:A B C

Вывод данных

Для вывода данных из памяти компьютера на экран монитора предназначен оператор Write .

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

Write(a1,a2,a3,...,an);

Здесь a1,a2,a3,...,an могут быть либо переменными, либо строкой символов, заключенной в апострофы. Все элементы перечисляются через запятую. Добавление к оператору WRITE символов LN обеспечивает автоматический переход курсора после вывода данных на новую строку.

Допускается использование оператора ввода без параметров

WRITELN;

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

Параметрами оператора WRITE могут быть данные целого, вещественного, логического, символьного, а также типа string .

Расположение данных на экране монитора может быть задано параметрами оператора WRITE , тогда вывод называется выводом с форматами данных. Если в операторе WRITE форматы не используются, вывод называется бесформатным выводом или стандартной формой вывода.

Бесформатный вывод . Форма представления выводимых данных зависит от типа данных:

  • значения логического типа выводятся в виде логических значений TRUE и FALSE ;
  • значения символьных переменных выводятся в виде соответствующих символов;
  • символьная константа выводится в том виде, как она записана, но без апострофов;
  • значения величин целого типа выводятся как целые числа;
  • значения величин вещественного типа выводятся в формате с плавающей точкой.

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

ПРИМЕР. Рассмотрим фрагмент программы :

var m,n:integer; begin n:=1234; m:=7890; write(n,m); end.

Оператором write(n,m); на экран монитора выводятся целые числа: n=1234 и m=7890 . Поскольку используется вывод без форматов данных, результат будет иметь вид:

Два числа слились. Для того чтобы числа не сливались необходимо использовать разделяющие пробелы или разнесение информации по разным строкам.

write(n,’ ’,m);{между числами поставлен пробел}

Результат:

1234 7890

или

Результат:

1234

Форматный вывод . Для вывода вещественных чисел необходимо указать в операторе WRITE формат представления числа, который имеет вид:

WRITE(<переменная>:m:n);

где: m – целое число, указывающее общее количество позиций отводимое под значение переменной, включая позицию под знак числа, точку и количество цифр дробной части; n – целое число, определяющее количество цифр дробной части.

Выводимая информация выравнивается по левому краю. При этом подавляется печать ведущих нулей, т.е. если для вывода числа было выделено четыре позиции, то на экран монитора будет выведено, например, 6 , а не 0006 .

Пример. Выведем значение переменной A , равное 401.3 оператором write(A:8:2) . На экран монитора будет выведено:

401,30
8 позиций

Символом обозначен пробел.

Вывод вещественных чисел выполняется по следующим правилам:

  1. Если число имеет меньшую длину, чем m , то оно будет дополнено слева пробелами.
  2. Если число имеет большую длину, чем m , то параметр m игнорируется и число будет выведено полностью.
  3. Если дробная часть больше, чем параметр n , то число округляется. Округление не изменяет самого значения переменной, меняется только представление числа на мониторе.
  4. Если параметр n не указан, то ни дробная часть числа, ни десятичная точка не выводятся. Вывод осуществляется в формате с плавающей запятой.

В качестве примера рассмотрим печать вещественного числа в различных форматах.

program write; var x:real; begin x:=-12345.12345; writeln("Печать вещественного числа":50); writeln("Печать в фиксированном формате"); writeln(x:3:0); writeln(x:3:1); writeln(x:12:5); writeln(x:20:5); writeln; writeln("Печать в плавающем формате"); writeln(x); writeln(x:3); writeln(x:5); writeln(x:15); writeln(x:16); end.

Результат работы программы:

Печать вещественного числа

Печать в фиксированном формате

Печать в плавающем формате

1.2345123450E+04

1.234512345E+04

Для вывода целых чисел необходимо указать в операторе WRITE формат представления числа, который имеет вид:

WRITE(<переменная>:k);

где:

k – целое число, указывающее общее количество позиций, отводимое под значение переменной.

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



КАТЕГОРИИ

ПОПУЛЯРНЫЕ СТАТЬИ

© 2024 «tassr90.ru» — Полезные компьютерные советы