Törley Gábor PROGRAMOZÁSI NYELVEK, KÖRNYEZETEK KIFEJEZŐEREJÉNEK VIZSGÁLATA

Hasonló dokumentumok
Programozási nyelvek, környezetek kifejezőerejének vizsgálata

Turbo Delphi használata az oktatásban

A C# programozási nyelv alapjai

Programzás I gyakorlat

Delphi programozás III.

Algoritmizálás és adatmodellezés tanítása 1. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Delphi programozás IV.

Java programozási nyelv

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programtervezés. Dr. Iványi Péter

Webprogramozás szakkör

A KÓDOLÁS TECHNIKAI ELVEI

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozás I. gyakorlat

1. Egyszerű (primitív) típusok. 2. Referencia típusok

PASzSz. Dr. Kotsis Domokos

Programozási alapismeretek 1. előadás

Adatbázis és szoftverfejlesztés elmélet

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Informatika tanítási módszerek

Programozási nyelvek (ADA)

Podoski Péter és Zabb László

Programozás II. 2. Dr. Iványi Péter

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Kifejezések. Kozsik Tamás. December 11, 2016

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Kifejezések. Kozsik Tamás. December 11, 2016

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Eljárások és függvények

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozási nyelvek (ADA)

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Delphi programozás I.

Programozási alapismeretek 4.

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Programozás alapjai Free Pascal

Programozás alapjai (ANSI C)

Szoftver-mérés. Szoftver metrikák. Szoftver mérés



1. Bevezetés A C++ nem objektumorientált újdonságai 3

Maximum kiválasztás tömbben

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Eljárások, függvények

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Történeti áttekintés

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Programozás alapjai. 2. előadás

Programozási nyelvek Java

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Mintavételes szabályozás mikrovezérlő segítségével

A JavaScript főbb tulajdonságai

Imperatív programozás

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

Algoritmusok - pszeudókód... 1

A TANTÁRGY ADATLAPJA

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Python tanfolyam Python bevezető I. rész

Java II. I A Java programozási nyelv alapelemei

INFORMATIKAI ALAPISMERETEK

OOP #14 (referencia-elv)

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Programozási alapismeretek 2009/2010

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

C# tanfolyam I. A.Net keretrendszer, programozási technikák és alapismeretek. Kis Balázs

4. Programozási nyelvek osztályozása. Amatőr és professzionális

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

Internet programozása. 3. előadás

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozási alapismeretek. Bevezető

Bevezetés a programozásba I.

Informatika terméktervezőknek

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Pénzügyi algoritmusok

Modellező eszközök, kódgenerálás

Inczédy György Középiskola, Szakiskola és Kollégium Nyíregyháza, Árok u. 53. TANMENET. Informatika szakmacsoport

Már megismert fogalmak áttekintése

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Algoritmizálás, adatmodellezés tanítása 6. előadás

Programozás módszertan p.1/46

Az első program. 1. Első lépés A feladat Specifikáció Algoritmus Kód Második lépés...

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozási nyelvek JAVA EA+GY 1. gyakolat

Nézzük tovább a lexikai egységeket!

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Átírás:

Törley Gábor (pezsgo@elte.hu) PROGRAMOZÁSI NYELVEK, KÖRNYEZETEK KIFEJEZŐEREJÉNEK VIZSGÁLATA

Bevezetés Egy nyelv annál kifejezőbb, minél kevesebb szellemi befektetést, időt kíván a programozótól a kódolás során Nyelv és környezet: komplex egység Módszeres programozás lépései: Kódolás, tesztelés, hibakeresés és javítás

Bevezetés Nyelvi szempontok Értelmes alapszavak Egyszerű és következetes programszerkezet Egyszerű kódolás, könnyen tanulhatóság Fejlesztői környezet szempontjai Kulcsszavak kiemelése Kódolást segítő szolgáltatások (pl. intelisence) Fordítás, hibaüzenetek Nyomkövető rendszer

