Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Podobne dokumenty
Wstęp do informatyki- wykład 10 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Wstęp do informatyki- wykład 11 Funkcje

Wstęp do informatyki- wykład 9 Funkcje

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Wstęp do informatyki- wykład 7

Wstęp do informatyki- wykład 6

Programowanie - wykład 4

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Wstęp do programowania

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Podstawy programowania skrót z wykładów:

Wstęp do informatyki- wykład 7

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Pliki wykład 2. Dorota Pylak

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Przekazywanie argumentów wskaźniki

4. Funkcje. Przykłady

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy Programowania

Część 4 życie programu

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Język C++ zajęcia nr 2

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Wyrażenie warunkowe operator selekcji Instrukcja switch

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

I - Microsoft Visual Studio C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Wstęp do programowania

Pliki wykład 2. Dorota Pylak

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Podstawy Programowania Podstawowa składnia języka C++

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Programowanie komputerowe. Zajęcia 1

Wstęp do programowania

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Wstęp do programowania. Wykład 1

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Wstęp do Informatyki

Wstęp do programowania

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Wstęp do programowania

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Program 14. #include <iostream> #include <ctime> using namespace std;

Laboratorium nr 10. Temat: Funkcje cz.2.

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Techniki Programowania wskaźniki

Wstęp do informatyki- wykład 2

Programowanie strukturalne i obiektowe. Funkcje

Wstęp do informatyki- wykład 1

Pytania sprawdzające wiedzę z programowania C++

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

praktyczne. Wydanie III

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

C++ wprowadzanie zmiennych

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

tablica: dane_liczbowe

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Mechanizm dziedziczenia

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Język C, tablice i funkcje (laboratorium, EE1-DI)

DYNAMICZNE PRZYDZIELANIE PAMIECI

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

Język C++ Różnice między C a C++

Wstęp do programowania

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

STL: Lekcja 1&2. Filozofia STL

Wprowadzenie do programowania i programowanie obiektowe

Wykład 5: Klasy cz. 3

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

Transkrypt:

1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum C++11, Helion, 2017 B. Stroustrup, Język C++. Kompendium wiedzy. Wydanie IV, Helion, 2014 S. B. Lippman, J. Lajoie, Podstawy języka C++, WNT, Warszawa 2003.

Definiowanie funkcji funkcje zwracające wartość #include<iostream> using namespace std; double cube(double x); //prototyp- deklaracja funkcji int main() double q = cube(1.2); //wywołanie funkcji double side; cout << " podaj bok :"; cin >> side; cout << "Kostka o boku "<< side<< " ma pojemnosc " << cube(side) <<" cm3" <<endl;//2 wywołanie double cube(double x) //definicja funkcji return x*x*x; 2

Parametry funkcji i przekazywanie przez wartość double cube(double x); //prototyp C++ normalnie przekazuje parametry do funkcji przez wartość, oznacza to, że jeśli do funkcji przekazywana jest liczba, to tworzona jest nowa zmienna. Argumenty przesłane do funkcji są zatem tylko kopiami. Jakiekolwiek działanie na nich nie dotyczy oryginału. double side = 5; double vol = cube(side); Kiedy funkcja cube jest wywoływana tworzona jest nowa zmienna x typu double inicjalizowana wartością 5, cube() działa na kopii side, a nie na oryginale. 3

Przesyłanie argumentów przez referencję W C++ argumenty możemy przesyłać do funkcji nie tylko przez wartość ale i przez referencję, czyli przez przezwisko. #include <iostream> using namespace std; void zer(int wart, int &ref);//deklaracja int main() int a = 44, b = 77; cout << "Przed wywolaniem funkcji: a = " << a << ", b = " << b << endl; zer(a, b); //wywołanie cout << "Po powrocie z funkcji: a = " << a << ", b = " << b << endl; 4

Przesyłanie argumentów przez referencję void zer(int wart, int &ref) cout << "\tw funkcji przed zerowaniem \n" wart = 0; ref = 0; << "\twart = " << wart << ", ref = " << ref << endl; cout << "\tw funkcji po zerowaniu \n" << "\twart = " << wart << ", ref = " << ref << endl; 5

Przesyłanie argumentów przez referencję void zer(int wart, int &ref);//deklaracja W rezultacie działania tego programu na ekranie pojawi się: Przed wywolaniem funkcji: a = 44, b = 77 W funkcji przed zerowaniem wart = 44, ref = 77 W funkcji po zerowaniu wart = 0, ref = 0 Po powrocie z funkcji: a = 44, b = 0 Funkcja zer, przyjmuje dwa argumenty: pierwszy z nich jest przesyłany przez wartość, drugi natomiast przez referencję &. Widać, że argument, który funkcja przyjmowała przez wartość, nie został zmodyfikowany. Natomiast zmienna, którą funkcja odebrała przez referencję została zmodyfikowana. 6

