programozási nyelvek

17
Programozási Programozási nyelvek nyelvek

Upload: galvin

Post on 28-Jan-2016

51 views

Category:

Documents


1 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programozási nyelvek

Programozási nyelvekProgramozási nyelvek

Page 2: Programozási nyelvek

ProgramozásProgramozás

feladatok megfogalmazása számítógép számárafeladatok megfogalmazása számítógép számára

végrehajtója a számítógép hardvere és végrehajtója a számítógép hardvere és operációs rendszereoperációs rendszere

bináris alakban, 0 – 1 sorozat formában kerül bináris alakban, 0 – 1 sorozat formában kerül végrehajtásra egy programvégrehajtásra egy program

programozási nyelvprogramozási nyelv: a szabályrendszer, : a szabályrendszer, amelyben megírják a feladatot (programot) a amelyben megírják a feladatot (programot) a számítógép számáraszámítógép számára

Page 3: Programozási nyelvek

Alacsony szintű programnyelvekAlacsony szintű programnyelvekgépi kódgépi kód

bájtok sorozataként kerül megírásra a program, adatokat konkrét bájtok sorozataként kerül megírásra a program, adatokat konkrét regiszterek között mozgatvaregiszterek között mozgatva

tipikusan 10-es számrendszerben is be lehet vinni a bájtok értékeittipikusan 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, 32180, 2, 178, 65, 205, 33, 205, 32

assemblyassembly a gépi kódú programstruktúra megőrződik, de angol szavak 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 rövidítéseivel helyettsítik az utasításkódokat és karakterkombinációkkal a regiszterek számaitkarakterkombinációkkal a regiszterek számait

példapélda assembly utasításra: assembly utasításra: mov ah, 2mov ah, 2 assemblerassembler lefordítja gépi kódba használat előtt lefordítja gépi kódba használat előtt makroassemblymakroassembly: amikor már több gépi kódú utasítás sorozatának felel : amikor már több gépi kódú utasítás sorozatának felel

meg egy assembly utasítás (makro)meg egy assembly utasítás (makro)

Page 4: Programozási nyelvek

Magas szintű programnyelvekMagas szintű programnyelvek

számítógépkonfigurációtól független a feladat számítógépkonfigurációtól független a feladat leírása a szabályrendszerébenleírása a szabályrendszerében

Fajtái:Fajtái: általános célú programnyelvekáltalános célú programnyelvek

cél: sokféle feladat programozására lehessen használnicél: sokféle feladat programozására lehessen használni speciális célú programnyelvekspeciális célú programnyelvek

speciális feladatokat lehet vele egyszerűen megoldanispeciális feladatokat lehet vele egyszerűen megoldani

pl.: SQL – adatbáziskezelésre kifejlesztettpl.: SQL – adatbáziskezelésre kifejlesztett

A továbbiakban magas szintű, általános célú A továbbiakban magas szintű, általános célú programnyelvekkel foglalkozunkprogramnyelvekkel foglalkozunk

Page 5: Programozási nyelvek

A programozás meneteA 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éshibakezelés kapjuk: tárgyprogramkapjuk: tárgyprogram felhasznált segédprogramok, rutinok hozzácsatolása felhasznált segédprogramok, rutinok hozzácsatolása

(linkage editor)(linkage editor) hibakezeléshibakezelés kapjuk: végrehajtható programkapjuk: végrehajtható program futtatásfuttatás eredményekeredmények

Page 6: Programozási nyelvek

A forrásprogram elkészítésének A forrásprogram elkészítésének folyamatafolyamata

algoritmus megfogalmazásaalgoritmus megfogalmazásaFőbb építőelemek:Főbb építőelemek: szekvenciaszekvencia (egymás utániság) (egymás utániság) elágazáselágazás (feltételes utasítás) (feltételes utasítás)

lehet logikai értékvizsgálattól függő kétirányú vagy változó 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értékétől függö többszörös elágazás

ciklusciklus (visszacsatolás) (visszacsatolás)lehet elöltesztelő vagy hátultesztelőlehet elöltesztelő vagy hátultesztelő

