Podoski Péter és Zabb László



Hasonló dokumentumok
Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

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

kodolosuli.hu: Interaktív, programozást tanító portál BALLA TAMÁS, DR. KIRÁLY SÁNDOR NETWORKSHOP 2017, SZEGED

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

Programzás I gyakorlat

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

I. Bevezetés. 1. ábra A Java "logója"

A C# programozási nyelv alapjai

Bevezetés a Python programozási nyelvbe

Adatbázis és szoftverfejlesztés elmélet

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

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

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

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

Közösség, projektek, IDE

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

Java programozási nyelv 9. rész Kivételkezelés

Programozási nyelvek Java

Iman 3.0 szoftverdokumentáció

Java programozási nyelv

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

(kernel3d vizualizáció: kernel245_graph.mpg)

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?

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Imperatív programozás

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

Vizuális, eseményvezérelt programozás X. V 1.0

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

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Tartalomjegyzék. Előszó... 10

Vizuális, eseményvezérelt programozás XI.

Adatszerkezetek 2. Dr. Iványi Péter

GráfRajz fejlesztői dokumentáció

Programozási nyelvek JAVA EA+GY 1. gyakolat

A Java EE 5 plattform

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Adatszerkezetek 7a. Dr. IványiPéter

Operációs rendszerek. Az NT folyamatok kezelése

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

Adatszerkezetek 1. Dr. Iványi Péter

Clang Static Analyzer belülről

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

C++ programozási nyelv

Rekurzió. Dr. Iványi Péter

Programozási nyelvek (ADA)

Dr. habil. Maróti György

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

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Flex: csak rugalmasan!

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

Informatika. 3. Az informatika felhasználási területei és gazdasági hatásai

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Bodó / Csató / Gaskó / Sulyok / Simon október 9. Matematika és Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

HAWK-3. Az OMSZ saját fejlesztésű időjárási megjelenítő rendszere

Java programozási nyelv 6. rész Java a gyakorlatban

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Számítógép architektúra

A L i n u x r u h á j a

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

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

HVK Adminisztrátori használati útmutató

A szerzõrõl... xi Bevezetés... xiii

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Operációs rendszerek gyak.

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

JAVA SE/ME tanfolyam tematika

Digitális technika VIMIAA01 9. hét

Informatika Rendszerek Alapjai

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

1.sz melléklet Nyári gyakorlat teljesítésének igazolása Hiányzások

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Foglalkozási napló a 20 /20. tanévre

Verifikáció és validáció Általános bevezető

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

JavaScript Web AppBuilder használata

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Utolsó módosítás:

Regionális forduló november 19.

Regionális forduló november 19.

Utolsó módosítás:

iseries Client Access Express - Mielőtt elkezdi

Programozási alapismeretek 1. előadás

Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Java I. A Java programozási nyelv

UNIX / Linux rendszeradminisztráció

Folyamatok. 6. előadás

Nyilvántartási Rendszer

Programozás I. gyakorlat

Átírás:

Podoski Péter és Zabb László

Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő rendszert, amiben az algoritmusok vizualizációjához szükséges eszközök széles palettája elérhető

Algoritmus-vizualizáció ma Célja: főleg oktatási területre (könnyebb ismertetés és megértés), olykor algoritmusok fejlesztésekor is segíthet a hibakeresésben Nehézségek: egy vizualizáció elkészítéséhez könnyebb egy új, testreszabott megjelenítő programot írni, mint találni egyet, ami megfelel az igényeinknek Jellemző, hogy egyszerű, böngészőben futtatható Java appletekkel valósítják meg a demonstrációt Néhány példa következik

Dijkstra algoritmusa

Legrövidebb út keresése Ausztráliában

Jeliot program-vizualizáció

MatrixPro az egyik legáltalánosabb

Az igény megfogalmazása Elvárások egy jó vizualizátorral kapcsolatban: Célközönség számára megfelelő megjelenítés Könnyedén lehessen a vizualizációkat módosítani, bővíteni (pl. Hanoi tornyai) Egyszerű telepítés Épüljön be a tanítási folyamatba Ne igényeljen magas szintű programozói tudást

