Zaawansowane programowanie w języku C++ Wstęp



Podobne dokumenty
Studia podyplomowe realizowane w ramach zadania 5 Systemy mobilne i techniki multimedialne

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

Zaawansowane programowanie w języku C++ Wyjątki

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

KARTA KURSU (realizowanego w module specjalności)

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

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

KARTA KURSU. Student zna podstawy analizy, projektowania i programowani obiektowego oraz podstawy języka C++.

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

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Języki Programowania z Programowaniem Obiektowym wykład (15 godzin/semestr) laboratorium (30 godzin/semestr)

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Architektura komputerów Wprowadzenie do algorytmów

PROGRAMOWANIE w C prolog

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

Zaawansowane programowanie w języku C++

Języki Programowania z Programowaniem Obiektowym laboratorium (30 godzin/semestr)

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

PRZEWODNIK PO PRZEDMIOCIE

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: Piątek: 14:15-15:30

KARTA KURSU. Programowanie obiektowe

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

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

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

Rok akademicki: 2012/2013 Kod: IET SW-s Punkty ECTS: 3. Kierunek: Elektronika i Telekomunikacja Specjalność: Systemy wbudowane

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

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Programowanie mikrokontrolerów AVR

Podstawy programowania wykład

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

Programowanie w C. dr inż. Stanisław Wszelak

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

Medical electronics part 9a Electroencephalography (EEG)

Układy reprogramowalne i SoC Implementacja w układach FPGA

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Wstęp do programowania

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

Podstawy Programowania

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

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Wykład 1

dr inż. Jarosław Forenc

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

Architektura komputerów Historia systemów liczących

Systemy operacyjne na platformach mobilnych 2 Wstęp do systemu Linux

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

PRZEWODNIK PO PRZEDMIOCIE

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

KARTA MODUŁU KSZTAŁCENIA

Języki Programowania Obiektowego

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Zespołowy projekt informatyczny. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

Rok akademicki: 2014/2015 Kod: IEL s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

KARTA PRZEDMIOTU. Programowanie wieloplatformowe, D1_1

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

Podstawy programowania. Wprowadzenie

Mikrosystemy Wprowadzenie. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt.

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Języki i paradygmaty programowania

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Programowanie obiektowe. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia 4. ROK/ SEMESTR STUDIÓW: II/4

Organizacja kursu, paradygmaty, ogólnie o C i C++

Programowanie RAD Delphi

Król Łukasz Nr albumu:

Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6

E5 potrafi zaprojektować i zaimplementować prosty model

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

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

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Programowanie proceduralne w języku C++ Podstawy

Tematy dyplomów inżynierskich 2009 Katedra Inżynierii Oprogramowania

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

PRZEWODNIK PO PRZEDMIOCIE

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

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

kierunkowy (podstawowy / kierunkowy / inny HES) nieobowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr V zimowy i letni (semestr zimowy / letni)

KONSTRUKCJA KOMPILATORÓW

dr inż. Małgorzata Langer Architektura komputerów

Języki i paradygmaty programowania - 1

Języki programowania II - opis przedmiotu

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Zaawansowane programowanie w języku C++ Podstawy programowania w C++

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

Wstęp do programowania Laboratorium - wytyczne

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Programowanie obiektowe

KARTA PRZEDMIOTU. Aplikacje mobilne i wbudowane, D1.8

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Transkrypt:

Zaawansowane programowanie w języku C++ Wstęp Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego

O mnie Katedra Mikroelektroniki i Technik Informatycznych, PŁ Godziny przyjęć w pokoju nr 28 w budynku DMCS przy ulicy Wólczańskiej: Wtorek 9.30 11.00 Strona katedry: www.dmcs.pl dr inż. Bartłomiej Świercz swierczu@dmcs.pl Proximetry Poland sp. z o.o. Strona firmy: www.proximetry.com 2

Parę słów o Was Jaką szkołę i kierunek skończyliście? Jakie macie doświadczenie w C++? Czy programujecie w C++ komercyjnie? Czy bierzecie udział w projektach Open Source? Jak oceniacie swój stan wiedzy na temat programowania i języka C++? Czego oczekujecie od prowadzonego przedmiotu z C++? Czy są szczególnie interesujące Was zagadnienia z C++? 3

Zaliczenie przedmiotu Obecność na wykładach i laboratoriach (min. 80%). Samodzielne wykonanie ćwiczeń laboratoryjnych. Aktywność na zajęciach i zabieranie głosu w dyskusji oraz zadawanie pytań będzie bardzo mile widziane i doceniane! Pytania zadajemy w trakcie zajęć proszę się nie bać przerwać monologu prowadzącemu. Wszelkie dodatkowe wyjaśnienia jak również nadrobienie ewentualnych braków na godzinach przyjęć. Podstawowa zasada: nie ściemniamy! 4

Cel prowadzonego przedmiotu Nauka C++ i zrozumienie mechanizmów języka, ich zastosowania oraz przyczyny powstania. Który z oferowanych przez język mechanizmów należy zastosować i kiedy? Jaki jest koszt użycia danego mechanizmu? Czy mechanizm, który używam jest przenośny pomiędzy platformami i kompilatorami? Znajdowanie błędów i zrozumienie komunikatów o błędach drukowanych przez kompilatory Optymalizacja kodu Łączenie z asemblerem i innymi językami programowania 5

