Základy programovaní 3 (Java)

Podobné dokumenty
Úvod do programování v jazyce Java

Úvod do programování v jazyce Java

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

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

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

Algoritmizace. Cíle předmětu

Úvod do programovacích jazyků (Java)

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

Algoritmizace a programování

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

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

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Řídicí struktury. alg3 1

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

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

6 Příkazy řízení toku

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/

JAVA. Další jazyky kompilovatelné do Java byte-code

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

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

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

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

Podmínky na zápočet. Java, zimní semestr

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

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

Java/QE Akademie - Osnova

Programování 1 - Java

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

NPRG031 Programování II --- 2/2 Z, Zk

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

Úvod do programovacích jazyků (Java)

První kapitola úvod do problematiky

KTE / ZPE Informační technologie

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

3. Základy programovacího jazyka Java

Skriptovací jazyky. Obsah

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

Zápis programu v jazyce C#

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

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

Výčtový typ strana 67

Programovací jazyk Java

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

Iterator & for cyklus

Programovací jazyk C++ Hodina 1

7. Datové typy v Javě

Programování v Javě I. Leden 2008

Vytváření a použití knihoven tříd

1. Programování proti rozhraní

Objektově orientované programování

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

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

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

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

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

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

11. Přehled prog. jazyků

Matematika v programovacích

Abstraktní datové typy: zásobník

Java a XML. 10/26/09 1/7 Java a XML

Seminář Java II p.1/43

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

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

Algoritmizace a programování

Pokročilé programování na platformě Java. Úvod

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

3 KTE / ZPE Informační technologie

IUJCE 07/08 Přednáška č. 1

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

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

Úvod do programování - Java

PREPROCESOR POKRAČOVÁNÍ

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

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Jazyk C# a platforma.net

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

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

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

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

Programování v jazyce JavaScript

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

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

Generické programování

Algoritmizace a programování

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

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

URČITÝM ZPŮSOBEM PODOBNÉ

ADT/ADS = abstraktní datové typy / struktury

KTE / ZPE Informační technologie

typová konverze typová inference

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

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

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

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Transkript:

Základy programovaní 3 (Java) Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 2. říjen, 2013 Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 1 / 21

Organizační informace email: petr.krajca@upol.cz konzultační hodiny středa 17:00 18:00, čtvrtek 13:30 14:30 v případě mé nepřítomnosti přes email www: http://phoenix.inf.upol.cz/~krajca/ Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 2 / 21

Zápočet vyřešit všechny úkoly zadané na cvičení a nejpozději do jednoho týdne je poslat na email petr.krajca@upol.cz s předmětem ZP3JV v odůvodněných případech je možné (emailem) požádat o prodloužení termínu pozdní odevzdání bez omluvy je chápáno jako neodevzdání úkolu implementovat netriviální projekt v jazyce Java (lze použít i ročníkový projekt) projekt by měl být skutečně použitelnou aplikací projekt by měl pokrývat učivo probrané v daném semestru účast na seminářích není nutná, ale je silně doporučovaná Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 3 / 21

Upozornění plagiátorství, vydávání cizích výsledků za vlastní je zakázano a bude řešeno dle vnitřních předpisů UP odevzdání dvou identických prací je považováno za plagiátorství bez ohledu na to, že se liší formátováním nebo názvy proměnných pokud něčemu nerozumíte, zeptejte se na semináři nebo využijte konzultačních hodin! Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 4 / 21

Upozornění plagiátorství, vydávání cizích výsledků za vlastní je zakázano a bude řešeno dle vnitřních předpisů UP odevzdání dvou identických prací je považováno za plagiátorství bez ohledu na to, že se liší formátováním nebo názvy proměnných pokud něčemu nerozumíte, zeptejte se na semináři nebo využijte konzultačních hodin! Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 4 / 21

Obsah předmětu 1 Úvod, datové typy, proměnné, řídící struktury 2 Třídy, objekty, rozhraní 3 Pole a seznamy 4 Kolekce a generické typy 5 Kolekce, výčtové typy, práce s řetezci 6 Vyjímky, dokumentace 7 Vstupy a výstupy 8 Vnořené a anonymní třídy 9 Vlákna 10 Baĺıčky, sestavení komplexního programu 11 Testování (JUnit) Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 5 / 21

Literatura SUN. Java Tutorial. 2010. Eckel B. Mysĺıme v jazyce Java - příručka programátora. Grada Publishing, 2000. Bloch J. Java efektivně 57 zásad softwarového experta. Grada Publishing. Lewis J., Loftus W. Java Software Solutions, Foundations of Program Design. Addison Wesley Longman Ltd., 2000. Gosling J., Joy B., Steele G., and Bracha G. The Java Language Specification, Third Edition. Herout P. Učebnice jazyka Java. Kopp, 2000. Kiszka B. 1001 tipů a triků pro programování v jazyce Java. Computer Press, 2003. Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 6 / 21

Java jako programovací jazyk objektově orientovaný jazyk (dědičnost s jedním rodičem) syntaxí podobný C/C++ (není to C/C++!) portabilita (Write-Once-Run-Anywhere) snaha o omezení chyb automatická správa paměti silně a staticky typový jazyk (není to CommonLisp!) omezení dostupných prvků jazyka na ty bezpečné systém vyjímek kontrola mezí poĺı Další vlastnosti několik nezávislých implementací (Oracle/SUN, IBM, IcedTea, GCJ, Harmony) rozsáhlá standardní knihovna, řada API množství dostupných knihoven a nástrojů třetích stran (Apache Foundation) Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 7 / 21

