Využití datových struktur, práce s textem. IB111 Úvod do programování
|
|
- Matěj Ovčačík
- před 8 lety
- Počet zobrazení:
Transkript
1 Využití datových struktur, práce s textem IB111 Úvod do programování 2016
2 Výhled dnes: logické úlohy a hry, textová data příště: obrázky nástroje pro práci s textem/obrázky ilustrační příklady využití datových struktur co kdy použít výhody a nevýhody různých reprezentací uvažování o problémech, volba přístupu, kladení otázek
3 Práce se soubory připomenutí Otevírání a zavírání: f = open("myfile.txt") otevření pro čtení f = open("myfile.txt","w") otevření pro zápis f.close() uzavření souboru zápis pomocí with lepší praxe (ale pokročilejší, souvisí s výjimkami) Čtení a zápis: f.readline() vrátí další řádek ze souboru f.readlines() vrátí seznam všech zbývajících řádků f.write(text) zapíše do souboru
4 Logické úlohy, hry Hanojské věže Problém N dam Číselné bludiště Šachy Člověče, nezlob se! Pexeso Piškvorky algoritmus reprezentace stavu
5 Reprezentace stavu přednáška o rekurzi: Hanojské věže seznam seznamů (různé délky): velikosti disků Problém N dam 2D mřížka seznam seznamů (fixní délky) True/False seznam souřadnic optimalizovaný seznam souřadnic
6 Číselné bludiště jednoduchá logická úloha Ilustrace pojmů a postupů: návrh algoritmu volba datových struktur seznam seznamů slovník fronta načítání ze souboru objekty
7 Číselné bludiště levý horní roh pravý dolní roh skoky vertikálně a horizontálně, číslo = délka skoku K vyzkoušení: tutor.fi.muni.cz
8 Variace nejkratší cesta vzhledem k počtu skoků vzhledem k celkové délce cesty kontrola jednoznačnosti nejkratšího řešení generování co nejtěžšího zadání
9 Reprezentace bludiště Jak budeme v programu reprezentovat bludiště? zadani.txt:
10 Seznam seznamů klasická reprezentace dvojrozměrné pole (seznam seznamů v Pythonu) maze[x][y] = number [[2, 2, 3, 2, 1], [4, 3, 2, 2, 4], [4, 3, 3, 3, 4], [3, 2, 1, 2, 4], [3, 3, 3, 1, 0]] Poznámka: maze[x][y] nebo maze[y][x]? (častý zdroj chyb: nekonzistence)
11 Načítání ze souboru def read_maze(filename = "input.txt"): f = open(filename) n = int(f.readline()) maze = [ [ 0 for y in range(n) ] for x in range(n) ] for y in range(n): line = f.readline() for x in range(n): maze[x][y] = int(line[x]) f.close() return maze
12 Algoritmus Jak najít řešení?
13 Algoritmus speciální případ obecného prohledávání do šířky : systematicky zkoušíme všechny následníky pamatujeme si, kde už jsme byli pro každé pole si pamatujeme předchůdce (rekonstrukce cesty)
14 Algoritmus
15 Datové struktury co si potřebujeme pamatovat: fronta polí, které musíme prozkoumat (světle zelená pole) množina polí, která už jsme navštívili (tmavě zelená pole) informace o předchůdcích (světle modré šipky) optimalizace: podle informace o předchůdcích poznáme, kde už jsme byli
16 Zápis v Pythonu přímočaré řešení def solve(n, maze): start = (0, 0) queue = deque([start]) pred = [[ (-1, -1) for x in range(n) ] for y in range(n) ] while len(queue) > 0: (x, y) = queue.popleft() if maze[x][y] == 0: print_solution((x, y), pred) break k = maze[x][y] if x+k < n and pred[x+k][y] == (-1, -1): queue.append((x+k, y)) pred[x+k][y] = (x, y) if x-k >= 0 and pred[x-k][y] == (-1, -1): queue.append((x-k, y)) pred[x-k][y] = (x, y) if y+k < n and pred[x][y+k] == (-1, -1): queue.append((x, y+k)) pred[x][y+k] = (x, y) if y-k >= 0 and pred[x][y-k] == (-1, -1): queue.append((x, y-k)) pred[x][y-k] = (x, y)
17 Poznámky příkaz break opuštění cyklu využití zkráceného vyhodnocování
18 Alternativní reprezentace: slovník slovník indexovaný dvojicí souřadnice (x, y) číslo na dané souřadnici maze[(x, y)] = number {(1, 2): 2, (3, 2): 1, (0, 0): 2, (3, 0): 3, (2, 2): 3, (2, 1): 3, (1, 3): 2, (2, 3): 3, (1, 4): 4, (2, 4): 4, (4, 2): 3, (0, 3): 2,... }
19 N-tice a závorky U n-tic většinou nemusíme psát závorky: a, b = b, a místo (a, b) = (b, a) maze[x, y] místo maze[(x, y)]
20 Slovník vs seznam seznamů Pozor na rozdíl! maze[x][y] seznam seznamů maze[x, y] slovník indexovaný dvojicí
21 Další vylepšení Zobecnění repetitivního kódu: Předchůdci copy&paste kód pro 4 směry for cyklus přes 4 směry pamatujeme si rovnou celou cestu také slovník
22 Upravený kód def solve(maze): start = (0, 0) queue = deque([start]) pred = {} pred[start] = [start] while len(queue) > 0: (x, y) = queue.popleft() if maze[x, y] == 0: print(pred[x,y]) for (dx, dy) in [(-1,0), (1,0), (0,-1), (0,1)]: newx = x + dx * maze[x, y] newy = y + dy * maze[x, y] if (newx, newy) in maze and \ not (newx, newy) in pred: queue.append((newx, newy)) pred[newx, newy] = pred[x, y] + [(newx, newy)]
23 Poznámky Někdy jsou závorky důležité: s = [1, 2] seznam obsahující dva prvky s = [(1, 2)] seznam obsahující jeden prvek (dvojici) s.append((1, 2)) přidávám dvojici s.append(1, 2) volám append se dvěma argumenty (chyba)
24 Objektová reprezentace class Maze: def init (self): # initialize def read(self, filename): # read maze from file def solve(self): # find solution def print_solution(self): # text output def save_image(self, filename, with_solution = True): # save maze as an image
25 Volba datové struktury Jaká datová struktura pro reprezentaci stavu? Piškvorky plán omezené velikosti neomezený plán Člověče, nezlob se! Želví závody Pexeso
26 Člověče, nezlob se!
27 Želví závody
28 Pexeso simulace paměti simulace hry pexeso hráči s různě dokonalou pamětí: prázdná paměť (náhodná hra) dokonalá paměť omezená paměť buffer velikosti k pravděpodobnost výhry pro jednotlivé hráče reprezentace stavu hry (kartiček)? reprezentace paměti?
29 Práce s textem více o operacích s textem regulární výrazy ukázky
30 Rozdělení řetězce split rozdělí řetězec podle zadaného podřetězce, vrací seznam částí join spojení seznamu řetězců do jednoho >>> retezec = "Holka modrooka nesedavej u potoka" >>> retezec.split() [ Holka, modrooka, nesedavej, u, potoka ] >>> retezec.split( o ) [ H, lka m, dr,, ka nesedavej u p, t, ka >>> retezec.split( ka ) [ Hol, modroo, nesedavej u poto, ]
31 Řetězce: další funkce find, count vyhledávání a počítání podřetězců lower, upper převod na malá/velká písmena ljust, rjust, center zarovnání textu lstrip, rstrip ořezání bílých znaků na začátku/konci Pozn. objektová notace, metody
32 Regulární výrazy nástroj pro hledání vzorů v textu programování textové editory příkazová řádka: např. grep teorie: formální jazyky, konečné automaty
33
34 Regulární výrazy obecně používaný nástroj syntax velmi podobná ve většině jazyků, prostředí ukázky základního využití v Pythonu
35 Ukázka f = open("slovnik.txt") for line in f.readlines(): line = line.rstrip() if re.search(r st.*st, line): print(line) f.close()
36 Znaky a speciální znaky základní znak vyhoví právě sám sobě speciální znaky:. ^ $ * +? { } [ ] \ ( ) umožňují konstrukci složitějších výrazů chceme, aby odpovídaly příslušnému symbolu prefix \
37 Skupiny znaků [abc] jeden ze znaků a, b, c [^abc] cokoliv jiného než a, b, c \d Čísla: [0-9] \D Cokoliv kromě čísel: [^0-9] \s Bílé znaky: [ \t\n\r\f\v] \S Cokoliv kromě bílých znaků: [^ \t\n\r\f\v] \w Alfanumerické znaky: [a-za-z0-9_] \W Nealfanumerické znaky: [^a-za-z0-9_]
38 Speciální symboly. libovolný znak ^ začátek řetězce $ konec řetězce alternativa výběr jedné ze dvou možností
39 Opakování * nula a více opakování + jedno a více opakování? nula nebo jeden výskyt {m,n} m až n opakování Pozn. *, + jsou hladové, pro co nejmenší počet opakování *?, +?
40 Příklady Jaký je význam následujících výrazů? \d[a-z]\d \d\d\d\d \d{3}\s?\d{3}\s?\d{3} ^To:\s*(fi
41 Regulární výrazy v Pythonu knihovna re (import re) re.match hledá shodu na začátku řetězce re.search hledá shodu kdekoliv v řetězci (re.compile pro větší efektivitu) raw string r vyraz nedochází k interpretaci speciálních znaků jako u běžných řetězců v Pythonu
42 Regulární výrazy v Pythonu: práce s výsledkem match/search vrací MatchObject pomocí kterého můžeme s výsledkem pracovat pomocí kulatých závorek () označíme, co nás zajímá
43 Regulární výrazy v Pythonu: práce s výsledkem >>> m = re.match(r"(\w+) (\w+)", \ "Isaac Newton, fyzik") >>> m.group(0) Isaac Newton >>> m.group(1) Isaac >>> m.group(2) Newton
44 Regulární výrazy: xkcd
45 Analýza textu statistiky délky slov a vět: x průměr s směrodatná odchylka (míra variability) slova věty x s x s Starý zákon Čapek Pelánek Wikipedie
46 Analýza textu postup 1 text seznam délek slov (vět) 2 seznam délek statistiky přímočaré řešení 1. kroku: procházet vstup po znacích pamatovat si délku aktuálního slova, věty speciální znak (mezera, tečka a podobně) aktualizace seznamu
47 Imitace textu vstup: rozsáhlý text výstup: náhodně generovaný text, který má podobné charakteristiky jako vstupní text imitace na úrovni písmen nebo slov
48 Náhodnostní imitace vstupního textu I špiské to pole kavodali pamas ne nebo kdy v Dejný Odm sem uvalini se zabijí s Pan stěží ře, a silobe lo v ne řečekovících blova v nadrá těly jakvěmutelaji rohnutkohonebout anej Fravinci V A pěk finé houty. zal Jírakočítencej ské žil, kddo jak a to Lorskříže si tomůžu schno mí, kto. Kterak král kočku kupoval V zemi Taškářů panoval král a zapřisáhl se velikou přísahou že bude pochválena První pán si jí ani nevšimnul zato druhý se rychle shýbl a Jůru pohladil Aha řekl sultán a bohatě obdaroval pana Lustiga koupil od něho telegram z Bombaje v Indii není o nic horší člověk nežli někdo z mých hraček Kdepak mávl Vašek rukou
49 Základní přístup 1 vstupní text statistiky textu 2 statistiky generování náhodného textu Co jsou vhodné statistiky?
50 Statistiky textu základ: frekvence písmen (slov) rozšíření: korelace mezi písmeny (slovy) příklad: pokud poslední písmeno bylo a: e velmi nepravděpodobné (méně než obvykle) l, k hodně pravděpodobná (více než obvykle)
51 Implementace základní frekvenční analýza datová struktura slovník písmeno frekvence rozšířená analýza slovník slovníků písmeno { písmeno frekvence } generování podle aktuálního písmene získám frekvence vyberu náhodné písmeno podle těchto frekvencí vážená ruleta
52 Imitace sofistikovaněji Recurrent Neural Networks dokáží postihnout i složitější aspekty jazyka básně, recepty, Wikipedia články, zdrojové kódy,...
53 Statistiky jmen data: četnosti jmen, příjmení podle roků, krajů,... zdroj: Ministerstvo vnitra ČR cetnost-jmen-a-prijmeni aspx XLS pro zpracování v Pythonu uložit jako CSV (comma-separated values) doporučené cvičení snadno zpracovatelné zajímavá data cvičení na vymýšlení otázek následuje několik ukázek pro inspiraci...
54 Poznámky ke zpracování slovník: jméno seznam výskytů CSV funkce split seznam normalizace (relativní výskyty jmen) podělit součtem (pro daný rok) různě velké ročníky neúplná data u starých ročníků
55 Vyučující IB111: JAN, JAROSLAV, JIŘÍ, MAREK, MATĚJ, NIKOLA, ONDŘEJ, RADEK, TOMÁŠ, VALDEMAR
56
57
58 Otázky Co zajímavého můžeme z dat zjistit? Kladení otázek důležitá dovednost hodná tréninku. Computers are useless. They can only give you answers. (Pablo Picasso)
59 Identifikace trendů U kterých jmen nejvíce roste/klesá popularita? co to vlastně znamená? jak formalizovat?
60 Nejdelší růst/pokles Kolik let v řadě roste popularita jména: Tobiáš 14 Viktorie, Ella, Sofie 9 Elen, Tobias 8 Kolik let v řadě klesá popularita jména: Jana 26 Martin 21 Petra 11 Zdeněk 9
61 Největší skok v popularitě za 10 let alespoň desetinásobný nárůst popularity: Sofie, Elen, Amálie, Ella, Nicol, Nella, Tobias pokles alespoň o 60 %: Petra, Pavlína, Martina
62
63 Zdroje zajímavých dat Otevřená data / Open data
64 Zpracování dat seriózněji využití existujících knihoven: načítání dat ve standardních formátech: HTML, XML, JSON, CSV,... operace s daty: numpy, pandas vizualizace: matplotlib prostředí ipython interaktivní prozkoumávání dat
65 Shrnutí využití datových struktur: seznamy seznamů, slovníky práce s textem: split, regulární výrazy kladení otázek, přístup k problému
Práce s daty. IB111 Základy programování Radek Pelánek
Práce s daty IB111 Základy programování Radek Pelánek 2017 1 / 76 Práce s daty připomenutí Jaká data budu zpracovávat? Jaká data budu potřebovat k řešení problému? Jaké operace s daty budu chtít provádět?
Regulární výrazy, práce s textem a daty. IB111 Úvod do programování skrze Python
Regulární výrazy, práce s textem a daty IB111 Úvod do programování skrze Python 2014 1 / 57 Výhled dnes: práce s textem příště: práce s obrázky příkazy pro práci s textem/obrázky ukázky na konkrétních
Regulární výrazy, práce s textem a daty. IB111 Úvod do programování skrze Python
Regulární výrazy, práce s textem a daty IB111 Úvod do programování skrze Python 2015 1 / 68 Výhled dnes: práce s textem příště: práce s obrázky příkazy pro práci s textem/obrázky ukázky na konkrétních
Konečný automat. Jan Kybic.
Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s
Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
Regulární výrazy. Vzory
Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO
SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů
SPJA, cvičení 1 ipython, python, skripty základy syntaxe: základní datové typy, řetězce podmínky: if-elif-else, vyhodnocení logických výrazů cykly: for, while kolekce: seznam, n-tice, slovník funkce, list
Prioritní fronta, halda
Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje
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ě
VISUAL BASIC. Práce se soubory
VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit
Tabulkový procesor. Základní rysy
Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních
IB111 Základy programování Radek Pelánek
Proměnné, paměť, soubory IB111 Základy programování Radek Pelánek 2017 1 / 54 Rozcvička I a = [3, 1, 7] print(sorted(a)) print(a) b = [4, 3, 1] print(b.sort()) print(b) 2 / 54 Rozcvička II a = ["magic"]
Da D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
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é
Rekurze. IB111 Úvod do programování skrze Python
Rekurze IB111 Úvod do programování skrze Python 2015 1 / 64 XKCD: Tabletop Roleplaying https://xkcd.com/244/ 2 / 64 To iterate is human, to recurse divine. (L. Peter Deutsch) 3 / 64 Rekurze použití funkce
Rekurze. IB111 Úvod do programování
Rekurze IB111 Úvod do programování 2016 1 / 69 XKCD: Tabletop Roleplaying https://xkcd.com/244/ 2 / 69 To iterate is human, to recurse divine. (L. Peter Deutsch) 3 / 69 Rekurze použití funkce při její
(a kryptografické odbočky) IB111 Úvod do programování skrze Python
Řetězce a seznamy (a kryptografické odbočky) IB111 Úvod do programování skrze Python 2013 1 / 50 Rozcvička: šifry 1 C S A R B V E K T E O A 2 C S B U J T M B W B 3 A J L B N O C E 2 / 50 Transpoziční šifry
Maturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v
DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve
Rekurze. IB111 Základy programování Radek Pelánek
Rekurze IB111 Základy programování Radek Pelánek 2018 1 / 72 xkcd: Tabletop Roleplaying https://xkcd.com/244/ 2 / 72 To iterate is human, to recurse divine. (L. Peter Deutsch) 3 / 72 Rekurze použití funkce
Funkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
Úvod do UNIXu. Okruh č. 4 - vi, regulární výrazy, grep a sed. Jakub Galgonek. verze r2. inspirováno materiály Davida Hokszy
Okruh č.4 Okruh č. 4 - vi, regulární výrazy, grep a sed verze 1.0.0-r2 inspirováno materiály Davida Hokszy Textové editory Okruh č.4 vi(m) prastarý textový editor (1976) dostupný v podstatě na každém UNIXovém
IV122 Matematika a programování Úvod kurzu. Radek Pelánek
IV122 Matematika a programování Úvod kurzu Radek Pelánek Cíle předmětu Lepší pochopení matematických pojmů a metod skrze praktické programování. Procvičení programátorských schopností; trénink přechodu
1. 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.
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
Vyuč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é
Spojový seznam. Jan Kybic.
Spojový seznam Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 25 Složitost operací u lineárních datových struktur v Pythonu operace zásob. fronta pole pole řetězce přidej na začátek
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2014 1 / 48 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý
Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p
Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah
1. 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.
Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]
Hanojská věž zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah je lepší? (co je lepší tah?) P. Berka, 2012 1/21 Stavový prostor 1. množina stavů S = {s} 2. množina přechodů
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
Programování. Bc. Veronika Tomsová
Programování Bc. Veronika Tomsová Regulární výrazy Regulární výrazy slouží k porovnání a zpracovaní textu PHP podporuje syntaxi POSIX-Extended Regulární výrazy jsou velice vhodné například k ověření emailové
Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 3. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.
Zdokonalování gramotnosti v oblasti ICT Kurz MS Excel kurz 3 1 Obsah Řazení dat... 3 Seřazení textu a čísel... 3 Další možné seřazení je možné podle barev, písma a ikon... 4 Filtry, rozšířené filtry...
IB111 Úvod do programování skrze Python Přednáška 7
IB111 Úvod do programování skrze Python Přednáška 7 Správa paměti (proměnné podrobněji) Práce se soubory Nikola Beneš 2. listopad 2016 IB111 přednáška 7: správa paměti, práce se soubory 2. listopad 2016
Obsah. Předmluva 13. O autorovi 15. Poděkování 16. O odborných korektorech 17. Úvod 19
Předmluva 13 O autorovi 15 Poděkování 16 O odborných korektorech 17 Úvod 19 Co kniha popisuje 19 Co budete potřebovat 20 Komu je kniha určena 20 Styly 21 Zpětná vazba od čtenářů 22 Errata 22 KAPITOLA 1
Algoritmizace 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
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ň
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
NPRG030 Programování I, 2016/17 1 / :58:13
NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování
Regulární výrazy. jemný úvod. Miloslav Brada
Regulární výrazy jemný úvod Miloslav Brada Regulární výrazy - RegExy K čemu vůbec jsou? Nástin možností Jednoduché vzory, pravidla regexpů Metaznaky Opakování Skupiny Jednoduchý příklad na závěr 2 Co RegExy
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
Programovací 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
Programování v Pythonu
ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního
Programování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
Prohledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
NPRG030 Programování I, 2010/11
Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou
Hledání správné cesty
Semestrální práce z předmětu A6M33AST Závěrečná zpráva Hledání správné cesty Nela Grimová, Lenka Houdková 2015/2016 1. Zadání Naším úkolem bylo vytvoření úlohy Hledání cesty, kterou by bylo možné použít
POČÍTAČE A PROGRAMOVÁNÍ
POČÍTAČE A PROGRAMOVÁNÍ Práce se soubory, čtení dat ze souboru a zapis dat do souboru Miroslav Vavroušek PPI 10 V1.1 Opakovaní z minulé přednášky Moderní metody vývoje softwaru Složení softwaroveho vývojového
Třídění a vyhledávání Searching and sorting
Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)
Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
PROGRAMOVÁNÍ V SHELLU
PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který
Zadání soutěžních úloh
Zadání soutěžních úloh Kategorie žáci Soutěž v programování 24. ročník Krajské kolo 2009/2010 15. až 17. dubna 2010 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou
Zadání soutěžních úloh
Zadání soutěžních úloh Kategorie mládež Soutěž v programování 25. ročník Krajské kolo 2010/2011 15. až 16. dubna 2011 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za
Vzdálenost uzlů v neorientovaném grafu
Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující
Vstupní požadavky, doporučení a metodické pokyny
Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem
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
- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
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í
Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David
Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace
Binární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
Praktické tipy, programovací jazyky. IB111 Základy programování Radek Pelánek
Praktické tipy, programovací jazyky IB111 Základy programování Radek Pelánek 2017 1 / 76 Dnešní přednáška shrnutí základů vývojová prostředí, editory správa verzí knihovny, praktický vývoj v Pythonu regulární
POČÍTAČE A PROGRAMOVÁNÍ
POČÍTAČE A PROGRAMOVÁNÍ Moderní metody vývoje softwaru, Demontrační příklad piškvorky Miroslav Vavroušek PPI 09 V1.0 Opakovaní z minulé přednášky Vícerozměrná statická a dynamická pole Pole polí Datový
Č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
7 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,
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
(a kryptografické odbočky) IB111 Úvod do programování skrze Python
Řetězce a seznamy (a kryptografické odbočky) IB111 Úvod do programování skrze Python 2014 1 / 56 Rozcvička: šifry 1 C S A R B V E K T E O A 2 A J L B N O C E 3 C S B U J T M B W B 2 / 56 Transpoziční šifry
Inovace výuky prostřednictvím šablon pro SŠ
Název projektu Číslo projektu Název školy Autor Název šablony Název DUMu Stupeň a typ vzdělávání Vzdělávací oblast Vzdělávací obor Tematický okruh Inovace výuky prostřednictvím šablon pro SŠ CZ.1.07/1.5.00/34.0748
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
Úvod do programování 6. hodina
Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Třídění pole: Selection
Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
5. Vyhledávání a řazení 1
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 5 1 Základy algoritmizace 5. Vyhledávání a řazení 1 doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]
A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk
A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů.
Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace
Metody návrhu algoritmů, příklady IB111 Programování a algoritmizace 2011 Návrhu algoritmů vybrané metody: hladové algoritmy dynamické programování rekurze hrubá síla tato přednáška: především ilustrativní
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole
Pattern matching Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CI jako výuková strategie na vysoké škole Pattern matching porovnávání vzorů Hledání
Lekce 2. Řetězce a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016
. Vstup/výstup Lekce 2. Vstup/výstup. a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016 Formátování Národní centrum pro výzkum biomolekul Masarykova univerzita 2.1 Char (znak)
8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
Úvodem... 9 Kapitola 1 Karetních
Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12
Programování a algoritmizace: úvod
Programování a algoritmizace: úvod 2010 Dnešní přednáška o předmětu, administrativa motivace Cíle předmětu Úvod do programátorského a algoritmického stylu myšlení Obecné principy použitelné v řadě programovacích
Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)
Marketingová komunikace Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) 2. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Minulé soustředění úvod
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
ANOTACE vytvořených/inovovaných materiálů
ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
1 / 23 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 2 / 23 biologové často potřebují najít často se opakující sekvence DNA tyto sekvence bývají relativně krátké,
Dotazy tvorba nových polí (vypočítané pole)
Téma 2.4 Dotazy tvorba nových polí (vypočítané pole) Pomocí dotazu lze také vytvářet nová pole, která mají vazbu na již existující pole v databázi. Vznikne tedy nový sloupec, který se počítá podle vzorce.
Programování v Pythonu
ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního
Dynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19
Úvod.............................15 Proč právě Flash? 17 Systémové požadavky 17 Jak používat tuto knihu 18 Doprovodný CD-ROM 19 Část první Začínáme s tvorbou her ve Flashi..............21 1 První kroky........................23
Funkcionální programování. Kristýna Kaslová
Funkcionální programování Kristýna Kaslová Historie Alonzo Church (30. léta) Netypovaný lambda kalkul Základ prvních funkcionálních jazyků Jeho konstrukce i v mnoha současných programovacích jazycích (Python)
Výukový materiál zpracován v rámci projektu EU peníze školám
Výukový materiál zpracován v rámci projektu EU peníze školám Název školy: Střední zdravotnická škola a Obchodní akademie, Rumburk, příspěvková organizace Registrační číslo projektu: CZ.1.07/1.5.00/34.0649
PHP tutoriál (základy PHP snadno a rychle)
PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve
Úvod do programování 8. hodina
Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Hornerovo schéma
Chyby a výjimky. Chyba. Odkud se chyby berou? Kdo chyby opravuje? Co můžete dělat jako programátor? Dvě hlavní metody práce s chybami.
Chyby a výjimky Petr Pošík Katedra kybernetiky, FEL ČVUT v Praze OI, B4B33RPH Řešení problémů a hry, 2016 Chyba Stav programu (podmínky), který mu brání v dosažení požadovaného výsledku. Odkud se chyby
Použití dalších heuristik
Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),
4EK311 Operační výzkum. 1. Úvod do operačního výzkumu
4EK311 Operační výzkum 1. Úvod do operačního výzkumu Mgr. Jana SEKNIČKOVÁ, Ph.D. Nová budova, místnost 433 Konzultační hodiny InSIS E-mail: jana.seknickova@vse.cz Web: jana.seknicka.eu/vyuka Garant kurzu: