Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałJeronim Rasiński Został zmieniony 10 lat temu
1
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Opracował: Konrad Kasprzyk Funkcje w języku c++ Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
2
Definicja funkcji Funkcja (ang. function) jest fragmentem kodu programu, któremu nadano nazwę i który możemy wielokrotnie wywoływać z różnych miejsc programu przez podanie jej nazwy i ewentualnych argumentów, jeśli istnieją. Każda funkcja przed wykorzystaniem musi być zdefiniowana. Funkcji używamy cały czas, jak choćby jednej o nazwie main(), która stanowi punkt początkowy każdego programu C++ i od niej zaczyna się jego wykonywanie.
3
Budowa funkcji Funkcja to fragment kodu wykonujący ściśle określone zadanie. Podaje się jej dane, na których ma działać, a w zamian otrzymuje się wynik przetwarzania tych danych. Dane wejściowe funkcji nazywają się argumentami funkcji, natomiast to, co funkcja zwraca nazywa się wartością zwrotną funkcji. Funkcja w teorii wygląda następująco: typ_zwracanej_wartosci nazwa_funkcji( typ_argumentu_1 nazwa_argumentu_1, (...), typ_argumentu_n nazwa_argumentu_n ) { return zwracana_wartosc; }
4
Budowa funkcji Każda funkcja posiada trzy własności:
zwraca dane (lub nie jeśli tego nie chcemy); posiada swoją nazwę; może posiadać dowolną liczbę argumentów wejściowych. Pierwszy składnik definicji funkcji to typ zwrotny. Określa on jakiego typu zmienną zwraca funkcja. Gdyby funkcja zwracała tekst, byłaby to zmienna typu string, a gdyby zwracała wynik obliczeń, typem zwrotnym byłby np. int albo double. Drugi składnik to nazwa funkcji. Znasz już m.in. funkcje o nazwie main(). Ważne jest aby nazwa funkcji odzwierciedlała jej przeznaczenie, podobnie jak jest w przypadku zmiennych. W nawiasach znajduje się lista argumentów funkcji. Są to dane, na których funkcja będzie działać. Funkcja może przyjmować jeden argument (np. funkcja sqrt()), więcej argumentów (np. funkcja pow()) albo nie przyjmować argumentów w ogóle. Ostatnim składnikiem funkcji są klamry zawierające jej instrukcje. W klamrach tych znajdują się wszystkie instrukcje, które odpowiadają za działanie funkcji, identycznie jak w funkcji main().
5
Budowa funkcji W praktyce przykładowa funkcja wygląda następująco:
void moja_funkcja() { cout << „To moja pierwsza" << endl; cout << „przykładowa" << endl; cout << „funkcja." << endl; } Po jej wywołaniu ujrzymy na ekranie tekst w niej zawarty.
6
Wywoływanie funkcji Wywoływanie funkcji jest bardzo proste wystarczy wpisać jej nazwę i jej argumenty, jeśli je posiada oraz ewentualnie przekazać wartości do funkcji, jeśli są one wymagane. nazwa_funkcji( wartosc_argumentu_1,(...), wartosc_argumentu_n ); W praktyce, żeby wywołać funkcję z poprzedniego slajdu wystarczy w funkcji main() wpisać: moja_funkcja(); I funkcja się wywoła.
7
Zmienne lokalne funkcji
Każda funkcja może posiadać swój własny zestaw zmiennych, które nazywamy zmiennymi lokalnymi (ang. local variables). Czas życia zmiennej lokalnej ogranicza się do funkcji, w której zostały zdefiniowany. W różnych funkcjach mogą istnieć zmienne o takich samych nazwach, jednakże są to różne zmienne i nie wpływają na siebie nawzajem. Poniższy program demonstruje izolację zmiennych lokalnych. W funkcjach main() i f() tworzymy zmienną lokalną o nazwie a. Zmiennej a przypisujemy w main() wartość 29, po czym wyświetlamy zawartość a. Następnie zostaje wywołana funkcja f(), która tworzy swoją zmienną a, przypisuje jej wartość 5 i wyświetla ją. Po powrocie z funkcji f() do main() zostaje ponownie wyświetlona zmienna a należąca do main(). Zwróć uwagę, że wywołanie f() nie zmieniło wartości tej zmiennej - wciąż jest w niej liczba 29. Funkcja f() operowała na swojej lokalnej zmiennej a, a nie na zmiennej a należącej do main(). #include <iostream> using namespace std; void f() { int a; a = 5; cout << a << endl; } int main() { a = 29; cout << a << endl; f(); return 0; }
8
Przekazywanie argumentów do funkcji
W języku C++ argumenty możemy przekazywać na dwa sposoby: Przekazywanie przez wartość Przekazywanie przez referencję Na następnych slajdach omówię po krótce oba sposoby.
9
Przekazywanie przez wartość
W tym przypadku funkcja otrzymuje wartości jako argumenty. Ten typ przekazywania argumentów do funkcji pozwala stosować przy wywołaniu wyrażenia w miejscu argumentów. Komputer oblicza wartość danego wyrażenia i przekazuje ją funkcji w danym argumencie. Funkcja otrzymaną wartość może dowolnie modyfikować. Poniższy program zawiera prostą funkcję pisz2(), która wymaga argumentu x typu int. Otrzymany argument funkcja zwiększa o 2, a następnie wyświetla w oknie konsoli. W funkcji main() tworzymy jedną zmienną a, której nadajemy wartość 5 i wyświetlamy w oknie konsoli. Następnie wywołujemy funkcję pisz2() z argumentem a. Po powrocie z funkcji pisz2() wyświetlamy ponownie zawartość a. Zwróć uwagę, że funkcja pisz2() zmodyfikowała jedynie wartość otrzymanego argumentu - zmienna a w funkcji main() pozostała nienaruszona. #include <iostream> using namespace std; void pisz2(int x){ x += 2; // zwiększamy argument o 2 cout << x << endl;} int main(){ int a; a = 5; cout << a << endl; pisz2(a); return 0;}
10
Przekazywanie przez referencję
W tym przypadku przed nazwą argumentu na liście umieszczamy operator &. Funkcja otrzymuje jako argument adres zmiennej, a nie jej wartość. Mając adres może odwołać się do pamięci tej zmiennej i zmienić jej zawartość. Wszelka modyfikacja takiego argumentu wewnątrz funkcji powoduje zmianę skojarzonej z tym argumentem zmiennej. W poniższym programie zmieniamy w funkcji pisz2() adresowanie przez wartość na adresowanie przez referencję. Teraz zmiana argumentu wewnątrz funkcji pisz2() odbije się automatycznie na zmianie zawartości zmiennej a, którą udostępniliśmy jako argument wywołania pisz2(). #include <iostream> using namespace std; void pisz2(int & x){ x += 2; // zwiększamy argument o 2 cout << x << endl;} int main(){ int a; a = 5; cout << a << endl; pisz2(a); return 0;}
11
Przykłady funkcji // Największy Wspólny Dzielnik // #include <iostream> using namespace std; int NWD(int a,int b) { int x; while(b) x = b; b = a % b; a = x; } return a; int main() int a,b; cin >> a >> b; cout << NWD(a,b) << endl; return 0; // Największa Wspólna Wielokrotność // #include <iostream> using namespace std; int NWD(int a,int b) { int x; while(b) x = b; b = a % b; a = x; } return a; int main() int a,b,nww; cin >> a >> b; nww = a * b / NWD(a,b); cout << nww << endl; return 0; // Skracanie ułamków // #include <iostream> using namespace std; int NWD(int a,int b) { int x; while(b) x = b; b = a % b; a = x; } return a; int main() int l,m,nwd; cin >> l >> m; nwd = NWD(l,m); cout << l << "/" << m << " = " << l / nwd << "/" << m / nwd << endl; return 0;
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.