Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
433 Кб
Скачать
☆

Лабораторна робота №5

Тема: Функції. Визначення. Оголошення. Передача параметрів. Класи пам’яті.

Мета: отримання практичних навичок у роботі з функціями користувача, передачею параметрів, використання класів пам’яті при оголошенні змінних та функцій.

Контрольні запитання:

  1. Визначити значення наступних арифметичних виразів:

sqrt(16.0)

sqrt(16)

pow(2.0, 3.0)

pow(2, 3)

pow(2.0, 3)

pow(1.1, 2)

abs(3)

abs(-3)

abs(0)

fabs(-3.0)

fabs(-3.5)

fabs(3.5)

ceil(5.1)

ceil(5.8)

floor(5.1)

floor(5.8)

pow(3.0, 2) / 2.0

pow(3.0, 2)/2

7 / abs(-2)

(7+sqrt(4.0)) / 3.0

sqrt(pow(3, 2))

  1. Що виведе наведена нижче програма?

#include <iostream>

using namespase std;

char mystery(int first_par, int second_par);

int main()

{

cout<<mystery(10, 9)<< “ow\n”;

return 0;

}

char mystery (int first_par, int second_par)

{

if (first_par >= second_par)

return ‘W’

else

return ‘H’;

}

  1. Опишіть механізм виклику функції.

  2. Перерахуйте спільне і відмінне між використанням перевизначеної (наприклад, бібліотечної ) функції і функції, заданої користувачем.

  3. Поняття часу життя та області видимості об’єкта.

  4. Якими об’єктами є функції в Сі?

  5. Перелічити усі випадки, коли в Сі використовується тип void. Дати визначення цього типу.

  6. Перелічити класи пам'яті, визначені в Сі. Що визначає клас пам'яті? У яких випадках і якому образі клас пам'яті визначається за замовчуванням? Привести приклади.

  7. Що означає СКП static для змінної описаної на внутрішньому та зовнішньому рівнях?

  8. Чи визначений у Сі клас пам'яті для функцій? Якщо визначений, то яким чином; якщо ні, то чому.

  9. Чи припустима в Сі вкладеність функцій? Чи можна в Сі якимось чином керувати видимістю функцій?

  10. Чи еквівалентні наступні оголошення функцій:

a) double f ( ); і double f (void);

b) char g ( int i, char c); і char g ( int, char);

c) h ( double x); і int h ( double x);

d) void h ( int ); і h ( int );

e) extern int q ( int ); і int q ( int);

f) static void s ( char c); і void s ( char c);

0

  1. Визначити, які конструкції є визначеннями, а які оголошеннями; де вони можуть розташовуватися і що позначають:

int i; char c = ‘a’; extern int f ( int, char );

static int j; register int b; double g( ) { return 3.141592; };

extern long k; int h ( int i ); static char q( int, double );

auto short n; s(); static void p( int i ) { };

  1. Чи вірні наступні твердження:

a) «тип виразу в операторі return повинний збігатися з типом результату функції»

b) «функція, що не повертає результату (тип результату void), може не містити оператор return;»

c) «функція, що повертає результат, може не містити оператор return А; але викликає іншу функцію, що містить такий оператор»

d) «функція, що повертає результат, може містити декілька операторів return А; »

e) «у Сі аргументи функції завжди передаються за значенням»

f) «у тілі однієї функції можуть знаходитися два різних оператори, позначених однаковими мітками, якщо ці оператори знаходяться в різних блоках»; наприклад,

void f(void)

{ ... label: S1; ...

{ ... label: S2; ... goto label; ...}

... goto label; ...

}

g) «у Сі не можна використовувати двох (чи більше) взаємно рекурсивних функцій»; наприклад, якщо є void f(void){... g();...} і void g(void){...f();...}, те програма, що використовує такі функції, буде помилковою.

h) «у Сі можна ввійти в блок, минаючи його заголовок; при цьому пам'ять під локальні перемінні, описані в цьому блоці, буде відведена, але ініціалізація (якщо вона є) виконуватися не буде»

i) «будь-яка функція, описана в якому-небудь файлі, що входить до складу програми, може бути використана в цьому і будь-якому іншому файлі цієї програми»

  1. У яких випадках у Сі можлива ініціалізація змінних? Коли вона відбувається? Як визначається ініціалізація за замовчуванням?

ЗАВДАННЯ 1:

Варіант 1.

1. За даними дійсними числами a, b обчислити: , де .

Варіант 2.

Дано координати вершин двох трикутників. Визначити, який з них має більшу площу.

Варіант 3.

Описати функцію Power(X,N) обчислення цілого степеня числа (Y=XN)

Варіант 4.

Дано дійсні числа x, y та z. Обчислити: .

Варіант 5

Дано дійсні числа x, y. Обчислити: , де .

Варіант 6.

Дано дійсні числа s, t. Обчислити: , де .

Варіант 7.

Опишіть функцію, яка як початкові параметри використовує довжини трьох сторін трикутника (S1,S2,S3) і визначає площу трикутника, обчислену за формулою

, де

Напишіть програму, яка використовує цю функцію.

Варіант 8.

Опишіть підпрограму-функцію для знаходження значення функції cos(x) за розкладом в ряд Тейлора із заданою точністю: . Складіть програму, яка використовує цю функцію.

Варіант 9.

Дано дійсні числа x, y. Обчислити: , де .

Варіант 10

Дано дійсні числа s, t. Обчислити: , де .

Варіант 11

Опишіть підпрограму-функцію для знаходження значення функції ex за розкладом в ряд Тейлора із заданою точністю: . Складіть програму, яка використовує цю функцію.

Варіант 12

Опишіть підпрограму-функцію для знаходження значення функції sin(x) за розкладом в ряд Тейлора із заданою точністю: . Складіть програму, яка використовує цю функцію.

ЗАВДАННЯ 2:

Варіант 1

Опишіть рекурсивну підпрограму-функцію для знаходження суми парних двоцифрових чисел: S=10+12+14+…+96+98. Складіть програму, яка використовує цю функцію.

Варіант 2

Опишіть рекурсивну підпрограму-функцію для знаходження суми трицифрових чисел – повних квадратів: S=100+121+ +144+…+900+961. Складіть програму, яка використовує цю функцію.

Варіант 3

Опишіть рекурсивну підпрограму-функцію для обчислення довільного N-го члена послідовності Фібоначі, якщо існує така залежність:

Знайти суму N перших членів цієї послідовності. В якості параметра підпрограмі передається номер елемента N. Складіть програму, яка використовує цю функцію.

Варіант 4

Опишіть рекурсивну підпрограму-функцію Squares(N) для обчислення суми квадратів N цілих чисел (12+22+…N2). Складіть програму, яка використовує цю функцію.

Варіант 5

Описати рекурсивну функцію обчислення значення A(n,m) - функції Акермана для невід’ємних цілих чисел n і m:

m+1 якщо n = 0

A(n, m) = A(n-1,1) якщо n  0, m = 0

A(n-1, A(n, m-1)) якщо n>0, m>0

За допомогою цієї функції знайти значення A(5,8).

Варіант 6

. Описати рекурсивну функцію обчислення xn для дійсного x (x  0) і цілого n:

 1 при n = 0

xn =  1/x|n| при n < 0

 x xn-1 при n > 0

Протестувати цю функцію на придатних наборах вхідних даних.