Algoritmizace Cíl předmětu - naučit se sestavovat algorimy řešení základních problémů a zapisovat je v jazyku Java. Jádrem předmětu jsou data, typy, výrazy.

Slides:



Advertisements
Podobné prezentace
NOVÁ MATURITA Stručná informace o průběhu a přípravě.
Advertisements

Gymnázium, Hranice, Zborovská 293 Maturitní zkouška 2010.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Funkce Připomeňme si program pro výpočet faktoriálu:
VŠB – Technická univerzita Ostrava
Metody (funkce, procedury)
1/12 ALGO – Algoritmizace 5. cvičení 1.ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
ALGO – Algoritmizace 1. cvičení
Fakulta stavební Vysoké školy báňské – Technické univerzity Ostrava 17. listopadu 15, Ostrava – Poruba.
Základy informatiky Ing. Roman Danel, Ph.D.
VŠB – Technická univerzita Ostrava VŠB – Technická univerzita Ostrava Hezký den Hezký den.
Alg51 Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy –zadaný problém rozložíme na podproblémy –pro řešení podproblémů.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
ŠVP na gymnáziích: od mírné skepse k chuti pokračovat Zkušenosti z projektu Pilot G/GP Lucie Slejšková Výzkumný ústav pedagogický v Praze.
Business Intelligence
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
ALGORITMIZACE ÚVODNÍ PŘEDNÁŠKA 2 SLOVO ALGORITMUS VZNIKLO ZE JMÉNA ARABSKÉHO MATEMATIKA AL-KHWARIZMIHO, KTERÝ V DEVÁTÉM STOLETÍ SEPSAL ROZSÁHLOU KOLEKCI.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
Algoritmizace a programování
Největší společný dělitel – teorie a procvičování
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Jazyk vývojových diagramů
Tvorba číselných výrazů
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Maturita 2015.
13AMP 8. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled RT jazyky RT jazyky Modula Modula Modula II Modula II.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Akademický rok 2011/12 1. ročník – LS 1. cvičení
44.1 Písemné násobení jednociferným činitelem
Informatika I 2. přednáška
Maturita 2011? Společná část Společná část 2 zkoušky 2 zkoušky Profilová část Profilová část 3 zkoušky 3 zkoušky.
Cvičná hodnotící prezentace Hodnocení vybraného projektu 1.
Úvod. školní: příprava na předmět Databázové systémy praktický: webové aplikace databázové systémy základy vývoje webových aplikací od návrhu databáze.
Programování a algoritmizace 1
PHP – Základy programování
Jazyk vývojových diagramů
6. cvičení Polymorfismus
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
Úvodní setkání Ing. Zuzana Khendriche Trhlínová, Ph.D.
KIV/PPA2 1.cvičení Cvičící: Pavel Bžoch.
Přednost početních operací
NOVÁ MATURITA Stručná informace o jejím průběhu a přípravě.
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Algoritmizace a programování Úvod do Delphi - 04 Mgr. Josef Nožička IKT Algoritmizace a programování
doc. RNDr. Zdeněk Botek, CSc.
ALGO – Algoritmizace 4. cvičení 1.ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Úvodní informace Informatika pro ekonomy II ZS 2011/2012.
PŘÍKAZ while úkol 1_42.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
doc. RNDr. Zdeněk Botek, CSc.
Úvodní informace Informatika pro ekonomy II LS 2007/2008.
Programování - úvod A0B36PRI - PROGRAMOVÁNÍ Jazyk JAVA
Řízení běhu programu, řídící struktury A0B36PRI - PROGRAMOVÁNÍ
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Programování v MATLABu © Leonard Walletzký, ESF MU, 2000.
Počítače a programování 2
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Algoritmizace Cíl předmětu - naučit se sestavovat algorimy řešení základních problémů a zapisovat je v jazyku Java. Jádrem předmětu jsou data, typy, výrazy a příkazy demonstrované v programovacím jazyce Java, základy programovacích technik a datové abstrakce. Předmět se nezabývá hardwarem, telekomunikacemi ani jinými jazyky či asemblery. Algoritmizace je „prerekvizita“ následujících předmětů!! Navštivte weby našich kateder podílejících se na tomto programu Katedra kybernetiky Katedra počítačů Katedra počítačové grafiky a interakce Katedra ekonomiky, manažerství a humanitních věd Organizace předmětu přednášky (účast nepovinná, ale doporučená) cvičení jsou povinná (dvě absence jsou tolerovány) Stránky předmětu s materiály k přednáškám a cvičením: http://cw.felk.cvut.cz/doku.php/courses/y36alg/start Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Zakončení kurzu Zakončení: zápočet + zkouška Klasifikace na základě bodového zisku (max. 100 b): ústní zkouška 10 b (-5b) písemný zkouškový test 25 b (min. 10 b) test u počítače na cvičeních 30 b (min. 15 b) aktivita na cvičeních a DÚ 20 b (min. 10 b) semestrální práce 20 b (min. 10 b) Hodnocení body číselně slovní A 100-90 1 výborně B 89-80 1,5 velmi dobře C 79-70 2 dobře D 69-60 2,5 uspokojivě E 59-50 3 dostatečně F méně než 50 bodů 4 nedostatečně (op.) Algoritmizace (Y36ALG), Šumperk - 1. přednáška ALG

