Slajdy k přednáškám předmětu. KIV/PPA1. Arnoštka Netrvalová

Podobné dokumenty
Algoritmizace. Cíle předmětu

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

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

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

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

Programování v Javě I. Leden 2008

Programování v Javě I. Únor 2009

Program. Organizace semináře Základní principy OOP Úvod do programovacího jazyka Java Distribuce

Algoritmizace a programování

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

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

3 KTE / ZPE Informační technologie

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

Martin Hejtmánek hejtmmar

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

11. Přehled prog. jazyků

KTE / ZPE Informační technologie

3. Základy programovacího jazyka Java

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Slajdy k přednáškám předmětu. KIV/PPA1. Arnoštka Netrvalová

Algoritmizace prostorových úloh

Úvod. Programovací paradigmata

Algoritmizace a programování

Algoritmizace- úvod. Ing. Tomáš Otáhal

Úvod do programovacích jazyků (Java)

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

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

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

Objektově orientované programování

1. Programování proti rozhraní

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programování v jazyce Java

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

Abstraktní datové typy: zásobník

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

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

Matematika v programovacích

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

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

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

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

Profilová část maturitní zkoušky 2017/2018

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Algoritmizace prostorových úloh

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

IB111 Programování a algoritmizace. Programovací jazyky

Soubor jako posloupnost bytů

Vývojové nástroje jazyka Java

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Seminář Java II p.1/43

Lekce 01 Úvod do algoritmizace

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

První počítače mechanické kalkulátory Nejstarší počítač: Abakus

Základy programování Zdrojový kód, dokumentace, týmová práce

1. Téma 12 - Textové soubory a výjimky

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

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

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

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

Historie výpočetní techniky. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1121_Histrorie výpočetní techniky_pwp

Zápis programu v jazyce C#

Program a životní cyklus programu

Překladač a jeho struktura

Zadání soutěžních úloh

Konečný automat. Jan Kybic.

Textové soubory. alg9 1

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Programování 1 - Java

7. Datové typy v Javě

10 Balíčky, grafické znázornění tříd, základy zapozdření

1. Historie počítacích strojů Předchůdci počítačů. 2. Vývoj mikropočítačů Osmibitové mikropočítače Šestnácti a dvaatřicetibitové počítače IBM

Programovací jazyk Pascal

Programovací jazyky Přehled a vývoj

1 Historie výpočetní techniky

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do informačních technologií

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Úvod SISD. Sekvenční výpočty SIMD MIMD

Skripty - úvod. Linux - skripty 2

Práce v textovém editoru

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

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

První kroky s METEL IEC IDE

Základy algoritmizace

Algoritmizace. Obrázek 1: Přeložení programu překladačem

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

1. Informace a informatika

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

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Struktura programu v době běhu

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

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

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Transkript:

Slajdy k přednáškám předmětu POČÍTAČE A PROGRAMOVÁNÍ 1 http://portal.zcu.cz KIV/PPA1 Arnoštka Netrvalová 2011 Slidy jsou určeny studentům předmětu Počítače a programování 1 vyučovaného katedrou informatiky a výpočetní techniky fakulty aplikovaných věd Západočeské univerzity v Plzni jako doplněk a podpora přednášek. Jakékoliv jiné využití těchto slidů podléhá souhlasu autorky. Základním studijním materiálem je záznam přednášek z předmětu Počítače a programování 1-2009 vytvořený Pavlem Heroutem, jemuž za možnost využití materiálu tímto děkuji. A. Netrvalová

Obsah 1. přednášky: O předmětu Trocha počítačové historie Počítač dnes Problém algoritmus program Java editace, překlad, spuštění Komentáře a dokumentace kódu Grafický nástroj DrawingTool Tato tematika je zpracována v Záznamy přednášek: str. 1-13, 31-33 Přednášky KIV/PPA1, A. Netrvalová, 2011 1. přednáška

