
- •Алгоритмы и их свойства. Представление алгоритмов
- •Структура программы и типы данных
- •Основы программирования. Операторы
- •Структурированные типы данных. Массивы
- •Структурированные типы данных. Динамические массивы
- •Этапы составления программы. Структурное программирование
- •Структурированные типы данных. Строки
- •Структурированные типы данных. Структуры (Struct).
- •Структурированные типы данных. Файлы.
- •Технологии программирования. Ошибки, тестирование
- •Подпрограммы. Входные и выходные данные. Виды параметров
- •Подпрограммы. Рекурсия
- •Динамические структуры данных. Однонаправленный список
- •Динамические структуры данных. Стек и очередь
- •Динамические структуры данных. Бинарное дерево.
- •Объектно-ориентированное программирование. Определения. Классы.
- •Объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм.
- •Объектно-ориентированное программирование. Виды взаимодействия классов.
Структурированные типы данных. Динамические массивы
Динамический массив — массив переменной длины, память под который выделяется в процессе выполнения программы.
Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. Например, мы написали какую-то программку, которая обрабатывает массив. При написании данной программы необходимо было объявить массив, то есть задать ему фиксированный размер (к примеру, от 0 до 100 элементов). Тогда данная программа будет не универсальной, ведь может обрабатывать массив размером не более 100 элементов. А если нам понадобятся всего 20 элементов, но в памяти выделится место под 100 элементов, ведь объявление массива было статическим, а такое использование памяти крайне не эффективно.
В С++ операции new и delete предназначены для динамического распределения памяти компьютера. Операция new выделяет память из области свободной памяти, а операция delete высвобождает выделенную память. Выделяемая память, после её использования должна высвобождаться, поэтому операции new и delete используются парами.
Операция new создает объект заданного типа, выделяет ему память и возвращает указатель правильного типа на данный участок памяти. Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных: int, float,double, char и т. д.
Этапы составления программы. Структурное программирование
Этапы составления программы:
Постановка задачи – выполняется специалистом в предметной области на естественном языке.
Анализ задачи и моделирование – определяются исходные данные и результат решения задачи, выявляются ограничения, выполняется формализованное описание задачи и построение математической модели, пригодной для решения на компьютере.
Разработка или выбор алгоритма решения задачи – выполняется на основе ее математического описания. Многие задачи можно решить различными способами. Программист должен выбрать оптимальное решение.
Проектирование общей структуры программы – формируется модель решения с последующей детализацией и разбивкой на подпрограммы, определяется архитектура программы, способ хранения информации, структуры данных, наиболее подходящие для реализации выбранного алгоритма.
Кодирование – запись алгоритма на языке программирования. Современные системы программирования позволяют ускорить процесс разработки программы, автоматически создавая часть ее текста, однако вся творческая работа по-прежнему лежит на программисте.
Отладка и тестирование программы. Под отладкой понимается устранение ошибок в программе, не выявленных в процессе компиляции. Тестирование позволяет вести их поиск и, в конечном счете, убедиться в том, что полностью отлаженная программа дает правильный результат. Использование специальных программ-отладчиков, которые позволяют выполнять программу по отдельным шагам, просматривая при этом промежуточные результаты, значительно упрощает этот этап.
Анализ результатов – если программа выполняет моделирование какого-либо известного процесса, следует сопоставить результаты вычислений с результатами наблюдений. В случае существенного расхождения необходимо изменить модель.
Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
Любую программу можно составить только из структур трех типов: следования, ветвления и цикла (это базовые конструкции).
Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).
Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.
Цикл задает многократное выполнение оператора.
Особенностью базовых конструкций является то, что любая из них имеет только один вход и один выход, поэтому конструкции могут вкладываться друг в друга произвольным образом, например, цикл может содержать следование из двух ветвлений, каждое из которых включает вложенные циклы.