Przekazywanie argumentów

Slides:



Advertisements
Podobne prezentacje
C++ Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego
Advertisements

Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Standardowa biblioteka języka C++
Programowanie obiektowe
Prowadzący: mgr inż. Elżbieta Majka
Reprezentacja danych w komputerze
Filip Andrzejewski Remigiusz Chiluta
argumenty wiersza poleceń: getopt
Sprawdzian Zadanie 1: Napisz program obliczający pole i obwód prostokąta. Wymiary pobierz z klawiatury od użytkownika. Zadanie 2: Napisz program sprawdzający,
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
#include #include main () { cout
Programowanie obiektowe W2
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Podstawy informatyki (4)
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wczytywanie danych z klawiatury, komentarze, zmienne.
Podstawy Programowania
Zadanie Dev C++.
Pętla do ... While C++ Źródło:
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
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++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
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.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
Paweł Starzyk Obiektowe metody projektowania systemów
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wstęp do programowania wykład 3 Typy wyliczeniowe, tablice.
Mapa STL – C++. Problem polega na tym, że najczęściej chcielibyśmy przechowywać w zbiorze elementy jakiegoś bardziej złożonego typu, których on nie będzie.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
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.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Programowanie I Rekurencja.
ALGORYTMY I STRUKTURY DANYCH
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Patryk Jasik pok. 415 GB Języki programowania Patryk Jasik pok. 415 GB
Wskaźniki Elżbieta Labocha.
Programowanie I Rekurencja.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Przekazywanie argumentów

Przekazywanie argumentów przez wartość Najpopularniejszą metodą budowania funkcji jest przekazywanie argumentów przez wartość. Funkcja musi zawierać argumenty wraz z ich typami oddzielone przecinkami. Kiedy przekazujemy do funkcji jakąś zmienną, zostaje utworzona w pamięci jej kopia. Wszystko co dzieje się wewnątrz funkcji odbywa się tak na prawdę na kopii zmiennej przekazanej w argumencie poprzez wartość. #include <iostream> #include <cstdlib> using namespace std; int zwieksz (int liczba) { // zmienna 'liczba' jest kopią zmiennej 'dlugosc' liczba = liczba * 2; return liczba; } int main() int dlugosc = 125; cout << dlugosc << endl; // przypisujemy nową wartość dla zmiennej dlugosc = zwieksz(dlugosc); system("pause >nul"); return 0; W takim wypadku konieczne staje się zwrócenie odpowiedniej wartości za pomocą return i przypisanie zwróconej wartości do odpowiednich zmiennych. Jeżeli funkcja nie zwróci żadnej wartości, wtedy jej wywołanie może stać się bezcelowe. Utworzona kopia zmiennej, nawet jeżeli zostanie zmodyfikowana, zostanie usunięta z pamięci po zakończeniu funkcji.

Przekazywanie argumentów przez referencję #include <iostream> #include <cstdlib> using namespace std; void zmien(int &liczba) { // modyfikując referencję modyfikujemy też //zmienną oryginalną liczba = 123456; } int main() int test = 0; cout << test << endl; // wywołanie funkcji (referencja zmiennej 'test') zmien(test); // wyświetlenie nowej wartości system("pause >nul"); return 0; W funkcji tworzymy dowolną ilość argumentów wraz z typami. Nazwy argumentów poprzedzone są ampersandem (&). Zmienne wewnątrz funkcji nie są kopią, oznacza to że operując na zmiennych referencyjnych operujemy także na zmiennej oryginalnej z pod której wywołana została funkcja Przekazując argumenty przez wartość, funkcja może zwrócić tylko jeden parametr za pomocą return. Oznacza to, że możliwe jest zmodyfikowanie wartości tylko jednej zmiennej lokalnej występującej poza wywoływaną funkcją (tak jak w przykładzie na poprzednim slajdzie). W przekazywaniu wartości przez referencję, podczas wywołania jednej funkcji możemy zmienić kilka zmiennych.

#include <iostream> using namespace std; void Zamiana1(int a, int b) { // przez wartość int x; x = a; a = b; b = x; } void Zamiana2(int &a, int &b) { // przez referencję main() { int x = 12; int y = 35; cout << " x : y\n" "-------\n" << x << " : " << y << endl; Zamiana1(x,y); cout << x << " : " << y << endl; Zamiana2(x,y); cout << x << " : " << y << endl << endl; system("pause"); Przykład W programie zdefiniowano dwie funkcje Zamiana1 i Zamiana2. Różnią się one jedynie tym, iż argumenty funkcji Zamiana1 są przekazywane poprzez wartość, a argumenty funkcji Zamiana2 przekazywane są poprzez referencję. Obie funkcję zamieniają ze sobą zawartości argumentów a i b. Z wyniku działania programu widać wyraźnie, iż zamiana argumentów w funkcji Zamiana1 nie wpływa na zmienne x i y funkcji main. Pozostają one bez zmian. Zatem możemy wyciągnąć wniosek, iż funkcja Zamiana1 działała jedynie na kopiach zmiennych x i y przekazanych poprzez stos. W przypadku funkcji Zamiana2 nastąpiła faktyczna zamiana zmiennych x i y. Wnioskujemy zatem, iż funkcja Zamiana2 otrzymawszy adresy argumentów uzyskała dostęp do zmiennych x i y funkcji main.

Parametrami formalnymi nazywamy argumenty, które pojawiają się w nagłówku deklarowanej (również definiowanej) funkcji. Lista tych parametrów zawiera nazwy i typy argumentów, na przykład: void funkcja (int a, double b); Parametry aktualne to argumenty podawane podczas uruchamiania funkcji. Przypisywane są one parametrom formalnym zgodnie z kolejnością na liście. Należy pamiętać o zachowaniu zgodności typów i liczby parametrów, na przykład: int x=2; funkcja (x, 5.3); Jeśli w miejscu parametrów formalnych wpiszemy słowo kluczowe void, to funkcja nie będzie posiadała parametrów. Przekazywanie parametrów przez wartość stosowane jest przede wszystkim wówczas, gdy chcemy, aby wartość parametrów aktualnych była zmieniana wewnątrz funkcji, lub gdy w miejsce parametrów chcemy wstawić wartości liczbowe. Przekazywanie parametrów przez referencję jest stosowane w sytuacji, gdy chcemy, aby zmiany dokonywane na parametrach wewnątrz funkcji były przekazywane również na zewnątrz. Chcemy aby zmieniana była wartość parametru aktualnego.

Przekazywanie argumentów przez wskaźnik Ale o tym później ;-)

Przekazywanie argumentów przez wskaźnik http://www.p-programowanie.pl/cpp/przekazywanie-argumentow-do-funkcji-c/

Zapoznaj się z materiałem na podanej niżej stronie i wykonaj zadanie domowe (na końcu strony) http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Przekazywanie-argumentow-funkcji-przez-referencje/356