Informatyka II. INF & EIT. Ćwiczenie 2.
Funkcje i moduły
Zagadnienia: Wykorzystanie funkcji w programach. Przekazywanie parametrów do funkcji.
Funkcje przeciążone i rekurencyjne. Inicjacja tablic losowymi danymi. Programy wielomoduło- we. Pliki nagłówkowe. Projekty.
1. Opracować trzy funkcje obliczające sumę dwóch liczb typu double. Dane są następujące pro- totypy:
a) double sum(double, double);
b) void sum(double, double, double* ); // suma zwracana przez wskaźnik c) void sum(double, double, double& ); // suma zwracana przez referencję
2. Opracować funkcję obliczającą iteracyjnie współczynniki dwumianu (x+y)n ze wzoru
! )!
(
! k k n
n k
n
= −
dla k = 0, 1, 2, ..., n.
W szczególności, 0 1
0=
; 1
0 1=
, 1
1 1=
;
0 1 2=
, 2
1 2=
, 1
2 2=
;
0 1 3=
, 3
1 3=
, 3
2 3=
, 1
3 3=
;
3. Zaprojektować funkcję rekurencyjną (funkcja wywołuje sama siebie), która oblicza n! ze wzoru n! = n∗(n-1)!, gdzie 0!=1.
4. Opracować funkcję rekurencyjną (funkcja wywołuje sama siebie), która oblicza współczyn- niki dwumianu (x+y)n z trójkąta Pascala. Współczynniki An[k] (dla k=0, 1, 2, ..., n) należy obliczać ze wzorów: An[0] = An[n] = 1, An[k] = An-1[k-1] + An-1[k], dla k=1,2, ..., n-1.
W szczególności,
A0[0] = 1; A1[0] = 0, A1[1] = A0[0] + A0[1] = 1 + 0 = 1, itd.
1 n=0; k=0;
11 n=1; k=0, k=1;
121 n=2; k=0, k=1, k=2;
1331 n=3; k=0, k=1, k=2, k=3;
5. Napisać program, który losuje k cyfr liczby binarnej do tablicy unsigned char dane[N], gdzie 1<= k <= N, a następnie oblicza wartość dziesiętną liczby. Zadanie zrealizować z wykorzystaniem funkcji losującej dane do tablicy i funkcji obliczającej wartość dziesiętną liczby.
6. Umieścić prototypy funkcji z zadania 1 w pliku nagłówkowym sum.h, a ich definicje w osobnych modułach modul1.cpp, modul2.cpp, modul3.cpp, wykorzystujących plik sum.h.
W programie głównym umieścić plik nagłówkowy oraz wywołania trzech funkcji obliczają- cych sumę liczb. Utworzyć projekt umożliwiający kompilację programu wielomodułowego.
W modułach umieścić dyrektywy kompilacji warunkowej zapobiegające wielokrotnemu dołączaniu pliku nagłówkowego do programu głównego.