Algoritmizace - Témata přednášek Algoritmy, programy, programovací jazyky Proměnné a výrazy Řídicí struktury Funkce Rozklad problému na podproblémy Pole Třídy a objekty I Soubory, textové soubory Složitost algoritmů Třídy a objekty II Spojové struktury Datové abstrakce Rezerva Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Témata cvičení a harmonogram testů Seznámení s prostředím NetBeans Proměnné, výrazy, přiřazení, vstup a výstup Větvení Cykly Funkce + zadání semestrální práce Pole Objekty Rekurze Soubory Složitost algoritmů + TEST Třídy + odevzdání semestrální práce Datové struktury + prezentace semestrálních prací Prezentace semestrálních prací + zápočet Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Změny ve výuce Svátky: 28. 9. (PO), 28. 10. (ST) a 17. 11. (ÚT) Přesun výuky: 20. 11. (PÁ), výuka jako PO téhož týdne Rektorské volno: 14. 10. (ST) od 14,00 hod. Děkanský den: 16. 11. (PO) Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Zdroje pro studium Základní příručky: Herout, P.: Učebnice jazyka JAVA, Kopp, 2000 Virius, M.: Java pro zelenáče, Neocortex, 2001 Další zdroje Eckel, B.: Myslíme v jazyku Java, Grada, 2000, I + II Chapman, S., J.: Začínáme programovat v jazyce JAVA, Computer Press, 2001 Pitner,T.: Java, začínáme programovat, Grada, 2002 Hawlitzek, JAVA2, příručka programátora, Grada, 2000 Shildt, H.: Java 2, Příručka programátora, Softpress, 2001 Herout, P.: JAVA, grafické uživatelské prostředí a čeština, Kopp, 2001 Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy: Motivační příklad Úloha: najděte největšího společného dělitele čísel 6 a 15 Obecný postup: Popišme postup tak, aby byl použitelný pro dvě libovolná přirozená čísla, nejen pro 6 a 15: označme zadaná čísla x a y a menší z nich d není-li d společným dělitelem x a y, pak zmenšíme d o 1, test opakujeme a skončíme, až d bude společným dělitelem x a y Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy: Motivační příklad Úloha: najděte největšího společného dělitele čísel 6 a 15 Obecný postup: Popišme postup tak, aby byl použitelný pro dvě libovolná přirozená čísla, nejen pro 6 a 15: označme zadaná čísla x a y a menší z nich d není-li d společným dělitelem x a y, pak zmenšíme d o 1, test opakujeme a skončíme, až d bude společným dělitelem x a y Přesnější popis: Vstup: přirozená čísla x a y Výstup: nsd(x,y) Metoda: 1. Je-li x<y, pak d má hodnotu x, jinak d má hodnotu y 2. Opakuj krok 3, pokud d není dělitelem x nebo d není dělitelem y 3. Zmenši d o 1 4. Výsledkem je hodnota d Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy: Motivační příklad Proveďme výpočet podle předchozího algoritmu pro čísla 6 a 15. Poznámka: Symboly x, y a d použité v algoritmu jsou proměnné (paměťová místa), ve kterých je uložena nějaká hodnota, která se může v průběhu výpočtu měnit. krok x y d poznámka 6 15 ? zadání vstupních dat 1 6 15 6 2 6 15 6 d není dělitelem y, proveď krok 3 3 6 15 5 2 6 15 5 d není dělitelem x, proveď krok 3 3 6 15 4 2 6 15 4 d není dělitelem x ani y, proveď krok 3 3 6 15 3 2 6 15 3 d je dělitelem x i y, proveď krok 4 4 6 15 3 výsledek je hodnota 3 Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy Algoritmus - postup pro řešení určité třídy úloh, který je tvořen seznamem jednoznačně definovaných příkazů a zaručuje, že pro každou přípustnou kombinaci vstupních dat se po provedení konečného počtu kroků dospěje k požadovaným výsledkům Vlastnosti algoritmu: hromadnost měnitelná vstupní data determinovanost každý krok je jednoznačně definován konečnost a resultativnost pro přípustná vstupní data se po provedení konečného počtu kroků dojde k požadovaným výsledkům Algoritmus – syntetický model postupu řešení obecných úloh Prostředky pro zápis algoritmu přirozený jazyk, vývojové diagramy, struktogramy, pseudojazyk, programovací jazyk Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy Vývojový diagram nsd(x, y) ano ne x < y d := x d := y ne d není dělitelem x nebo d není dělitelem y ano d := d - 1 nsd := d Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Algoritmy Zápis algoritmu v pseudokódu nsd(x,y): if x<y then d:=x else d:=y; while d „není dělitelem“ x or d „není dělitelem“ y do d:=d-1; nsd:=d; Zápis algoritmu v programovacím jazyku int nsd(int x, int y) { int d; if (x<y) d=x; else d=y; while (x%d!=0 | y%d!=0) d--; return d; } Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Programy a programovací jazyky Program je předpis (zápis algoritmu) pro provedení určitých akcí počítačem zapsaný v programovacím jazyku. Programovací jazyky strojově orientované strojový jazyk = jazyk fyzického procesoru asembler (jazyk symbolických adres) vyšší jazyky imperativní (příkazové, procedurální) neimperativní (např. funkcionální) Hlavní rysy imperativních jazyků (např. C, C++, Java, Pascal, Basic, ...) zpracovávané údaje mají formu datových objektů různých typů, které jsou v programu reprezentovány pomocí proměnných resp. konstant program obsahuje deklarace a příkazy deklarace definují význam jmen (identifikátorů) příkazy předepisují akce s dat. objekty nebo způsob řízení výpočtu Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Vlastnosti programovacích jazyků Syntaxe - souhrn pravidel udávajících přípustné tvary dílčích konstrukcí a celého programu. syntaktické diagramy různé formy Backus-Naurovy formy Sémantika - udává význam jednotlivých konstrukcí. obvykle popsána slovně Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Syntaktické diagramy Příklad: identifikátor je posloupnost písmen a číslic začínající písmenem Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Rozšířená Backus-Naurova forma Rozšířená Backus-Naurova forma – EBNF Příklad: identifikátor identifikátor = písmeno {písmeno | číslice} písmeno = 'A' | 'B' | 'C' | 'D' | ... | 'X' | 'Y' | 'Z' číslice = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '9' Neterminály: identifikátor, písmeno, číslice Terminály: ‘A’, ‘B’, ... Význam metasymbolů: {x} ... žádný nebo několik výskytů x x | y ... x nebo y pro zájemce Algoritmizace (Y36ALG), Šumperk - 1. přednáška ALG

