- •Лекция 1. Введение.
- •Лекция 2-3. Основные понятия. Типы данных.
- •Основные типы данных
- •Лекция 4 Выражения. Классификация операторов
- •Операторы объявлений типов и переменных
- •Операторы вызова функций
- •Математические и логические операции. Условная операция. Математические операции для целочисленных и вещественных вычислений.
- •Математические операции только для целочисленных вычислений
- •Логические операции.
- •Условная операция.
- •Операторы управления.
- •Оператор ветвления.
- •Оператор выбора.
- •Лекция 5. Циклы
- •Цикл while
- •Цикл for
- •Операция "запятая"
- •Цикл с условием на выходе: do while
- •Какой цикл лучше?
- •Другие управляющие операторы: break, continue, goto.
- •Лекция 6. Структуры данных. Массивы. Объединения. Строковые литералы.
- •1. Объявление массива
- •2. Инициализация массивов
- •3. 1 Работа с массивами
- •3.2. Обработка массивов
- •3.3. Ввод/вывод массивов
- •Объединения в c
- •Лекция 7. Функции. Рекурсия. 1 часть.
- •Лекция 8. Функции. Рекурсия. 2 часть.
- •Лекция 9. Указатели.
- •Функции управление памятью
- •Лекция 10. Динамические структуры данных.
- •Лекция 11. Файлы
- •Лекция 13. Объектно-ориентированные модели. Составные части объектного подхода.
- •Лекция 14. Классы. Конструкторы и деструкторы.
- •Лекция 15. Простое наследование классов
- •Лекция 16. Перегрузка функций
- •Лекция 17. Перегрузка операторов
- •Лекция 18. Друзья
- •Лекция 19. Шаблоны. Стандартная библиотека шаблонов
- •Лекция 20. Исключительные ситуации
- •Лекция 3.2. Проектирование структуры приложения. Система меню
- •Лекция 3.3.1. Стандартные и дополнительные компоненты
- •Лекция 3.3.2. Компоненты страницы Win32. Системные компоненты.
- •Лекция 3.4. Проектирование структуры данных
- •Лекция 3.6. Компоненты ActiveX. Графические компоненты
- •3.6.1.Компоненты ActiveX.
- •3.6.2. Графические компоненты
- •Лекция 4.1. Основные понятия языка. Переменные, операции, выражения. Операторы
- •Класс Array
- •Массивы как коллекции
- •Сортировка и поиск. Статические методы класса Array
- •Лекция 4.3. Делегаты, события и потоки выполнения. Работа с файлами библиотеки, атрибуты, директивы
- •Описание делегатов
- •Использование делегатов
- •Паттерн "наблюдатель"
- •Операции
- •Передача делегатов в методы
- •События
- •Многопоточные приложения
- •Класс Thread
- •Асинхронные делегаты
- •Лекция 5.1. Методы конструирования сложных программных систем
- •Inline-ассемблер в Delphi
- •Лекция 5.2. Разработка динамических библиотек
- •Для начала - что это такое ?
- •Далее разберемся: какая может быть польза от dll
Лекция 6. Структуры данных. Массивы. Объединения. Строковые литералы.
Массив – это совокупность данных, которая обладает следующими свойствами:
все элементы массива имеют один и тот же тип;
массив имеет одно имя для всех элементов;
доступ к конкретному элементу массива осуществляется по индексу (индексам).
1. Объявление массива
Объявление массива имеет следующий синтаксис:
<спецификация типа> <имя> [<константное выражение>];
<спецификация типа> <имя> [ ];
Здесь квадратные скобки являются элементом синтаксиса, а не признаком необязательности конструкции.
Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за <именем>, – признак того, что переменная является массивом. <Константное выражение>, заключенное в квадратные скобки определяет число элементов в массиве. Индексация элементов массива в языке C начинается с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива.
Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована, если в объявлении массива присутствует инициализатор, либо массив объявляется как формальный параметр функции, либо данное объявление является ссылкой на объявление массива где-то в другом месте программы. Однако для многомерного массива может быть опущена только первая размерность.
Многомерный массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за <именем>:
<спецификация типа> <имя> [<константное выражение>][<константное выражение>]...;
Каждое <константное выражение> определяет количество элементов в данном измерении массива, поэтому объявление двумерного массива содержит два константных выражение, трехмерного – три и т.д.
Массив может состоять из элементов любого типа, кроме типа void и функций, т.е. элементы массива могут иметь базовый, перечислимый, структурный тип, быть объединением, указателем или массивом.
Примеры объявлений массивов
int x[10]; // Одномерный массив из 10 целых чисел. Индексы меняются от 0 до 9.
double y[2][10]; // Двумерный массив вещественных чисел из 2 строк и 10 столбцов.
2. Инициализация массивов
Как и простые переменные, массивы могут быть инициализированы при объявлении. Инициализатор для объектов составных типов (каким является массив) состоит из списка инициализаторов, разделенных запятыми и заключенных в фигурные скобки. Каждый инициализатор в списке представляет собой либо константу соответствующего типа, либо, в свою очередь, список инициализаторов. Эта конструкция используется для инициализации многомерных массивов.
Наличие списка инициализаторов в объявлении массива позволяет не указывать число элементов по его первой размерности. В этом случае количество элементов в списке инициализаторов и определяет число элементов по первой размерности массива. Тем самым определяется размер памяти, необходимой для хранения массива. Число элементов по остальным размерностям массива, кроме первой, указывать обязательно.
Если в списке инициализаторов меньше элементов, чем в массиве, то оставшиеся элементы неявно инициализируются нулевыми значениями. Если же число инициализаторов больше, чем требуется, то выдается сообщение об ошибке.
Примеры инициализации массивов
int a[3] = {0, 1, 2}; // Число инициализаторов равно числу элементов
double b[5] = {0.1, 0.2, 0.3}; // Число инициализаторов меньше числа элементов
int c[ ] = {1, 2, 4, 8, 16}; // Число элементов массива определяется по числу инициализаторов
int d[2][3] = {{0, 1, 2},
{3, 4, 5}}; // Инициализация двумерного массива. Массив состоит из двух строк,
// в каждой из которых по 3 элемента. Элементы первой строки получают значения 0, 1 и 2,
// а второй – значения 3, 4 и 5.
int e[3] = {0, 1, 2, 3}; // Ошибка – число инициализаторов больше числа элементов
Обратите внимание, что не существует присваивания массиву, соответствующего описанному выше способу инициализации.
int a[3] = {0, 1, 2}; // Объявление и инициализация
a = {0, 1, 2}; // Ошибка