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.