PODSTAWY PROGRAMOWANIA ĆWICZENIE NR 4 Funkcje definiowane przez użytkownika Podczas pisania programu często zdarza się, że pewien jego fragment występuje kilkakrotnie, lub chcemy jakąś cześć naszego programu wydzielić w celu jego lepszej przejrzystości. W tym celu stosuje się funkcje, które definiowane są przez użytkownika. Funkcja najkrócej mówiąc, to taki kawałek programu w programie. To tak jakby na potrzeby naszego programu napisać inny „mniejszy” program, który będziemy wielokrotnie uruchamiać. Definiowanie dowolnej funkcji wygląda następująco: Typ_zwracany nazwa_funkcji ( lista_przekazywanych_argumentów) { ..... wnętrze_funkcji ..... return wartość_zwracana_przez_funkcję } Dla przykładu napiszmy funkcję obliczającą silnię z podanej liczby. double silnia(int wartosc) { double wynik=1; int i; for(i=2;i<=wartosc;i++) { wynik=wynik*i; } return wynik; } W linii pierwszej zadeklarowaliśmy, że funkcja będzie zwracać liczbę typu double, nazwa funkcji to silnia i do funkcji przekazywany jest 1 parametr typu int, który wewnątrz funkcji widziany jest pod zmienną o nazwie wartosc. W przypadku gdy do funkcji chcemy przekazać więcej parametrów niż 1, wówczas oddzielamy je przecinkami, na liście_przekazywanych_argumentów. Następnie wewnątrz funkcji jest kod odpowiedzialny, za wyznaczenie wartości silnia z podanej zmiennej. A jako wynik działania funkcji zwracana jest do miejsca jej wywołania wartość zmiennej o nazwie wynik. Teraz napiszmy program, którego zadaniem będzie wyznaczenie wartości silni z podanej przez użytkownika wartości z wykorzystaniem powyższej funkcji. Program taki może wyglądać następująco: #include <iostream.h> #include <conio.h> double silnia(int wartosc) { double wynik=1; int i; for(i=2;i<=wartosc;i++) { wynik=wynik*i; } return wynik; } int main() { int n,i; double wyn; clrscr(); cout<<"Podaj n:"; cin>>n; wyn=silnia(n); cout<<"Silnia z liczby "<<n<<" wynosi "<<wyn<<endl; getch(); return 0; } Zadania do wykonania: 1. Napisać program obliczający sumę dwóch liczb całkowitych z użyciem funkcji użytkownika o nazwie suma. 2. Napisać program obliczający przy użyciu funkcji wartość wyrażenia: n 1 1+ 5 1 1− 5 − Fn = ⋅ ⋅ 5 2 5 2 n np. dla n=7 => Fn=13. Do obliczenia potęgi służy funkcja pow(podstawa, wykładnik) np. pow(3,2) oznacza podniesienie wartości 3 do potęgi drugiej. Aby móc stosować funkcję pow(x, y) w programie należy w linii #include dołączyć bibliotekę matematyczną #include <math.h>. Pierwiastek kwadratowy z danej liczby to funkcja sqrt(dana_liczba) – również potrzebna biblioteka matematyczna math.h. 3. Napisać funkcję z dwoma parametrami wejściowymi wyznaczającą sumę liczb całkowitych z przedziału obustronnie zamkniętego [a; b]. Czyli np. gdy a=3 i b=6, wówczas suma=18. Funkcję wykorzystać w programie, w którym użytkownik poda wartości a i b, a następnie przy użyciu funkcji zostanie wyznaczona suma. Efekt działania programu ma być wyświetlony na ekran. 4. Napisać funkcję o nazwie pierw uruchamianą z 1 parametrem, która będzie sprawdzać czy podana liczba jest liczbą pierwszą. Jeśli TAK wówczas ma zwrócić wartość 1, jeśli NIE ma zwrócić wartość 0. Liczba pierwsza, to taka liczba która jest podzielna tylko przez 1 i przez samą siebie. Pomocny będzie operator wyznaczający resztę z dzielenia dwóch liczb, operator ten to %, A%B -> reszta z dzielenia A przez B. Po napisaniu funkcji napisać program z jej wykorzystaniem, który będzie sprawdzać czy podana przez użytkownika liczba jest liczbą pierwszą oraz będzie wypisywać odpowiednie komunikaty na ekran.