Начальные сведения о вводе-выводе данных. — КиберПедия 

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Начальные сведения о вводе-выводе данных.

2021-04-18 90
Начальные сведения о вводе-выводе данных. 0.00 из 5.00 0 оценок
Заказать работу

 

Ввод данных.

 

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

Константы приобретают свои значения в программе и не меняют их в ходе ее работы. А значения переменным либо придаются оператором присваивания, либо поставляются (вводятся) из внешней среды. Под внешней средой понимается источник во внешней памяти (например, жесткий магнитный диск) или внешнее логическое устройство (например, клавиатура), предназначенное в данном случае для ввода данных.

Для ввода данных с клавиатуры используется специальная стандартная процедура READ. Ее простейшая форма записи следующая:

 

             READ (< список имен переменных через запятую >);

 

В диалоговом режиме (т.е. «от руки», пользователем, в ходе общения с программой) она обеспечивает ввод (чтение) из системного стандартного файла INPUT некоторой последовательности значений, начиная с первой позиции строки ввода, и присваивание этих значений переменным, указанным в списке имен.

Именно файл INPUT связан либо с консольным устройством (клавиатурой), либо с терминалом (дисплеем).

Каждый вводимый символ (цифра, буква или специальный знак) по мере набора на клавиатуре отображается на экране. Параллельно, перед размещением в оперативной памяти он помещается в специальный буфер (промежуточную память). Длина этого буфера ограничена и составляет 128 символов. Заполнение буфера осуществляется до нажатия на клавишу «ENTER». После нажатия этой клавиши:

- вводимые данные помещаются в оперативную память, отводимую для той или иной переменной из списка;

- курсор устанавливается в начало следующей строки;

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

Использование буфера позволяет редактировать (исправлять) вводимую информацию до момента нажатия «ENTER».

         

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

 

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

Присвоение значений ведется слева направо в соответствии с порядком следования переменных в процедуре READ. Типы переменных и констант должны совпадать. Переменным типа REAL можно присваивать значения типа INTEGER.

Распознавание арифметического значения осуществляется от пробела(ов) до пробела(ов).

Пример:

            VAR I,J: INTEGER;

                      A,B,C: REAL;

                          D: BYTE;

                       …

                       READ(I,A,B); READ(C,D,J);

При вводе:

                    -25 3.28Е2 34.08 9 024 1754

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

       I=-25 A= 328.0 B=34.08  C=9.0 D=24  J=1754

 

Укажем особенности работы процедуры READ:

- значение числа выделяется от первого символа, отличного от пробела, и до следующего пробела; ведущие (перед числом) пробелы игнорируются;

- выделенное значение проверяется на соответствие формату правильной арифметической константы;

- полученное значение преобразуется в формат хранения числа и затем присваивается переменной.

 

При вводе значений символьного и строкового типов апострофы не указываются. Любой символ или их последовательность будут введены так, как они набраны на клавиатуре. Разделителей нет (!).

Пример:

                VAR OBL: CHAR;

                        POLE: STRING[7];

                             VT: LONGINT;

                        …

                        READ(POLE,OBL,VT);

Тогда при вводе с первой позиции: 

ТЕЛЕФОН-2223344       

                                       получим: POLE= `ТЕЛЕФОН`,

                                                            OBL=`-`           

                                                               VT=2223344

 

   Однако, если ввести:

Т Е Л Е Ф О Н - 222-33-44

возникнет ситуация «несовпадение типов» из-за восприятия пробелов как значимых символов и, соответственно, неправильного присвоения значений переменным.

Чтобы избежать подобных ситуаций, рекомендуется использовать 2 самостоятельные разновидности процедуры READ:

 

А) для ввода символов (тип CHAR):

 

               READ (KBD, < имя символьной переменной >);

 

Здесь KBD – имя логического устройства, соответствующего клавиатуре (K ey B oar D). Когда указывается это имя, ввод с клавиатуры ведется только одного символа без его отображения на экране дисплея.

Б) для ввода строки (тип STRING):

    

               READ (< имя строковой переменной >);

 

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

 

Примечания:

1. во внутреннем представлении строка ввода хранится с 

    добавлением в ее конец специального символа (Ctrl-Z),

    обозначающего завершение строки ввода и, одновременно,

    маркер конца всей последовательности данных (файла). Поэтому,

    если количество значений в строке ввода меньше числа

    переменных в списке процедуры READ, то все лишние

    переменные:

              - для типа CHAR получают значение управляющего 

                символа Ctrl-Z;

              - для типа STRING – становятся пустыми;

              - для целых и вещественных типов остаются неизменными.

2. Хотя длина вводимой строки по умолчанию ограничена 127

    символами, эту граничную величину можно уменьшить с

    помощью стандартной переменной BUFLEN. Она определяет

    длину буфера в диапазоне от 0 до 127 байтов и распространяется

    только на одну, следующую за ней процедуру READ:

                      …

               BUFLEN:=30;

               READ(NAIM_E); => буфер ввода уменьшится до 30 

                                                       символов. Но после этого опять

                                                       станет равным 127.

 

Еще одним примечательным вариантом процедуры ввода является READLN:

                          

                    READLN [(< список имен переменных через запятую >)];

 

Она осуществляет присвоение значений из строки ввода переменным из списка, а затем (!) вызывает переход к следующей строке. При этом оставшиеся значения на текущей строке ввода пропускаются.

Если список имен переменных отсутствует, то очередная строка ввода пропускается.

 

Для типа BOOLEN значениями ввода могут быть только TRUE и FALSE.

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

 

Вывод данных.

 

Для вывода результатов работы программы в стандартный файл OUTPUT (на экран дисплея) используются две процедуры:

 

                         WRITE (< список выражений через запятую >);

                    WRITELN [(< список выражений через запятую >)];

 

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

Процедура WRITE обеспечивает вывод значений выражений из списка на текущую строку до ее заполнения.

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

 

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

     - символы и строки выводятся без изменений;

     - логические значения выводятся только словами TRUE или

        FALSE;

     - числа целого типа выводятся с выделением позиций для всех

        разрядов «плюс» один разряд для знака числа (но явно

        выводится только «минус»); 

     - числа вещественного типа выводятся в формате числа с

        плавающей точкой (в экспоненциальной форме с мантиссой и

        порядком).

 

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

                                   WRITE (< выражение >: P [: d ]);

 

В общем случае формат задает ширину поля (P), выделяемого для вывода значения. Он может быть выражением только целого типа и указывается после имени выводимого выражения (например, переменной) через двоеточие. Возможно также явное указание в формате количества знаков после точки (d). Причем (!) d включено в P.

Например

              WRITE(POLE:24,KOL_VO:5,SUM:10:2);

 

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

 

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

- если формат не указан, то вывод осуществляется в поле шириной 18 символов в экспоненциальной форме, т.е. в форме числа с плавающей точкой (с мантиссой и порядком);

- если формат задан только шириной поля P, то значение выражения выводится также в экспоненциальной форме с выравниванием по правой границе поля. Т.к. после десятичной точки выводится, по крайней мере, одна цифра, то минимальная ширина поля для REAL равна 7, а для отрицательного значения – 8 (с разрядом для «минуса»);

- если формат включает P и d, то вывод значений осуществляется в форме числа с фиксированной точкой с d десятичными знаками в дробной части и с выравниванием по правому краю поля из С знаков. При этом d должно быть в диапазоне от 0 до 24. Иначе вывод будет в форме с плавающей точкой.


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

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

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.042 с.