Základní pojmy. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 A0B36PR1 Programování 1

Podobné dokumenty
Část 1 Organizace předmětu. Základní pojmy. Část 2 Programování a výpočty. Část 3 Programovací jazyk Java

Základní pojmy. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 A0B36PR1 Programování 1

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

1. Úvod. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

11. Přehled prog. jazyků

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

Úvod do programování v jazyce Java

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Informace o předmětu. Úvod. Cíle předmětu. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Algoritmizace. Cíle předmětu

Úvod do programovacích jazyků (Java)

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Paměť počítače. alg2 1

Algoritmizace a programování

C2115 Praktický úvod do superpočítání

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

Úvod do programování v jazyce Java

Informace o předmětu. Úvod. Cíle předmětu. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Informace o předmětu

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

5 Přehled operátorů, příkazy, přetypování

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

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Úvod do programování - Java

Část I Organizace předmětu

Procedurální programování

Algoritmizace a programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Algoritmizace a programování

Programování 1 - Java

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

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

Procedurální programování

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

7. Datové typy v Javě

ALGORITMIZACE A PROGRAMOVÁNÍ

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Procedurální programování

Stanislav Vítek. Katedra radioelektroniky Fakulta elektrotechnická

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

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Program a životní cyklus programu

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

3 KTE / ZPE Informační technologie

Část I Organizace předmětu

Část I Organizace předmětu

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

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

Základy algoritmizace a programování

Základy programovaní 3 (Java)

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Algoritmizace a programování

Zápis programu v C a základní řídicí struktury

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základy algoritmizace a programování

Úvod do programování. Lekce 1

Programovací jazyk Pascal

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

8 Třídy, objekty, metody, předávání argumentů metod

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Matematika v programovacích

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

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

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

IB111 Úvod do programování skrze Python Přednáška 13

Část I. Část 1 Zápis programu v C. Přehled témat. Zápis programu v C a základní řídicí struktury. Program je recept

Zápis programu v C. Zápis programu v C Funkce Literály

Algoritmizace prostorových úloh

2 Postup při programování, úvod do programovacího jazyka Java

Mikroprocesorová technika (BMPT)

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

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Řídicí struktury. alg3 1

Základy matematiky pro FEK

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Výčtový typ strana 67

Algoritmy a datové struktury

Maturitní otázky z předmětu PROGRAMOVÁNÍ

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Informatika Datové formáty

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Úvod do programování - Java. Cvičení č.4

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Opakování programování

C# &.NET. Cvičení Mgr. Filip Krijt.

Programovací jazyk Java

Transkript:

Základní pojmy Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 1 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 1 / 59

Část 1 Organizace předmětu Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 2 / 59

Část 2 Programování a výpočty Výpočty a výpočetní prostředky Program a programovací jazyk Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 3 / 59

