1 / 33

Programowanie C++

Programowanie C++. Funkcje. Funkcja. Funkcja jest to fragment programu, któremu przypisano nazwę. Funkcji możemy dodać argumenty, z jakimi ma być ona wykonana (jeżeli takie są potrzebne, bądź konieczne).

kami
Download Presentation

Programowanie C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie C++ Funkcje.

  2. Funkcja • Funkcja jest to fragment programu, któremu przypisano nazwę. • Funkcji możemy dodać argumenty, z jakimi ma być ona wykonana (jeżeli takie są potrzebne, bądź konieczne). • Funkcja może również zwracać wartość, gdy nie będzie zwracała wartości to będzie pełniła rolę procedury.

  3. Budowa funkcji • typ nazwa(arg1 nazwa ,…, arg_n nazwa){returnwartosc;}

  4. Przykłady funkcji • voidmoja_pierwsza_funkcja(){    //miejsce na kod funkcji} • intSumaDwochLiczb(intx,inty) { returnx+y; }

  5. Funkcje przeciążone • W języku C++ możliwe jest utworzenie kilku różnych funkcji, które posiadają tę samą nazwę. • WAŻNE. Takie funkcje muszą różnić się od siebie ilością lub typem argumentów. Dzięki temu kompilator będzie wiedział dokładnie, którą funkcję należy wywołać. • Takie funkcje nazywamy przeciążonymi lub przeładowanymi.

  6. Przykład funkcji przeciążonych • int iloraz(intx,int y) { return int(x/y); //uwaga rzutowanie } • float iloraz(floatx,float y) { return x/y; }

  7. Programowanie C++ Funkcje rekurencyjne.

  8. Rekurencja • Rekurencja polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne wykonujemy bez użycia iteracji. • Zazwyczaj zadania rozwiązywane tą techniką są wolniejsze od iteracyjnego odpowiednika.

  9. Silnia rekurencyjnie • double silnia(int n){ if (n==1) return 1; else return n*silnia(n-1); }

  10. Programowanie C++ Tablice i wskaźniki.

  11. Tablice • Tablica jest zbiorem określonych zmiennych w określonej ilości ułożonych (w większości implementacjach) obok siebie. • Takie zmienne określa jedna wspólna nazwa po której zapisujemy indeks elementu. • Tablica może być : • statyczna - której rozmiar jest stały i wiadomy już podczas kompilacji, • dynamiczna – której rozmiar determinuje ile pamięci jest alokowane podczas pracy programu.

  12. Tablice statyczne • Tablice jednowymiarowe: • int tablica[5]; • tablica[0] = 1; //pierwszy element • tablica[4] = 4; //ostatni element • Tablice wielowymiarowe: • int tab[5][10]; • tab[1][2]=7;

  13. Przykład - tworzenie i deklaracja tablicy • int tablica[]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; • char tablica1[3][10]= { {'C','z','e','c','h','y'}, {'P','o','l','s','k','a'}, {'R','o','s','j','a'} };

  14. Wskaźnik • Wskaźnik w C++ umożliwia nam pobieranie adresu pamięci wybranych zmiennych. • Wskaźnik zajmuje (zazwyczaj) 4 bajty bez względu na jaki typ danych wskazuje. Rozmiar wskaźnika może być jednak różny w zależności od użytego kompilatora . • Wskaźnik zwraca adres pierwszego bajta danych wybranej zmiennej. Aby pobrać adres dowolnej zmiennej wystarczy napisać: &nazwa_zmiennej.

  15. Przykład • int liczba = 123; • int tablica[]={1,2,3,4,5,6,7,8,9,10}; • cout<<"Adresliczby="<<&liczba<<endl; • cout<<"Adrestablicy="<<&tablica<<endl;

  16. Deklaracja zmiennej wskaźnikowej • Aby utworzyć zmienną wskaźnikową, to po typie zmiennej dopisujemy *(gwiazdkę). • Jeśli chcemy utworzyć wskaźnik, który ma wskazywać na liczbę typu int, zapis ten będzie wyglądał tak: int * liczba; • UWAGA! int * liczba, liczba1; //liczba1 – NIE!

  17. Dygresja – liczby losowe • #include <cstdlib> • cout<<rand(); • cout<<rand()%10; //liczby z przedziału 0..9

  18. Rodzaje sortowania • sortowanie przez wybór • sortowanie bąbelkowe • sortowanie szybkie

  19. Programowanie C++ Zarządzanie pamięcią.

  20. Ograniczony rozmiar danych • Klasyczna deklaracja tablicy nie daje możliwości zmiany jej rozmiaru. • Program posiadał określoną górną granicę pojemności danych. • Język C++ posiada dwa operatory służące do przydzielania i zwalniania pamięci: • new, • delete.

  21. Dynamiczny przydział pamięci • Do przydzielania nowego bloku pamięci służy operator new. • Jego składnia wygląda następująco: wskaznik1=new typ_zmiennej;wskaznik2=new typ_zm[ilosc_elementów];

  22. Zwalnianie pamięci • Aby zwolnić pamięć przydzieloną dynamicznie musimy użyć operatora delete. • Jeśli pamięć dla danych, na które wskazuje zmienna została przydzielona bez parametru określającego ilość elementów w tablicy, to piszemy: delete wskaznik1; • Jeśli natomiast przydzieliliśmy pamięć z użyciem parametru określającego ilość elementów tablicy to musimy poinformować operator delete o tym, że wskaźnik wskazywał na tablicę rekordów. Aby to zrobić dopisujemy zaraz za operatorem nawiasy kwadratowe []: delete[] wskaznik2;

  23. Kopiowanie bloków pamięci • Aby skopiować blok pamięci posłużymy się pętlą lub gotową funkcją. for (int i=0; i<ilosc; i++) NoweMiejsce[i] = StareMiejsce[i]; • lub memcpy (NowyWskaźnik, StaryWskaźnik,  ilość_elementów-liczba_bajtów);

  24. Programowanie C++ Struktury, unie i pola bitowe.

  25. Struktura • Strukturypozwalają na zorganizowanie danych w wygodny sposób.Wewnątrz struktury możesz zebrać kilka informacji o interesującym cię przedmiocie. • Przykłąd. W danych katalogowych biblioteki (kartotece) przechowuje się informacje o: autorze, tytule, wydawnictwie, roku wydania itp. • Struktury potrafią przechowywać różne typy danych. • Struktura jest najprostrzą postacią klasy.

  26. Deklaracja struktury • structBiblioteka { • //opis struktury • string Autor; • stringTytul; • string Wydawnictwo; • intRokWydania; • };

  27. Tworzenie obiektu struktury • Biblioteka Ksiazka1 = {"Prus","Lalka","PWN",1997}; • Biblioteka Ksiazka2 = {"Sienkiewicz","Krzyżacy","EXLEY",2001}; • Biblioteka Ksiazka3; • Ksiazka3.Autor="Sienkiewicz"; • Ksiazka3.Tytul="W pustyni i w puszczy"; • …

  28. Tablice struktur i wskaźnik na strukturę • Biblioteka Podreczniki[10]; • Podrecznik[2].Tytul="Fizyka"; • Podrecznik[4].Wydawnictwo="WSiP"; • … • Biblioteka *Wskaznik=new Biblioteka; • …

  29. Unia • Unia jest to rodzaj struktury odnoszący się do jednego miejsca w pamięci, które przeznaczone jest dla większej liczby obiektów różnego typu.

  30. Deklaracja unii i zastosowanie unii • union nazwa_unii{ • float liczba1; • int liczba2; • }; • … • nazwa_uniamoja_unia; • moja_unia.liczba1=3.14; • …

  31. Unia anonimowa • Unia anonimowa jest to unia bez nazwy. • Zatem nazwa zmiennej użytej w unii anonimowej musi być unikalna. • union { • char znak; • int liczba; • };

  32. Pola bitowe • Pole bitowe deklaruje zmienną składową struktury jako zmienną typu całkowitego zajmującą określoną ilość bitów. • Pola bitowe można zastosować w celu optymalizacji (zmniejszenia) ilości zużycia pamięci. Jednak należy pamiętać, że czas dostępu do pola bitowego jest dłuższy od czasu dostępu do zmiennej całkowitej.

  33. Przykaład pola bitowego • structData { • unsignedshortdzienTyg:3; • unsignedshortdzienMies:5; • unsignedshortmiesiac:4; • }; • Pole bitowedzienTyg pozwala zapamiętaććliczby od 0 do 7, ponieważ tyle można zapisać na trzech bitach. Pole bitowe dzienMiespozwala zapamiętać liczby od 0 do 31, natomiast pole miesiacliczby od 0 do 15.

More Related