Java Programozás 1. Gy: Java alapok. Ismétlés ++

Hasonló dokumentumok
Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

OOP: Java 8.Gy: Gyakorlás

4. Gy: JAVA osztályok

BME MOGI Gépészeti informatika 4.

OOP: Java 1.Gy: Java alapok

Java Programozás 11. Ea: MVC modell

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

OOP: Java 4.Gy: Java osztályok

7. K: JAVA alapok Konzultáció

Java gyakorlat feladatai e s megolda sai ( )

OOP: Java 8.Gy: Abstract osztályok, interfészek

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

OOP: Java 5.Gy: Osztály, referencia, konstruktor

BME MOGI Gépészeti informatika 1.

OOP: Java 7.Gy: Öröklődés, referenciák

Informatika terméktervezőknek

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

BME MOGI Gépészeti informatika 7.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

BME MOGI Gépészeti informatika 13.

Szoftvertechnolo gia gyakorlat

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

INFORMATIKAI ALAPISMERETEK

BME MOGI Gépészeti informatika 5.

Programozási technológia

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Objektum Orientált Programozás. 6. JAVA öröklődés 30/1B IT MAN

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java programozási nyelv 6. rész Java a gyakorlatban

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

Java Programozás 3. Gy: Java GUI. Swing, AWT

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Programozási nyelvek Java

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Szoftvertechnológia alapjai Java előadások

BME MOGI Gépészeti informatika 8.

OOP: Java 1.Gy: Java alapok

1. Jelölje meg az összes igaz állítást a következők közül!

A C# programozási nyelv alapjai

Python bevezető foglalkozás Python bevezető foglalkozás

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

BME MOGI Gépészeti informatika 6.

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Szoftvertervezés és -fejlesztés I.

Objektumorientált programozás C# nyelven III.

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

C# feladatok gyűjteménye

Segédanyag: Java alkalmazások gyakorlat

INFORMATIKAI ALAPISMERETEK

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

3. Osztályok II. Programozás II

Programozási nyelvek II.: JAVA

Kalapácsvetés 2016 szöveges

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Algoritmusok és adatszerkezetek II.

Mentsd el code file-t kektura.cs néven, illetve kiterjesztéssel! Másold be a kektura.csv állományt a Projects munkamappa megfelelő almappájába!

Java és web programozás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozás II. ATM példa Dr. Iványi Péter

Klasszikus programozás Java nyelven

Java II. I A Java programozási nyelv alapelemei

Java és web programozás

Programozási nyelvek Java

A C# PROGRAMOZÁSI NYELV

Programozás alapjai 9.Gy: Struktúra 2.

Java II. I A Java programozási nyelv alapelemei

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Objektumorientált Programozás VI.

Java és web programozás

1. Alapok. Programozás II

Az új be- és kimenet könyvtár

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Bevezetés a programozásba I.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Programozás I. Második ZH segédlet

INFORMATIKAI ALAPISMERETEK

Programozás Minta programterv a 1. házi feladathoz 1.

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Programozás I. Második ZH segédlet

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Programozási nyelvek II.: JAVA

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim tipp As Integer

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Bevezetés a programozásba I.

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

és az instanceof operátor

Gyakorló feladatok Gyakorló feladatok

Átírás:

Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18

Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk a szám kitalálása. Beírunk egy tippet, és kapunk egy üzenetet: A szám kisebb a tippedtől! A szám nagyobb a tippedtől! Eltaláltad! A programot írjuk meg, ahogy tudjuk, aztán alakítsuk át az oop elveknek megfelelően, végül alakítsuk át az MVC szemléletnek megfelelően. 24/2

Magyarázatok Programlogika: 1. Generálunk egy véletlen számot (rndnum) 2. Bekérünk a konzolról egy számot 3. Megvizsgáljuk a bekért számot: Írtak be valamilyen adatot? Az adat számmá konvertálható? 4. Ha az adat számmá konvertálható, átkonvertáljuk (tipp) 5. Ha nincs beírt adat, vagy nem konvertálható számmá, hibaüzenetet írunk, és visszatérünk a 2. lépéshez 6. Vizsgáljuk a tipp és az rndnum viszonyát, kiírjuk a kiértékelést 7. Ha nem találtuk ki, visszatérünk a 2. lépéshez 8. Ha kitaláltuk, leáll a program 24/3

Magyarázatok Véletlen szám generálás: 1. lehetőség: java.lang.math osztály double random() metódussal, mely 0-1 között generál véletlen számot: int rnd = (int)(101*math.random()); 2. lehetőség: java.util.random osztály int nextint(n) metódusával, mely a 0 <= x < n tartományban generál véletlen számot: Random rnd = new Random(); int rndnum = rnd.nextint(101); 24/4

