Ismétléses utasítások – A For Ciklus

Ebben a témában: Alapok, C Programozas, Java Programozas

Az előző cikkben már megnéztük az egyik legalapvetőbb programozási eszközt, a feltétel vizsgálatot. Most ehhez hasonlóan szeretnék bemutatni egy szintén nagyon alapvető elemet, az ismétléses utasítás végrehajtást. Gyakran találkozunk olyan feladattal, amikor van egy nagyobb bemeneti adathalmaz és annak minden elemén ugyanazt az utasítást kell végrehajtani.


Ha a mostani ismereteinkkel közelítenénk meg ezt a problémát és feltesszük, hogy ismerjük, hogy pontosan mennyi bemeneti adatunk van, akkor minden feldolgozási lépést leprogramoznánk minden bemenetre. Ez a módszer maximum 5-10 adat esetén még esetleg működőképes lehet, de el lehet képzelni, hogy több száz vagy akár még több adat esetén már kivitelezhetetlen. Pontosan ilyen problémákra találták ki az utasításismétlést, ami az alábbiak szerint épül fel:

  1. Meddig kell ismételni az utasításmagot
  2. Maga az utasításmag

 

Addig hajtja végre a program újra és újra ugyan azt a blokkot, ameddig a megadott feltétel teljesül. Tehát mondjuk, ha ötvenszer kell végrehajtani egy kiírató utasítást, akkor az valahogy így nézne ki:

i := 0

[i < 50]

{

Kiíratás

}

 

Ennek megvalósítására több szintaktikai eszköz létezik C-ben és Java-ban is, de ezek egyenértékűek, átjárhatóak. Én azt gondolom, hogy a legismertebb az úgynevezett FOR Ciklus, ami az alábbiak szerint épül fel:

for(inicializálás; feltételvizsgálat; paraméter kezelés)

{

utasításmag

}

  1. Egy FOR Ciklusnak 3 bemenete van:
    1. inicializálás – az első ciklus előtt egyszer fog megtörténni
    2. feltételvizsgálat – minden ciklus után egyszer fog megtörténni a paraméter kezelés után
    3. paraméter kezelés – minden ciklus után egyszer fog megtörténni a feltételvizsgálat előtt
  2. Utasítás mag – minden ciklusban végrehajtódik egyszer

Ez egy nagyon tömör és nagyon hatékony módszer, hogyha ugyanazokat az utasításokat kell egymás után többször is végrehajtanunk. A 3 bemeneti paraméter között nem kötelező, hogy szoros összefüggés legyen, de itt ténylegesen csak olyan adatokat szabad megadni, ami a végrehajtás számát befolyásolja. Illetve a mostani feltételvizsgálat hasonlóképen működik, mint a múltkor bemutatott feltételvizsgálat, lehet egyszerű vagy komplex. Ez a rész tetszőleges feltételt tartalmazhat, figyelhet eseményeket vagy határokat egy bemeneti adathalmazon. Amit még fontos kiemelni, hogy az inicializáló részben definiált változó, az utasításmagban is elérhető.

 

Az előbbi pszeudokód megvalósítása FOR Ciklussal:

for(int i=0; i<50; i++)

{

System.out.println(„Hello_” + i);

}

 

Nézzünk egy nagyon egyszerű gyakorlati példát:
Kérjünk be a felhasználótól számokat, vesszővel elválasztva, majd adjuk meg a számok átlagát.

 

(more…)

Feltételvizsgálat a Programozásban

Ebben a témában: Alapok, C Programozas, Java Programozas

A való életben rengetegszer kell meghoznunk különböző döntéseket. Ilyenkor általában először mérlegeljük a lehetőségeket majd azoknak megfelelően cselekszünk. Ez a gondolkodás olyan nagy hatással van az egész életünkre, hogy a programozási nyelvekben is megjelenik.

 

A programozásban nagyon sokszor fordul elő olyan feladat, amikor bizonyos feltételek teljesülését kell vizsgálni, a feltételek teljesülésétől vagy nem teljesülésétől függően pedig végre kell hajtani különböző utasításokat. Ezek a vizsgálatok a HA – AKKOR – EGYÉBKÉNT szerkezetben valósulnak meg. Ilyen feltétel vizsgálatokat leggyakrabban a program bemeneti paraméterein végzünk, de alkalmazhatjuk kivételkezelésre vagy éppen azt is megvizsgálhatjuk, hogy egy műveletet sikeresen végre tudtunk-e hajtani. Mivel nagyon gyakran van rá szükség ezért a legtöbb programozási nyelvben egy alapvető nyelvi elem a feltétel vizsgálat. Így olyan nyelvtani mondatok fordíthatóak át egy programozási nyelvre, mint például a HA szerda van, AKKOR nyolckor, EGYÉBKÉNT kilenckor kelek.

