Опубликован: 15.11.2010 | Уровень: для всех | Доступ: платный
Лекция 7:

Буферизированный (потоковый) ввод-вывод. Часть II

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

7.1.6. Вывод средствами языка Turbo Prolog

Для вывода данных в стандартный поток вывода в языке Turbo Prolog используются следующие функции:

ФУНКЦИЯ: write
СИНТАКСИС: write( Variable|Constant* ), где Variable - "связанная" переменная любого типа, Constant - константа любого типа. Список выводимых переменных и констант может быть произвольной длины. Элементы списка разделяются запятыми;
НАЗНАЧЕНИЕ: Выводит данное количество аргументов;
ОПИСАНИЕ: Функция write записывает данные константы или переменные в текущее окно или на текущее устройство вывода. Функция write может быть связана с произвольным ненулевым числом аргументов. Аргументы в функции write не могут быть свободными переменными.
ШАБЛОНЫ: (i, i*);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Всегда успех (истина);
ОШИБКИ: * 2001 Не могу выполнить операцию записи.

ФУНКЦИЯ: nl
СИНТАКСИС: nl
НАЗНАЧЕНИЕ: Переводит вывод текста на экране на новую строку;
ШАБЛОНЫ: Нет;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Всегда успех;
ОШИБКИ: Нет;

ФУНКЦИЯ: writef
СИНТАКСИС: writef( FormatString, Variable|Constant* ), где
  • FormatString - строковая переменная, указывающая на формат чисел выводимых данных,
  • Variable и Constant - те же аргументы, что и для функции write ;
НАЗНАЧЕНИЕ: Выводит список аргументов функций, форматы которых записаны в строке форматов;
ОПИСАНИЕ: Функция writef выполняет форматированный вывод. Аргументы Арг1 - АргN могут быть константами или переменными, которые относятся к стандартным доменам. Формат строки содержит обычные символы, которые печатаются без модификации, и формат спецификаций формы %-m.pf
ШАБЛОНЫ: (i, i, i*);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Всегда успех (истина);
ОШИБКИ: * 1025 Слишком много аргументов в формате строки.

Назначение символов в формате спецификации смотри в Приложении №2 к "Буферизированный (потоковый) ввод-вывод" данного курса.

Ниже рассмотрен пример программы на языке Turbo Prolog, реализующей алгоритм из примера 7.2.

Пример 7.7.

/* Файл EX07007.PRO */
/* Пример тестировался в системе программировани
   Borland Turbo Prolog 2.0. */
/* Данная функция запрашивает имя и возраст пользовател
   и выводит приветствие  */
domains
/* Описываем переменные */
	Age = integer
	Name = string
predicates
	output_age( Age )
clauses
/* Определяем правило output_age */
	output_age( Age ) :- Age < 40, write( "Молодой человек!" ), !.
	output_age( Age ) :- write( "Папаша!" ).
goal
/* Описываем алгоритм работы программы */
	write( "Введите Ваше имя: " ), readln( Name ),
	write( "Введите Ваш возраст: " ), readint( Age ),
	write( "Добрый день, "), output_age( Age ), nl,
	writef( "Ваш возраст, %s, -- %3d лет", Name, Age ),nl,
	write( "Press key Enter to exit..." ), readchar( _ ).
Листинг 7.7. Реализация алгоритма из примера 7.2.

7.1.7. Вывод средствами языка VBScript

Вывод в стандартный поток вывода и стандартный поток ошибок осуществляется на языке Visual Basic Script только при выполнении макроса в оболочке CScript.

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

ФУНКЦИЯ WRITE
ОПРЕДЕЛЕНА В: WScript;
СИНТАКСИС: WScript.Std[Out|Err].Write( String ), где String - выводимая на экран строка текста;
НАЗНАЧЕНИЕ: Выводит строку символов на экран;
ОПИСАНИЕ: Записывает в поток StdOut или StdErr строку string (без символа конца строки);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;
ПЕРЕНОСИМОСТЬ: Только сценарии CScript;

ФУНКЦИЯ WRITEBLANKLINES
ОПРЕДЕЛЕНА В: WScript;
СИНТАКСИС: WScript.Std[Out|Err].WriteBlankLines(n), где n - число пропущенных (пустых) строк;
НАЗНАЧЕНИЕ: Печать пустых строк на экране;
ОПИСАНИЕ: Записывает в поток StdOut или StdErr заданное параметром n число пустых строк;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;
ПЕРЕНОСИМОСТЬ: Только сценарии CScript;

ФУНКЦИЯ WRITELINE
ОПРЕДЕЛЕНА В: WScript;
СИНТАКСИС: WScript.Std[Out|Err].WriteLine( String ), где String - выводимая на экран строка текста;
НАЗНАЧЕНИЕ: Выводит строку символов на экран;
ОПИСАНИЕ: Записывает в поток StdOut или StdErr строку string (вместе с символом конца строки)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;
ПЕРЕНОСИМОСТЬ: Только сценарии CScript;

ФУНКЦИЯ ECHO
ОПРЕДЕЛЕНА В: WScript;
СИНТАКСИС: WScript.Echo String[, String], где String - Выводимая (-ые) строка текста или переменные;
НАЗНАЧЕНИЕ: Вывод строки текста;
ОПИСАНИЕ: Функция выводит строки символов, одну или нескольких переменных в поток вывода StdOut или диалоговое окно. При этом производится приведение типов;
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет;
ПЕРЕНОСИМОСТЬ: Все сценарии;

КОНСТАНТА vbCrLf
ОПРЕДЕЛЕНА В: WScript;
СИНТАКСИС: & vbCrLf [& …]
НАЗНАЧЕНИЕ: Вставляет в текущую строку Visual Basic Script псевдосимвол "EOL" (<CR>/<LF>) ;
ПЕРЕНОСИМОСТЬ: Все сценарии, только при выводе строк и переменных;

Замечание: запись Std[Out|Err] означает "или StdOut, или StdErr", то есть функция перенаправляет вывод или в стандартный поток вывода, или в поток ошибок (смотри таблицу 6.1 в предыдущей лекции).

Пример 7.8.

'*****************************************************************
'* Имя: ex07008.vbs
'* Язык: VBScript Microsoft Windows XP
'* Описание: Организация простого диалога с проверкой услови
'*****************************************************************
Dim Name, Age, junk
' Выводим диалоги
WScript.StdOut.Write( "Введите Ваше имя: " )
Name = WScript.StdIn.ReadLine
WScript.StdOut.Write( "Введите Ваш возраст: " )
Age = WScript.StdIn.ReadLine
' Проверка условий и вывод приветстви
If Age < 40 Then
	WScript.StdOut.WriteLine( "Добрый день, Молодой человек!" )
Else
	WScript.StdOut.WriteLine( "Добрый день, Папаша!" )
End if
WScript.StdOut.WriteLine( "Ваш возраст, " & Name & " - " & Age & " лет" &vbCrLf  )
' Выход из программы
Wscript.Echo "Press key Enter to exit..."
junk = WScript.StdIn.ReadLine()
' Конец программы
Листинг 7.8. Реализация алгоритма из примера 7.2.
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Artem Bardakov
Artem Bardakov
Россия
Андрей Алабин
Андрей Алабин
Россия