Главная страница
Навигация по странице:

  • Пример

  • Контрольные

  • Варианты

  • Лаб.раб. Министерство образования и науки российской федерации пензенский государственный


    Скачать 0.8 Mb.
    НазваниеМинистерство образования и науки российской федерации пензенский государственный
    Дата05.09.2022
    Размер0.8 Mb.
    Формат файлаdocx
    Имя файлаЛаб.раб.docx
    ТипМетодические указания
    #662566
    страница8 из 8
    1   2   3   4   5   6   7   8

    Лабораторнаяработа7


    Тема: "Подпрограммы. Функции"

    Цель работы: изучение правил составления и использования функций в программах на С++.

    Краткие теоретические сведения.

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

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

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

    Описание функции состоит из заголовка и тела функции:

    тип имя_функции(список_переменных)

    {

    тело_функции

    }

    Заголовок функции содержит:

    • тип возвращаемого функцией значения, он может быть любым; если функция не возвращает значения, указывают тип void;

    • имя_функции;

    • список_переменных — перечень передаваемых в функцию величин (аргументов), которые отделяются друг от друга запятыми; для каждой переменной из списка указывается тип и имя; если функция не имеет аргументов, то в скобках указывают либо тип void, либо ничего.

    Тело функции представляет собой последовательность описаний и операторов, заключённых в фигурные скобки.

    В общем виде структура программы на C++ может иметь вид:

    директивы компилятора

    тип имя_1(список_переменных)

    {

    тело_функции_1;

    }

    тип имя_2(список_переменных)

    {

    тело_функции_2;

    }

    ...

    тип имя_n(список_переменных)

    {

    тело_функции_n;

    }

    int main (список_переменных)

    {

    //Тело функции может содержать операторы вызова

    //функций имя_1, имя_2, ..., имя_n тело_основной_функции;

    }

    Однако допустима и другая форма записи программного кода :

    директивы компилятора

    тип имя_1(список_переменных); тип имя_2(список_переменных);

    ...

    тип имя_n(список_переменных); int main (список_переменных)

    {

    //Тело функции может содержать операторы вызова

    // функций имя_1, имя_2, ..., имя_n тело_основной_функции;

    }

    тип имя_1(список_переменных)

    {

    тело_функции_1;

    }

    тип имя_2(список_переменных)

    {

    тело_функции_2;

    }

    ...

    тип имя_n(список_переменных)

    {

    тело_функции_n;

    }

    Здесь функции описаны после функции main(), однако до неё перечислены заголовки всех функций. Такого рода опережающие заголовки называют прототипами функций. Прототип указывает компилятору тип данных, возвращаемых функцией, тип переменных, выступающих в роли аргументов, и порядок их следования. Прототипы используются для проверки правильности вызова функций в основной программе.

    Вызвать функцию можно в любом месте программы. Для вызова функции необходимо указать её имя и в круглых скобках, через запятую перечислить имена или значения аргументов, если таковые имеются:

    имя_функции(список_переменных);

    Рассмотрим пример. Создадим функцию f(), которая не имеет входных значений и не формирует результат. При вызове этой функции на экран выводится строка символов "С Новым Годом, ".

    #include using namespace std;

    void f ( ) //Описание функции.

    {

    cout << Новым Годом, ";

    }

    int main ( )

    {

    f ( ); //Вызов функции. cout <<"Студент!" << endl; f ( ); //Вызов функции.

    cout <<"Преподаватель!" << endl; f ( ); //Вызов функции.

    cout <<"Народ!" << endl;

    }

    Результатом работы программы будут три строки:

    С Новым Годом, Студент!

    С Новым Годом, Преподаватель! С Новым Годом, Народ!

    Далее приведён пример программы, которая вычисляет значение выражения sin2(α)+cos2(α) при заданном значении α. Здесь функция radian выполняет перевод градусной меры угла в радианную1.

    #include #include #define PI 3.14159 using namespace std;

    double radian ( int deg, int min, int sec )

    {

    return ( deg * PI/180+min* PI /180/60+ sec * PI /180/60/60);

    }

    int main ( )

    {

    int DEG, MIN, SEC; double RAD;

    //Ввод данных.

    cout<<" Input :"< //Величина угла: cout<<" DEG ="; cin >>DEG; //градусы, cout<<" MIN ="; cin >>MIN; //минуты, cout<<" SEC ="; cin >>SEC; //секунды.

    //Величина угла в радианах.

    RAD=radian (DEG, MIN, SEC); //Вызов функции. cout << " Value in radian A="<
    //Вычисление значения выражения и его вывод. cout << " sin (A) ^2+ cos (A) ^2= ";

    cout << pow( sin (RAD), 2 )+pow( cos (RAD), 2 ) << endl; return 0;

    }

    Переменные, описанные внутри функции, а также переменные из списка аргументов, являются локальными. Например, если программа содержит пять разных функций, в каждой из которых описана переменная N, то для C++ это пять различных переменных. Область действия локальной переменной не выходит за рамки функции. Значения локальных переменных между вызовами одной и той же функции не сохраняются.

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

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

    Пример выполнения задания.

    Задание. Найти максимальную сумму элементов строк матрицы 3×5 с использованием функций.

    Схемы программ функций ввода-вывода и обработки данных представлены на рисунках 25 и 26. Схема главной функции main представлена на рисунке 27:

    Inparr (а[m][n]) outarr (а[m][n])





    Рисунок 25 Функции ввода и вывода массива данных

    processarr (a[m][n])




    Рисунок 26 Функция обработки массива данных





    Рисунок 27 Главная функция программы main

    Пример программы:

    #include const int m=3, n=5;

    //функция ввода

    void inparr(int a[m][n])

    {

    int i,j;

    for (i=0;i (j=0;j

    scanf("%d",&a[i][j]);

    }

    //функция вывода

    void outarr (int a[m][n])

    {

    int i,j; printf("Matrica:\n"); for (i=0; i
    {

    for (j=0; jprintf("\n");


    }

    }

    int processarr(int a[m][n])

    {

    int i,j,s,max; for(i=0;i

    {

    s=0;

    for (j=0;js+=a[i][j];


    if (i==0) max=s;

    else if (max max=s;

    }

    return max;

    }
    void main()

    {

    int b[m][n]; inparr(b); outarr(b);

    printf("Maximalnaya summa stroki = %d", processarr(b));

    }

    Контрольные вопросы

    1. Структура функции в языке С++, ее заголовок.

    2. Вызов функции.

    3. Способы передачи параметров.

    4. Оператор return (2 формы записи).

    5. Описание функции (прототип).


    Варианты заданий

    См. задание к лабораторной работе 5.





    1   2   3   4   5   6   7   8


    написать администратору сайта