programozási nyelvek
Post on 01-Jan-2016
48 Views
Preview:
DESCRIPTION
TRANSCRIPT
Programozási nyelvekProgramozá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
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)
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
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
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)
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)
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
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)
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
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
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)
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
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)
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
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.
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;
} }
top related