a programnyelv utasításaira való átfogalmazása 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 praktikusabb egy fejlesztői környezetfejlesztői környezetben írni a programot ben írni a programot

(beépített segítség utasításkészlethez, szintaktikai kiemelés ill. (beépített segítség utasításkészlethez, szintaktikai kiemelés ill. ellenőrzés)ellenőrzés)

Page 7: Programozási nyelvek

Algoritmus megfogalmazásaAlgoritmus megfogalmazása

Lehetséges megvalósítási módjai:Lehetséges megvalósítási módjai: szöveges megfogalmazásszöveges megfogalmazás folyamatábrafolyamatábra D-diagramD-diagram (D=Dijkstra) (D=Dijkstra)

több részdiagramból áll össze több részdiagramból áll össze csak egy kimenő él van egy elemi szerkezetbencsak egy kimenő él van egy elemi szerkezetbenáttekinthetőbbáttekinthetőbb

blokkdiagramblokkdiagram (téglalapokra írva minden lépés, (téglalapokra írva minden lépés, téglalapok egymáson belül is elhelyezkedhetnek)téglalapok egymáson belül is elhelyezkedhetnek)

struktogramstruktogram (esetleg vonalakkal felosztott téglalap- (esetleg vonalakkal felosztott téglalap-részek elágazásoknál, fentről lefelé vannak az részek elágazásoknál, fentről lefelé vannak az egymás után következő lépések)egymás után következő lépések)

Page 8: Programozási nyelvek

folyamatábrafolyamatábra blokkdiagramblokkdiagram

q=2q

q<p

Eredmény: q

hamisigaz

beolvas: p

q=1

beolvas: p

q=1

Ismételd

amíg q < p

q=2q

Eredmény: q

Page 9: Programozási nyelvek

A programozási nyelvek fejlődéseA programozási nyelvek fejlődéseMondatszerű algoritmusleírásMondatszerű 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ásStrukturá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 programebben eljárások és függvények blokkjainak a megadásából jön létre a program

Hordozható assemblyHordozható assembly pl.: C,pl.: C, memóriacímek (mutatók) és memóriafoglalás rugalmas kezelésememóriacímek (mutatók) és memóriafoglalás rugalmas kezelése

Objektumorientált programozásObjektumorientált programozás pl.: C++, SmallTalk, Javapl.: C++, SmallTalk, Java objektumok tulajdonságokkal / állapotokkal, objektumok tulajdonságokkal / állapotokkal, objektum-hierarchia: objektumok osztályokhoz tartoznak, osztályok közöti objektum-hierarchia: objektumok osztályokhoz tartoznak, osztályok közöti

hierarchiát öröklődés határozza meghierarchiát öröklődés határozza meg

EgyébEgyéb: logikai programozás (pl.: Prolog), : logikai programozás (pl.: Prolog),

funkcionális programozás (pl. Clean)funkcionális programozás (pl. Clean)

Page 10: Programozási nyelvek

AlapnyelvekAlapnyelvek

ALGOL (ALGOrithmic Language)ALGOL (ALGOrithmic Language) 1960-as évektől, tudományos számításokra tervezték1960-as évektől, tudományos számításokra tervezték

BASIC (Beginner’s All purpose Symbolic Instruction Code)BASIC (Beginner’s All purpose Symbolic Instruction Code) 1964-től, kezdetben egyetemisták részére1964-től, kezdetben egyetemisták részére

fejlesztették kifejlesztették ki

C C 1970-es évek eleje, UNIX kifeljesztéséhez hozta Dennis Ritchie létre1970-es évek eleje, UNIX kifeljesztéséhez hozta Dennis Ritchie létre

COBOL (COmmon Business Oriented Language)COBOL (COmmon Business Oriented Language) 1959, nyilvántartások kezeléséhez fejlesztették ki1959, nyilvántartások kezeléséhez fejlesztették ki

