140 likes | 299 Views
Podstawy informatyki. Prowadzący: Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo – Hutnicza im. Stanisława Staszica Kraków, 5-11-2013. Funkcje::Deklaracja, definicja użycie. Definicja funkcji: typ_zwracany nazwa_funkcji( argumenty );
E N D
Podstawy informatyki Prowadzący: Grzegorz Smyk Wydział Inżynierii Metali i Informatyki PrzemysłowejAkademia Górniczo – Hutnicza im. Stanisława StaszicaKraków, 5-11-2013
Funkcje::Deklaracja, definicja użycie Definicja funkcji: • typ_zwracany nazwa_funkcji( argumenty ); Deklaracja funkcji: typ_zwracany nazwa_funkcji( argumenty ) { ciało funkcji }; Funkcja jest to część programu, która możemy wywołać w kodzie programu poprzez podanie jej nazwy w programie oraz poprzez (opcjonalne) przekazanie argumentów do funkcji. Uwaga!Możliwa jest jednoczesna deklaracja z definicja funkcji, ale musi się ona odbyć przed użyciem funkcji w kodzie Przekazywanie argumentów do funkcji jest opcjonalne. Możliwe jest również przekazywanie kilku argumentów jednocześnie. By to zrobić należy rozdzielić jest przecinkami. Przykład: int funkcja(int arg1, int arg2);
Funkcje::Przeładowanie • Może istnieć zdefiniowanych wiele funkcji o tej samej nazwie z różną liczbą argumentów jednak ich deklaracja ma być jednoznaczna!
Wskaźniki - inicjalizacja • Wskaźnik – zmienna wskaźnikowa – w której zapisywany jest nie obiekt, a adres komórki pamięci, inicjalizowana jest przez dodanie „*” przed nazwą zmiennej; • Dzięki wskaźnikom możemy przechowywać np. adres innej zmiennej oraz umożliwić bezpośredni dostęp do tej zmiennej.
Referencja • Typ referencyjny jest połączeniem funkcjonalności typu wskaźnikowego ze składnią typu bezpośredniego • Definicja zmiennej typy referencyjnego tworzona jest przez dodanie symbolu „&” przez nazwą zmiennej typu wskaźnikowego.
Wskaźniki i referencje - przykład • Przykładowy program przedstawiający wykorzystanie wskaźników i referencji w przekazywaniu argumentów do funkcji. Linijka 11: a = 5, b = 7; Linijka 12: przekazanie obiektów do funkcji – brak rezultatów poza funkcją Linijka 14: przekazanie wartości obiektów do funkcji operującej na wskaźnikach – zamiana wartościami a i b poza funkcją Linijka 16: przekazanie referencji obiektów do funkcji – ponowna zamiana wartości zmiennych poza funkcją
Wskaźniki vs tablice Zapis: int tab[10] jest interpretowany jako ustalony wskaźnik na początek (pierwszy element) tablicy. Wywołanie samego tab zwróci nam adres pierwszego elementu w tablicy, a nie jego wartość; Zapis:int * p; p = tab; Jest równoznaczny z: p = &tab[0];
Wskaźniki vs tablice Nazwa tablicy jest wskaźnikiem na adres jej pierwszego elementu. int *wsk = tab; Zmienne wskaźnikowe można przesuwać, więc zapis tab[0] = 0; tab[1] = 1; … tab[9] = 9; Jest równoznaczny z: *wsk = 0; *(wsk+1) = 1; … *(wsk+9) = 9;
Tablice dynamiczne Istnieje możliwość dynamicznej alokacji pamięci dla tablicy przy wykorzystaniu wskaźników. Generujemy wtedy tablicę o zalokowanej pamięci o zadanym rozmiarze. Istnieje możliwość zrobienia też dynamicznej tablicy wielowymiarowej, generuje się wtedy tablicę wskaźników na wskaźniki. int** tab = new int*[a];
Zadania 1: Napisz program, który pozwala na wczytanie dwóch zmiennych z klawiatury oraz wykona na nich proste operacje arytmetyczne: • Dodawanie • Odejmowanie • Mnożenie • Dzielenie • Modulo Każda operacja ma być zawarta w osobnej funkcji! A argumenty powinny być przekazywane do funkcji na 3 sposoby. Porównaj wyniki.
Zadania 2 Napisz program który umożliwi wczytanie 10 liczb do tablicy, a następnie przy pomocy odpowiedniej funkcji umożliwi: • wyznaczenie najmniejszego elementu tablicy, • wyznaczenie największego elementu tablicy, • obliczy średnią arytmetyczną elementów w tablicy Do funkcji zmienne najmniejszego, największego elementu przekaż przez wskaźnik, natomiast średnia_arytmentyczna przez referencję.
Zadania 3 Napisz program, który umożliwia wczytanie do tablicy o dowolnym rozmiarze (podanym z klawiatury) losowych liczb z przedziału 30 – 70 oraz funkcję, która umożliwia wypisywanie: • wszystkich liczb (1 argument – tablica) • liczb parzystych • liczb z zadanego przedziału • ( 3 argumenty: tablica + 2x przedział) Użyj przeładowania funkcji w zależności od ilości argumentów.
Zadanie 4 Napisz program, który posortuje tablicę dynamiczną o zadanym rozmiarze (nie większym niż 100). • Wykorzystaj sortowanie bąbelkowe • Napisz funkcję, która umożliwi wyświetlenie w formacie dwuwymiarowym o ilości elementów w kolumnie równym 10 oraz ilości wierszy potrzebnych do wyświetlenia całej tablicy.