Část 3 Programovací jazyk Java Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 4 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Část I Organizace předmětu Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 5 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Obsah Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 6 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Základní zdroje a webové stránky A0B36PR1 - Programování 1 Webové stránky předmětu https://cw.fel.cvut.cz/wiki/courses/a0b36pr1/ Odevzdávání domácích úkolů https://cw.felk.cvut.cz/upload Přednášející: doc. Ing. Jan Faigl, Ph.D. Garant předmětu: doc. Ing. Ivan Jelínek, CSc. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 7 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Organizace a hodnocení předmětu A0B36PR1 Programování 1 Rozsah: 2p+2c; Zakončení: Z,ZK; Kredity: 6; Průběžná práce v semestru - domácí úkoly a testy Implementační a případně ústní zkouška Z zápočet, ZK zkouška Schopnost samostatné práce na počítačích v učebnách Docházka na cvičení a odevzdání domácích úloh Samostatná práce Supervize práce v počítačové učebně Pátek od 11:00 až 12:30 místnost T2:H1-131 (9.10.-6.11.2015) Pro osvojení si základních návyků používání počítačů v učebně a řešení programovacích úloh Alternativní absolvování předmětu pro zkušené Předmět A4B36ACM Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 8 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Programování 1 Cíle předmětu Prerekvizita Programování 2 a Algoritmizace Osvojit si pohled na výpočetní prostředky jako počítačový vědec a naučit se je efektivně používat Computer scientist Formulovat problém a jeho řešení počítačovým programem Získat povědomí jaké problémy lze výpočetně řešit Získat zkušenost s programováním Programování v jazyku Java získání vlastní zkušenosti cvičení a domácí úkoly Osvojit si schopnost číst, psát a porozumět malých programům Získat programovací návyky jak psát srozumitelné a přehledné zdrojové kódy; opakovaně použitelné programy. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 9 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Zdroje a literatura Přednášky slidy, poznámky a především vlastní zápisky Cvičení získání praktických dovedností řešením domácích úkolů a dalších úloh programovat, programovat, programovat On-line kurzy programování (v Java nebo jiném jazyku) http://www.algoritmy.net/article/21340/uvod-1 http://www.linuxsoft.cz/article.php?id_article=244 http://www.root.cz/serialy/programovaci-jazyk-java-a-jvm g programování java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 10 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Zdroje a literatura Přednášky slidy, poznámky a především vlastní zápisky Cvičení získání praktických dovedností řešením domácích úkolů a dalších úloh programovat, programovat, programovat Učebnice jazyka Java; Vydání: 5. rozšířené, Pavel Herout KOPP, 2010, ISBN 978-80-7232-398-2 Introduction to Java Programming, 9 th Edition, Y. Daniel Liang Prentice Hall, 2012 http://www.cs.armstrong.edu/liang/intro9e An Introduction to Object-Oriented Programming with Java, 5 th Edition, C. Thomas Wu, McGraw=Hill, 2009 http://it-ebooks.info/book/1908/a On-line kurzy programování (v Java nebo jiném jazyku) http://www.algoritmy.net/article/21340/uvod-1 http://www.linuxsoft.cz/article.php?id_article=244 http://www.root.cz/serialy/programovaci-jazyk-java-a-jvm g programování java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 10 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Zdroje a literatura Přednášky slidy, poznámky a především vlastní zápisky Cvičení získání praktických dovedností řešením domácích úkolů a dalších úloh programovat, programovat, programovat Učebnice jazyka Java; Vydání: 5. rozšířené, Pavel Herout KOPP, 2010, ISBN 978-80-7232-398-2 Introduction to Java Programming, 9 th Edition, Y. Daniel Liang Prentice Hall, 2012 http://www.cs.armstrong.edu/liang/intro9e An Introduction to Object-Oriented Programming with Java, 5 th Edition, C. Thomas Wu, McGraw=Hill, 2009 http://it-ebooks.info/book/1908/a On-line kurzy programování (v Java nebo jiném jazyku) http://www.algoritmy.net/article/21340/uvod-1 http://www.linuxsoft.cz/article.php?id_article=244 http://www.root.cz/serialy/programovaci-jazyk-java-a-jvm g programování java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 10 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Obsah Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 11 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Zimní semestr (ZS) akademického roku 2015/2016 Harmonogram akademického roku 2015/2016 http://www.fel.cvut.cz/cz/education/harmonogram1516.html Přednášky: Otevřená informatika (OI): středa, 16:15 17:45 Dejvice, místnost T2:D3-309 Kybernetika a robotika (KyR): čtvrtek, 15:15 17:00 Karlovo náměstí, místnost KN:E-107 Softwarové technologie a management (STM) 7B36ALG - Algoritmizace: čtvrtek, 15:15 17:00 https://cw.fel.cvut.cz/wiki/courses/a0b36pr1/lectures/harmonogram 14 výukových týdnů 28.10.2015 (středa) a 17.11.2015 (úterý) státní svátek 23.12.2015 (středa) zimní prázdniny 24.12.2015 (čtvrtek) a 25.12.2015 (pátek) státní svátek 11.1.2016 (pondělí) středeční rozvrh Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 12 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Obsah Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 13 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Cvičící Ing. Zdeněk Buk, Ph.D. Ing. Martin Mudroch, Ph.D. Ing. Ondřej Hrstka Ing. Jakub Mrva Ing. Martin Schaefer Ing. Petr Váňa Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 14 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Síťové domovské adresáře Počítačové laboratoře NFS v4 Přenos a synchronizace souborů USB media Síťové přenosy (ftp, ssh, unison, rsync) Owncloud https://owncloud.cesnet.cz služby sdružení CESNET Programování ve vývojovém prostředí NetBeans IDE 8.0 a Java verze 8. https://netbeans.org Použití libovolného jiného prostředí je možné, např. IntelliJ IDEA, Eclipse, https://download.cvut.cz či kombinace maven nebo starší ant s textovým editorem, například vim. Odevzdávání domácích úkolů Upload System https://cw.felk.cvut.cz/upload Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 15 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Domácí úkoly a další úlohy Samostatná práce s cílem osvojit si praktické zkušenosti Odevzdání domácích úkolů prostřednictvím Upload System https://cw.felk.cvut.cz/upload Nahrátí (upload) archivů s nezbytnými zdrojovými soubory Ověření správnosti implementace automatickými testy Detekce plagiátů Úkoly jsou jednoduché a navrhované tak, aby byly stihnutelné Klíčem k úspěšnému dokončení předmětu je samostatná práce a osvojení si technik a znalostí průběžná práce a řešení úkolů Pokud něčemu nerozumíte, ptejte se cvičících Pokud možno hned a neodkládejte na později Pokud vám přijde úkolů málo, ptejte se po dalších úlohách na procvičování. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 16 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Přehled domácích úkolů 10 domácích úkolů po 5 bodech (+1 testovací) 0. (týden 1) - (Lab00) První program s robotem Karel Testovací úkol za 0 bodů 1. (týden 1) - (Lab01) Robot Karel - cykly a vlastní příkaz 2. (týden 2) - (Lab02) Robot Karel - hledání objektu v bludišti 3. (týden 4) - (Lab04) Řídicí struktury - jednoduchá kalkulačka Kontrola stylu 4. (týden 5) - (Lab05) Zpracování vstupu a výstupu programu 5. (týden 6) - (Lab06) Výpočet statistik 6. (týden 7) - (Lab07) Automatické zpracování souboru hodnot 7. (týden 8) - (Lab08) Implementace kruhové fronty 8. (týden 9) - (Lab09) Řešení problému rekurzí 9. (týden 11) - (Lab11) Zatřiďování spojových seznamů 10. (týden 12) - (Lab12) Implementace prioritní fronty haldou Kontrola stylu Podmínkou zápočtu je úspěšné odevzdání všech domácích úkolů Bodová ztráta za pozdní odevzdání úkolu (týden) Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 17 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Kontrola znalostí testy 4 testy na cvičení každý se ziskem maximálně 5 bodů Implementační testy na počítačích v učebně 1. (týden 3) - TEST: implementační test (Karel) Příprava na zkoušku implementace programu ( 90 minut) 2. (týden 7) - TEST: písemný test (procedurální programování) programování na papír ( 20 minut) 3. (týden 9) - TEST: implementační test (procedurální prog.) 4. (týden 13) - TEST: implementační test (objekty) implementace programu ( 60 minut) implementace programu ( 60 minut) Uvedené časy jsou orientační a spíše odpovídají očekávané náročnosti testu. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 18 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Obsah Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 19 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Hodnocení předmětu Zdroj bodů Maximum bodů Přípustné minimum bodů Domácí úkoly (10 5 bodů) 50 30 Testy na cvičení (4 5 bodů) 20 10 Implementační zkouška 20 10 Ústní zkouška 20-10 Minimální počet bodů pro zápočet 40 Při rozhodnutí k ústní zkoušce je odečteno 10 bodů Pro úspěšné absolvování předmětu je nutné získat zápočet a vykonat zkoušku Získání zápočtu je podmíněno odevzdáním všech domácích úkolů a úspěšně složenými testy Podmínka nutná nikoliv však postačující Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 20 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Klasifikace předmětu Klasifikace Bodové rozmezí Hodnocení Slovní hodnocení A 90 100 1 výborně B 80 89 1,5 velmi dobře C 70 79 2 dobře D 60 69 2,5 uspokojivě E 50 59 3 dostatečně F <50 4 nedostatečně Minimální přípustné body: 30 (úkoly) + 10 (testy) + 10 (zkouška) = 50 bodů Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 21 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Obtížnost předmětu V předmětu nepředpokládáme znalosti z programování Předpokládáme však základní dovednosti ovládání počítače Principiální, nikoliv pouze memorované Přístup na středních školách je různý a tím také úroveň vstupních znalostí a dovedností Kurz je koncipovaný tak, aby zapsaní studenti kurz programování zvládli a získali odpovídající znalosti a dovednosti. S ohledem na různorodost je to však pro někoho rychlejší a pro někoho pomalejší. V průběhu semestru můžeme přednášky přizpůsobit konkrétním potřebám zpětná vazba je důležitá, nebojte se ozvat. Mohou proto nastat dva extrémní případy: A PR1 je příliš snadné Alternativní průchod B Počáteční nápor znalostí je značný Pomoc při startu a přechodu na jiný styl výuky na VŠ. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 22 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Případ A: Na cvičení se nudím. Zápis předmětu A4B36ACM - Seminář ACM z algoritmizace RNDr. Marko Genyk-Berezovskyj (berezovs@fel.cvut.cz) Podmínky a pravidla: Projít vstupním testem A4B36ACM Odevzdat všechny úkoly z PR1 do 10. týdne Napsat všechny testy z PR1 Jít na zkoušku z PR1 Benefity: Lze získat +4 kredity z ACM předmětu Rozšíření znalostí pokročilého programování Kromě testů není nutné chodit na cvičení z PR1 Úlohy lze odevzdal později (do 10. týdne) a všechny najednou Dá se zvládnout za odpoledne / den Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 23 / 59

