Algoritmizace a programování



Podobné dokumenty
Algoritmizace a programování

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

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

Algoritmizace a programování

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Algoritmizace a programování

Sada 1 - Základy programování

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

Úvod do programování. Lekce 1

Základy algoritmizace a programování

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

Úvod do programovacích jazyků (Java)

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Zápis programu v jazyce C#

NPRG030 Programování I, 2018/19 1 / :25:37

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

7. Datové typy v Javě

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

6 Příkazy řízení toku

Úvod do programovacích jazyků (Java)

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

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Racionální čísla, operátory, výrazy, knihovní funkce

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

1. Téma 03 - Rozhodování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

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

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

Programovací jazyk Pascal

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

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

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

Racionální čísla, operátory, výrazy, knihovní funkce

KTE / ZPE Informační technologie

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

Základy algoritmizace a programování

ZÁPOČTOVÁ PRÁCE z UIR

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

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

LabView jako programovací jazyk II

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

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

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

Čísla a číselné soustavy.

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

6. Příkazy a řídící struktury v Javě

Algoritmizace a programování

Datové typy strana 29

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

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

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

Algoritmizace prostorových úloh

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

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

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

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Algoritmizace a programování. Terminálový vstup a výstup

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

15. Projekt Kalkulačka

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

MS EXCEL_vybrané matematické funkce

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

Datové typy a jejich reprezentace v počítači.

Informatika Datové formáty

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

FUNKCE 2. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Objektově orientované programování

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

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

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

Iterační výpočty Projekt č. 2

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

Tato tematika je zpracována v Záznamy přednášek: str

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

LEKCE 6. Operátory. V této lekci najdete:

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

2. Základy jazyka. Proměnné. Základy jazyka

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Jazyk C# a platforma.net

Inovace bakalářského studijního oboru Aplikovaná chemie

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

typová konverze typová inference

Formátové specifikace formátovací řetězce

Architektury počítačů

Řídicí struktury. alg3 1

GeoGebra známá i neznámá (pokročilí)

Proměnné a datové typy

Seminář Java II p.1/43

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Transkript:

Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových typů Verze pro akademický rok 2012/2013 1

Terminálový vstup Problematika načítání z terminálového vstupu Po potvrzení zadávaných hodnot stiskem <ENTER> je vstupní textový řetězec uložen do vstupního bufferu Při načítání jsou postupně zpracovávány znaky ze vstupního bufferu Metody nextint(), nextfloat(), next() Ignorují všechny počáteční bílé znaky Čtení textového řetězce do dalšího prvního bílého znaku Konverze textového řetězce na příslušnou hodnotu Metoda nextline() Čte textový řetězec do konce řádku 2

Přiřazení Hodnotu proměnné lze použít ve výrazu pouze v případě, že jí předtím byla přiřazena hodnota Přiřazení hodnoty Operace přiřazení Načtení hodnoty (z proudu z terminálového vstupu, ze souboru atp.) Použití předchozí hodnoty proměnné je skryto i v následujících výrazech Inkrementace i++ tj. v podstatě i = i + 1 Přiřazení s *= x s = s * x 3

Aritmetika celých čísel Celočíselný typ interval celočíselných hodnot zobrazitelných daným typem Každá hodnota příslušného typu v paměti počítače zobrazena přesně Porovnání hodnot Aritmetické operace může docházet k přetečení Aritmetické operace sčítání, odčítání, násobení, dělení, modulo pokud je jeden operand typu long, výsledek typ long, jinak je výsledek typu int 4

Aritmetika reálných čísel Reálný typ interval reálných hodnot zobrazitelných daným typem Hodnota příslušného reálného typu v paměti počítače nemusí být zobrazena přesně garantovaný počet platných číslic Mantisa, exponent omezení mantisy zaokrouhlování, chyby Vytvoření hodnoty reálného typu konverze do formátu definovaného standardem Problém práce s reálnými čísly je nepřesnost Aritmetické operace Nelze se spoléhat na to, že výsledkem dvou reálných výrazů představujících stejnou hodnotu budou dvě totožná čísla Porovnání hodnot Např. testování rovnosti testujeme, zda daná čísla jsou skoro stejná s určitou přesností Test if (x == y) { } Můžeme nahradit testem if (Math.abs(x - y) < skoronula) { } 5

