Россия |
Прямой ввод-вывод: организация и функции. Вывод на дисплей. Часть 1
2.1.2.2. Язык Си
В языке Си существуют две функции вывода строки на консоль: cputs и cprintf [3, 41]. Рассмотрим их синтаксис и использование:
ФУНКЦИЯ: | CPUTS; |
СИНТАКСИС: |
int cputs( str ); char *str; |
ОПИСАНА В: | <conio.h> /* Используется только для описания функции */ |
НАЗНАЧЕНИЕ: | Функция cputs записывает строку (адрес которой задаётся параметром str ) вместе с символом конца строки на консольный терминал. При этом не выводится, но обрабатывается комбинация символов ( <CR>/<LF>, "возврат каретки"/"перевод строки" ). |
ВОЗВРАЩАЕТ: |
|
ФУНКЦИЯ | CPRINTF; |
СИНТАКСИС: |
int cprintf( format {, аргумент} ); char *format;
|
ОПРЕДЕЛЕНА В: | <conio.h> /* используется только для описания функции */ |
НАЗНАЧЕНИЕ: | Функция cprintf форматирует и выводит последовательность символов и значений, непосредственно на консольный терминал, используя для вывода символов функцию putch. Каждый аргумент преобразуется и выводится в том формате, который определён в строке: format. Синтаксис и семантику строки format смотри в Приложении app02001. В отличие от функций fprintf, printf, sprintf функция cprintf не переводит символ <LF> в последовательность символов: <CR><LF>. Поэтому каждая выводимая строка должна заканчиваться или начинаться с "\r\n". |
ВОЗВРАЩАЕТ: | Возвращается количество напечатанных символов. |
Теперь запишем функцию из примера 2.1 на языке Си:
Пример 2.4
/* Файл ex02004.c */ /* Данный файл тестировался в системе программирования Borland C/C++ 3.10 */ #include <conio.h> void main( void ) { char FIR_STR[] = "Это первая строка\r\n"; char SEC_STR[] = "а это вторая строка"; (void) cputs( FIR_STR ); (void) cputs( SEC_STR ); }
Примечание: перед вызовом функции cputs поставлен оператор принудительного приведения типа ( void ) для того, чтобы в процессе компиляции не возникло предупреждение о несоответствии типа возвращаемого значения.
2.1.2.3. Язык C--
ФУНКЦИЯ | WRITESTR |
Определена в: | "WRITE.H--"; |
Синтаксис: | WRITESTR( string ); |
Входные параметры: |
|
Возвращаемое значение: |
|
2.1.2.4. Язык Java
Вывод любой переменной на языке Ява осуществляется при помощи методов System.out.print и System.out.println, подробно описанных в пункте 2.1.1.3 и в [26]. Ниже приводится пример функции, иллюстрирующий работу метода println.
Пример 2.5.
/* Файл ex02005.java */ /* Пример тестировался на компиляторе Sun J2EE 1.4.2 и на виртуальной машине Java корпорации Microsoft */ public class ex02005 { public static void main( String [] args ) { String sFirst_str = "Это первая строка"; String sSec_str = "а это вторая строка"; System.out.println( sFirst_str ); System.out.println( sSec_str ); String junk; System.out.println( "Press key Enter to exit..." ); junk = SavitchIn.readline(); } }
В этом примере:
- Первая строка задаёт имя приложения;
- Третья строка определяет основную функцию;
- Пятая - шестая строка объявляет и назначает значения двум строковым переменным: sFirst_str и sSec_str ;
- Строки семь и восемь выводят значения этих переменных;
- Строки с 9 по 11 используются при создании паузы после выполнения программ. Для этого создаётся "пустая" переменная, выводится приглашение для завершения работы программы (с предложением нажать клавишу "Enter" ), а потом после ввода "пустой" строки в эту переменную (в данном случае - после нажатия клавиши "Enter" ) программа завершается.
- Обратите внимание, что при вводе используется модуль "SavitchIn", описание которого содержится в приложении к "Ввод с клавиатуры" .
2.1.2.5. Язык Python
Все "примитивные" типы данных на языке Питон, как и на языке Перл, представляются в виде "строковых данных". Для вывода строковых данных в языке Питон, как и в языке Перл, используется функция print [29]. Однако, в отличие от функции print на языке Perl, функция print на языке Python завершает вывод новой строки псевдосимволом "EOL".
В примере 2.6 представлен модуль языка Питон для реализации примера 2.4:
Пример 2.6.
# Файл ex02006.py # Файл тестировался в системе программирования # ActiveState Python 2.5 для Windows # Модуль для вывода двух строк def ex02006(): first_str = "Это первая строка" sec_str = "а это вторая строка" print first_str print sec_str # Конец модуля на Питоне
Автор отмечает следующие особенности этого примера:
- Определение процедуры и функции в модуле начинается с ключевого слова def ;
- Вместо открывающейся скобки блока используется окончание: ":" ;
- Блоки выделяются отступом. Окончание блока определяется отсутствием отступа у следующего за блоком оператора;
- Как и в языке Си, функция возвращает результат при помощи оператора: "return".
Для запуска функции ex02006 выполните следующие действия:
- Вызовите интерпретатор python;
- Введите команду: import ex02006 ;
- Введите команду: ex02006.ex02006() ;
2.1.2.6. Язык Prolog
На языке Пролог имеются две функции для вывода на экран (консоль) [19, 53]: функция write для вывода аргументов и функция writef для форматированного вывода аргументов. Обе функции позволяют вывести аргументы разных типов данных, но вторая функция позволяет задать дополнительные параметры для управления вводом значений аргументов. Описание этих функций смотри в "Буферизированный (потоковый) ввод-вывод" .
Пример 2.7.
/* Файл ex02007.pro */ /* Пример тестировался в системе программирования Turbo Prolog 2.0 для Windows */ /* Описание цели выполнения программы: */ goal write( "Это первая строка" ), nl, writef( "%s", "а это вторая строка"), nl, write( "Press any key to exit..." ), nl, readchar( _ ). /* Конец программы */
2.1.3. Чтение символа и его атрибута в данной позиции (справочный раздел)
Иногда необходимо прочитать символы и их атрибуты, уже выведенные на экран дисплея. И это вовсе не обязательно "шпионские страсти" - просто Вы не знаете, например, с какими атрибутами надо выводить новые символы на экран. Это можно сделать с помощью прерывания BIOS 10H [8]. Но вначале нужно установить текущую позицию курсора, с которой будет считан символ (функция 8 прерывания BIOS 10H, см. следующие лекции)
Пример 2.8.
MOV AH, 8 ; функция чтения символа/атрибутов MOV BH, 0 ; номер страницы - 0 INT 10H ; --- теперь в паре регистров AH:AL атрибуты и символ текущей позиции экрана
Для реализации чтения символа в указанной позиции курсора на языке Турбо Пролог необходимо воспользоваться всё той же функцией scr_char, синтаксис которой приведён в разделе 2.1.1.4. Для чтения атрибута символа можно использовать функцию scr_atr [53], синтаксис которой смотри ниже:
ФУНКЦИЯ: | SCR_ATR |
СИНТАКСИС: | scr_atr(Row,Column,Attr), где Row - строка экрана в формате целого числа, Column - столбец экрана в формате целого числа, а Attr - число целого типа, используемого в качестве значения выводимого на экран или считываемого с указанной позиции экрана атрибута символа; |
НАЗНАЧЕНИЕ: | Функция считывает или устанавливает атрибут символа в указанной позиции; |
ШАБЛОНЫ: | (i,i,i) (i,i,o) ; |
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех; |
ОШИБКИ: |
|
2.2. Режимы работы дисплея
В таблице 2.3 приведены режимы, с которыми может работать совместимый с MS-DOS VGA-дисплей. Отметим, что для нас особое значение имеют режимы: 0, 1, 2, 3, 7.