Strukturált programozás

A strukturált programozás egy programépítési alapelv. A lényege az, hogy az elvégzendő feladatot kisebb, egymáshoz csak meghatározott módon kapcsolódó részfeladatokra kell felbontani, ezeken belül ugyanígy részfeladatok határozandók meg, amelyek teljes egészében megvalósítják az őket magába foglaló nagyobb részfeladatot, és így tovább. A cél az, hogy a teljes feladat olyan kis feladatelemekre legyen felosztva, amelyek egymással nincsenek átfedésben, egymáshoz meghatározott logika szerint kapcsolódnak, és mindegyik megoldható valamilyen elemi struktúra, elemi programséma követésével, esetleg egy programnyelv saját elemi eszközeivel. A részfeladatokat megoldva és azokat egymáshoz illesztve megszületik a teljes feladat megoldása.

A struktúra (latin: structura, angol: structure, holland: structuur) jelentése 'szerkezet', a név a feladat, illetve program jól meghatározott szerkezeti elemekből való szabályos felépítésre utal.

A feladat felosztásakor a részfeladatok csak három szerkezeti mintázat szerint kapcsolódhatnak egymáshoz, ezek a szekvencia, a feltételes elágazás (szelekció) és a feltételes ciklus (iteráció vagy véges ismétlés).

Az elvet a holland Edsger Wybe Dijkstra nevéhez kötik, aki korábbi, hasonló tárgyú cikkei után társszerzője volt az 1972-ben, Structured Programming címmel megjelent könyvnek.[1]

Az alapelemek

A képen a három alapelem ábrázolási módja látható a ritkábban használt dobozdiagram (kék) és az általánosan használt folyamatábra (zöld) jelzésrendszerében. Az előbbi kifejezetten a három elemi séma jelölésére lett kidolgozva.

A szekvencia alapelem csak annyit jelent, hogy a részfeladatok, illetve azok megvalósítása valamely programnyelvben egymás után következnek, a jelzés szerint felülről lefelé hajtódnak végre. A program elve vagy nyelvi megvalósítása a strukturálás során eljut odáig, hogy a szekvenciában (lépéssorozatban) tovább már nem bontandó elemi műveletek vagy elemi utasítások (statement) követik egymást.

A feltételes elágazás (más néven szelekció)[2] egy megadott feltétel (condition) teljesülését vizsgálja meg (például egy programváltozóban tárolt számérték nagyobb-e száznál), és eszerint folytatódik a program végrehajtása az "igen" (y) és "nem" (n) esetekre előírt műveletekkel.

Egy nagyon rövid példarészlet egy dobozdiagramos programtervre

A feltételes ciklus (más néven hurok, ismétlés vagy iteráció) olyan alapstruktúra, amelyben amíg egy megadott feltétel (condition) teljesül, addig és csak addig végrehajtja a feltételhez rendelt ciklusmag műveleteket, egymást után újra megismételve. Például amikor a könyvespolcon valamilyen sorrendben addig vesszük le, nyitjuk ki, majd tesszük vissza egyenként a könyveket, amíg meg nem találunk benne egy bizonyos részletet.

Az elmélet fontos részét képezi az a szabály is, hogy ezeknek az alapelemeknek a dobozai egymásba helyezhetők tetszőleges mélységig. Ahol tehát a vázlatban egy utasítás (statement) helye látható, oda a három alapelem bármelyikének betehető egy példánya, azokba újabbak és így tovább, szükség szerint.

Mivel az egymásba helyezett dobozok a rajzokon és vázlatokban egy bizonyos mérték után már nehezen követhetők, megengedett, hogy egy adott feladatrészt megvalósító dobozok helyére csak egy címkét tegyünk, és egy külön rajzban részletezzük a címke helyén értendő műveletsorozatot, dobozokat. Bármelyik doboz helyettesíthető egy egyedi címkével, de a címkével helyettesített programegység dobozát külön helyen ugyancsak a három alapelem használatával kell kidolgozni. A címkézett, külön helyen részletezett szerkezeti egységek legkisebbjét a programokban eljárásoknak (procedure) hívják. Fontos: egy programegységet helyettesítő címke több helyen is elhelyezhető, ez esetben minden címke helyett ugyanazt az egységet kell odaképzelni.

GOTO

A GOTO (ejtsd: gótu) egy programnyelvi utasításszó, ebben vagy más azonos jelentésű formában számos programozási nyelvben létezik. A jelentése az, hogy a számítógép a program végrehajtása során a rendes esetben elejétől végéig követett utasítássorozatot egy másik, megadott helyen folytasson. Erre az ugrás néven emlegetett műveltre rendszerint elágazások vagy ciklusok megvalósítása céljából kerül sor, de használható más célból is.

