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



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

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

8. gyakorlat Pointerek, dinamikus memóriakezelés

IBAN: INTERNATIONAL BANK ACCOUNT NUMBER. I. Az IBAN formái

Web-programozó Web-programozó

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Készítette: Nagy Tibor István

Egyszerű példaprogramok gyakorláshoz

Maximum kiválasztás tömbben

Felvételi tematika INFORMATIKA

C programozási nyelv Pointerek, tömbök, pointer aritmetika

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök.

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

10. gyakorlat Struktúrák, uniók, típusdefiníciók

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Bevezetés a programozásba I.

A JavaScript főbb tulajdonságai

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

5. Gyakorlat. struct diak {

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Bevezetés a programozásba I.

C++ programozási nyelv Konstruktorok-destruktorok

Osztályok. 4. gyakorlat

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

Adatszerkezetek I. 1. előadás

OOP #14 (referencia-elv)

Programozási segédlet

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

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Java II. I A Java programozási nyelv alapelemei

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Számelmélet Megoldások

7. Strukturált típusok

7. fejezet: Mutatók és tömbök

Objektum Orientált Programozás V.

Java II. I A Java programozási nyelv alapelemei

3. Osztályok II. Programozás II

Algoritmusok - pszeudókód... 1

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

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

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Gyakorló feladatok az 1. nagy zárthelyire

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

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

Objektumorientált Programozás V.

Rekurzió. Dr. Iványi Péter

Gyakorló feladatok. Az alaputasítások olyanok, mint C-ben. (Részleteket ld. segedletek/02.pdf vagy bármelyik Java tutorial.)

Bevezetés a programozásba I.

Programozási nyelvek Java

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

3 A C programozási nyelv szintaktikai egységei

Bevezetés a programozásba. 5. Előadás: Tömbök

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

CSORDÁS JÁNOS: A PROGRAMOZÁS ALAPJAI VISUAL BASIC-BEN

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozási nyelvek Java

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Számelmélet

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

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Occam 1. Készítette: Szabó Éva

hatására hátra lép x egységgel a toll

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Oszthatósági problémák

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozási nyelvek II.: JAVA, 4. gyakorlat

MÁV AB

2018, Funkcionális programozás

Programozási alapismeretek 3. előadás

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Algoritmusok Tervezése. 5. Előadás Visual Basic 2. Dr. Bécsi Tamás

Adatszerkezetek 2. Dr. Iványi Péter

Programozás I gyakorlat

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

Informatika terméktervezőknek

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Bevezetés a C++ programozási nyelvbe

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Egyszerű programozási tételek

1. gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

A programozás alapjai 1 Rekurzió

.Net adatstruktúrák. Készítette: Major Péter

JAVASLAT a HB nyomtatványok és csekkszelvények gyártására

Java programozási nyelv

A C programozási nyelv I. Bevezetés

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

A C programozási nyelv I. Bevezetés

KENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések

6. A Pascal nyelv utasításai

Átírás:

Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző jegyekkel próbálják meg kiküszöbölni. Az ellenőrző jegyeket a többi számjegyből számolják és az adat végére illesztik, majd minden beolvasáskor ellenőrzik. Ma már gyakorlatilag minden árucikken szerepel a termék azonosítására szolgáló, általában 13 jegyű számból képezett vonalkód. A 13 jegyből az első három az országot azonosítja, a következő 9 jegy pedig a gyártót és azon belül a terméket. Az ország azonosítója Magyarország esetében 599. Az utolsó jegy az ellenőrző jegy, amelyet a következő szabály segítségével határozhatunk meg: Szorozzuk meg a páratlan helyeken álló számjegyeket 1- gyel, a páros helyen állókat pedig 3-mal és a kapott számokat adjuk össze! Ha az így kapott összeg utolsó számjegyét kivonjuk 10-ből, megkapjuk a vonalkód utolsó jegyét. Például, ha egy termék vonalkódjának első 12 jegye 599898350115, akkor az 5*1+9*3+9*1+8*3+ +5*3 összeg értéke 135. Mivel az összeg utolsó jegy 5, a vonalkód ellenőrző jegye is 10-5=5 lesz. Az összeg utolsó jegyét Visual Basicben annak tízes maradéka adja, hiszen 135 Mod 10=5. A fenti számítást kényelmesen elvégezhetjük, ha az első számjegyet v(1)-gyel, a másodikat v(2)-vel, a harmadikat v(3)-mal, a tizenkettediket v(12)-vel jelöljük, hiszen a számítás algoritmusa ebben az esetben a következő: s=0 Ciklus i=1-től 12-ig Ciklus vége Ha i páratlan, akkor s=s+v(i) Ha i páros, akkor s=s+3*v(i) utolsó =10 Mod 10 Az v(1), v(2), v(12) egy egész számokból álló sorozat, ún. egydimenziós tömb. Az azonos típusú elemek sorozatát tömbnek nevezzük. Az egydimenziós tömb vagy vektor minden egyes elemére két adattal, a tömb nevével és az elem sorszámával hivatkozunk, például: v(3). VB-ben a v egydimenziós tömböt, melynek elemeit az 1, 2, 12 index azonosítják, a következőképpen deklaráljuk: Dim v(12) As Integer Kész programunk két ciklust tartalmaz: az elsőben beolvassuk a vonalkód jegyeit, a másodikban kiszámítjuk az összeget. Azt, hogy a második ciklusban az i ciklusváltozó éppen

páros vagy páratlan, az i szám kettes maradéka adja, mivel minden páratlan szám 2-vel osztva 1 maradékot ad. Imports System.Console Module Module1 Sub Main() Dim v(12) As Integer Dim s, utolsó As Integer For i As Integer = 1 To 12 Next s = 0 Write(i & ".jegy = ") v(i) = ReadLine() For i As Integer = 1 To 12 Next If i Mod 2 = 1 Then s = s + v(i) If i Mod 2 = 0 Then s = s + v(i) * 3 utolsó = 10 - s Mod 10 utolsó) WriteLine("A vonalkód ellenőrző jegye = " & ReadLine() End Sub End Module Tömb megadásának módjai A tömböt a szokásos módon, a Dim v(12) As Integer deklarációs sorral hoztuk létre. A Visual Basicben a vektor elemeinek indexét 1-től szokás indítani, valóságban ez a deklarációs létrehoz egy 0. indexű elemet is, így a tömbnek véglegesen 13 eleme van. A programozó dönti el, hogy használja-e a 0. indexűt vagy sem. Deklaráláskor csak azt index legnagyobb értékét és értelemszerűen az index típusát kell megadnunk. A tömböt megadhatjuk az elemek felsorolásával, ekkor azonban akkor is kötelesek vagyunk egy 0. elemet is felvenni, ha nem használjuk Dim s(i) As Integer = (0, 5, 9, 9, 8, 9, 8, 3, 0, 1, 1)

A következő deklaráció egy kétdimenziós tömböt (mátrixot) hoz létre, amely egy 100x50-es táblázat kezelésére szolgál, tehát mintegy 5000 elemű: Dim pont (100, 50) As Double Kétdimenziós tömb vagy mátrix esetén minden elemre két sorszámmal (indexszel) kell hivatkoznunk, pl. pont (30,20). Dim xyz() As Integer Az ilyen tömböt dinamikus tömbnek nevezik. Dinamikus tömb esetén az elemek számát a kódban a ReDim utasítással adhatjuk meg és ezzel akár később is módosíthatjuk. Módosítás esetén a Preserve kulcsszó lehetővé teszi, hogy a tömb elemei (amennyit az új maximális index lehetővé tesz) megmaradjanak: ReDim xyz (20) ReDim Preserve xyz (30) Összetett típusok Névtér: System A tömbök objektumok! Hivatkozás-típusú változó mutat rájuk. A tömb2 = tömb1 értékadás a 2. tömbre mutató hivatkozást átállítja az 1-es tömbre, így mindkét változó ugyanarra a tömbre fog mutatni! (A program a 2-es tömböt törli a memóriából, ha más hivatkozás nem mutat rá.). A tömb duplikálásához az értékadás helyett használjuk a CopyTo metódust! Megjegyzés: a többi objektummal ellentétben a tömb létrehozásánál a New operátor után nem az objektum konstruktorát hívjuk meg, csupán a tömbelemek típusát jelezzük. A nem

publikus konstruktor meghívása helyett szükség esetén használhatjuk a CreateInstance osztálymetódust (futás alatti kötés). Hatékonyabb programot írhatunk, ha tömb helyett listát használunk. Különösen a tömbméret módosítása vesz el sok időt.

Feladatok: 1) ISBN szám A könyvek egyértelmű azonosítására az ún. ISBN számot használják, amely ma megegyezik a vonalkóddal. 2007 előtt azonban ez egy tízjegyű azonosító volt, melynek utolsó jegye az ellenőrző kód. Ezt a jegyet úgy számították ki, hogy az első jegyet 1-gyel, a másodikat 2-vel, a harmadikat 3-mal, a kilencediket 9-cel megszorozták. A kapott számokat összeadták és vették az összeg 11-es maradékát (10 esetén X-et írtak.) Írjunk programot a fenti eljárásra! 2) Átlag és szórás Olvassuk be egy adott létszámú osztály informatika osztályzatait és határozzuk meg a jegyek átlagát és szórását! 3) Töltsünk fel egy 6 elemű tömböt véletlen számokkal, és keressük meg a tömb legkisebb, és a legnagyobb elemét, számítsuk ki a tömb elemeinek átlagát, valamint írassuk ki az ablakba a tömb elemeit! 4) Töltsünk fel két (0-4) elemű tömböt (1-10) közötti véletlen számokkal és a számítsuk ki a két tömb elemeinek szorzatösszegét, a két tömb elemeinek különbségéből képzett átlagát!

5) Tervezzünk programot, amely kiszámítja egy adott szöveg hosszát, valamint levágja a bal oldalon, a jobb oldalon, ill. mindkét oldalon lévő üres karaktereket!