Top Banner
Java vs Algoritmy v Jave
23

Java vs Algoritmy v Jave

Jan 02, 2016

Download

Documents

jason-velasquez

Java vs Algoritmy v Jave. Java je. čistý Smalltalk štýl OOP, vylepšenie C ++ , internet programming language , o bjektovo-orientovan á paradigma, silná typová disciplína, vznikla v Sun Microsystems , James Gosling , 1990 ovplyvnená: Objective-C , C++ , Smalltalk , Eiffel - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java vs Algoritmy v Jave

Java vs Algoritmy v Jave

Page 2: Java vs Algoritmy v Jave

Java je ...• čistý Smalltalk štýl OOP,• vylepšenie C++,• internet programming language,• objektovo-orientovaná paradigma,• silná typová disciplína,• vznikla v Sun Microsystems, James Gosling, 1990• ovplyvnená: Objective-C, C++, Smalltalk, Eiffel• ovplyvnila: C#, J#, VJ#

Java nie je:• operačný systém, ale pokúša sa ...• javascript ... • easy...

”Saying Java is simpler than C++ is like saying K2 is shorter then Everest”…

Page 3: Java vs Algoritmy v Jave

Základné pojmy

• dva druhy programov: applikácie a applety• Java Core API – runtime (JRE),• Java Platform – prenositeľnosť,• Java Virtual Machine (JVM),• Java Development Kit (JDK),

• JIT kompilátor,• Java ME (Micro Edition)• Java SE (Standard Edition) • Java EE (Enterprise Edition)

• Java Environment – Eclipse, – JBuilder, – NetBeans,– Kawa,– MS-Java

Page 4: Java vs Algoritmy v Jave

História• firma SUN, James Gosling,1991, jazyk Oak• 1993, Java for WWW• 1995, oficiálne predstavenie JAVA 1.0,• paradigma Write Once, Run Anywhere (WORA),• vývojové nástroje (JDK): http://www.javasoft.com/

• JDK 1.0 (1996) - nepoužíva sa, • JDK 1.1 (1997) - JDBC, JavaBeans, RMI, vnorené triedy…• J2SE 1.2 (1998) - Java 2 SDK (nové knižnice, Swing, Collections, …),

reflection model, JIT kompilátor,• J2SE 1.3 (2000) - zmeny v API, rýchlejšia, CORBA, JNDI, …• J2SE 1.4 (2002) - stabilná, výnimky, XML parser, ...• J2SE 5.0 (2004) - jazykové úpravy, generics, enumerate, ...• Java SE 6 (2006) – beta• Java SE 7 (coming soon) – nové API, knižnice, ...

Java joke

"Write once, run anywhere"

is actually a euphemism for

"Write once, debug everywhere

Page 5: Java vs Algoritmy v Jave

OOP

5 pravidiel OOP (Alan Kay):

• všetko je objekt,• program je hŕba objektov oznamujúcich si, čo robiť,

posielaním si správ,• každý objekt má svoj kus pamäte• každý objekt má typ• objekty rovnakého typu môžu prijímať rovnaké správy

Page 6: Java vs Algoritmy v Jave

Java vs. C++

Typy:• C++: bool, char, short int, int, long int, float, double, long doube, unsigned…• Java: boolean, char, byte, short, int, long, float, double.bite-size je definovaná jazykom, nie implementáciou char je 16bit, UnicodeJava nemá union typ Java nemá neinicializované lokálne premenné

Pointre:Java nemá pointre, pointrovú artimetiku Java má implicitný garbage collector

Template (generics), enumerate:

Java od verzie 1.5

Page 7: Java vs Algoritmy v Jave

Java vs. C++

Polia:C++ : pointre a polia splývajú, chýba range checking

Predávanie argumentov:Java: argument-by-value, neexistuje by-referenceneexistujú voliteľné parametre

Operátory:Java: Overloading operátorov je zakázaný

Riadenie výpočtu:Java: neexistuje goto Správa výnimiek

Rýchlosť vs.prenositeľnosť.....

Page 8: Java vs Algoritmy v Jave

Prvý

Súbor Prvy.java:

public class Prvy {

public static void main(String[] args) {

System.out.println("Ahoj");

}

}

C:\borovan\java>javac Prvy.java

C:\borovan\java>java Prvy

Ahoj

C:\borovan\java>

Page 9: Java vs Algoritmy v Jave

KomentáreSúbor Komentare.java:

