Programowanie proceduralne w języku C++ Funkcje
|
|
- Marian Bielecki
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programowanie proceduralne w języku C++ Funkcje Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania Marzec 2017 / Kwiecień 2018 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
2 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
3 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
4 Pojęcie funkcji w języku C++ Dotychczas mieliśmy do czynienia z napisanym w języku C++ kodem programu zawartym w jednej tylko funkcji o nazwie main. Jest to obowiązkowa funkcja każdego takiego programu. Wykonanie programu zaczyna się od tej funkcji niezależnie od zastosowanego paradygmatu: imperatywnego czy obiektowo zorientowanego. W ogólnym przypadku funkcja jest fragmentem kodu programu: któremu nadano nazwę, dla którego określono listę parametrów formalnych (może być pusta) i który można wykonać poprzez podanie jego nazwy oraz listy parametrów. Dane przekazywane do funkcji w miejsce parametów - czyli argumenty funkcji - są to konkretne wartości parametrów. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
5 Budowa funkcji w języku C++ Ogólny schemat funkcji języka C++ jest następujący: typzwr nazwafun ( typpar1 nazwapar1,..., typparn nazwaparn ) {... // fragmentkodu return wartzwr; } Typ wartości zwracanej typzwr jest obowiązkowy poza przypadkiem gdy funkcja nic nie zwraca. Wtedy w miejsce typzwr należy użyć słowa void oraz usunąć instrukcję return Typ zmiennej wartzwr powinien być zgodny z typem typzwr. Chociaż lista parametrów może być pusta, to nawiasy ją ograniczające są obowiązkowe Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
6 Przykład definicji funkcji Funkcja, która posiada na liście jeden tylko parametr typu zmiennoprzecinkowego i zwraca jego kwadrat wygląda następująco: double kwadrat(double var){ return var*var; } Analogiczna funkcja zdefiniowana dla typu całkowitoliczbowego zwracająca kwadrat parametru wygląda następująco: int kwadrat(int var){ return var*var; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
7 Typ wartości zwracanej Przy obecnym zawansowaniu wykładu można stwierdzić, że typem wartości zwracanej musi być typ wbudowany jak (int, char,...) lub typu void. Jeśli typem zwracanym nie jest void, to funcję nazywamy funkcją rezultatową. Jeśli jest to void, to funkcja w ogóle nie zwraca żadnej wartości - taką funkcję nazywamy funkcją bezrezultatową. void wypisz(double var){ cout << "Kwadrat parametru = " << var*var << endl;} Kompilator C++ dopuszcza brak jakiegokolwiek specyfikatora typu zwracanej wartości - domniemywany jest wtedy typ int. Nie należy jednak z tej możliwości korzystać. Typ wartości zwracanej zwany jest też po prostu typem funkcji. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
8 Lista parametrów formalnych Lista parametrów formalnych jest ujętym w okrągłe nawiasy ciągiem oddzielonych przecinkami deklaracji pojedynczych parametrów funkcji w postaci: (typ1 nazwa1, typ2 nazwa2,..., typn nazwan) Nie wolno stosować deklaracji zbiorczych: (typ nazwa1, nazwa2) Zamiast tego należy napisać: (typ nazwa1, typ nazwa2) Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
9 Lista parametrów formalnych Lista parametrów może być pusta, jednak obejmujących ją nawiasów nie można pominąć. W takim przypadku zalecane choć niekonieczne jest jawne zaznaczenie tego faktu wewnątrz nawiasów słowem kluczowym void. int fun(void); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
10 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
11 Deklaracje i definicje funkcji Zarówno definicja jak i deklaracja dostarcza kompilatorowi informacji o funkcji: jaki jest jej typ zwracany, jaka jest liczba parametrów, jaki jest typ parametrów itd. W ten sposób, za każdym razem, gdy w dalszej części tekstu programu pojawia się użycie tej funkcji, kompilator może sprawdzić: o którą z funkcji o tej samej nazwie chodzi (może być wiele funkcji o tej samej nazwie); czy wywołanie funkcji jest prawidłowe: czy liczba i typ argumentów odpowiada liczbie i typom parametrów, czy typ wartości zwracanej przez funkcje jest w danym miejscu programu akceptowalny, itd. W razie niezgodności kompilacja zostanie przerwana. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
12 Deklaracje i definicje funkcji Dlaczego definicja lub deklaracja i co to w ogóle jest deklaracja funkcji oraz do czego się przydaje? Wyobraźmy sobie następującą sytuację: void mojapierwsza(int mojint) { mojadruga(mojint); } void mojadruga(int twojint) { mojapierwsza(twojint); } W jakiej kolejności zdefiniować te funkcje? Jeśli zdefiniujemy je tak jak wyżej, to w linii drugiej kompilacja zostanie przerwana, bo nieznana jest w niej jeszcze funkcja mojadruga. Zamiana funkcji miejscami nic nie zmienia. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
13 Deklaracje i definicje funkcji I tu z pomocą przychodzi deklaracja funkcji. Uzupełnijmy nasz kod programu o jedną linię - dekrarację funkcji mojadruga : void mojadruga(int); void mojapierwsza(int mojint) { mojadruga(mojint); } void mojadruga(int twojint) { mojapierwsza(twojint); } Tym razem kod skompiluje się poprawnie. Do tego wystarczy prototyp funkcji podany w deklaracji. Zauważmy w deklaracji (linia 1) brak nazwy argumentu - jest to dopuszczalne - konieczny jest jego typ. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
14 Deklaracje i definicje funkcji Deklaracja ma formę nagłówka funkcji, po którym następuje średnik zamiast ciała (treści) funkcji. Na przykład poprawnymi deklaracjami funkcji są string funstr(char c1, char c2, bool); void fun2(int, double); static int funstat(int i, float f); Deklaracje stanowią podstawę prototypu funkcji i zawierają informacje o: nazwie, typie zwracanym, typie i liczbie parametrów Jest to wszystko, czego potrzebuje kompilator, aby sprawdzić formalną prawidłowość ich użycia. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
15 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
16 Używanie funkcji Mając zdefiniowanych szereg różnych funkcji można się nimi do woli posługiwać. Funkcje mogą być wywoływane praktycznie z dowolnego miejsca innych funkcji. Sposób użycia jest bardzo prosty - należy podać jej nazwę i listę argumentów. nazwafun(arg1,..., argn); Jeśli funkcja deklaruje konkretny typ zwracany typzwr to rezultat może (ale nie musi) zostać przypisany zmiennej: nazwazmiennej = nazwafun(arg1,..., argn); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
17 Przykład użycia funkcji Stwórzmy funkcję sumującą liczby z pewnego zakresu: int suma(int from, int to){ int suma = 0; for (int i = from; i <= to; i++) suma += i; return suma; } Przykład użycia tej funkcji: int main(){ int min, max; cout << "Podaj zakres liczb: "; cin >> min >> max; cout << "Suma liczb od " << min << " do " << max << " wynosi " << suma(min, max) << endl; return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
18 Wywołanie funkcji Wywołanie funkcji ma postać nazwy tej funkcji z podaną w nawiasach okrągłych listą oddzielonych przecinkami argumentów. Liczba argumentów wywołania musi być dokładnie taka jak liczba parametrów w deklaracji i definicji funkcji. Nawet jeśli funkcja jest bezparametrowa, nawiasy musimy podać. Rolę argumentów mogą pełnić dowolne wyrażenia, których wartość jest typu zgodnego z zadeklarowanym typem odpowiedniego parametru funkcji. int main(){ int nsr = 7; cout << "Suma = " << suma(nsr-3, 2*(nSr+3)) << endl; return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
19 Wywołanie funkcji Typ argumentu nie musi być identyczny z typem parametru: wywołanie będzie prawidłowe, jeśli wartość argumentu można niejawnie przekształcić na wartość zadeklarowanego typu parametru. Jeśli przy takiej konwersji może być tracona informacja (konwersja zawężająca), to zazwyczaj podczas kompilacji otrzymamy ostrzeżenia. Jeśli funkcja zwraca rezultat, to ostatnią wykonywaną instrukcją musi być zawsze instrukcja return zwracająca: wartość typu, jaki został zadeklarowany jako typ funkcji, albo typu, który może być niejawnie przekształcony do typu funkcji. double fun(int x){return x*x;} int main(){ double arg = 3.; cout << fun(arg) << endl; return 0;} Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
20 Wywołanie funkcji Proces wywoływania możemy sobie wyobrażać tak: 1 Obliczane są wartości argumentów, po czym dokonywane są konwersje potrzebne do przekształcenia tych wartości w wartości typu odpowiedniego parametru funkcji 2 Tak uzyskane wartości kopiowane są na stos programu. 3 Jeśli argumentem była zmienna, to na stos kładziona jest kopia jej wartości - funkcja uzyskuje wtedy dostęp do tej kopii. 4 Sterowanie przechodzi do funkcji: kopie wartości argumentów na stosie są utożsamiane ze zmiennymi lokalnymi odpowiadającymi poszczególnym parametrom funkcji. 5 Zmienne lokalne (definiowane w funkcji) umieszczane są również na stosie. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
21 Wywołanie funkcji 6 Po zakończeniu wykonywania funkcji część stosu ze zmiennymi lokalnymi (również tymi odpowiadającymi parametrom funkcji), jest usuwana, tak aby stan stosu odpowiadał temu sprzed wywołania. 7 Jeśli funkcja jest rezultatowa, to wynik jest zwracany do funkcji wywołującej poprzez stos lub inną metodą. Wyjątek w przedstawionej procedurze stanowią zmienne definiowane z modyfikatorem static. Takie zmienne tworzone są raz: podczas pierwszego wywołania. Przy kolejnych wywołaniach funkcja ma dostęp do tej samej zmiennej statycznej - istnieje ona aż do zakończenia programu. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
22 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
23 Parametry domyślne funkcji W C++ istnieje możliwość definiowania funkcji o domyślnych (domniemanych) wartościach parametrów. Wywołując taką funkcję nie trzeba podawać wszystkich parametrów - dla niektórych przyjęta zostanie wartość domyślna w razie ich pominięcia. Aby skorzystać z tej możliwości, definiujemy funkcję, określając wartości domyślne dla parametrów funkcji bezpośrednio w nagłówku. Muszą to być końcowe parametry - jeśli któryś z parametrów ma wartość domyślną, to wszystkie parametry występujące na liście parametrów po nim też muszą mieć przypisane wartości domyślne. Wartości domyślne można przypisać tylko raz - jeśli zrobimy to w deklaracji, to nie powtarzamy tego ani w definicji, ani w innych ewentualnych deklaracjach. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
24 Parametry domyślne funkcji Przykładowo, albo: void poletrojkata(double a = 1., double h = 1.){ cout << "Pole trojkata = " << a * h / 2. << endl; } albo void poletrojkata(double = 1., double = 1.); void poletrojkata(double a, double h){ cout << "Pole trojkata = " << a * h / 2. << endl; } ale nie: void poletrojkata(double = 1., double = 1.); void poletrojkata(double a = 1., double h = 1.){ cout << "Pole trojkata = " << a * h / 2. << endl; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
25 Parametry domyślne funkcji A teraz zobaczmy jak działa idea parametrów domyślnych - program: void poletrojkata(double a = 1., double h = 1.){ cout << "Pole trojkata = " << a * h / 2. << endl; } int main(){ poletrojkata(); poletrojkata(3.7); poletrojkata(3.1, 4.25); return 0; } powoduje strumień wyjściowy: Pole trojkata = 0.5 Pole trojkata = 1.85 Pole trojkata = Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
26 Parametry domyślne funkcji Jeśli zmienimy kod programu: void poletrojkata(double a, double h){ cout << "Pole trojkata = " << a * h / 2. << endl; } int main(){ poletrojkata(1., 1.); poletrojkata(3.7, 1.); poletrojkata(3.1, 4.25); return 0; } to strumień wyjściowy będzie identyczny: Pole trojkata = 0.5 Pole trojkata = 1.85 Pole trojkata = Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
27 Parametry domyślne funkcji Parametry funkcji zadeklarowane jako obowiązkowe można przedeklarować tak, aby miały wartości domyślne - deklaracja: void kolor(int rd, int gr, int bl, int alf = 255); może zostać uzupełniona następną deklaracją (lub definicją): void kolor(int rd, int gr, int bl = 0, int alf); Każdy parametr domyślny może być w ten sposób deklarowany tylko raz i wszystkie parametry domyślne muszą kończyć listę. void kolor(int rd = 0, int gr, int bl, int alf); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
28 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
29 Odnośniki (referencje) Referencja w swym działaniu przypomina wskaźniki - zawiera adres istniejącej uprzednio zmiennej. Różnica polega jednak na tym, że do referencji można przypisać adres tylko raz, a jej dalsze używanie niczym się nie różni od używania zwykłej zmiennej. Przypisanie referencji adresu jest obowiązkowe - referencje muszą być inicjalizowane. TypDanych & referencja = innazmienna; Można się pokusić o stwierdzenie, że: Referencja jest inną nazwą danej zmiennej. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
30 Odnośniki (referencje) Operacje jakie wykona się na referencji, zostaną odzwierciedlone na zmiennej zwykłej, z której pobrano adres. #include <iostream> using namespace std; int main(){ double dbl = 41.66; double &refdbl = dbl; refdbl = 1.345; cout << "dbl wynosi " << dbl << endl; return 0; } Wynikiem działania programu jest strumień wyjściowy: dbl wynosi Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
31 Parametry odnośnikowe Odnośniki mogą być parametrami i wartościami zwracanymi przez funkcje. Co to znaczy, jeśli parametr funkcji jest zadeklarowany jako odnośnik? Popatrzmy na funkcję: void funvar(int varint){ varint = varint + 2;} void funref(int& refint){ refint = refint + 2;} int main(){ int fi = 0; funvar(fi); int si = 0; funref(si); cout << "fi = " << fi << " si = " << si << endl; return 0; } Wynikiem działania tej funkcji jest strumień wyjściowy: fi = 0 si = 2 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
32 Praca z parametrami odnośnikowymi Instrukcja: void funref(int& refint); oznacza, że argument typu int zostanie przesłany do funkcji przez odniesienie (referencję). Jeśli wywołamy tę funkcję podając jako argument pewną zmienną typu int, to w czasie wykonania funkcji nazwa parametru refint będzie inną nazwą dokładnie tej samej zmiennej. A więc nie będzie kopiowania wartości na stos - zmienna lokalna w funkcji w ogóle nie będzie tworzona. Nazwa refint będzie odnosić się do oryginału zmiennej będącej argumentem wywołania i funkcja będzie pracować na tym oryginale. Stąd też zmiany refint wewnątrz funkcji funref powodują zmiany zmiennej si w funkcji main. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
33 Argumenty a parametry odnośnikowe Mając powyższe na uwadze nie uda się kompilacja kodu programu: 1. void funref(int& refint){ 2. refint = refint + 2;} 3. int main(){ 4. funref(1); 5. int mi = 12; funref(3 * mi); 6. double md; funref(md); 7. return 0; } ze względu na brak możliwości zdefiniowania referencji do: literału (linia 4) wyrażenia (linia 5) czy zmiennej innego typu (linia 6) Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
34 Odnośnikowa wartość zwracana Odniesienie może nie tylko być parametrem, ale i wartością zwracaną przez funkcję. Następująca deklaracja: int& fun(int); oznacza, że funkcja zwraca pewną zmienną przez odniesienie (referencję). Stąd też wyrażenie fun(3) jest inną nazwą pewnej istniejącej zmiennej, która została podana w funkcji w instrukcji return. Zmienna taka musi istnieć po zakończeniu pracy funkcji. Czyli wywołanie funkcji - fun(int) - można potraktować jako wynik działania tej funkcji. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
35 Odnośnikowa wartość zwracana Wynika stąd ważny wniosek - jeśli wartością zwracaną jest odniesienie, to instrukcja return takiej funkcji nie może zwracać: literału wyrażenia zmiennej lokalnej, bo przestaje ona istnieć po zakończeniu funkcji. int& funref(int& refint){ int rint; refint = refint + 2; return 0; return 2*refInt+3; return rint; return refint; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
36 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
37 Wskaźniki Na początek musimy zdefiniować pojęcie wskaźnika do zmiennej. O ile zmienna jest w stanie przechowywać wartości danego typu, o tyle wskaźnik przechowuje: adres obszaru pamięci, gdzie dopiero jest zapisana wartość, informację o typie zmiennej zapisanej w tym obszarze. double zmdbl; double *wskdbl; // zmienna typu double // wskaźnik typu double Nowopowstały wskaźnik nie odwołuje się do żadnego konkretnego adresu Wymaga zatem inicjalizacji lub podstawienia z wykorzystaniem operatora pobrania adresu & double zmdbl = ; // inicjalizacja zmiennej double *wskdbl = &zmdbl; // inicjalizacja wskaźnika Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
38 Wskaźniki Pobranie wartości spod adresu przypisanego wskażnikowi następuje przy użyciu operatora wyłuskania * cout << "Wartosc: " << *wskdbl << endl; Bez użycia operatora wyłuskania, zostanie wyświetlona wartość zmiennej wskaźnikowej wskdbl czyli adres zmiennej zmdbl Bardzo ważne jest aby nie korzystać ze wskaźnika, który nie wskazuje na żadną zmienną. Prowadzi to zawsze do błędów i niesie ze sobą nieprzewidziane konsekwencje. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
39 Przykład użycia wskaźnika Przypadki użycia wskaźnika: int telefon = ; int *wsk = &telefon; cout << *wsk << endl; cout << wsk << endl; cout << &wsk << endl; // zmienna typu int // przypisanie wskaźnikowi // adresu zmiennej telefon // wyświetlenie wyłuskanej // wartości wskaźnika // ( ) // wyświetlenie adresu // zmiennej telefon // wyświetlenie adresu // wskaźnika cout << &telefon << endl; // wyświetlenie adresu // zmiennej telefon Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
40 Wskaźniki jako parametry funkcji Kiedy należy przekazać do funkcji odwołanie do obiektu zezwalające na jego modyfikację wewnątrz funkcji to mamy do wyboru dwie metody: posłużenie się referencją, posłużenie się wskaźnikiem. Pierwszą z metod omówiliśmy już wyczerpująco, a co jeśli chodzi o wskaźniki? Jeśli argument funkcji jest zadeklarowany jako wskaźnik czy też wartość zwracana przez funkcję jest wskaźnikiem, to zachowanie funkcji jest analogiczne do sytuacji, w której były to referencje. Różnica polega na fakcie, że w przeciwieństwie do referencji wskaźniki nie muszą (ale powinny) być inicjalizowane. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
41 Wskaźniki jako parametry funkcji Popatrzmy na funkcję: int* funpoint(int* wskint){ *wskint = *wskint + 2; return wskint; } int main(){ int x = -7., *p = &x; p = funpoint(p); cout << "*p= " << *p << endl; return 0; } Jak widać jej postać jest podobna do tej, używającej odniesień - składnia jest tylko nieco inna, ze względu na zastosowanie typu wskaźnikowego int* w miejsce typu int&. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
42 Arytmetyka wskaźników #include <iostream> using namespace std; int main(){ // deklaracja i inicjalizacja tablicy double waga[5] = { 55.3, 747.8, , 5.2, 6.4 }; double *wsk = waga; // nazwa tablicy jest wskaźnikiem cout << " wsk = " << wsk << endl; // adres cout << " *wsk = " << *wsk << endl; // 55.3 cout << " wsk[4] = " << wsk[4] << endl; // 6.4 cout << " *(wsk + 3) = " << *(wsk + 3) << endl; // 5.2 wsk += 1; cout << " *wsk = " << *wsk << endl; // cout << " *++wsk = " << *++wsk << endl; // cout << " rozmiar wsk = " << sizeof(wsk) << endl; // 4 cout << "rozmiar *wsk = " << sizeof(*wsk) << endl; // 8 return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
43 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
44 Przekazywanie tablic do funkcji Popatrzmy na kod programu: double funsuma(double tbl[], int rozmtab){ double suma = 0.; for(int i = 0; i < rozmtab; i++) suma += tbl[i]; return suma; } int main(){ double tabdbl[10] = {1,2,3,4,5,6,7,8,9,10}; cout << "Suma elementow tablicy " << funsuma(tabdbl, 10) << endl; return 0; } Jak widać do funkcji przekazywana jest tylko nazwa tablicy - jej rozmiar musi być przekazany przy pomocy oddzielnego parametru. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
45 Przekazywanie tablic do funkcji Innym sposób przekazywania tablic do funkcji przedstawia kod programu, który tylko w niewikim stopniu różni się od poprzedniego: double funsuma(double* tbl, int rozmtab){ double suma = 0.; for(int i = 0; i < rozmtab; i++) suma += tbl[i]; return suma; } Tym razem parametrem funkcji jest wskaźnik, ponieważ nazwa tablicy jest stałym wskaźnikie do jej pierwszego elementu. Wewnątrz funkcji nazwą wskaźnika można się posługiwać tak jak każdą inną nazwą tablicy. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
46 Spis treści 1 Pojęcie funkcji 2 Deklaracje i definicje funkcji 3 Używanie funkcji 4 Parametry domyślne funkcji 5 Parametry odnośnikowe (referencje) 6 Wskaźniki jako parametry funkcji 7 Przekazywanie tablic do funkcji 8 Przeciążanie funkcji Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
47 Przeciążanie funkcji Funkcje można w C++ przeciążać (przeładowywać). Oznacza to sytuację, gdy w tym samym zakresie leksykalnym są widoczne różne definicje funkcji o tej samej nazwie. Wszystkie wersje funkcji muszą się wystarczająco różnić - na tyle, aby można było jednoznacznie wybrać jedną z nich na podstawie wywołania. Warunkiem koniecznym, choć niewystarczającym jest, aby funkcje o tej samej nazwie różniły się sygnaturą. Do sygnatury funkcji należy: jej nazwa oraz liczba i typ parametrów nie licząc tych z wartościami domyślnymi. Typ funkcji, czyli typ wartości zwracanej, do sygnatury nie należy. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
48 Przeciążanie funkcji Sygnatury nie są jeszcze warunkiem dostatecznym na legalność przeciążenia. Widzimy to na przykładzie funkcji void fun(int i); void fun(int& i); Obie funkcje różnią się sygnaturą, ale wywołanie: int mint; fun(mint); może być traktowane jako wywołanie zarówno pierwszej, jak i drugiej z nich. Natomiast prawidłowe jest przeciążenie: int fun(int i); int fun(int* i); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
49 Przeciążanie funkcji Argument typu T może być użyty przy wywołaniu funkcji z parametrem typu T, const T i volatile T, więc funkcje przeciążone nie mogą się różnić tylko modyfikatorem typu takiego parametru double fun(int mint); double fun(const int mint); double fun(volatile int mint); Natomiast typy parametrów T*, const T* i volatile T* (i analogicznie T&, const T& i volatile T& ) są wystarczająco różne, gdyż patrząc na wywołanie funkcji kompilator może stwierdzić, czy użyta tam zmienna była ustalona lub ulotna (typu volatile ) czy nie. double fun(int* pint); double fun(const int* pint); double fun(volatile int* pint); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
50 Przeciążanie funkcji Do tej pory zwracaliśmy uwagę na jedynie typ parametrów funkcji. Wydaje się to oczywiste, ale trzeba zwrócić uwagę na fakt, że kompilator potrafi również rozróżnić sygnatury, gdy: różna jest liczba parametrów, liczba parametrów jest ta sama i są one parami tych samych typów, ale umieszczone są na liście w różnej kolejności Widać to na przykładzie poprawnych i błędnych przeciążeń funkcji: void fun(double d, int i, bool b); void fun(double, int, bool); void fun(double d, int i); void fun(int i, double d); void fun(int it, double dbl); void fun(int* i, double d); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 50
Wstęp do informatyki- wykład 11 Funkcje
1 Wstęp do informatyki- wykład 11 Funkcje 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
Bardziej szczegółowoWstęp do informatyki- wykład 9 Funkcje
1 Wstęp do informatyki- wykład 9 Funkcje 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
Bardziej szczegółowoWstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Bardziej szczegółowoFunkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów
Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików
Bardziej szczegółowo> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017
> C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoProgramowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoFunkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.
Funkcje Deklaracja funkcji typ funkcji identyfikator_funkcji(lista parametrów formalnych); Typ funkcji określa typ wartości zwracanej przez funkcję (typ zdefiniowany pierwotnie jak int, typ zdefiniowany
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoWstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje
1 Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Bardziej szczegółowoWstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
Bardziej szczegółowoMateriał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowo1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoWstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoTechniki Programowania wskaźniki
Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza
Bardziej szczegółowoProgramowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody
Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoW2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 4 C-struktury
1 Podstawy algorytmiki i programowania - wykład 4 C-struktury 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
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowo7. Pętle for. Przykłady
. Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoNiezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
Bardziej szczegółowoWstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)
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,
Bardziej szczegółowoProgramowanie proceduralne w języku C++ Pętle, tablice
Programowanie proceduralne w języku C++ Pętle, tablice Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoPodstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm
Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki
Bardziej szczegółowoJęzyk C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoProgramowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37
Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,
Bardziej szczegółowoPrzeciążenie (przeładowanie nazw) funkcji
Przeciążenie (przeładowanie nazw) funkcji dla większości języków (w tym C) zasada w programie może być tylko jedna funkcja o danej nazwie kompilator C++ - dopuszcza więcej niż jedną funkcję o tej samej
Bardziej szczegółowoZajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Bardziej szczegółowoStruktury Struktura polami struct struct struct struct
Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli
Bardziej szczegółowoWstęp do informatyki- wykład 7
1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoKonwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,
Bardziej szczegółowoPROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowo4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Bardziej szczegółowoZmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Bardziej szczegółowoFunkcje przeciążone, konstruktory kopiujące, argumenty domyślne
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).
Bardziej szczegółowoPodstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 8 Wskaźniki 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania w C++ Wskaźniki 2 Podstawy Pojęcie wskaźnika Wskaźnik na zmienną danego
Bardziej szczegółowoWykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
Bardziej szczegółowoKURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.
Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main
Bardziej szczegółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowoMateriał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 5 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoPrzekazywanie argumentów wskaźniki
Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji
Bardziej szczegółowoWstęp do programowania
wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoTechniki Programowania wskaźniki 2
Techniki Programowania wskaźniki 2 Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Jeżeli wskaźnik pokazuje na element
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoJęzyk C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
Bardziej szczegółowoWstęp do programowania
wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoWstęp do informatyki- wykład 10 Funkcje (przekazywanie parametrów przez wartość i zmienną)
1 Wstęp do informatyki- wykład 10 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,
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoProgramowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Bardziej szczegółowoLaboratorium nr 10. Temat: Funkcje cz.2.
Zakres laboratorium: Laboratorium nr 10 Temat: Funkcje cz.2. przeciążanie nazw funkcji argumenty domyślne funkcji przekazywanie danych do funkcji przez wartość, wskaźnik i referencję przekazywanie tablic
Bardziej szczegółowoPodstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.
Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna
Bardziej szczegółowoTypy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości
Bardziej szczegółowoPodstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 7 Funkcje Przekazywanie argumentów do funkcji 1 dr Artur Bartoszewski - programowania, sem 1 - WYKŁAD programowania w C++ Funkcje 2 dr Artur Bartoszewski - programowania sem. 1 -
Bardziej szczegółowo#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }
#include using namespace std; Prototypy funkcji Funkcja 1 void ela(int); double info (double); int main( ); return 0; Funkcja 2 void ela(int); Funkcja 3 double info(double); return 4*t; jeszcze
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Funkcje w języku C Zasięg zmiennych Przekazywanie
Bardziej szczegółowoPodstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Bardziej szczegółowoInformatyka I: Instrukcja 4.2
Informatyka I: Instrukcja 4.2 1 Wskaźniki i referencje - bezboleśnie Nauczyliśmy się do tej pory, że funkcje w języku C mogą zwracać wartość. Co jednak, gdybyśmy chcieli napisać funkcję, która rozwiąże
Bardziej szczegółowo1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE
1. Proste typy danych- ciąg dalszy 2. Typy złożone danych : TABLICE Wykład 3 ZMIENNE PROSTE: TYPY WBUDOWANE Typy zmiennoprzecinkowe: float double long double Różne rozmiary bajtowe. W konsekwencji różne
Bardziej szczegółowoPodstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Bardziej szczegółowo1 Wskaźniki. 1.1 Główne zastosowania wskaźników
1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE
WSKAŹNIKI KLASOWE Wskaźniki klasowe Każdy obiekt zajmuje fragment pamięci i wszystkie obiekty tego samego typu zajmują fragmenty pamięci tej samej długości początek miejsca w pamięci zajmowanego przez
Bardziej szczegółowoKLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 5 C-struktury cd.
1 Podstawy algorytmiki i programowania - wykład 5 C-struktury cd. 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
Bardziej szczegółowoOk. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:
Kurs C++ częśd II Podstawowa obsługa konsoli + zmienne. Autor: Dawid Chróścielski. Wprowadzanie i wyprowadzanie danych z/do konsoli. Jak wyprowadzad dane dowiedzieliśmy się już wcześniej (metoda cout z
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał
Bardziej szczegółowo