Informace o předmětu Přednášky Cvičení a domácí úkoly Hodnocení předmětu a zkouška Případ B: Na cvičení nestíhám! Letní prázdninové soustředění http://cs.fel.cvut.cz/en/news/detail/1148 Úlohy https://cw.fel.cvut.cz/wiki/courses/a0b36pr1/ tutorials/bootcamp/start Konzultace u cvičícího Konzultace u přednášejícího Tutoriály na stránkách předmětu https://cw.fel.cvut.cz/wiki/courses/a0b36pr1 Prvních pět týdnů lze pracovat na řešení problému v T2:H1-131 (pátek od 11:00-12:30) s možností konzultovat řešené problémy s dozorem Není to náhrada cvičení ani seminární cvičení zaměřené na řešení domácích úloh. Spíše je to prostor pracovat na problémech a při pochybnostech interaktivně požádat o radu. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 24 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Část II Programování a výpočetní prostředky Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 25 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Obsah Výpočty a výpočetní prostředky Program a programovací jazyk Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 26 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Základní koncept programování Separating Programming Sheep from Non-Programming Goats http://blog.codinghorror.com/ separating-programming-sheep-from-non-programming-goats http://www.eis.mdx.ac.uk/research/phdarea/saeed/paper1.pdf Efektivní metody výuky programování se hledají již od dob prvních počítačů tj. přes více než 50 let Přesto se zdá, že je každý základní kurz programování obtížný a 30% až 60% studentů jej na poprvé nezvládne V PR1 je průchodnost výrazně vyšší. Základní koncept je pochopení principu přiřazení hodnoty proměnné Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 27 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Test pochopení principu přiřazení Zápis programu pro přiřazení hodnot do proměnných a a b a následné přiřazení proměnné b do a. Přiřazení hodnoty proměnné 1 2 int a = 10; int b = 20; 3 4 a = b; Jaké jsou hodnoty proměnných a a b? a. a = 20 b = 0 b. a = 20 b = 20 c. a = 0 b = 10 d. a = 10 b = 10 e. a = 30 b = 20 f. a = 30 b = 0 g. a = 10 b = 30 h. a = 0 b = 30 i. a = 10 b = 20 j. a = 20 b = 10 Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 28 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Skupiny počítačových uživatelů Uživatel Spouštěč programů Zadává vstup Čeká na výstup Čte výstup Píše, kliká Programátor Spouští programy Dává počítači příkazy Řadí je do posloupnosti Vytváří nové programy Kombinuje příkazy Relativně omezená množina vstupů Pouze to co je dovoleno Rozmanitější možnosti použití Omezen pouze limity počítače Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 29 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Způsob reprezentace znalostí Z hlediska výpočtu můžeme rozlišit dva základní typy znalostí: Způsob popisu problému Deklarativní Tvrzení popisující stav Axiomatické Umožňuje jednoduše ověřovat (testovat) pravdivost tvrzení Neposkytuje návod jak vypočíst hodnotu Příklad: x = y, y 2 = x, x 0, y 0 Imperativní Popis jak něco vypočítat Posloupnost výpočtu Test jak ovlivnit průběh výpočtu Příklad: 1. If y 2 x 2. Then return y 3. Else y y+ x y 2 Go to Step 1 Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 30 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Výpočetní prostředky (počítače) Jednoúčelové přístroje s předepsaným chováním program / posloupnost kroků (instrukcí) je vestavěná a neměnná Kalkulačka, pračka, první telefony Počítač s uloženým programem v paměti Posloupnost instrukcí čtena z paměti Flexibilita ve tvorbě posloupnosti Program lze libovolně měnit Architektura počítače se společnou pamětí pro data a program Von Neumannova architektura počítače John Louis von Neumann (1903 1957) Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 31 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Von Neumannova architektura ALU - Aritmeticko logická jednotka (Arithmetic Logic Unit) Základní matematické a logické instrukce PC - Čítač instrukcí (Program Counter) Ukazuje na místo v paměti s instrukcemi pro vykonání ŘADIČ PAMĚŤ ALU VSTUP VĂ STUP V drtivě většině případů je program posloupnost instrukcí zpracovávající jednu nebo dvě hodnoty (uložené v nějakém paměťovém místě) jako vstup a generování nějaké výstupní hodnoty, kterou ukládá někam do paměti nebo modifikuje hodnotu PC (podmíněné řízení běhu programu). Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 32 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Von Neumannova architektura ALU - Aritmeticko logická jednotka (Arithmetic Logic Unit) Základní matematické a logické instrukce PC - Čítač instrukcí (Program Counter) Ukazuje na místo v paměti s instrukcemi pro vykonání ŘADIČ PAMĚŤ ALU VSTUP VĂ STUP V drtivě většině případů je program posloupnost instrukcí zpracovávající jednu nebo dvě hodnoty (uložené v nějakém paměťovém místě) jako vstup a generování nějaké výstupní hodnoty, kterou ukládá někam do paměti nebo modifikuje hodnotu PC (podmíněné řízení běhu programu). Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 32 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Obsah Výpočty a výpočetní prostředky Program a programovací jazyk Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 33 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Program je recept Program je posloupnost kroků (výpočtů) popisující průběh výpočtu pro řešení problému (je to recept na řešení problému) Pro zápis receptu potřebujeme jazyk Způsob zápisu programu Jazyk definuje základní sadu primitiv (operací/příkazů), které můžeme použít pro zápis receptu S konečnou množinou primitiv dobrý programátor naprogramuje cokoliv. Co může být vyjádřeno. Touring Machine obecný model počítacího stroje Alan Turing, 1936 V předmětu A0B36PR1 používáme programovací jazyk Java Programování není o znalosti konkrétního programovacího jazyka, je to o způsobu uvažování a řešení problému. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 34 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Programovací jazyk Existuje množství programovacích jazyků Nelze říci, že jeden jazyk je lepší než druhý V podstatě jsou všechny ekvivalentní Můžeme, ale říci, že některé jazyky se hodí na konkrétní typy úlohy Základní dělení: Vysoko-úrovňové a nízko-úrovňové Liší se mohutností množiny primitiv Obecné a speciální (určené pro konkrétní aplikace) Interpretované a překládané Dle typu: imperativní (procedurální), funkcionální, logické (deklarativní), objektově-orientované Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 35 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Definice programovacího jazyka Syntax definice povolených výrazů a konstrukcí programu Plná kontrola a podpora vývojových prostředí Příklad popisu výrazu gramatikou v Backus-Naurově formě. <exp> ::= <exp> + <exp> <exp> * <exp> <exp> <number> <number> ::= <number> <digit> <digit> <digit> ::= 0 1 2 3 4 5 6 7 8 9 Statická sémantika definuje jak jsou konstrukty používány Částečná kontrola a podpora prostředí Příklad axiomatické specifikace: {P} S {Q}, P- precondition, Q-postcondition, S - konstrukce jazyka. Plná sémantika co program znamená a dělá, jeho smysluplnost Kontrola a ověření správnosti je kompletně v režii programátora. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 36 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Definice programovacího jazyka Syntax definice povolených výrazů a konstrukcí programu Plná kontrola a podpora vývojových prostředí Příklad popisu výrazu gramatikou v Backus-Naurově formě. <exp> ::= <exp> + <exp> <exp> * <exp> <exp> <number> <number> ::= <number> <digit> <digit> <digit> ::= 0 1 2 3 4 5 6 7 8 9 Statická sémantika definuje jak jsou konstrukty používány Částečná kontrola a podpora prostředí Příklad axiomatické specifikace: {P} S {Q}, P- precondition, Q-postcondition, S - konstrukce jazyka. Plná sémantika co program znamená a dělá, jeho smysluplnost Kontrola a ověření správnosti je kompletně v režii programátora. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 36 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Správnost programu Syntakticky i staticky sémanticky správný program neznamená, že dělá to co od něj požadujeme Správnost a smysluplnost programu je dána očekávaným chováním při řešení požadovaného problému V zásadě při spuštění programu mohou nastat tyto události: Program havaruje a dojde k chybovému výpisu Mrzuté, ale výpis (report) je dobrý start řešení chyby (bug) Program běží, ale nezastaví se a počítá v nekonečné smyčce. Zpravidla velmi obtížné detekovat a program ukončujeme po nějaké době. Program včas dává odpověď Je však dobré vědět, že odpověď je korektní. Správnost programu je plně v režii programátora, proto je důležité pro snadnější ověření správnosti, ladění a hledání chyby používat dobrý programovací styl. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 37 / 59

