Rok akademicki 2008/2009, Wykład nr 1 2/25 Dane podstawowe Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia (zaoczne) Rok akademicki 2008/2009 dr inŝ. Jarosław aw Forenc Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, 15-351 Białystok WE-204 e-mail: jarekf@pb.edu.pl tel. (0-85) 746-93-97 http://www.we.pb.edu.pl/~jforenc Dydaktyka - slajdy prezentowane na wykładzie Wykład nr 1 (04.10.2008) http://www.we.pb.edu.pl/~jforenc/archiwum.html Materiały z poprzedniego semestru konsultacje:??? Rok akademicki 2008/2009, Wykład nr 1 3/25 Rok akademicki 2008/2009, Wykład nr 1 4/25 Przedmiot Informatyka Informatyka 1 semestr II wykład: 20 h (J. Forenc) pracownia specjalistyczna: 30 h (J. Forenc, P. Myszkowski) ECTS: 6 pkt. kod przedmiotu: EZ1A200 010 Informatyka 2 semestr III wykład: 10 h (J. Forenc) pracownia specjalistyczna: 30 h (J. Forenc, R. Bycul) ECTS: 4 pkt. kod przedmiotu: EZ1A300 014 Program wykładu (1/2) 1. Programowanie obiektowe w języku. Klasy i obiekty. Konstruktory i destruktory. Przeładowanie operatorów. Dziedziczenie. Funkcje wirtualne. 2. Wskaźniki, operacje na wskaźnikach, wskaźniki i tablice. Dynamiczny przydział pamięci. Dynamiczne struktury danych: stos, kolejka, lista. Przykłady zastosowań. 3. Operacje na wektorach i macierzach. MnoŜenie macierzy, normy wektorów i macierzy, wyznacznik macierzy. 4. Sortowanie. Klasyfikacje algorytmów sortowania. Algorytmy sortowania: przez proste wstawianie, przez proste wybieranie, bąbelkowe, szybkie (Quick-Sort).
Rok akademicki 2008/2009, Wykład nr 1 5/25 Rok akademicki 2008/2009, Wykład nr 1 6/25 Program wykładu (2/2) 5. System operacyjny. Funkcje i zadania systemu operacyjnego. Struktura i właściwości systemów Windows i Linux. Zarządzanie zadaniami, pamięcią i dyskami. 6. Sieci komputerowe. Podział sieci, topologie. Model ISO/OSI. Technologie, protokoły, urządzenia. Zasada działania sieci Internet. 7. Relacyjne bazy danych. Podstawowe pojęcia, organizacja i zasady wykorzystania. 8. Metody sztucznej inteligencji. Literatura (1/2) 1. B.W. Kernighan, D.M. Ritchie: Język ANSI C. WNT, Warszawa, 2007. 2. J. Grębosz: Symfonia standard. Tom 1 i 2. Edition 2000, Warszawa, 2006. 3. B. Stroustrup: Język. WNT, Warszawa, 2004. 4. K. Barteczko: Praktyczne wprowadzenie do programowania obiektowego w języku. Wydawnictwo Lupus, Warszawa, 1994. 5. B. Eckel: Thinking in. Edycja polska. Helion, Gliwice, 2002. 6. D. Kincaid, W. Cheney: Analiza numeryczna. WNT, Warszawa, 2006. 7. T.H. Cormen i in.: Wprowadzenie do algorytmów. WNT, Warszawa, 2007. 8. P. Wróblewski: Algorytmy, struktury danych i techniki programowania. Helion, Gliwice, 2003. Rok akademicki 2008/2009, Wykład nr 1 7/25 Rok akademicki 2008/2009, Wykład nr 1 8/25 Literatura (2/2) 9. N. Wirth: Algorytmy + struktury danych = programy. WNT, Warszawa, 2004. 10. A. Silberschatz i in.: Podstawy systemów operacyjnych. WNT, Warszawa, 2006. 11. K. Krysiak: Sieci komputerowe. Kompendium. Wydanie II. Helion, Gliwice, 2005. 12. H. Garcia-Molina i in.: Systemy baz danych. Pełny wykład. WNT, Warszawa, 2006. 13. M. Whitehorn, B. Marklyn: Relacyjne bazy danych. Helion. Gliwice, 2003. 14. D.E. Goldberg: Algorytmy genetyczne i ich zastosowania. WNT, Warszawa, 2003. 15. Z. Michalewicz. D.B. Fogel: Jak to rozwiązać, czyli nowoczesna heurystyka. WNT, Warszawa, 2006. Zaliczenie wykładu Kolokwium pisemne Termin nr 1:??? Termin nr 2:??? 4 pytania, za kaŝde pytanie moŝna otrzymać od 0 pkt. do 10 pkt. Przykładowe pytania zaliczeniowe na stronie www: połowa stycznia 2008 Punktacja: 37 pkt. - 40 pkt. - ocena: 5 33 pkt. - 36 pkt. - ocena: 4+ 29 pkt. - 32 pkt. - ocena: 4 25 pkt. - 28 pkt. - ocena: 3+ 21 pkt. - 24 pkt. - ocena: 3 poniŝej 21 pkt. - ocena: 2
Rok akademicki 2008/2009, Wykład nr 1 9/25 Rok akademicki 2008/2009, Wykład nr 1 10/25 Plan wykładu nr 1 Operacje wejścia/wyj cia/wyjścia w języku j Operacje wejścia/wyjścia w Programowanie proceduralne i obiektowe Definicja klasy, składniki klasy: funkcje i metody Prawa dostępu do składników klasy operacje wejścia-wyjścia nie są zdefiniowane w języku - umoŝliwiają je biblioteki standardowo dołączane przez producenta kompilatora: 1) biblioteka stdio (język C) 2) biblioteka stream (stara wersja iostream) 3) biblioteka iostream Strumienie: wprowadzanie i wyprowadzanie informacji moŝna potraktować jako strumień bajtów płynących od źródła do ujścia. strumienie w realizowane są na zasadzie klas wykorzystanie strumieni wymaga dołączenia pliku nagłówkowego iostream #include <iostream> zamiast #include <stdio.h> Rok akademicki 2008/2009, Wykład nr 1 11/25 Rok akademicki 2008/2009, Wykład nr 1 12/25 Operacje wejścia/wyj cia/wyjścia w języku j Strumienie: Operacje wejścia/wyj cia/wyjścia w języku j Operatory << i >>: w języku są cztery predefiniowane strumienie: cout cin cerr clog - związany ze standardowym urządzeniem wyjścia (ekran), skrót od ang. C-onsole OUT-put - związany ze standardowym urządzeniem wejścia (klawiatura), skrót od ang. C-onsole IN-put - związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień niebuforowany - związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień buforowany << - operator odpowiadający za wysyłanie informacji do strumienia, nazywany jest często operatorem insert - wstawienia (albo put to) >> - operator odpowiadający za wczytywanie informacji, nazywany jest operatorem ekstrakcji (extract operator) lub operatorem get from Przykłady: cout << x; cout << x << y; cout << x << " " << y; cin >> x; - wyświetlenie na ekranie wartości zmiennej x - wyświetlenie wartości dwóch zmiennych: x i y (bez znaku spacji między nimi) - wyświetlenie wartości dwóch zmiennych: x i y (ze spacją między nimi) - wczytanie informacji do zmiennej x operatory << i >> mają bardzo niski priorytet
Rok akademicki 2008/2009, Wykład nr 1 13/25 Rok akademicki 2008/2009, Wykład nr 1 14/25 Program w języku j Program w języku j Przykład (bez dyrektywy using): #include <iostream> int main() std::cout << "Witaj swiecie!" << std::endl; system("pause"); #include <iostream> int main() std::cout << "Witaj swiecie!" << std::endl; system("pause"); std:: przed nazwami identyfikatorów cout i endl oznacza, Ŝe pochodzą one z biblioteki standardowej (dokładniej - pochodzą z tzw. przestrzeni nazw std) endl - przejście do nowego wiersza, odpowiada "\n" w języku C w celu uniknięcia ciągłego pisania std:: przed nazwami identyfikatorów umieszcza się w programie dyrektywę using: using namespace std; Przykład (z dyrektywą using): #include <iostream> using namespace std; int main() cout << "Witaj swiecie!" << endl; system("pause"); Rok akademicki 2008/2009, Wykład nr 1 15/25 Rok akademicki 2008/2009, Wykład nr 1 16/25 C C struktura jest zestawem elementów róŝnych typów, zgrupowanych pod jedną nazwą, słuŝą zatem do reprezentacji złoŝonych obiektów róŝnych danych ogólna postać deklaracji struktury jest następująca: struct nazwa opis_pola_1; opis_pola_2;... opis pola_n; deklaracja struktury rozpoczyna się od słowa kluczowego struct, po którym moŝe występować opcjonalna nazwa struktury (etykieta struktury) pomiędzy nawiasami klamrowymi umieszczone są pola struktury (komponenty, składowe), mające taką samą postać jak deklaracje zmiennych w programie w deklaracji struktury muszą występować wszystkie nawiasy klamrowe i średniki Przykłady: struct punkt int x; int y; struct osoba int wzrost,waga; pola jednego typu moŝna łączyć przecinkami struct int a,b,c; float d,e; nazwy pól struktury mogą być takie same jak nazwy innych zmiennych w programie, a nawet takie same jak nazwa struktury deklarując strukturę wprowadzamy nowy typ danych (np. struct punkt), którym moŝna posługiwać się tak samo jak kaŝdym innym typem standardowym
Rok akademicki 2008/2009, Wykład nr 1 17/25 Rok akademicki 2008/2009, Wykład nr 1 18/25 C C - odwołania do pól p l struktury po klamrze kończącej listę pól struktury moŝe występować lista zmiennych, np. dostęp do pól struktury moŝliwy jest dzięki konstrukcji typu: struct osoba Kowalski, Nowak; - Kowalski i Nowak są zmiennymi typu struct osoba nazwa_struktury.nazwa_pola zapisanie wartości 25 do pola wiek zmiennej strukturalnej Kowalski ma postać: Kowalski.wiek = 25; w przypadku deklaracji, po której nie występuje lista zmiennych, nie następuje przydział pamięci. Jeśli podana została nazwa struktury, to zmienne moŝna zadeklarować później, np. operator kropki nazywany jest operatorem bezpośredniego wyboru pola w przypadku, gdy zmienna strukturalna jest wskaźnikiem, to do odwołania do pola struktury uŝywamy operatora pośredniego wyboru pola (->), np. struct osoba struct osoba Kowalski, Nowak; struct osoba Nowak, *Nowak1; Nowak1 = &Nowak Nowak1 -> wiek = 25; lub (*Nowak1).wiek = 25; w ostatnim zapisie nawiasy są konieczne, gdyŝ operator. ma wyŝszy priorytet niŝ operator * Rok akademicki 2008/2009, Wykład nr 1 19/25 Rok akademicki 2008/2009, Wykład nr 1 20/25 Programowanie proceduralne i obiektowe program komputerowy opisuje w pewien sposób rzeczywistość w odniesieniu do sposobu definiowania przedmiotów występujących w rzeczywistości wykształciły się dwa zasadnicze podejścia: Proceduralne: tworzymy strukturę zawierającą parametry definiujące przedmiot i jego stan, a odseparowane funkcje określają jego właściwości struct punkt int x,y; void rysuj(struct punkt p) // ciało funkcji Obiektowe: dane definiujące przedmiot i metody (funkcje składowe) określające jego właściwości umieszczamy we wspólnym miejscu - klasie class PUNKT int x,y; void rysuj(void); Definicja klasy zmienne powyŝszego typu nazywa się obiektami jeśli chcemy utworzyć obiekt powyŝszej klasy, to podobnie jak przy deklaracji innych zmiennych podajemy nazwę typu i nazwę obiektu: nazwa_typu x; nazwa_typu *y; PUNKT x, *y; słowo kluczowe nazwa klasy class nazwa_typu // ciało klasy, czyli określenie z czego składa się klasa średnik - obiekt klasy nazwa_typu - wskaźnik na obiekty typu nazwa_typu
Rok akademicki 2008/2009, Wykład nr 1 21/25 Rok akademicki 2008/2009, Wykład nr 1 22/25 Składniki klasy - dane dane (dane składowe, pola, atrybuty) - oznaczają to samo co pola w strukturach class osoba do danych w klasie odwołujemy się w taki sam sposób jak do pól struktury: obiekt.dana wskaźnik->dana osoba x,*y; x.wiek = 15; y = &x; y->wiek = 20; Składniki klasy - funkcje funkcje (funkcje składowe, metody) - są to funkcje operujące na danych składowych klasy class osoba void zapisz(char *i, char *n, int w); osoba x,*y; x.zapisz( Jan, Kowalski,30); y = &x; y->zapisz( Adam, Kowalski,25); do funkcji w klasie odwołujemy się w taki sam sposób jak do jej danych: obiekt.funkcja(argumenty) wskaźnik->funkcja(argumenty) deklaracje danych i funkcji mogą być umieszczane w klasie w dowolnej kolejności niezaleŝnie od miejsca zdefiniowania składnika wewnątrz klasy - składnik znany jest w całej definicji klasy Rok akademicki 2008/2009, Wykład nr 1 23/25 Rok akademicki 2008/2009, Wykład nr 1 24/25 Prawa dostępu do składnik adników w klasy dla składników klasy (danych i funkcji) określa się trzy prawa dostępu: private (prywatne) oznacza, Ŝe funkcje i dane klasy dostępne są tylko z wnętrza klasy dla danych oznacza to, Ŝe tylko funkcje będące składnikami klasy mogą te dane odczytywać lub do nich coś zapisywać dla funkcji oznacza to, Ŝe mogą one zostać wywołane tylko przez inne funkcje składowe tej klasy (oraz tzw. funkcje zaprzyjaźnione) public (publiczne) komponenty publiczne są ogólnie dostępne, moŝna się do nich odwoływać z wnętrza klasy lub spoza klasy tak samo jak do pól struktur lub funkcji protected (zabezpieczone) dostęp jest taki sam jak dla private, ale dodatkowo są one dostępne dla klas wywodzących się od tej klasy (dziedziczenie) Prawa dostępu do składnik adników w klasy etykiety private, public, protected moŝna umieszczać w dowolnej kolejności, mogą one powtarzać się domyślnie wszystkie składowe są prywatne class osoba int ocena; void zapisz(char *i, char *n); private: float wzrost; float waga; void wyswietl(); definicja klasy nie definiuje obiektu - nie przydziela więc pamięci w definicji klasy nie moŝna inicjować danych definiując kilka obiektów danej klasy w pamięci przydzielane jest miejsce dla wszystkich danych, natomiast funkcje są w pamięci tylko jeden raz funkcje składowe klasy mają dostęp do wszystkich jej danych i funkcji
Rok akademicki 2008/2009, Wykład nr 1 25/25 Koniec wykładu nr 1 Dziękuj kuję za uwagę!