katedra informatiky FEI VŠB-TU Ostrava etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C září / 25

Podobne dokumenty
Martin Pergel. 26. února Martin Pergel

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

B0B99PRPA Procedurální programování

Edita Pelantová, katedra matematiky / 16

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Kristýna Kuncová. Matematika B3

B0B99PRPA Procedurální programování. Stanislav Vítek

Úvodní informace. 18. února 2019

5. a 12. prosince 2018

Kristýna Kuncová. Matematika B2 18/19

Matematika 2, vzorová písemka 1

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

Paralelní implementace a optimalizace metody BDDC

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

TGH01 - Algoritmizace

Určitý (Riemannův) integrál a aplikace. Nevlastní integrál. 19. prosince 2018

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

1. Informace o předmětu, úvod do programování

Co nám prozradí derivace? 21. listopadu 2018

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Formálne jazyky Automaty. Formálne jazyky. 1 Automaty. IB110 Podzim

Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

PVM. Luděk Matyska. Jaro Fakulta informatiky MU. Luděk Matyska (FI MU) PVM Jaro / 19

1 Soustava lineárních rovnic

(13) Fourierovy řady

Vybrané kapitoly z matematiky

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

TGH01 - Algoritmizace

Výzvy, které před matematiku staví

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

Expresivní deskripční logiky

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

podle přednášky doc. Eduarda Fuchse 16. prosince 2010

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Literatura. Zdroje informací. Tyto slajdy jsou určeny pro předmět ICP na FIT VUT v Brně. Obsahují základní popis jazyka C++ vhodný pro studenty, kteří

Wykład 1

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

Programowanie I. Wprowadzenie. Proces programowania

Quick sort, spojové struktury

Matematika (KMI/PMATE)

Stavový popis Stabilita spojitých systémů (K611MSAP) Katedra aplikované matematiky Fakulta dopravní ČVUT. čtvrtek 20. dubna 2006

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

GENETICKÉ PROGRAMOVÁNÍ S JAZYKEM BRAINFUCK

SYSTEMY OPERACYJNE WYKŁAD 2 PRZEGLĄD SYSTEMÓW WINDOWS I UNIX

Kristýna Kuncová. Matematika B2

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

IB047. Pavel Rychlý. 21. února

Zásuvný modul QGISu. QGIS plugin pro práci s katastrálními daty

Definice Řekneme, že PDA M = (Q,Σ,Γ,δ,q 0,Z 0,F) je. 1. pro všechna q Q a Z Γ platí: kdykoliv δ(q,ε,z), pak δ(q,a,z) = pro všechna a Σ;

SCRIPT PRO ZPRACOVÁNÍ OBRAZU

