04 Felvezetes - Alapfogalmak

Download Report

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