Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
1
Úvod do programování - Java
Cvičení č.1
UPR 2008/20091
2
UPR informace
čí í š á ář• Cvičící RNDr. Eliška Ochodková, kancelář A1010
• [email protected]• www.cs.vsb.cz/ochodkovawww.cs.vsb.cz/ochodkova
• Přednášející Ing. Michal Krátký, Ph.D., kancelář A1004
h l k k b
UPR 2008/20092
• [email protected]• www.cs.vsb.cz/kratky
3
Přihlášení
• Osobní číslo• Osobní číslo– Každý uživatel počítačové sítě TUO-Net má automaticky přiděleno
osobní číslo.– Studenti mají toto číslo uvedeno na své čipové kartě a v indexu.
Osobní číslo se skládá ze tří písmen a tří číslic, např.: abc123– Osobní číslo slouží pro identifikaci v počítačových systémech.
• Heslo– Počáteční heslo je uživateli nastaveno jeho rodné číslo (bez lomítka)Počáteční heslo je uživateli nastaveno jeho rodné číslo (bez lomítka)– Uživatel je povinen změnit si heslo co nejdříve– Prvotní heslo opravňuje uživatele k 6 přihlášením– Zapomenuté heslo může nastavit fakultní správce nebo kartové
středisko - požádat musíte osobně - nelze telefonicky či poštou• Autentizace
– Uživatelé se autentizují pomocí adresářové služby eDirectory (Novell):– uživatelské DN: [.]os-cislo.?
UPR 2008/20093
uživatelské DN: [.]os cislo.?– uživatelské jméno: os-cislo– uživatelův kontext: .?, což je poslední číslice jeho osobního čísla– Např. .abc123.3
4
UPR informace
Zápočet • Zápočet – max 70 bodů, min 36 na základě test, – pevně dané termíny – schopnost on-line implementovat
zadání!!!• Zkouška – test (klasif. zápočet)
– Max 30 bodů, min 15 bodů,
• Opisování NE!!! – Totožné nebo jen mírně modifikované projekty,
neschopnost vysvětlit zdrojový kód apod.– Opisování u zkoušky
Di i li á í k i d í ě é d í ě é
UPR 2008/20094
Disciplinární komise podmíněné nepodmíněné vyloučení ze studia
5
UPR informace
é á• Instalace (odkazy na webové stránce cvičícího a přednášejícího)– Java J2SE Development Kit 6.0 (stáhnout jdk
(Java Development Kit), ne jen jre (Java R ti E i t))Runtime Environment))
– IDE • Eclipse – na cvičení• NetBeans a další
• Literatura viz webová stránka cvičícího
UPR 2008/20095
• Literatura viz webová stránka cvičícího
6
Programátorské desatero• Programování je lidská činnost vyžaduje tedy trénink • Programování je lidská činnost, vyžaduje tedy trénink. • Programování není cíl, ale prostředek k dosažení cíle. • Programování vyžaduje pochopení algoritmizovaného problému. • Programátor přemýšlí. • Programátor pracuje samostatně.• Programátor čte, zejména dokumentaci. • Programátor se stále učí nové věci. • Programátor testuje to čemu ještě nerozumí• Programátor testuje to, čemu ještě nerozumí.• Programátor umí improvizovat. • Programátor optimalizuje. • Programátor musí umět přecházet plynule mezi více jazyky. • Programátor umí hledat chyby. • Programátor hledá chyby, aby se poučil. • Programátor umí číst cizí kód. Je to poučné. • Programátor píše slušně
UPR 2008/20096
• Programátor píše slušně. • Programátor si musí poradit s více editory. • Programátor musí umět přečíst kód i bez zvýrazněné syntaxe.
7
Životní cyklus javovského programu
Soubor AhojSvete java se zdroj kódem• Soubor AhojSvete.java se zdroj. kódem
public class AhojSvete { public static void main(String[] args) {
System.out.println("Ahoj svete!"); }}
}
• Překlad (různé překladače (compilers), např. javac, jikes) z příkazového řádku
javac AhojSvete.java AhojSvete.class (tzv. bytecode)
UPR 2008/20097
bytecode)• Spuštění z příkazového řádku
java AhojSvete
8
Vývojové prostředí Eclipse
š ě í ř í• Spuštění, vytvoření workspace (pracovního prostředí)– Při prvním spuštění Eclipse jste dotázáni na
umístění tzv. Workspace. Vyberte si Váš í d ář kt é á t ří pracovní adresář, ve kterém se vám vytvoří
workspace (adresář s tímto názvem). Tento workspace bude obsahovat vámi vytvořená data – projekty, adresáře, soubory.
UPR 2008/20098
9
Vývojové prostředí Eclipse
V t ř í j kt• Vytvoření projektu– Po spuštění se Eclipse otevírá s posledně otevřeným(i)
projektem(y). Chcete-li vytvořit projekt nový, respektive první proveďte následující:
– Po spuštění IDE se nový projekt vytvoří File -> New -> Project, a vybere se varianta Java Project. V průvodci j , y j pdále zadejte jméno projektu (např. cv1) a pak zvolte Finish.
– K vytvoření projektu také můžeme kliknout na ikonu
• Vytvořil se tzv. Java project, projekt, kam se budou ukládat naše soubory se zdrojovými kódy (tj d j é b ) i jí í b
UPR 2008/20099
(tj. zdrojové soubory) a související soubory potřebné k vytvoření programu v Javě.
10
Vývojové prostředí Eclipse
ř á á í ří• Přidávání tříd– Pokud jste zadali adresář projektu, ve kterém již jsou
soubory .java, Eclipse je zařadí do projektu. Nové třídy se vytváří File > New > Class, je třeba zadat jméno třídy (musí být stejné jako jméno třídy, která pak bude obsahovat metodu main) např AhojSvete Dále na obsahovat metodu main). , např. AhojSvete. Dále na otázku Which method stubs would you like to create?odpovězte zakliknutím položky public static void main… a ukončete volbou Finish.
– K vytvoření třídy také můžeme kliknout na ikonu
• Vytvoří se zdrojový soubor AhojSvete java“ který
UPR 2008/200910
• Vytvoří se zdrojový soubor „AhojSvete.java , který bude obsahovat jedinou třídu „AhojSvete“.
11
Vývojové prostředí Eclipse
í ř š ě í• Psaní, překlad, spouštění programu– Eclipse obsahuje komfortní editor se syntax
highlighting a automatickým odsazováním. Psaní je tedy víceméně intuitivní. Standardní horká klávesa Ctrl S ukládá soubor horká klávesa Ctrl-S ukládá soubor.
– Překlad se ručně spustí volbou Run->Run as->Java application nebo klikněte na ikonu
– Chyby a výsledky překladu vypisují do spodního okna Console.
UPR 2008/200911
okna Console.
12
První program/* * File name: AhojSvete.java
* Date: 2007/10/3* Author: Vase Jmeno * Muj prvni program v Jave */
// deklarace hlavni tridy programupublic class AhojSvete {
// definice hlavni metody programu public static void main(String[] args) {
// vypis retezce na obrazovku System.out.println("Ahoj svete!");
}}
UPR 2008/200912
}/* end of AhojSvete.java */
13
Komentáře
řá// na jeden řádek
/* komentářna více řádků */na více řádků /
/** dokumentační komentář * javadoc vygeneruje dokumentaci
UPR 2008/200913
j g j*/
14
Konvence
k k ář• Dokumentace, komentáře– Na začátku každé třídy uveďte:
• - stručný popis třídy,- autora či autory,- označení verze (pořadové číslo či datum poslední změny).
– Před každou metodou by měl být její popis doplněný o y ý j j p p p ýpopis významu jednotlivých parametrů a návratových hodnot.
– Popisy tříd a metod by měly být ve formátu vhodném pro javadoc.
– Vlastní kód můžte rovněž doplnit o komentář, zejména pokud jste začátečníci
UPR 2008/200914
pokud jste začátečníci.
15
Konvence
Id tifikát (J j t iti í j k • Identifikátory (Java je tzv. case senzitivní jazyk – pozor na malá a velká písmena!)
• Třídy – začínají velkým a každé další velkým AhojSvete,
StringBuffer
d ě é• Metody a proměnné – začínají malým, další slovo velkým nactiCislo(), pocet,
pocetPrvku
• Balíky– pouze malá písmena, např. java.lang, java.util
UPR 2008/200915
• Konstanty– pouze velká písmena MAX_VALUE, PI
16
Konvence
á á í• Formátování– Na jednom řádku by měl být jeden příkaz, deklarace
jedné proměnné.– Obsah bloku odsaďte vždy o 3 či 4 mezery. V rámci
jednoho bloku by měly být všechny příkazy odsazeny stejně (Eclipse odsazuje samo).stejně (Eclipse odsazuje samo).
– Otevírací závorka bloku je obvykle na konci řádku, uzavírací samostatná na řádku. Např.
– V řídících strukturách vždy používejte složené závorky pro bloky (a to i v případě, že v bloku je pouze jeden příkaz).Používejte mezeru před otevírací závorkou a okolo
UPR 2008/200916
– Používejte mezeru před otevírací závorkou a okolo operátorů.
17
Základní pojmy
ý č ý ůž ý• Datový typ určuje jakých hodnot může nabývat objekt daného datového typu a množinu přípustných operací nad tímto datovým typem. Objektem rozumíme konstantu, proměnnou, výraz a podprogramy (v Javě metody).ý p p g y ( y)
• Konstanta - veličina, která nemění hodnotu během řešení problému. Může být použita dvěma způsoby: – přímo (63, ABC, …),
j á í ( č í id ifiká ) (PI j é
UPR 2008/200917
– pojmenováním (označení identifikátorem), (PI jméno konstanty 3.14 …).
18
Základní pojmy
final float PI = 3.14;
nebo
final float PI;….PI = 3.14;
UPR 2008/200918
19
Základní pojmy
ě á č á ůž ě• Proměnná - veličina, která může měnit hodnotu během řešení problému. Proměnná se zavádí deklarací (pojmenování a určení datového typu
é í ě é č íkonkrétní proměnné, event. určením počáteční hodnoty)int i, k;int j = 1;
UPR 2008/200919
int j 1;
20
Základní pojmy
Výraz se skládá z operátorů operandů a • Výraz se skládá z operátorů, operandů a speciálních znaků (např. závorky). Operandem může být: – konstanta,– proměnná,– výraz,ý ,– volání podprogramu (metody).
• Operand je tvořen opět výrazem:(a+b)/2, a=>c, i=2
• Příkazy popisují jednotlivé kroky algoritmu a jejich návaznosti. Rozlišujeme jednoduché a strukturované příkazy Celý algoritmus lze chápat
UPR 2008/200920
strukturované příkazy. Celý algoritmus lze chápat jako jeden příkaz:i = 2;
21
Řídící struktury
é ří• Jednoduché příkazy– příkaz přiřazení (operátor přiřazení = ),– (čtení a výpis (čtení a výpis je zpravidla
realizován jako volání podprogramu)).
• Strukturované příkazy– sekvence (posloupnost),– selekce (podmínka),– cyklus.
UPR 2008/200921
22
Datové typy
ý č ž ý• Datový typ určuje množinu hodnot, kterých může nabýt konstanta, proměnná, podprogram nebo výraz a množinu operací nad těmito hodnotami.
• Datový typ také určuje kolik místa (bajtů) bude • Datový typ také určuje, kolik místa (bajtů) bude v paměti pro např. proměnnou tohoto typu vyhrazeno.
• Deklarace datového objektu znamená přiřazení jednoznačného jména - identifikátoru a č í é
UPR 2008/200922
určení jeho datového typu.• V Javě DT jednoduché a referenční.
23
Deklarace (zavedení) proměnných
int i;
Můžeme také definovat více proměnných stejného typu najednou (ale doporučení –deklarace každé proměnné na samostatný p ýřádek):
int a, b, c;int j = 1;float f g h;
UPR 2008/200923
float f, g, h;final float PI = 3.14;
24
Jednoduché (základní) datové typy
ý é• boolean (logický typ) - objekt datového typu boolean může nabývat dvou hodnot:– pravda (angl. True, logická 1) – nepravda (angl. False, logická 0)
UPR 2008/200924
25
Celé číslo
é é čí ý á• Objekt datového typu celé číslo nabývá hodnot z množiny celých čísel. Celočíselné DT v Javě:– byte (8 bitů), – short (16 bitů), – int (32 bitů), ( ),– long (64 bitů).
• Zápis:– desítkově, osmičkově (0126, 015) a šestnáctkově
(0x3A, 0xCD).
UPR 2008/200925
26
Reálné číslo
é á é čí• Objekt datového typu reálné číslonabývá hodnot z množiny reálných čísel. Reálné datové typy v Javě:– float (32 bitů),– double (64 bitů).
• Zápis: 15., 15.0, .15, 5e6, 7E23, -7E+23, +7E-23.
UPR 2008/200926
27
Číselné soustavy
ž é čí č í čí é• Každé číslo lze zapsat v poziční číselné soustavě ve tvaru:
an*zn+an-1*zn-1+…. +a1*z1+a0*z0+a-1*zn-1+a-2*z-2+…..
• V dekadické soustavě reprezentujeme číslo jako posloupnost číslic které mají různé váhy podle posloupnost číslic, které mají různé váhy, podle jejich pozice, tzv. poziční číselná soustava.
172=1*100+7*10+2*1
• Obecný zápis čísla v desítkové poziční číselné soustavě anan-1…a1a0a-1a-2…. má hodnotu
UPR 2008/200927
an*10n+an-1*10n-1+…. +a1*101+a0*100+a-1*10n-1+a-2*10-2+….. kde ai ∈ { 0,1,2,3,4,5,6,7,8,9}
28
Číselné soustavy
• Počítač je sestrojen z logických obvodů, které pracují pouze s hodnotami 0 a 1. Proto je výhodné použít pro zápis čísel dvojkovou (binární) soustavu.(101)2 = (1*4+0*2+1*1)2 = 510
• Obecný zápis čísla v binární poziční číselné soustavě anan-1…a1a0a-1a-2…. má hodnotuan*2n+an-1*2n-1+…. +a1*21+a0*20+a-1*2n-1+a-2*2-2+….. kde ai ∈ { 0,1}
UPR 2008/200928
29
Číselné soustavy13 :2 0 .625*2
6 1
3 0
1 1
0 .625 2
1 .25
0 .5
1310 = 11012 0.62510 = 0.1012
13.62510 = 1101.1012
0 1 1 .0
UPR 2008/200929
11012 = (1*23+1*22+0*21+1*20)10 = 1310
30
Číselné soustavy
0.110 = = 0*20+0*2-1+0*2-2+0*2-3
+1*2-4 +1*2-5+... == 0.00011….2
0 .1*2
0 .2
0 .4
0 80 .8
1 .6
1 .2
0 .4
UPR 2008/200930
0 .4
… …
31
Číselné soustavy
• Paměťová buňka se skládá z osmi bitů. Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000)2 až (11111111) 2 , 0 až
255.• Tento způsob interpretace obsahu paměťové p p p
buňky ovšem neumožňuje zápis záporných čísel. Proto se používá ještě některých dalších způsobů.
• Přímý kód ukládá absolutní hodnotu čísla se znaménkovým bitem který určí zda se jedná
UPR 2008/200931
znaménkovým bitem, který určí zda se jedná o číslo kladné nebo záporné.
32
Přímý kód
123 0 |1111011 -123 1 |1111011
• V tomto způsobu kódování dochází k dvojí reprezentaci nuly. reprezentaci nuly.
0 0 |0000000 -0 1 |0000000
UPR 2008/200932
33
Doplňkový kód
Č• Číslo v doplňkovém kódu interpretujeme tak, že nejvyšší váha má zápornou hodnotu -(2n). V případě osmibitové reprezentace je tedy hodnota nejvyšší váhy -128.(1|0000000)2=(1*-27+0*26+.....+0*20)10 =(-128)10( 2 10 10
(1|0000001)2 =(1*-27+0*26+.....+0*21+1*20)10 =(-127)10(1|1111111)2 =(1*-27+1*26+.....+1*20)10 =(-1)10(0|0000000)2 =(0*-27+0*26+.....+0*20)10 =(0)10(0|0000001)2 =(0*-27+0*26+.....+0*21+1*20)10 =(1)10
(0|1111111)2 =(0*-27+1*26+.....+1*20)10 =(127)10
UPR 2008/200933
( | )2 ( )10 ( )10
34
Reálná čísla
• Vzhledem k tomu, že libovolný interval reálných čísel obsahuje nekonečný počet hodnot, není možné nalézt jednoznačné zobrazení mezi libovolným reálným intervalem a konečným počtem hodnot, který dává k dispozici kódování do n bitů.
• Do n bitů lze zakódovat nejvýše 2n hodnot. Proto je i počet reálných čísel zakódovaných v n bitech maximálně 2n.
• Reálná čísla jsou v počítači reprezentována vždy s určitou chybou. Tato chyba závisí na velikosti kódovaného intervalu reálných čísel, na počtu bitů do nichž reálné číslo kódujeme a na způsobu jakým kódování provádíme.
UPR 2008/200934
35
Pevná řádová čárka
Při b í čí l é řád é čá j čí l • Při zobrazení čísla v pevné řádové čárce je číslo zakódováno do n bitů tak, že prvních m bitů odpovídá celé části a zbylých d bitů odpovídá zlomkové části. Takové kódování se pak ve zkratce označuje jako kódování m.d. Stejně jako u celých čísel lze použít přímý i doplňkový kód u celých čísel lze použít přímý i doplňkový kód. Nejčastěji se ale používá doplňkový kód, aby bylo možné používat i záporná čísla.
• Příklad: V kódování 8.4 zapište číslo (13.625)10.(13.625)10=(00001101.1010) 2
UPR 2008/200935
• Při kódování s pevnou řádovou čárkou v doplňkovém kódu m.d je nejmenší zobrazitelné číslo -2m-1 a největší zobrazitelné číslo 2m-1-2-d.
36
Pohyblivá řádová čárka
P b í lký h čí l b h tř b li • Pro zobrazení velkých čísel bychom potřebovali neúměrné množství bitů. Například pro číslo 10300
přibližně 1000 bitů. Navíc u tak velkých čísel lze obvykle pracovat s menší absolutní přesností (bity nižších řádů lze zanedbat). Obdobná situace je u čísel se zápornými exponenty je u čísel se zápornými exponenty.
• Proto se číslo s pohyblivou řádovou čárkouskládá ze dvou částí: mantisy a exponentu. Mantisa je číslo s pevnou řádovou čárkou a exponent celé číslo. Hodnota reálného čísla r s mantisou m a exponentem e se vypočte podle
UPR 2008/200936
mantisou m a exponentem e se vypočte podle vzorce r=m*2e.
37
Pohyblivá řádová čárka
Příkl d V kód á í h bli řád čá k • Příklad: V kódování s pohyblivou řádovou čárkou s mantisou 0.8 a čtyřbitovým exponentem zapište číslo (13.625)10.
(13.625)10=(0.11011010)2*2 (0100)2
• V paměti by toto číslo mohlo být uloženo jako sekvence následujících bitů: 11011010|0100.
• Rozsah je přibližně od -22 do +22 , kde n je počet bitů exponentu.R l ti í ř t δ j dá čt bitů ti δ 2 m
n-1 n-1
UPR 2008/200937
• Relativní přesnost δ je dána počtem bitů mantisy m, δ =2-m.
38
Znak• Množina hodnot DT znak (char) je tvořena znaky abecedy
(malá velká písmena) číslicemi a speciálními znaky (malá, velká písmena), číslicemi a speciálními znaky. Každému znaku je přiřazena celočíselná hodnota, tzv. kód znaku. Přiřazení kódů jednotlivým znakům je voleno tak, aby odpovídalo jejich pořadí v tzv. kódovací tabulce. Mezi nejpoužívanější kódování patří kódování podle norem ASCII, Unicode (Java).
• Zápis:• Zápis:– jedním znakem (‘A’, ‘$’),– posloupností ‘\uXXXX’, jde XXXX jsou šestnáctkové číslice
(‘\u011B’ je znak ‘ě’),– „escape“ sekvencí (‘\n’ je nový řádek),– osmičkově.
UPR 2008/200938
39
Název Velikost Rozsah Implicitnítypu hodnotal 8 9 223 372 036 854 775 808 ž 0long 8 -9 223 372 036 854 775 808 až 0
+9 223 372 036 854 775 807int 4 -2 147 483 648 až 0
+2 147 483 647short 2 -32 768 až +32 767 0byte 1 -128 až +127 0double 8 ±1.797 693 134 862 315 70 0.0
E+308float 4 ±3.402 823 47 E+38 0.0char 2 65 536 různých znaků \u0000
UPR 2008/200939
char 2 65 536 různých znaků \u0000Boolean 1 bit true nebo false false
40
Operátor přetypování
• Pokud se hodnota proměnné kratšího typu ukládá do proměnné • Pokud se hodnota proměnné kratšího typu ukládá do proměnné delšího typu, provede Java převod automaticky (neexistuje nebezpečí ztráty informace) – rozšiřující konverze:
int cislo1 = 12;long cislo2;cislo2 = cislo1;
• Pokud se hodnota proměnné delšího typu ukládá do proměnné k tšíh t j tř b é t li it í ř t á í ž jí í í kratšího typu, je třeba provést explicitní přetypování – zužujícící konverze:
float desetinneCislo1;double desetinneCislo2 = 0.123456789;desetinneCislo1 = (float) desetinneCislo2;
UPR 2008/200940
41
Operátory
Unární• Unární– unární -, unární +,
int j;int i = -3;j = -i;
– speciálníp++l-hodnota, --l-hodnotal-hodnota++, l-hodnota--
• Binární– +, -, *, /, %,– =,
! && || & | !
UPR 2008/200941
– ==, !=, &&, ||, &, |, !, <, <=, >, >=, – &, |, ^, <<, >>, >>>, ~
• Ternární.
42
Operátory ++, --
ve výrazu se pracuje s původní hodnotou a • ve výrazu se pracuje s původní hodnotou a teprve poté je hodnota proměnné zvýšena:
l-hodnota++, l-hodnota—• nejprve se zvýší hodnota proměnné a pak se
použije: ++l-hodnota, --l-hodnota
int puvodni = 10;int nova = puvodni++; // puvodni=11, nova=10
int puvodni = 10;int nova = ++puvodni; // puvodni=11, nova=11
UPR 2008/200942
43
Další operátory
Operátor Příklad VýznamOperátor Příklad Významoperátoru
+= x += y x = x + y-= x -= y x = x - y/= x /= y x = x / y*= x *= y x = x * y%= x %= y x = x % y++ x++ x = x + 1
++x-- x-- x = x - 1
--x
UPR 2008/200943
44
Logické operace
č í ý č í• Relační operace - výsledkem relačních operací je vždy logická hodnota. Relační operace jsou binární operace:
== , !=, < , > , <= , >=, &&, ||, &, |, !|| |• Zkrácené x úplné vyhodnocování
logických součtů a součinů.
UPR 2008/200944
45
Ternární operátor
T á í át l ží k t ř í t d í ě éh • Ternární operátor slouží k vytvoření tzv. podmíněného výrazu, syntaxe:
log_vyraz ? výraz1 : výraz2• Zapíšeme-li například tento podmíněný výraz:
cislo1 < 5 ? cislo2++ : cislo2--hodnota proměnné cislo2 se zvýší o jedničku (provede se hodnota proměnné cislo2 se zvýší o jedničku (provede se výraz1) pokud je hodnota proměnné cislo1 menší než 5 (podmínka (log_vyraz) je splněna). Pokud je hodnota proměnné cislo1 větší nebo rovna 5 (tedy podmínka není splněna), hodnota proměnné cislo2 se sníží (provede se vyraz2).
UPR 2008/200945