PROE wykład 1. dr inż. Jacek Naruniec

Podobne dokumenty
PROE wykład 1. dr inż. Jacek Naruniec

PROE wykład 1. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Wykład 8: klasy cz. 4

Język C++ Różnice między C a C++

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 5: Klasy cz. 3

dr inż. Jarosław Forenc

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

Deklaracja struktury w C++

Laboratorium 1 - Programowanie proceduralne i obiektowe

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Wykład 9: Polimorfizm i klasy wirtualne

Języki i paradygmaty programowania

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania. Wykład 1

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Programowanie komputerowe. Zajęcia 1

Podstawy programowania obiektowego

Podstawy programowania skrót z wykładów:

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

Programowanie komputerowe. Zajęcia 7

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wyjątki (exceptions)

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Tablice, funkcje - wprowadzenie

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Programowanie obiektowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie II C16

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

1 Atrybuty i metody klasowe

Podstawy i języki programowania

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy Programowania Obiektowego

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wykład 1: Wskaźniki i zmienne dynamiczne

7. Pętle for. Przykłady

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zaliczenie przedmiotu:

ALGORYTMY I STRUKTURY DANYCH

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

DYNAMICZNE PRZYDZIELANIE PAMIECI

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Podstawy algorytmiki i programowania - wykład 4 C-struktury

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Zajęcia trwają 15 tygodni (2 godziny wykładu, 2 godziny laboratorium tygodniowo) Zaliczenie zajęć jest uwarunkowane zaliczeniem zajęć laboratoryjnych

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Podstawy programowania w języku C++

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Programowanie obiektowe

Język C++ zajęcia nr 2

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

OBIEKTY PHP. G. Panuś

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Programowanie, część I

Wstęp do Programowania 2

Wprowadzenie do programowania i programowanie obiektowe

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie Obiektowe i C++

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Programowanie w języku C++ Grażyna Koba

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Mechanizm dziedziczenia

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Programowanie obiektowe

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Transkrypt:

PROE wykład 1 dr inż. Jacek Naruniec

Informacje o przedmiocie Prowadzący: dr inż. Jacek Naruniec, J.Naruniec@ire.pw.edu.pl, pokój 450, konsultacje w poniedziałki w godzinach 14-16 Strona przedmiotu: ztv.ire.pw.edu.pl/proe

Zaliczenie Progi punktowe: >= 90 punktów - 5 >= 80 punktów - 4,5 >= 70 punktów - 4 >= 60 punktów - 3,5 >= 50 punktów - 3 < 50 punktów - 2 2 sprawdziany wykładowe (terminy zostaną podane na kolejnych wykładach) za w sumie 25+25=50 punktów. Laboratorium 50 punktów

Zaliczenie Aby otrzymać ocenę pozytywną z przedmiotu należy: zdobyć co najmniej 25 punktów z laboratorium, zdobyć co najmniej 25 punktów z kolokwiów, zdobyć w sumie co najmniej 50 punktów.

Laboratorium Zadania wykonywane są samodzielnie! Zadania można oddawać zarówno na komputerach laboratoryjnych (system linuksowy) jak i na własnych komputerach (zarówno w systemie linuksowym jak i Windows). Dopuszczalne są jedynie 2 kompilatory - linuksowy g++ i kompilator Visual Studio, wersja min. 2010 (studenci WEiTI mają darmowy dostęp do VS poprzez MSDNAA). Zabronione jest oddawanie programów w DevCPP, C++ Builder, itp.

Laboratorium Za każdy rozpoczęty tydzień opóźnienia w oddawaniu projektów laboratoryjnych maksymalna ilość punktów do zdobycia obniżana jest o 20% (pierwszy tydzień 20%, drugi 40% itd.) Zaliczenie projektu odbywa się na ostatnich zajęciach przewidzianych dla tego projektu, np. dla projektu realizowanego na zajęciach 2,3,4 zaliczenie odbywa się na 4 zajęciach Administratorem laboratorium jest inż. Paweł Szczęsny, pok. 14 tel. 22 234 5385

