logo search
TurboProlog / Документация / TOM_1

Примеры форматного вывода

1. Следующая программа иллюстрирует действие различных форматных

спецификаторов при форматном выводе с помощью writef.

/* Program CH12EX05.PRO - Демонстрация writef*/

/* * * * * * * * * * * * * * * * * * * *

* writef похож на операторы форматной печати в других *

* языках программирования. writef принимает выводную *

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

* аргументы *

* *

* writef(FormatString,Arg1,Arg2,...) *

* *

* * * * * * * * * * * * * * * * * * * */

А = one,

B = 330.12,

C = 4.3333375,

D = "one two three",

writef ("A = '%-7'\nB = '%8.1e '\n",A,B),

writef ("A = '%'\nB = '%8.4e '\n",A,B),nl,

writef ("C = '%-7.7g'\nD = '%7.7 '\n",C,D),

writef ("C = '%-7.0f'\nD = '%0 '\n",C,D),

writef("char:%c,decimal:%d,hex:%x,unsigned:%u",97,'a',

33,-1).

После запуска эта пограмма создаст следующий вывод:

A = ' one '

B = ' 3.3E+02'

A = ' one '

B = '3.3012E+02'

D = 'One two'

C = '4 '

D = 'one two three'

char: a, decimal: 97, hex: 21, unsigned: 65535

2. Это другой пример, показывающий, как вы можете использовать

writef для форматного вывода.

/* Program CH12EX06.PRO-Опять демонстрация writef */

goal

person (N,A,I),

/* * * * * * * * * * * * * * * * * * * *

* *

* Name выровненое вправо, до 15 символов длиной *

* Age выровненое вправо, длиной 2 символа *

* Income выравненое вправо, 9 символов, 2 символа *

* после запятой, представление с фиксирован- *

* ной точкой *

* * * * * * * * * * * * * * * * * * * */

writyef("Name = %-15,Age=20,Income=$%9.2f\n",N,A,I).

Турбо Пролог может создать выводимую информацию, аналогичную следую-

щей:

Name = Pete Ashton , Age = 20, Income=$ 11111.11

Name = Marc Spiers , Age = 32, Income=$ 22222.22

Name = Kim Clark, Age = 28, Income=$ 33333.33

Чтение

Турбо Пролог включает в себя несколько стандартных предикатов для

чтения. Из них пять основных: readln (для чтения строк символов целиком);

readint, readreal и readchar (для чтения целых, вещественных и символьных

значений соответственно); и readterm (для чтения составных объектов). Все

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

Имеются некоторые другие, более специализированные предикаты, отно-

сящиеся к категории чтения: file4_sr (для чтения всего текстового файла в

строку), inkey ( для чтения символа с клавиатуры, если он нажат),

keypressed ( для определения была ли нажата клавиша на клавиатуре) и

unreadchar ( для возвращения символов в буфер клавиатуры). Эти специали-

зированные предикаты не дают не изменяют своего действия при переопреде-

лении ввода.