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

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

A fizetendő összegből a 35 év fölötti tulajdonos 20 % kedvezményt kap.

A fájlkezelés alapjai (titkosítás Caesar kóddal)

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Bevezetés a programozásba I.

Windows alkalmazások készítése. A Windows rendszerben a felhasználó hozzászokott a menü, az eszköztár és a többalakos programok használatához.

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Egyszerű példaprogramok gyakorláshoz

BME MOGI Gépészeti informatika 7.

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 13.

8. gyakorlat Pointerek, dinamikus memóriakezelés

BME MOGI Gépészeti informatika 6.

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

I. 288.: Utcai WiFi térkép

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

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

LibreOffice Makró Basic

Osztályok. 4. gyakorlat

munkafüzet open eseményéhez

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

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

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

Eljárások, függvények

4. GYAKORLAT. Rövid elméleti összefoglaló. Írjunk függvényt a téglalap területének kiszámítására: Visual Basic függvény

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Függvények ábrázolása

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

MT Algoritmusok és V Algoritmusok és isual Basic programoz ás alapjai isual Basic programoz Algoritmus Muhammad Ibn Músza Al-Hvárizmi

VISUAL BASIC ALAPISMERETEK

9. Játék a véletlennel

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

3. Osztályok II. Programozás II

1. Alapok. Programozás II

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

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

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

Programozás alapjai. 7. előadás

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

Java II. I A Java programozási nyelv alapelemei

Programozás I gyakorlat

C#---Access adatbáziskezelési gyakorlat

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

JAVA PROGRAMOZÁS 3.ELŐADÁS

Tájékoztató. Használható segédeszköz: -

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

BME MOGI Gépészeti informatika 1.

C# 6 - a Gyakorlat Windows Form alkalmazások

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

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

Informatika terméktervezőknek

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Alprogramok, paraméterátadás

Kalapácsvetés 2016 szöveges

HVK Adminisztrátori használati útmutató

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

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.

Nevelési év indítása óvodák esetén

Mappák megosztása a GroupWise-ban

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

BME MOGI Gépészeti informatika 5.

Java programozási nyelv 5. rész Osztályok III.

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Programozás alapjai. 5. előadás

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

INFORMATIKAI ALAPISMERETEK

Online Nevezési Rendszer

INFORMATIKAI ALAPISMERETEK

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási technológia

Algoritmizálás és adatmodellezés tanítása 1. előadás

Java II. I A Java programozási nyelv alapelemei

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

MATLAB alapismeretek III.

Véletlenszám generátorok. 6. előadás

Csavarda mobil áruház

OOP: Java 8.Gy: Gyakorlás

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Swing GUI készítése NetBeans IDE segítségével

Java és web programozás

OOP #14 (referencia-elv)

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Egyéni párbeszédpanel Excelben

Java programozási nyelv

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

A JavaScript főbb tulajdonságai

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Átírás:

Számkitaláló A gép gondol egy számot 1 és 100 között, s a felhasználónak ezt a számot kell tippeléssel eltalálnia. Minden tipp után a program megmondja, hogy az kisebb vagy nagyobb-e, mint a gondolt szám. A következő ábrán programunk képernyőjét láthatjuk futás közben: Készítsük el az űrlapot frmszk néven, és helyezzük el rajta a megfelelő vezérlőket az ábra szerint! A címke sorába egyenlőre kerüljön a Számkitaláló szöveg, a játékok számolását később oldjuk meg. A címkék és a szövegmező megjelenése további beállításokat igényel. Mindkét címke AutoSize tulajdonsága False, míg a lbltsz címke BorderStyle tulajdonsága Fixed3D, az lblért címkéé pedig FixedSingle. Végül az lbltsz és a txttipp mezők az adatokat jobbra igazítva tartalmazzák, míg az lblért középen, így ennek megfelelően módosítanunk kell TextAlign tulajdonságukat is. Legyen a konstans neve x, értéke pedig 50. Vezessük be továbbá a tipp nevű változót, melybe a felhasználó által megadott tippet olvassuk át a txttipp szövegmezőből. Eddigi tudásunk alapján az OK gombhoz rendelt kód a következő: Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim tipp As Integer Const x = 50 'Const=konstans, amit ki kell találnunk tipp = Val(txtTipp.Text) ' a megadott tippet olvassuk be If tipp > x Then lblért.text = "A tipp nagy!" If tipp < x Then lblért.text = "A tipp kicsi!" If tipp = x Then lblért.text = "Gratulálok, eltalátad!" Véletlenszám generálása Az Új_játék gombra kattintva egy új számot kell a gépnek elrejtenie. Ezt a véletlenszámgenerátor segítségével oldhatjuk meg, amely egy 0 és 1 közé eső véletlenszerű számot állít 1

