C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){};
Język C/C++ Funkcje.
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Prowadzący: mgr inż. Elżbieta Majka
Filip Andrzejewski Remigiusz Chiluta
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
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 informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Wirtotechnologia Grupa: 1A Wydział Inżynierii Metali i Informatyki Przemysłowej Wydział Odlewnictwa Akademia Górniczo – Hutnicza im.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – LAB6 Wojciech Pieprzyca.
#include #include main () { cout
Programowanie obiektowe W2
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania
Podstawy programowania II
Podstawy informatyki (4)
Programowanie strukturalne i obiektowe
Wczytywanie danych z klawiatury, komentarze, zmienne.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
TABLICE C++.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Procedury i funkcje.
Zadanie Dev C++.
Przekazywanie argumentów
Pętla do ... While C++ Źródło:
Programowanie strukturalne i obiektowe
Andrzej Repak Nr albumu
Inicjalizacja i sprzątanie
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Programy różne w C++
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
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 1 informatyka +
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++
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
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.
Pętle Zajęcia 6.
Funkcje - rekurencja Zajęcia 8. Funkcje - definicja Ogólna postać funkcji w C++: typZwracany nazwaFunkcji(listaParametrówWejściowychFunkcji) { ciało funkcji.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
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 2 Dane, instrukcje, program.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Ł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.
Programowanie I Rekurencja.
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.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Wskaźniki Elżbieta Labocha.
Programowanie I Rekurencja.
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

C++ mgr inż. Tomasz Turba Politechnika Opolska 2016

Z2++ brzmiało: Napisz kompleksowy program który będzie zawierał: 1. Funkcja potęguje dwie wprowadzone liczby A i B i wyświetla wynik na ekranie 2. Funkcja pobiera od użytkownika Imię i wyświetla na ekranie „Witaj $imię!” 3. Funkcja która po wprowadzeniu przez użytkownika liczby całkowitej wykona silnię tej liczby. 4. Funkcja która wypełni tablicę N-elementową liczbami losowymi, wyświetli je, a następnie je przesortuje metodą QuickSort i wyświetli przesortowane. 5. Program po uruchomieniu powinien posiadać menu wyboru (po każdym wyborze i wykonaniu operacji program ma wracać do menu, kończy się dopiero po wyborze opcji 5. Zakończ): 1. Potęguj 2. Przywitaj 3. Silnia 4. Sortuj 5. Zakończ

Zajęcia [ ]  Pętla WHILE  Rekurencja  Wskaźnik  Referencja  Zadanie domowe

Pętla WHILE while( /* warunek kończący pętlę */ ) { instrukcja1; instrukcja2; zmiana_wartości_warunku; }

#include void odliczanie(int iStart) { while(iStart>=0) { std::cout << iStart << ", "; --iStart; std::system("pause"); } //while std::cout << "LUBUDUBU!" << std::endl; } int main() { odliczanie(5); return 0; }

Rekurencja  Rekurencja (rekursja) – wywołanie samej siebie  Stosuje się często przy potrzebie ponownego wywołania funkcji operującej na tym samym stosie danych (struktury drzewiaste, vide XML).  Stabilizuje przejrzystość kodu, ułatwia implementację rozwiązań  Przykład (w zadaniu domowym: silnia)

#include using namespace std; long sumuj(int n) { if(n<1) return 0; return n+sumuj(n-1); } int main() { int n; cout << "Podaj liczbe: "; cin >> n; cout << "Suma " << n <<" kolejnych liczb naturalnych wynosi " << sumuj(n) << endl; system("pause"); return 0; }

Stos Pamięć komputera jest podzielona na bajty, a każdy bajt ma swój adres. Dla przykładu: W 1KB pamięci jest 1024 bajtów i każdy z nich ma adres (0-1023).

Po co stosować wskaźniki/referencje?  Za każdym razem gdy programista zadeklaruje zmienną, kompilator umieszcza ją _gdzieś_ w pamięci. Mając wiedzę _gdzie_ w pamięci jest wartość zmiennej – można się do niej odwoływać.  Uproszczenie kodu  Głębsze zrozumienie obsługi pamięci komputera (optymalizacja działnia kodu)  Bezpieczeństwo (memleak, buffer overflow)

Wskaźniki  „Zmienne w komputerze są przechowywane w pamięci. To wie każdy programista, a dobry programista potrafi kontrolować zachowanie komputera w przydzielaniu i obsłudze pamięci dla zmiennych. W tym celu pomocne są wskaźniki.” © Wikipedia int main() { int zmienna = 5; cout << &zmienna; //dereferencja (odwołanie do adresu) system(pause); return 0; } Co pojawiło się na ekranie?

Wskaźniki – deklaracja

#include using namespace std; int main() { int *pc, c; c = 5; cout << "Adres zmiennej c (&c): \t\t\t" << &c << endl; cout << "Wartosc zmiennej (c): \t\t\t" << c << endl << endl; pc = &c; //wskaźnik trzyma adres pamięci zmiennej c cout << "Adres ktory jest we wskazniku (pc): \t" << pc << endl; cout << "Zawartosc wskaznika (*pc): \t\t" << *pc << endl << endl; c = 11; //zawartość wewnątrz adresu &c jest zmieniona z 5 na 11 cout << "Adres ktory jest we wskazniku (pc): \t" << pc << endl; cout << "Zawartosc wskaznika (*pc): \t\t" << *pc << endl << endl; *pc = 2; cout << "Adres zmiennej c (&c): \t\t\t" << &c << endl; cout << "Wartosc zmiennej c (c): \t\t" << c <<endl << endl; return 0; }

Referencja  Referencja to: przypisanie adresu zmiennej do innej zmiennej  Referencja to także: przekazanie argumentu do funkcji  Operacje wykonane na zmiennej referencyjnej zostaną odzwierciedlone na zmiennej z której pobrano adres.  W odróżnieniu od wskaźnika adres może być przypisany tylko jeden raz, a następnie operacje wykonywane są jak na zwykłej zmiennej  Analiza dwóch programów (zmienne, funkcje) – przeanalizuj i odpowiedz na pytanie: jakie wartości otrzymano w przypadku zmiennych, a jakie w przypadku wywołania funkcji?

#include using namespace std; int main() { int i = 5; int &ref_i = i; //referencja musi być zadeklarowana w momencie inicjalizacji cout << i << endl; cout << ref_i << endl; ref_i = 1; cout << i << endl; cout << ref_i; return 0; }

#include using namespace std; void update_nie(int liczba) { ++liczba; } void update_tak(int & liczba) //nie musi być zadeklarowana w momencie inicjalizacji { ++liczba; } int main() { int wartosc=0; cout << "Podaj wartosc: "; cin >> wartosc; update_nie(wartosc); cout << "Wynik funkcji update_nie: " << wartosc; update_tak(wartosc); cout << "\nWynik funkcji update_tak: " << wartosc; return 0; }

Zadanie domowe (5pkt)  1. Napisz program który:  A) funkcją poprosi o podanie wartości int trzech kolejnych zmiennych X, Y, Z  B) wypisze wartości i adresy zmiennych X, Y, Z za pomocą wskaźników  C) zamieni wartości wskazanych dwóch zmiennych za pomocą wskaźników  D) zamieni wartości wskazanych dwóch zmiennych za pomocą referencji (!)  E) Po wypisaniu A, B, C, D program czeka na ruch użytkownika:  Wpisanie słowa „exit” [enter] -> koniec programu  Wpisanie słowa „run” [enter] -> wyświetlenie na ekranie 1000 liczb od 1 do 1000, następny [enter] -> koniec programu  Wykorzystaj wiedzę nt. operacji we/wy, funkcji, stringów, pętli oraz alokacji w pamięci (punkt E może być realizowany bez wsk/ref), podpowiedź: wykorzystaj zmienne pomocnicze, ostrożnie z mieszaniem wskaźników i referencji

Przykład  Podaj X:  Podaj Y:  Podaj Z:  Wartosc X=Adres X=  Wartosc Y=Adres Y=  Wartosc Z=Adres Z=  Podaj zmienne do zamiany wskaźnikowej: Z, Y  Wartosc X=Adres X=  Wartosc Y=Adres Y=  Wartosc Z=Adres Z=  Podaj zmienne do zamiany referencyjnej: X, Y  Wartosc X=Adres X=  Wartosc Y=Adres Y=  Wartosc Z=Adres Z=  Co mam robić, mój Panie? [exit/run]  run  1, 2, 3, 4, 5, … 1000  exit