Vegyünk egy nagyon egyszerű példát és nézzük meg pszeudokódban, hogy ez hogyan néz ki:
Először gondolok én egy számra majd gondolj te is egy számra, HA a két szám összege páros AKKOR én nyertem EGYÉBKÉNT te nyertél:

HA

    • Az Én számom és Te számod összege Páros

AKKOR

    • „Én nyertem”

EGYÉBKÉNT

    • „Te nyertél”


Tehát egy feltétel vizsgálatnak mindig legalább 2 része van, legfeljebb pedig 3:

  1. A feltétel
  2. Mit kell csinálni, ha a feltétel teljesül
  3. Mit kell csinálni, ha a feltétel nem teljesül (opcionális, ha nincs definiálva, akkor nem csinálunk semmit)

A feltétel lehet komplex vagy egyszerű. Egyszerű feltétel esetén, csak egyetlen vizsgálatunk van, komplex esetben viszont akár több feltétel egyidejű teljesülését is tudjuk vizsgálni valamilyen kapcsolatban. Ez a kapcsolat általában VAGY vagy ÉS kapcsolat szokott lenni.

  • VAGY kapcsolatban elegendő, ha a feltétel valamely része teljesül: HA süt a nap VAGY hétvége van, AKKOR boldog vagyok.
  • ÉS kapcsolatban pedig minden feltételnek egyszerre kell teljesülnie: HA van itthon sonka ÉS tojás AKKOR rántottát csinálok


Nézzük meg a pszeudokódunkat C és Java programozási nyelven:

(more…)

Önfejlesztés, Tanulás

Ebben a témában: Onfejlesztes

Hogyan érdemes megtanulni programozni, hogyan érdemes elkezdeni egy programozási nyelv elsajátítását?

 

 

Korábban már kifejtettem, hogy ha teljesen magadra vagy utalva, akkor szerintem a nulladik lépés, hogy kitaláld, hogy mivel szeretnél hosszútávon foglalkozni és melyik az a programozási nyelv, amivel a legkönnyebben el tudod érni a céljaidat. Érdemes erre a nulladik lépésre elegendő időt szánni, mert ez nagyban segíteni fogja a későbbi haladásodat.

Ha már megtaláltad a számodra legideálisabb programozási nyelvet, a következő lépés az alapok elsajátítása. Egy bizonyos szint után valószínűleg szükséged lesz egy megfelelő tanárra, aki tud neked segíteni, tud téged vezetni, tanítani. Azonban nem szabad elfelejteni, hogy a munka oroszlánrésze még hátravan, a tanulás jelentős része rád vár. Nem azon a heti 1-2 alkalmon fogsz megtanulni programozni, elengedhetetlen, hogy te magad is gyakorolj és próbálkozz.

  • Erőfeszítéseket kell tenni? Igen, biztosan.
  • Sok munka? Igen, sok munka.
  • Nehéz lesz? Nem lesz könnyű, de meg lehet csinálni.

 

Ez elhivatottság, akarat és célok nélkül nem fog menni. Sokszor lesz olyan, hogy majd inkább a TV-t néznéd vagy kimennél sétálni a szép időbe. De ez mindig ilyen, valamit fel kell áldoznod, hogy ha el akarod érni a céljaidat. A befektetett munka mindig meghozza a gyümölcsét.

 

Csak magamat tudom ismételni, rengeteget kell gyakorolni, rengeteg feladatot kell megoldani. De az eredmények hamar jönni fognak, programozásnál szerencsére az ember nagyon gyorsan kap visszajelzéseket.

Rengetegszer volt már olyan, hogy napokig próbálkoznom kellett egy-egy feladat megoldásával, míg végül sikerült megtalálni a jó megoldást. Ez persze ilyenkor mindig hatalmas öröm. Van azonban amikor már tényleg nincs az embernek több ötlete, ilyenkor mindig érdemes segítséget kérni. Nekem a legemlékezetesebb ilyen helyzet az volt, amikor grafika házit kellett csinálnom az egyetemen és már körülbelül működött, de még volt benne hiba és egyszerűen elakadtam. Majd megmutattam az egyik évfolyamtársamnak, ő pedig körülbelül 2 perc alatt kiszúrta azt, amit én napokig nem találtam.

 

(more…)