- •Обязательные свойства алгоритмов
- •3. Логический тип данных. Логические операторы. Операторы сравнения. Логические выражения.
- •6. Оператор цикла с предусловием (…). 1
- •7. Оператор цикла с постусловием. (…) 1
- •8. Оператор условного перехода.
- •9. Операторы переходов (goto, break, сontinue, return).
- •10. Статические массивы (одномерные и многомерные).
- •13. Одномерные динамические массивы.
- •11. Указатели. Арифметика указателей.
- •12. Динамические переменные.
- •Структура файла проекта
- •Структура модуля
- •Структура h-файла
- •16. Функции. Прототипы функций.
- •17. Функции, возвращающие результат. Понятие функции
- •18. Функции типа void.
- •19. Передача параметров функции по значению, по ссылке, с использованием указателей. Передача параметров функции по ссылке и по значению
- •20. Параметры функции – простые переменные, массивы, строки, функции.
- •21. Глобальные и локальные переменные.
Структура h-файла
h-файл генерируется при создании нового модуля. В нем содержится информация о данных и функциях, которые можно использовать в модуле. h-файл для модуля, связанного с формой, содержит описания интерфейсных элементов и других компонентов этой формы и обработчиков событий для них (то есть, в терминологии объектно-ориентированного программирования, описание класса формы). Такие описания автоматически добавляются в h-файл при внесении в форму новых компонентов или генерации новых обработчиков событий. Иными словами, в h-файле содержится интерфейс, а в самом модуле - реализация.
Примечание. При удалении из формы компонентов их описания удаляются из h-файла, а описания обработчиков событий сохраняются. При переименовании компонентов изменяются их описания в h-файле, а также имена и описания обработчиков событий, сгенерированные автоматически. Однако при этом не изменяются ссылки на эти компоненты и обработчики событий, используемые в других функциях, поэтому рекомендуется переименовывать компоненты и обработчики событий сразу же после их создания, пока на них не появились ссылки.
Не рекомендуется удалять из модуля пустые функции (например, случайно созданные шаблоны обработчиков событий). Они не увеличат размер исполняемого файла, но их удаление может привести к невозможности заново сгенерировать обработчик события, если в этом возникнет необходимость.
Отметим, что в модуле могут содержаться функции, не описанные в h-файле, однако видимость их в этом случае ограничивается данным модулем.
Внутри модуля функции могут быть определены и ссылаться друг на друга в произвольном порядке. Если данный модуль ссылается на другие формы и модули, следует с помощью директивы препроцессора #include включить в него соответствующий h-файл с помощью пункта меню File/Include Unit Hdr... . После этого интерфейсные элементы другого модуля будут доступны в данном модуле.
16. Функции. Прототипы функций.
Функция - это группа операторов у которой есть имя. Во всех предыдущих уроках, код наших программ располагался в одной функции - main. Функции позволяют разбить программу на небольшие части, каждая из которых выполняет какую-то небольшую задачу. Посмотрите на полный код морского боя (раздел - Листинги). В нём больше 500 строк кода. Без функций было бы довольно проблематично написать эту программу. В ней используется 11 функций, самая длинная из которых состоит из 50 строк кода.
Обязательными для функции являются два компонента: определение и вызовы.
Прототипом функции в языке Си или C++ называется объявление функции, , но указывает имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функция, прототип функции может восприниматься как описание её интерфейса.
В прототипе имена аргументов являются необязательными, тем не менее, необходимо указывать тип вместе со всеми модификаторами (например, указатель ли это или константный аргумент).
17. Функции, возвращающие результат. Понятие функции
Реальные программы состоят из тысяч, десятков тысяч и, даже миллионов строк кода. Чтобы легче было управлять этим кодом используют функции. Функции это модули в С/С++. Обычно программы пишутся объединяя множество таких модулей (функций), которые могут быть описаны в разных заголовочных файлах. Так, например, в лабораторной работе № 2 вы уже использовали математические функции. Для их использования нужно было подключить заголовочный файл math.h, так как все математические функции описаны в этом файле. Математические функции были разработаны программистами Microsoft, кроме математических функций также есть функции для работы со строками, с вводом и выводом и многим другим.
Для более быстрого понимания функций
Однако можно использовать и пользовательские функции, то есть можно создавать свои собственные. Для создания функций сначала нужно объявить прототип функции, а затем написать её реализацию, как показано в следующем листинге.
Сначала объявляется функция (прототип функции), в которой указывается, какой тип данных она возвращает, и какого типа данных будут параметры этой функции. При объявлении функции в конце должна быть точка с запятой.
Реализация функции описана после главной функции программы. При реализации нужно указать тип возвращаемого значения функции, а также параметры функции и их типы данных.
После этого в фигурных скобках описывается сама реализация этой функции. Если функция имеет тип данных не void, то в теле функции обязательно должен присутствовать оператор return, который возвращает результат соответствующего типа данных.
1 |
#include <iostream> |
2 |
#include <math.h> |
3 |
using namespace std; |
4 |
|
5 |
int my_pow(int, int); //прототип функции my_pow |
6 |
|
7 |
void main() |
8 |
{ |
9 |
float x; |
10 |
float y; |
11 |
float Res = 0; |
12 |
float My_Res = 0; |
13 |
cout << "Enter x = "; |
14 |
cin >> x; |
15 |
cout << "Enter y = "; |
16 |
cin >> y; |
17 |
Res = pow(x, y); |
18 |
cout << "Res = " << Res << endl; |
19 |
My_Res = my_pow(x, y); //Вызов функции my_pow |
20 |
cout << "My_Res = " << My_Res << endl; |
21 |
} |
22 |
|
23 |
int my_pow(float x, float y)//Реализация функции my_pow |
24 |
{ |
25 |
int r = 1; //Тело функции my_pow |
26 |
for(int i = 0; i < y; i++) |
27 |
r = r * x; |
28 |
return r; |
29 |
} |