Dijkstra nyilvánosan kikelt a GOTO utasítás ellen,[3] és külön ellenezte a BASIC oktatását az iskolákban, mivel ez a programnyelv volt a legszélesebb körben ismert azok közül, amelyekben – a strukturált alapelemek maradéktalan követését megvalósító elemi utasítások híján – sűrűn használták ezt az utasítást.[4] A GOTO elleni indulatot azzal magyarázhatjuk, hogy a programozást még csak tanulók a programjaikban az ugrást sokszor olyan nehezen követhető következetlenséggel használják, a programban hirtelen felfedezett hibák áthidalására, ami végső soron egy rossz, a programok javítását nagyon megnehezíthető, a jövőben sok nehézséget okozó programfejlesztési megoldásra való rászokáshoz vezet. A GOTO utasítás ugyanis a programban bármekkora ugrást, sőt, a kisebb, önmagukban logikus szerkezeti egységekbe való beugrást is lehetővé teszi, ami miatt a program szerkezete valóban hasonlítani kezd a "spagetti-kód" csúfnévre.

A GOTO használata azért volt elkerülhetetlen, mert az akkori, elsősorban oktatásra, otthoni használatra szánt számítógépekbe épített BASIC nyelvekből még hiányzott a dobozszerű szerkezetet szemmel láthatóan, formailag megvalósító utasítások egy része. (Például a DO ... WHILE vagy IF ... END IF szerkezeti elemek.) Ezeket, ahogy a fenti ábra is mutatta, megfelelően ki lehet váltani az ugrás helyes alkalmazásával, de az ugrás alkalmazható helytelenül is. Valójában az oktatás során az ugrás helyes alkalmazását kell(ene) megtanítani, de ha a használni szándékozott programnyelvben léteznek a strukturált alapelemek, ott valóban ritkán van szükség ugrásra, és a program követhetősége (egyben javíthatósága) érdekében érdemes is kerülni azokat.

A másik, legalább ilyen komoly ok a GOTO használatára pedig az volt, hogy az egyszerű BASIC nyelveken írt programokhoz nem létezett olyan szövegszerkesztő, amellyel egyes programegységek sorrendjét egyszerűen meg lehetett változtatni, azok átrendezésével. Így ha a program írója változtatni akart a részek végrehajtási sorrendjén, ugrással kellett áthidalnia a távolságot, nem azért, mert így jó, hanem mert csak ez volt lehetséges.

A BASIC nyelvet a hivatásos programozók között gyakran fogadó ellenszenv mára valójában értelmetlenné vált, mivel a leginkább használatban levő, igen fejlett változatokban a GOTO használata ma már nem szükséges a feladat megoldásához, nem is szokás használni, és az oktatása során is a strukturált alapelemek használatát tanítják.

Helyes használata

Az ugrás mindezek ellenére sem nevezhető programtechnikai hibának, az assembly nyelvű, sokszor a legnagyobb végrehajtási sebességet megkövetelő feladatokat megoldó programokban ma is egy megszokott lépés. A program követhetőségének fenntartásához viszont teljesíteni kell ehhez a következő feltételeket:

  • az ugrás távolsága ne legyen túl hosszú. Ha egy programrészt át kell ugranunk, akkor azt egy vagy több kisebb egységre bontva, eljárásként elkülönítve, csak címkéjükkel helyettesítve kell elhelyezni, lásd fentebb. Így a látható programkódban az ugrás a programrészek helyett csak azok címkéit ugorja át, így már sokkal közelebb került egymáshoz az ugrás kiinduló- és végpontját adó két programpont.
  • az ugrásokat a program mellé rajzolt vonalakkal helyettesítve a vonalak lehetőleg minél kevesebbszer keresztezzék egymást.
  • a strukturált programegységeket célszerű mindig egyetlen ponton elhagyni.
  • a strukturált programegységek (például egy szubrutin vagy FOR ... NEXT ciklus) belsejébe azokon kívülről beugrani tilos.
  • a programban visszafelé irányuló ugrást csak ciklus létrehozására szabad használni.

A program egy adott pontja több különböző helyről végzett ugrás célpontja is lehet.

Strukturált utasítások Pascalban

Összetett utasítás – szekvencia

BEGIN
[ utasítás [;utasítás ]]
END

Elágazás – szelekció

IF feltétel THEN utasítás
[ELSE utasítás ]

Ha ELSE-t elhagyjuk, akkor a szelekció egyágú Utasítás lehet összetett utasítás, így egy ágon több utasítás is végrehajtható. Utasítás lehet újabb IF utasítás. ELSE mindig a legutolsó THEN párja.

Választás – szelekció

CASE szelektor OF
’állandó’ : utasítás;
’állandó’ : utasítás;
ELSE utasítás
END;

