Новые книги

Книга широко известных авторов, разработчиков языка Си, переработанная и дополненная с учетом стандарта ANSI для языка Си, 2-е английское издание которой вышло в 1988 году, давно стала классикой для всех изучающих и/или использующих как Си, так и Си++. Русский перевод этой книги впервые был выпущен изд- вом "Финансы и статистика" в 1992 г. и с тех пор пользуется неизменным спросом читателей.

Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечания, размещенные автором на странице http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html.

Для программистов, преподавателей и студентов.

Издание подготовлено при участии издательства "Финансы и статистика"
Каждому человеку приятно заполучить что-нибудь «забесплатно». Сладкое слово «халява» ласкает слух, тешит иллюзиями, питает надеждами. Конечно, все мы знаем известную поговорку про бесплатный сыр в мышеловке, но это ничего не меняет: многочисленная армия любителей бесплатного в любом случае намного превышает количество тех, кто согласен приобрести то же самое за деньги. Собственно, в этом ничего плохого нет – так уж устроена человеческая природа: взять побольше, а отдать – поменьше.

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

10. Операторы ввода и вывода

10. Операторы ввода и вывода

   Рассмотрим организацию  ввода и вывода данных с терминального уст-

ройства. Терминальное устройство - это устройство, с которым работает

пользователь, обычно это экран (дисплей) и клавиатура.

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

и вывода Read и Write, оперирующие стандартными последовательными файлами

INPUT и OUTPUT.

   Эти файлы разбиваются на строки переменной длины,  отделяемые друг

от друга признаком конца строки.  Конец строки задается нажатием кла-

виши ENTER.

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

 

         Read(A1,A2,...AK);

         ReadLn(A1,A2,...AK);

         ReadLn;

 

   Первый из них реализует чтение К значений исходных данных и  прис-

ваивание этих значений переменным А1,  А2,  ...,  АК. Второй оператор

реализует чтение К значений исходных данных, пропуск остальных значе-

ний до начала следующей строки, присваивание считанных значений пере-

менным А1,  А2, ..., АК. Третий оператор реализует пропуск строки ис-

ходных данных.

   При вводе исходных данных  происходит  преобразование  из  внешней

формы представления во внутреннюю, определяемую типом переменных. Пе-

ременные, образующие  список ввода, могут принадлежать либо к целому,

либо к   действительному,  либо к символьному типам.  Чтение исходных

данных логического типа в языке ПАСКАЛЬ недопустимо.

   Операторы ввода  при чтении значений переменных целого и

действительного типа пропускает пробелы,  предшествующие числу.  В то

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

ниям символьных переменных,  так как пробелы  являются  равноправными

символами строк. Пример записи операторов ввода:

 

         var rV, rS: Real;

             iW, iJ: Integer;

             chC, chD: Char;

         ................

         Read(rV, rS, iW, iJ);

         Read(chC, chD);

 

   Значения исходных данных могут отделяться друг от друга  пробелами

и нажатием клавиш табуляции и Enter.

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

операторы:

 

         Write(A1,A2,...AK);

         WriteLn(A1,A2,...AK);

         WriteLn;

 

   Первый из этих операторов реализует вывод значений переменных  А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);

        WriteLn(chT, chV, chU, chW);