elő. Ebből 1 és 100 közé eső egész szám úgy keletkezik, hogy megszorozzuk 100-zal és lefelé kerekítjük: MsgBox(Math.Floor(100 * Rnd()) + 1) Ha az előző sort többször egymás után végrehajtjuk, a kapott számok egyenletesen oszlanak el 1 és 100 között, de a programot újraindítva ugyanazt a sorozatot kapjuk. Az Rnd függvény tehát ún. álvéletlen számokat generál. Ez úgy történik, hogy kiindulva egy adott számból, a sorozat következő tagját rendre az előzőből számolja ki. Ha a sorozat első tagja ugyanaz, a többi tag is meg fog egyezni. A sorozatot úgy tehetjük véletlenszerűvé, hogy tagját a Randomize() utasítás használatával a rendszeridőből állítjuk be. Új szám elrejtése Töröljük ki az OK_Click eljárásból a const x=50 sort, mert a továbbiakban az x véletlenszámot az új Új_játék gombra kattintva kívánjuk előállítani: x = Math.Floor(100 * Rnd()) + 1 A változó deklarációját elvégezhetjük a modul deklarációs részében is, ekkor a változó az egész modulból elérhető lesz. Az ilyen, ún. modulváltozók deklarációjában a Dim utasítás is használható, azonban a Private áttekinthetőbbé teszi programunkat: A tippek száma Private x, tsz As Integer A felhasználó tippjeit egy változó segítségével számolhatjuk. Ennek neve legyen tsz. Azonnal látható, hogy ezt is a modul elején kell deklarálnunk, mivel csal az OK_Click eljárásban használjuk ugyan, án új szám elrejtésénél mindig törölni kell az értéket, amit az Új_játék_Click eljárásban tehetünk meg. Így a modul deklarációs része a következő lesz: Private s, tsz As Integer 2

Az Új_Játék_Click eljárást bővítenünk kell a tsz=0 sorral, az OK_Click eljárás végét pedig a következő két sorral: A játékok száma tsz = tsz + 1 lbltsz.text = tsz.tostring Hasznos lehet, ha a játékok számát is követjuk pl. úgy, hogy az űrlap címsorába mindig kiírjuk, hányadik menet zajlik. Ehhez egy újabb változót kell bevezetnünk, ezúttal az Új_Játék_Click eljárásbal pl. jsz néven. A változót a többi eljárásban nem használjuk, tehát deklarálhatjuk ebben az eljárásban. Az éppen aktuális űrlapra a Visual Basicben Me kulcsszóval hivatkozhatunk, így bóvítés után az eljárás a következő: Dim jsz As Integer tsz = 0 x = Math.Floor(100 * Rnd()) + 1 'új játék esetén frissíteni kell a címkéket: lbltsz.text = tsz.tostring lblért.text = "" 'Érdemes törölni a szövegmező tartalmát is: txttipp.text = "" 'A játékok számának megadása jsz=0+1-ről fog indulni: jsz = jsz + 1 'Me az aktív űrlapot jelöli: Me.Text = "Számkitaláló - " & jsz & ".játék" Kipróbálva a programot, mindig a Számkiatláló 1.játék szöveg jelenik meg a címkében! A Dim kulcsszóval létrehozott változó az sornál törlődik a memóriából, majd amikor a felhasználó ismét rákattint az Új_Játék gombra, a Dim-mel kezdődő sorban újra létrejön a 0 kezdőértékkel, melyet a jsz=jsz+1 sor megnövel Használjuk a Dim helyett a Static kulcsszót! A Static kulcsszóval deklarált ún. statukus változó az eljárásából való kilépéskor nem szűnik meg és értékét is megtartja, ám a program más eljárásaiból nem érhető el. Utolsó simítások Static jsz As Integer Felhasználóbarát megoldás, ha a program eleve egy elrejett számmal kezd, vagyis induláskor mitegy rákattint az Új_Játék gombra. Erre a lehetőséget az űrlap Load eseménye adja meg. 3