Bevezetés Előzetes tudás Algoritmizálás alapjai Imagine, Logo ismeret Imperatív nyelvek osztálya Gondolatkísérlet Adott egy egészekből álló számsorozat, döntsük el, van-e köztük páros szám! Adott a specifikáció és az algoritmus

Érdekes programkészítési lépések Oktatásban ma elterjedt nyelvek: (1) Pascal/Delphi, (2) (Visual) C++, C#, (3) Java, (4) Visual Basic Jövőben kaphatnak nagyobb szerepet: (5) Ruby és (6) Python Kódolás folyamata Kódolási szabályok Kódolást segítő szolgáltatások I/O Hibaüzenetek, fordítás utáni rejtett hibák Tesztelés, nyomkövető rendszer

Programszerkesztés Angol nyelv ismerete Pascal Borland Pascal 7.0 (Free Pascal 2.2.0) Borland Turbo Delphi Explorer (ingyenes)

Pascal nyelv jellemzői A programszerkezet könnyen követhető és memorizálható Alulról felfele építkezik: a deklarálásnak mindig meg kell előznie a használatot Értelmes alapszavak Pl. I/O: read, readln, write, writeln Nem minden típusazonosító védett byte = string Hozzáférési jog nélküli paraméterátadás

Pascal nyelv jellemzői Következetlenség Procedure a(var n: integer; b: byte); a(n, b); Nem kell minden sor végén kitenni a pontosvesszőt (if-then-else) Összetett szerkezetek eleje-vége jelzése sem egységes pl. begin-end, record-end, while-end, repeat-until Csellengő else probléma (C++, C#, Java nyelvekre is jellemző) Nem kisbetű-nagybetű érzékeny if a=5 then if a=4 then else writeln(a);

Borland Pascal 7.0

Delphi

Delphi I/O

C++ Engedékenyebb, mint a Pascal Változók deklarálása: ahol szükségét érezzük Tömörség { } operátorok i--, --i, i++, ++i: rontja az olvashatóságot I/O cin, cout nem utalnak egyértelműen a beolvasás és a kiíratás funkciójára cin >> n, cout << n

C++ Hibaforrások C-jellegű nyelvek összetett utasításainak törzse helyett véletlenül írt üres (;) utasítás switch break probléma (C#-ban már kötelező a break) típushelyesség ellenőrzése közben a fordító csak figyelmeztet típusütközésnél, és automatikusan végzi el a konverziót van, amikor helyesen, van amikor nem Kis- és nagybetűket megkülönbözteti

Dev-C++

Visual C++ 2008 Express

Visual C# 2008 Express Konzolos programok írása hasonlóan a Delphihez Az osztály és objektum szintű metódusok tagkiválasztó operátora egységes (.) Világos paraméterkezelés int a ref int a out int a Értelmes I/O parancsok (konzolos változat) Read, ReadLine, Write, WriteLine A forrásfájl csak a kódot tartalmazza

Visual C# 2008 Express

Java

Java - Eclipse Zárójelezés segítése

Visual Basic 2008 Express A Basic egy implementációja A strukturálatlan alapnyelv kibővítése strukturált és objektum orientált elemekkel Nehéz továbblépés az elavult gyökerek miatt Támogatja a kezdőket a nyelv és a környezet is

Visual Basic 2008 Express

Ruby (SciTE) Fiatal nyelv (1995.) A változó típusa értékadáskor dől el Rontja az olvashatóságot és sok hibalehetőséget rejt A függvény nincs markánsan megkülönböztetve az eljárástól Ki- és beolvasás szintakszisa érthetetlen eltéréseket mutat gets szöveg, puts s n = Integer(gets), puts n.to_s

Python 1991-ben született Hasonlóság Rubyval Újdonság: margószabály Rákényszerít az olvasható kódolásra Számlálós ciklus szokatlan szintakszis és nem kitalálható szemantika for i in range (1, n) for i in range (0, n)

Fordítás, statikus szemantikai hibák Segít a hibaüzenet, ha tudatja milyen hiba történt hol és milyen módon lehet megoldani azt. Két típushibát vizsgálunk Utasítás/változó nevének elgépelése Nem lezárt programblokk

Borland Pascal Az első hibánál leáll

Borland Pascal

Turbo Delphi Explorer Lehetséges összes hibát kiírja Kódolási időben is jelez hibákat! Tömör hibaüzenetek, rávilágítanak a problémára, a súgó is hasznos segítség

Dev C++ - Visual C++ 2008 Express Kezdők számára nem egyértelmű hibaüzenetek

Visual C# 2008 Express Egyértelműbb, barátságosabb hibaüzenetek Kódolási időben, a háttérben is dolgozik a fordító Az ciklusváltozónak kezdőértéket kell adni (a példában i)

Visual C# 2008 Express

Visual Basic 2008 Express Kész akarva nehéz ilyen hibákat generálni az intellisence miatt

Java - Eclipse A fordító a háttérben leleplezi a hibákat Jól láthatóan jelöli a hibás sorokat Érthetőek és lényegre törőek a hibaüzenetek

Python Scriptnyelv szintaktikai és szemantikai hibák futási időben derülnek ki Helyzetenként változik a hibaüzenet milyen pontos és specifikus

Ruby - SciTE Még nehezebb értelmezni a hibaüzeneteket

Tesztelés, hibakeresés Dinamikus szemantikai hibák sokkal kényelmetlenebbek hibásan fut a program Előnyös tulajdonságok Egy helyen találhatóak meg a funkciók Minél több információ egy helyen Lépésenkénti végrehajtás

Borland Pascal

Turbo Delphi Explorer

Dev C++, Eclipse Külön hibakereső mód Dev C++: a fordító beállításain kell változtatni bonyolult Eclipse: egy kattintás az egész!

Visual C# 2008 Express

Python, Ruby A tárgyalt környezetek hátránya Nem rendelkeznek nyomkövető rendszerrel A programozónak kell kiíratnia a változók értékeit

Összefoglalás nyelvek Nincs tökéletes nyelv és környezet Oktatási szempontok Értelmes alapszavak Milyen könnyű megírni az első programot? Mennyire áll közel az algoritmikus nyelvünkhöz? A tanuló megérti a programozás alapvető elemeinek helyét, szerepét és használatát

Összefoglalás nyelvek Pascal Erős és szigorú típusosság Átlátható és memorizálható programszerkezet Jó alap a továbblépéshez Objektum orientáltság (OO) 4GL környezet Jó első imperatív nyelv C++, C#, Java OO új távlatok nyelvi szinten (Pascalhoz képest) C++ túl bonyolult első imperatív nyelvként C#, Java: letisztultabb, kiforrottabb jobb választás továbblépés esetén

Összefoglalás nyelvek Visual Basic Rengeteg előnyös tulajdonság kezdők számára A nyelvi gyökerek és az erős kötődés a fejlesztői környezethez megnehezíti a továbblépést Ruby, Python Gyenge típusosság Nem támogatják a haladó programozási stílus kialakulását Rontja a kód olvashatóságát

Összefoglalás környezetek Olvashatóság Nincsenek lényeges különbségek Intellisence Hibaüzenetek Delphi, Visual C# és Basic 2008 Express, Exlipse (Visual) C++, Python, Ruby Nyomkövetés Nincsenek jelentős különbségek

Összefoglalás paradigmák Érdemes OO nyelvet/környezetet használni? Be lehet vezetni egyszerű módon Algoritmikus nyelv alkalmassá tétele OO-ra Hogyan hat ez az oktatás hatékonyságára? Kezdeti szakasz: Programozási tételek, algoritmizálás OO nélkül, algoritmus szempontjából fontos nyelvi elemek Nem hasznos egy 4GL rendszer vagy a tárgyalt scriptnyelvek használata

KÖSZÖNÖM A FIGYELMET!