FORTRAN (FORmula TRANslator))FORTRAN (FORmula TRANslator)) 1957, numerikus számításokhoz, manapság is elterjedt1957, numerikus számításokhoz, manapság is elterjedt

Pascal Pascal 1970, ALGOL alapján hozták létre1970, ALGOL alapján hozták létre

Page 11: Programozási nyelvek

További nyelvekTovábbi nyelvekAda 95: Pascalból, objektumorientáltAda 95: Pascalból, objektumorientált

C++: C-ből, objektumorientáltC++: C-ből, objektumorientált

C#: C + + ötvözve MS Visual Basic elemekkel, objektumorientáltC#: C + + ötvözve MS Visual Basic elemekkel, objektumorientált

Clean: 1987, funkcionális nyelvClean: 1987, funkcionális nyelv

Delphi: 1995, Turbo Pascal 7.0-ból, objektumorientáltDelphi: 1995, Turbo Pascal 7.0-ból, objektumorientált

Eiffel: 1980-as évek második fele, ALGOL-ból, szoftverfejlesztéshez termelési Eiffel: 1980-as évek második fele, ALGOL-ból, szoftverfejlesztéshez termelési környezetekbenkörnyezetekben

Java: 1996, virtuális gépre van hozzá szükség, objektumorientáltJava: 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 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 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. böngészőjébe, népszerű lett.

LISP: 1950-es évektől, az első funkcionális nyelv.LISP: 1950-es évektől, az első funkcionális nyelv.

Modula-2 (1970-es évek), Modula-3 (1980-as évek): Pascalból Modula-2 (1970-es évek), Modula-3 (1980-as évek): Pascalból

Perl: 1991, szövegfeldolgozásraPerl: 1991, szövegfeldolgozásra

PHP: hypertext preprocessor: Java, C, Perl nyelvekre épülPHP: hypertext preprocessor: Java, C, Perl nyelvekre épül

Page 12: Programozási nyelvek

SzabványosításSzabványosítás

Egy programnyelv szabályai különböző disztribucíók esetén Egy programnyelv szabályai különböző disztribucíók esetén kissé eltérhetnek egymástólkissé eltérhetnek egymástól

pl.: a Borland Turbo Pascal több utasítást ismer, mint a Pascalpl.: a Borland Turbo Pascal több utasítást ismer, mint a Pascal

A szabványoknak két fő típusa vanA 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ó konszenzusos szabványok (szabványok létrehozásával foglalkozó

szervezetek, pl. ANSI, IEEE alakítják ki)szervezetek, pl. ANSI, IEEE alakítják ki)

Előnye a konszenzusos szabványnak, hogy segítségével könnyebben Előnye a konszenzusos szabványnak, hogy segítségével könnyebben létrehozhatók jobban hordozható programoklétrehozhatók jobban hordozható programok

