
- •Информатика основы
- •Предисловие
- •Введение
- •Программы
- •1.1. Элементы языка
- •Список основных ключевых слов
- •Типы числовых данных
- •Разделители
- •Основные бинарные операции
- •Математические функции
- •1.2. Структура программы
- •1.3. Выполнение программы
- •Контрольные вопросы
- •2.1. Загрузка и настройка системы программирования
- •2.2. Создание и работа с проектом
- •Условные графические обозначения основных блоков схем
- •Словесно-формульный алгоритм
- •Листинг 2.1. Lin_prog.Cpp
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •В чем достоинство интегрированных сред программирования?
- •Почему на начальном этапе изучения программирования рекомендуется составлять блок-схемы алгоритмов?
- •3. Организация ветвлений в программах
- •3.1. Организация разветвляющихся алгоритмов
- •If (условие) оператор1; else оператор2;
- •3.2. Логический тип данных и базовые логические операции
- •Логические операции
- •При решении задач с множеством логических условий программа существенно упрощается, если эти условия удается объединить с помощью операций и, или, не в более крупные выражения.
- •Словесно-формульный алгоритм
- •Результат выполнения программы
- •Р езультат выполнения программы
- •Упражнения
- •Варианты заданий
- •Области определения функции z (X,y)
- •Контрольные вопросы
- •4. Организация циклов
- •4.1. Организация программ с циклами
- •For (инициализация; условие; модификация) операторы
- •4.2. Инкремент, декремент и составные операции
- •Составные операции присваивания
- •Р езультат выполнения программы
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •5. Составление программ с массивами
- •5.1. Организация программ с массивами
- •Тип имя_массива [n];
- •Имя_массива [индекс]
- •Тип имя_массива [размер_1] [размер_2]
- •5.2. Манипуляторы и форматирование ввода-вывода
- •Манипуляторы
- •Р езультат выполнения программы
- •Р езультат выполнения программы Матрица a:
- •Матрица b:
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •Дайте определение массива.
- •6. Составление программ с использованием функций
- •6.1. Описание, объявление и вызов функций
- •Механизм возврата из функции реализуется оператором
- •Тип имя_функции (тип размерность, тип имя_массива[ ]) ,
- •6.2. Глобальные и локальные переменные
- •Р езультат выполнения программы
- •6.3. Перегруженные функции
- •Р езультат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •7. Программирование с использованием указателей
- •7.1. Общие сведения об указателях
- •7.2. Динамические массивы
- •Результат выполнения программы
- •Р езультат выполнения программы
- •7.3. Указатели и функции
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •8. Программирование с использованием структур
- •8.1. Определение структур
- •8.2. Организация программ с использованием структур
- •Имя_структуры . Имя_элемента_структуры
- •Список товаров
- •Р езультат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
- •Основные бинарные операции
- •Логические операции
- •Типы числовых данных
- •Константы, используемые в математических выражениях
- •Математические функции
- •Типовые сообщения об ошибках
- •Оглавление
6.1. Описание, объявление и вызов функций
Любая программа на С++ состоит из функций, по крайней мере, одной функции main, называемой главной функцией. С нее всегда начинается выполнение программы.
Каждая функция должна быть определена или объявлена до ее использования в программе. Определение (описание) функции состоит из заголовка и тела функции и имеет следующую форму:
тип_результата имя_функции (список_параметров) //заголовок функции
{тело_функции}
Тип возвращаемого значения (результата) может быть любым, кроме массива и функции. Если функция не должна возвращать значение, то указывается тип void, например:
void main ( )
Имя функции желательно подбирать, исходя из содержания решаемой задачи. Это удобно для пользователя, так как имя функции будет давать представление о ее назначении.
Например: stepen, summa, sort, koren.
Список параметров (аргументов) определяет величины, которые требуется передать в функцию при ее вызове. Их часто называют формальными параметрами. Элементы списка разделяются запятыми. Для каждого параметра указывается его тип и имя. При отсутствии аргументов список может быть пустым ( ) или иметь спецификатор void.
Тело функции представляет собой блок объявлений и операторов, описывающих определенный алгоритм. Особое место среди них занимает оператор return. Он обеспечивает немедленный возврат в вызывающую функцию и может использоваться для передачи вычисленного значения функции.
Пример. Определение функции вычисления
:
double koren (double x, int n) //заголовок функции
{ double y=pow(x,1.0/n); //1.0 исключает целочисленное деление
return y; //возвращение значения у
}
Если описание функции следует за использованием функции, то в начале исходного файла (программы) необходимо поместить ее объявление (прототип).
Прототип функции по форме такой же, как заголовок. Однако имеются два существенных отличия: во-первых, прототип всегда заканчивается символом ';', во-вторых, в списке параметров имена аргументов функции можно не указывать, так как компилятор их игнорирует. То есть объявление функции указывает тип возвращаемого значения, количество и типы параметров. Например, для выше рассмотренной функции прототип имеет вид
double koren (double, int);
После того как функция объявлена, ее можно использовать в программе. Если функция описана раньше ее использования, то прототип не требуется.
Для вызова функции нужно указать ее имя, за которым в круглых скобках через запятую перечисляются имена фактических параметров. Число и типы фактических аргументов должны совпадать с числом и типом формальных параметров функции. Соответствие между формальными и фактическими параметрами устанавливается по порядку их расположения в списках.
Вызов функции может находиться в любом месте программы, но только после объявления функции. Если тип возвращаемого значения не void, вызов функции может осуществляться из выражений.
Механизм возврата из функции реализуется оператором
return выражение;
Функция может содержать несколько операторов return (это определяется потребностями алгоритма). Для функции типа void выражение в операторе return не указывается; более того, если возврат из нее происходит в конце тела функции перед закрывающей фигурной скобкой, оператор return можно опустить. В этом случае компилятор предполагает, что оператор return находится в самом конце тела функции и добавляет его сам при компиляции.
Выражение в операторе return должно иметь тип, указанный перед именем функции в ее определении, либо иметь тип, допускающий автоматическое преобразование к типу возвращаемого функцией значения.
Пример. Составить программу с функцией вычисления максимума из двух чисел.
#include <iostream.h>
float max(int, int); // прототип
void main(void) //void в скобках можно опустить
{ int x,y;
cin>>x>>y; //Ввод фактических параметров
float z=max(x,y); //Вызов функции с возвращением значения
cout<<"z="<<z; //z можно заменить вызовом max(x,y)
return; //Оператор return можно опустить
}
//Описание функции max
float max(int a,int b) //a и b – формальные параметры
{ return (a>=b)? a:b; //Автоматическое преобразование int в float
}
Выше были рассмотрены функции со скалярными аргументами. Использование массива в качестве передаваемых в функцию параметров требует несколько иной формы записи заголовка, а именно: