1 / 17

Programozási nyelvek

Programozási nyelvek. Programozás. feladatok megfogalmazása számítógép számára végrehajtója a számítógép hardvere és operációs rendszere bináris alakban, 0 – 1 sorozat formában kerül végrehajtásra egy program

galvin
Download Presentation

Programozási nyelvek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programozási nyelvek

  2. Programozás • feladatok megfogalmazása számítógép számára • végrehajtója a számítógép hardvere és operációs rendszere • bináris alakban, 0 – 1 sorozat formában kerül végrehajtásra egy program • programozási nyelv: a szabályrendszer, amelyben megírják a feladatot (programot) a számítógép számára

  3. Alacsony szintű programnyelvek • gépi kód • bájtok sorozataként kerül megírásra a program, adatokat konkrét regiszterek között mozgatva • tipikusan 10-es számrendszerben is be lehet vinni a bájtok értékeit • példa gépi kódú programra: 180, 2, 178, 65, 205, 33, 205, 32 • assembly • a gépi kódú programstruktúra megőrződik, de angol szavak rövidítéseivel helyettsítik az utasításkódokat és karakterkombinációkkal a regiszterek számait • példa assembly utasításra:mov ah, 2 • assembler lefordítja gépi kódba használat előtt • makroassembly: amikor már több gépi kódú utasítás sorozatának felel meg egy assembly utasítás (makro)

  4. Magas szintű programnyelvek • számítógépkonfigurációtól független a feladat leírása a szabályrendszerében Fajtái: • általános célú programnyelvek • cél: sokféle feladat programozására lehessen használni • speciális célú programnyelvek • speciális feladatokat lehet vele egyszerűen megoldani • pl.: SQL – adatbáziskezelésre kifejlesztett • A továbbiakban magas szintű, általános célú programnyelvekkel foglalkozunk

  5. A programozás menete • forrásprogram megírása (kötött szintaktika) • ennek lefordítása (fordítóprogram – compiler segítségével) • hibakezelés • kapjuk: tárgyprogram • felhasznált segédprogramok, rutinok hozzácsatolása (linkage editor) • hibakezelés • kapjuk: végrehajtható program • futtatás • eredmények

  6. A forrásprogram elkészítésének folyamata • algoritmus megfogalmazása Főbb építőelemek: • szekvencia (egymás utániság) • elágazás (feltételes utasítás) • lehet logikai értékvizsgálattól függő kétirányú vagy változó értékétől függö többszörös elágazás • ciklus (visszacsatolás) • lehet elöltesztelő vagy hátultesztelő • a programnyelv utasításaira való átfogalmazás • utasítások leírására tipikusan elég ASCII szövegszerkesztő • praktikusabb egy fejlesztői környezetben írni a programot • (beépített segítség utasításkészlethez, szintaktikai kiemelés ill. ellenőrzés)

  7. Algoritmus megfogalmazása Lehetséges megvalósítási módjai: • szöveges megfogalmazás • folyamatábra • D-diagram (D=Dijkstra) • több részdiagramból áll össze • csak egy kimenő él van egy elemi szerkezetben • áttekinthetőbb • blokkdiagram (téglalapokra írva minden lépés, téglalapok egymáson belül is elhelyezkedhetnek) • struktogram (esetleg vonalakkal felosztott téglalap-részek elágazásoknál, fentről lefelé vannak az egymás után következő lépések)

  8. folyamatábra blokkdiagram beolvas: p beolvas: p q=1 q=1 Ismételd q=2q q=2q amíg q < p q<p Eredmény: q igaz hamis Eredmény: q

  9. A programozási nyelvek fejlődése • Mondatszerű algoritmusleírás • pl.: COBOL, egy utasítására példa: ADD A TO B GIVING C • Strukturált programozás • pl.: Pascal, ebben eljárások és függvények blokkjainak a megadásából jön létre a program • Hordozható assembly • pl.: C, memóriacímek (mutatók) és memóriafoglalás rugalmas kezelése • Objektumorientált programozás • pl.: C++, SmallTalk, Java • objektumok tulajdonságokkal / állapotokkal, • objektum-hierarchia: objektumok osztályokhoz tartoznak, osztályok közöti hierarchiát öröklődés határozza meg • Egyéb: logikai programozás (pl.: Prolog), funkcionális programozás (pl. Clean)

  10. Alapnyelvek • ALGOL (ALGOrithmic Language) • 1960-as évektől, tudományos számításokra tervezték • BASIC (Beginner’s All purpose Symbolic Instruction Code) • 1964-től, kezdetben egyetemisták részére fejlesztették ki • C • 1970-es évek eleje, UNIX kifeljesztéséhez hozta Dennis Ritchie létre • COBOL (COmmon Business Oriented Language) • 1959, nyilvántartások kezeléséhez fejlesztették ki • FORTRAN (FORmula TRANslator)) • 1957, numerikus számításokhoz, manapság is elterjedt • Pascal • 1970, ALGOL alapján hozták létre

  11. További nyelvek • Ada 95: Pascalból, objektumorientált • C++: C-ből, objektumorientált • C#: C + + ötvözve MS Visual Basic elemekkel, objektumorientált • Clean: 1987, funkcionális nyelv • Delphi: 1995, Turbo Pascal 7.0-ból, objektumorientált • Eiffel: 1980-as évek második fele, ALGOL-ból, szoftverfejlesztéshez termelési környezetekben • Java: 1996, virtuális gépre van hozzá szükség, objektumorientált Digitális tévét vezérlö apró készülékek programozásához jött létre – ez a projekt elhalt, a WWW születése utén a Netscape és a Microsoft is beépítette böngészőjébe, népszerű lett. • LISP: 1950-es évektől, az első funkcionális nyelv. • Modula-2 (1970-es évek), Modula-3 (1980-as évek): Pascalból • Perl: 1991, szövegfeldolgozásra • PHP: hypertext preprocessor: Java, C, Perl nyelvekre épül

  12. Szabványosítás • Egy programnyelv szabályai különböző disztribucíók esetén kissé eltérhetnek egymástól • pl.: a Borland Turbo Pascal több utasítást ismer, mint a Pascal • A szabványoknak két fő típusa van: • szabadalmaztatott szabványok (cégek esetén) • konszenzusos szabványok (szabványok létrehozásával foglalkozó szervezetek, pl. ANSI, IEEE alakítják ki) • Előnye a konszenzusos szabványnak, hogy segítségével könnyebben létrehozhatók jobban hordozható programok • A legtöbb nyelvnek több verziója van (kiadási évhez kötődően, pl. ALGOL 68), előre be szokták jelenteni, hogy a következő verzióban jópár év múlva mi fog megszünni, hogy a programozók erre felkészülhessenek DIM P(100)

  13. GOTO • feltétel nélküli vezérlésátadás (ugrás) • nem elegáns használni • több nyelvben már nem is létezik ez az utasítás • vagy csupán végtelen ciklusból való kiugrásra lehetséges a használata • a probléma vele többrétű • átláthatatlanná teheti a programstruktúrát , hibakeresést megnehezíti • a fordítóprogram nem tudja miatta jól meghatározni a program erőforrás- vagy memóriaigényét • kivételkezelés programnyelvi támogatása kiválthatja a szükségességét • FORTRAN0 vezette be, COBOL támogatja • Pascalban cimkére ugorhat blokkon belül, C-ben cimkére ugorhat fügvényen belül • Modula-3-ban nincs GOTO (de van RETURN visszatérni elájrásokból, függvényekből), Java-ban nincs GOTO

  14. BASIC • ún. P-kód (pszeudo kód) készül a fordítás során • ezt interpreter értelmezi minden futtatás során – ezért a futás relatíve lassú • Visual BASIC 5.0-tól kezdve már gépi kódú fordítást is lehet készíteni • A Visual BASIC objektumalapú nyelv, és csak részben objektumorientált nyelv (nincs benne osztályhierarchia) • BASIC alapokra épít, egyszerű felépítésű • nagyban függ a hardvertől és az operációs rendszertől (pl. MS Visual BASIC csak MS Windowsos platformon működik)

  15. BASIC példaprogram 10 REM NEGYZETSZAMOK OSSZEGE 20 REM LEGFELJEBB 100-IG TERJEDO SZAMOK 30 DIM P(100), Q(100) 40 A=0 50 INPUT P 60 INPUT Q 70 FOR J=INT(P) TO INT(Q) 80 A=A+J^2 90 NEXT J 100 PRINT A 110 END

  16. Pascal példaprogram program lnko; {legnagyobb közös osztó} var x, y: integer;            { a két szám tárolására}begin  readln(x, y);       { beolvas}  write('LNKO(', x, ',', y, ')=');  { bemenõ adatok}  while x <> y do begin    if x > y then x:= x - y    else y:= y - x;  end;  writeln(x);                { eredmény kiírása }end.

  17. C példaprogram #include <stdio.h> #define ESZ 7 int main (void) { int i, j, s; int tomb[ESZ] = {23, 12, 100, 6, 55, 24, 2}; for (i=ESZ-2; i>=0; i--) { for (j=0; j<=i; j++) { if (tomb[j] > tomb[j+1]) { s = tomb[j]; tomb[j] = tomb[j+1]; tomb[j+1] = s; } } } printf("A rendezett tomb:\n\n"); for (i=0; i<ESZ; i++) printf("%d ", tomb[i]); return 0; }

More Related