Az űrlapok Load eseménye akkor következik be, amikor az űrlap betöltödik. Ennek megfelelően ebbe az eseménykezelő eljárásba helyezhetjük az űrlap egyéni beállításait, de itt adhatjuk meg az űrlaphoz tartozó változók kezdeti értákeit is. Ezt a folyamatot inicializáslásnak nevezik. Az űrlap ilyenkor még nem látható, tehát ha valamit rajzolunk rá, az nem tud megjelenni. Az frmszk_load eseményt legegyszerűbben úgy érhetjük el, hogy kettőt kattintunk tervező nézetben az űrlap egy üres területére. Az Új_Játék_Click esemény meghívásátn túl ide kell tennünk a véletleszám-generátor kezdeti értékét beállító Randomize utasítást is: 1. Számkitaláló 1.1 Private Sub frmszk_load(byval sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() ' véletlen szám generálás Új_játék_Click(sender, e) 'Új játék click eseményének meghívása Fejlesszük tovább programunkat úgy, hogy amikor a felhasználó eltalálta a számot, a program értékelje a felhasználó ügyességét! Bővítsük a OK gomb klikk eleményét: 2. Számkitaláló 2.0 Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim stat As Double ' (2)hanyadik tippnél járunk stat = 1 / tsz ' (6) statisztikánk = 1 (a majdani találat) / a tippek száma lblstat.text = stat * 100 ' (6) megszorozzuk 100-zal hogy százalékosan kapjuk meg Fordítsuk meg a programot! A gép tippeljen az általunk kitalált számra! Legfeljebb hány tippel található el a gondolt szám? 4

Public Class frmszk Private gondolt, tippelt, tippszám, tsz As Integer Private Sub Tovább_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tovább.Click gondolt = Val(txtGondolt.Text) lbltippelt.text = tippelt tippszám = tippszám + 1 lbltippszám.text = tippszám If tippelt > gondolt Then tippelt = Math.Floor(tippelt * Rnd()) + 1 lblért2.text = "Kisebb a gongolt szám!" ElseIf tippelt < gondolt Then tippelt = Math.Floor((100 - tippelt) * Rnd()) + 1 lblért2.text = "Nagyobb a gondolt szám!" Else lblért2.text = "Talált!" End If Private Sub Új_játék_Click(ByVal sender As System.Object, ByVal e Static jsz As Integer 'A Static kulcsszóval deklarált ún. statikus változó az eljárásból való kilépéskor nem szűnik meg és értékét is megtartja, ám a program más eljárásaiból nem érhető le. tsz = 0 '(2)tippszám txtgondolt.text = tsz.tostring tippszámot szövegként ' (3) kiírjuk a jsz = jsz + 1 ' (3) a játék számának növelése 'Me az aktív űrlapot jelöli: Me.Text = "Számkitaláló - " & jsz & ". játék" futó programunk fejlécbe való kiiratás tippszám = 0 lbltippszám.text = tippszám lbltippelt.text = 0 ' (3) a End Class 3. Alakítsuk át az eredeti programunkat hideg meleg barkochbává! Azaz a tippre adott értékelés az eltérés mértékétől függően legyen hideg, langyos, meleg, forró! 5