Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Programozási nyelvek Talata István
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) 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
Az elkészült programok futtatása
Fordítóprogramos programnyelv esetén: az elkészült forrásprogramot (más néven forráskódot) egy fordítóprogram lefordítja gépi kódú programmá gyorsan futtatható a lefordított program a programnyelvek többsége ilyen ( pl. ALGOL, FORTRAN, C, Pascal) Interpreteres programnyelv esetén: az elkészült programot egy interpreter program segítségével futtatják, az utasításonként sorra veszi a forrásprogramot, értelmezi azt, majd végrehajtja más elnevezés ilyen programnyelvekre: szkript nyelvek Példák ilyen nyelvekre: PHP, Bash, ASP, Perl, Javascript, Python, Lua
16
HTML lapokba ágyazott programok
Internetes böngészéskor : HTML lapokba ágyazott programok futhatnak bizonyos szkript nyelveken. Példák erre: Javascript, VBScript, Python, PHP Fajtái: host oldali szkript nyelv: a böngészőben futnak Pl.: Javascript, VBScript szerver oldali szkript nyelv: a webszerveren futnak, nem a böngészőben Pl.: Python, PHP
17
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
18
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.
19
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;
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.