§ 3. Перегрузка операций
Алгоритмические конструкции
Как вам уже известно из курса информатики, любой алгоритм может быть записан с использованием трех базовых алгоритмических конструкций: следование, цикл и ветвление (пример 3.1). Команды, составляющие алгоритмическую конструкцию следование, выполняются последовательно, друг за другом, в том порядке, в котором они записаны. Команды цикла и ветвления управляют порядком выполнения других команд в программе и относятся к командам управления (управляющим конструкциями). Алгоритмическая конструкция ветвления обеспечивает выполнение одной или другой последовательности команд в зависимости от истинности или ложности некоторого условия. Оператор ветвления — команда, реализующая алгоритмическую конструкцию ветвления на языке программирования. Алгоритмическая конструкция повторение (цикл) представляет собой последовательность действий, выполняемых многократно. Саму последовательность называют телом цикла. Оператор цикла — это команда, реализующая алгоритмическую конструкцию повторения на языке программирования. Существуют разные возможности управлять тем, сколько раз будет повторяться тело цикла. Может быть задано условие продолжения или окончания работы цикла, а также число повторений тела цикла. В зависимости от этого выделяют цикл с предусловием, цикл с постусловием и цикл с параметром. Существуют разные возможности управлять тем, сколько раз будет повторяться тело цикла. Может быть задано условие продолжения или окончания работы цикла, а также число повторений тела цикла. Выделяют следующие циклы: цикл с предусловием, цикл с постусловием и цикл с параметром. Выбор цикла зависит от задачи. Во многих случаях циклы взаимозаменяемы. При выборе цикла можно ориентироваться на следующее:
|
Пример 3.1 Блок-схемы алгоритмических конструкций. Следование Ветвление Цикл
Кроме блок-схем, для графического представления алгоритмов используют структурограммы (N — S-диаграммы, диаграммы Насси — Шнейдермана). Примеры структурограмм Команда ветвления: Команда цикла с предусловием: |
3.2. Логический тип данных
Для стандартных типов данных таких как int или double ввод и вывод реализован через стандартные операторы >> и <<. Эти же операторы перегружены для ввода-вывода строк. Для пользовательских типов данных, имеющих множество полей, также можно перегрузить операторы ввода-вывода. Перегрузка операторов << и >> намного упрощает процесс вывода объекта на экран и получение пользовательского ввода с записью данных в объект класса. Рассмотрим перегрузку оператора <<. Оператор является бинарным оператором, поэтому его перегрузка будет аналогична перегрузке оператора «+», рассмотренной в примерах 3.5 и 3.6. Левым операндом у оператора << является объект cout, а правым — объект класса, который нужно вывести. Переопределяемый оператор должен возвращать значение типа ostream, объектом которого является cout. Параметры, описываемой функции, должны быть ссылками (примеры 3.7 и 3.8). Также ссылкой должен быть и возвращаемый результат, поскольку ostream запрещает свое копирование. Перегрузка оператора ввода происходит аналогично. Отличие в том, что cin является объектом типа istream (примеры 3.9 и 3.10). Ссылка на объект класса, являющийся вторым параметром, не может быть константой, поскольку объект изменяется при вводе. После перезагрузки операторов ввода и вывода их можно использовать также для чтения и записи файлов. |
Пример 3.7. Перегрузка оператора вывода << для класса Vect, определенного в примере 3.5. Объявление:
Описание:
Пример 3.8. Перегрузка оператора вывода << для класса Matrix, определенного в примере 3.6. Объявление:
Описание:
Пример 3.9. Перегрузка оператора вывода >> для класса Vect, определенного в примере 3.5. Объявление:
Описание:
Пример 3.10. Перегрузка оператора вывода >> для класса Matrix, определенного в примере 3.6. Объявление:
Описание:
|