Java jako platforma Infrastruktura Edice Java Development Kit (JDK): překladač, knihovny + související nástroje Java Virtual Machine (JVM): vykonává kód vygenerovaný překladačem (Java Byte Code) Java Runtime Environment (JRE): běhové prostředí (JVM, knihovny, atd.) Java Applety propojení JRE s prohĺıžečem JavaScript vůbec nesouvisí s Javou s JDK/JRE: lze provozovat další jazyky, např. Scala, Groovy, Clojure, Jython, JRuby Java ME mobilní zařízení (definuje řadu omezení) Java SE nejčastěji používaná Java EE jako SE + knihovny a rozhraní Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 8 / 21

Historický přehled 1990 původně vyvíjeno SUN Microsystems jako projekt OAK 1996 JDK 1.0 (první verze) 1997 JDK 1.1 1998 J2SE 1.2 (JIT překlad, kolekce) = Java2 (J2SE) 2000 J2SE 1.3 (HotSpot JIT překladač) 2002 J2SE 1.4 (řada nových API) 2005 J2SE 5.0 (řada rozšíření generické typy, metadata, for-each, atd.) 2006 Java SE 6 (nové API, vylepšení JVM) 2010 SUN je koupen Oraclem 2011 Java SE 7 (mírné úpravy jazyka, rozšířené API) (březen) 2014 Java SE 8 Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 9 / 21

IDE Eclipse Netbeans IntelliJ IDEA proprietární: JBuilder, JDeveloper, XCode,... ve výuce je možné používat libovolné IDE používání IDE nebude součástí výuky seznamte se s IDE a využívejte jeho možností generování kódu formátování kódu refactoring (přejmenování proměnných, metod, tříd) nápověda Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 10 / 21

Konvence důraz na čitelnost kódu (konvence vynucené standardem, zaběhlá praxe, návrhové vzory) každá veřejná třída v samostatném souboru, rozdělení baĺıčků do adresářů (požadavek jazyka) projekt má typicky tři podadresáře (src/, bin/ lib/) zaužívaný coding style: class NazevTridy { } int lokalnipromenna = 1; int a = b + (x / 2); void metodafoo(object object) { více zde: http://www.oracle.com/technetwork/java/codeconv-138413.html odevzdávané práce musí být formátovány podle daných konvencí, jinak budou vráceny k dopracování (s formátováním vám pomůže IDE) Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 11 / 21

Základní datové typy (1/2) Primitivní datové typy (hodnotové) čísla: byte, short, int, long (velikost 1, 2, 4, 8 bytů); neexistují unsigned varianty čísla s plovoucí řádovou čárkou: float, double (4, 8 bytů; jednoduchá/dvojitá přesnost) pravdivostní hodnoty: boolean (může mít hodnoty true, false) znaky: char (pole znaků řetězec!, char byte) implicitní inicializace (překladač může neinicializaci označit za chybu) operátory jako v C: +, -, *, /, +=, -,..., ++, --, &, ==,!=, >, <, <=, &&, Ostatní datové typy (referenční) neexistují ukazatele pole (indexovány od 0, kontrola hranic) řetězce (neměnitelné), spojení řetězců operátorem + = nově alokovaný řetězec objekty Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 12 / 21

Základní datové typy (2/2) byte a = 1; int b = 42 + 2; char c = a ; boolean d = true; float f = 12; int[] e = new int[3]; e[0] = 1; String s = "Foo"; StringBuilder stringbuilder = new StringBuilder("Foo"); Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 13 / 21

Obligatní Hello World package cz.upol.lecture01; public class Lecture01 { public static void main(string[] args) { System.out.println("Hello World!"); } } Překlad zdrojový soubor Lecture01.java (název musí odpovídat názvu třídy) musí být v adresáři cz/upol/lecture01 (adresář odpovídá package) překlad do Lecture01.class (třída přeložená do JBC) Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 14 / 21

Větvení programu (1/4) téměř identické jako v C blok { } if prikaz_1; prikaz_2;... if podminka1 prikaz_1; if podminka2 prikaz_2; else prikaz_3; Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 15 / 21

Větvení programu (2/4) int a = 2; int b; if (a == 42) { System.out.println("Promenna a obsahuje tajemstvi vesmiru!"); } if (a == 42) b = 10; else b = a + 1; b = (a == 42)? 10 : a + 1; if (a) b = 10; // NEJDE!!! Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 16 / 21

Větvení programu (3/4) switch switch (celočíselný_výraz){ case konstanta_1: příkazy_1 break;... case konstanta_n: příkazy_n break; default: příkazy_default_větve } od Java 7 lze použít i řetězce Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 17 / 21

Větvení programu (4/4) int month = 8; String monthstring; switch (month) { case 1: monthstring = "January"; break; case 2: monthstring = "February"; break; case 3: monthstring = "March"; break; case 4: monthstring = "April"; break; case 5: monthstring = "May"; break; case 6: monthstring = "June"; break; case 7: monthstring = "July"; break; case 8: monthstring = "August"; break; case 9: monthstring = "September"; break; //... case 12: monthstring = "December"; break; default: monthstring = "Invalid month"; break; } System.out.println(monthString); Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 18 / 21

Cykly (1/2) for for (inicializace; podmínka; inkrementace) { příkazy } while (podmínka) { příkazy } do { příkazy } while (podmínka); cyklus jde přerušit příkazem break, popř. přeskočit na začátek smyčky příkazem continue Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 19 / 21

Cykly (2/2) for for(int i = 0; i < 10; i++){ System.out.println("Hodnota i : " + i); } int i = 0; while (i < 10) { System.out.println("Hodnota i : " + i); i++; } int i = 0; do { System.out.println("Hodnota i : " + i); i++; } while (i < 10); Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 20 / 21

Podrobněji rozebraná problematika http://download.oracle.com/javase/tutorial/java/nutsandbolts/index.html Petr Krajča (UP) KMI/ZP3JV: Seminář I. 2.10.2013 21 / 21