Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мои лекции по С++.doc
Скачиваний:
5
Добавлен:
14.04.2019
Размер:
340.48 Кб
Скачать

6 Функции

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

Используя функции, следует различать три понятия – определение функций (описание действий, которые выполняются функцией – выходной код), объявление функции (задание формы обращения к функции – прототип) и вызов функции.

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

В языке С++ определено несколько способов передачи параметров функции и получения результатов вычисления функции. Существует четыре базовых способа передачи параметров: вызов функции с передачей значений; вызов функции с передачей адресов переменных; вызов функций с использованием механизма отправки или передачи параметров; с помощью глобальных параметров. Но не каждый из этих способов обеспечивает возвращение измененных параметров в основную функцию.

Имя функции может быть параметром для другой функции. Можно организовать также встроенную функцию по схеме

inline void myPrint(void) { cout << " Text" << endl; } ,

что значительно сокращает время выполнения программы. Язык С++ допускает перегрузку функций – вызов функций с одинаковым именем, но с разными типами фактических параметров. Для этого используется отдельный прототип и описание каждого списка параметров.

Пример 6.1.

Создать функция сортировки в одномерном массиве отрицательных элементов на своих местах.

#include <iostream.h>

const int n=5;

int i, mas[n];

int s=0; int *x;

void SortArr(int *x, int n)

{ int i,j,xmin,imin;

for(j=0;j<n-1;j++)

{

if (*(x+j)<0)

xmin=*(x+j);

for(i=j+1;i<n;i++)

if ((*(x+i)<xmin) || (*(x+i)<0))

{xmin=*(x+i); imin=i;}

*(x+imin)=*(x+j); *(x+j)=xmin;

}

}

// Главная функция

int main()

{ x=&mas[0];

cout<<”\n input 5 members of massiv \n”;

for (i=0;i<n;i++;x++) cin>>*x;

cout<<”Your members:\n”;

for(i=0;i<n;i++) cout <<*(mas+i)<<’ ‘;

cout <<”\n”;

SortArr (mas,n);

cout<<” Result:massiv”<<”\n”;

for(i=0;i<n;i++) cout <<*(mas+i)<<’ ‘;

cout <<”\n”;

getch() ;

return(0);

}

6.2 Контрольные вопросы и задания

  1. Для чего нужен прототип функций?

  2. Как запрограммировать функцию с переменным количеством параметров?

  3. Как правильно работать со ссылками и указателями, которые передаются внутрь функций? Необходимо ли разименование?

  4. Использование функция-указателей.

  5. организация работы с массивами в функциях.

  6. Чем использование ссылок отличается от указателей как параметров?

  7. Что такое локальные и глобальные переменные?

  8. Может ли функция быть параметром другой функции?