2. Elemi programozás


   A címben az elemi szó azt jelenti, hogy igen egyszerű. Fő-
leg eleinte kivétel nélkül olyan feladatok szerepelnek,  ame-
lyeknél már-már nagyképűség  az  algoritmus  keresését  és  a
programozást szétválasztani: kifejezetten egy egyszerű  kódo-
lást kell csak  végrehajtani.  Eleinte  három-öt  utasításból
állnak a megoldások, a fejezet közepe táján 5-10 sor  hosszú-
ságú az átlag, és még a végén is ritka a tíz utasításnál  jó-
val hosszabb.
   Az elemi jellegből és az  iskolai  helyzetből  következik,
hogy elsősorban BASIC programok írása a cél,  bár  a  legtöbb
feladat megoldható más nyelven is. Nevezhetjük  ezt  a  részt
'utasítás-orientáltnak' is:  nem  titkolt  szándék  az  egyes
(BASIC) utasítások viszonylag gyors begyakoroltatása.
   Az alfejezetek mindig olyan feladatokkal  kezdődnek,  ahol
egy egyszerű 'programocskáról' kell véleményt mondani. Ezeket
még az egyszerűbbnél is egyszerűbbnek tartjuk, passzív  tudás
is elég hozzájuk: mintegy felvezetik a hasonló programok meg-
írását. Ezek a bevezető példák kizárólag BASIC nyelvűek.
   A 'nehezebbek' közé sorolt feldatok  sem  igazán  nehezek,
lehetnének más fejezetek legegyszerűbb példái is.  Közülük  a
könnyebbekhez csak egy-egy utasítás nem triviális  használata
kell, míg a legnehezebbekhez egy apró, egyedi  ötlet  szüksé-
ges. Ezeknél a feladatoknál -főleg e fejezet  közepétől-  már
javasolható, hogy szenteljünk külön figyelmet az  algoritmus-
nak is. A nehézségi fokozat megállapításánál is a BASIC nyel-
vű megoldást vettük alapul.

Javasolt irodalom:

1. Lőcs Gy.: A BASIC és a Kíváncsi.
   Tankönyvkiadó, 1985.
2. Appel Gy. - Kőhegyi J. - Zsakó L.: Számítógépes feladatok.
   INTERPRESS, 1985.
3. Lőcs Gy.: A BASIC és a Kíváncsi. Feladatgyűjtemény.
   Tankönyvkiadó, 1986.

   Ebben és a következő fejezetben több feladat épít lineáris
algebrai ismeretekre. Akiknek ezek a fogalmak nem  ismerősek,
ajánljuk a következő tankönyvet:

4. Fried E.: Lineáris algebra (tankönyv a  ginmnáziumok  spe-
   ciális matematikai osztályainak).
   Tankönyvkiadó, 1986.



2.1 Kifejezések (függvények) kiértékelése


   Néhány igen egyszerű alapfogalom tisztázása a cél.  Számok
és szövegek megjelenítése; azonosítók, függvények és  kifeje-
zések, értékadás programban és futás közben -mindezek 3-5 so-
ros (utasításos) programokkal.
   A képletek kiszámítása, mértékegységek  átváltása  nemcsak
matematika órán lehet hasznos, hanem a fizika, a  kémia  stb.
tárgyakban is segíthet.
     Az első öt feladat a passzív tudást ellenőrzi, a  továb-
biakban (BASIC) programot kell írni.



2.2 Ciklusok


   Az alábbi rész már korántsem annyira BASIC-függő, mint  az
előző. Ciklust szervezni ugyanis minden programozási nyelvben
lehet, a magasszintű nyelvekben eléggé hasonló módon. A BASIC
FOR-NEXT (és újabban DO-WHILE(UNTIL)) párját más angol szavak
(REPEAT, FOR-DO stb.) helyettesíthetik, de a dolog  logikája,
az algoritmus nagyon hasonló.
   Hangsúlyozzuk, hogy manapság  a  ciklusok  szinte  kivétel
nélkül zárt struktúrák: ránézésre azonnal szembetűnhet a kez-
detük és a végük. Jobb nyelveken  (jobb  gépeken)  ez  még  a
struktogramoknál megszokott módon kiugratással is hangsúlyoz-
ható. Igyekezzünk ezt a lehetőséget nem tönkretenni  átgondo-
latlan, csapongó programozással. Hosszabb  programoknál  hal-
latlan előny az áttekinthetőség, amit viszont a rövidebb gya-
korló feladatoknál kell megszokni.
   Egyszerű ciklusnak pontosan azt nevezzük, amikor  egyetlen
tevékenységet kell többször (esetleg apró módosítással)  vég-
rehajtani. A struktúra zártsága szinte  magától  értetődő,  a
'tevékenység' könnyen  közrefogható  egy  FOR-NEXT  (DO-WHILE
stb.) párral. Ilyen jellegű az első néhány feladat. Ezeknél a
feladatoknál nem szükséges sehol az IF-es szervezés, sőt  ki-
fejezetten struktúrálatlan megoldás...
   A fejezet közepe annyival nehezebb, hogy a cikluson  belül
