русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

П Р О Ц Е Д У Р Ы В В О Д А - В Ы В О Д А


Дата добавления: 2014-11-27; просмотров: 540; Нарушение авторских прав


 

Для ввода-вывода данных в Паскаль-программе применяются предописанные процедуры ввода-вывода Read, Readln, Write, Writeln (Readln - сокращение слов Read Line - читать с новой строки; Write Line - записать строку). Каждая из этих процедур представляет собой некоторую подпрограмму, которая активизируется оператором процедуры. Процедуры ввода-вывода часто называют просто операторами ввода-вывода.

Мы будем рассматривать только ввод с клавиатуры и вывод на экран дисплея. Процедуры ввода-вывода для произвольных файлов будут рассмотрены позже.

 

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

Структура обращения к процедуре ввода:

Read( список-ввода ),

где список-ввода - это имена переменных, разделенные между собой запятыми.

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

 

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

 

Пусть в буфер ввода набраны следующие данные:

15.8 -4 73.7 12.9

и после этого нажата клавиша Enter.

Тогда процедура Read(a,b,c,d), где a, b, c, d - переменные типа real, прочтет четыре числа из буфера ввода и присвоит их значения этим переменным.



Написанная выше процедура ввода эквивалентна следующим:

Read(a); Read(b); Read(c); Read(d).

При отработке процедуры Read каждое введенное значение удаляется из буфера.

 

Предположим, что в буфере ввода после нажатия клавиши Enter содержатся числа

15.8 -4 73.7

 

Поскольку процедура Read(a,b,c,d) эквивалентна четырем процедурам

Read(a); Read(b); Read(c); Read(d),

то будут выполнены только первые три из них. Программа снова приостанавливает свою работу в ожидании нового заполнения буфера ввода и нажатия клавиши Enter.

 

Пусть в аналогичной ситуации буфер ввода имеет вид:

15.8 -4 73.7 12.9 -16 65.87

Тогда из буфера будут введены первые 4 числа и программа продолжит свою работу. Если дальше в программе будут встречаться процедуры Read, то оставшиеся в буфере два числа будут введены этими процедурами.

 

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

 

       
   

 

 


Буфер ввода

 

.   -   .   .   -   .

               
       

 


Каждое из полей a, b, c, d имеет размер 6 байтов ( a,b,c,d : real). При передаче процедурой Read значения переменной из буфера ввода в поле памяти производится преобразование формы ее представления (из литерного формата, в котором каждый символ занимает один байт, в формат real).

 

Процедура Readln отличается от Read тем, что после ее выполнения производится переход на новое содержимое буфера ввода. При этом текущее содержимое буфера стирается.

Пусть буфер ввода имеет вид:

15.8 -4 73.7 12.9 -16 65.87

При выполнении процедур

Readln(a,b); Readln(c,d);

из буфера будут введены первые два числа, после чего работа программы приостанавливается в ожидании нового заполнения буфера.

Процедура Readln без параметров производит только сброс буфера ввода и переход к его новому содержимому. В частности, Readln(a,b,c,d) эквивалентна следующим процедурам:

Read(a); Read(b); Read(c); Read(d); Readln.

 

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

Элементами списка вывода, в отличие от списка ввода, являются выражения. Частным случаем выражения являются константа, имя переменной, функция. В свою очередь частным случаем константы является текстовая константа, т.е. последовательность символов, заключенная в апострофы.

Пусть заданы две процедуры:

Write(' Переменная x '); Write(' Переменная y');

При их выполнении на экране будет отпечатано:

Переменная x Переменная y

Для процедур

Writeln(' Переменная x'); Writeln(' Переменная y');

получим:

Переменная x

Переменная y

 

Пример вывода выражений:

Write(a+b,' ',5,' ',2*sin(x)-1).

 

Выводом можно управлять с помощью форматов. Элемент списка вывода может быть записан в форме

v

или v:w

или v:w:d .

Здесь v - выражение, w и d - форматы.

Если указано только выражение v, то количество позиций в строке экрана, отводимое для печати значения v, зависит от типа этого значения.

Для целых переменных отводится столько позиций, сколько цифр содержит значение переменной. Для знака "-" отводится одна позиция перед первой цифрой числа. Для знака "+" никакой позиции не отводится.

 

Пример 1.

Vari : integer;

l : longint;

Begin

i:=555; l:=123456789;

Write('i=',i); Writeln(' l=',l);

i:=-555; l:=-123456789;

Write('i=',i); Writeln(' l=',l);

 

Будет отпечатано:

i=555 l=123456789

i=-555 l=-123456789

 

Для вещественного значения отводится 17 позиций. Число печатается в виде мантиссы и порядка. Длина мантиссы - 11 цифр, из них одна цифра целой части числа.

 

