- •Поясніть взаємозв’язок між данними типу «массив» і змінною типу «показчик»:
- •Формат записів для одержання стану перемикаючих клавіш за допомогою функції 02h преривання int16h:
- •Сегментные регистры:
- •8.1. Включение в проект новой формы.
- •8.2. Просмотр форм и модулей без включения их в проект.
- •8.3. Размещение компонентов на форме.
Билет №9:
Поясніть призначення і застосування макросів у программах С++:
Поясніть взаємозв’язок між данними типу «массив» і змінною типу «показчик»:
Массивы и указатели в С++ тесно связаны и могут быть использованы почти эквивалентно. Имя массива можно понимать как константный указатель на первый элемент массива. Его отличие от обычного указателя только в том, что его нельзя модифицировать. Указатели можно использовать для выполнения любой операции, включая индексирование массива. Пусть вы сделали следующее объявление:
int b[5] = {1,2,3,4,5}, *Pt;
Тем самым вы объявили массив целых чисел b[5] и указатель на целое Pt. Поскольку имя массива является указателем на первый элемент массива, вы можете задать указателю Pt адрес первого элемента массива b с помощью оператора
Pt = b;
Это эквивалентно присваиванию адреса первого элемента массива следующим образом
Pt = &b[0];
Таким образом манипуляции, определенные для массивов, определены и для указателей на массивы. Указатели могут применяться как операнды в арифметических выражениях, выражениях присваивания и выражениях сравнения. Однако не все операции, обычно используемые в этих выражениях, разрешены применительно к переменным указателям. С указателями может выполняться ограниченное количество арифметических операций. Указатель можно увеличивать (++), уменьшать (--), складывать с указателем целые числа (+ или +=), вычитать из него целые числа (- или -=) или вычитать один указатель из другого. Если продолжить приведенный выше пример, в котором указателю Pt было присвоено значение b — указателя на первый элемент массива, то после выполнения оператора
Pt += 2;
Арифметика указателей теряет всякий смысл, если она выполняется не над указателями на массив. Нельзя полагать, чтоб две переменные одинакового типа хранятся в памяти вплотную друг к другу, если только они не соседствуют в массиве. Сравнение указателей операциями >, <, >=, <= также имеют смысл только для указателей на один и тот же массив. Мы рассмотрели ранее указатели на массивы. Однако соотношение между массивами и указателями может быть и обратным — могут использоваться массивы указателей. Например, вы можете сделать следующее объявление:
char *Sa[2] = {"Это первая строка", "Вторая"};
Вы объявили массив размером 2 элементов типа (char *). Каждый элемент такого массива — строка. Но в C++ строка является, по существу, указателем на ее первый символ. Таким образом, каждый элемент в массиве строк в действительности является указателем на первый символ строки. Каждая строка хранится в памяти как строка, завершающаяся нулевым символом. Число символов в каждой из строк может быть различным. Таким образом, массив указателей на строки позволяет обеспечить доступ к строкам символов любой длинны.
Формат записів для одержання стану перемикаючих клавіш за допомогою функції 02h преривання int16h:
INT16h 02h – функция позволяет проверять состояние переключающих клавиш(CapsLock, Insert, NumLock, Alt, Ctrl, Shift). Ввод информации с клавиатуры ПК может осуществляться двумя способами:
Обращение функции BIOS.
Использование функций операционной системы MS DOS. Функции MS DOS при вводе информации позволяют определять место вывода вводимой информации. Метод ввода информации с помощью BIOS называют базовым(основным) методом.
На входе: AH=02
На выходе: AL=байт состояния переключающих клавиш
Биты |
Значение, если в бит заложена 1 |
0 |
Нажата правая клавиша Shift |
1 |
Нажата левая клавиша Shift |
2 |
Нажаты клавиши Ctrl+ Shift |
3 |
Нажаты клавиши Alt+ Shift |
4 |
Состояние ScrolLock |
5 |
Состояние NumLock |
6 |
Состояние CapsLook |
7 |
Состояние Insert |
Види програмних модулів у проекті С++ Builder:
Проект представляет собой набор программных единиц — модулей. Один из модулей, называемый главным, содержит инструкции, с которых начинается выполнение программы. Чтобы увидеть главный модуль, нужно в меню Project выбрать команду View Source. Таким образом, главный модуль обеспечивает вывод стартовой формы программы, дальнейшее поведение которой определяют функции обработки событий стартовой формы. Помимо главного модуля в состав проекта входят модули формы. Для каждой формы C++ Builder создает отдельный модуль, который состоит из двух файлов: заголовочного файла и файла кода (содержимое этих файлов отражается в окне редактора кода). Заголовочный файл содержит описание формы, файл кода (модуль формы) — описание (текст) функций, в том числе и обработки событий.
Билет №10:
Билет №10:
Правила оголошення змінних типу «показчик».
Указатель — это переменная, указывающая на адрес в памяти, где хранятся какие-то данные, например, значение некоторой другой переменной. В этом смысле имя этой другой переменной отсылает к ее значению прямо, а указатель — косвенно. Ссылка на значение посредством указателя называется косвенной адресацией. Указатели, подобно любым другим переменным, перед своим использованием должны быть объявлены. Объявление указателя имеет вид:
type *ptr;
где type — один из предопределенных или определенных пользователем типов, а ptr — указатель. Читается это объявление так: "ptr является указателем на значение типа type".
Например:
int *countPtr, count;
объявляет переменную countPtr типа int * (т.е. указатель на целое число) и переменную count целого типа. Символ (*) в этих записях обозначает операцию косвенной адресации. Может быть объявлен и указатель на void:
void *Pv;
Это универсальный указатель на любой тип данных. Но прежде, чем его использовать, ему надо в процессе работы присвоить значение указателя на какой-то конкретный тип данных. Например:
Pv = countPtr;
Указатели должны инициализироваться либо при своем объявлении, либо с помощью оператора присваивания. Указатель может получить в качестве начального значения 0, NULL или адрес. Указатель с начальным значением 0 или NULL ни на что не указывает. NULL — это символическая константа, определенная специально для цели показать, что данный указатель ни на что не указывает. Пример объявления указателя с его инициализацией:
int *countPtr = NULL;
Для присваивания указателю адреса некоторой переменной используется операция адресации &, которая возвращает адрес своего операнда. Например, если имеются объявления:
int y = 5;
int *yPtr, x;
то оператор
yPtr = &y;
присваивает адрес переменной y указателю yPtr. Для того чтобы получить значение, на которое указывает указатель, используется операция *, обычно называемая операцией косвенной адресации или операцией разыменования. Она возвращает значение объекта, на который указывает ее операнд (т.е. указатель). Например, если продолжить приведенный
выше пример, то оператор
x = *yPtr
присвоит переменной x значение 5, т.е. значение переменной y, на которую указывает yPtr.