Лекции.ИНФО


Все переменные должны быть объявлены до их использования.



3. C++ поддерживает различные типы данных, включая целочисленные и с плавающей точкой.

4. Оператор вывода данных обозначается символом "<<", а при использовании в инструкции cout он обеспечивает отображение информации на экране компьютера.

5. Оператор ввода данных обозначается символом ">>", а при использовании в инструкции cin он считывает информацию с клавиатуры.

6. Выполнение программы завершается с окончанием функции main().

Функции

Любая С++-программа составляется из "строительных блоков", именуемых функциями. Функция — это подпрограмма, которая содержит одну или несколько С++-инструкий и выполняет одну или несколько задач. Хороший стиль программирования на C++ предполагает, что каждая функция выполняет только одну задачу.

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

Функции — это "строительные блоки" С++-программы.

В C++ ни одна функция не может быть встроена в другую. В отличие от таких языков программирования, как Pascal, Modula-2 и некоторых других, которые позволяют использование вложенных функций, в C++ все функции рассматриваются как отдельные компоненты. (Безусловно, одна функция может вызывать другую.)

При обозначении функций в тексте этой книги используется соглашение (обычно соблюдаемое в литературе, посвященной языку программирования C++), согласно которому имя функции завершается парой круглых скобок. Например, если функция имеет имя getval, то ее упоминание в тексте обозначится как getval(). Соблюдение этого соглашения позволит легко отличать имена переменных от имен функций.

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

Поскольку функции образуют фундамент C++, займемся ими вплотную.

Программа с двумя функциями

Следующая программа содержит две функции: main() и myfunc(). Еще до выполнения этой программы (или чтения последующего описания) внимательно изучите ее текст и попытайтесь предугадать, что она должна отобразить на экране.

/* Эта программа содержит две функции: main() и myfunc().

*/

#include <iostream>

using namespace std;

Void myfunc(); // прототип функции myfunc()

Int main()

{

 cout << "В функции main().";

 myfunc(); // Вызываем функцию myfunc().

 cout << "Снова в функции main().";

 return 0;

}

void myfunc() {

 cout << " В функции myfunc(). ";

}

Программа работает следующим образом. Вызывается функция main() и выполняется ее первая cout-инструкция. Затем из функции main() вызывается функция myfunc(). Обратите внимание на то, как этот вызов реализуется в программе: указывается имя функции myfunc, за которым следуют пара круглых скобок и точка с запятой. Вызов любой функции представляет собой С++-инструкцию и поэтому должен завершаться точкой с запятой. Затем функция myfunc() выполняет свою единственную cout-инструкцию и передает управление назад функции main(), причем той строке кода, которая расположена непосредственно за вызовом функции. Наконец, функция main() выполняет свою вторую cout-инструкцию, которая завершает всю программу. Итак, на экране мы должны увидеть такие результаты.

В функции main().

В функции myfunc().

Снова в функции main().

В этой программе необходимо рассмотреть следующую инструкцию.

Void myfunc(); // прототип функции myfunc()

Прототип объявляет функцию до ее первого использования.

Как отмечено в комментарии, это — прототип функции myfunc(). Хотя подробнее прототипы будут рассмотрена ниже, все же без кратких пояснений здесь не обойтись. Прототип функции объявляет функцию до ее определения. Прототип позволяет компилятору узнать тип значения, возвращаемого этой функцией, а также количество и тип парамeтров, которые она может иметь. Компилятору нужно знать эту информацию до первого вызова функции. Поэтому прототип располагается до функции main(). Единственной функцией, которая не требует прототипа, является main(), поскольку она встроена в язык C++.

Как видите, функция myfunc() не содержит инструкцию return. Ключевое слово void, которое предваряет как прототип, так и определение функции myfunc(), формально заявляет о том, что функция myfunc() не возвращает никакого значения. В C++ функции, не возвращающие значений, объявляются с использованием ключевого слова void.

Аргументы функций

Функции можно передать одно или несколько значений. Значение, передаваемое функции, называется аргументом. Несмотря на то что в программах, которые мы рассматривали до сих пор, ни одна из функций (ни main(), ни myfunc()) не принимала никаких значений, функции в C++ могут принимать один или несколько аргументов. Верхний предел числа принимаемых аргументов определяется конкретным компилятором. Согласно стандарту C++ он равен 256.

