- •Понятие информации, виды и способы её представления
- •Задачи получения, передачи, преобразования и хранения информации
- •Язык как способ представления и передачи информации
- •Задачи, требующие автоматизированной обработки информации
- •Системы автоматизированной и автоматической обработки информации
- •Назначение и структура операционных систем
- •Исторические этапы автоматизации обработки информации
- •Последовательность обработки прикладных программ
- •Жизненный цикл программного обеспечения
- •Задачи системного программного обеспечения
- •Назначение и последовательность функционирования компиляторов
- •Требования к языкам программирования и их классификация
- •Понятие алгоритма, его основные свойства и способы записи
- •14. Временная и объёмная сложность алгоритма
- •15. Оценки временной сложности алгоритма
- •16. Структура рекурсивных алгоритмов
- •18. Методы доступа к функциям из библиотек и пакетов
- •22. Операции над данными стандартных типов и их старшинство
- •24. Манипуляторы потокового ввода и вывода
- •25. Ссылочные типы данных и их применение
- •27. Структурный тип данных
- •29. Многомерные массивы
- •30. Строки и массивы символов
- •31. Файлы и потоки
- •32. Методы открытия файлов для обмена информацией
- •33. Прямой доступ к отдельным записям в файлах
- •34. Программная реализация алгоритмов линейной структуры
- •35. Программная реализация разветвляющихся алгоритмов
- •36. Реализация циклических алгоритмов с заранее неизвестным количеством повторений
- •37. Реализация циклических алгоритмов с заранее известным количеством повторений
- •39. Предварительное описание функции
- •40. Локальные и глобальные величины программы
- •41. Способы обмена информацией между вызывающей и вызываемой функциями
- •42. Передача функций в качестве параметров функций
- •44. Динамические переменные. Выделение и освобождение памяти при выполнении программы
- •45. Построение списковых (последовательных) структур
- •46. Последовательные, циклические и рекурсивные алгоритмы
- •47. Базовая структура цифровой машины с хранимой программой
- •48. Архитектура и структура команд четырёхадресной машины
- •49. Архитектура и структура команд трёхадресной машины
- •50. Архитектура и структура команд двухадресной машины
- •51. Архитектура и структура команд одноадресной машины
- •52. Классификация устройств памяти систем обработки информации
- •53. Реализация устройств оперативной и долговременной памяти
- •54. Позиционные системы счисления и выполнение арифметических операций
- •55. Представление целых и действительных чисел в позиционных системах счисления
- •56. Связь между системами счисления с основаниями вида 2k
- •57. Перевод целых и действительных чисел из одной позиционной системы в другую
- •58. Прямой, обратный и дополнительный коды
- •59. Нормализованное представление чисел, переполнение, модифицирванные коды
- •60. Алгоритмы сложения и вычитания в дополнительных и обратных кодах
- •61. Алгоритмы умножения в дополнительных и обратных кодах
- •62. Структуры рекурсивных алгоритмов
- •63. Применение рекурсивных алгоритмов
- •64. Оценка сложности рекурсивных алгоритмов
27. Структурный тип данных
Для определения структурного типа используется ключевое слово struct:
struct имя_структурного_типа
{
описание поля1;
. . .
описание поляn;
}
При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется.
Переменную структурного типа можно инициализировать одновременно с объявлением. Инициализация переменной структурного типа производится, если после имени типа следуют знак "=" и список значений полей структурного типа в фигурных скобках разделенные запятой.
Доступ к значениям полей структурного типа осуществляется с помощью операции точка.
28. Массивы в языке C++. Связь массивов и указателей
В Си существует связь между указателями и массивами, и связь эта настолько тесная, что эти средства лучше рассматривать вместе. Любой доступ к элементу массива, осуществляемый операцией индексирования, может быть выполнен с помощью указателя.
Объявление int a[10] определяет массив a размера 10, т. е. блок из 10 последовательных объектов с именами a[0], a[1], ..., a[9].
Между индексированием и арифметикой с указателями существует очень тесная связь. По определению значение переменной или выражения типа массив есть адрес нулевого элемента массива. После присваивания
pa = &a[0];
ра и a имеют одно и то же значение. Поскольку имя массива является синонимом расположения его начального элемента, присваивание pa=&a[0] можно также записать в следующем виде:
pa = a;
Кроме того, a[i] можно записать как *(a+i). Компилятор автоматически приводит запись первого вида ко второму.
29. Многомерные массивы
Многомерные массивы в C++ рассматриваются как массивы, элементами которых являются массивы. Определение многомерного массива должно содержать информацию о типе, размерности и количестве элементов каждой размерности.
Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов.
int MyArray[3][3][3] = {
{{0, 1}},
{{100}, {200, 210}, {300}},
{{1000}, {2000, 2100}, {3000, 3100, 3200}}
};
MyArray[0][0][0] == 0
MyArray[0][0][1] == 1
MyArray[1][0][0] == 100
MyArray[1][1][0] == 200
MyArray[1][1][1] == 210
MyArray[1][2][0] == 300
MyArray[2][0][0] == 1000
MyArray[2][1][0] == 2000
MyArray[2][1][1] == 2100
MyArray[2][2][0] == 3000
MyArray[2][2][1] == 3100
MyArray[2][2][2] == 3200
Следует помнить, что в C++ нет принципиальной разницы между массивом массивов произвольной размерности и обычным одномерным массивом. Потому и простор для творчества в деле инициализации многомерных массивов ограничивается левым индексом.
30. Строки и массивы символов
Символ – элементарная единица, некоторый набор которых несет определенный смысл. В языке программирования С++ предусмотрено использование символьных констант. Символьная константа – это целочисленное значение (типа int) представленное в виде символа, заключённого в одинарные кавычки, например 'a'. В таблице ASCII представлены символы и их целочисленные значения.
Строки в С++ представляются как массивы элементов типа char, заканчивающиеся нуль-терминатором \0 называются С строками или строками в стиле С. \0 — символ нуль-терминатора.
Символьные строки состоят из набора символьных констант заключённых в двойные кавычки. При объявлении строкового массива необходимо учитывать наличие в конце строки нуль-терминатора, и отводить дополнительный байт под него.
При объявлении строки не обязательно указывать её размер, но при этом обязательно нужно её инициализировать начальным значением. Тогда размер строки определится автоматически и в конец строки добавится нуль-терминатор.