(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25

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

Kombinatorika a komplexní aritmetika

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

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

Podstawy Informatyki. Wykład 3 UNIX

Funkce zadané implicitně. 4. března 2019

Obsah Atributová tabulka Atributové dotazy. GIS1-2. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

Algebra I Cvičení. Podstatná část příkladů je převzata od kolegů, jmenovitě Prof. Kučery, Doc. Poláka a Doc. Kunce, se

HL24285SMART. Návod k použití Návod na použitie Instrukcja obsługi Használatı utasítás. Licensed by Hyundai Corporation, Korea

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, / 26

Anna Kratochvílová Anna Kratochvílová (FJFI ČVUT) PDR ve zpracování obrazu / 17

Programowanie Obiektowe i C++ Marcin Benke

Linea rnı (ne)za vislost

Historia i podstawowe koncepcje. Tomasz Borzyszkowski

Numerické metody minimalizace

Informatyka na UG... Witold Bołt

Laboratorium grafiki i multimediów

PA152,Implementace databázových systémů 2 / 25

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

Diferenciální rovnice základní pojmy. Rovnice se

Statistika (KMI/PSTAT)

Programowanie obiektowe w języku

Programowanie Obiektowew języku C++ Zadania L4

Implementace protokolu XMPP v JavaScriptu

Programowanie - wykład 4

wymagania odnośnie urządzeń wielofunkcyjnych SEGMENTU A (model wzorcowy RICOH MP305+) lub równoważny:

K SAMOSTATNÉ MODULOVÉ SCHODY MONTÁŽI. asta

Cauchyova úloha pro obyčejnou diferenciální rovnici

Wstęp do Programowania 2

Matematika 1 Jiˇr ı Fiˇser 24. z aˇr ı 2013 Jiˇr ı Fiˇser (KMA, PˇrF UP Olomouc) KMA MAT1 24. z aˇr ı / 52

Programowanie hybrydowe łączenie C/C++ z asemblerem

Programowanie Procedurale

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Simple Features. Úvod do problematiky, geodatabáze, OGC Simple Features. Martin Landa

Języki i metodyka programowania. Wprowadzenie do języka C

Pojem množiny nedefinujeme, pouze připomínáme, že množina je. Nejprve shrneme pojmy a fakta, které znáte ze střední školy.

kontaktní modely (Winklerův, Pasternakův)

Inverzní Z-transformace

POLIURETANOWE SPRĘŻYNY NACISKOWE. POLYURETHANOVÉ TLAČNÉ PRUŽINY

Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Katedra teoretické informatiky a matematické logiky

Wstęp do Informatyki dla bioinformatyków

Rovnice proudění Slapový model

Numerické metody 8. května FJFI ČVUT v Praze

Transkrypt:

Začínáme s C/C++ Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 26. září 2005 etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 1 / 25

Základní pojmy Algoritmus jasný, rezultativní, konečný. Provádí počítač: CPU, sběrnice, pamět (hierarchie, vnitřní a vnější), I/O. bit a bajt. Operační systém MS Windows 95, 98, ME, NT4.0, 2000, XP, Unix Linux, AIX, Solaris či Sun OS, HP-UX, vstup a výstup, pamět, souborový systém. muj.c zdrojový text muj.exe proveditelný program Soubory textové a binární. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 2 / 25

Programovací jazyky imperativní Ada, BASIC, C, C++, C#, FORTRAN, Java, Modula, Pascal, Smalltalk; funkcionální Lisp, Haskell. syntaxe způsob zápisu, sémantika význam kódu. Vývoj 60. léta FORTRAN, BASIC domácí počítače (Sinclair, Commodore, Atari a Amiga), osobních počítače (IBM PC, Macintosh), Internet, hry, multimédia a zábava. vyšší bezpečnost, typová kontrola, abstrakce, znovupoužitelnost: Simula, Smalltalk, Ada systémové jazyky C, C++ von Neumannova architektura počítače, sémantická mezera, virtuální stroj. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 3 / 25

Programovací jazyky C a C++ Bellovy laboratoře AT&T Denis Ritchie, Brian Kernighan, Ken Thompson. snadá a přenositelná implementaci Unixu systémový jazyk, VŠ studenti základ ISO normy International Standards Organisation. Vznik a vývoj C++ 1986 Stroustrup: The C++ Programming Language, OOP, moduly. 90. léta komponentní programování a Internet Java a C#. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 4 / 25

Principy objektově orientovaného programování skutečnost programovací jazyk pojmy třída a objekt principy: obalení (encapsulation) spojení dat a metod (funkcí) do nové struktury třídy; dědičnost (inheritance) nová třídy je dědicem tříd předků specializace; mnohotvárnost (polymorphism) stejné pojmenování vlastností (metod) v hierarchii tříd, implementace se liší. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 5 / 25

Obalení abstrakce Třída je popisem množiny objektů se společnými vlastnostmi. Objekt je instancí třídy, obsahuje (členská) data a metody. Jedinečnost objektu. Posílání zpráv = volání metod. datová abstrakce reprezentace dat je před uživatelem ukryta. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 6 / 25

Dědičnost a hierarchie tříd Dědičnost umožňuje rychlou tvorbu nových tříd znovupoužitím stávajícího kódu bez nutnosti jeho přepisování. Vzniká hierarchie tříd. Pohyb dolů v této hierarchii obvykle znamená zvýšení specializace tříd, pohyb vzhůru naopak zobecnění. předek (rodičovská třída, bázová třída, báze) potomek (dceřinná třída, odvozená třída) taxonomie či biologická analogie pokulhává potomek může mít více než dva předky Vícenásobná dědičnost přináší možné konflikty při opakovaném dědění ze společných předků. doporučení: umírněné používání vícenásobné dědičnosti, případně její nahrazení jinými technikami (skládání). Při tvorbě objektově orientovaného návrhu programu jsou kladeny velké nároky na správnou tvorbu hierarchie tříd. Čas strávený úvahami s tužkou v ruce ve fázi návrhu se bohatě zúročí. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 7 / 25

Mnohotvárnost polymorfismus Řecké slovo polymorfismus znamená mající mnoho tváří. Česky hovoříme o mnohotvárnosti. Použijeme-li v klasickém programu identifikátor funkce, víme vždy, když jej použijeme, jakou akci vyvolá. Spojení mezi identifikátorem a akcí se vytváří již v okamžiku překladu zdrojového textu. V C++ je mnohotvárnost těsně spjata s pojmem virtuální metoda. Taková metoda umožňuje použití více verzí téže metody v hierarchii tříd. Určení konkrétní metody, která bude použita, probíhá za běhu programu. brzda v automobilu etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 8 / 25

Překladač Zdrojový text spustitelný tvar Cílový procesor, kód a data (kódový a datový segment), spojovacím program, knihovny funkcí a běhová podpora. Chyba překladu (syntaktická), chyba spojovacího programu, chyba běhová (sémantická, jiná). etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 9 / 25

Překlad zdrojového textu v C++ zdrojový text knihovní deklarace překladač objektový kód knihovní definice spojovací program proveditelný kód etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 10 / 25

Proč právě C++ C/C++ je široce rozšířené a dostupné, dostupné jsou i ladicí nástroje a další podpůrné prostředky. Je vhodné pro rozsáhlé aplikace a má velmi bĺızko i ke strojové úrovni. Existují vyzrálé překladače Existuje norma jazyka. Moderní prvky OOP obalení, dědičnost a mnohotvárnost. Moderní rysy, jakými jsou ošetření výjimek a prostor jmen. PC, pracovní stanice, mnohaprocesorové superpočítače s možnostmi distribuovaného zpracování i PDA. mýtus: programy v C++ jsou naprosto nečitelné lék: správný programátorský styl zápisu zdrojového textu. etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 11 / 25

První programy Ahoj, světe! / h e l l o. cpp r y c h l y z a c a t e k / #i n c l u d e < iostream > u s i n g namespace s t d ; / / p r o s t o r jmen i n t main ( ) { cout << Ahoj s v e t e! << e n d l ; r e t u r n 0 ; } / / i n t main ( ) etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 12 / 25

Srovnání stylů: klasický / zacatek s p atny. cpp s t a r y s t y l z a c l e n e n i h l a v i c e k / #i n c l u d e < i o s t r e a m. h> v o i d main ( ) { etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 13 / 25

Srovnání stylů: moderní C++ / zacatek s p r a v n y. cpp novy s t y l z a c l e n e n i h l a v i c e k, p o u z i v a i p r o s t o r y jmen / #i n c l u d e < iostream > u s i n g namespace s t d ; / / p r o s t o r jmen i n t main ( ) { etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 14 / 25

Jednoduchý vstup a výstup, simpleio 1-14 / s i m p l e i o. cpp jednoduchy v s t u p a v y s t u p / #i n c l u d e < iostream > u s i n g namespace s t d ; i n t main ( ) { cout << z a d e j dve c e l a c i s l a : < < e n d l ; i n t i, j ; c i n >> i >> j ; cout << i << + << j << = << i+j << e n d l ; etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 15 / 25

Jednoduchý vstup a výstup, simpleio 15- cout << z a d e j r a c i o n a l n i c i s l o : < < e n d l ; double x ; c i n >> x ; double y = i x ; cout << i < < < < x << = << y << e n d l ; r e t u r n 0 ; } / / i n t main ( ) zadej dve cela cisla: 2 3 2 + 3 = 5 zadej racionalni cislo: 6.78 2 * 6.78 = 13.56 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 16 / 25