Аргумент — это значение, передаваемое функции при вызове.

Рассмотрим короткую программу, которая для отображения абсолютного значения числа использует стандартную библиотечную (т.е. встроенную) функцию abs(). Эта функция принимает один аргумент, преобразует его в абсолютное значение и возвращает результат.

// Использование функции abs().

#include <iostream>

#include <cstdlib>

using namespace std;

Int main()

{

 cout << abs(-10);

 return 0;

}

Здесь функции abs() в качестве аргумента передается число -10. Функция abs() принимает этот аргумент при вызове и возвращает его абсолютное значение, которое в свою очередь передаётся инструкции cout для отображения на экране абсолютного значения числа -10. Дело в том, что если функция является частью выражения, она автоматически вызывается для получения возвращаемого ею значения. В данном случае значение, возвращаемое функцией abs(), оказывается справа от оператора "<<" и поэтому законно отображается на экране.

Обратите также внимание на то, что рассматриваемая программа включает заголовок <cstdlib>. Этот заголовок необходим для обеспечения возможности вызова функции abs(). Каждый раз, когда вы используете библиотечную функцию, в программу необходимо включать соответствующий заголовок. Заголовок, помимо прочей информации, содержит прототип библиотечной функции.

Параметр — это определяемая функцией переменная, которая принимает передаваемый функции аргумент.

При создании функции, которая принимает один или несколько аргументов, иногда необходимо объявить переменные, которые будут хранить значения аргументов. Эти переменные называются параметрами функции. Например, следующая функция выводит произведение двух целочисленных аргументов, передаваемых функции при ее вызове.

Void mul (int х, int у)

{

 cout << х * у << " ";

}

При каждом вызове функции mul() выполняется умножение значения, переданного параметру х, на значение, переданное параметру у. Однако помните, что х и у — это просто переменные, которые принимают значения, передаваемые при вызове функции.

Рассмотрим следующую короткую программу, которая демонстрирует использование функции mul().

// Простая программа, которая демонстрирует использование функции mul().

#include <iostream>

using namespace std;

Void mul(int x, int у); // Прототип функции mul().

Int main()

{

 mul (10, 20);

 mul (5, 6);

 mul (8, 9);

 return 0;

}

Void mul(int x, int y)

{

 cout << x * у << " ";

}

Эта программа выведет на экран числа 200, 30 и 72. При вызове функции mul() С++-компилятор копирует значение каждого аргумента в соответствующий параметр. В данном случае при первом вызове функции mul() число 10 копируется в переменную х, а число 20 — в переменную у. При втором вызове 5 копируется в х, а 6 — в у. При третьем вызове 8 копируется в х, а 9 — в у.

Если вы никогда не работали с языком программирования, в котором разрешены параметризованные функции, описанный процесс может показаться несколько странным. Однако волноваться не стонт: по мере рассмотрения других С++-программ принцип использования функций, их аргументов и параметров станет более понятным.

Узелок на память. Термин аргумент относится к значению, которое используется при вызове функции. Переменная, которая принимает этот аргумент, называется параметром. Функции, которые принимают аргументы, называются параметризованными функциями.

Если С++-функции имеют два или больше аргументов, то они разделяются запятыми. В этой книге под термином список аргументов следует понимать аргументы, разделенные запятыми. Для рассмотренной выше функции mul() список аргументов выражен в виде x, у.

Функции, возвращающие значения

В C++ многие библиотечные функции возвращают значения. Например, уже знакомая вам функция abs() возвращает абсолютное значение своего аргумента. Функции, написанные программистом, также могут возвращать значения. В C++ для возврата значения используется инструкция return. Общий формат этой инструкции таков:

return значение;

Нетрудно догадаться, что здесь элемент значение представляет собой значение, возвращаемое функцией.

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

// Демонстрация возврата функциями значений.

#include <iostream>

using namespace std;









Читайте также:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 104;


lektsia.info 2017 год. Все права принадлежат их авторам! Главная