Лабораторная работа №7
Тема: Разработка и отладка алгоритмов и программ с использованием пользовательских функций
Цель работы : Приобретение навыков работы с функциями.
Оснащение: IBM PC, Borland C++ 5.02
Краткие теоретические сведения:
Функции – это блоки языка программирования, самостоятельные единицы программы, спроектированные для решения конкретных задач, обычно повторяющиеся несколько раз.
Основная форма описания функции имеет вид:
тип имя_функции (список_параметров)
{
тело_функции
}
Тип определяет тип значения, которое возвращает функция с помощью оператора return. Список параметров состоит из перечня типов и имен передаваемых параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки необходимы в любом случае.
Вначале кода программы функцию необходимо объявить, используя прототип функции.
Пример 7.1. Выполнить вычисление по формуле, используя функцию:
z = x2 + y2 .
Вариант 1 (без прототипа)
# include<stdio.h>
# include<math.h>
double fn(double x, double y)
{ return x*x+y*y; }
main()
{
double x, y, z;
printf("Введите х и y");
scanf("%lf%lf", &x, &y);
z=fn(x, y);
printf("z равно %lf", z);
return 0;
}
Вариант 2 (с прототипом)
# include<stdio.h>
# include<math.h>
double fn(double x, double y); //прототип функции
main()
{
double x, y, z;
printf("Введите х и y");
scanf("%lf%lf", &x, &y); //используется спецификатор %lf для
// данных типа double
z=fn(x, y);
printf("z равно %lf", z);
return 0;
}
double fn(double x, double y) //описание функции
{ return x*x+y*y; }
Как видно из примера 5.1, описание функции может быть произведено до и после функции main, а объявление функции, т.е. задание ее прототипа необходимо производить до функции main. В примере 5.1 прототипом функции является строка double fn(double x,double y);.
В качестве аргумента (передаваемого значения) функции можно использовать массив. Одним из способов объявления такой функции является строка:
тип имя_функции(тип_элементов_массива *имя_массива);
Пример 7.2. Объявить функцию, в качестве аргумента которой используется массив с именем ar, состоящий из 10 элементов типа int.
1 способ: void sort(int *ar);
2 способ: void sort(int ar[]);
3 способ: void sort(int ar[10]);
Массивы всегда передаются по ссылке
Пример 5.3. Оформить сортировку массива в виде функции.
# include<stdio.h>
void sort(int *arr, int n); //прототип функции, принимающей массив
// и целое число
main()
{
int mass[10]={1,3,-5,7,9,0,22,4,6,8};
int size=10, i;
for(i=0; i<10; i++)
printf(" %d",mass[i]); //вывод массива на экран
sort(mass, size); //вызов функции сортировки
printf("\n");
for(i=0; i<10; i++)
printf(" %d",mass[i]); //вывод уже отсортированного массива
return 0;
}
void sort(int *arr, int n)
{
int i, j, tmp;
for(i=0; i<n-1 ; i++)
for(j=0; j<n-i-1 ; j++)
if(arr[j+1] < arr[j])
{ tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } //меняем //местами
}
Задания
В соответствии с номером варианта выполнить задания лабораторной работы № 1, используя функции. Функции необходимо описывать после функции main()
Обсудить на форуме