| Россия |
Прямой ввод-вывод: организация и функции. Вывод на дисплей. Часть 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.