2013 Martin Kačer. BI-EP2 Efektivní programování 2

Rozměr: px
Začít zobrazení ze stránky:

Download "2013 Martin Kačer. BI-EP2 Efektivní programování 2"

Transkript

1 BI-EP2 Efektivní programování 2 LS 2012/2013 Ing. Martin Kačer, Ph.D Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Vznik předmětu byl podpořen FRVŠ v rámci projektu 2581/2011

2 2

3 3

4 int array[maxlen][maxlen]; int solve() { int res=0; for(int i=0; i<first.length(); i++) { for(int j=0; j<second.length(); j++) { if(first[i]==second[j]) { array[i+1][j+1]=array[i][j]+1; res=max(res,array[i+1][j+1]); else array[i+1][j+1] = 0; return res; 4

5 int array [2][10010]; for (int i = 1; i <= len1; ++i) { for (int j = 1; j <= len2; ++j) { if (s1[i-1]==s2[j-1]) array[i%2][j] =1+array[1-i%2][j-1]; else array[i%2][j]=0; if (array[i%2][j]>max) max=array[i%2][j]; 5

6 for (unsigned i=0; i<strlen(str1)-1; i++) { occurence[(int)str1[i]].push_back(i); int longest = 0; for(i=0; i<strlen(str2)-1; i++) { if (i+longest >= strlen(str2)) break; for (j=0; j<occurence[(int)str2[i]].size(); j++) { unsigned pos = occurence[(int)str2[i]][j]; if (pos+longest >= strlen(str1)) break; for (int k=strlen(str2)-i-1; k>longest; k--) { if (strncmp(str2+i, str1+pos, k) == 0) { longest = k; break; => O(n 3 ) 6

7 for(int a = 0; a < len1; a++) { for(int i = a, j = 0; i < len1 && j < len2; i += move, j += move) { if(str1[i] == str2[j]) { match = 1; for(int i2 = i, j2 = j; i2 > 0 && j2 > 0; ) { i2--; j2--; if(str1[i2] == str2[j2]) match++; else break; for(int i2 = i, j2 = j; i2 < len1-1 && j2 < len2-1; ) { i2++; j2++; if(str1[i2] == str2[j2]) match++; else break; if(match >= move) move = match+1; for(int a = 1; a < len2; a++) { for(int i = 0, j = a; i < len1 && j < len2; i += move, j += move) { if(str1[i] == str2[j]) { match = 1; for(int i2 = i, j2 = j; i2 > 0 && j2 > 0; ) { i2--; j2--; if(str1[i2] == str2[j2]) match++; else break; for(int i2 = i, j2 = j; i2 < len1-1 && j2 < len2-1; ) { i2++; j2++; if(str1[i2] == str2[j2]) match++; else break; if(match >= move) move = match+1; 7

8 int findlongest(string &longer, string &shorter); if (first.length()>second.length()) { findlongest(first, second); else { findlongest(second, first); 8

9 for ( int i = 0; i < l1 + l2; i++ ) { int b1 = i; int b2 = l2-1; while ( b1 >= 0 && b2 >= 0 ) { if ( b1 < l1 ) { if ( s1.charat(b1) == s2.charat(b2) ) { samelen++; max = Math.max( samelen, max ); else { samelen = 0; b1--; b2--; samelen = 0; 9

10 10

11 void DFS(list<pair<int,int> > & stck, int num) { visited[num]=true; l++; for(int i=0;i<neighb[num].size();i++) { if(! visited[ neighb[num][i] ]) DFS(stck, neighb[num][i]); l++; stck.push_front(make_pair(l,num)); 11

12 void quicksort(int *A, int low, int high) { int idxr = high, idxl = low, pivot = A[low]; do { while (idxl <= high && A[idxL] < pivot) idxl++; while (idxr >= low && A[idxR] > pivot) idxr--; if (idxl <= idxr) swap(a[idxl++],a[idxr--]); while (idxl <= idxr); if (low < idxr) quicksort(a,low,idxr); if (high > idxl) quicksort(a,idxl,high); return; quicksort(siblings[i],0,siblingscnt[i]-1); 12

13 while ( begin < end ) { qsort(queue+begin, end-begin,...); for ( i = 0; i < edgecnt[queue[begin]]; i++ ) { edgesin[matrix[i][queue[begin]]]--; if (edgesin[matrix[i][queue[begin]]]==0) queue[end++] = matrix[i][queue[begin]]; printf ( " %s", beverages[queue[begin++]].c_str() ); 13

14 while(1){ for(j = 0; j < n; j++){ if (!gin[j]){ printf(" %s", s[j]); gin[j] = -1; for(i = 0, i < gc[j]; i++){ gin[ gn[j][i] ]--; break; if (j==n) break; 14

15 for(int i = 0; i < n; i++){ if(is_root[i]){ dfs(graph, i, visited, node_order, t); for(int i = 0; i < n; i++){ int j = i; while(j > 0 && node_order[j - 1] > node_order[j] &&!neighbour_matrix[node_order[j - 1]] [node_order[j]]){ int tmp = node_order[j - 1]; node_order[j - 1] = node_order[j]; node_order[j] = tmp; j--; 15

16 fori(i,0,n) if(!edges[i]){ q.push(i); vis[i] = true; fori(j,0,n) if(g[i][j]) edges[j]--; break; int temp; while(!q.empty()){ temp = q.front(); q.pop(); cout << " " << mback[temp]; fori(i,0,n) if(!edges[i] &&!vis[i]){ vis[i] = true; q.push(i); fori(j,0,n) if(g[i][j]) edges[j]--; break; 16

17 while(qb!= qe) { b = q[qb++]; for(int i = 0; i < g2c[b]; i++) { b2 = g2[b][i]; gc[b2]--; for(int i = 0; i < n; i++) { if(gc[i] == 0) { q[qe++] = i; gc[i] = -1; break; 17

18 graph[tmp->successors[i]].incoming--; if(graph[tmp->successors[i]].incoming==0) { qu.push(&graph[tmp->successors[i]]); vs. if(--graph[tmp->successors[i]].incoming==0) { qu.push(&graph[tmp->successors[i]]); 18

19 19

20 scanf("%d %d", &a, &b); uzly[a]=1; uzly[b]=2; for(int i=1; i<pocethran; i++) { scanf("%d %d", &a, &b); if(uzly[a]==1) { if(uzly[b]!=1) uzly[b]=2; else { cout << "NO" << endl; break; if(uzly[a]==2) { if(uzly[b]!=2) uzly[b]=1; else { cout << "NO" << endl; break; cout << "YES" << endl; 20

21 while (qb!= qe) { u = q[qb++]; for (i = 0; i < gc[u]; i++) { v = gn[u][i]; if ((gstate[v]==open) && (gcolor[v]==gcolor[u])) { return 0; else if (gstate[v] == FRESH) { gstate[v] = OPEN; gcolor[v] = (gcolor[u] == BLACK? RED : BLACK); q[qe++] = v; gstate[u] = CLOSED; 21

22 for(i=0; i<e; i++) { int a, b; cin >> a >> b; if(!ver[a] &&!ver[b]) {ver[a] = 1; ver[b] = 2; else if(!ver[a]) ver[a] = (ver[b]==1?2:1); else if(!ver[b]) ver[b] = (ver[a]==1?2:1); else if(ver[a]==ver[b]) okay = false; 22

23 while(!toexpand.empty()) { toexpand.pop(); // arghh! vs. toexpand.clear(); 23

24 e a b b f a b b d d a a b b a a c d a b c 24

25 for (int i = 0; i < len; ++i) str[i+len] = str[i]; str[2*len] = '\0'; for (int i = 1; i < len; ++i) { min = str[*l.begin() + i]; for (list<int>::iterator it = l.begin(); it!= l.end(); ++it) {... 25

26 int i = 0, j = 1, k = 0; while (i < len && j < len && k < len) { if (str[i+k] == str[j+k]) ++k; if (str[i+k] > str[j+k]) { i = max(i+k+1, j+1); k = 0; else if (str[i+k] < str[j+k]) { j = max(j+k+1, i+1); k = 0; 26

27 step = 1; while ( startcnt > 1 ) { if ( step == len ) break; min = 127; for ( i = 0; i < startcnt; i++ ) if ( necklace[starts[i]+step] < min ) min = necklace[starts[i]+step]; pom = 0; for ( i = 0; i < startcnt; i++ ) if ( necklace[starts[i]+step] == min ) starts[pom++] = starts[i]; startcnt = pom; step++; 27

BI-EP2 Efektivní programování 2

BI-EP2 Efektivní programování 2 BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Vznik předmětu

Více

5. Dynamické programování

5. Dynamické programování 5. Dynamické programování BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_154_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++ C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka

Více

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky LG 04 Zásobník Fronta Operace nqueue, equeue, Front, mpty... yklická implementace fronty Průchod stromem do šířky Grafy průchod grafem do šířky průchod grafem do hloubky Ořezávání a heuristiky 1 Zásobník

Více

BI-EP1 Efektivní programování 1

BI-EP1 Efektivní programování 1 BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Evropský

Více

Bubble sort. příklad. Shaker sort

Bubble sort. příklad. Shaker sort Bubble sort pseudokód function bubblesort(array a) for i in 1 -> a.length - 1 do for j in 1 -> a.length - i - 1 do if a[j] < a[j+1] prohoď(a[j], a[j+1]); //razeni od nejvyssiho function bubblesort(int[]

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Strukturované proměnné Pole (array), ukazatele (pointer) Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Pole (array) (1) Pole je množina

Více

Programování v C++ 1, 1. cvičení

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by

Více

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer 4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Jazyk C++, některá rozšíření oproti C

Jazyk 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íce

Programování v C++ 2, 8. cvičení

Programování v C++ 2, 8. cvičení Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer 1. Úvodní informace BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝ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íce

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků

Více

2. Mřížky / Záplavové vyplňování

2. Mřížky / Záplavové vyplňování 2. Mřížky / Záplavové vyplňování BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké

Více

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr Strukturované typy a ukazatele Úvod do programování 1 Tomáš Kühr Motivace Se základními datovými typy si sice vystačíme Někdy to ale může být nepříjemně nepřehledné Příklady: long double soucet(const long

Více

NPRG030 Programování I, 2017/18 1 / :22:16

NPRG030 Programování I, 2017/18 1 / :22:16 NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16 Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé

Více

Abstraktní datové typy

Abstraktní 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íce

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace 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íce

PB161 6. přednáška (26. října 2015)

PB161 6. přednáška (26. října 2015) PB161 6. přednáška (26. října 2015) Standardní knihovna C++ obsahuje řadu částí, některé už jsme viděli (strings, I/O streams) mimo jiné obsahuje i knihovní funkce ze standardní knihovny jazyka C jiné

Více

Abstraktní třídy, polymorfní struktury

Abstraktní 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íce

Vstupní a vstupní proudy v C++

Vstupní a vstupní proudy v C++ Programovací jazyk C++ MZLU - PEF - Ústav informatiky 11. října 2007 Vstup na terminál a čtení z něj Používá se knihovna iostream. Pro výstup lze použít standardní výstup cout. nebo chybový výstup cerr.

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Třídy a objekty -příklady

Třídy a objekty -příklady Třídy a objekty -příklady 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 Příklad 1 Kvadratická rovnice static void

Více

Základní stavební prvky algoritmu

Základní stavební prvky algoritmu Základní stavební prvky algoritmu Podmínka. Cyklus for, while, do-while. Funkce, metody. Přetěžování. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká

Více

PB161 Programování v jazyce C++ Přednáška 3

PB161 Programování v jazyce C++ Přednáška 3 PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 4. října 2016 PB161 přednáška 3: kontejnery, iterátory, algoritmy 4. října 2016 1 / 25 Standardní knihovna C++ Už

Více

Rekurzivní algoritmy

Rekurzivní algoritmy Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS

Více

Úvod do programování v jazyce Java

Úvod do programování v jazyce Java Úvod do programování v jazyce Java Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 5. říjen, 2011 Petr Krajča (UP) KMI/UP3J: Seminář I. 5.10.2011 1 / 17 Organizační informace email: petr.krajca@upol.cz

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_156_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší

Více

awk programovatelný filtr

awk programovatelný filtr awk programovatelný filtr Spouštění: Awk vzor {akce} nebo awk f prg_soubor [ soubory ] čte řádky ze zadaných souborů, nebo ze standardního vstupu výstup směřuje na standardní výstup Struktura programu:

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_150_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Řazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria.

Řazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria. Řazení Problém řazení: Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria. Až 30% času běžného počítače. Příklad: Mějme zjistit zda jsou v posloupnosti prvků, například celých čísel,

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Ú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 Fronta uplatňuje mechanismus přístupu FIFO first

Více

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

ZPRO 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íce

Preprocesor. 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 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íce

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Ú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íce

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_149_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Programování v C++ 1, 14. cvičení

Programování v C++ 1, 14. cvičení Programování v C++ 1, 14. cvičení výpustka, přetěžování funkcí, šablony funkcí 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 funkcí

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. November 16, 2017

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. November 16, 2017 ZPRO cvičení 7 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague November 16, 2017 Outline I 1 Outline 2 Práce se soubory 3 Zápis cvičení 4 Čtení

Více

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3 DobSort Ú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 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),

Více

š Á š š ů š ý š Č Š Č ň ý ž ů ý ž ů Č ý ž ú Ň Š Í š ý ú ý š š š ý š š š š ý š š š Ů š š š š ý ů ů š ý ň š š š ž ů ň š ž ž ň ý ž š ý ý š ý š ý ú ů ž ý š ž š ú ú š ý ň ň š ý š š š Ú ú š ý ů š š š š š š š

Více

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Programovací 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 1. *extra) Základy { struct

Více

8. 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 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íce

Řídící struktury, if, while, switch

Řídící struktury, if, while, switch Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Řídící struktury, if, while, switch BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních

Více

DTP Základy programování Úvod do předmětu

DTP 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íce

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end; Cvičení 9 - Monitory na rozdíl od semaforů je monitor jazyková konstrukce monitor = Pascalský blok podobný proceduře nebo fci uvnitř monitoru jsou definovány proměnné, procedury a fce proměnné monitoru

Více

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr) Cykly Základy programování 1 Martin Kauer (Tomáš Kühr) Z minula Chary můžete používat jako znaky ale i jako čísla 0-255. Jakou formu vybrat záleží na konkrétní aplikaci. Když pracujete se znaky, používejte

Více

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2. C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme

Více

Práce s polem a pamětí

Práce s polem a pamětí 3 Práce s polem a pamětí Inicializace jednorozměrného pole Jednorozměrné pole lze inicializovat přímo v deklaraci. int array[length] = {1, 5, 8, 9; array1d Prvky pole umístíte do složených závorek a oddělíte

Více

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

É Á š ť Č Č ď š Ě ů ď š š ď Ó ď ď Ú ď Ů š ú š ť š Á ň ú Ě š š Ý š š š š š š Á Ý š š š š š š š š ú ť Á Á š Ď ď ď Á ď ď ď ď š ú Ď ď ú Ů ň ú ů š š ď š Řď ď š Ú šš š š š Ý ď ď š Ř š Řď Ř š ť Ú Ř š Ď Ď Ř š

Více

Operač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 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íce

Generování vnitřní reprezentace programu

Generování vnitřní reprezentace programu Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad

Více

PB161 Programování v jazyce C++ Přednáška 3

PB161 Programování v jazyce C++ Přednáška 3 PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 2. října 2018 PB161 přednáška 3: kontejnery, iterátory, algoritmy 2. října 2018 1 / 27 Automatická dedukce typů (od

Více

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start

Více

Rozklad problému na podproblémy, rekurze

Rozklad problému na podproblémy, rekurze 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 Rozklad problému

Více

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy 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 Graf uzly hrany orientované / neorientované Souvislý

Více

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2

Více

Mělká a hluboká kopie

Mě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íce

Jazyk C++ I. Šablony

Jazyk C++ I. Šablony Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&

Více

Š Š ř Š š ř Š ř Š ř ť ý Ý Ř Š š Ú ý ý ř ý ů ů ř ř ř ý ů ů Ú ů ž ý š ř ř ř ď š ý ň ř ý Š řš ý ř ž ř ý ž ý ž ř ž ř š ž ř ř š ř ř ý ů ř ř ů ý š ř Š ů ů Š ů ů ů Š ů ř š ř ř ř ř ť ř ž Š Š ý ř ů ů ř ž Š ů ů

Více

6. Tahy / Kostry / Nejkratší cesty

6. Tahy / Kostry / Nejkratší cesty 6. Tahy / Kostry / Nejkratší cesty BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké

Více

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000. 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000. 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1 PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1 PESlib Popis knihoven PASCAL a C 03.2000 2. verze dokumentu Zmìny a doplòky proti 1.

Více

Řídící struktury, if, while, switch

Řídící struktury, if, while, switch 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 Řídící struktury,

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016 ZPRO cvičení 3 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 23, 2016 Outline I 1 Outline 2 Relační a logické operátory 3 Relační a logické

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal 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 programování - Java. Cvičení č.4

Ú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íce

Příkazy if, while, do-while, for, switch

Pří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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Hledání k-tého nejmenšího prvku

Hledání k-tého nejmenšího prvku ALG 14 Hledání k-tého nejmenšího prvku Randomized select CLRS varianta Partition v Quicksortu 0 Hledání k-tého nejmenšího prvku 1. 2. 3. Seřaď seznam/pole a vyber k-tý nejmenší, složitost (N*log(N)). Nevýhodou

Více

NPRG030 Programování I, 2018/19 1 / :03:07

NPRG030 Programování I, 2018/19 1 / :03:07 NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování

Více

Funkce, intuitivní chápání složitosti

Funkce, 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íce

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

Martin Flusser. November 1, 2016

Martin Flusser. November 1, 2016 ZPRO cvičení 4 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague November 1, 2016 Outline I 1 Outline 2 Cykly 3 Cykly cvičení 4 Rekurze 5 Rekurze

Více

Š Á é ř ě š ěř é ě Ý š ř é ř é ěř ě Ú ř ř ř ě ý é ř ě ř ě úř úř ý é ě ř ř š é ř é ý ě ř š ěř š ěř ě š Í ř š ě ě ě Ú ř ě Ú ť š ě é ě ý ř ý é ě ý ý š Ť ě š é ť ř š é ě ě é ý ý ě ě é é é ď Ú é ě é ý ěř ď

Více

18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++

18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++ 18. února 2015, Brno Připravil: David Procházka Vstupní a výstupní proudy v C++ Programovací jazyk C++ Vstup dat do programu Strana 2 / 26 Obsah přednášky 1 Vstup dat do programu 2 Terminál 3 Textový soubor

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) 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 Enterprise Java

Více

Programování v C++ 1, 17. cvičení

Programování v C++ 1, 17. cvičení Programování v C++ 1, 17. cvičení výjimky 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky Binární vyhledávací

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; } Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný

Více

Rozklad na prvočinitele. 3. prosince 2010

Rozklad na prvočinitele. 3. prosince 2010 Rozklad na prvočinitele Ondřej Slavíček 3. prosince 2010 1 Obsah 1 Příručka k programu 3 1.1 funkce main()............................. 3 1.2 funkce hlavnifunkce()........................ 3 1.3 funkce

Více

IB111 Úvod do programování skrze Python

IB111 Úvod do programování skrze Python Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově

Více

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

Více

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort. A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min

Více

Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky. Semestrální projekt

Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky. Semestrální projekt Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky Semestrální projekt Tvorba úloh pro výuku předmětu: Praktické programování v C/C++

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_144_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Struktury a dynamické proměnné

Struktury a dynamické proměnné BPC1E počítačové cvičení 9 Struktury a dynamické proměnné Cílem cvičení je sestavit aplikaci, která bude používat vhodnou strukturu popisující daný objekt požadovanými parametry. Navazujícím cílem je deklarovat

Více

Sčítačky Válcový posouvač. Demonstrační cvičení 6

Sčítačky Válcový posouvač. Demonstrační cvičení 6 Sčítačky Válcový posouvač INP Demonstrační cvičení 6 Poloviční sčítačka (Half Adder) A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 A B HA S C S: A C: A 0 1 0 0 1 0 B 0 1 B S

Více

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do

Více

Regulární výrazy. Filtry grep, sed a awk.

Regulární výrazy. Filtry grep, sed a awk. Přednáška 5 Regulární výrazy. Filtry grep, sed a awk. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2011 Příprava studijního programu Informatika je podporována projektem

Více

Dekompozice problému, rekurze

Dekompozice 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íce

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské

Více