Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Форматы вывода данных

Обычный (бесформатный) вывод данных обладает тем недостатком, что данные, выводимые одним оператором WriteLn и перечисленные в скобках этого оператора через запятую, изображаются на экране подряд, без промежутков. Например, после выполнения фрагмента

c:='Ф'; s:='хорошо'; i:=18; WriteLn(c,s,i)

мы увидим в строке экрана

Ф

х

о

р

о

ш

о

1

8

Мы можем приказать Паскалю отводить под каждое данное столько позиций в строке, сколько нам нужно: WriteLn(c:3,s:8,i:4)

Вот что мы увидим в строке экрана:

Ф

х

о

р

о

ш

о

1

8

Здесь под cотведено поле в три позиции (с 1 по 3), начиная с левого края экрана. Подsотведено поле в 8 позиций (с 4 по 11). Подi отведено поле в 4 позиции (с 12 по 15). Информацией заполняется правая часть поля, а левая часть может остаться пустой.

Еще один недостаток бесформатного вывода: данные типа Real всегда изображаются в неудобочитаемом экспоненциальном виде. Например, после выполнения фрагмента

r:=465.28073; WriteLn(r)

мы увидим на экране

4

.

6

5

2

8

0

7

3

0

0

0

0

2

3

1

E

+

0

0

0

2

что означает 4.65280730000231 * 102или, что то же самое, 465.280730000231. Обратите внимание на откуда-то взявшиеся цифры 231. Их появление связано с неточностью представления вещественных чисел в компьютере.

Еще один пример: r:=0.000000308; WriteLn(r)

3

.

0

8

0

0

0

0

0

0

0

0

0

0

7

9

E

-

0

0

0

7

что означает 3.08000000000079 * 10-7или, что то же самое, 0.000000308000000000079 .

Еще пример: r:= -0.000003; WriteLn(r)

-

2

.

9

9

9

9

9

9

9

9

9

9

9

9

5

3

E

-

0

0

0

6

что означает -2.99999999999953 * 10-6или, что то же самое, -0.00000299999999999953, а это практически равно -0.000003.

Как избавиться от экспоненциального вида? Формат :9:3прикажет Паскалю изобразить число типа Real в привычном для нас виде, отведя под него 9 позиций в строке, из них 3 позиции под дробную часть числа. Пример:

r:=465.28073; WriteLn(r:9:3)

4

6

5

.

2

8

1

Обратите внимание, что дробная часть округлена, так как она целиком не умещается в отведенный формат.

Еще пример: r:=465.28073; WriteLn(r:10:0)

4

6

5

Еще пример: r:= -465.28073; WriteLn(r:10)

-

4

.

7

E

+

0

0

0

2

Это у нас получился вывод в "укороченном" экспоненциальном формате.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]