Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_Си 6-7.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
110.7 Кб
Скачать

Содержание отчета и его форма

Выполните все описанные пункты задания, письменно оформите отчет, который должен содержать:

– тему, цель лабораторной работы;

– условия, блок–схемы, программы и результаты выполнения заданий.

Контрольные вопросы и защита работы

  1. Правила объявления и инициализации строк в Си.

  2. Функции обработки строковых данных.

  3. Что такое структура? Как обратиться к полю структуры?

  4. Как ввести структуру?

  5. Может ли существовать массив структур? Можно ли в вашей программе использовать массив структур?

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

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

ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ в С++

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

Теоретическое обоснование

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

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

<тип > <имя_функции>(<формальные параметры>){<тело функции >}

Если тип возвращаемого функцией значения не указан, то подразумевается int. Параметры, записываемые в обращении к функции, называются фактическими; параметры, указанные в описании функции – формальными. Фактические пара­метры должны соответствовать формальным по количеству, порядку следования и типу. Параметры, объявленные в основной программе, действуют в любой функции и называются глобальны­ми. Параметры, объявленные в функции, действуют только в ней и называются локальными. Все формальные параметры являются локаль­ными для данной функции. В теле функции должен быть хотя бы один оператор return <выражение>, определяющий возвращаемое функцией значение. Вызов функции может быть оформлен в виде оператора, если у функции отсут­ствует возвращаемое значение, или в виде выражения, если существует возвращаемое значение. При вызове функции устанавливаетcя взаимно однозначное соответствие между фактическими и формальными параметрами, затем управление передается функции. После ее выполнения управ­ление передается следующему, после вызова функции, оператору вызывающей программы. Прототип функции может указываться до вызова функции вместо описания функции для того, чтобы компилятор мог выполнить проверку соответствия типов аргументов и параметров. Прототип функции по форме такой же, как и заголовок функции, в конце его ставится «;». Функции можно подключать с помощью директивы #include <имя файла>. Функции удобно использовать в диалоговых программах с пользовательским меню, позволяющих выбрать один из режимов.

Пример 1: Составить программу, решающую одну из двух задач из предыдущих работ. Использовать меню для выбора решаемых задач.

#include <iostream.h>

#include <stdlib.h>

#include "lab_5.cpp" //подключение файла с функцией mas1

#include "lab_6.cpp" //подключение файла с функцией mas2

int main()

{ int nom;

while (1) // Организация меню

{cout <<endl<< " 1. Work 1 " << endl;

cout << " 2. Work 2 "<< endl;

cout << " 3. Конец работы программы" << endl;

cout <<" Выберите 1, 2 или 3 : ";

cin>>nom;

switch (nom)

{ case 1: mas1( ); break;

case 2:mas2(); break;

case 3: return 0;

default: cout <<" Такого режима нет \n";

}

}

return 0;}

В этой программе использованы функции mas1 и mas2 без параметров, которые содержат функции, решающие задания 1 и 2. Каждая из них должна иметь вид:

int mas1()

{ // операторы, выполняющие задание 1

return 0;

}

Пример 2. Функции c параметрами и прототипами. Составить программу, содержащую обращение к функции вычисления максимума из двух чисел:

# include <iostream.h>

int max(int,int); // прототип функции max

main()

{ int x, y, z;

cout <<" Поочередно введите х и у"<<endl; cin >>х>>y;

z=max (х, y) ; //вызов функции max, где x,y– фактические параметры

cout << "Значение z= "<< z <<endl;

return 0;}

int max (int a, int b) // a,b– формальные параметры

{int с; // локальная переменная

if (a>=b) c=a; else c=b;

return с; }

Описание функции в примере 2 находится в одном файле с главной программой и объявляется в прототипе. Прототип функции mах() необходим компилятору для проверки соответствия типов аргументов и параметров при вызове функции. При вызове функции max значения аргументов х и у подставляются вместо параметров а и b соответственно. После выполнения тела функции возвращаемое значение c передается в место вызова функции и присваивается переменной z.

Функцию mах можно поставить вместо прототипа перед функцией main(). Так же описание функции max может находиться и в файле, например, maxim.cpp. При этом добавляется директива #include "maxim.cpp".