Magyarázatok Beolvasás konzolról: Használjuk a java.util.scanner osztály nextline() utasítását: Scanner sc = new Scanner(System.in); String tipps = sc.nextline(); A bekért adat vizsgálata: Hossz ellenőrzése: if (tipps.length()==0) Adat konvertálása számmá: try { int x = Integer.valueOf(tippS); catch (NumberFormatException nfe) {... 24/5 int x = Integer.parseInt(tippS);

A kód import java.util.random; import java.util.scanner; public class Tipper1 { static Scanner sc = new Scanner(System.in); public static void main(string[] args) { Random rand = new Random(); int rndnum = rand.nextint(101); boolean success = false, numok = false; int tipp=0; 24/6

A kód while (!success) { System.out.print("Kérem a tippet : "); String tipps = sc.nextline(); if (tipps.length()==0) {System.out.println("Nem írtál be adatot!"); else { try { tipp = Integer.valueOf(tippS); numok = true; catch (NumberFormatException nfe) { numok = false; System.out.println("Hibás a beírt adat formátuma!"); if (numok) { if (rndnum == tipp) { success = true; System.out.println("Eltaláltad"); if (rndnum < tipp) System.out.println("A szám kisebb a tippedtől!"); if (rndnum > tipp) System.out.println("A szám nagyobb a tippedtől!"); //== end main //== 24/7 end program

Feladat Számoljuk, hogy hányadik tippel sikerül kitalálni a számot. Az eredmény írjuk ki. 24/8

A kód import java.util.random; import java.util.scanner; public class Tipper1 { static Scanner sc = new Scanner(System.in); public static void main(string[] args) { Random rand = new Random(); int rndnum = rand.nextint(101); boolean success = false, numok = false; int tipp=0, db=0; 24/9

A kód while (!success) { System.out.print("Kérem a tippet : "); String tipps = sc.nextline(); if (tipps.length()==0) {System.out.println("Nem írtál be adatot!"); db++; else { try { tipp = Integer.valueOf(tippS); numok = true; db++; catch (NumberFormatException nfe) { numok = false; db++; System.out.println("Hibás a beírt adat formátuma!"); if (numok) { if (rndnum == tipp) { success = true; System.out.println("Eltaláltad!\nTippek száma: "+db); if (rndnum < tipp) System.out.println("A szám kisebb a tippedtől!"); if (rndnum > tipp) System.out.println("A szám nagyobb a tippedtől!"); //== end main 24/10 //== end program

Feladat Próbáljuk úgy átalakítani a kódot, hogy az "üzleti logikát" metódusokba szervezzük. Létrehozandó metódusok: 1. Véletlen egész számot előállító metódus, legyen a neve randomnumber; 2. Adatot beolvasó metódus (neve: readtip), mely kiírja, hogy "Kérem a tippet :", beolvassa azt, és visszaadja a stringet. 3. Adat ellenőrző (check névvel), mely ellenőrzi, hogy üres-e az adat, és hogy számmá alakítható-e. Logikai értéket adjon vissza. 4. Stringet egésszé alakító metódus, legyen a neve StoInt. 5. Kiértékelő metódus (evaluate névvel), mely megkapja a leellenőrzött beolvasott stringet, számmá alakítja, és kiértékeli a tippet (az eredményt kiírja a képernyőre), és számolja a tippeket. Igaz értéket adjon vissza, ha eltaláltuk a számot, hamisat, ha nem. 6. A metódusokat felhasználva írjuk át a főprogramot! 24/11

A kód Véletlen egész számot előállító metódus, legyen a neve randomnumber; public static int randomnumber() { Random rand = new Random(); return rand.nextint(101); Adatot beolvasó metódus (neve: readtip), mely kiírja, hogy "Kérem a tippet :", beolvassa azt, és visszaadja a stringet. public static String readtip() { System.out.print("Kérem a tippet : "); String s = sc.nextline(); return s; 24/12

A kód Adat ellenőrző (check névvel), mely ellenőrzi, hogy üres-e az adat, és hogy számmá alakítható-e. Logikai értéket adjon vissza. public static boolean check(string s) { boolean out = true; if (s.length()==0) { System.out.println("Nem írtál be adatot!"); out = false; if (out) { try { int x=integer.valueof(s); catch (NumberFormatException nfe) { System.out.println("Hibás a beírt adat formátuma!"); out = false; return out; 24/13

A kód Stringet egésszé alakító metódus, legyen a neve StoInt. public static int StoInt (String s) { int x = -1; try { x=integer.valueof(s); catch (NumberFormatException nfe) { System.out.println("StoInt: "+nfe.getmessage()); return x; 24/14

Kiértékelő metódus (evaluate névvel), mely megkapja a leellenőrzött beolvasott stringet, számmá alakítja, és kiértékeli a tippet (az eredményt kiírja a képernyőre), és számolja a tippeket. Igaz értéket adjon vissza, ha eltaláltuk a számot, hamisat, ha nem. public static boolean evaluate(string s) { boolean ok = false; String ms = ""; int tipp = StoInt(s); db++; if (rndnum == tipp) { ms="eltaláltad!\ntippek száma: "+db; ok = true; if (rndnum < tipp) { ms="a szám kisebb a tippedtől!"; if (rndnum > tipp) { ms="a szám nagyobb a tippedtől!"; System.out.println(mS); return ok; 24/15

A kód A metódusokat felhasználva írjuk át a főprogramot! public class Tipper1 { static Scanner sc = new Scanner(System.in); static int db = 0; static int rndnum = 0; static boolean success = false; public static void main(string[] args) { rndnum = randomnumber(); 24/16 while (!success) { String tipps = readtip(); if (check(tipps)) { success = evaluate(tipps); else db++;

Feladat Újabb fejlesztés következik: 1. Vezessünk be egy limit nevű változót, ez legyen a véletlen generálás felső határszáma. Csak ezen kelljen változtatni ahhoz, hogy más tartományban működjön a program. 2. Készítsünk egy tájékoztató metódust (inform néven), mely ismerteti a program működését, használatát. 3. Vezessünk be külön üzenetet arra, ha olyan számot tippelünk, ami kívül esik a határon (pl: -10, vagy 200); (Bővítsük az evaluate működési logikáját!) 4. Vezessünk be változókat, és tartsuk nyilván, hogy milyen határokon belül van a kitalálandó érték (a tippelés során ez a tartomány egyre kisebb). Ha a határokon kívül értéket tippelünk, ilyen tartalmú üzenetet adjon az evaluate metódus. 24/17

A kód Vezessünk be egy limit nevű változót, ez legyen a véletlen generálás felső határszáma. Csak ezen kelljen változtatni ahhoz, hogy más tartományban működjön a program. public class Tipper1 { static int limit = 100; public static int randomnumber() { Random rand = new Random(); return rand.nextint(limit+1); 24/18

A kód Készítsünk egy tájékoztató metódust (inform néven), mely ismerteti a program működését, használatát. public static void inform() { System.out.println("A program generál egy egész számot 0 és " +limit+" között, ezt kell kitalálni!"); System.out.println("Tippelj, és kapsz információt a tippedről!"); public static void main(string[] args) { rndnum = randomnumber(); inform(); 24/19

A kód Vezessünk be külön üzenetet arra, ha olyan számot tippelünk, ami kívül esik a határon (pl: -10, vagy 200); (Bővítsük az evaluate működési logikáját!) public static boolean evaluate(string s) {... if (tipp < 0) ms="a tippelt szám kisebb, mint az alsó határ!"; if (tipp > limit) ms="a tippelt szám nagyobb, mint a felső határ!"; System.out.println(mS); return ok; 24/20

A kód Vezessünk be változókat, és tartsuk nyilván, hogy milyen határokon belül van a kitalálandó érték (a tippelés során ez a tartomány egyre kisebb). Ha a határokon kívül értéket tippelünk, ilyen tartalmú üzenetet adjon az evaluate metódus. public class Tipper1 { static Scanner sc = new Scanner(System.in); static int db = 0; static int rndnum = 0; static boolean success = false; static int limit = 100; static int min = 0; static int max = limit; 24/21

public static boolean evaluate(string s) { Az boolean evaluate ok = false; metódus kódja String ms = ""; int tipp = StoInt(s); db++; if (rndnum == tipp) { ms="eltaláltad!\ntippek száma: "+db; ok = true; if (rndnum < tipp) { 24/22 ms="a szám kisebb a tippedtől!"; if (tipp <= max) max = tipp; //Miért kell az if? if (rndnum > tipp) { ms="a szám nagyobb a tippedtől!"; if (tipp >= min) min = tipp; //Miért kell az if? if (tipp > max) ms="a tippelt szám nagyobb, mint a már ismerhető legnagyobb érték!"; if (tipp < min) ms="a tippelt szám kisebb, mint a már ismerhető legkisebb érték!"; if (tipp < 0) ms="a tippelt szám kisebb, mint az alsó határ!"; if (tipp > limit) ms="a tippelt szám nagyobb, mint a felső határ!"; System.out.println(mS); return ok;

Házi feladat Úgy átírni a kódot, hogy a teljes üzleti logika egy másik (mondjuk Controller nevű) osztályba kerüljön! A főprogram valahogy így nézzen ki: public static void main(string[] args) { rndnum = con.randomnumber(); con.inform(); while (!success) { String tipps = con.readtip(); if (con.check(tipps)) { success = con.evaluate(tipps); else con.dbplus(); Ahol a con egy Controller példány. 24/23

VÉGE VÉGE 24/24