Abstraktní datové typy, moduly
|
|
- Dagmar Alena Bártová
- před 5 lety
- Počet zobrazení:
Transkript
1 Abstraktní datové typy, moduly BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České vysoké učení technické v Praze xvagner@fit.cvut.cz, vogeljos@fit.cvut.cz 4. ledna 2018
2 Přehled Datové typy, abstraktní datové typy. Komplexní číslo jako abstraktní datový typ. Moduly, modulární programování. Preprocesor. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 2/27
3 Datové typy Klasická kniha prof. Niklause Wirtha: Algorithms + Data structures = Programs Datový typ: množina možných hodnot, množina použitelných operací. Abstraktní datový typ formální popis dat a operací. Příklady abstraktních datových typů: fronta (queue), zásobník (stack), pole (array), tabulka (table, map), seznam (list), strom (tree), množina (set),... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 3/27
4 Abstraktní datové typy (ADT) Definice ADT je množina hodnot a množina operací. Tyto množiny jsou definovány exaktně a jsou nezávislé na konkrétní implementaci. Definice ADT: formální definice signatury a axiomy, neformální definice implementace ADT (knihovní funkce). Implementace ADT: definice datového typu (např. typedef), funkce pro vytvoření instance (proměnné) datového typu, funkce, které mají hodnotu(y) ADT jako argument(y) a provádějí nějaké operace s hodnotou(ami) argumentu(ů). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 4/27
5 ADT příklad Datový typ boolean: true a false jsou boolské hodnoty. Když x a y jsou boolské hodnoty, tak: 1.! (x) 2. (x & y) 3. (x y) 4. (x == y) 5. (x!= y) jsou boolské hodnoty (může být zavedena priorita, aby se zabránilo zbytečným závorkám). Sémantika: 1.! (true) = false,! (! (x)) = x 2. (x & false) = false, (x & true) = x, (x & y) = (y & x) 3. (x true) = true, (x false) = x, (x y) = (y x) 4. (true == x) = x, (false == x) =! x, (x == y) = (y == x) 5. (x!= y) =! (x == y) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 5/27
6 Implementace ADT Datový typ complex: Potřebujeme počítat s komplexními čísly: datový typ complex s reálnou a imaginární částí, operace sčítání, odčítání, násobení, dělení a výpis. Norma jazyka C neposkytuje datový typ pro komplexní čísla. My zavedeme vlastní datový typ TCOMPLEX a funkce provádějící požadované operace. Datový typ TCOMPLEX může být implementován bud jako struktura nebo jako pole (dvou prvků). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 6/27
7 ADT komplexní čísla typedef... TCOMPLEX; /* Exaktní implementace bude na následujících slajdech. * Níže uvedený interface zůstává stejný. */ TCOMPLEX cplxadd ( TCOMPLEX a, TCOMPLEX b ); TCOMPLEX cplxsub ( TCOMPLEX a, TCOMPLEX b );... double cplxabs ( TCOMPLEX x ); void cplxprint( TCOMPLEX x ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 7/27
8 ADT komplexní čísla int main ( void ) { TCOMPLEX x = {1,1}, y = {2,2}, z; printf ( "x=" ); cplxprint ( x ); printf ( "\n" ); printf ( "y=" ); cplxprint ( y ); printf ("\n" ); z = cplxadd ( x, y ); printf ( "x+y=" ); cplxprint ( z ); printf ( "\n" ); z = cplxsub ( x, y ); printf ( "x-y=" ); cplxprint ( z ); printf ( "\n" ); printf ( "x+(y-z)=" ); cmplxprint( cmplxadd(x, cmplxsub( y, z ) ) ); printf ( "\n" ); printf ( "abs(x)=%f\n", cplxabs(x) ); return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 8/27
9 ADT komplexní čísla Reprezentace datového typu TCOMPLEX v C: struktura: typedef struct TComplex { double re; double im; } TCOMPLEX; pole: typedef double TCOMPLEX[2]; Která implementace je lepší: z hlediska pamět ových nároků, z pohledu programátora (čistota kódu)? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 9/27
10 ADT komplexní čísla TCOMPLEX cplxadd ( TCOMPLEX x, TCOMPLEX y ) { TCOMPLEX res; res.re = x.re + y.re; res.im = x.im + y.im; return res; } TCOMPLEX cplxsub ( TCOMPLEX x, TCOMPLEX y ) { TCOMPLEX res; res.re = x.re - y.re; res.im = x.im - y.im; return res; }... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 10/27
11 ADT komplexní čísla double cplxabs ( TCOMPELX x ) { return sqrt ( x.re * x.re + x.im * x.im ); } void cplxprint ( TCOMPLEX x ) { printf ( "(%f,%f)", x.re, x.im ); } Poznámka: komplexní číslo z můžeme vyjádřit také v tzv. goniometrickém tvaru: z = z (cos ϕ + i sin ϕ) = z e iϕ, kde i je imaginární jednotka, z je modul a ϕ je argument (bud ϕ ( π; π nebo ϕ 0; 2π)). Pak by byla implementace typu TCOMPLEX i operací zcela jiná (jaká?). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 11/27
12 Moduly Složitější programy jsou rozděleny do několika (u velkých programů mnoha) zdrojových souborů modulů. Modul je část programu, která poskytuje určitou funkcionalitu pro zbytek programu: modul obvykle obvykle zpracovává několik souvisejících úkolů (např. zpracování vstupu, výpočty s komplexními čísly, GUI,... ), moduly jsou obvykle považovány za černé krabičky od zbytku programu jsou odděleny dobře definovaným inteface, Modul se skládá ze dvou částí: specifikace seznam zdrojů poskytovaných modulem (datové typy, funkce, proměnné, v C++ třídy,... ), implementace implementace nabízených zdrojů. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 12/27
13 Moduly Různé programovací jazyky mají různou podporu modularity: Pascal jednotky (units), Java třídy a baĺıčky (classes and packages), C/C++ hlavičkové soubory (header files.h) a implementační soubory (implementation files.c/.cpp). Hlavičkové soubory (.h): deklarace funkcí, specifikace datových typů, deklarace globálních sdílených proměnných. Implementační soubory (.c/.cpp): definice funkcí, definice proměnných. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 13/27
14 Moduly komplexní čísla Hlavičkový soubor complex.h: typedef struct { double re; double im; } TCOMPLEX; TCOMPLEX cplxadd ( TCOMPLEX a, TCOMPLEX b ); TCOMPLEX cplxsub ( TCOMPLEX a, TCOMPLEX b );... double cplxabs ( TCOMPLEX a ); void cplxprint ( TCOMPLEX a ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 14/27
15 Moduly komplexní čísla Implementační soubor complex.cpp: #include <stdio.h> #include <math.h> #include "complex.h" /* ano, vkládá vlastní hlavičkový soubor complex.h: * udržuje deklaraci a implementaci funkcí konzistentní * čte definice datových typů */ TCOMLPEX cplxadd ( TCOMPLEX a, TCOMPLEX b ) { TCOMPLEX res; res.re = a.re + b.re; res.im = a.im + b.im; return res; }... /* implementace dalších funkcí */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 15/27
16 Moduly komplexní čísla Použití modulu (main.c): #include <stdio.h> #include "complex.h" int main(void) { TCOMPLEX x = {1,1}, y = {2,2}, z; printf ( "x=" ); cplxprint ( x ); printf ( "\n" ); printf ( "y=" ); cplxprint ( y ); printf ( "\n" ); z = cplxadd ( x, y ); printf ( "x+y=" ); cplxprint ( z ); printf ( "\n" ); z = cplxsub ( x, y ); printf ( "x-y=" ); cplxprint ( z ); printf ( "\n" ); printf( "abs(x)=%f\n", cplxabs(x) ); return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 16/27
17 Moduly a projekty Velké programy obsahují obvykle několik (i mnoho) modulů. Moduly je třeba kompilovat a cílový program z nich pospojovat (link modules, build task). Vývojová prostředí (IDE - Integrated Development Environment Netbeans, CodeBlocks, MSVC,... ) poskytují projekty (řešení) pro spojování modulů. Projekt obsahuje seznam modulů, volby pro kompilaci (compile options) a volby pro sestavení (link options). IDE zná závislosti modulů. Závislosti jsou využity pro rekompilaci modulů, ve kterých byly provedeny změny. Když je program vyvíjen bez vývojového prostředí, používá se obvykle utilita make řízená souborem Makefile. Soubor Makefile je nutno připravit ručně. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 17/27
18 Moduly kompilace.c/.cpp zdrojové soubory, implementace (definice) funkcí..h hlavičkové zdrojové soubory (header files). Deklarace funkcí, datové typy..o/.obj objektové soubory. Strojový kód (zkompilovaný z.c/.cpp/.h souborů) s neřešenými referencemi mezi moduly. Objektový soubor může: importovat symbol, např. když je třeba volat funkci ze standardní knihovny, exportovat symbol, např. funkce main ze souboru v němž je definována..a/.lib knihovna objektových souborů..so/.dll sdílená knihovna objektových souborů. bez přípony/.exe spustitelný soubor. Spustitelný soubor je výstupem sestavovacího programu (linker, task builder). Ten řeší reference mezi objektovými soubory a knihovnami. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 18/27
19 Moduly kompilace complex.h compilation stdio.h complex.c libc.a main.c complex.o main.o link complex M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 19/27
20 Moduly sdílené proměnné Funkce a typy mohou být sdíleny mezi moduly. To je obecná technika. C i C++ povolují i sdílení globálních proměnných mezi moduly. Tato technika však není doporučována: je vždy dobře se vyhnout použití globálních proměnných, sdílení proměnné zesiluje risk neočekávaných přepsání hodnoty. Jedině zdůvodněné je použití sdílených konstant (např. předem vypočítaných tabulek). Toto nebude fungovat: /* complex.h */... TCOMPLEX g_imag = {0,1};... /* Proměnná bude deklarována v každém modulu, * který obsahuje #include "complex.h". Program bude * mít více instancí proměnné g_imag, a proto si linker * bude stěžovat na vícenásobně definovaný symbol. */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 20/27
21 Moduly sdílené proměnné /* complex.h */... extern TCOMPLEX g_imag; /* jen deklarace (klíčové slovo extern), bez initializace */... /* complex.c */ #include "complex.h"... TCOMPLEX g_imag = {0,1}; /* definováno a inicializováno zde (jen v tomto modulu) */... /* main.c a další moduly */ #include "complex.h"... TCOMPLEX res = cplxadd ( g_imag, g_imag ); /* použití proměnné */... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 21/27
22 Moduly hlavičkové soubory Hlavičkové soubory popisují rozhraní (interface) modulů: datové typy, prototypy funkcí, deklarace extern proměnných. Hlavičkové soubory jsou užity: kompilátorem: aby věděl, které funkce a typy jsou použitelné, programátorem: aby věděl, jak modul použít. Je dobrým zvykem do hlavičkových souborů umístit popisné komentáře. Hlavičkové soubory neslouží pro umístění: definicí funkcí (těla funkce), definicí proměnných (bez extern). Je-li definice proměnné či funkce v hlavičkovém souboru, linker ohlásí chyby a program nesestaví. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 22/27
23 Více o preprocesoru Preprocesor je první fází kompilace modulu. Preprocesor slouží pro: vkládání hlavičkových souborů (vkládání může být zahnízděno, tj. include v includovaném souboru do libovolné hloubky): #include <stdio.h> #include "myheader.h" podmíněnou kompilaci (část zdrojového textu může být vynechána pro vlastní kompilaci): #ifndef PROGTEST... #endif makra. #define M_PI #define MAX(x,y) ((x)>(y)?(x):(y)) Preprocesorové direktivy začínají znakem křížek (hash #). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 23/27
24 Preprocesor jednoduchá substituce Identifikátor definovaný použitím direktivy #define je všude v dalším zdrojovém textu nahražen jeho substitucí. Víceřádkové substituce lze zavést, pokud jako poslední řádku uvedeme obrácené lomítko (backslash \). Substituce mohou být vnořené. Substituce nebude aplikována na řetězce a komentáře. Substituci je možno zrušit direktivou #undef. #define TRUE 1 #define M_PI #define M_PI_2 (2*M_PI) Několik substitucí je standardně definováno kompilátorem: DATE /* datum kompilace */ TIME /* čas kompilace */ FILE /* jméno zdrojového souboru */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 24/27
25 Preprocesor makra Makra substituce mají jeden či více parametrů. Parametry jsou bez úprav vloženy do substitučního textu. Parametry maker i celá substituce jsou obvykle uzavřeny do kulatých závorek, aby se dosáhlo požadovaného chování makra. #define MAX(x,y) ((x)>(y)?(x):(y)) #define SQR(x) ((x)*(x)) #define SQR_BAD(x) x*x MAX(i+4,3) /* ((i+4)>(3)?(i+4):3) */ SQR(100) /* ((100)*(100)) */ SQR(10+10) /* ((10+10)*(10+10)) */ SQR_BAD(10+10) /* 10+10*10+10 */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 25/27
26 Preprocesor podmíněný překlad Preprocesor může být použit na vypuštění částí zdrojového textu při kompilaci. Vypuštěný text je preprocesorem přeskočen a kompilátor ho tedy nezpracuje (jako kdyby neexistoval). Tato technika je užitečná, je-li je program určen pro různé platformy, které mají různé API (Application Programming Interface), pro ladicí výstupy po odladění nekompilované, apod. /* Windows kompilátory automaticky definují identifikátor * WIN32. Použijeme preprocesorovou definici pro různá * volání API */ #ifdef WIN32 Sleep ( 1000 ); /* Windows spí 1000ms */ #else sleep ( 1 ); /* UNIX spí 1 s */ #endif M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 26/27
27 Otázky a odpovědi Otázky... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT ADT, moduly, BI-PA1 27/27
Abstraktní datový typ
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Abstraktní datový typ BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií
VícePreprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr
Preprocesor a koncepce (větších) programů Úvod do programování 2 Tomáš Kühr Práce s preprocesorem Preprocesor Zpracovává zdrojový kód ještě před překladačem Provádí pouze záměny textů (např. identifikátor
VíceKoncepce (větších) programů. Základy programování 2 Tomáš Kühr
Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je
VícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceAlgoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
VíceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VícePříkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -
Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Preprocesor je možné ovládat pomocí příkazů - řádky začínající
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VíceProgramovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 5. Preprocesor, *extra) kompilace
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VíceOperační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
VíceOdvozené a strukturované typy dat
Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu
Více1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceMIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,
VíceSdílení dat mezi podprogramy
Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceStruktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
VíceObsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
VíceDatové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
VíceAlgoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
VíceProgramování v jazyce C pro chemiky (C2160) 10. Grafická knihovna g2
Programování v jazyce C pro chemiky (C2160) 10. Grafická knihovna g2 Preprocesor jazyka C Zdrojový text programu je před kompilací zpracován preprocesorem, který provede vložení externích souborů, vynechání
VíceJazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceMělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceProgramovací jazyk C++ Hodina 1
Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor
VíceIUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí
Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální
VíceAlgoritmizace. Cíle předmětu
Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule
VíceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceÚvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
Více2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Více- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:
21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VíceFunkce, procedury, složitost
Funkce, procedury, složitost BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
Vícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
VíceAlgoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
VíceDTP Základy programování Úvod do předmětu
DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VícePascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VícePřetěžování operátorů
Přetěžování operátorů Cíle lekce Cílem lekce je seznámit se s mechanizmem přetížení operátorů a s použitím tohoto mechanizmu při návrhu a implementaci programů. Po absolvování lekce budete: umět využívat
VíceMATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
VíceRacionální čísla, operátory, výrazy, knihovní funkce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík
VíceStručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787
Stručný obsah První týden 25 den 1 Začínáme 27 den 2 Anatomie programu C++ 43 den 3 Proměnné a konstanty 57 den 4 Výrazy a příkazy 79 den 5 Funkce 107 den 6 Objektově orientované programování 141 den 7
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VíceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových
Více11. Přehled prog. jazyků
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
VíceRacionální čísla, operátory, výrazy, knihovní funkce
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Racionální čísla,
VíceŠablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT
Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT Šablonové (generické) metaprogramování Šablona v C++, genericita v jiných jazycích Výpočetní úplnost Problémy Příklad Porovnání s klasickým
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceAbstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
VíceEVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
VíceDekompozice problému, rekurze
Dekompozice problému, rekurze BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České
Více8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
VíceNetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme
VíceAlgoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
VíceTÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
VíceIUJCE 07/08 Přednáška č. 1
Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming
VícePříkazy if, while, do-while, for, switch
Příkazy if, while, do-while, for, switch BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
VíceÚvod do programování. Lekce 3
Úvod do programování Lekce 3 Řízení běhu programu - pokračování /2 příklad: program vypisuje hodnotu sin x dx pro různé délky integračního kroku 0 #include #include // budeme pouzivat funkci
VíceTřídy a struktury v C++
katedra informatiky FEI VŠB-TU Ostrava 7. prosince 2015 Odvozené a strukturované typy dat v C základní datové typy součást normy jazyka, preprocesor použití netypových maker, raději voĺıme konstanty d
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Více6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek
6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 1/73 https://en.cppreference.com internetová stránka s referencemi https://gedit.en.softonic.com/download
VíceJazyk C++ II. Šablony a implementace
Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VíceUkazatele #1, struktury
Ukazatele #1, struktury BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceČÁST 1. Základy 32bitového programování ve Windows
Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25
VíceAlgoritmizace a programování
Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,
VíceUkazatele #2, dynamická alokace paměti
Ukazatele #2, dynamická alokace paměti BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních
VícePB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
Více7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
VícePB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
VíceZákladní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
VíceProgramovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceVyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
Více24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VícePole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0
Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 int policko[100]; // tj. pole je od 0 do 99!!! policko[5] = 7; // pozor je to 6. prvek s indexem 5
VíceMPASM a IDE pro vývoj aplikací MCU (Microchip)
MPASM a IDE pro vývoj aplikací MCU (Microchip) MPLAB, vývojové prostředí a jeho instalace; Založení nového projektu a jeho základní nastavení; Zásady tvorby a základní úprava formuláře zdrojového kódu;
VíceObjektové programování
Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k
VíceProgramování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
Více