Opakování části programu cyklus while řídící podmínka cyklu tělo cyklu Vypočtěme a zobrazme hodnoty prvních deseti násobků zadaného celého čísla. Zadej cele cislo: 7 7 14 21 28 35 42 49 56 63 70 etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 17 / 25

Opakování části programu, nasobky 1-14 / soubor nasobky. cpp v y t i s k n e nasobky zadaneho c e l e h o c i s l a / #i n c l u d e < iostream > // v s t u p y a v y s t u p y #i n c l u d e <iomanip > // f o r m a t o v a n i vystupu u s i n g namespace s t d ; i n t main ( ) { c o n s t i n t od = 1 ; / / d o l n i mez c o n s t i n t po = 1 0 ; / / h o r n i mez i n t c i s l o ; etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 18 / 25

Opakování části programu, nasobky 14- cout << Zadej c e l e c i s l o : ; c i n >> c i s l o ; i n t c i n i t e l = od ; w h i l e ( c i n i t e l <= po ) { i n t s o u c i n = c i s l o c i n i t e l ; cout << setw (4) < < s o u c i n ; c i n i t e l = c i n i t e l + 1 ; } / / w h i l e ( c i n i t e l <= po ) r e t u r n 0 ; } / / i n t main ( ) etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 19 / 25