Logické příkazy Příkazy jazyka Java mohou být libovolně vnořené Je třeba dávat pozor na vnořené logické příkazy v případě střídání úplných a neúplných podmínek (if-else a if příkazy) Větev else se vždy přiřazuje k nejbližšímu možnému if skutečná interpretace by potom mohla jiná než jak zamýšlel programátor Interpretaci shodnou se záměrem programátora vynutíme v případě potřeby použitím bloku příkazů v jednotlivých větvích logických příkazů Je dobrým zvykem používat bloky příkazů ve všech větvích (nebo na místě příkazu těla cyklu) a to i v případě, že na daném místě zapisujeme pouze jeden jediný příkaz if (<podminka1>) if (<podminka2>) <prikaz1>; else <prikaz2>; if (<podminka1>){ if (<podminka2>) <prikaz1>; } else <prikaz2>; 6

Příkazy cyklu Vzájemné porovnání příkazů cyklu Všechny cykly jazyka Java jsou ukončované podmínkou Tělo cyklu do-while se provede vždy alespoň jednou, podmínka je testována po provedení kódu těla cyklu Příkaz for vzhledem ke své inicializační a inkrementační části umožňuje v některých případech kompaktnější zápis Cykly jsou navzájem zaměnitelné tedy libovolný příkaz cyklu můžeme přepsat pomocí libovolného jiného příkazu cyklu Při konstrukci cyklů je nutné se vyvarovat vytvoření nežádoucího nekonečného cyklu 7

Psaní kódu Pojmenování identifikátory proměnných, tříd, metod, aplikace a podobně volíme tak, aby byl program dobře čitelný Při zápisu identifikátorů dodržovat nepsaná pravidla pro použití malých a velkých písmen v identifikátorech Deklarace proměnných používaných v algoritmu umístit na začátek metody oddělit prázdným řádkem od vlastního kódu Deklarace pomocných proměnných, jejichž platnost je omezena pouze na jediný blok (například řídicí proměnné zavedené pro zajištění příslušného počtu opakování cyklu for) deklarujeme zpravidla na začátku příslušného bloku (inicializační část cyklu for) Dodržovat nepsaná pravidla formátování kódu je vhodné využít automatické formátování nabízené používaným vývojovým prostředím (plovoucí menu po stisku pravého tlačítka myši v okně editoru volba format ) 8

Přehled některých tříd Jazyk Java objektový Třída základní stavební prvek programu v jazyce Java Třída ~ obecný typ chceme-li použít nástroje, které jsou v dané třídě k dispozici je nutné deklarovat proměnnou příslušného typu třídy a vytvořit instanci třídy pro tuto instanci potom máme k dispozici vše, co třída obsahuje Třída ~ knihovna funkcí použití funkcí (prostředků) bez vytváření instance dané třídy Programovací jazyky mají k dispozici zpravidla knihovny standardních funkcí Jazyk Java neumožňuje vytváření knihoven, nicméně můžeme vytvářet třídy, jejichž nástroje (metody, konstanty, proměnné) lze používat i bez vytváření instance příslušné třídy knihovní třída Jednou z knihovních tříd je i třída Math, která obsahuje řadu metod pro výpočet matematických funkcí 9

Přehled konstant a metod třídy Math E konstanta přirozeného základu logaritmu, double PI konstanta Ludolfova čísla s přesností double abs absolutní hodnota čísla max větší ze dvou hodnot min menší ze dvou hodnot sin goniometrická funkce sin parametr v radiánech cos goniometrická funkce cos tan goniometrická funkce tg asin inverzní funkce k funkci sin výsledek v radiánech acos atan sinh hyperbolický sinus cosh tanh todegrees převod radiánů na stupně toradians převod stupňů na radiány pow obecná mocnina čísla sqrt druhá odmocnina čísla exp exponenciélní funkce log logaritmická funkce o základu e log10 dekadický logaritmus random generování náhodného čísla v rozsahu 0 1 ceil celá část reálného čísla, která je menší než parametr (parametr i výsledek double) floor celá část reálného čísla, která je větší než parametr rint celé číslo nejbližší předanému argumentu round zaokrouhlená hodnota reálného čísla výsledek je typu long signum vrací 0.0, -1.0, 1.0 dle znaménka argumentu getexponent vrací exponent reálného čísla 10