Пример 2.

Var R : real;

Begin

R:=555; Write('R=',R);

R:=-555; Writeln(' R=',R);

 

Будет отпечатано:

R= 5.5500000000E+02 R=-5.5500000000E+02

Здесь E -признак десятичного порядка.

 

Формат w указывает ширину поля (количество позиций, отводимых для изображения значения v).

Пусть n - количество цифр целой переменной, включая знак "-", если он имеется.

Если w > n, то значение v печатается в правой части поля w; если w < n, то для печати значения v отводится n позиций (отсекание "лишних" цифр не производится).

 

Пример 3.

Vari : integer;

l : longint;

Begin

i:=5555; l:=5555;

Write('i=',i:8); Writeln(' l=',l:2);

i:=-5555; l:=-5555;

Write('i=',i:8); Writeln(' l=',l:2);

 

Будет отпечатано:

i= 5555 l=5555

i= -5555 l=-5555

 

Если для вещественной переменной задано значение w > 17, то слева от переменной печатается соответствующее количество пробелов; если w < 17, то соответственно уменьшается количество цифр мантиссы. Минимальное количество цифр мантиссы равно 2, в этом случае значение w < 8 воспринимается как w = 8. Значение мантиссы при печати округляется по последней печатаемой цифре.

 

Пример 4.

VarR : real;

Begin

R:=555;

Write('R=',R:20); Writeln(' R=',R:17);

Write('R=',R:12); Writeln(' R=',R:8);

Writeln('R=',R:5);

 

Будет отпечатано:

R= 5.5500000000E+02 R= 5.5500000000E+02

R= 5.55000E+02 R= 5.6E+02

R= 5.6E+02

 

Формат d применяется только для вещественных значений и означает, что число должно печататься в виде целой и дробной частей, разделенных точкой; при этом значение d указывает, сколько позиций из общего количества w должно быть отведено для печати дробной части числа. Если d = 0, то печатается только целая часть без разделяющей точки. Если поля w недостаточно для печати всех цифр числа, то к значению w добавляется необходимое количество позиций.

 

Пример 5.

VarR : real;

Begin

R:=123.456789;

Write('R=',R:12:5); Writeln(' R=',R:8:5);

Write('R=',R:8:1); Writeln(' R=',R:8:0);

Writeln('R=',R:8:10);

R:=-123.456789;

Write('R=',R:12:5); Writeln(' R=',R:8:5);

Write('R=',R:8:1); Writeln(' R=',R:8:0);

Writeln('R=',R:8:10);

 

Будет отпечатано:

R= 123.45679 R=123.45679

R= 123.5 R= 123

R=123.4567890000

R= -123.45679 R=-123.45679

R= -123.5 R= -123

R=-123.4567890000

 

Если w < 0, то значения числовых переменных, а также переменных типов char, string и boolean записываются в левые позиции поля w. При этом, вне зависимости от значения w, для переменной отводится лишь столько позиций, сколько символов содержит ее значение. Если вещественная переменная записывается в виде мантиссы и порядка, то мантисса округляется до двух цифр.

 

Пример 6.

Var k : integer;

R : real;

b : boolean;

Begin

k:=125; r:=-32.63; b:=true;

Writeln(k:10,’ 1’);

Writeln(k:-10,’ 1’);

Writeln(k:-1,’ 1’);

Writeln(r:18:4,’ 1’);

Writeln(r:-18:4,’ 1’);

Writeln(r:-1:4,’ 1’);

Writeln(r:28,’ 1’);

Writeln(r:-0,’ 1’);

Writeln(‘0123456789’:20,’ 1’);

Writeln(‘0123456789’:-20,’ 1’);

Writeln(b:20,’ 1’);

Writeln(b:-1,’ 1’);

 

Будет напечатано:

125 1

125 1

125 1

-32.6300 1

-32.6300 1

-32.6300 1

-3.2630000000E+01 1

-3.3E+01 1

0123456789 1

0123456789 1

TRUE 1

TRUE 1

 

Примечание. В список ввода могут входить лишь вещественные и целочисленные переменные, а также переменные типа char и string. Следовательно, переменные других типов (массивы, множества и др.) не могут быть непосредственно введены процедурой Read. Косвенная методика ввода таких переменных рассматривается дальше в соответствующих разделах.

В список вывода, кроме типов, перечисленных в списке ввода, могут входить также переменные типа boolean.

 

 



<== предыдущая лекция | следующая лекция ==>
У С Л О В Н Ы Й О П Е Р А Т О Р | О П Е Р А Т О Р П Е Р Е Х О Д А


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.193 сек.