A legtöbb nyelvnek több verziója vanA legtöbb nyelvnek több verziója van (kiadási évhez kötődően, pl. ALGOL (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 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ülhessenekmúlva mi fog megszünni, hogy a programozók erre felkészülhessenek

DIM P(100)DIM P(100)

Page 13: Programozási nyelvek

GOTOGOTOfeltétel nélküli vezérlésátadás (ugrás)feltétel nélküli vezérlésátadás (ugrás)

nem elegáns használninem elegáns használni több nyelvben már nem is létezik ez az utasítástö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álatavagy csupán végtelen ciklusból való kiugrásra lehetséges a használata

a probléma vele többrétű 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- a fordítóprogram nem tudja miatta jól meghatározni a program erőforrás-

vagy memóriaigényétvagy memóriaigényét

kivételkezelés programnyelvi támogatása kiválthatja a szükségességétkivételkezelés programnyelvi támogatása kiválthatja a szükségességét

FORTRAN0 vezette be, COBOL támogatjaFORTRAN0 vezette be, COBOL támogatja

Pascalban cimkére ugorhat blokkon belül, C-ben cimkére ugorhat Pascalban cimkére ugorhat blokkon belül, C-ben cimkére ugorhat fügvényen belülfügvényen belül

Modula-3-ban nincs GOTO (de van RETURN visszatérni elájrásokból, Modula-3-ban nincs GOTO (de van RETURN visszatérni elájrásokból, függvényekből), Java-ban nincs GOTOfüggvényekből), Java-ban nincs GOTO

Page 14: Programozási nyelvek

BASICBASIC

ún. P-kód (pszeudo kód) készül a fordítás soránú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 ezt interpreter értelmezi minden futtatás során – ezért a futás

relatíve lassúrelatíve lassú

Visual BASIC 5.0-tól kezdve már gépi kódú fordítást is Visual BASIC 5.0-tól kezdve már gépi kódú fordítást is lehet készítenilehet készíteni

A Visual BASIC objektumalapú nyelv, és csak részben A Visual BASIC objektumalapú nyelv, és csak részben objektumorientált nyelv (nincs benne osztályhierarchia) objektumorientált nyelv (nincs benne osztályhierarchia)

BASIC alapokra épít, egyszerű felépítésűBASIC alapokra épít, egyszerű felépítésű

nagyban függ a hardvertől és az operációs rendszertől nagyban függ a hardvertől és az operációs rendszertől (pl. MS Visual BASIC csak MS Windowsos platformon (pl. MS Visual BASIC csak MS Windowsos platformon működik)működik)

Page 15: Programozási nyelvek

BASIC példaprogramBASIC példaprogram

10 REM NEGYZETSZAMOK OSSZEGE10 REM NEGYZETSZAMOK OSSZEGE20 REM LEGFELJEBB 100-IG TERJEDO SZAMOK20 REM LEGFELJEBB 100-IG TERJEDO SZAMOK30 DIM P(100), Q(100)30 DIM P(100), Q(100)40 A=040 A=050 INPUT P50 INPUT P60 INPUT Q60 INPUT Q70 FOR J=INT(P) TO INT(Q)70 FOR J=INT(P) TO INT(Q)80 A=A+J^280 A=A+J^290 NEXT J90 NEXT J100 PRINT A100 PRINT A110 END110 END

Page 16: Programozási nyelvek

Pascal példaprogramPascal példaprogram

program lnko; {legnagyobb közös osztó}program lnko; {legnagyobb közös osztó}var x, y: integer;            { a két szám tárolására}var x, y: integer;            { a két szám tárolására}

beginbegin  readln(x, y);       { beolvas}  readln(x, y);       { beolvas}  write('LNKO(', x, ',', y, ')=');  { bemenõ adatok}  write('LNKO(', x, ',', y, ')=');  { bemenõ adatok}  while x <> y do begin  while x <> y do begin    if x > y then x:= x - y    if x > y then x:= x - y    else y:= y - x;    else y:= y - x;  end;  end;  writeln(x);                { eredmény kiírása }  writeln(x);                { eredmény kiírása }end. end.

Page 17: Programozási nyelvek

C példaprogramC példaprogram

#include <stdio.h> #include <stdio.h> #define ESZ 7 #define ESZ 7 int main (void) int main (void) { {

int i, j, s; int i, j, s; int tomb[ESZ] = {23, 12, 100, 6, 55, 24, 2}; int tomb[ESZ] = {23, 12, 100, 6, 55, 24, 2}; for (i=ESZ-2; i>=0; i--) { for (i=ESZ-2; i>=0; i--) {

for (j=0; j<=i; j++) { for (j=0; j<=i; j++) { if (tomb[j] > tomb[j+1]) { if (tomb[j] > tomb[j+1]) {

s = tomb[j]; s = tomb[j]; tomb[j] = tomb[j+1]; tomb[j] = tomb[j+1]; tomb[j+1] = s;tomb[j+1] = s;

} } } }

} } printf("A rendezett tomb:\n\n");printf("A rendezett tomb:\n\n");for (i=0; i<ESZ; i++) printf("%d ", tomb[i]); for (i=0; i<ESZ; i++) printf("%d ", tomb[i]); return 0; return 0;

} }