public class Komentare {

static double obsahKruhu(double r) { /* metoda obsah kruhu*/ return r * Math.PI; }

public static void main(String[] args) { int uhrada; int pocetPiv = 5; uhrada = pocetPiv * 15; // typický komentar System.out.println("uhrada = " + uhrada);

uhrada = pocetPiv * /* 15 */ 20; /* 15 je za desinku */ System.out.println("uhrada = " + uhrada);

System.out.println("Obsah kruhu o polomere 5 = " + obsahKruhu(5.0)); }}uhrada = 75 uhrada = 100 Obsah kruhu o polomere 5 = 15.707963267948966

Page 10: Java vs Algoritmy v Jave

Základné celočíselné typy• byte, short, int, long 8,16,32,64 bitov• neexistuje unsigned int

public class IntNaByte {

public static void main(String[] args) { int i; byte b; b = -1; // -1 = 255 unsigned i = (b < 0) ? b + 256 : b; System.out.println("i = " + i); i = 128; b = (byte) ((i > 127) ? i - 256 : i); System.out.println("b = " + b); i = 100; b = (byte) ((i > 127) ? i - 256 : i); System.out.println("b = " + b); }}

i = 255

b = -128

b = 100

Page 11: Java vs Algoritmy v Jave

Konštanty

• Desiatkové 32,12,....• Osmičkové 0126, 015, 01• Šestnástkové 0x56,0x1,0xCD,...• Long int 123456789123L• Znakové ‘A’,’%’,’\u00E1’,’\n’,’\f’• Reťazcové “toto je retazec v Jave”• Logické typu boolean: true, false• Reálne float, double: 15.8, 7E23, 3.14F,...

Page 12: Java vs Algoritmy v Jave

NekonečnoInteger.MIN_VALUE, Float.MAX_VALUE

public class Nekonecno {

public static void main(String[] args) { double nula = 0.0; double vysledok = +5.0 / nula; System.out.println(vysledok); // Infinity

if (Double.POSITIVE_INFINITY == vysledok) System.out.println("kladne nekonecno"); // kladne nekonecno vysledok = -5.0 / nula; System.out.println(vysledok); // -Infinity

if (Double.isInfinite(vysledok) == true) System.out.println("nekonecno"); // nekonecno

System.out.println("MAX = " + Float.MAX_VALUE + ", 2 * MAX = " + (2 * Float.MAX_VALUE));// MAX = 3.4028235E38, 2 * MAX =

Infinity vysledok = nula / nula; // NaN System.out.println(vysledok); if (Double.isNaN(vysledok) == true) System.out.println("nie je cislo"); // neni cislo }}

Page 13: Java vs Algoritmy v Jave

Deklarácia premennýchint i; char c; float f;int i, j, k;int j = 1;

final int MAX = 10;

final int MAX;MAX = 10;

public class TriedaSKonstantou { public static final int MAX = 10;

public static void main(String[] args) { System.out.println("MAX = " + MAX); System.out.println("MAX = " + TriedaSKonstantou.MAX); }}

Page 14: Java vs Algoritmy v Jave

Priradenie, pretypovanie,konverzie

j = 3.14; // nie :=

int j, i = 5; if (i == (j = 5)) // nie if (i = (j = 5)) System.out.println(i);

int i = 5; double d = (int) i; // rozšírenie podtypu do nadtypu char c = ‘A’; int i = (int) c; char d = (char)i; // zúženie do podtypu

rozširujúce konv. Byte->short->int->long->float->doublezužujúce konv. double->float->long->int->short->byte

short s = 300; byte b = (byte) s; System.out.println("s = " + s + ", b = " + b); // s = 300, b = 44 b = (byte) 255; System.out.println("b = " + b); // b = -1

Page 15: Java vs Algoritmy v Jave

Výrazy, pretečenie int i = 5, j = 1, k; i++; // i bude 6 System.out.println("i = " + i); j = ++i; // j bude 7, i bude 7 System.out.println("j = " + j + ", i = " + i); j = i++; // j bude 7, i bude 8 System.out.println("j = " + j + ", i = " + i); k = --j + 2; // k bude 8, j bude 6, i bude 8 System.out.println("k = " + k + ", j = " + j); i = j % 4; // delenie modulo byte b = 126; System.out.println("b = " + b); // b = 126 b += 3; System.out.println("b = " + b); // b = -127 b = -126; b += -5; System.out.println("b = " + b); // b = 125

Page 16: Java vs Algoritmy v Jave

Operátoryj *= i-2;

==, !=, &&, ||, ! logické &, |,~, ^, <, >,<<,>>,>>> bitové

Skrátený súčet, súčin (rozdieľ oproti C++)

int i, j, k; i = 1; j = 2; k = 3; if (i == 1 || ++j == 2) k = 4; System.out.println("i = "+ i +", j = "+ j +", k = "+ k); // i = 1, j = 2, k = 4

…ak miesto || bude | // i = 1, j = 3, k = 4

int i, j, k; i = 1; j = 2; k = 3; if (i == 2 && ++j == 3) k = 4; System.out.println("i = " + i + ", j = " + j + ", k = " + k); // i = 1, j = 2, k = 3…ak miesto && bude & // i = 1, j = 3, k = 3

Page 17: Java vs Algoritmy v Jave

Bitové operácie&, |, ^, <<, >>, >>>, ~

byte i = 7 & 9; byte i = 7 | 9;

int i = 4; if (i % 2 == 0) // klasicky System.out.println(i + " je parne");

if ((i & 1) == 0) // bitovo System.out.println(i + " je parne");

final byte VIDITELNY = 1; final byte PREMIESTITELNY = 2; final byte MENITELNY = 4; final byte SMAZATELNY = 8;

byte stav = 0; stav |= VIDITELNY; if ((stav & VIDITELNY) == VIDITELNY) System.out.println("je viditelny"); stav &= ~VIDITELNY; if ((stav & VIDITELNY) == VIDITELNY) System.out.println(“je viditelny"); } byte x = 5; x <<= 3; int x = 256; x >>= 4; // int x = 16; x >>= 2; // 4 int x = -16; x >>= 2; // 1073741820 byte i = 7 ^ 5; // 2

Page 18: Java vs Algoritmy v Jave

Priority (používaj zátvorky). [index] (typ)! ++ -- * / %+ -<< >> >>>< <= >= >== !=&^|&&?:= += …

Page 19: Java vs Algoritmy v Jave

if-then-else

if (booleovský výraz) C++: if(c = getchar() != ‘A’) … ok

príkaz; Java: if(c = getchar() != ‘A’) … error

else Java: if((c = getchar()) != ‘A’) … ok

príkaz;

(booleovský výraz)?výraz1:výraz2

max = (i > j) ? i : j;

break

continue

Page 20: Java vs Algoritmy v Jave

cyklywhile (booleovský výraz) príkaz;

do { príkazy;} while (booleovský výraz);

for (výraz štart; výraz stop; výraz iter) chyba: for(int i=1,sum=0; i<=10;i++)… príkaz;

navesti: for (int n = 0; n < 4; n++) { for (int m = 0; m < 2; m++) { if (n == 2 && m == 1) continue navesti; System.out.print(n + "-" + m + " "); } }

Page 21: Java vs Algoritmy v Jave

switch, return switch (citajZnak()) { case 'a' : case 'b' : case 'c' : System.out.print("1"); break; case 'd' : System.out.print("2"); break; default : System.out.print("3"); break; }

return výraz;

Page 22: Java vs Algoritmy v Jave

java.io

import java.io; // include <stdio.h>

Výstup: System.out.print()

i = 4; j = 7;

System.out.print("Toto je hodnota premennej i: " + i + "\n");

System.out.println("Toto je premenna i: "+i+"\na toto j: "+j);

System.out.println("Sucet je " + i + j);

System.out.println("Sucet je " + (i + j));

Page 23: Java vs Algoritmy v Jave

cvičeniepublic class puzzle {

static void usage() { System.out.println("Usage: \n\t" + "help yourself"); System.exit(1); }

public static void main(String[] args) { if(args.length != 1) usage(); if(args[0].equals("paj")) {

int n = 0; int m = 0;

while(m < 314588) { double a = Math.random(); double b = Math.random(); if (a*a < 1-b*b) n++; m++;

} System.out.println("What ??? !" + (4F*n/m)); } else usage(); }}

static void printBinaryInt(String s, int i) {

System.out.println(s + ", int: " + i + ", binary: ");

System.out.print(" ");

for(int j = 31; j >= 0; j--)

if(((1 << j) & i) != 0)

System.out.print("1");

else

System.out.print("0");

System.out.println();

}

System.out.println((((1 << j) & i) != 0)?”1”:”0”);

System.out.println(((1 << j) & i)?”1”:”0”);