Psimulex - lehetőségek.net-ben írt nyílt forráskódú keretrendszer Algoritmusok megfogalmazása C-szerű nyelv Beépített fordítóprogram Algoritmusok futtatása Saját virtuális platform Többprocesszoros, akár hálózati emuláció Algoritmusok megjelenítése a virtuális gép változóit megjelenítő általános grafikai könyvtár (WPF) Algoritmusok elemzése Műveletigény, memóriaigény

Saját nyelv Az algoritmusok szempontjából alapvető típusok (skalárisok, konténerek és fák, gráfok) Gyengén típusos imperatív nyelv, C-szerű szintaxissal Típuskonstrukció: rekord Fontosabb vezérlési szerkezetek Felhasználói függvények Több forrásfájl használata Globális változók

Saját virtuális platform Virtuális hálózat, virtuális gép ( mini OS ütemezővel), folyamatok, szálak A virtuális gép processzora futtatja az ún. Microlex utasításokat (gépi kódnak megfelelő parancsobjektumokat) Az egyes szálaknak futási és hívási vermük van Az ütemező cserélhető

Fordítás gépi kódra Négy lépésben fordítunk az alacsony szintű utasításkészletre, visitor (látogató) tervminta alkalmazásával

Parancsobjektumok A parancs tervminta alapján készültek Mindegyik gépi utasítás egy-egy parancsobjektum Az aktuális futási környezeten dolgoznak Három fő csoportjuk van: Vezérlés-átadó parancsobjektumok (pl. Jump) Konkrét (főleg aritmetikai) műveleteket végrehajtó parancsobjektumok Változókat, adatszerkezeteket kezelő parancsobjektumok

Saját típusrendszer Aránylag gazdag típuskészlet Java-hoz hasonlóan közös őstípus BaseType == Object Primitív típusok + gyűjtemények + fák + gráfok Reflection-re épül, emiatt könnyen elérhető az egész.net osztályhierarchia Felhasználói típus a rekord, mezőinek kezdőértéket lehet megadni Gyengén típusosság miatt a konténerekbe tetszőleges típusú elem tehető (pl. listába bináris fák) Automatikus típuskonverziók

Típushierarchia

Saját IDE Funkciók LexLighter (aktuális utasítás színezése) Syntax highlight Léptetési módszerek (hasonlóan a VS-hez + step back) Korszerű IDE, tabok, több forrásfájl kezelése, testre szabható, ergonómikus Nézetek váltása

Saját vizualizáció Dinamikus, változást követő, interaktív adatszerkezetek megjelenítése Montázs tetszőleges elrendezhetőség: Hívási verem megjelenítése Egy-egy lényeges adatszerkezet kiemelése Egymásba ágyazhatóság (fa elemei gráfok) Adatszerkezetek szerkeszthetőek futás közben is

Bináris fák egy sorban

Egy irányítás nélküli gráf szerkesztése

Egy bináris fa szintfolytonos bejárása a Psimulex-ben

Felhasználási területek Oktatás Algoritmusok Programozás Fordító programok (assembly-szerű nyelvek filozófiája) Kutatás Algoritmusok megalkotása Elméletek tesztelése és bemutatása Fejlesztés Algoritmikus problémák megoldása itt és aztán implementálása Demonstráció Automatikusan létrejön a megjelenítés, testre szabható, exportálható a program futása, eredménye, csak a programot kell megírni, az inputot megszerkeszteni.

Távlati tervek Párhuzamos programozási eszközök (lock, monitor, erőforrások) teljeskörű bevezetése.net interopabilitás növelése (a megírt Psimulex nyelvű programból C# vagy IL kódot generálhassunk) Integráció a Visual Studio debuggerébe: intelligens.net adatszerkezet reflekció + grafikus modul Internetes portál nyitás, ahol pl. algoritmikus problémamegoldó versenyeket lehet indítani, gyorsaság, egyszerűség stb. szempontok szerint pontozva