Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_3_метод_указания.doc
Скачиваний:
3
Добавлен:
09.11.2018
Размер:
393.73 Кб
Скачать

Лабораторная работа 3 Функции

(для выполнения лабораторной работы №3 необходимо проработать материал лекций №№ 9-11 и разобрать примеры, приведенные в данной методичке)

Примеры вызовов функций 1

Демонстрация функции без аргументов и не возвращающей значения 4

Демонстрация функции, определенной перед ее вызовом 5

Демонстрация функции с аргументами и не возвращающей значения 5

Демонстрация использования глобальных переменных при обмене данными между функциями 6

Демонстрация использования в функции локальных статических переменных 7

Передача в функцию в качестве параметра переменных разных типов 7

Функция вычисления минимального расстояния между точками плоскости 7

Функция вычисления факториала 8

Функция вычисления хn через умножение 9

Функция определения максимального и минимального из двух чисел 9

Функция с параметром перечисляемого типа 10

Функция, выделяющая целую и дробную части вещественного числа 10

Функция, возвращающая ссылку как результат своей работы 11

Демонстрация inline-функций 11

Демонстрация функции с параметрами по умолчанию 12

Перегрузка функций 12

Перегрузка функций с равным числом аргументов 13

Перегрузка функций с разным числом аргументов 13

Шаблоны семейства функций 14

Рекурсивные функции 16

Рекурсивная функция вычисления факториала 16

Рекурсивная функция вывода на печать символов строки в обратном порядке 18

Рекурсивная функция возведения вещественного числа Х в целую степень N>=0 18

Рекурсивная функция печати числа в виде строки символов 19

Вычисление НОД через итерации и через рекурсивную функцию 19

Рекурсивная функция вычисления чисел Фибоначчи 20

Рекурсивная функция вычисления суммы элементов числовой последовательности 20

Рекурсивная функция реверса последовательности вводимых символов 20

Передача функции в качестве параметра 21

Вычисление интеграла по методу левых прямоугольников 21

Вычисление интеграла по методу правых прямоугольников 24

Использование одинаковых вызовов функции для вычисления интеграла разными методами и для разных функций 25

Использование при вычислении интеграла многофайловой компиляции 27

Вычисление корня нелинейного уравнения 29

Правила оформления и вызова функций 33

Элементы оптимизации работы с функциями 34

Примеры вызовов функций

Проанализируйте примеры вызовов функций, обработки возвращаемых значений, использования локальных, глобальных, статических переменных:

//1

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

#define HIGH 5

int main ()

{

int i = HIGH; //локальная переменная i

reset (i/2); //аргумент получает значение 2, но i свое значение не изменяет

//возвращаемое функцией значение пропадает

printf ("%d\n", i); //5

return 0;

}

int reset (int i) //локальная переменная i

{

i = i;

return (i);

}

//2

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

#define HIGH 5

int main ()

{

int i = HIGH; //локальная переменная i

reset (i = i/2); //аргумент получает значение 2,i изменяет свое значение на 2

//возвращаемое функцией значение пропадает

printf ("%d\n", i); //2

return 0;

}

int reset (int i)

{

i = i;

return (i);

}

//3

int reset (int i); //прототип функции

#define LOW 0

#define HIGH 5

int i = LOW; //глобальная переменная i

int main ()

{

int i = LOW; //локальная переменная i

i = reset (i/2); //аргумент i/2 получает значение 0, //i изменяет свое значение на значение 5,

// возвращаемое из функции reset

printf ("%d\n", i); //5

return 0;

}

int reset (int i) //локальная переменная i

{

i = HIGH;

return (i);

}

//4

int reset (int i); //прототипы функций

int workover (int i);

#define LOW 0

#define HIGH 5

#define CHANGE 2

int i = LOW; //глобальная переменная i

int main ()

{

auto int i = HIGH; //локальная переменная i

reset (i/2); //вызов функции с аргументом 2, //i свое значение не изменяет

//возвращаемое функцией значение пропадает

reset (i=i/2); //вызов функции с аргументом 2, //i изменяет свое значение на 2,

//значение, возвращаемое функцией, пропадает

printf ("%d\n", i); //2

i= reset (i/2); //вызов функции с аргументом 1, //i изменяет свое значение на

//значение 5, возвращаемое функцией

workover(i); //вызов функции с аргументом 5

printf ("%d\n", i); //5

return 0;

}

int workover (int i)

{ //локальная переменная i

i = (i%i)*((i*i)/(2*i)+4);

return (i);

}

int reset (int i) //локальная переменная i

{

i = i <=CHANGE? HIGH: LOW;

return (i);

}

//5

int reset (int i); //прототипы функций

int workover (int i);

#define LOW 0

#define HIGH 5

#define CHANGE 2

int i = LOW; //глобальная переменная i

int main ()

{

auto int i = HIGH; //локальная переменная i

reset (i/2); //вызов функции с аргументом 2, //i свое значение не изменяет

//возвращаемое функцией значение пропадает

reset (i=i/2); //вызов функции с аргументом 2, //i изменяет свое значение на 2

//значение, возвращаемое функцией, пропадает

i= reset (i/2); //вызов функции с аргументом 1, //i изменяет свое значение на

//значение 5, возвращаемое функцией

printf ("%d\n", i); //5

workover(i); //вызов функции с аргументом 5

printf ("%d\n", i); //5

return 0;

}

int workover (int i)

{

i = (i%i)*((i*i)/(2*i)+4);

return (i);

}

int reset (int i)

{

i = i <=CHANGE? HIGH: LOW;

return (i);

}

//6

int reset(); //прототипы функций

int next(int);

int last(int);

int neww(int);

int i=1; //глобальная переменная i

int main()

{auto int i, j; //локальные переменные

i=reset();

for (j=1; j<=3; j++)

{next(i); last(i);

printf ("%d\n", neww(i+j));

}

return 0;

}

int reset()

{return(i); //глобальная переменная i

}

int next(int j)

{return(j=i++); //глобальная переменная i , локальная переменная j

}

int last(int j)

{ static int i=10; // локальная переменная j, статическая локальная переменная i

return(j=i--);

}

int neww(int i)

{ auto int j=10; //локальные переменные i и j

return(i=j+=i);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]