Przesyłanie argumentów przez referencję void zer(int wart, int &ref);//deklaracja zer(a, b); //wywołanie dla a = 44, b = 77; W tym przypadku do funkcji zamiast liczby 77 (wartość zmiennej b) został wysłany adres zmiennej b w pamięci komputera. Ten adres funkcja sobie odebrała i (na stosie) stworzyła sobie referencję, czyli komórce pamięci o przysłanym adresie nadała pseudonim (przezwisko, alias) ref. Referencja jest inną nazwą danej zmiennej. Zatem ta sama komórka, na którą w main mówiło się b, stała się teraz w funkcji zer znana pod przezwiskiem ref. Są to dwie różne nazwy, ale określają ten sam obiekt. Zatem gdy do obiektu o przezwisku ref wpisano zero to znaczy, że odbyło się to faktycznie na obiekcie b. 7

8 Przesyłanie argumentów przez referencję Wniosek: przesłanie argumentów funkcji przez referencję pozwala tej funkcji na modyfikowanie zmiennych znajdujących się poza tą funkcją. Ten sposób przesyłania stosuje się m.in. do dużych obiektów, gdyż przesłanie ich przez wartość (wymagające zrobienia kopii) powodowałoby spowolnienie wywoływania takiej funkcji. W przypadku gdy taka funkcja jest wywoływana bardzo wiele razy, może to być ważnym czynnikiem. Jeszcze innym sposobem przesłania argumentu może być przekazywanie przez wskaźnik.

9 Przesyłanie argumentów przez referencję - przykład /*f-cja obliczająca średnią geometryczną dwóch liczb rzeczywistych sqrt(x*y), jeśli któryś argument <0 nie da się policzyć średniej => f-cja logiczna, zwraca true, gdy da się obliczyć średnią, false w przeciwnym przypadku, średnia jako dodatkowy argument */ bool sredniag(double x, double y, double &srg) if (x >= 0 && y >= 0) srg = sqrt(x*y); return true; else return false;

Przesyłanie argumentów przez referencję - przykład #include <iostream> #include <cmath> using namespace std; bool sredniag(double x, double y, double &srg); int main() double a = 4.9, b = 5.8; double sg; if(sredniag(x, y, sg)) cout<<"srednia geometryczna "<< sg << endl; else cout<<"nie da sie obliczyc sredniej"<<endl; if(sredniag(4, 4, sg)) cout<<"srednia geometryczna "<<sg<<endl; else cout<<"nie da sie obliczyc sredniej"<<endl; bool sredniag(double x, double y, double &srg)... 10

Przesyłanie argumentów przez referencję przykład 2 Napisz funkcję sumailosccyfr, która dla zadanej parametrem liczby całkowitej jako wartość zwróci sumę cyfr tej liczby i jako parametr zwróci ilość jej cyfr. int sumailosccyfr(int n, int &ilc) if (n < 0) n = -n; //wartość bezwzględna int sc = 0; //zmienna na sumę cyfr ilc = 0; //zerujemy parametr ilość cyfr //pętla do-while, bo każda liczba nawet 0 // ma przynajmniej jedna cyfra do ilc++; //zwiększamy liczbę cyfr sc += n%10; //do sumy dodajemy ostania cyfra n/=10; //pozbywamy się policzonej już cyfry while(n > 0); return sc; 11

Przesyłanie argumentów przez referencję przykład 2 #include <iostream> using namespace std; int sumailosccyfr(int n, int &ilc); int main() int n; cout << "Podaj liczba "; cin >> n; int ilec; int sc = sumailosccyfr(n, ilec); cout<<"suma cyfr liczby "<< n <<" wynosi "<< sc <<", a liczba cyfr = "<< ilec << endl; 12

Przesyłanie argumentów przez referencję przykład 2 /*Jeśli chcemy funkcję wywołać w cout to musimy pamiętać, że wyrażenia w cout są opracowywane od prawej strony. Zatem poniższe wywołanie będzie się odnosić do nieobliczonej jeszcze wartości ilec: cout << "Suma cyfr liczby "<<125<<" wynosi " << sumailosccyfr(125, ilec) << ", a liczba cyfr = "<< ilec << endl; */ //wywołanie musi być zatem przestawione: cout<< "Liczba cyfr liczby " << 125 <<" wynosi " << ilec << ", a suma cyfr = " << sumailosccyfr(125, ilec)<<endl; //main int sumailosccyfr(int n, int &ilc)//definicja 13