Implementace programovacích jazyků Interpretační metoda Kompilační metoda Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Kompilační metoda - jazyk C Program pro MS Windows OS MS Windows Překlad v MS Windows Zdrojový kód v jazyku C Program pro GNU Linux OS GNU Linux Překlad v GNU Linuxu Překlad v Solarisu Program pro Solaris OS Solaris Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Interpretační metoda - jazyk Java Zdrojový kód v jazyku Java soubor .java JRE OS MS Windows Překlad (javac) JRE OS GNU Linux Bytecode soubor .class JRE OS Solaris Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Fáze řešení algoritmické úlohy Zadání. Rozbor, analýza – specifikace vstupů, výstupů. Algoritmus – pseudokód, vývojový diagram. Testování. Kódování. Laděné – odstranění chyb v programu. Optimalizace kódu – paměťová a časová efektivita. Dokumentace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Úvod do jazyka Java Pro prezentaci, návrh a ověřování algoritmů použijeme jazyk Java Proč? jde o vyšší, obecně použitelný programovací jazyk s vysokým stupněm zabezpečení je objektově orientovaný, umožňuje však i klasické procedurální programování vytvořené programy jsou zcela portabilní (program vytvořený pod Windows bez problémů funguje pod Unixem a naopak) syntaxe výrazů a příkazů vychází z jazyka C; přechod z Javy na C nebo C++ je tedy jednodušší, než přechod z Pascalu základní implementaci (JDK – Java Development Kit) firmy Sun lze pro prostředí Windows i Unix stáhnout ze stránek firmy Sun: http://java.sun.com my používáme vývojové prostředí NetBeans 6.7, fy. Sun Microsystem. http://www.netbeans.org/ Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Úvod do jazyka Java Jazyk Java je implementován interpretačním způsobem program je tvořen jedním nebo několika zdrojovými soubory s příponou .java: Program.java zdrojové soubory se přeloží překladačem(*) javac do vnitřní formy (byte code, bajt-kód) s příponou .class Program.java > javac > Program.class interpretaci vnitřní formy provede program java (v prostředí JVM – Java Virtual Machine) a provede výpočet Program.class > java > „výpočet“ Poznámka: (*) v terminologii firmy Sun to je kompilátor. Program obvykle využívá řadu knihoven, které je třeba mít k dispozici jak při překladu, tak při interpretaci!!! Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Zpracování programu v jazyku JAVA Zdrojový soubor: Program.java public class Program { public static void main(String[] args) { System.out.println(“Nazdar, toto je prvni program”); } Spuštění překladače do byte-code: javac Program.java Vznikne: Program.class Spuštění interpretru: java Program Výstup programu: Nazdar, toto je prvni program Algoritmizace (Y36ALG), Šumperk - 1. přednáška