is kell valami nem triviálisat  (A=A+B,  kamatszámítás  stb.)
csinálni. Végül egyszerű egymásbaágyazott ciklusok és  néhány
trükkös feladat jelentik a csúcsot.


2.3 Elágazások


   A programozásnak az elágazás (vezérlésátadás,  ugrás)  sok
gyakorlást igénylő  része.  IF-THEN-(ELSE)  szerkezet  szinte
minden nyelvben létezik és alig van különbség  a  használatá-
ban. A GO TO is szinte azonos az egyes nyelvjárásokban, de  a
szakemberek óva intenek sűrű használatuktól - bár igen körül-
ményes teljesen elkerülni. Még az END (STOP) jelent némi  új-
donságot az alfejezetben.
   Az első 16  feladat  megoldható  egyetlen  elágazással,  a
83-85. és 89-90. passzív jellegűek. Középtájon (97-111.)  már
több IF-re is szükség lehet, illetve egyéb (matematikai  vagy
már tanult számítástechnikai) tudnivalók is kellhetnek. A be-
fejező részben pedig a gyakorlatlanok könnyen elveszhetnek  a
kapcsolódó feltételek között.


2.4 Szövegek


   Ebben a fejezetben olyan egyszerű  feladatok  szerepelnek,
amelyekkel rávilágíthatunk arra hogy a számítógép  nemcsak  a
matematikában, fizikában  alkalmazható.  Könnyen  és  gyorsan
megoldható példák ezek, általuk  kevés  programozási  ismeret
birtokában is hamar sikerélményhez juttathatunk.
   A fejezet feladatait humán beállítottságúak érdeklődésének
felkeltésére is alkalmasnak tartjuk.
   Az eredményes munkához a szövegkezelő függvények, az  elá-
gazások és ciklusok ismerete szükséges. A számítógép az angol
ABC betűit az ABC-sorrend szerint hasonlítja össze. Ha  vala-
ki a magyar ABC ékezetes betűit is használja,  akkor  ez  már
nem igaz, az összehasonlítás rossz eredményt ad.  Ennek  oka,
hogy a számítógép a hasonlítást a  karakterek  kódja  alapján
végzi, s az ékezetes betűk általában valamilyen ritkán  hasz-
nált, adott kódú karakter helyett szerepelnek a karakterkész-
letben.
   Hasonló - de már összetettebb -  feladatokkal  találkozha-
tunk még a 6. fejezetben.


2.5 Összetett elágazások; ciklusok; sorozatok


   Az előző alfejezetekben is előfordultak ciklusok. Az aláb-
bi feladatokban vagy a ciklusmagban lesz szükség összetettebb
tevékenységre, vagy a ciklus szervezése bonyolultabb.  —jdon-
ság az is, ha a ciklusok (összetett)  elágazásokkal  bővülnek
és többszörös ciklusok is szerepelhetnek.
   A ciklusmagban lévő  elágazások  feltételeinél  a  logikai
függvények ismerete is előnyös. Ebben az alfejezetben a fela-
datok megoldásához célszerű bevezetni a sorozatokat (más  né-
ven: vektorok, egydimenziós tömbök).
   Ez az alfejezet az elemi programozásból átvezet a  nagyobb
gyakorlatot igénylő programozásba. Ennek megfelelően több,  a
mindennapi életben alkalmazható feladat található itt. Ez azt
is jelenti, hogy a további  fejezetekben  is  vannak  hasonló
példák.


2.6 Tömbök


   A számítástechnikában igen gyakran használunk olyan  adat-
rendszereket, amelyek valamilyen  táblázatszerű  kapcsolatban
állnak egymással. Legegyszerűbb esetben csak  egy  meghatáro-
zott sorrendben követik egymást, mint például az év hónapjai.
Az ilyen szerkezetet egydimenziós tömbnek,  vektornak  nevez-
zük. Más esetben egy kétdimenziós táblázat alkalmas az adatok
rendszerezésére. Természetesen magasabb dimenziószámú  tömbö-
ket is használunk. Feltétlenül tanácsos,  ha  erre  lehetőség
van, az egymással összefüggésben álló adatokat ilyen  tömbök-
ben ábrázolni.  A  számítógépek  többségükben  A(I),  B(I,J),
C(I,J,...) stb. szimbólumokat használnak ezek jelölésére.
   Javasoljuk, hogy az alfejezet elején lévő feladatok  közül
minden kezdő tanuló oldjon meg néhányat.  A  második  felében
már elsősorban olyan feladatok vannak, amelyek egy kis  mate-
matikai előképzettséget feltételeznek.


2.7 Elemi grafika


   Az alfejezetben  olyan  feladatokat  találhatunk,  amelyek
megoldásai alapvető grafikai utasításokra és  egyszerű  algo-
ritmusokra épülnek. A problémák akkor lesznek  érdekesek,  ha
megoldásuk során a következő grafikus utasításokat használjuk
csak:

      - képernyőtörlés,
      - egy pont rajzolása,
      - egy pont törlése,
      - adott pont rajzolt vagy rajzolatlan állapotának vizs-
        gálata.

   Szükséges  az  adott  számítógép  véletlenszám  generátora
programozásának ismerete.