Források

  1. O.-J. Dahl, Edsger W. Dijkstra, C. A. R. Hoare: Structured Programming (Academic Press, London, 1972)
  2. A szelekció név valójában több lehetséges programág közül egy bizonyos feltétel megvizsgálásával történő választást jelenti; az elágazás, mint alapelem eredetileg két lehetséges programágra korlátozza a választást.
  3. A Case against the GO TO Statement
  4. Megjegyzést érdemel, hogy a minden programnyelv végső eredményét adó gépi kódban is a program fontos és nélkülözhetetlen eleme az ugró utasítás, ennek az assembly mnemonikja többnyire JUMP vagy JMP.

További információk

Read other articles:

Patrick Kluivert Informasi pribadiNama lengkap Patrick Stephan KluivertTanggal lahir 1 Juli 1976 (umur 47)Tempat lahir Amsterdam, BelandaTinggi 1,93 m (6 ft 4 in)Posisi bermain penyerangInformasi klubKlub saat ini Free AgentKarier junior AjaxKarier senior*Tahun Tim Tampil (Gol) 1994–19971997–19981998–20042004–20052005–20062006–20072007–2008 AjaxAC MilanFC BarcelonaNewcastle UnitedValenciaPSVLille 070 (39)027 0(6)182 (90)025 0(6)010 0(1)016 0(3)011 0(4) Tim n...

 

 

Chris DiamantopoulosDiamantopoulos di Annual Norma Jean Gala ke-4 pada Maret 2015LahirChristopher Diamantopoulos9 Mei 1975 (umur 48)Toronto, Ontario, KanadaPekerjaanPemeran, pengisi suaraTahun aktif2000–kiniSuami/istriBecki Newton ​(m. 2005)​Anak2 Christopher Diamantopoulos (Yunani: Χριστόφορος Διαμαντόπουλος; lahir 9 Mei 1975) adalah seorang pemeran dan pengisi suara Yunani-Kanada. Salah satu peran terkenalnya meliputi Russ H...

 

 

Pantai di Baray Barat Baray Barat (bahasa Khmer: បារាយណ៍ទឹកថ្លា, Baray Teuk Thla) adalah baray atau danau buatan penampung air di Angkor, Kamboja. Danau buatan ini memanjang barat-timur dan terletak tepat di luar tembok barat kota Angkor Thom. Berbentuk persegi panjang berukuran sekitar 7,8 km x 2,1 km,Baray Barat adalah baray terbesar di kawasan Angkor. Air danau ditahan oleh struktur tanggul tinggi dari tanah. Di tengah baray terdapat Mebon Barat, s...

This article may be written from a fan's point of view, rather than a neutral point of view. Please clean it up to conform to a higher standard of quality, and to make it neutral in tone. (June 2017) (Learn how and when to remove this template message) Season of television series Inazuma Eleven GOSeason 1No. of episodes47ReleaseOriginal networkTV TokyoOriginal releaseMay 4, 2011 (2011-05-04) –April 11, 2012 (2012-04-11)Season chronology← PreviousSeason 3 Next →G...

 

 

15th President of Mexico (1845-46) In this Spanish name, the first or paternal surname is Paredes and the second or maternal family name is Arrillaga. Mariano Paredes y Arrillaga15th President of MexicoIn office31 December 1845 – 28 July 1846Vice PresidentNicolás BravoPreceded byJosé Joaquín de HerreraSucceeded byNicolás Bravo Personal detailsBornc. 7 January 1797Mexico City, Viceroyalty of New SpainDied7 September 1849 (Age 52)Mexico City, MexicoNationalityMexicanS...

 

 

Voce principale: Società Sportiva Calcio Napoli. SSC NapoliStagione 1964-1965I giocatori festeggiano la promozione Sport calcio Squadra Napoli Allenatore Bruno Pesaola Presidente Roberto Fiore Serie B2º (in Serie A) Coppa ItaliaQuarti di finale Maggiori presenzeCampionato: Bandoni, Ronzon (38) Miglior marcatoreCampionato: Cané (12) StadioSan Paolo 1963-1964 1965-1966 Si invita a seguire il modello di voce Questa voce raccoglie le informazioni riguardanti la Società Sportiva Calcio N...

Protein-coding gene in the species Homo sapiens MOCS2Available structuresPDBOrtholog search: PDBe RCSB List of PDB id codes4AP8IdentifiersAliasesMOCS2, MCBPE, MOCO1, MOCODB, MPTS, molybdenum cofactor synthesis 2External IDsOMIM: 603708 MGI: 1336894 HomoloGene: 32193 GeneCards: MOCS2 Gene location (Human)Chr.Chromosome 5 (human)[1]Band5q11.2Start53,095,679 bp[1]End53,110,063 bp[1]Gene location (Mouse)Chr.Chromosome 13 (mouse)[2]Band13|13 D2.2Start114,954,77...

 

 

