Алгоритм создания программного кода на С++.
Конструирование многих программ логически можно разделить на три этапа:
(1) Этап инициализации, на котором происходит инициализация переменных программы.
(2) Этап обработки, на котором происходит ввод данных и соответствующая настройка переменных программы.
(3) Этап завершения программы, на котором происходит вычисление и вывод окончательных результатов.
В составе программного модуля выделяются:
(1) Главная функция.
(2) Заголовочные файлы. Стандартное расширение заголовочных файлов - .h.
(3) Файлы реализации. Стандартное расширение файлов реализации - .cpp.
2.1. Комментарий в программном коде предназначен для облегчения восприятия программного кода. Комментарий можно разбить он не вызывает каких-либо действий. Синтаксис комментария в языках программирования выражается: (1), (2)
(1) в языке программирования Си : /* текст комментария */
(2) в языке программирования Си++: // текст комментария
(2.1) в языка программирования С++ допустима запись комментария в виде: /* текст комментария */
(3) ANSI-стандартом запрещено вкладывать комментарии друг в друга.
(1) - : стандартный заголовочный файл, т.е. файл стандартной библиотеки функций С++,
(2) ":" - : имя подключаемого файла из библиотеки функций пользователя, так называемые функции, определяемые программистом, т.е. заголовочный файл,
(3) IM - : идентификатор макроса
4.1. Написать комментарий, раскрывающий описание и назначение глобальных переменных.
(1) тип возвращаемого значения функции пользователя
(2) заголовок функции, который должен быть уникальным
(3) в круглых скобках список параметров с указанием типа возвращаемого параметра
(4) такой оператор, должен заканчиваться операцией "точка с запятой"
(5) после операции "точка с запятой" надо вставить комментарий с описанием назначения функции
5.1. Такой оператор включается после написания функции пользователя, имеющей также обязательный оператор return в своем теле, в файле головной программы. Старайтесь применять метод повторного использования кода.
{ объявления;
операторы;
}
(1) main - для консольных приложений (работающих с Win32);
(2) WinMain - для приложений Windows.
Структур повторения:
Выделяют следующие типы повторения:
Последовательных структур
6.1. Определить спецификацию главной функции main ( ): (1) или (2)
(1) (void) - это значит, что функция не возвращает никакого значения - пример, void F1(void);
(2) или ( ) - это значит, что если тип возвращаемого значения не указан, то он по умолчанию считается равным int - пример, void F1( ).
(3) Первая из приведенных записей предпочтительнее, так как делает программу более переносимой.
6.1.1. При необходимости указать тип возвращаемых значений переменных в функции main (тип1, тип2, :).
6.2. Поставить скобки "{", "}", означающие начало и конец тела головной функции main ( ).
6.2.1. В теле главной функции (и не только главной функции) допустимы следующие типы комментариев:
- Описывающие назначение переменных,
- Комментарии типа подсказки,
- Исключение из комментариев: сообщения об ошибках ввода данных.
6.3. В теле функции main ( ) {тело головной функции} объявить переменные области действия функции, а именно: (1), (2), (3), (4)
(1) перед типом переменной в случае необходимости указывается спецификатор класса памяти идентификатора
(1.1) Справочно: Каждая переменная характеризуется некоторым классом памяти, который определяет ее время жизни - период, в течение которого эта переменная существует в памяти. Спецификация класса памяти идентификатора определяет его класс памяти, область действия и пространство имен. Класс памяти, в частности, определяется местом объявления переменной. В C++Builder имеется четыре спецификации класса памяти:
- auto, registr - автоматический класс памяти с локальным временем жизни,
- extern, static - статический класс памяти с глобальным временем жизни.
(2) в случае необходимости после спецификатора класса памяти указывается модификатор const или volatile, которые сообщают компилятору об изменчивости или постоянстве определяемого объекта.
(2.1) Если переменная описана как const, то она недоступна в других модулях программы, ее нельзя изменять в других во время выполнения программы. Единственная возможность присвоить ей значение - это инициализация при определении. Объекту с модификатором const не только нельзя присваивать значения, но и для него запрещены операции инкремента (++) и декремента ( -- ). Указатель, определенный с модификатором const, нельзя изменять, однако может быть изменен объект, который им адресуется.
(2.2) Модификатор volatile отмечает, что в процессе выполнения программы значение объекта может изменяться в промежутке между явными обращениями к нему. Например, на объект может повлиять внешнее событие. Поэтому компилятор не должен помещать его в регистровую память и не должен делать никаких предположений о постоянстве объекта в те моменты, когда в про-грамме нет явных операций, изменяющих значение объекта.
(2.3) Диалекты языка С++ также включают следующие модификаторы:
- cdecl - для функций и переменных;
- pascal - для функций и переменных;
- interrupt - для функций обработки прерываний;
- near - для указателей, функций, переменных;
- far - для указателей, функций, переменных;
- huge - для указателей и функций.
Эти модификаторы предназначены для влияния на распределение памяти при размещении объектов и учета особенностей сегментной организации и адресации памяти в процессорах семейства 80х86.
(3) тип переменной (данных)
(3.1) Помните, что переменная может быть простая и вычисляемая. Поэтому для вычисляемых переменных используйте операцию приведения типов, чтобы программа корректно выполняла вычисления.
(3.2) Если программиста по каким -либо причинам не устраивает тот тип, который компилятор приписывает константе, то он может явным образом повлиять на его выбор. Для этого служат суффиксы, например, L, l (long), U, u (unsigned), которые ставятся перед типом переменной.
(4) идентификатор (имя) переменной
(4.1) Требования к идентификатору:
- Длина идентификатора должна быть больше или равна 31 символа;
- Особенности написания идентификаторов:
- Идентификатор не должен начинаться с цифры;
- Ключевые или зарезервированные слова Языка прогр. не применимы как идентификаторы;
- Идентификаторы нельзя разбивать. - Виды идентификаторов в зависимости от регистра написания:
- в нижнем регистре,
- в верхнем регистре,
- начинающийся с заглавной буквы. - Виды областей действия идентификатора:
- область действия функции,
- область действия файла,
- область действия блока, - область действия прототипа функции.
(5) комментарий, раскрывающий описание и / или назначение вводимых переменных 6.3.1. Возможна инициализация переменных при их объявлении. Инициализация переменных при их объявлении уменьшает время выполнения программы. Переменная, представляющая изображение фиксированного числового, строкового или символьного (литерного) значения называется константой (ли-тералом). Константы делятся на пять групп:
- целые (десятичные, восьмеричные, шестнадцатеричные);
- вещественные (с плавающей точкой);
- перечислимые;
- символьные (литерные);
- строковые (строки или литерные строки).
6.3.1.1. Инициализация переменных может быть произведена одним из следующих способов:
- Значением присваиваемым непосредственно;
- Значением присваиваемым по адресу.
6.3.1.2. В теле функции должны быть предусмотрены операторы, выдающие сообщения об ошибках ввода данных. Поэтому целесообразно вводить условие на проверку контрольного значения, которое используется в структурах повторения:
- Синонимы термина "контрольное значение": сигнальное значение, фиктивное значение или флаговое значение.
- Нельзя в качестве контрольного значения выбирать значение, которое является допустимым значением данных.