Programowanie strukturalne i obiektowe Funkcje

Transkrypt

Programowanie strukturalne i obiektowe Funkcje
Semestr II
Arkusz zadań 6
Programowanie strukturalne i obiektowe
Funkcje
Procedura lub funkcja to fragment kodu, który jest wpisywany raz, ale może być wykonywany wielokrotnie. Realizuje on
najczęściej jakąś pojedynczą czynność przy użyciu ustalonego przez programistę algorytmu. Jak wiemy, działanie wielu
algorytmów składa się na pracę całego programu, możemy więc powiedzieć, że procedury i funkcje są podprogramami,
których cząstkowa praca przyczynia się do funkcjonowania programu jako całości.
Procedura to wydzielony fragment kodu programu, którego zadaniem jest wykonywanie jakiejś czynności.
Funkcja zawiera kod, którego celem jest obliczenie i zwrócenie jakiejś wartości.
Zadanie 1.
Stworzyć plik funkcje1.cpp i wpisać w nim następujący kod:
#include <iostream>
using namespace std;
void pokazTekst()
{
cout << "Moja pierwsza funkcja\n";
}
int main()
{
pokazTekst();
system("pause");
return 0;
}
następnie skompilować plik oraz uruchomić program.
Powyższy program ukazywał przeznaczenie funkcji (czyli podział kodu na fragmenty), jednakże pomijał dwa bardzo
ważne aspekty z nimi związane. Chodzi mianowicie o parametry oraz zwracanie wartości. Rozszerzają one użyteczność i
możliwości funkcji tak znacznie, że bez nich w zasadzie trudno wyobrazić sobie skuteczne i efektywne programowanie.
Nie tylko w programowaniu trudno wskazać operację, którą można wykonać bez posiadania o niej dodatkowych
informacji. Przykładowo, nie można wykonać operacji kopiowania czy przesunięcia pliku do innego katalogu, jeśli nie jest
znana nazwa tegoż pliku oraz nazwa docelowego folderu.
Gdybyśmy napisali funkcję realizującą taką czynność, to nazwy pliku oraz katalogu finalnego byłyby jej parametrami.
Parametry funkcji to dodatkowe dane, przekazywane do funkcji podczas jej wywołania.
Parametry pełnią rolę dodatkowych zmiennych wewnątrz funkcji i można ich używać podobnie jak innych zmiennych,
zadeklarowanych w niej bezpośrednio. Różnią się one oczywiście tym, że wartości parametrów pochodzą z „zewnątrz” –
są im przypisywane podczas wywołania funkcji.
Zadanie 2.
Stworzyć plik suma.cpp i wpisać w nim następujący kod:
#include <iostream>
using namespace std;
void Suma(int l1, int l2)
{
int suma = l1 + l2;
cout << "Suma liczba wynosi: " << suma << endl;
Cosinus 2008 Cezary Obczyński i Rafał Kamocki
1/4
Semestr II
Arkusz zadań 6
Programowanie strukturalne i obiektowe
}
int main()
{
int liczba1 = 10;
int liczba2 = 15;
Suma(liczba1, liczba2);
int l1;
cout << "Podaj pierwsza liczbe: ";
cin >> l1;
int l2;
cout << "Podaj druga liczbe: ";
cin >> l2;
Suma(l1,l2);
system("pause");
return 0;
}
następnie skompilować plik oraz uruchomić program.
Spora część funkcji pisanych przez programistów ma za zadanie obliczenie jakiegoś wyniku (często na podstawie
przekazanych im parametrów). Inne z kolei wykonują operacje, które nie zawsze muszą się udać (choćby usunięcie pliku
– dany plik może przecież już nie istnieć). W takich przypadkach istnieje więc potrzeba, by funkcja zwróciła jakąś wartość.
Niekiedy będzie to rezultat jej intensywnej pracy, a innym razem jedynie informacja, czy zlecona funkcji czynność została
wykonana pomyślnie.
Zadanie 3.
Stworzyć plik pole.cpp i wpisać w nim następujący kod:
#include <iostream>
using namespace std;
int Pole(int a, int b)
{
int pole = a * b;
return pole;
}
int Obwod(int a, int b)
{
return 2*a*b;
}
Cosinus 2008 Cezary Obczyński i Rafał Kamocki
2/4
Semestr II
Arkusz zadań 6
Programowanie strukturalne i obiektowe
int main()
{
int boka = 5;
int bokb = 5;
int obwod;
obwod = Obwod(boka, bokb);
cout << "Pole prostokata wynosi: " << Pole(boka,bokb) << endl;
cout << "Obwod prostokata wynosi: " << obwod << endl;
system("pause");
return 0;
}
następnie skompilować plik oraz uruchomić program.
Zadanie 4.
Napisać funkcję o nazwie trojmian, która zwraca liczbę pierwiastków równania kwadratowego postaci ax^2+bx+c=0
(założyć, ze a jest różne od zera). Funkcja pobiera współczynniki a, b, c. Następnie wykorzystać ją w przykładowym
programie.
Zadanie 5.
Napisać funkcję o nazwie potega, która oblicza n-tą potęgę liczby 2. Funkcja pobiera wykładnik n i zwraca potęgę liczby
2 o wykładniku n. Przetestować tę funkcję w przykładowym programie.
Zadanie 6.
Napisać funkcję pole, która pobiera trzy liczby rzeczywiste a, b, c reprezentujące długości boków trójkąta i zwraca jego
pole obliczone ze wzoru Herona: sqrt(p*(p-a)*(p-b)*(p-c)), gdzie p jest połową obwodu trójkąta. Za pomocą tej funkcji
obliczyć pole przykładowego trójkąta.
Zadanie 7.
Napisać funkcję o nazwie wybraneLiczby, która pobiera dwie liczby całkowite dodatnie reprezentujące końce
przedziału liczbowego i zwraca ilość liczb całkowitych z tego przedziału, które są podzielne przez 3 i 4.
Przeciążanie funkcji
C++ umożliwia tworzenie wielu funkcji o tej samej nazwie i o tym samym przeznaczeniu. Mechanizm ten nazywa się
przeciążaniem lub przeładowaniem funkcji. Listy parametrów funkcji przeciążonych muszą się różnić od siebie albo
typami parametrów, albo ich ilością, albo jednocześnie typami i ilością. Na przykład:
float Suma(int,int);
float Suma(double,double);
float Suma(int,int,int);
Najczęściej funkcji przeciążonych używa się, gdy chcemy wykonać tę samą czynność na różnych typach danych lub
różnej ilości danych.
float Suma(int a, int b)
{
Cosinus 2008 Cezary Obczyński i Rafał Kamocki
3/4
Semestr II
Arkusz zadań 6
Programowanie strukturalne i obiektowe
return a + b;
}
float Suma(double a, double b)
{
return a + b;
}
float Suma(int a, int b, int c)
{
return a + b + c;
}
Cosinus 2008 Cezary Obczyński i Rafał Kamocki
4/4

Podobne dokumenty