Funkce a metody Funkce v jazyce C++ mají jednoznačné jméno a mají určen počet a typ argumentů a typ návratové hodnoty. návratový výraz: return... ; přetížení funkce liší se její příjemce a tedy i definice, tj. způsob provedení. Funkcím, které jsou součástí tříd, říkáme metody. S daty se pak komunikuje prostřednictvím metod, které jsou součástí rozhraní. rozhraní třídy public : etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 20 / 25

Geometrický význam třídy polar Im r ϕ Re etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 21 / 25

Třída polar, tiskni 1-14 / soubor t i s k n i. cpp / #i n c l u d e < iostream > // v s t u p y a v y s t u p y #i n c l u d e < s t r i n g > // r e t e z c o v e d e f i n i c e a metody u s i n g namespace s t d ; c l a s s p o l a r { double r, f i ; p u b l i c : p o l a r ( double a, double b ) { r = a ; f i = b ; } ; // k o n s t r u k t o r etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 22 / 25

Třída polar, tiskni 15-29 } ; double d e j r ( v o i d ) { r e t u r n r ; } ; double d e j f i ( v o i d ) { r e t u r n f i ; } ; v o i d t i s k ( i n t num ) { cout << c e l e c i s l o : < < num << e n d l ; } / / v o i d t i s k ( i n t num) v o i d t i s k ( double num ) { cout << r a c i o n a l n i c i s l o : < < num << e n d l ; } / / v o i d t i s k ( double num) v o i d t i s k ( s t r i n g s ) { cout << r e t e z e c : < < s << e n d l ; } / / v o i d t i s k ( s t r i n g s ) Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 23 / 25

t i s k ( i ) ; t i s k ( x ) ; t i s k ( s ) ; t i s k ( y ) ; r e t u r n 0 ; } / / i n t main ( ) Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 24 / 25 Třída polar, tiskni 31-50 v o i d t i s k ( p o l a r p ) { cout << r : < < p. d e j r ( ) << f i : < < p. d e j f i () < < e n d l ; } / / v o i d t i s k ( p o l a r p ) i n t main ( ) { i n t i = 2 9; double x = 2 0 0 3. 0 7 ; s t r i n g s = kousek t e x t u ; p o l a r y ( 6 5. 4 3, 2. 1 ) ; / / t v o r b a o b j e k t u t r i d y p o l a r

výstup tiskni cele cislo: 29 racionalni cislo: 2003.07 retezec: kousek textu r: 65.43 fi: 2.1 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C++ 26. září 2005 25 / 25