První program v jazyku Java Nejjednodušší zdrojový program - jeden soubor deklarace veřejné třídy (public class), hlavní funkce main (veřejná statická metoda, public static method) Soubor musí mít jméno shodné se jménem veřejné třídy a příponu .java Hlavička funkce main (): klíčová slova public static void (void - procedura) (String[] args) specifikace vstupních parametrů Konvence: jména tříd se píší s prvním velkým písmenem Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Úvod do jazyka Java, vývojový systém Programy v jazyku Java budeme vytvářet pomocí vývojového prostředí NetBeans, který proces přípravy programu, jeho překlad a provedení zjednodušuje. Se systémem NetBeans se seznámíte na 1. cvičení v počítačové učebně Algoritmizace (Y36ALG), Šumperk - 1. přednáška

Příklady k přednáškám První program a všechny další, které budou prezentovány na přednáškách, jsou v adresáři Algp, kde p je číslo přednášky. Struktura adresáře pro příklad 1.přednášky (zdroj. programy k tématu alg1): Podadresáře alg1, alg2 atd. představují tzv. balíky (packages) Každý zdrojový soubor umístěný v balíku začíná specifikací balíku package alg1; public class PrvniProgram { public static void main(String[] args) { System.out.println("Nazdar, toto je prvni program"); } třída zdroj Algoritmizace (Y36ALG), Šumperk - 1. přednáška ALG

Jména a konvence package (balíček) - jen malá písmena, i několik jmen oddělených tečkou, např: alg1, java.util class (třída), abstraktní třída, jejich konstruktory, rozhraní - začínají velkým písmenem, např: String, MyFirstClass, Serializable, Comparable Výjimky by měly mít sufix Exception, např: MySpecialException method (metoda) - začínají malým písmenem, další slovo začíná velkým písmenem, např: setBorder, isEmpty, getNumber variable (proměnná) - začínají vždy malým písmenem, další slovo začíná velkým písmenem, např: diskriminant, totalCount final variable (konstanta) a návěští - jen velká písmena, jednotlivá slova oddělena podtržítkem, např. MAX_COUNT, RED Algoritmizace (Y36ALG), Šumperk - 1. přednáška ALG