Literatura Bjarne Stroustrup, "Programowanie. Teoria i praktyka z wykorzystaniem C++." Bruce Eckel, "Thinking in C++ Bjarne Stroustrup, "Język C++ Jerzy Grębosz, "Symfonia C++" Jerzy Grębosz, "Pasja C++"

Jak uczyć się programowania? Samo czytanie/słuchanie/rozumienie nie wystarczy! Samodzielne programowanie. W razie kłopotów książki i Google.

Programowanie obiektowe Czym jest obiekt? obiekt może być odwzorowaniem rzeczywistego bytu (np. Samolot, Tabela, Nazwisko, Świat), obiekt może być czymś bardzo ogólnym jak i czymś bardzo szczegółowym: Kształt, Okno, Pojazd Imię, RodzajMatrycy, ObrazKolorowy obiekt może być częścią innego obiektu (Piksel będzie częścią obiektu Obraz) obiekt w zasadzie może reprezentować wszystko jest podstawą programowania obiektowego -> wszystkie programy powinny być realizowane w ramach obiektów obiekty muszą mieć sensowne powiązania

Programowanie strukturalne: przykład Projekt: Kości - rzucamy pewną liczbą kości, każda może mieć inną liczbę ścian ponumerowanych od 1 do liczby ścian, - wczytujemy z wejścia ilość rzutów i wypisujemy sumę wyrzuconych oczek.

Projekt Kości w C Prosta struktura kości: Dodajemy funkcję losowania wyniku kości, wyniki wpisywane są do pola struktury:

Projekt Kości w C

Projekt Kosci w C++ Klasa zamiast struktury: słowo kluczowe class zamiast struct o tym będzie później publiczne elementy klasy o tym też będzie później konstruktor klasy, można na razie rozumieć jako funkcję inicjalizującą elementy klasy funkcja składowa klasy, można ją uruchamiać jedynie dla obiektów tej klasy wyjaśnienie, czy też definicja zadeklarowanego wyżej konstruktora klasy Kosc; innymi słowy wcześniej była tylko DEKLARACJA, to jest DEFINICJA definicja funkcji klasy Kosc

Projekt kości w C++ Deklaracja i definicja klasy z poprzedniego slajdu nie powoduje jeszcze utworzenia obiektu! jest to dopiero pewien schemat jakie pola klasy będą występować i jak się będą zachowywać. Tworzenie konkretnych obiektów odbywa się już w głównym programie (wywołanym przez main) podobnie jak struktur.

Projekt Kości C++ W tym momencie stworzy się obiekt typu Kosc i automatycznie uruchomi się konstruktor: Ta liczba boków dotyczy dokładnie obiektu nowa_kosc.

Projekt Kości C++ Poprzedzając maina deklaracją i definicją klasy Kosc w pierwszej linijce programu wykona się: - stworzenie obiektu typu Kosc - wywołanie konstruktora Kosc::Kosc(), który przypisuje liczbę boków na 5 Wywołanie kodu:

Projekt Kości C++ Proszę pamiętać! zmienne same się nie zainicjalizują to co im wpiszemy będzie wpisane, to co nie wpiszemy jest nieznane (stąd dziwne wartości typu -858993460 czy -52) Często korzystanie ze zmiennych niezainicjalizowanych skończy się błędem aplikacji. Wywołanie funkcji losujwyniknakosci() z naszej klasy: Sensowna wartość, bo funkcja przypisała dla zmiennej klasy wartość losową <1..5>, tu akurat 1

Kości w C++ Można oczywiście przypisywać ręcznie wartości pól klasy (w tym przypadku dlatego, że są one w sekcji public): Kod ASCII litery c

Kości w C++ Tak samo możemy stworzyć tablicę obiektów typu Kosc i dla każdego z obiektów wpisać inne wartości każdy obiekt jest osobnym bytem, więc może mieć różne wartości. Procedura konstruktora (Kosc::Kosc()) wywoła się tyle razy, ile jest obiektów (tutaj 10).