Underworld in Egyptian mythology This article is about the Egyptian underworld. For the evergreen tree, see Syzygium cumini. For the aviation weather service, see DUATS. Amenthes redirects here. For region on Mars, see Amenthes quadrangle. Judgment scene from the Book of the Dead from the Papyrus of Hunefer. In the three scenes from the Book of the Dead (version from ~1275 BCE) the deceased Hunefer is taken into the judgment hall by the jackal-headed Anubis. The next scene is the weighing of ...

 

 

Cet article concerne le journal français « Le Monde ». Pour les autres significations associées au Monde, voir Le Monde (homonymie). Une sur le traité d'alliance entre la France et l'URSS du premier numéro du Monde, le 19 décembre 1944. Pays France Zone de diffusion International Langue français anglais (édition numérique, depuis avril 2022)[1],[2] Périodicité Quotidien Format Berlinois Genre Généraliste Prix au numéro 3,60 € (numéros datés du dimanche-lundi ...

Questa voce sull'argomento strade degli Stati Uniti d'America è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. U.S. Route 79LocalizzazioneStato Stati Uniti Stati federati Texas Louisiana Arkansas Tennessee Kentucky DatiClassificazioneAutostrada InizioRussellville FineRound Rock Lunghezza1 376 km Direzionenord-sud Data apertura1935 PercorsoPrincipali intersezioniFine a sud: Interstate 35 a Round Rock (TX) Interstate 45 a Bu...

 

 

Long Beach redirects here. For other uses, see Long Beach (disambiguation). City in California, United StatesLong Beach, CaliforniaCityDowntown Long Beach skylineAquarium of the PacificVilla RivieraTTI Terminal at Port of Long BeachLions LighthouseRetired RMS Queen Mary FlagSealNickname: Aquatic Capital of America[1]Motto: The International CityShow Long BeachShow Los Angeles CountyShow CaliforniaShow the United StatesCoordinates: 33°46′6″N 118°11′44″W...

 

 

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、�...

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「�...

 

 

Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки. Мат...

 

 

2008 Russian filmPlus OneFilm posterRussian Плюс один Directed byOksana BychkovaWritten byOksana Bychkova Nana GreensteinProduced byElena GlickmanStarringMadlen Dzhabrailova Jethro SkinnerCinematographyIvan GudkovProductioncompanyTelestoRelease date June 20, 2008 (2008-06-20) Running time96 minutesCountryRussiaLanguageRussianBox office$927,277 Plus One (Russian: Плюс один, romanized: Plyus odin) is a Russian romantic comedy film directed by Oksana Bychkova,...

City and county seat of Cluj County, Romania Cluj, Clus, and Klausenburg redirect here. For the county, see Cluj County. For the Hasidic dynasty, see Klausenburg (Hasidic dynasty). For other uses, see Cluj (disambiguation) and Clus (disambiguation). City in Cluj County, RomaniaCluj-NapocaCityFrom top and left: Cluj-Napoca panorama • St. Michael's Church • Dormition of the Theotokos Cathedral • Medieval house of Matthias Corvinus • Romanian National Opera • Babeș-Bolyai University C...

 

 

駐日フィジー大使館Embassy of Fiji in Japan駐日フィジー大使館が入居しているノアビル(2019年)所在地 日本住所東京都港区麻布台2-3-5 ノアビル14F開設1981年1月大使フィリモネ・ワガバザ管轄 日本・ フィリピン・ ロシアウェブサイトfijiembassy.jp/ja/ 駐日フィジー大使館[1](英語: Embassy of Fiji in Japan)は、フィジーが日本の首都東京に設置している大使館である。在東�...

 

 

Elaine MayMay tampil pada 1959LahirElaine Iva Berlin21 April 1932 (umur 92)Philadelphia, Pennsylvania, A.S.Nama lainEsther Dale, Elly MayPekerjaanAktriskomedianpenulis naskahpenulis skenariosutradara filmTahun aktif1955–sekarangDikenal atasA New Leaf (1971) The Heartbreak Kid (1972) Mikey and Nicky (1976) Ishtar (1987)Suami/istriMarvin Irving May ​ ​(m. 1948; c. 1960)​Sheldon Harnick ​ ​(m. 1962;...

هونغ جيونغ-هو معلومات شخصية الميلاد 12 أغسطس 1989 (العمر 35 سنة)كوريا الجنوبية الطول 186 سـم (6 قدم 1 بوصة) مركز اللعب مدافع الجنسية كوري جنوبي معلومات النادي النادي الحالي جونبك هيونداي موتورز الرقم 26 مسيرة الشباب سنوات فريق 2008–2009 جامعة تشوسون المسيرة الاحترافية1 سنوات �...

 

 

The measure of benefit provided by a good or service in an economy Not to be confused with Market value. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Value economics – news · newspapers · books · scholar · JSTOR (December 2016) (Learn how and when to remove this message) This article is written like ...