FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 5. CVIČENÍ
|
|
- Simona Kovářová
- před 6 lety
- Počet zobrazení:
Transkript
1 FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 5. CVIČENÍ 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
2 Page 1 of 5 Lekce 5 Obsah sekvence, sequencep, subseq, reverse, elt, nth, svref, char, sort, remove, reduce (:initialvalue, :from-end), position, position-if, :from-end, :start, :end, subst, nsubst, every, some, position, find, zásobník, push, pop, asociativní seznam, assoc (s :test a :key), eval, apply, funcall, format, princ, prin1, terpri, print, read, read-line, read-char Sekvence (posloupnost) Na seznam je možno pohlížet jako na posloupnost prvků. Seznam ovšem není jediný typ, se kterým je možné pracovat jako s posloupností. Lisp zavádí nadtyp sequence, kam kromě seznamů patří ještě vektory a řetězce (vektor znaků). Následující funkce je možno použít na jakýkoliv objekt typu sequence. (sequencep x) ==> vrací t jestliže hodnota argumentu x je typu sequence Funkce length vrací délku zadané posloupnosti. CL-USER 82 > (length '(1 2 3)) 3 CL-USER 83 > (length "abc") 3 Jestliže potřebujeme nějakou část posloupnosti, můžeme ji vytvořit pomocí subseq. Indexy se počítají opět od nuly. První parametr je posloupnost, druhý parametr index prvního vybíraného prvku, poslední (nepovinný) parametr představuje index prvního nepoužitého prvku. CL-USER 86 > (subseq '( ) 1 5) ( ) Obrácení posloupnosti zajistí funkce reverse. CL-USER 90 > (reverse '(1 2 3)) (3 2 1) Uniformní přístup k prvkům pro všechny typy posloupností zajišťuje funkce elt. Pracuje stejně jako nth pro seznamy. Jestliže známe podtyp zpracovávané posloupnosti, je efektivnější volat speciální funkce (nth pro seznamy, svref pro vektory, char pro řetězce). CL-USER 97 > (elt "abcd" 1) #\b CL-USER 98 > (elt '(1 2 3) 1) 2 K řazení posloupností můžeme použít funkci sort. POZOR - jedná se o destruktivní funkci! To znamená, že může modifikovat seznam, který obdrží jako parametr. První parametr je řazená posloupnost, druhý parametr je funkce-predikát, podle něhož se posloupnost řadí. CL-USER 103 > (setf x '( )) ( ) CL-USER 104 > (sort x #'>) ( )
3 Page 2 of 5 CL-USER 105 > x ( ) ;! x nemá původní hodnotu, jestliže ji chceme zachovat - copy-list Podobně jako u member můžeme použít klíčový parametr :key, který udává funkci, podle jejíhož výsledku na každý prvek se provádí řazení. CL-USER 106 > (sort '((1 a) (5 c) (3 d)) #'> :key #'car) ((5 C) (3 D) (1 A)) K odstranění prvku z posloupnosti slouží funkce remove. Opět je možné použít :key a :test. CL-USER 40 > (remove 1 '((1 2) (2 3) (1 2) ( 3 1)) :key #'car ) ((2 3) (3 1)) Funkce reduce slouží k postupné redukci posloupnosti. První parametr je funkce, druhý posloupnost. Zadaná funkce musí mít dva parametry. Napřed je aplikována na první dva prvky posloupnosti, potom na výsledek a třetí prvek, výsledek a čtvrtý prvek,... Vrácena je hodnota posledního volání funkce. Volání (reduce #'fce '( )) je ekvivalentní zápisu (fce (fce (fce 1 2) 3) 4) CL-USER 108 > (reduce #'intersection '(( ) (2 3 4) (5 4 3))) (3 4) Toto chování se dá změnit pomocí klíčových parametrů. Nejčastěji využívané jsou parametry :from-end (mění pořadí provádění) a :initial-value (určuje hodnotu, která se použije při prvním volání funkce). Například pro převod řetězce na seznam znaků můžeme jednoduše napsat CL-USER 22 > (reduce #'cons "abcd" :from-end t :initial-value nil) (#\a #\b #\c #\d) Další užitečnou funkcí pro práci s posloupnostmi je funkce position. Vrátí pozici hledaného prvku v posloupnosti. Funkce position-if vrátí index prvku, který první splnil danou podmínku. CL-USER 94 > (position #\b "abrakadabra") 1 CL-USER 95 > (position-if #'zerop '( )) 3 Většina funkcí, které pracují s posloupnostmi, umí pracovat s klíčovými parametry. Mimo již zmíněných :key a :test jsou to ještě: :from-end - udává, zda se má posloupnost brát od konce (default nil) :start - index prvku, na kterém se má začít (default 0) :end - index posledního prvku Další funkce pro práci s posloupnostmi: subst, nsubst, every, some, position, find
4 Page 3 of 5 Zásobník Seznam můžeme využít jako zásobník. K ukládání a vybírání ze zásobníku jsou v Lispu definován a makra push a pop. Výraz (push obj lst) můžeme přepsat jako (setf lst (cons obj lst)) Výraz (pop lst) je ekvivalentní s: (let ((tmp (car lst))) (setf lst (cdr lst)) tmp) CL-USER 48 > (setf x nil) CL-USER 49 > (push 'a x) (A) CL-USER 50 > (push '(b) x) ((B) A) CL-USER 51 > (pop x) (B) Asociativní seznam Cons buňka představuje přirozený způsob, jak reprezentovat dvojici klíč-hodnota. Asociativní seznam můžeme v Lispu vytvořit jako seznam cons buněk. CL-USER 15 > (defparameter *help* '((list. "vytvareni seznamu") (defun. "definice funkci") (+. "scitani") (if "vetveni" "spec. operator"))) *HELP* CL-USER 18 > (defun simple-help (symb) (assoc symb *help*)) SIMPLE-HELP CL-USER 19 > (simple-help 'list) (LIST. "vytvareni seznamu") CL-USER 20 > (simple-help 'if) (IF "vetveni" "spec. operator") CL-USER 21 > (simple-help 'append) Pro přístup k jednotlivým položkám slouží funkce assoc. Jestliže je daný klíč nalezen, je navrácena celá cons buňka, v opačném případě nil. Protože seznam je tvořený z cons buněk, je ho možné použít namísto tečka-dvojice (viz if v předchozím případě). Podobně jako u member můžeme i u funkce assoc specifikovat operaci, která provede porovnání (:test), a operaci, která se před porovnáním aplikuje na každý prvek (:key). CL-USER 24 > (assoc '+ '(((+ add) scitani) ((- sub) odcitani)) :key #'car) ((+ ADD) SCITANI)
5 Page 4 of 5 Eval Již víme, že program je v Lispu zapsán ve formě seznamu. Umíme také se seznamy pracovat. Dosud nám však chyběla funkce, které bychom zadali seznam a ona by ho vyhodnotila. Takovou funkcí je právě eval. CL-USER 35 > (eval '( )) 6 Použití eval je výhodné v případech, kdy nemůžeme použít apply nebo funcall. CL-USER 42 > (apply #'and '(t t nil t)) Error: Syntactic error in form (FUNCTION AND): Can't use FUNCTION on the special form AND. Ohlásila se chyba, protože and není funkce ale makro. S eval proběhne výpočet bez problémů: CL-USER 44 > (eval (cons 'and '(t t nil t))) Funkce eval má však i nevýhody. Protože pracuje se seznamy vytvořenými v programu, je její volání pomalejší. Seznam se buď vyhodnocuje interpretovaným způsobem nebo se musí v daném místě při provádění kompilovat. Obojí snižuje výkon. Výraz v eval je navíc vyhodnocen bez lexikálního kontextu! CL-USER 48 > (setf x 10) 10 CL-USER 49 > (let ((x 15)) (eval (cons 'identity '(x)))) 10 Vstup / výstup Základní funkcí pro zajištění textového výstupu je v Lispu funkce format. Očekává dva nebo více argumentů: první určuje, kam bude směřovat výstup; druhý parametr je formátovací řetěz, který ovlivňuje výstupní podobu zadaných jako ostatní parametry. CL-USER 3 > (format t "~A - ~A je ~A~%" 3 2 (- 3 2)) 3-2 je 1 V předchozím příkladu je "3-2 je 1" vytištěný výstup a nil je návratová hodnota funkce format. Jestliže prvním parametrem funkce format je t, posílá se výstup na *standard-output*, což je standardně top-level. Místo t můžeme použít kterýkoliv výstupní stream. Jestliže použijeme na místě prvního parametru nil, je navrácenou hodnotou funkce přímo vytvořený řetězec. CL-USER 68 > (format nil "~A - ~A je ~A" 3 2 (- 3 2)) "3-2 je 1" Kromě direktivy ~A, která tiskne výstup jako funkce princ (viz dále), můžeme použít ještě ~S (výstup jako prin1) a ~F (tisk čísel s řádovou čárkou - viz specifikace). CL-USER 76 > (format t " ~S ~A " "ahoj" "ahoj") "ahoj" ahoj
6 Page 5 of 5 Další funkce pro výstup jsou prin1 a princ. CL-USER 73 > (prin1 "Hello World") "Hello World" "Hello World" CL-USER 74 > (princ "Hello World") Hello World "Hello World" Rozdíl mezi nimi je ten, že funkce prin1 tiskne výstup v takové podobě, aby bylo možné jej použit opět na vstupu. Text je obalen uvozovkami, neobvyklé znaky uvnitř atomů způsobí uzavření jména mezi "svislítka". Obě funkce mají jako druhý nepovinný parametr výstupní stream. Funkce terpri vytiskne na výstup znak nový řádek. Funkce print je stejná jako prin1, vytiskne však před vlastním objektem znak nový řádek. Pro čtení ze vstupu se nejčastěji používají následující funkce: read, read-line a read-char. Všechny tyto funkce očekávají nepovinný argument vstupní stream, jestliže je vynechán, uvažuje se *standard-input*. Funkce read načítá jeden symbolický výraz, a ten potom vrátí jako výsledek. Stejnou funkci používá interpret Lispu pro čtení výrazů zadávaných k vyhodnocení. CL-USER 84 > (read) ( 1 2 a b) (1 2 A B) Funkce read-line načítá všechny znaky až do konce řádku a pak je vrátí jako řetězec. CL-USER 85 > (read-line) 1. radka textu "1. radka textu" Funkce vrací dvě hodnoty, druhá je t pouze v případě, že funkce read-line vypotřebovala všechny znaky ze vstupu a nenarazila na znak nový řádek. Kromě vstupního streamu můžeme nastavit další nepovinné parametry: jestli vracet v případě dosažení konce souboru chybu nebo ne a co vrátit v případě, že je předchozí parametr nil. Tyto parametry jsou užitečné při načítání ze souboru. Poslední funkce read-char načte ze vstupu znak a vrátí ho jako výsledek. Pomocí funkcí read a eval můžeme napsat zjednodušenou obdobu interpretu v Lispu. (defun top-level () (print "my top >") (print (eval (read))) (top-level))
7 Jazyky pro umělou inteligenci - cvičení file:///c:/pracovni/vyuka/jui/web/w05test.html Page 1 of 1 Cvičení 5 1) Definujte funkci spoj, která obdrží jako své argumenty dva seznamy. Výsledkem je seznam vzniklý spojením těchto dvou seznamů. (spoj '(1 2 3 a b) '(c d e 4)) --> (1 2 3 A B C D E 4) 2) Pomocí funkce spoj (viz 1) a funkce reduce definujte funkci my-append, která obdrží jako své parametry libovolný počet seznamů a vytvoří z nich seznam jeden. Promyslete, v jakém pořadí bude nejvýhodnější předávat argumenty funkci spoj (parametr :from-end funkce reduce -pořadí bude záviset na definici funkce spoj). 3) Definujte funkci my-adjoin (obdoba standardní funkce adjoin), která bude umět pracovat s klíčovým parametrem :test. Můžete využít toho, že funkce adjoin očekává stejné klíčové argumenty jako funkce member. (Nápověda: apply, &rest). 4) Definujte funkci transp, ktera transponuje matici zapsanou seznam řádkových seznamů ve tvaru ((a11 a12... a1n) (a21 a22... a2n)... (am1 am2...amn)). (transp '((a11 a12 a13)(a21 a22 a23)(a31 a32 a33))) --> ((A11 A21 A31)(A12 A22 A32)(A13 A23 A33)) 5) Definujte funkci vloz, která vloží prvek do seznamu na pozici určenou indexem. (vloz 'a 0 '( )) --> (a ) (vloz 'a 10 '( )) --> ( a) 6) a) Definujte funkci all-ok?, která obdrží jako parametr jméno funkce (s jedním parametrem) a seznam. Funkce se postupně volána se všemi prvky ze seznamu jako argumenty. Funkce all-ok? vrátí t, jestliže všechna volání zadané funkce vrátila t, jinak vrátí nil. b) Rozšiřte na funkce s libovolným počtem parametrů. (all-ok?2 #'(lambda (x y) (and (evenp x) (oddp y))) '(2 4 6) '(1 3 6)) --> 7) Definujte funkci occ-count, která očekává jako jediný parametr seznam atomů. Výstupem funkce je seřazený (podle četnosti výskytu) seznam tečka-dvojic, určující četnost výskytu jednotlivých elementů. (occ-count '(a b a f b a c d a f d b a)) --> ((A. 5) (B. 3) (D. 2) (F. 2) (C. 1)) 8) Definujte funkci chci-cislo, která (s vhodným promptem) čte vstup opakovaně tak dlouho, dokud na vstup neobdrží číslo, které vrátí jako výsledek. 9) Definujte funkci print-dot, která se zeptá na číslo a vytiskne tolik teček na standardní výstup..
FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 3. CVIČENÍ
FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 3. CVIČENÍ 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Page 1 of 6 Cviceni 3 Obsah seznamy, cons-buňka, car, cdr, first,
Více1. Od Scheme k Lispu
KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI www.inf.upol.cz Michal Krupka krupka.inf.upol.cz michal.krupka@upol.cz 7. listopadu, 77 46 Olomouc Paradigmata programování poznámky k přednášce. Od
VíceLISP Definice funkcí
LISP Definice funkcí (DEFUN jméno-fce (argumenty) tělo-fce ) Přiřadí jménu-fce lambda výraz definovaný tělem-fce, tj. (LAMBDA (argumenty) tělo-fce). Vytvoří funkční vazbu symbolu jméno-fce Struktura symbolu:
VícePARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ
KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ Slajdy vytvořili Vilém Vychodil a Jan Konečný (KI, UP Olomouc) PP 2, Lekce
VíceParadigmata programování 2
Paradigmata programování 2 6. cvičení Radek Janoštík Univerzita Palackého v Olomouci 18.3.2019 Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 1 / 11 Vedlejší efekt
VíceParadigmata programování 1
Paradigmata programování 1 Explicitní aplikace a vyhodnocování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 6 V. Vychodil (KI, UP Olomouc) Explicitní aplikace a vyhodnocování Přednáška
VíceParadigmata programování 1
Paradigmata programování 1 Kvazikvotování a manipulace se symbolickými výrazy Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 11 V. Vychodil (KI, UP Olomouc) Kvazikvotování, manipulace se
VíceFUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 2. CVIČENÍ
FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 2. CVIČENÍ 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Page 1 of 7 MI-FLP cviceni 2 Obsah atomy (čísla, řetězy, symboly),
VíceObsah 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
VíceSPJA, 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
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ícePříklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!
Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného
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íceVISUAL 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
VíceFunkcionální programování úvod
Funkcionální programování úvod Imperativní jazyky založeny na von Neumann architektuře primárním kriteriem je efektivita Modelem je Turingův stroj Základní konstrukcí je příkaz Příkazy mění stavový prostor
VíceSkripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:
Skripta ke školení Základy VBA vypracoval: Tomáš Herout e-mail: herout@helpmark.cz tel: 739 719 548 2016 Obsah TROCHA TEORIE VBA...2 ZPŮSOB ZÁPISU VE VBA...2 CO JE TO FUNKCE...2 CO JE TO PROCEDURA...2
VíceSlepé 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
Vícefor (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Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání
Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou
VíceZačí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Č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íceFormátová specifikace má tvar (některé sekce nemají smysl pro načítání) %
vstup a výstup na konzolu - vstupním zařízením je klávesnice, výstupním monitor (přístup jako k sériovým zařízením) - spojení s konzolami je nastaveno automaticky na začátku programu - ke konzole je možné
VícePráce se soubory. Základy programování 2 Tomáš Kühr
Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup
VíceTabulkový 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
VíceFUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika
FUNKCE 3 Autor: Mgr. Dana Kaprálová Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového
VíceStručný návod k programu Octave
Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,
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ícePARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY
KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY VÝVOJ TOHOTO UČEBNÍHO MATERIÁLU JE SPOLUFINANCOVÁN EVROPSKÝM
VíceHanojská 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ů
VíceDa 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é
VíceProgramová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
VíceAlgoritmizace 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
VíceE+034 = ; = e E+034
Formátovaný textový výstup fprintf Příklad: m = 123.3456; fprintf('%f\n', m); 123.345600 fprintf('%e\n', m); 1.233456e+002 fprintf('%e\n', m); 1.23456E+002 fprintf('%g\n', m); 123.346 fprintf('%g\n', m);
VíceProlog 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
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íceIB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat
IB015 Neimperativní programování Organizace a motivace kurzu, programovací jazyk Haskell Jiří Barnat Sekce IB015 Neimperativní programování 01 str. 2/36 Organizace kurzu Cíle kurzu IB015 Neimperativní
VíceStandardní 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ícefor (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
VíceNPRG030 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í
VícePř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
VíceÚvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu
Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro
VíceParsování v Haskellu, knihovna Parsec
Parsování v Haskellu, knihovna Parsec IB016 Seminář z funkcionálního programování Vladimír Štill, Martin Ukrop Fakulta informatiky, Masarykova univerzita Jaro 2016 IB016: Cvičení 09 Jaro 2016 1 / 12 Regulární
VíceKolekce, 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
VíceMartin 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íceOperační systémy 2: Zápočtové úkoly
Operační systémy 2: Zápočtové úkoly 18. listopad 2010 1 Paralelní Mergesort Implementujte paralelní verzi algoritmu Merge sort, který bude řadit celá čísla uložená v textovém souboru. Program bude mít
VíceParadigmata programování II Přednáška 2: Mutace
Paradigmata programování II Přednáška 2: Mutace Vilém Vychodil Katedra informatiky, Univerzita Palackého v Olomouci 22. února 2007 Vilém Vychodil (UP Olomouc) PP II, Př. 2: Mutace 22. února 2007 1 / 85
VíceParadigmata programování 1
Paradigmata programování 1 Tečkové páry, symbolická data a kvotování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 4 V. Vychodil (KI, UP Olomouc) Tečkové páry, symbolická data a kvotování
VíceNPRG030 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
VíceProgramová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
Více- 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á
VíceZáklady programování (IZP)
Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.
VíceParadigmata programování II Přednáška 1: Vedlejší efekt
Paradigmata programování II Přednáška 1: Vedlejší efekt Vilém Vychodil Katedra informatiky, Univerzita Palackého v Olomouci 15. února 2007 Vilém Vychodil (UP Olomouc) PP II, Př. 1: Vedlejší efekt 15. února
VíceC2110 Operační systém UNIX a základy programování
C2110 Operační systém UNIX a základy programování 5. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém
VíceDatové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky 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
VíceXMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky
XMW4 / IW4 Pokročilé SELECT dotazy Štefan Pataky TOP, OFFSET-FETCH Konverze datových typů Logické funkce Práce s řetězci Poddotazy a množinové dotazy SQL Windowing Agenda TOP TOP omezení počtu vrácených
Více9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>
9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte
VíceDUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA
DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací
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íceVzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec
StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak
VíceALGORITMIZACE 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í
VícePráce se soubory. Úvod do programování 2 Tomáš Kühr
Práce se soubory Úvod do programování 2 Tomáš Kühr Soubory z pohledu C u Soubor chápeme jako posloupnost bytů uložených na disku u Datový proud (anglicky stream) u Ještě obecnější přístup u Sjednocuje
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í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í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í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íceNový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
VíceX37SGS Signály a systémy
X7SGS Signály a systémy Matlab minihelp (poslední změna: 0. září 2008) 1 Základní maticové operace Vytvoření matice (vektoru) a výběr konkrétního prvku matice vytvoření matice (vektoru) oddělovač sloupců
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íceJazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
VícePrincip funkce počítače
Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování
VíceProgramová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
VíceBasic256 - úvod do programování Příklady. ing. petr polách
Basic256 - úvod do programování Příklady ing. petr polách 1 Basic 256 input, print Př.: Vytvořte program pro součet dvou čísel: input "Zadej a: ", a input "Zadej b: ", b print a+b input "Zadej a: ", a
Více- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
VíceMotivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A
Motivace Vstup a výstup Ing. Lumír Návrat katedra informatiky, A-1018 59 732 3252 Načtení čísla val :: Int val = 42 function :: Int -> Int function = val + n inputint :: Int inputdiff = inputint - inputint
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ícePráce s binárními soubory. Základy programování 2 Tomáš Kühr
Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba
VíceOperátory. Základy programování 1 Tomáš Kühr
Operátory Základy programování 1 Tomáš Kühr Operátory a jejich vlastnosti Základní konstrukce (skoro) každého jazyka Z daných operandů vytvoří výsledek, který je možné dále využívat Arita udává počet operandů
VíceKurz LSL skriptování. Shiny Iceberg 2009
Kurz LSL skriptování Shiny Iceberg 2009 2 2 Kurz LSL skriptování Shiny Iceberg v Second Life od roku 2006 shiny.iceberg@virtualmagazine.cz Aktuální projekty virtualmagazine.cz Urbanica, Shinyland Bwindi
VícePROGRAMOVÁ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ý
VíceSemestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz
Semestrální práce z předmětu KIV/UPA Jan Bařtipán / A03043 bartipan@studentes.zcu.cz Zadání Program přečte ze vstupu dvě čísla v hexadecimálním tvaru a vypíše jejich součet (opět v hexadecimální tvaru).
VíceBooleovská algebra. Booleovské binární a unární funkce. Základní zákony.
Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
VíceÚvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici
Základní příkazy Úvod do Unixu man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp vypíše nápovědu o příkazu cp, manuálová stránka se ukončí stisknutím klávesy
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íceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědě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 3 Shrnutí minule procvičené
VíceZáklady PERLu snadno a rychle
Základy PERLu snadno a rychle Začínáme Začneme tak, že si vytvoříme třeba soubor hellopl, do souboru napíšeme: print "Hello world\n"; Pak soubor nastavíme jako spustitelný: $ chmod +x hellopl A teď si
VíceProgramování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru
Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Čtení dat ze souboru FILE *f = NULL; char str[10] = ""; float a = 0.0, b = 0.0; Soubor otevíráme v režimu pro čtení "r" f = fopen("/home/martinp/testdata/test1.txt",
VíceKoneč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
VíceZáklady programování (IZP)
Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden
VíceZáklady programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události
Petr Blaha Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce (matematické, textové,
VíceDUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
VíceFormátové specifikace formátovací řetězce
27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete
VíceProgramovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNAKICKÁ ANALÝZA DOKONČENÍ, IMPLEMENACE. VLASNOSI LL GRAMAIK A JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Gramatika
VíceZákladní přehled SQL příkazů
Základní přehled SQL příkazů SELECT Základní použití Příkaz SELECT slouží k získání dat z tabulky nebo pohledu v požadované podobě. Získání všech řádků a sloupců z tabulky SELECT * FROM Person.Contact
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
VíceTvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou
Příkaz expr Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou výraz1 výraz2 vrátí první výraz, pokud není nulový a není prázdným řetězcem, jinak
VícePARADIGMATA PROGRAMOVÁNÍ 2A VEDLEJŠÍ EFEKT
KATEDRA INFORMATIKY, P RÍRODOV EDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A VEDLEJŠÍ EFEKT Slajdy vytvoril Vilém Vychodil Jan Konecný (KI, UP Olomouc) PP 2A, Lekce 1 Vedlejší
Vícesmaže n-tý sloupec matice A vybere hodnotu 6.,1.,3.,2.prvku vektoru a a1 =
1. Způsoby zadání vektorů, ukládání proměnných >> repmat(a,2,2) ans = 1 2 3 1 2 3 1 2 3 1 2 3 >>M = [ ] uloží prázdnou matici >>A(m,:) = [ ] smaže m-tý řádek matice A >>A(:,n) = [ ] smaže n-tý sloupec
VíceVýhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
VíceProměnné a parametry. predn_08.odt :00:38 1
Proměnné a parametry predn_08.odt 16.04.2007 14:00:38 1 Proměnné a parametry Jméno proměnné - identifikátor [a-za-z_][a-za-z_0-9]* Hodnota proměnné textový řetězec celočíselná hodnota - ne v sh Přesun
Více