O předmětu (podrobně portal.zcu.cz nutno přečíst) 1. Požadavky Absolvování + zisk bodů domácí úlohy (DÚ) písemný test (T) samostatná práce (SP) písemná zkouška (P) Něco se nepovedlo? stanoven min. a max. počet bodů z každé kategorie (DÚ, T, SP, on-line test ONL, P). možnost opravy bonusy (ACM úlohy, vybrané DÚ, SP rozšíření) Výsledná známka (součet bodů za celý semestr) 2. Kritéria hodnocení Kategorie max min Bonusy navíc Známka bodů DÚ 18 9 DÚ 6 1 90 T 25 7 SP 4 2 70 SP 7 5 ACM 10 3 50 ONL 10 0 20 4 <50 P 40 16 min 37!!! 100 37 Strana 3 (celkem 18)

3. Etika, opisování a práce na zakázku Poradit není totéž, co opsat! DÚ, - kontrola shodnosti validovaných řešení SP, ACM - obhajoba T, P, ONL - kontrola identity, dozor Kontrola počtu získaných bodů: práce pod dohledem vs. práce ostatní. Definition of Academic Dishonesty Academic dishonesty is any action or attempted action that may result in creating an unfair academic advantage for yourself or an unfair academic advantage or disadvantage for any other member or members of the academic community. University of California, Berkeley Více o etice: portal.zcu.cz Studijní materiály Strana 4 (celkem 18)

Trocha počítačové historie... 3000 př.n.l Abacus - mechanické sčítání a odčítání 1645 mechanická sčítačka Pascaline (Blaise Pascal) 1830 Charles Babbage návrh Difference Machine 1890 vynález děrného štítku Punched Cards 1939 vynález elektronkového počítacího stroje 1943 Bletchley Park - stroj k prolamování šifer 1946 1. počítač ENIAC (elektronkový, 1. generace) 1959 počítač (transistorový, 2. generace, miniaturizace) 1965 počítač (integrovaný obvod, 3. generace), NASA - program dobývání Měsíce 1975 první počítač pro domácnost - Altair 8800 (kit), TV, mg kazeta 1977 Apple II assembler 1981 IBM PC 1992 notebook... Společnost IBM PCD ThinkPad Zdroj: http://www.lancs.ac.uk/phy281 Strana 5 (celkem 18)

Počítač dnes Obrázky: http://www.lancs.ac.uk/phy281 PROGRAMY Tabulkový procesor Hry Náš program OPERAČNÍ SYSTÉM Internetový prohlížeč HARDWARE Paměti (vnitřní, vnější) 1bit = 0 nebo 1, 8bitů = byte [B] 1KB = 1024 bytů, 1MB = 1024 KB, 1GB =1024 MB,... Pozor: 1024 [K] není 1000 [k] Př.: 19,5 KB = 19,5 x 1024 = 19968 Bytů Strana 6 (celkem 18)

Struktura počítače z pohledu programátora - koncepce von Neumanna Vstup - klávesnice, soubor na HD, myš, scanner, mikrofon, CD,... Výstup obrazovka, soubor na HD, plotter, reproduktory, vypalovačka,... Vstup + výstup = periferní zařízení (I/O) Paměť vnitřní RAM Řadič (řídicí jednotka controller) ALJ aritmeticko-logická jednotka Strana 7 (celkem 18)

Problém algoritmus program 1. Problém Definice (Slovník spisovného jazyka českého) Věc k řešení, nerozřešená sporná otázka, otázka k rozhodnutí, nesnadná věc Definice (informatika): Každý problém P je určen uspořádanou trojicí (vst; vyst; fce), kde vst představuje množinu přípustných vstupů, vyst množinu očekávaných výstupů, fce: vst vyst funkci přiřazující každému vstupu očekávaný výstup. Příklad problému... nalézt cestu do hotelu, příprava těstovin, dostat se do autobusu č. 30, 2x výpis Ahoj,... 2. Algoritmus Pojem cca 1000 let starý - významný perský matematik Abú Abdallah Muhammad ibn Musa al-khwarizmi Algoritmus = obecný předpis sloužící pro řešení zadaného problému - posloupnost kroků doplněná jednoznačnými pravidly Strana 8 (celkem 18)

