FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 3. CVIČENÍ
|
|
- Helena Brožová
- před 5 lety
- Počet zobrazení:
Transkript
1 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
2 Page 1 of 6 Cviceni 3 Obsah seznamy, cons-buňka, car, cdr, first, rest, caar,..., cddddr, nth, nthcdr, list, last, append, length, butlast, copy-list, copy-tree, listp, consp, atom, symbolp, numberp, ukazatele, porovnávání (eql, eq, =, equal), function, #', apply, funcall, lambda-výraz, mapovací funkcionály (mapcar, mapcan, mapc, maplist, mapcon, map) Seznamy Seznamy jsou jednou ze základních datových struktur v Lispu. V Common Lispu (CL) je možné použít i specializované datové struktury (hash-tabulky, vektory a vícerozměrná pole, streamy,...). Při psaní programu však většinou v první fázi použijeme seznamy a až později můžeme zvážit, zda je účelné přejít ke specializovaným (efektivnějším) datovým strukturám. Seznam můžeme definovat takto: 1) Seznamem je prázdný seznam ( v Lispu zapsán jako nil nebo () ) 2) Seznam vznikne přidáním libovolného prvku k seznamu (zleva), přitom prvkem může být libovolný atom nebo opět seznam. V Lispu se pro vytváření seznamů pomocí přidávání prvků používá funkce cons. Tato funkce očekává dva parametry. Výsledkem volání je vytvoření dvousložkového objektu nazývaného consbuňka (angl. cons-cell), první složka tohoto objektu je ukazatel na objekt zadaný funkci cons jako první argument, druhá složka je ukazatel předaný funkci cons jako druhý argument. Pro přístup k těmto prvkům se používají funkce car (první složka) cons-buňky a cdr (druhá složka). CL-USER 13 > (setf x (cons 'b nil)) (B) CL-USER 14 > (setf y (cons 'a (cons 'b (cons 'c nil)))) (A B C) (Obrázky reprezentace). Se symbolem X je nyní asociován jednoprvkový seznam (B), se symbolem Y tříprvkový seznam (A B C). Jak je vidět z předchozích příkladů, seznam se v Lispu zapisuje jako skupina prvků oddělených mezerami, která ohraničena kulatými závorkami. CL-USER 16 > (car y) A CL-USER 17 > (cdr y) (B C) První složka prvního cons objektu je ukazatel na A druhý prvek je ukazatel na zbytek seznamu. Mimo funkce car a cdr (pojmenování vzniklo podle registru počítače na kterém běžel jeden z prvních dialektů Lispu - ekvivalentně můžeme použít first a rest) existují jejich různé variace. Např. CL-USER 18 > (cddr y) (C) je ekvivalentní zápisu (cdr (cdr y)). Podobně pracují funkce caar, caaar, cdddr,... CL-USER 19 > (cadr y) B
3 Page 2 of 6 Funkce cadr vrátí (car (cdr...)) Pro přístup na prvek seznamu, jehož pořadí je zadáno indexem, můžeme použít funkce: CL-USER 28 > (nth '1 y) B CL-USER 29 > (nthcdr '1 y) (B C) Indexování začíná v Lispu vždy od nuly. Pro vytvoření seznamu z více prvků v jednom kroku slouží funkce list, funkce last vrátí poslední cons objekt seznamu: CL-USER 31 > (list 'a 'b 'c 1 2 '(2 3) t) (A B C 1 2 (2 3) T) CL-USER 34 > (last (list 'a 'b 'c 1 2 '(2 3) t)) (T) Funkce append spojí více seznamů do jednoho: CL-USER 35 > (append '(1 2) '(a (b c))) (1 2 A (B C)) Další užitečné funkce: length - vrátí délku seznamu butlast - seznam bez posledního prvku Jestliže potřebujeme vytvořit kopii seznamu, použijeme funkci copy-list. Výsledkem je tzv. mělká kopie seznamu, tedy kopírují se pouze cons-buňky z nejvyšší úrovně zadaného seznamu. Nový seznam má tedy tytéž prvky - ukazatele na ně jsou ale umístěny v nových cons buňkách. Pro vytvoření hluboké kopie (včetně vnořených seznamů), slouží funkce copy-tree. Některé predikáty (listp x) - testuje, zda x je seznam (nil nebo cons buňka - vrací tedy t i pro seznam, který není řádně ukončen) (consp x) - testuje, zda x je cons buňka (atom x) - testuje, zda x je atom (symbolp x) - vrací t, jestliže x je symbolický atom (numberp x) - vrací t, jestliže x je číslo Tečková notace Seznamy popsané v předchozí části se někdy označují jako tzv. řádné (proper) seznamy. Takový seznam je buď prázdný seznam (nil nebo ()), nebo cons buňka, jejíž cdr je opět řádný seznam. Funkce testující, zda je seznam řádný, by mohla vypadat třeba takto:
4 Page 3 of 6 (defun prop-sez (lst) (or (null lst) (and (consp lst) (prop-sez (cdr lst))))) Standardní Lispovský predikát na testování seznamů listp, vrací T i pro seznamy, které nejsou řádné. Přepis této funkce v Lisp kódu by mohl vypadat takto: (defun my-listp (lst) (or (null lst) (consp lst))) Všechno co není cons buňka, se v Lispu považuje za atom. Predikát atom můžeme tedy přepsat jako: (defun my-atom (a) (not (consp a))) Funkcí cons se však v Lispu nevytváří pouze seznamy. Je ji možno použít, kdykoliv je potřeba vytvořit dvouprvkovou strukturu. Ta je pak zobrazena v tečkové notaci. CL-USER 20 > (cons 'a 'b) (A. B) Tečkovou notaci lze použít i při zápisu seznamů, ale zpravidla to neděláme. Jestliže však pomocí tečkové notace vytvoříme řádný seznam, je zobrazen obvyklým způsobem. CL-USER 21 > '(1. (2. (3. nil))) (1 2 3) Následující struktury nejsou řádným seznamem (poslední cons buňka neobsahuje v cdr složce nil). Zobrazeny jsou v tzv. smíšené notaci. CL-USER 22 > '(1. (2. (3. 4))) ( ) CL-USER 23 > (cons 1 (cons 2 (cons 3 4))) ( ) Ukazatele Lisp nepracuje explicitně s ukazateli. Je to zbytečné. Jestliže navážeme na symbol nějaký objekt (číslo, strukturu, seznam,...), obsahuje symbol pouze ukazatel na tento objekt a ne objekt samotný. Jestliže například zadáme: CL-USER 54 > (setf A '(1 2)) (1 2) CL-USER 55 > (setf B A) (1 2) nekopíroval se do B celý seznam z A, pouze se do B přiřadil ukazatel na stejný seznam, na jaký ukazuje proměnná A. Kvůli efektivnosti občas Lisp nevytváří ukazatele - například malé číslo (integer) zabere stejnou paměť jako pointer, a tak se může uložit (včetně příslušné typové informace!) přímo do dané proměnné nebo do složky v cons-buňce, ale to už jsou implementační detaily. Jednoduše si můžeme představit, že proměnná vždy obsahuje ukazatel na objekt, který je do ní přiřazen. Mimo jiné to znamená, že je možno přiřadit objekt jakéhokoliv typu kamkoliv (jestliže
5 Page 4 of 6 toto implicitní chování nezměníme explicitní deklarací). Porovnávání K porovnávání dvou objektů můžeme v Lispu použít několik funkcí. Funkce eql porovnává, jestli jsou dva objekty identické. Čísla jsou identická, jestliže mají stejnou hodnotu (a typ), ostatní objekty jsou identické, jestliže jsou na stejném místě v paměti (ukazatele se rovnají). CL-USER 78 > (eql 1 1) T CL-USER 79 > (eql ) T CL-USER 80 > (eql (cons 1 nil) (cons 1 nil)) NIL CL-USER 81 > (eql 0 0.0) NIL Funkce eq je přísnější obdoba eql. Vrací T pouze v případě, že oba argumenty jsou na stejném místě v paměti. CL-USER 82 > (eq ) NIL Pro porovnávání čísel můžeme použít funkci =. Dvě čísla jsou stejná, jestliže mají stejnou hodnotu (mohou se lišit typem). CL-USER 89 > (= 0 0.0) T Jestliže chceme otestovat, jestli složitější datové struktury obsahují stejné elementy (např. jestli dva seznamy obsahují stejné prvky), můžeme použít funkci equal. CL-USER 90 > (equal (list 1 (list 2 3)) (list 1 (list 2 3))) T Funkce V Lispu jsou funkce objekty - podobně jako symboly, seznamy nebo řetězce. Speciální operátor function vrací zobrazitelnou reprezentaci funkce. Podobně jako můžeme použít ' (apostrof) místo quote, můžeme operátor function nahradit pomocí zkratky #'. CL-USER 4 > (function +) #<function F9A> CL-USER 6 > #'+ #<function F9A> Porovnat rozdíly při vyhodnocování symbolů můžeme následovně:
6 Page 5 of 6 CL-USER > (setf list ) CL-USER 11 > list Symbol list se vyhodnotil na hodnotu, která je na něj navázaná. CL-USER 12 > 'list LIST Speciální operátor quote vrátil textovou reprezentaci zadaného symbolu. CL-USER 13 > #'list #<function LIST 200DCA7A> Výsledkem dotazu po funkční hodnotě je objekt reprezentující funkci navázanou na symbol list. Jako ostatní objekty v Lispu, můžeme i funkci předat jako parametr. Jednou z mnoha funkcí očekávajících jako parametr jinou funkci, je funkce apply. Jako první argument očekává funkci, zbytek pak tvoří argumenty, na které se má tato funkce aplikovat. Posledním argumentem musí být seznam. CL-USER 16 > (apply #'+ '( )) CL-USER 17 > (apply #'+ 1 2 '(3 4)) Funkce funcall pracuje stejně jako apply, nepotřebuje však argumenty zabalené do seznamu. CL-USER 18 > (funcall #' ) K vytvoření nepojmenované (anonymní) funkce můžeme v Lispu použít tzv. lambda-výraz. CL-USER 21 > (lambda (x y) (+ x y)) #'(LAMBDA (X Y) (+ X Y)) Nepojmenovaná funkce je výhodná při jednorázovém použití jako parametr jiné funkce. CL-USER 22 > (funcall #'(lambda (x y) (- x y)) 2) 8 Mapovací funkcionály Velmi často se v Lispu vyskytuje požadavek na postupné zpracování seznamu pomocí nějaké funkce. Pro tyto případy poskytuje Common Lisp tzv. mapovací funkcionály (někdy označované jako funkce vyšších řádů). Jako první argument očekávají funkci a zbylé argumenty představují seznam nebo několik seznamů. Počet těchto seznamů musí odpovídat počtu parametrů funkce, zadané jako první parametr. Tato funkce je pak postupně aplikována na určitou podmnožinu prvků vybraných ze seznamu: Funkcionál mapcar pracuje na jednotlivých prvcích. Napřed se použije car z každého seznamu, potom cadr a tak dále. Počet opakování je dán počtem prvků nejkratšího seznamu. Výsledkem je seznam vytvořený z výsledných hodnot aplikované funkce.
7 Page 6 of 6 CL-USER 1 > (mapcar #'list '(1 2 3) '( ) '( )) ((1 4 9) (2 5 8) (3 6 1)) Funkcionál mapcan pracuje podobně jako mapcar, výsledky (předpokládá se, že to jsou seznamy) jsou však do seznamu přidávány pomocí (destruktivního) postupného propojení za sebou. CL-USER 2 > (mapcan #'list '(1 2 3) '( ) '( )) ( ) Funkcionál mapc je opět obdoba mapcar, jako výsledek se vrací druhý argument. Používá se kvůli vedlejším efektům, kdy nás nezajímá návratová hodnota. CL-USER 3 > (mapc #'list '(1 2 3) '( ) '( )) (1 2 3) Funkcionál maplist - zadaná funkce je postupně aplikována na celý seznam, cdr seznamu, cddr seznamu... CL-USER 4 > (maplist #'list '(1 2 3) '( ) '( )) (((1 2 3) ( ) ( )) ((2 3) (5 6 7) ( )) ((3) (6 7) ( ))) Funkcionál mapcon funguje jako maplist, s tím rozdílem, že výsledek je vytvořen pomocí (destruktivního) postupného propojení dílčích hodnot (předpokládá se, že to jsou seznamy) za sebou. CL-USER 5 > (mapcon #'list '(1 2 3) '( ) '( )) ((1 2 3) ( ) ( ) (2 3) (5 6 7) ( ) (3) (6 7) ( )) Funkcionál mapl je obdobou mapc pro maplist. CL-USER 6 > (mapl #'list '(1 2 3) '( ) '( )) (1 2 3) Funkcionál map funguje jako mapcar, jako první parametr je však možno zadat typ výsledku. CL-USER 12 > (map 'cons #'list '(1 2 3) '( )) ((1 4) (2 5) (3 6)) CL-USER 14 > (map 'vector #'list '(1 2 3) '( )) #((1 4) (2 5) (3 6))
8 Cvičení 2 - priklady file:///c:/pracovni/vyuka/jui/web/w03test.html Page 1 of 1 Cvičení 3 1) Pomocí car a cdr definujte funkci my-fourth, která vrátí čtvrtý prvek seznamu. 2) Zapište tři různé cons výrazy, které vrátí (a b c). 3) Ukažte, jak jsou následující symbolické výrazy reprezentovány v paměti a kolik cons-buněk je k jejich reprezentaci zapotřebí: a) (A B (C D) E) b) (A (B (C (D. E)))) c) (A (B. C) (D. E)) d) (A B (C. (D E))) 4) Definujte funkci my-length, která spočítá délku seznamu (bez podseznamů). (my-length '(1 2 (3 4))) --> 3 5) Definujte funkci at-cnt, která určí počet atomů ve výrazu. (at-cnt '(1 2 (3 4))) --> 4 (at-cnt 1) --> 1 (at-cnt '(1 2 (3 4. 5) 6. 7)) --> 7 6) Definujte rekurzivně funkci revall, která otočí pořadí prvků v seznamu včetně podseznamů. (revall '(1 2 3 (4 5))) --> ((5 4) 3 2 1) 7) Definujte funkci, která dostane zadanou počáteční celočíselnou hodnotu X a počet opakování N. Výsledkem bude seznam obsahující N čísel, od X do X+N-1. (counter 12 5) --> ( ) 8) Pomocí mapovacích funkcionálů definujte funkci, která vypočte ze seznamu čísel seznam jejich druhých odmocnin. Záporná čísla bude vynechávat (pomocí mapcan). (odm '( )) --> ( ) 9) Pomocí mapovacích funkcionálů definujte funkci, která obdrží dva seznamy. Výsledkem je seznam aritmetických průměrů odpovídajících si prvků. (prum '( ) '(7 8 9 )) --> ( )
FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 5. CVIČENÍ
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 Page 1 of 5 Lekce 5 Obsah sekvence, sequencep, subseq, reverse,
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í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í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í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í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
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íceJazyky pro umělou inteligenci
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ Ústav automatizace a informatiky Jiří Dvořák 2005 Obsah 1. Úvod......... 4 1.1 Funkcionální programování....... 4 1.2 Logické programování......
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í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í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í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íceLisp 7-1. opakování destruktivních změn seznamů
Lisp 7-1 opakování destruktivních změn seznamů Seznam bez posledního prvku - destruktivně: ;velmi důležité si uvědomit jak to funguje.. zejména návratová hodnota funkce (defun bez_posledniho(s ((null (cdr
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ícePointery II. Jan Hnilica Počítačové modelování 17
Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky
VíceKAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM
KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat
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íceFunkcioná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í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íceLEKCE 6. Operátory. V této lekci najdete:
LEKCE 6 Operátory V této lekci najdete: Aritmetické operátory...94 Porovnávací operátory...96 Operátor řetězení...97 Bitové logické operátory...97 Další operátory...101 92 ČÁST I: Programování v jazyce
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íce5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
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ícePARADIGMATA PROGRAMOVÁNÍ 2A MUTACE
KATEDRA INFORMATIKY, P ÍRODOV DECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A MUTACE Slajdy vytvo ili Vilém Vychodil a Jan Kone ný Jan Kone ný (KI, UP Olomouc) PP 2A, Lekce 2 Mutace
Více2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
VíceMQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy
MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,
VícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VíceProgramová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
VíceLogické programování I
Logické programování I PROLOG Program popisuje "svět" Prologu = databáze faktů a pravidel (tzv. klauzulí). fakta: predikát(arg1, arg2,...argn). cíle:?- predikát(arg1, arg2,...argn). pravidla: hlava :-
VíceUkazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s
Více7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Ví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í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í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íce6. blok část C Množinové operátory
6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.
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íceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Ví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í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íceSada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 04. Datové typy, operace, logické operátory Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
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íce(pracovní verze textu určená pro studenty)
KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO CVIČENÍ Z PARADIGMAT PROGRAMOVÁNÍ I Lekce 7: Akumulace Učební materiál k přednášce 16. listopadu 2006 (pracovní verze textu určená pro studenty)
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í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í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íceALGORITMIZACE PRAKTICKÉ
LOGO IMAGINE Obsah 1. Příkazy 1.1. Základní příkazy 1.2. Vestavěné příkazy Imagine 1.2.1.Příkaz mnohoúhelník 1.2.2.Náhodná procházka 2. Matematické operace 3. Funkce 4. Predikáty 5. Konstruktory 6. Selectory
VíceLokální definice (1) plocha-kruhu
Lokální definice (1) syntaxe: (local (seznam definic) výraz) definice jsou dostupné pouze uvnitř příkazu local příklad: (local ( (define Pi 3.1415926) (define (plocha-kruhu r) (* Pi r r)) ) (plocha-kruhu
VíceKIV/ZIS cvičení 5. Tomáš Potužák
KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí
VíceZáklady programování (IZP)
Základy programování (IZP) Šesté 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 6. týden
VíceAlgoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19
Algoritmy I Číselné soustavy přečíst!!! Číselné soustavy Každé číslo lze zapsat v poziční číselné soustavě ve tvaru: a n *z n +a n-1 *z n-1 +. +a 1 *z 1 +a 0 *z 0 +a -1 *z n-1 +a -2 *z -2 +.. V dekadické
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í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í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í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íceHlavní užitečné funkce Visual LISPu jsou:
Základy AutoLISPU AutoLISP je programovací jazyk, který muže automatizací často používaných opakovaných úloh podstatně zvýšit vaší produktivitu. Nabízí náhled do vnitřního fungování AutoCADu a muže sloužit
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íceOperátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
VícePARADIGMATA OBJEKTOVÉHO PROGRAMOVÁNÍ I
KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO PARADIGMATA OBJEKTOVÉHO PROGRAMOVÁNÍ I MICHAL KRUPKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM
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íceInovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09
Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Operátory Autor:
VíceNegativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1
Negativní informace Petr Štěpánek S použitím materiálu M.Gelfonda a V. Lifschitze 2009 Logické programování 15 1 Negace jako neúspěch Motivace: Tvrzení p (atomická formule) neplatí, jestliže nelze odvodit
VíceProgramování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
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íceJak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean
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íceReprezentace dat v informačních systémech. Jaroslav Šmarda
Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,
VíceUkazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů
Ukazatele a pole 204 Deklarace jednorozměrného pole s inicializací Chceme-li pole v deklaraci inicializovat, zapíšeme seznam inicializátorů jednotlivých prvků do složených závorek: #define N 5 int A[N]
VíceStřední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5 Programování v jazyce
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íceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceTematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
VíceDatabázové systémy Cvičení 5.2
Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako
VíceGrafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.
Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy
VíceDatové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
VíceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Vstup, výstup BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceAlgoritmizace 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
VíceLogika a logické programování
Logika a logické programování témata ke zkoušce Poslední aktualizace: 16. prosince 2009 Zkouška je písemná, skládá se obvykle ze sedmi otázek (může být více nebo méně, podle náročnosti otázek), z toho
VíceParadigmata programování 1
Paradigmata programování 1 Vytváření abstrakcí pomocí procedur Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 2 V. Vychodil (KI, UP Olomouc) Vytváření abstrakcí pomocí procedur Přednáška
VíceDUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky
DUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky ze sady: 02 tematický okruh sady: Tabulkový editor ze šablony: 07 KANCELÁŘSKÝ SOFTWARE určeno pro: 1-4. ročník
VíceDotazy 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.
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íceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceVY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce
VY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce Anotace: Žák se seznámí se základními druhy funkcí a jejich vložením v programu MS Excel 2010. Pracuje na svém žákovském počítači dle pokynů v prezentaci.
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íceSystém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných
Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné
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ícePř. další použití pointerů
Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:
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íceOdvozené a strukturované typy dat
Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu
VíceDatové typy strana 29
Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo
VíceTextové popisky. Typ dat
Textové popisky Newsletter Statistica ACADEMY Téma: Možnosti softwaru, datová reprezentace Typ článku: Tipy a triky Máte ve svých datech kategorie ve formě textu? Víme, že někdy není úplně jasné, jak Statistica
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VíceAlgoritmizace a programování
Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,
Více2. cvičení z ZI1 - Excel
Doc.Ing. Vlastimil Jáneš... janes@fd.cvut.cz 2. cvičení z ZI1 - Excel O Excelu - organizace listů : 1 list : max. 65 536 řádků a 256 sloupců, tj. 16 777 216 buněk. Sloupce : A, B,.Z, AA, AB,. IU, IV (26
Vícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
VíceMQL4 COURSE. By Coders guru -8- Proměnné
MQL4 COURSE By Coders guru www.forex-tsd.com -8- Proměnné Vítejte v lekci proměnné mého MQL 4 kurzu. Doufám, že se vám předchozí lekce líbily a že jste připraveni na boj s proměnnými: Doporučuji, abyste
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íce