Języki programowania
|
|
- Martyna Dziedzic
- 6 lat temu
- Przeglądów:
Transkrypt
1 Języki programowania Nowoczesne techniki programowania Wykład 6 Witold Dyrka witold.dyrka@pwr.wroc.pl 11/01/2012
2 Prawa autorskie Slajdy do dzisiejszego wykładu powstały w oparciu o: C++ Language Tutorial (Juan Soulié) slajdy Bjarne Stroustrupa do kursu Foundations of Engineering II (C++) prowadzonego w Texas A&M University
3 Materiały Literatura Bjarne Stroustrup. Programowanie: Teoria i praktyka z wykorzystaniem C++. Helion (2010) Jerzy Grębosz. Symfonia C++ standard. Edition 2000 (2008) Dowolny podręcznik języka C++ w standardzie ISO The C++ Reference Network (j.ang.) Środowisko programistyczne Microsoft Visual C++ (rekomendowane) Dowolne środowisko korzystające z GCC
4 Program wykładów 1. Pierwszy program. Obiekty, typy i wartości 2. Wykonywanie obliczeń. Błędy 3. Pisanie i wykańczanie programu 4. Techniki pisania funkcji i klas 5. Strumienie wejścia/wyjścia 6. Wskaźniki i tablice 7. Systematyka technik i języków programowania* * nie zdążymy:-(
5 Zagadnienia Tablice tworzenie, inicjacja, przekazywanie do funkcji Wskaźniki operatory adresu i deferencji arytmetyka wskaźników Tworzenie obiektów i tablic w pamięci wolnej Tablica czy wektor?
6 Tablice Tablica jest szeregiem elementów tego samego typu umieszczonych w ciągłym bloku pamięci typ_elementu nazwa_tablicy[liczba_elementów] np. int wiek[7] wiek: 0 sizeof(int) elementy tablicy są indeksowane od zera 6
7 Dostęp do elementów tablicy nazwa_tablicy [indeks_elementu] np. wiek: cout << wiek[0]; cout << wiek[6]; cout << wiek[7]; cout << wiek[-1]; wiek[0] = 25; wiek[1] = wiek[6]; wiek[7] = 26; // 23 // 45 //?? wartość nieokreślona // jednak kompilator nie zgłosi błędu // może powodować błąd czasu wykonania // bzdura, która się kompiluje // podstawiamy wartość 25 na pierwszą pozycję w tabeli // podstawiamy wartość 2-gą wartością z pozycji 7-mej // zapisujemy 26 poza obszarem zarezerwowanym // dla tablicy wiek możemy nadpisać inną zmienną // jednak kompilator nie zgłosi błędu // może powodować błąd czasu wykonania
8 Tworzenie tablicy Standardowa tablica ma z góry określoną liczbę elementów, na które kompilator rezerwuje pamięć rozmiar tablicy musi być określony przez literał stały void f(int n) { int tablica_calk[60]; } // ok const int rozmiar = 20; char tablica_znak[rozmiar]; // ok double tablica_rzeczyw[n]; // błąd kompilacji int liczba_el = 10; double tablica[liczba_el]; // błąd kompilacji //...
9 Inicjacja tablicy w zakresie globalnym: automatyczna inicjacją wartością domyślną dla typu elementów int wiek[5]; int main() { cout << wiek[2]; } // wyświetli: 0 w zakresie lokalnym (np. w funkcji) brak inicjacji int main() { int wiek[5]; cout << wiek[2]; } // wyświetli: nie-wiadomo-co!
10 Lista inicjacyjna tablicy int wiek[7] = { 23, 30, 56, 71, 25, 32, 45 }; wiek: int wiek[7] = { 23, 30, 56, 71, 25 }; wiek: int wiek[] = { 23, 30, 56, 71, 25, 32 }; wiek: int wiek[6] = { }; wiek: 0
11 Lista inicjacyjna tablicy znaków char imie[6] = { 'W', 'i', 't', 'o', 'l', 'd' }; imie: 'W' 'i' 't' char imie[6] = ''Witold''; 'o' 'l' 'd' // błąd kompilacji! Wyraz nie mieści się w tablicy char imie[] = ''Witold''; imie: 'W' 'i' 't' 'o' 'l' 'd' 0 // C-string, czyli // ciąg ASCIIZ //... imie = ''Janusz''; // błąd kompilacji! W ten sposób można tylko inicjować tablice
12 Tablice wielowymiarowe Tablice wielowymiarowe są jakby tablicami tablic const int wymiar_n = 10; const int wymiar_m = 20; int main() { int macierz[wymiar_n][wymiar_m]; for (n=0;n<wymiar_n;n++) for (m=0;m<wymiar_m;m++) { macierz[n][m]=(n+1)*(m+1); } double wiek[100][365][24][60][60]; return 0; } // liczba wymiarów nie jest ograniczona, // ale pamięć tak: standardowo // ta tablica zajmie ponad 25 gigabajtów
13 Przekazywanie tablic jako parametrów funkcji Nie da się przekazać tablicy przez wartość Przekazujemy adres bloku pamięci zajętego przez tablicę void drukuj(double tablica[]) adres tablicy określa jej nazwa: double tablica1[50]; drukuj(tablica1); tablica nie pamięta swojego rozmiaru trzeba go przekazać osobno: void drukuj (double tablica[], int rozmiar) { for (int i=0; i<rozmiar; i++) cout << tablica[i] << endl; } int main () { double pierwsza[] = {1.2, 3.4, 5.6}; double druga[] = {2.1, 4.3, 6.5, 8.7, 10.9}; drukuj(pierwsza, 3); drukuj(druga, 5); return 0; }
14 Przekazywanie tablic wielowymiarowych jako parametrów funkcji Kompilator musi wiedzieć czy blok pamięci o pojemności np. 200 elementów ma traktować jako tablicę 10x10x2 czy 5x5x4? pamięć jest liniowa wielowymiarowość tablic jest tylko interpretacją kompilatora! dlatego: void drukuj2(double tablica2[ ][10][2]); void drukuj2(double tablica2[ ][5][4]); to dwie różne funkcje podczas, gdy: void drukuj(double tablica[10]); void drukuj(double tablica[5]); są takie same i kompilator traktuje je tak: drukuj(double tablica[ ]);
15 Przykład: kopiowanie tablic znaków Tablica nie zna swojego rozmiaru void f(int pi[ ], int n, char pc[ ]) // ostrzeżenie: to nie jest bezpieczny kod, podajemy go jako przykład // nigdy nie zakładaj, że podany rozmiar jest poprawny { char buf1[200]; strcpy(buf1,pc); // kopiuje znaki z pc do buf1 // strcpy kończy działanie gdy napotka znak '\0' // zakładamy, że pc zawiera mniej niż 200 znaków strncpy(buf1,pc,200); // kopiuje 200 znaków z pc do buf1 // jeśli pc jest krótsze, wypełnia buf1 do końca znakami '\0' int buf2[300]; // nie można było utworzyć char buf2[n]; n jest zmienną if (300 < n) throw runtime_error("brak miejsca"); for (int i=0; i<n; ++i) buf2[i] = pi[i]; // zakładamy, że pi naprawdę zawiera // n int-ów. Mamy problem jeśli ma mniej... }
16 Adresy tablic a referencje Przekazywanie tablicy jako argumentu funkcji jest podobne do przekazywania argumentu przez referencję w obu przypadkach funkcja może modyfikować argument int modyfikuj_liczbe (int& a); int modyfikuj_tablice (int tab[]); Czy nazwa tablicy jest referencją? NIE referencja jest inną nazwą obiektu znajdującego się pod tym samym adresem, np. człowiek jan_kowalski; człowiek& mój_sąsiad = jan_kowalski nazwa tablicy jest niemodyfikowalnym oznaczeniem adresu pamięci
17 Odkryliśmy nowy byt: wskaźnik (ang. pointer) Wskaźnik jest adresem pamięci nazwa tablicy jest specjalnym przypadkiem wskaźnika Wskaźnik definiujemy następująco: typ_obiektu* nazwa_wskaźnika; wskaźnik wskazuje na obiekt określonego typu, np. double* liczba może wskazywać na liczbę double, a nie na string dzięki temu wiemy jak korzystać ze wskazywanego obiektu, np. to na co wskazuje double* można dodawać, a nie konkatenować
18 Adresy: operator & int a; char ac[20]; void f(int n) { int b; int* p = &b; p = &a; } pc: p: a: ac: // wskaźnik na pojedynczą zmienną lokalną // wskaźnik na pojedynczą zmienną globalną char* pc = ac; // wskaźnik na pierwszy element tablicy // możemy tak napisać, bo nazwa tablicy // jest rodzajem wskaźnika, ustawionym 1-szy element pc = &ac[0]; // równoważne pc = ac pc = &ac[n]; // wskaźnik na n-ty element tablicy (numerując od 0) // uwaga! zakres nie jest sprawdzany //
19 Dereferencja czyli wyłuskanie: operator * int a; char ac[20]; void f(int n) { int b; int* p = &b; char* pc = ac; } // wskaźnik na pojedynczą zmienną lokalną // wskaźnik na pierwszy element tablicy int b2 = *p; // wyłuskanie wartości typu int spod adresu p char c = *ac; // wyłuskanie wartości typu char spod adresu ac // (jest to pierwszy element tablicy ac) // to samo co: char c = ac[0]; c = *(ac+n); // wyłuskanie wartości n-tego elementu tablicy ac // to samo co: c = ac[n]; //
20 Wskaźniki Wskaźniki są adresami pamięci można je traktować jak pewne wartości całkowite pierwszy bajt pamięci ma adres 0, kolejny 1 itd p2 *p2 2^ Wartości wskaźników można wyświetlić (ale rzadko się to przydaje) char c1 = 'c'; char* p1 = &c1; int i1 = 7; int* p2 = &i1; cout << "p1==" << p1 << " *p1==" << *p1 << "\n"; // p1==??? *p1==c cout << "p2==" << p2 << " *p2==" << *p2 << "\n"; // p2==??? *p2=7
21 źródło: Wskaźnik, czyli ang. pointer
22 Wskaźnik a referencja Referencja to automatycznie wyłuskiwany niemodyfikowalny wskaźnik, mówiąc prościej: przezwisko obiektu podstawienie do wskaźnika zmienia jego wartość podstawienie do referencji zmienia obiekt, do którego się odnosi nie można przestawić referencji na inny obiekt int a = 10; int* p = &a; // potrzebujesz & aby otrzymać adres zmiennej (wskaźnik na nią) *p = 7; // przypisanie wartości 7 do zmiennej a poprzez wskaźnik p // potrzebujesz * (lub [ ]) aby dostać się do tego, na co wskazuje wskaźnik int x1 = *p; // inicjuje zmienną x1 wartością zmiennej a poprzez wskaźnik p int& r = a; r = 9; int x2 = r; // r jest synonimem a // przypisanie wartości 9 do zmiennej a poprzez referencję r // inicjuje zmienną x2 wartością zmiennej a poprzez referencję r p = &x1; r = &x1; // możesz przestawić wskaźnik tak by odnosił się do innego obiektu // błąd: nie możesz przestawić referencji by odnosiła się do innego obiektu
23 Tablice i wskaźniki void f(int pi[ ]) // równoważne void f(int* pi) { int a[ ] = { 1, 2, 3, 4 }; int b[ ] = a; // błąd: kopiowanie nie jest zdefiniowane dla tablic. b = pi; // błąd: kopiowanie nie jest zdefiniowane dla tablic. // Nazwa tablicy jest niemodyfikowalnym wskaźnikiem pi = a; // dobrze, ale to NIE kopiuje tablicy: // teraz pi wskazuje na 1-szy element a int* p = a; // p wskazuje na pierwszy element a int* q = pi; // q wskazuje na pierwszy element a } pi: najpierw potem a: p: q:
24 Ostrożnie z tablicami i wskaźnikami char* f() { char ch[20]; char* p = &ch[90]; // *p = 'a'; char* q; *q = 'b'; return &ch[10]; // odczytaliśmy adres spoza zarezerwowanej dla ch pamięci // nie wiemy więc co teraz nadpisujemy // zapomnieliśmy zainicjować // nie wiemy co teraz nadpisujemy // O-o!: przecież ch zniknie gdy wyjdziemy z funkcji // a my zostaniemy z niesławnym wiszącym wskaźnikiem } void g() { char* pp = f(); // *pp = 'c'; // nie wiemy więc co teraz nadpisujemy // bo ch z funkcji f już dawno nie ma } Stroustrup/Programming Apr'10 24
25 Arytmetyka wskaźników char* mychar; short *myshort; long *mylong; // mychar++; myshort++; mylong++; // typ char zajmuje 1 bajt // typ short zajmuje 2 bajty // typ long zajmuje 4 bajty // Przesuwamy się w pamięci o: // 1 bajt // 2 bajty // 4 bajty źródło: Tak samo działa zwiększanie wskaźnika o dowolną liczbę pozycji, np. mylong+=4 przesunie wskaźnik o 16 bajtów. Nie ma niejawnych konwersji pomiędzy wskaźnikami na różne typy chociaż istnieją niejawne konwersje pomiędzy typami: mychar = myshort; mylong = myshort; *mychar = *myshort; *mylong = *myshort; // błąd! // błąd! // ok // ok
26 Arytmetyka wskaźników (2) Co będzie wynikiem działania następujących poleceń? Zasady: operator ++ ma wyższy priorytet niż * preinkrementacja ++x zwiększa x przed użyciem postinkrementacja x++ zwiększa x po użyciu int *p; // cout << *p++ ; cout << *++p ; cout << (*p)++; cout << ++*p; // wyłuskaj obiekt, zwiększ wskaźnik, wyświetl obiekt // zwiększ wskaźnik, wyłuskaj obiekt, wyświetl obiekt // wyłuskaj obiekt, wyświetl obiekt, zwiększ obiekt, // wyłuskaj obiekt, zwiększ obiekt, wyświetl obiekt
27 Tworzenie tablic o rozmiarze określanym w czasie wykonania Często w trakcie pisania programu nie wiemy ile dokładnie pamięci zarezerwować na tablicę Taką tablicę możemy umieścić w pamięci wolnej void funkcja() { int wymiar_n, wymiar_m; cout << ''Podaj wymiary macierzy 2D: ''; cin >> wymiar_n, wymiar_m; int *macierz = new int[wymiar_n][wymiar_m]; // Do tworzenia obiektów // w pamięci wolnej służy służy operator new, // który zawsze zwraca wskaźnik for (n=0;n<wymiar_n;n++) for (m=0;m<wymiar_m;m++) { macierz[n][m]=(n+1)*(m+1); } } delete[ ] macierz; // Po zakończeniu pracy z tablicą w pamięci wolnej // należy ją usunąć operatorem delete[] // W przeciwnym przypadku mamy wyciek pamięci`
28 Tworzenie dowolnych obiektów w pamięci dynamicznej Alokuj używając new new alokuje obiekt w pamięci wolnej, czasami inicjuje go i zwraca wskaźnik do niego: int* pi = new int; // inicjacja domyślna (nieokreślona dla int) Date* pd = new Date(2012, Date::jan, 11); // inicjacja jawna używamy konstruktor double* pd = new double[10]; // alokacja tablicy (niezainicjowanej ) new rzuca wyjątek bad_alloc() jeśli nie uda się utworzyć obiektu De-alokuj używając delete i delete[ ] delete (dla pojedynczych obiektów) i delete[ ] (dla tablic) zwalnia pamięć zaalokowaną przez new delete pi; // dealokuje pojedyńczy obiekt delete pd; // dealokuje pojedyńczy obiekt, wywołuje destruktor obiektu delete[ ] pd; // dealokuje tablicę, wywołuje destruktor dla każdego elementu tablicy De-alokacja wskaźnika o adresie 0 (czyli null) niczego nie robi char* p = 0; delete p; // nieszkodliwe
29 Pamięć komputera tak jak widzi ją program: Statyczna alokacja pamięci Kod programu zmienne statyczne, zmienne globalne Pamięć statyczna nienazwane obiekty alokowane dynamicznie Dynamiczna alokacja pamięci Pamięć wolna (sterta, ang. heap) Stos (ang. stack) zmienne automatyczne tzn. zadeklarowane lokalnie, parametry funkcji
30 Gdzie żyją obiekty int glob[10]; int* some_fct(int n) { int loc[20]; int* wsk = new int[n]; // return wsk; } // tablica globalna żyje zawsze // tablica lokalna żyje do końca zakresu // tablica na stercie żyje aż nie usunięta przez delete[ ] void f() { int* pp = some_fct(17); // delete[ ] pp; // dealokacja tablicy w wolnej pamięci, zaalokowanej przez some_fct() } łatwo zapomnieć usunąć obiekt/tablicę zaalokowaną w pamięci wolnej unikaj new / delete (lub delete[ ]) jeśli możesz
31 Wektor jest sprytną tablicą Vector jest typem danych zdefiniowanym w bibliotece standardowej C++ vector<t> przechowuje sekwencję wartości typu T w zasadzie można powiedzieć, że wektor jest sprytną tablicą zna size() swój rozmiar i może go zmieniać, współpracuje z algorytmami biblioteki standardowej v: 5 elementy v: v[0] v[1] v[2] v[3] 3 v[4] 5
32 vector czy tablica? vector<double> v_liczby; vector<string> v_slowa; vector<reading> v_odczyty; const int rozmiar = 10; double t_liczby[rozmiar]; string t_slowa[rozmiar]; Reading t_odczyty[rozmiar]; const int rozmiar = 10; vector<double> v_liczby2(rozmiar); for (int i=0; i<v_liczby2.size(); ++i) v_liczby2[i] = i*i; for (int i=0; i<rozmiar; ++i) t_liczby[i] = i*i; for (int i=0; i<v_liczby2.size(); ++i) cout << v_liczby2[i] << endl; for (int i=0; i<rozmiar; ++i) cout << t_liczby[i] << endl; Różnica: wektor zna swój rozmiar rozmiar tablicy musimy zapamiętać
33 vector czy tablica? #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; #include <iostream> #include <string> #include <cmath> #include <cstring> using namespace std; while (cin>>s && s!= "quit") words.push_back(s); const int rozmiar=10; string words[rozmiar]; string s; int i=0; while (i<rozmiar && cin>>s && s!= "quit") words[i++] = s; sort(words.begin(), words.end()); qsort(words, rozmiar, sizeof(string), compare); for (int i=0; i<words.size(); ++i) cout<<words[i]<< "\n"; for (i=0; i<rozmiar; ++i) cout<<words[i]<< "\n"; vector<string> words; string s; Różnica: wektor współpracuje z wygodnymi algorytmami biblioteki standardowej int compare (const void * a, const void * b) { return strcmp(((string*)a)->c_str(),((string*)b)->c_str()); } Tablica - nie
34 Po co zajmować się tablicami? W języku C są tylko tablice w C nie ma wektorów istnieje bardzo dużo kodu w C systemy operacyjne, systemy wbudowane bardzo dużo kodu C++ zostało napisane w stylu C programując w C++ na pewno się z nim spotkasz Tablica jest najprostszą reprezentacją pamięci musisz więc co-nieco o nich wiedzieć ktoś kto napisał kontener vector wykorzystał tablicę Zasada: unikaj tablic, gdy tylko możesz są najczęstszym źródłem błędów w C i C++ są wśród najczęstszych źródeł luk bezpieczeństwa
35 vector czy tablica? Tam, blisko sprzętu, życie jest proste i brutalne musisz zaprogramować wszystko sam nie pomoże Ci kontrola typów błędy w czasie działania poznaje się po tym, że dane uległy uszkodzeniu lub program się wysypał O nie, chcemy się wyrwać stamtąd tak szybko jak się da chcemy być produktywni i pisać niezawodne programy chcemy używać języka odpowiedniego dla ludzi Dlatego używamy wektorów itp. ale chcemy też poznać techniki tworzenia nowych klas służących do pracy ze strukturami danych
36 Wskaźniki, tablice i vector Uwaga Używając wskaźników i tablic dotykasz sprzętu przy minimalnym wsparciu języka Stąd przy korzystaniu z nich łatwo o poważny i trudny do znalezienia błąd Należy z nich korzystać tylko wtedy kiedy naprawdę są potrzebne vector jest jednym ze rozwiązań by zachowując prawie całą elastyczność i wydajność tablic skorzystać z większego wsparcia języka (czytaj: mniej błędów, szybsze odrobaczanie)
37 Dziś najważniejsze było to, że... Tablice i wskaźniki są najprostszą reprezentacją pamięci w C/C++ są bardzo efektywne ale i bardzo błędogenne należy ich unikać gdy to tylko możliwe dobrym zastępstwem dla tablicy jest vector Pozostało jeszcze tyle do nauczenia, np. korzystanie z pamięci wolnej tworzenie typów użytkownika korzystających z pamięci wolnej programowanie zorientowane obiektowo (np. dziedziczenie) programowanie uogólnione (szablony, kontenery, iteratory)
38 A w przyszłym semestrze Dalsze spotkania z programowaniem na kursie Informatyka język wysokiego poziomu w środowisku Matlab rozwiązywanie problemów numerycznych graficzny interfejs użytkownika programowanie zorientowane obiektowo Ale zanim to nastąpi: kolokwium zaliczeniowe: pon., , godz.19-21, sala 1.30/C-13 kolokwium poprawkowe: śr , godz (w sesji), sala 1.30/C-13
39 vector<double> v = { 1, 2, 3.456, }; template<class E> class vector { public: vector (std::initializer_list<e> s) // initializer-list constructor { reserve(s.size()); // get the right amount of space uninitialized_copy(s.begin(), s.end(), elem); // initialize elements (in elem[0:s.size())) sz = s.size(); // set vector size } Listy inicjacyjne C++11 //... as before }; vector<double> v1(7); v1 = 9; vector<double> v2 = 9; vector<double> v1{7}; v1 = {9}; vector<double> v2 = {9}; // ok: v1 has 7 elements // error: no conversion from int to vector // error: no conversion from int to vector // ok: v1 has 1 element (with its value 7) // ok v1 now has 1 element (with its value 9) // ok: v2 has 1 element (with its value 9) int x0 {7.3}; // error: narrowing int x1 = {7.3}; // error: narrowing; the = is optional double d = 7; int x2{d}; char x3{7}; vector<int> vi = { 1, 2.3, 4, 5.6 }; // error: narrowing (double to int) // ok: even though 7 is an int, this is not narrowing // error: double to int narrowing
Wskaź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
Wskaź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
ZASADY 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.
Programowanie obiektowe C++
Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 4 Witold Dyrka witold.dyrka@pwr.wroc.pl 29/10/2012 Prawa autorskie itp. Dzisiejszy wykładu powstał głównie w oparciu o slajdy Bjarne
Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Programowanie 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
Lab 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
Podstawy 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
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Wykł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
Wykł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
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Programowanie 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
IMIĘ 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
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Programowanie obiektowe C++
Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 0 Witold Dyrka witold.dyrka@pwr.wroc.pl 26/09/2011 Prawa autorskie itp. Wiele slajdów do tego wykładu powstało w oparciu o: slajdy
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete
Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Programowanie komputerowe. Zajęcia 5
Programowanie komputerowe Zajęcia 5 Tablice wielowymiarowe Tablicę dwuwymiarową możemy deklarować statycznie: typ nazwa[rozmiar1][rozmiar2]; Ma ona elementy nazwa[i][j] dla i=0,,rozmiar1-1, j=0,...,rozmiar2-1.
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
W2 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;
1. 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
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Ję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
STL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
1 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ć
Programowanie obiektowe w C++ Wykład 1
Programowanie obiektowe w C++ Wykład 1 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) POwCPP 1 / 24 Literatura Prata Stephen, Szkoła programowania. Język C++. Wydawnictwo Helion,
Programowanie, część I
11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne
Podstawy 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
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
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
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Programowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Wstę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,
Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++
Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard
Szablon klasy std::vector
Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Podstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Wykł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
Techniki 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
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Podstawy Programowania
Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 01 1 / 9 Plan wykładu 1 Informacje
Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula
Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
TEMAT : 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ą
Materiał 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
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów
Podstawy 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
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Część 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ęść
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.
Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python. Pliki z rozwiązaniami projektu (wszystkie polecenia
TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Wykład 1: Wskaźniki i zmienne dynamiczne
Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie
typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury
typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Programowanie obiektowe C++
Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 3 Witold Dyrka witold.dyrka@pwr.wroc.pl 21/11/2011 Prawa autorskie itp. Wiele slajdów do tego wykładu powstało w oparciu o: slajdy
Zaawansowane programowanie w języku C++ Biblioteka standardowa
Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Wstę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
Informacje 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
tablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
1 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.
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 6 Tablice statyczne 1 dr Artur Bartoszewski - programowania, sem 1 - WYKŁAD programowania Tablice 2 Tablice Klasyfikacja zmiennych statycznych prosty porządkowy rzeczywisty całkowity
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
PARADYGMATY 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
Podstawy 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
Języki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this
Szablony 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
JĘ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
KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*
WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW 33/01 KARTA PRZEDMIOTU Nazwa w języku polskim: Programowanie w języku C Nazwa w języku angielskim C language programming Kierunek studiów (jeśli
Podstawowe 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
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Wstę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.
Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje
Wstęp do programowania. Wykład 1
Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
PARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu
Tablice, wskaźniki, referencje Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu #include using namespace std; class cl int
Konstruktor kopiujacy
Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Podstawy 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
Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:
Laboratorium nr 9 Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: wskaźniki referencje zastosowanie wskaźników wobec tablic dynamiczny przydział pamięci,
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
Programowanie - 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