- •Вопросы к экзамену по дисциплине «программирование технических средств»
- •1 Основные понятия и определения
- •2 В состав базового программного обеспечения входят:
- •3 Программные модули
- •8 Функциональная и модульная декомпозиции
- •9 Операционная система
- •12 В ходе разработки программы должен быть подготовлен следующий графический материал:
- •13 Алфавит языка
- •14 Различают также следующие виды языков программирования:
- •15 Идентификаторы и ключевые слова
- •17 Декларация объектов
- •18 Данные целого типа (int)
- •19 Данные целого типа (int)
- •20 Данные вещественного типа (float, double)
- •21 Преобразование типов (явное и неявное). Приведение типа
- •24 Константы. Целые константы. Константы с плавающей точкой. Символьные константы. Строки.
- •25 Операции, выражения
- •26 Арифметические операции. Аддитивные и мультипликативные операции.
- •28 Условная операция «? :»
- •29 Оператор выбора альтернатив (переключатель)
- •30 Составление циклических алгоритмов. Операторы цикла с предусловием и с постусловием.
- •31 Оператор цикла с предусловием и коррекцией for
- •32 Оператор безусловного перехода goto
- •33 Побитовые логические операции, операции над битами
- •34 Операции сравнения. Логические операции. Унарные операции.
- •35 Операция присваивания. Сокращенная запись операции присваивания.
- •36 Стандартная библиотека языка Си. Математические функции.
- •37 Строки в языке Си. Функции работы со строками.
- •38 Функции ввода информации
- •39 Функции вывода данных
- •40 Управляющая строка функций ввода/вывода.
- •41 Ввод-вывод потоками
- •42 Препроцессор. Директивы #include, #define, #if…
- •43 Одномерные массивы. Инициализация одномерных массивов. Ввод и инициализация массива символов.
- •44 Многомерные массивы
- •45 Структуры. Вложенные структуры
- •46 Массивы структур. Битовые поля
- •47 Объединения. Перечисления
- •48 Указатели. Указатели и адреса объектов. Указатели и массивы.
- •49 Операции с указателями: присваивание адреса, определение значения по адресу, присваивание указателей Операция получения адреса
- •50 Операции с указателями: сложение и вычитание, инкремент и декремент, сравнение указателей
- •51 Работа с динамической памятью. Динамические массивы.
- •52 Операции typedef и sizeof
- •53 Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.
- •54 Функции. Типы передачи параметров функции (по значению, по адресу, по ссылке).
- •55 Функции. Переменные в качестве параметров функций.
- •56 Функции. Массивы в качестве параметров функций.
- •57 Указатели на функции.
- •58 Перегрузка функций.
- •59 Классы памяти. Области действия объектов
- •60 Работа с файлами. Типы файлов (текстовый и бинарный). Дескриптор файла (“указатель на файл”). Режимы работы с файлами.
- •61 Работа с файлами. Открытие файла в различных режимах и закрытие файла.
- •62 Работа с файлами. Чтение и запись данных в файл. Посимвольный и построчный ввод-вывод
- •63 Работа с файлами. Чтение и запись данных в файл. Блоковый ввод-вывод
- •64 Работа с файлами. Чтение и запись данных в файл. Форматированный ввод-вывод
- •65 Работа с файлами. Указатель текущей позиции в файле, его перемещение к нужной позиции.
- •Заполнение:
- •67 Графический режим. Функции вывода текста, функции управления цветом. (outtext, outtextxy, setbkcolor, setcolor, settextjustify, settextstyle, textheight, textwidth)
- •68 Среды разработки программ для микроконтроллеров. Особенности написания программ для микроконтроллеров и программирования их периферийных устройств.
- •69 Средства записи программ и отладки для микроконтроллеров. Программаторы, симуляторы и внутрисхемные отладчики.
- •70 Интерфейсы программирования и отладки встроенных систем. Интерфейс jtag
46 Массивы структур. Битовые поля
Массивы структур
Структурный тип может быть использован для декларации массивов, элементами которых являются структурные переменные, например:
struct person spisok[100]; - spisok - массив структур;
или struct person {
char fio[40];
int day, month, year;
} spisok[100];
В данном случае обращение к полю, например, day i-й записи может быть выполнено одним из следующих способов: spisok[i].day, *(spisok+i).day, (spisok+i)->day.
Битовые поля
Структура может содержать любые комбинации битовых полей с данными других типов. Целочисленные элементы типа signed или unsigned можно объявить битовыми полями шириной от 1 до 16 бит. Ширина битового поля и его необязательный идентификатор задаются следующим образом:
спецификатор_типа <идентификатор_битового_поля>:длина; где "спецификатор_типа" - это char, unsigned char, int или unsigned int. Битовые поля располагаются с нижнего и кончая старшим битом слова. Выражение "длина" должно быть задано и должно задавать целочисленную константу со значением в диапазоне от 0 до 16.
Если идентификатор битового поля опущен, то число бит, заданное выражением "длина", распределяется в памяти, но поле при этом остается недоступным программе. Это позволяет создавать битовые шаблоны для, например, аппаратных регистров компьютера, в которых некоторые биты не используются. Например:
struct
mystruct {
int i:2;
unsigned j:5;
int :4;
int k:1;
unsigned m:4;
} a, b, c;
Целочисленные поля хранятся в виде дополнения до двух, причем крайний левый бит побещается в наиболее значащий бит. Для битового поля типа int (например, signed) наиболее значащий бит интерпретируется как знаковый бит. Битовое поле шириной 2, содержащее двоичное 11, будет, следовательно, в случае типа
unsigned интерпретироваться как 3, а в случае int как -1. В предыдущем примере допустимое выражение a.i = 6 поместит в a.i двоичное значение 10 = -2, не выдавая каких-либо предупреждений. Поле k типа signed int шириной 1 может содержать только значения -1 и 0, так как битовый шаблон 1 будет интерпретирован как -1.
Примечание: Битовые поля могут объявляться только в структурах, объединениях и классах. Доступ к ним
выполняется теми же селекторами элементов (операциями . и ->), что используются для доступа к
элементам других типов. Кроме того, битовые поля вызывают некоторые проблемы с созданием переносимых кодов, поскольку организация бит в байтах и байт в словах зависит от конкретной машины.
Выражение &mystruct.x недопустимо, так как x - это идентификатор битового поля, а никакой гарантии, что mystruct.x имеет адрес на границе байта, нет.
47 Объединения. Перечисления
Объединения
Объединение - это поименованная совокупность данных разных типов, размещаемых с учетом выравнивания в одной и той же области памяти, размер которой достаточен для хранения наибольшего элемента.
Объединенный тип данных декларируется подобно структурному: union ID_объединения {
описание полей
};
Пример описания объединенного типа:
union word {
int nom;
char str[20];
};
Пример объявления объектов объединенного типа:
union word *p_w, mas_w[100];
Объединения применяют для экономии памяти в случае, когда объединяемые элементы логически существуют в разные моменты времени либо требуется разнотипная интерпретация поля данных.
Перечисления
Перечисления - это средство создания типа данных посредством задания ограниченного множества значений. Определение перечислимого типа данных имеет вид
enum ID_перечислимого типа {
список значений };
Значения данных перечислимого типа указываются идентификато-рами, например:
enum marks {
zero, two, three, four, five
};
Транслятор последовательно присваивает идентификаторам списка значений целочисленные величины 0,1,..., . При необходимости можно явно задать значение идентификатора, тогда очередные элементы списка будут получать последующие возрастающие значения.
Примеры объявления переменных перечислимого типа:
enum marks Est;
enum level state;
Переменная типа marks может принимать только значения из множества
{zero, two, three, four, five}.
Основные операции с данными перечислимого типа:
- присваивание переменных и констант одного типа;
- сравнение для выявления равенства либо неравенства.
Практическое назначение перечисления - определение множества различающихся символических констант целого типа.
