Transcript 04 Felvezetes - Alapfogalmak
Hernyák Zoltán
Web: http://dragon.ektf.hu/aroan , E-Mail: [email protected]
Magasszintű Programozási Nyelvek I.
Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu
1
•
Kötelező irodalom:
Nyékiné Gaizler Judit
:
Programozási nyelvek
,
Kiskapu, Budapest, 2003.
•
Dr. Kovács Emőd, Hernyák Zoltán, Radványi Tibor, Király Roland
:
A C# programozási nyelv a felsőoktatásban
( http://aries.ektf.hu/csharptk )
Ajánlott irodalom:
• Juhász I.:
Magasszintű programozási nyelvek 1
. Elektronikus jegyzet. Debreceni Egyetem, 2003. http://mobidiak.inf.unideb.hu/mobirobi/listdocument.mobi?id=112
Valós probléma megtalálása
Megoldása (adott tudomány)
Modellezése (Algoritmus tárgy)
Lekódolása (Programozás tárgy)
3
A program készítés lépései:
A probléma megtalálása
A probléma megértése
A megoldás módszereinek felkutatása
Az algoritmus felállítása
A programozási nyelv kiválasztása
Az algoritmus kódolása
4
Kódolás:
a választott programozás nyelv szintaktikai szabályainak figyelembevételével…
a használható programozási elemek segítségével…
az adott nyelv futtatórendszerének ismeretében…
helyes működésű programszöveg készítése.
5
Forráskód Programozó Tárgykód Compiler Futtatható kód Linker Futtató környezet Operációs rendszer + Futtató rendszer Memória + Mikroprocesszor
6
Hibatípusok
Szintaktikai hiba
Fordítóprogram veszi észre
Fordítási időben
A fordítás folyamata itt le is áll
A programozási nyelv szabályainak megszegéséből eredő hibák
7
Hibatípusok
Szemantikai hiba
(run-time error)
A programozó veszi észre programtesztelés (futási idő!) közben
A „program nem azt csinálja” amit kellene
A program szabálytalan műveletet végez, és leáll a futása
Az algoritmus rosszul kódolásából ered
8
A „jó” programozó
Ismeri a nyelv szabályait, és nem követ el szintaktikai hibákat
Jó algoritmizálási képességgel rendelkezik, és nem követ el szemantikai hibákat Hogyan lehet ezt elérni:
Tanulás
Gyakorlás !!!
9
Fordítás lépései:
Lexikai elemzés
Szintaktikai elemzés
Szemantikai elemzés
Kódgenerálás
10
1. Lexikai elemzés:
A program szövegének szétdarabolása
A programot felépítő lexikális elemek
(többkarakteres) szimbólum
Szimbólikus név
Címke
Megjegyzés
Literál
szétválasztása
11
2. Szintaktikai elemzés:
A lexikai elemekből álló kifejezések előállítása, azok helyességének ellenőrzése
Megfelelő sorrendű elemek
Az elemek típusai ismert és megfelelő
12
3. Szemantikai elemzés:
A szintaktikai (már ellenőrzötten helyes) kifejezések közötti
‘értelembeli’ ellenőrzés,
összefüggések felfedezése,
hibák felfedezése,
hibátlan kód esetén annak esetleges optimalizációja
13
4. kódgenerálás:
A szintaktikai kifejezések alapján gépi kódú utasítások generálása
( ez egyszerű nyelvi transzformáció ) Processzor specifikus gépi utasítások Kód-optimalizálás Futási sebességre Memóriafoglalásra Kódhosszra
14
1.Imperatív nyelvek a) Eljárásorientált b) Objektum-orientált 2. Deklaratív nyelvek a) Funkcionális nyelvek b) Logikai nyelvek 3.Máselvű nyelvek
15
1.Imperatív nyelvek
Értékadó utasításokból áll
Programvezérlési szerkezetek
Elágazás: mikor milyen értékadó utasítást kell végrehajtani
Ciklus: hányszor kell végrehajtani az értékadó utasításokat
16
• • • • • •
1.Imperatív nyelvek / Eljárás-orientált Áttekinthetőség miatt alprogramokat szervezünk (eljárások, függvények) Az alprogramokból modulokat építünk Deklaráljuk a modulok interface-ét A főprogram blokkja indítja el az utasítás-folyamot Az utasítások jól követhető, a programozó által megtervezett sorrendben lépésről-lépésre hajtódnak végre A program véget ér amikor a főprogram utolsó utasításának végrehajtása is befejeződik
17
• • • • • •
1.Imperatív nyelvek / Objektum-orientált Áttekinthetőség miatt funkcionális egységeket (osztályokat) építünk Deklaráljuk az osztályok interface-ét Az osztályok új típusként jelentkeznek, melyből a programozó példányokat készít A példányok egymással kommunikálnak A főprogram készíti el a kezdeti példányokat, és ‘felkéri őket’ a működésre A program befejeződik a főprogram utolsó utasításának befejeződésekor
18
• • •
2. Deklaratív nyelvek A programozó részproblémák megoldását írja meg, vázolja fel A megoldandó problémának (fő-probléma) is leírja a megoldási módját A futtató rendszer a beépített logikával ‘felgöngyölíti’ a megoldást a fő-problémából
•
kiindulva A programozó a program működésére kevés befolyással bír
19
2. Deklaratív nyelvek / Funkcionális
• • • • •
A programozó függvényeket programoz le A függvényeknek input argumentumai vannak,
•
és output értékeket produkálnak A bonyolultabb függvényeket al-függvények kompozíciójaként lehet felírni A függvények input argumentumai is függvények Általában minden függvény, még az is függvény, ami első pillanatban nem annak látszik
A program futása befejeződik, amint a fő függvény kifejezés output értékeinek kiszámítása elkészül
20
• • • •
2. Deklaratív nyelvek / Logikai Logikai igaz állításokat (tények) fogalmazunk meg a matematikai formális logika módszereivel Paraméteres logikai kifejezéseket is építhetünk logikai operátorok és a tények felhasználásával Megfogalmazunk egy fő logikai kifejezést (kérdés) A program futása során a beépített futtató elv kiértékeli a kérdést, amelynek erdeménye vagy
•
IGAZ vagy HAMIS lesz A program futása megáll, ha a kérdés logikai eredménye kiértékelődött
21
Forráskód felépítő elemek Karakterek Lexikális egységek Szintaktikai egységek Utasítások Programegységek Fordítási egységek Program
22
Karakterkészlet 1.Betűk + számjegyek + spec. szimbólumok 2.
A saját azonosítókat csak angol ABC karaktereiből készíthetjük el? kódlapfüggetlenség, ( ASCII plain text file ) 3.
Lokális nyelv teljes karakterkészlete felhasználható?
természetesebb, olvashatóbb kódlapfüggő forráskód
23
Lexikai elemek Több karakterből állnak össze
•
Többkarakteres szimbólum (pl ‘ <= ‘ )
•
Szimbólikus név (utasítás, változó, … neve)
•
Címke (programsor ‘neve’)
•
Megjegyzés (szabad szöveg)
•
Literál (szövegbe beleírt (inline) konstans)
24
Azonosító névképzési szabályai Azonosító = valamely programozási eszköz elnevezése .
Az eszközt az első hivatkozás előtt deklarálni kell (meg kell adni a nevét, és hogy ‘mit értünk’ ezen a néven) A névválasztásnak szabályai vannak.
25
Azonosító névképzési szabályai
•
Betűvel vagy aláhúzással kezdődik.
•
Betűvel, számjeggyel, aláhúzással folytatódhat.
•
Hossza sokszor nem korlátos, de nem jellemző a nagyon hosszú nevek használata.
•
Kis/nagybetűk különbözőnek számítanak!?
26