Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора по яп 2.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
204 Кб
Скачать
☆

11. Использование модификаторов при декларации типов данных.

Ключевые слова int, float, char и т.д. называют конечными атрибутами декларации объектов программы. При декларации так называемых производных объектов используют еще дополнительные – промежуточные атрибуты или, как их иногда называют, «модификаторы».

К символам модификации текущего типа относятся:

– символ * перед идентификатором, обозначающий декларацию указателя на объект исходного типа (левый промежуточный атрибут);

– символы [ ] после идентификатора объекта – декларация массива объектов;

– символы ( ) после идентификатора объекта – декларация функции (правые промежуточные атрибуты).

Допускается использование более одного модификатора типа с учетом следующих правил:

1) чем ближе модификатор к ID объекта, тем выше его приоритет;

2) при одинаковом расстоянии от идентификатора объекта модифи­ка­торы [ ] и ( ) обладают приоритетом перед атрибутом звездочка *;

3) дополнительные круглые скобки позволяют изменить приоритет объединяемых ими элементов описания;

4) квадратные и круглые скобки, имеющие одинаковый приоритет, рассматриваются слева направо.

Конечный атрибут декларации принимается во внимание в последнюю очередь, т.е. тогда, когда все промежуточные атрибуты уже проинтерпре­ти­рованы.

Примеры декларации объектов с конечным атрибутом int:

int a; – переменная типа int;

int a[5]; – массив из пяти элементов типа int;

int *a; – указатель на объект типа int;

int **a; – указатель на указатель на объект типа int;

int *a[5]; – массив из пяти указателей на элементы типа int;

int (*a)[10]; – указатель на массив из десяти элементов типа int;

int *a[3][4]; – 3-элементный массив указателей на одномерные целочисленные массивы по четыре элемента каждый;

int a[5][2]; – двухмерный массив элементов типа int;

int a(void); – функция без параметров, возвращающая значение типа int;

int *a(void); – функция без параметров, возвращающая указатель на элемент типа int;

int (*a)(void); – указатель на функцию без параметров, возвраща­ю­щую значение типа int;

int *a(void)[6]; – функция без параметров, возвращающая указатель на массив элементов типа int;

int *a [4](void); – массив указателей на функцию без параметров, возвращающую значение типа int.

Существуют и недопустимые последовательности промежуточных атрибутов, например, массив не может состоять из функций, а функция не может возвращать массив или другую функцию.

12. Кодовая таблица ascii. Системы счисления. Классификация и преобразование символов. Классификация и преобразование символов

Внутреннее представление символов в ПЭВМ осуществляется на основе определенной системы кодирования, которая может быть задана в виде кодовой таблицы. Такая истема устанавливает соответствие между изображениями или условными обозначениями символов и их внутренними числовыми кодами, которые обычно представляют в десятичной, восьмеричной или шестнадцатеричной форме. Персональные компьютеры для внутреннего представления символов используют байт, следовательно, имеется возможность представить 256 символов.

Кодовая таблица ASCII

Коды 0 – 31 закреплены за управляющими (непечатаемыми символами). Управляющие символы вызывают определенные действия в машине, например, звуковой сигнал – код 710, возврат курсора на один шаг – код 810, горизонтальная табуляция – код 910, перевод курсора на новую строку – код 1010.

Коды 33 – 127 соответствует символам цифр, прописных и строчных букв английского алфавита, символам-разделителям.

ASCII- таблица для кодов символов 0 – 127 называется основной таблицей.

Стандарт ASCII не регламентирует закрепление кодов от 128 до 255, образующих так называемую расширенную ASCII-таблицу.

Для русскоговорящих ПК коды от 128 до 255 используются для представления прописных и строчных букв русского алфавита и символов псевдографики – символов, используемых для вычерчивания таблиц и несложных «прямоугольных» рисунков. Существует несколько вариантов для вычерчивания расширенной ASCII-таблицы для русских букв: старая (Old), новая (New) и альтернативная (Alt). Они отличаются кодировкой только в расширенной части таблицы.

=================================================

Например, символ с кодом 4910 = 3116 =1

символ с кодом 3210 = 2016 – это пробел

Функция bioskey()

Назначение Интерфейс клавиатуры.

Синтаксис int bioskey (int cmd)

Прототип в bios.h

Эта функция выполняет различные операции с клавиатурой, используя при этом прерывание 0х16 BIOS. Параметр cmd полностью определяет операцию.

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

cmd

Действия, выполняемые функцией

0

вернуть код клавиши, нажатой на клавиатуре.

Если младшие восемь разрядов содержат ненулевое значение ,значит, введен ASCII-символ

Если младшие восемь битов содержат нулевое значение, введен символ из расширенной кодировки.

1

проверить, есть ли символ в буфере ввода (можем немедленно считать символ).

Если нет, то возвращается ноль.

Если есть готовый символ для ввода, возвращается его код, однако этот символ не изымается из буфера и будет считан при следующем обращении к функции с параметром cmd=0.

2

опросить текущее состояние клавиш-модификаторов (нажаты или нет)

0 0x01 Нажата правая клавиша Shift

1 0x02 Нажата левая клавиша Shift

2 0x04 Нажата клавиша Ctrl

3 0x08 Нажата клавиша Alt

4 0x10 Установлен режим Scroll Lock (используется прикладными программами)

5 0x20 Установлен режим NumLock (клавиши калькуляторного поля используются как цифры)

6 0x40 Установлен режим Caps (прописные буквы)

7 0x80 Установлен режим Insert (вставка)

8 0x0100 Нажата левая клавиша Ctrl

9 0x0200 Нажата левая клавиша Alt

10 0x0400 Нажата правая клавиша Ctrl

11 0x0800 Нажата правая клавиша Alt

12 0x1000 Нажата клавиша Scroll Lock

13 0x2000 Нажата клавиша Num Lock

14 0x4000 Нажата клавиша Caps Lock

15 0x8000 Нажата клавиша Sys Req