Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2 Программирование.doc
Скачиваний:
24
Добавлен:
17.03.2015
Размер:
285.18 Кб
Скачать

Функции с несколькими результатами Цель работы

1. Научиться:

–писать программу, состоящую из нескольких функций;

– правильно оформлять функцию пользователя, используя параметры-ссылки для передачи дополнительных результатов;

– писать прототип функции пользователя;

–вызывать функцию пользователя в функции main;

–размещать текст программы в соответствующих файлах проекта.

2. Составить, выполнить и протестировать указанную задачу с помощью компьютера.

Порядок написания программы

1. Внимательно прочитать условие задачи и формулировку функции.

2. Провести анализ характеристик функции:

Дать название функции;

Выделить список исходных данных функции, определить их типы;

Определить тип результата функции, передаваемого с помощью оператора return.

Определить типы других результатов функции и добавить соответствующие параметры-ссылки.

3. Написать текст функции пользователя.

4. Написать прототип функции.

5. Написать функцию mainс вызовом функции пользователя.

6. Создать проект из двух файлов с расширением cpp(для функции пользователя иmain), и один заголовочный файл с расширениемh. Выполнить проект.

Примечание. Вызов функцииRusперед строками-константами с русским текстом осуществляйте самостоятельно.

Примеры написания программ

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

Анализ решения задачи.

1. Название функции: kvadr

2. Исходные данные (коэффициенты double a,b,c)

3. Результаты:

через return передаем результат типа bool (вычислены ли корни?)

через параметры-ссылки передаем значения корней

double &x1; double &x2;

Программа будет строиться в виде проекта.

Текст функции пользователя будет выглядеть так:

// содержимое файла kvadr.cpp

#include <math.h>

bool kdvadr(double a, double b, double c, double &x1, double &x2)

{

double d;

d = b*b-4*a*c;

if (d>=0)

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

return true;

}

else return false;

}

Текст заголовочного файла будет выглядеть так:

// содержимое файла kvadr.h

#ifndef KVADR_H

#define KVADR_H

bool kdvadr(double a, double b, double c, double &x1, double &x2);

#endif

Текст функции main будет выглядеть так:

// содержимое файла main.cpp

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include "kvadr.h"

#include "Rus.h" //прототип функции русификации

int main (void)

{

double a, b, c, x1, x2;

bool result;

cout << "\nВведите коэффициенты" << endl;

cin >> a >> b >> c;

result = kdvadr (a,b,c, x1, x2);

if (result == true)

cout << "\nx1=" << x1 << "\nx2=" << x2 << endl;

else

cout << "\nНет корней" << endl;

return 0;

}

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

1. Что такое ссылка?

2. Сколько раз инициализируется ссылка? Чем?

3. Можно ли переназначить ссылку в программе?

4. Когда в функции используется параметр ссылка?

5. Как объявить параметр ссылку?

6. Как написать аргумент, соответствующий параметру ссылке?

7. Объявите ссылку на вещественное число.

8. Присвойте ссылке 3.14.

9.Сравните передачу данных по значению и ссылке (по форме и содержанию).

10. Для наилучшего освоения темы выполните варианты 4, 6, 13.