Kości w C++ Zamiast printf-ów i scanf-ów zwykle w C++ wywołuje się operacje strumieniowe: cin i cout, które powodują odpowiednio wczytanie/wpisanie danych z/do strumienia. Ważny jest tu kierunek strumienia - << lub >>. Jeśli chcemy wpisać do strumienia, to do niego kierujemy znaki: cout << zmienna. Jeśli wartość chcemy wpisać do zmiennej wpisujemy cin >> zmienna, czyli: Funkcje te dostosowują się do typów zmiennych. generalnie to samo, ale preferowane endl

Kości C++ Nasza aplikacja może więc wyglądać następująco: Obiekt zamiast struktury, nie musimy już wywoływać: bo to odbywa się w konstruktorze.

Podział na pliki Często stosuje się zasadę, że jedna klasa to jeden plik.h i jeden plik.cpp o nazwie takiej jak nazwa klasy (ewentualnie nazwa klasy poprzedzona literą C), czyli dla naszego przykładu będziemy mieli trzy pliki: Kosc.h - deklaracje klasy Wymuszenie faktu, że plik może być includowany jedynie raz Proszę nie zapominać o tym średnku!

Podział na pliki Kosc.cpp Musimy znać deklaracje Klasy! Nazwy bibliotecznych plików nagłówkowych piszemy bez końcówki (bez.h).

Podział na pliki Program.cpp (czy jakkolwiek byśmy chcieli, ale musi zawierać funkcję main) Bibliotekom standardowym z C zwykle dodaje się przedrostek c i wtedy otrzymujemy bibliotekę w C++ Wymagana dla operacji strumieniowych (cin, cout) stringi będziemy stosować zamiast char[1024] Nasz program musi znać klasę Kosc O tym będzie później wykorzystanie standardowej przestrzeni nazw C++, tutaj aby można było bezpośrednio używać cin i cout. Zwykle piszemy to na początku każdego programu w C++.

Tworzenie projektu w Visual Studio (Windows) - pokaz

Tworzenie projektu w g++ (Linux) - pokaz Makefile Mamy 3 pliki kosc.h, kosc.cpp i naszprogram.cpp (linux jest wrażliwy na wielkość liter, proszę uważać) W naszprogram.cpp mamy maina, więc chcemy w rezultacie otrzymać skompilowany program naszprogram. MakeFile: naszprogram: kosc.o [tabulacja] g++ naszprogram.cpp kosc.o o naszprogram kosc.o: kosc.cpp [tabulacja] g++ -c kosc.cpp

Nazewnictwo funkcji, klas i zmiennych Istnieje wiele standardów nazewnictwa, my przyjmiemy następujące: Wszystko nazywamy albo w języku polskim albo angielskim, nie mieszamy. Nazwa zmiennych, funkcji i klas powinna jak najwięcej mówić o ich roli (zamiast x, xx, xxx, xxxx, y, yyy, yy1 -> ilosc_znakow, liczba_iteracji ) Nazwy funkcji zaczynają się małą literą, kolejne części wielką, np. mojasupernowafunkcja. Nazwy zmiennych zaczynają się małą literą, kolejne części także małą, oddzielone podkreśleniem (np. ilosc_znakow, slowo, is_ready itd.). Nazwy klas zaczynają się wielką literą i kolejne części także (np. MojaSuperKlasa).

Goto

Inne różnice między C a C++ C zwykle podejście od ogółu do szczegółu piszemy maina i dopiero uszczegóławiamy elementy, w C++ - określamy obiekty, opisujemy je i dopiero potem łączymy je w większą aplikację. Możliwość przeciążania funkcji (2 funkcję mogą się tak samo nazywać, ale mieć różne parametry przy wywołaniu zostanie wykonana pasująca do parametrów). W C++ funkcje mogą być używane zarówno wewnątrz struktur jak i klas. Klasy mają sekcje (prywatne, publiczne, chronione), struktury nie. C++ obsługuje wyjątki, C nie. Alokowanie pamięci poprzez new (zamiast malloc), zwalnianie poprzez delete (zamiast free).

Języki obiektowe C++, C#, Java, Python C++ jest uważany za najbardziej niskopoziomowy język obiektowy.

Witamy w programowaniu obiektowym