Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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,

Hasonló előadás


Az előadások a következő témára: "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,"— Előadás másolata:

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 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 tipikusan 10-es számrendszerben is be lehet vinni a bájtok értékeit példa gépi kódú programra: 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 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 példa assembly utasításra: mov ah, 2 assembler lefordítja gépi kódba használat előtt 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) 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 általános célú programnyelvek cél: sokféle feladat programozására lehessen használni speciális célú programnyelvek 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) forrásprogram megírása (kötött szintaktika) ennek lefordítása (fordítóprogram – compiler segítségével) ennek lefordítása (fordítóprogram – compiler segítségével) hibakezelés hibakezelés kapjuk: tárgyprogram kapjuk: tárgyprogram felhasznált segédprogramok, rutinok hozzácsatolása (linkage editor) felhasznált segédprogramok, rutinok hozzácsatolása (linkage editor) hibakezelés hibakezelés kapjuk: végrehajtható program kapjuk: végrehajtható program futtatás futtatás eredmények 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) szekvencia (egymás utániság) elágazás (feltételes utasítás) 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) 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ő utasítások leírására tipikusan elég ASCII szövegszerkesztő praktikusabb egy fejlesztői környezetben írni a programot 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 szöveges megfogalmazás folyamatábra folyamatábra D-diagram (D=Dijkstra) 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) 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) 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ábrablokkdiagram folyamatábrablokkdiagram q=2q q


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

10 Alapnyelvek ALGOL (ALGOrithmic Language) 1960-as évektől, tudományos számításokra tervezték 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 1964-től, kezdetben egyetemisták részére fejlesztették ki fejlesztették kiC 1970-es évek eleje, UNIX kifeljesztéséhez hozta Dennis Ritchie létre 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 1959, nyilvántartások kezeléséhez fejlesztették ki FORTRAN (FORmula TRANslator)) 1957, numerikus számításokhoz, manapság is elterjedt 1957, numerikus számításokhoz, manapság is elterjedtPascal 1970, ALGOL alapján hozták létre 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. 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 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) 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) 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 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 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 á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 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ú 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 #include #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


Letölteni ppt "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,"

Hasonló előadás


Google Hirdetések