Vlastnosti: determinovanost rezultativnost hromadnost opakovatelnost efektivnost Přístupy k návrhu algoritmu: dekompozice a abstrakce problému metodologie shora dolů a zdola nahoru. Prostředky pro zápis algoritmů: vývojový diagram pseudojazyk programovací jazyk Příklad algoritmu - vypiš slovo Ahoj dvakrát 3. Program - zápis algoritmu některým z uvedených prostředků Algoritmus + data = program Programovací jazyk syntaxe (pravidla) a sémantika (význam) strojově orientované vs. vyšší programovací jazyky Metody implementace: interpretační, kompilační Strana 9 (celkem 18)

Interpret editace zdrojový kód+vst. data interpret výst.data Kompilátor editace zdrojový kód kompilátor cílový program + vst.data výstupní data Programovací jazyky Algol, Simula, Cobol, Fortran, Basic, Pascal, Delphi, C, C++, C#, LISP, Java, Python, Prolog, ADA, SQL,... pocitadlo = 1 dokud je pocitadlo 2 begin println(ahoj) zvys pocitadlo o 1 end public class Ahoj { public static void main(string[] args) { int pocitadlo = 1; while (pocitadlo <=2) { System.out.println("Ahoj"); pocitadlo = pocitadlo + 1; Ahoj Ahoj Strana 10 (celkem 18)

Java editace, překlad, spuštění nezávislost na platformě bytecode Java Interpret Java Interpret... Java Interpret Windows Linux Solaris Strana 11 (celkem 18)

Java James Gosling, Oak Java, 1995, Sun 2004 JDK 1.5 nové prvky jazyka 2006 JDK 1.6 verze aktuální pro PPA1 2011 JDK 1.7 nová verze Program jeden či více zdrojových souborů Jmeno.java překlad do vnitřní formy (bytekód) vznikne soubor Jmeno.class interpretaci provádí program java JVM (Java Virtual Machine) program využívá knihovny (Java Core API - Application Programming Interface) JVM + Java Core API = Java platforma program v Javě = třída(y) Vývojové prostředky JDK+ příkazová řádka SciTe Eclipse Instalace Javy dle návodů na portálu (vše ke stažení) nejprve instalace Javy pak Scite a Eclipse Další informace: http://java.sun.com http://www.scintilla.org http://www.eclipse.org/platform Strana 12 (celkem 18)

