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

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

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

Wykład 8: klasy cz. 4

Wstęp do programowania. Wykład 1

dr inż. Jarosław Forenc

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

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

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

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

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

Wykład 5: Klasy cz. 3

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

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

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

Wykład 9: Polimorfizm i klasy wirtualne

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

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

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

Języki i paradygmaty programowania

Deklaracja struktury w C++

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

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

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

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

Programowanie komputerowe. Zajęcia 1

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

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

Tablice, funkcje - wprowadzenie

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Programowanie komputerowe. Zajęcia 7

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

Podstawy programowania obiektowego

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

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

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

Wykład 1: Wskaźniki i zmienne dynamiczne

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

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

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

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

Wyjątki (exceptions)

Zaliczenie przedmiotu:

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

dr inż. Jarosław Forenc

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Podstawy Programowania

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

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

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

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

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

Podstawy Programowania. Wykład 1

Wstęp do Programowania, laboratorium 02

1 Atrybuty i metody klasowe

7. Pętle for. Przykłady

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

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

Programowanie obiektowe

Ocenianie ciągłe (praca przy Formująca tablicy oraz przy komputerze) pisemne, końcowe zaliczenie pisemne

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

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

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

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

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

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

ALGORYTMY I STRUKTURY DANYCH

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Podstawy i języki programowania

Programowanie obiektowe

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

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

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Java EE produkcja oprogramowania

Programowanie obiektowe

Programowanie obiektowe 1 - opis przedmiotu

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

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

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

Podstawy Programowania Obiektowego

Wprowadzenie do programowania i programowanie obiektowe

KARTA PRZEDMIOTU. Programowanie wieloplatformowe, D1_1

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Wstęp do informatyki- wykład 3 Pierwszy program w C++ Wyprowadzanie danych Deklaracja zmiennych

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 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

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 11, konsultacje w poniedziałki w godzinach 15-17 Inne godziny konsultacji w razie potrzeby w inne dni w 11 lub po uprzednim umówieniu się. Strona przedmiotu: ztv.ire.pw.edu.pl/proe (będzie uruchomiona w przyszłym tygodniu, na razie jest z poprzedniego roku)

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 25+25=50 punktów. Laboratorium 50 punktów Kolokwium poprawkowe na ostatnim wykładzie (wybrane jedno kolokwium)

Zaliczenie Aby otrzymać ocenę pozytywną z przedmiotu należy: zdobyć co najmniej 1/3 punktów z każdego z projektów (3, 5, 5), zdobyć co najmniej 25 punktów z kolokwiów, zdobyć co najmniej 25 punktów z laboratoriów, zdobyć w sumie co najmniej 50 punktów.

Laboratorium Terminy: Środa 16:15 Czwartek 14:15 Piątek 8:15 Piątek 12:15 Piątek 14:15 Piątek 16:15 Na zapisach pierwszeństwo mają osoby przypisane do tego terminu z Eresa!

Laboratorium Zadania wykonywane są samodzielnie! Zadania i projekty można oddawać zarówno na komputerach laboratoryjnych (system linuksowy i Windows) jak i na własnych komputerach (zarówno w systemie linuksowym jak i Windows). Dopuszczalne są jedynie 3 kompilatory - linuksowy g++, kompilator Visual Studio, wersja min. 2010 (studenci WEiTI mają darmowy dostęp do VS poprzez MS Imagine) i LLVM w ios. Zabronione jest oddawanie programów w DevCPP, C++ Builder, itp. Dokumentacja doxygen wymagana jest tylko do drugiego projektu (6, 7, 8, 9).

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++"

Treść wykładu i efekty kształcenia Treść wykładu: Zapoznanie się z możliwościami języka obiektowego C++ Zapoznanie z możliwościami podstawowych bibliotek C++ Nowy standard C++11 Efekty kształcenia: Zdobycie podstawowej wiedzy o programowaniu obiektowym. Zdobycie umiejętności pisania własnych aplikacji C++. Zdobycie umiejętności pisania dokumentacji doxygen.

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, łączyć się logicznie Nie musi mieć fizycznego odwzorowania (np. Parametry)

Programowanie strukturalne (C): przykład Jak wyglądał program w klasycznym C? 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 liczbę rzutów i rzucamy kośćmi, - wypisujemy sumę wyrzuconych oczek.

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

Projekt Kości w C

Projekt Kości 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 metoda 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 metody 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ę w programie (wywołanym przez main).

Projekt Kości C++ Kiedy program dotrze do tej linijki, stworzy się obiekt typu Kosc i automatycznie uruchomi się jego konstruktor: Ta liczba boków dotyczy dokładnie obiektu nowa_kosc, w innych obiektach może mieć inną wartość!

Projekt Kości C++ 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 koń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. Funkcje te dostosowują się do typów zmiennych. Do zatrzymywania programów nie korzystamy z system( pause ). 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). Dla naszego przykładu będziemy mieli trzy pliki: kosc.h, kosc.cpp i np. program.cpp Kosc.h - deklaracja klasy Wymuszenie faktu, że plik może być includowany jedynie raz Proszę nie zapominać o tym średniku!

Podział na pliki Kosc.cpp definicja składowych klasy 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 tablic typu char 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++.

Kompilator i linker Kompilator służy do kompilacji, czyli generowania z plików.cpp plików w innym języku bliższym sprzętowi, zwykle w formie binarnej. Z każdego skompilowanego pliku.cpp otrzymujemy plik.obj lub.o. Linker służy do łączenia wszystkich plików.obj,.o i bibliotek dodatkowych w jeden, finalny program. program.cpp kosci.cpp KOMPILATOR program.obj kosci.obj LINKER program.exe

Kompilator i linker Klasyczne błędy kompilatora (w większości składniowe): Klasyczne błędy linkera (jest deklaracje jakiejś funkcji, natomiast nie ma definicji):

Tworzenie projektu w Visual Studio (Windows) - pokaz

Tworzenie projektu w g++ (Linux) 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, ale należy się trzymać tego, który wybraliśmy, np.: 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 -> liczba_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++ Możliwość przeciążania funkcji (dwie 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). Nowy standard C++11 wprowadza szereg nowych możliwości.

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

Witam w programowaniu obiektowym