С++ для начинающих - Учебное пособие

Часть iii процедурно-ориентированное программирование

В части II были представлены базовые компоненты языка С++: встроенные типы данных (int и double), типы классов (string и vector) и операции, которые можно совершать над  данными.  В  части  III  мы  увидим,  как  из  этих  компонентов  строятся  функции, служащие для реализации алгоритмов.

В каждой программе на С++ должна присутствовать функция main(), которая получает управление при запуске программы. Все остальные функции, необходимые для решения задачи,  вызываются  из  main().  Они  обмениваются  информацией  при  помощи параметров, которые получают при вызове, и возвращаемых значений. В главе 7 представлен соответствующие механизмы С++.

Функции используются для того, чтобы организовать программу в виде совокупности небольших и не зависящих друг от друга частей. Она инкапсулирует алгоритм или набор алгоритмов,   применяемых   к  некоторому  набору   данных.   Объекты   и  типы   можно определить   так,   что   они   будут   использоваться   в   течение   всего   времени   работы программы. Однако, если некоторые объекты или типы применяются только в части программы, предпочтительнее ограничить область их использования именно этой частью и объявить внутри той функции, где они нужны. Понятие видимости предоставляет в распоряжение программиста механизм, позволяющий ограничивать область применения объектов. Различные области видимости, поддерживаемые языком С++, мы рассмотрим в главе 8.

Для облегчения использования функций С++ предлагает множество средств, рассматриваемых  нами  в  части  III.  Первым  из  них  является  перегрузка.  Функции, которые  выполняют  семантически  одну  и  ту  же  операцию,  но  работают  с  разными типами данных и потому имеют несколько отличающиеся реализации, могут иметь общее имя. Например, все функции для печати значений разных типов, таких, как int, string и т.д., называются print(). Поскольку программисту не приходится запоминать много

 

разных имен для одной и той же операции, пользоваться ими становится проще. Компилятор сам подставляет нужное в зависимости от типов фактических аргументов. В главе 9 объясняется, как объявлять и использовать перегруженные функции и как компилятор выбирает подходящую из набора перегруженных.

Вторым средством, облегчающим использование функций, является механизм шаблонов. Шаблон –  это  обобщенное  определение,   которое  используется  для  конкретизации – автоматической генерации потенциально бесконечного множества функций, различающихся только типами входных данных, но не действиями над ними. Этот механизм описывается в главе 10.

Функции обмениваются информацией с помощью значений, которые они получают при вызове (параметров), и значений, которые они возвращают. Однако этот механизм может оказаться недостаточным при возникновении непредвиденной ситуации в работе программы. Такие ситуации называются исключениями, и, поскольку они требуют немедленной реакции, необходимо иметь возможность послать сообщение вызывающей программе. Язык С++ предлагает механизм обработки исключений, который позволяет функциям общаться  между собой в таких условиях.  Этот механизм рассматривается  в главе 11.

Наконец,  стандартная  библиотека  предоставляет  нам  обширный  набор  часто используемых   функций –   обобщенных   алгоритмов.   В   главе   12   описываются   эти алгоритмы и способы их использования с контейнерными типами из главы 6 и со встроенными массивами.