První program v Javě Zásady: program (zdrojový soubor) vytváříme v textovém editoru (Scite, NotePad, WordPad, PSPad), Eclipse název třídy začíná velkým písmenem, ve více slovném názvu začíná každé slovo velkým písmem, nepoužívá se podtržítko ani pomlčka, v názvu nesmí být mezera, třída tvoří blok {... ukládaný zdrojový soubor musí mít název shodný s názvem třídy a to včetně malých a velkých písmen uložení zdrojového souboru s příponou *.java překlad: javac Pozdrav.java spuštění: java Pozdrav public class Pozdrav { public static void main(string[] args) { System.out.println("Ahoj"); Poznámka (bude vysvětlováno i později): modifikátor public přístupová práva k třídě, metodě, atributu Metoda public static void main(string[] args) je veřejná statická metoda, jejíž hlavička musí být zapsána shodně s výše uvedeným příkladem! Parametrem metody (metoda má název s počátečním malým písmenem, vyjadřující děj) je pole řetězců pojmenované args (může být i jinak) představující argumenty (možnost zadání vstupních dat z příkazové řádky, např. jméno souboru). Metoda main() nevrací žádnou hodnotu, její návratový typ je vždy(!) void. Strana 13 (celkem 18)

Druhý program public class Ahoj { Poznámka: Příkaz System.out.println("Ahoj"); je voláním metody pro výpis na obrazovku, metoda pracuje se standardním výstupem (out), patří do třídy System, která je připojena automaticky (není třeba import). Výraz "Ahoj" představuje řetězec, což je text uzavřený v řetězových závorkách "" (toto je prázdný řetězec). Java a čeština public static void main(string[] args) { int pocitadlo = 1; while(pocitadlo <=2) { System.out.println("Ahoj"); pocitadlo = pocitadlo + 1; public class PozdravČesky { public static void main(string[] args) { System.out.println("Ahoj světe!"); System.out.println("Žluťoučký kůň příšerně úpěl ďábelské ódy."); Java češtinu umí, výstup je v implicitním kódování operačního systému, proto je nutno předchozí program upravit a sadu nastavit, jinak nebude všude správně fungovat! Češtinu nepoužívat ani v programech ani v komentářích! Strana 14 (celkem 18)

Komentáře a dokumentace - snazší orientace ve zdrojovém kódu Typy řádkový (do konce řádku) // text blokový (více řádek) /* text */ dokumentační /** dokumentace */ Co dokumentovat? nestandardní názvy proměnných nestandardní programové konstrukce metody třídy Vygenerování dokumentace program javadoc příkaz javadoc d mujdokument Jmeno.java založí adresář mujdokument s html soubory spustit Index.html Jméno autora (v dokumentaci - @author) a příkaz: javadoc author d mujdokument Jmeno.java Příkaz pro dokumentování více souborů: javadoc author d mujdokument *.java A pokud není užit modifikátor public: javadoc author private d mujdokument *.java Strana 15 (celkem 18)

Příklad dokumentace - pro již uvedený program Ahoj.java import java.io.*; // zde import netřeba, jen pro ukazku - kam dokumentaci umistit /** * Dva vypisy slova Ahoj * @author netrvalo * @version 1-26.07.2010 */ public class Ahoj { /** * Metoda main() - spousteni programu * @param args pole retezcu argumentu * @return nevraci zadnou hodnotu */ public static void main(string[] args) { /* */ int pocitadlo = 1; // reprezentuje pocet vypisu cislo 2 muzeme zamenit za 3 pak se vypis provede 3x while(pocitadlo <=2) { System.out.println("Ahoj"); pocitadlo = pocitadlo + 1; Strana 16 (celkem 18)

Grafický nástroj DrawingTool 1 vytvořen pro PPA2 pro kreslení fraktálů umí nakreslit čáru z bodu do bodu počátek grafického souřadného systému 0,0 je v levém horním rohu (pracuje se s pixely) soubor DrawingTool.java musí být uložen ve stejném adresáři s naší aplikací (DrawingTool je v podstatě samostatná třída, kterou náš program používá) aplikace musí mít na 1. řádku příkaz: import.java.awt.*; Příklad použití na cvičení Soubor DrawingTool.java a aplikace Kreslení.java překlad: javac *.java spuštění: java Kresleni Problém: // prelozi obe tridy Nakreslete úhlopříčku vedoucí z levého horního do pravého dolního rohu černou barvou na bílém pozadí v okně s rozměry 300x200. 1 2005 Ing. Roman Tesař (příklady studenti doktorského studia na KIV), pro předmět PPA2. Strana 17 (celkem 18)

import java.awt.*; public class Kresleni { public static void main(string[] args) { /* inicializace: sirka = 300, vyska = 200, barva pozadi = bila */ DrawingTool dt = new DrawingTool(300, 200, Color.WHITE, true); // nastaveni barvy cary na cernou dt.setcolor(color.black); /* nakresleni uhlopricky z leveho horniho rohu [0, 0] do praveho dolniho rohu [300-1, 200-1] */ dt.line(0, 0, 299, 199); Výstup: Strana 18 (celkem 18)