Výpočty a výpočetní prostředky Program a programovací jazyk Program a jeho zápis Program popis činnosti prováděné počítačem. Programovací jazyk notační systém pro zápis programu. Program zpravidla zapisujeme ve zdrojových (textových) souborech. Čitelnost programu: strojová efektivnost kódu lidská srozumitelnost, udržovatelnost, kódovací konvence, Vývojová prostředí (editor, debugger, nástroje pro správu verzí, analýza, testování softwarové inženýrství. Abstrakce Datová základní typy, struktury, modulární. Řídicí základní, strukturální, modulární. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 38 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Část III Úvod do programovacího jazyku Java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 39 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Obsah Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 40 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Java Obecný, vyšší, imperativní (procedurální) a objektově orientovaný jazyk Překládaný jazyk zaměřený na přenositelnost (portabilitu) zdrojových kódů i přeložených binárních souborů Historie: 1991 nejdříve jako jazyk Oak 1995 Java JDK 1 (první veřejná verze) 1998 Java 2 (ver. 1.2) 2002 Java 2 (ver. 1.4) a J2EE 2004 Java 2 (ver. 1.5) J2SE5.0 2011 Java 7 (vydává Oracle po akvizici Sun Microsystems) 2014 Java 8 (18. března, 2014) Součástí základního vývojového prostředí je bohatý soubor knihovních funkcí. Java je relativně jednoduchý jazyk (v základní verzi) a jeho efektivní používání je spíše o znalosti knihovních funkcí. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 41 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Zdrojové kódy, překlad a spuštění Java programu Zdrojové kódy jsou zapisovány v textových souborech s koncovkou.java Zdrojové soubory jsou překládány překladačem (javac) do binárního kódu ( byte code ) uložených v souborech s koncovkou.class Spuštění programu je realizováno virtuálním strojem, který poskytuje abstrakci nad operačním systémem počítače Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 42 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Zdrojové kódy, překlad a spuštění Java programu Zdrojové kódy jsou zapisovány v textových souborech s koncovkou.java Zdrojové soubory jsou překládány překladačem (javac) do binárního kódu ( byte code ) uložených v souborech s koncovkou.class Spuštění programu je realizováno virtuálním strojem, který poskytuje abstrakci nad operačním systémem počítače Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 42 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Java prostředí JDK, JRE, JVM JDK (Java Development Kit) základní vývojové prostředí, knihovny funkcí, překladač zdrojových souborů javac. Jeho součástí je i JRE. JRE (Java Runtime Environment) základ prostředí Java pro spouštění programů, obsahuje virtuální stroj java. JVM (Java Virtual Machine) virtuální stroj pro spouštění Java programů (java). JAR (Java ARchive) archív Java souborů, typicky množiny zkompilovaných.class (tříd) doplněných textovým popisem (Manifest), kterou třídu spustit. Slouží pro snadnější spouštění programů o více souborech. V podstatě ZIP archív Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 43 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Obsah Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 44 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Výpočet druhé odmocniny Příklad 1 double x = 13.0; 2 double y = 1.0; 3 int i = 1; 4 5 while(math.abs(y*y - x) > 1e-3) { 6 System.out.println("Step " + i + " y = " + y); 7 y = (y+(x/y))/2; 8 i += 1; 9 } 10 System.out.println("sqrt(" + x + ") found in " + i + " steps as " + y); Kompilace a spuštění programu javac Sqrt.java java Sqrt lec01/sqrt.java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 45 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Integrovaná vývojová prostředí (IDE) Nadstavba základních příkazů javac a java Integrují (mimo jiné) systém pro řízení překladu Např. ant nebo maven Zvýrazňují syntax, doplňují jména a provádějí základní kontrolu kódu Mezi nejznámější patří Netbeans, Eclipse a IntelliJ IDEA Na cvičení je používáno prostředí Netbeans Import kódů do projektu štábní kultura Adresářová struktura projektu https://download.cvut.cz Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 46 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Obsah Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 47 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Primitivní typy Vyhrazují v paměti místo pro uložení číselné hodnoty Velikost alokovaného prostoru odpovídá možnému rozsahu a přesnosti reprezentace čísla Celočíselné typy reprezentují čísla v definovaném rozsahu Neceločíselné typy reprezentují reálná, racionální a iracionální čísla. Aproximace do pevného počtu bitů Mantisa + exponent s e e... M M... M, kde s - znaménkový bit, M - mantisa, e - exponent, s M B e E, B - báze, E - konstanta. double - 64 bitů podle IEEE 754, ±4.9E-324 - ±1.7E+308. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 48 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Primitivní typy Vyhrazují v paměti místo pro uložení číselné hodnoty Velikost alokovaného prostoru odpovídá možnému rozsahu a přesnosti reprezentace čísla Celočíselné typy reprezentují čísla v definovaném rozsahu Neceločíselné typy reprezentují reálná, racionální a iracionální čísla. Aproximace do pevného počtu bitů Mantisa + exponent s e e... M M... M, kde s - znaménkový bit, M - mantisa, e - exponent, s M B e E, B - báze, E - konstanta. double - 64 bitů podle IEEE 754, ±4.9E-324 - ±1.7E+308. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 48 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Možnosti zvýšení přesnosti Reprezentace racionálních čísel - podíl dvou celočíselných hodnot, např. Homogenní souřadnice. Libovolná přesnost - speciální knihovny, např. volné paměti. gmp až do výše souřadnice x,y - 7511164176768 346868669952 3739567104 2008.57, 92.76 Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 49 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Základní typy v Javě Celočíselné typy byte 8 bitů (1 byte), -128 až 127 short 16 bitů (2 byte), -32 768 až 32 767 int 32 bitů (4 bytes), -2 31 až 2 31-1 základní celočíselný typ long 64-bitů (8 bajtů), -2 63 až 2 63-1 Neceločíselné typy float 32-bit IEEE 754 double 64-bit IEEE 754 Logický a znakový typ boolean true / false char jeden 16-bit Unicode znak http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 50 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Zápis číselné hodnoty v programu (literál) Základní zápis je pro typ int a double int deci = 173; int hexi = 0xad; int bini = 0b10101101; double d1 = 105.67; double d2 = 1.0567e2; lec01/literals1.java Zápis hodnoty typu long a float je nutné specifikovat long l1 = 17l; //specifikujeme znakem l long l2 = 13313514L; //nebo znakem L float f1 = 105.67f; //nutne uvest f nebo F float f2 = 1.0567e2f; //jinak pri kompilaci chyba lec01/literals2.java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 51 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Přesnost výpočtu 1/2 Ztráta přesnosti při aritmetických operacích. Příklad sčítání dvou čísel 1 public static void main(string[] args) { 2 double a = 1E+10; 3 double b = 1E-10; 4 System.out.println("a : " + a); 5 System.out.println("b : " + b); 6 System.out.println("a+b: " + (a+b)); 7 } 8 9 javac Sum.javac 10 java Sum 11 a : 1.0E10 12 b : 1.0E-10 13 a+b: 1.0E10 lec01/sum.java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 52 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Příklad dělení dvou čísel Přesnost výpočtu 2/2 1 public static void main(string[] args) { 2 final int number = 100; 3 double dv = 0.0; 4 float fv = (float)0.0; 5 for (int i = 0; i < number; i++) { 6 dv += 1.0 / 10.0; 7 fv += 1.0 / 10.0; 8 } 9 System.out.println("double value: " + dv); 10 System.out.println("float value: " + fv); 11 } 12 13 javac Division.java 14 java Division 15 double value: 9.99999999999998 16 float value: 10.000002 lec01/division.java Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 53 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Přesnost výpočtu - strojová přesnost Strojová přesnost ɛ m - nejmenší desetinné číslo, které přičtením k 1.0 dává výsledek různý od 1, pro v < ɛ m, platí v + 1.0 == 1.0. Symbol == odpovídá porovnání dvou hodnot v Javě (test na ekvivalenci). Zaokrouhlovací chyba - nejméně ɛ m. Přesnost výpočtu - aditivní chyba roste s počtem operací v řádu N ɛm. Často se však kumuluje preferabilně v jedno směru v řádu N ɛ m. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 54 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Zdroje a typy chyby Chyby matematického modelu - matematická aproximace fyzikální situace. Chyby vstupních dat. Chyby numerické metody. Chyby zaokrouhlovací. Absolutní chyba aproximace E(x) = ˆx x, ˆx přesná hodnota, x aproximace. Relativní chyba RE(x) = ˆx x x. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 55 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Podmíněnost numerických úloh Podmíněnost úlohy C p = Dobře podmíněná úloha C p 1. relativní chyba výstupních údajů relativní chyba vstupních údajů Výpočet je dobře podmíněný, je-li málo citlivý na poruchy ve vstupních datech. Numericky stabilní výpočet - vliv zaokrouhlovacích chyb na výsledek je malý. Výpočet je stabilní, je-li dobře podmíněný a numericky stabilní. Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 56 / 59

Programovací jazyk Java Příklad jednoduchého programu Základní datové typy Příklady chyb Ariane 5-4.6.1996 40 sekund po startu explodovala. Datová konverze z 64-bitového desetinné reprezentace na 16-ti bitový znaménkový integer. http://www.esa.int/esacp/pr_33_1996_p_en.html Systém Patriot - 25.2.1991 Systémový čas v desetinách sekundy, převod na sekundy realizován dělením 10, registry pouze 24 bitů. http://www.ima.umn.edu/~arnold/disasters/patriot.html http://www5.informatik.tu-muenchen.de/~huckle/bugse.html Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 57 / 59

Diskutovaná témata Shrnutí přednášky Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 58 / 59

Diskutovaná témata Diskutovaná témata Informace o předmětu Programování, reprezentace znalostí, program a programovací jazyk Úvod do jazyku Java Základní datové typy a přesnost výpočtu Příště: Výrazy, operátory a řídicí konstrukce Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 59 / 59

Diskutovaná témata Diskutovaná témata Informace o předmětu Programování, reprezentace znalostí, program a programovací jazyk Úvod do jazyku Java Základní datové typy a přesnost výpočtu Příště: Výrazy, operátory a řídicí konstrukce Jan Faigl, 2015 A0B36PR1 Přednáška 1: Základní pojmy 59 / 59