Použití metod třídy Math Metody vrací hodnotu definovaného typu svým jménem volání metod použijeme obecně ve výrazech Každá z uvedených metod (kromě metody random) má parametry pořadí a typ parametrů musí odpovídat deklaraci podrobnější popis v nápovědě Některé z uvedených metod jsou k dispozici ve více verzích například metoda abs tyto verze se liší typem argumentu, typem vracené hodnoty jedná se o tzv. přetížené metody při volání je potom podle typu skutečného argumentu rozhodnuto, která verze metody bude použita Bližší popis metod v nápovědě jazyka Java float r, obvod; r = (float) Math.random()*100; // náhodné realne v intervalu <0, 100) obvod = (float) (2 * Math.PI * r); int n = (int) (Math.random() * 100); // náhodné celé od 0 do 99 double alfa = 60; // uhel ve stupnich double sinalfa = Math.sin(Math.toRadians(alfa)); sinalfa = Math.sin(alfa * Math.PI/180); 11

Obalové třídy primitivních datových typů Java objektový jazyk Primitivní datové typy float, double, byte, short, int, long, char, boolean proměnné primitivních datových typů nejsou objekty Ke každému primitivnímu datovému typu má jazyk Java obalovou třídu (wrapper class, obalující/obalovou třída) Typ Obalová třída float Float double Double byte Byte short Short int Integer long Long char Character boolean Boolean Obalové třídy obsahují konstanty, metody, umožňují konverzi hodnoty příslušného typu na objekt 12

Třídy Float a Double Vybrané konstanty MIN_VALUE MAX_VALUE MIN_EXPONENT MAX_EXPONENT NEGATIVE_INFINITY hodnota, která je výsledkem dělení záporného čísla nulou POSITIVE_INFINITY NaN tato hodnota je výsledkem operace dělení nuly nulou SIZE velikost hodnoty typu v bitech Použití float min = Float.MAX_VALUE; Vybrané statické metody typu Double (Float obdobně) compare(d1, d2) výsledek typu int isinfinite(d) výsledek typu boolean isnan(d) výsledek typu boolean parsedouble(s) výsledek typu double tostring(d) výsledek typu String valueof(s) výsledek typu Double valueof(d) výsledek typu Double Použití v = sum / n; if (Float.isInfinite(v)) ; else ; 13

Třídy Byte, Short, Integer a Long Vybrané konstanty Některé statické metody MIN_VALUE MAX_VALUE parseint(s) výsledek typu int tostring(d) výsledek typu String SIZE velikost hodnoty typu v bitech valueof(s) výsledek typu obalové třídy valueof(d) výsledek typu obalové třídy Použití int max = Integer.MIN_VALUE; Použití před jménem metody musí být uveden identifikátor odpovídající třídy oddělený od identifikátoru metody tečkou int n = Integer.parseInt( 126 ); 14

Třída Character Třída Character obsahuje řadu konstat Vybrané konstanty MIN_VALUE MAX_VALUE SIZE velikost hodnoty typu v bitech Použití konstant a metod před jménem statické metody třídy nebo konstanty musí být uveden identifikátor odpovídající třídy oddělený od identifikátoru metody resp. konstanty tečkou před jménem instanční metody (konstanty, instanční proměnné) musí být uveden identifikátor proměnné odpovídajícího objektového typu oddělený od identifikátoru metody tečkou Některé metody valueof(c) výsledek typu obalové třídy isletter(c) isletter(i) islowercase(c) isuppercase(c) isspacechar(c) iswhitespace(c) touppercase(c) tolowercase(c) 15

Třída Boolean Vybrané konstanty Některé metody FALSE konstanta deklarovaná ve třídě Boolean typu Boolean TRUE konstanta typu Boolean parseboolean(s) výsledek typu boolean tostring(b) výsledek typu String valueof(s) výsledek typu Boolean valueof(b) výsledek typu Boolean Poznámka: false, true toto jsou rezervovaná slova jazyka Java představující konstantní hodnoty primitivního typu boolean 16

Chyby v programu Chyby syntaktické Syntaktický analyzátor V době kompilace Netbeans zvýraznění v editoru v době psaní kódu je prováděna syntaktická analýza Chyby běhové Dělení nulou v oboru celých čísel Odmocnina ze záporných čísel (aplikace funkcí na hodnoty mimo definiční obor) Převod textových řetězců na čísla Chyba přerušení vykonávání kódu na daném místě generování výjimky výjimku lze v programu ošetřit Pokud zůstane výjimka neošetřena, program vypíše standardní chybové hlášení a skončí V případě některých byť chybných operací k chybě nedochází přetečení rozsahu typu Chyby sémantické Program lze přeložit, spustit, Pro zadaná vstupní data (popřípadě pro některé kombinace zadaných vstupních dat) poskytuje chybné výsledky 17