Czy jest jakaś różnica? for( int i = 0; i < vec.size(); i++ ) {... } for( size_t i = 0; i < vec.size(); ++i ) {... } 6

Komunikaty o błędach kod programu #include<vector> #include<iostream> int main() { std::vector<int> a; std::cout << a << std::endl; return 0; } 7

Komunikaty o błędach wydruk kompilatora C:\Temp>c:/local/MinGW/bin/g++ a.cc a.cc: In function `int main()': a.cc:7: error: no match for 'operator<<' in 'std::cout << a' c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:63: note: candidates are: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:74: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:86: note: std::basic_ostream<_chart, _Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>] std::basic_ostream<_chart, _Traits>& c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:121: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:155: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:98: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ostream:178: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ostream:189: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ostream:193: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/ostream:204: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:179: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(long Projekt long współfinansowany int) [with _CharT = przez char, Unię _Traits Europejską = std::char_traits<char>] c:/local/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/ostream.tcc:214: note: std::basic_ostream<_chart, _Traits>& std::basic_ostream<_chart, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>] 8

Przyszłość języka C++ 9

Literatura Standard języka C++ - podstawowy dokument referencyjny dla wszelkich dyskusji na temat języka C++! JTC1/SC22/WG21 - The C++ Standards Committee http://www.open-std.org/jtc1/sc22/wg21/ Dokument standaryzujący jest udostępniany odpłatnie, lecz możliwe jest darmowe ściągnięcie tzw. draftu standardu języka C++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf 10

Literatura dla początkujących B. Eckel, Thinking in C++, edycja polska, Helion 2002 B. Stroustrup, Język C++, WNT 2002 N. Josuttis, C++. Biblioteka standardowa. Podręcznik programisty, Helion 2003 K. Dattatri, Język C++. Efektywne programowanie obiektowe, Helion 2005 11

Literatura dla zaawansowanych B. Stroustrup, Język C++, WNT 2002 B. Stroustrup, Projektowanie i rozwój języka C++, WNT 1996 D. Vandevoorde, N. Josuttis, C++ szablony, Helion 2003 D. Abrahams, A. Gurtovoy, Język C++. Metaprogramowanie za pomocą szablonów, Helion 2005 S. Lippman, Model obiektu w C++, WNT S. Oualline, Jak nie programować w C++, Mikom 2003 H. Sutter, Wyjątkowy język C++, WNT 2002 R. Alexander, G. Bensley, C++. Optymalizacja oprogramowania, RM 2001 12

Literatura pliki nagłówkowe Pliki nagłówkowe są prawdziwą skarbnicą wiedzy i najpewniejszym źródłem wiedzy o interfejsach! Nie należy bać się ich czytać! Przykład ze standardowego pliku limits.h: /* * Maximum and minimum values for shorts. */ #define SHRT_MAX 32767 #define SHRT_MIN (-SHRT_MAX-1) #define USHRT_MAX 0xffff 13

Strony WWW Wikipedia: http://pl.wikipedia.org/wiki/c%2b%2b http://en.wikipedia.org/wiki/c%2b%2b C++ FAQ Lite: http://www.parashift.com/c++-faq-lite/ The C++ Programming Language: http://www.research.att.com/~bs/c++.html C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx/ 14

Grupy dyskusyjne Grupy dyskusyjne: pl.comp.lang.c pl.comp.os.linux.programowanie (podobne grupy są też dla innych systemów, np. MS Windows) comp.lang.c++ comp.lang.c++.moderated pl.comp.programming comp.realtime Do czytania grup dyskusyjnych można skorzystać z: http://groups.google.com/ 15

Tonący brzytwy się chwyta... www.google.com :) 16

Narzędzia i kompilatory Kompilator GCC (g++) Standardowo instalowany w środowisku Linux MinGW dla systemu Windows Cygwin dla systemu Windows Visual Studio 2008 Express Editions Debugery: gdb + ddd/cgdb Narzędzia GNU binutils i textutils System budowania GNU Make Edytory i IDE: gvim, pspad, Eclipse + CDT, Dev-C++, dowolny edytor tekstowy Profilery i analizatory kodów źródłowych 17

Biblioteki języka C++ Biblioteki graficznego interfejsu użytkownika: QT: http://www.qtsoftware.com/ GTKmm: http://www.gtkmm.org/ WxWidgets: http://www.wxwidgets.org/ FLTK: http://www.fltk.org/ Biblioteki ogólnego stosowania: Boost: http://www.boost.org/ Biblioteki wyspecjalizowane: VTK: http://www.vtk.org/ Boehm: http://www.hpl.hp.com/personal/hans_boehm/gc/ 18

Język C++ Bjarne Stroustrup Strona domowa: http://www.research.att.com/~bs/ C++: http://www.research.att.com/~bs/c++.html 19

Język C++ Historia Co nam zapewnia? Czego nie oferuje? C++ a inne języki programowania (asembler, Java, języki skryptowe, języki deklaratywne) Czemu ma opinię trudnego i skomplikowanego? Czy faktycznie tak jest? 20

Krótki test #include<iostream> int main() { float res; res = 1/3; std::cout << "Wynik: " << res; return 0; } 21

Zaawansowane programowanie w języku C++ Wstęp Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego