Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Funkcje w PHP ABK.
C++ wykład 9 ( ) Szablony.
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){};
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Struktury.
Tablice.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Metody Programowania Wykład
Podstawy programowania II
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Podstawy układów logicznych
Podstawy programowania
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Podstawy programowania w języku C i C++
Procedury i funkcje.
Generator analizatorów leksykalnych
Przekazywanie argumentów
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Podstawy programowania w języku C i C++
Programowanie strukturalne i obiektowe
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Programowanie strukturalne i obiektowe C++
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
Programowanie strukturalne i obiektowe C++
Instrukcje wyboru.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Programowanie I Rekurencja.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Wskaźniki Elżbieta Labocha.
Przycisk uruchamiający napisany przez nas program
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
PGO Przeciążanie metod i konstruktorów
Zapis prezentacji:

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

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.

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; }

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().

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.

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.

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; }

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.

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;}

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;}

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;