Programozási ismeretek oktatása: kód vagy algoritmus

Slides:



Advertisements
Hasonló előadás
T UDATOS INNOVÁCIÓ VAGY MÓKUSKERÉK ? Locsmándi Alajos Budapest, szeptember 25.
Advertisements

1. Első körös fejlesztések Törzsadat csomag, mintaadatbázis Oktatási anyagok Ajánlatok, szerződéstervezetek
Programozási alapismeretek
Programozási alapismeretek 9. előadás
A webes tesztelés jövője
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
INFOÉRA 2006 Kombinatorika
Algoritmizálás, adatmodellezés tanítása 4. előadás
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 1. előadás
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Az első program, avagy ismerkedés a nyelvvel
Informatika matematika speciális tagozat - tematika évfolyam -
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Mesterséges intelligencia
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Helyes zárójelezés programozási tétele LL.
WEB MES (webes gyártásirányító rendszer) Kiss Miklós (G-5S8)
Vezetői Információs Rendszer Kialakítása a Szegedi Tudományegyetemen Eredmények - Tapasztalatok Vilmányi Márton.
1 Informatikai Szakképzési Portál Adatbázis kezelés DML – Adat manipuláló nyelv.
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
Hangyász hibakövető rendszer A projekt célja: A hibakövető rendszerek (Bug Reporting Tool-ok) olyan alkalmazások, melyek lehetővé teszik.
A problémamegoldás lépései
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
Kovács Dániel László Kovács Dániel László BME-VIK, Méréstechnika és Információs Rendszerek Tanszék Önálló laboratórium.
Mobilis robot (e-puck) robot és a Webots szimulációs rendszer megismerése szimulációs rendszer robot közepesen nehéz feladat megoldása például: vonalkövetés.
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
Meglévő ASP.NET 2.0 alkalmazás kiegészítése AJAX-szal
MŰSZAKI SZAKTERÜLET INFORMATIKA SZAKMACSOPORT
Edényrendezés.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Matematika oktatás mérnök és informatikai képzésekben Ráckeve, március Pannon Egyetem (Veszprémi Egyetem, 1949) Bölcsészettudományi Kar Gazdaságtudományi.
Algoritmizálás, adatmodellezés tanítása 7. előadás
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Programozás, programtervezés
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Mobilitas Illés Zoltán Heizlerné B. Viktória Dr Illés Zoltán Készült az "Országos koordinációval a.
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Illés Zoltán ELTE Informatikai Kar
Készítette: Derecskei Nikolett
2011. Kolozsvár. Hangyász Hibakövető Rendszer A projekt célja  Létrehozni egy olyan hibakövető rendszert (Bug Reporting Tool), amely lehetővé.
Készítette: Mátyás István agrár mérnöktanár szakos hallgató,
Programozási alapismeretek 11. előadás
INFOÉRA 2006 Nagypontosságú aritmetika II.
Bemutatkozik az Informatikai Műhely Lócsi Levente, Kovács Máté.
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
EUCIP konferencia október 20. Cséfalvay Katalin Fejlesztés (BUILD) modul.
Adatstruktúrák Algoritmusok Objektumok
Programozási nyelvek Programozási alapismeretek
Gépészmérnöki és Informatikai Kar Műszaki Mechanikai Intézet
Az interaktív vizsga jellegzetes feladattípusainak áttekintése
Bevezetés a programozásba Algoritmikus gondolkodás
Előadás másolata:

Programozási ismeretek oktatása: kód vagy algoritmus Menyhárt László, Dr. Pap Gáborné IV. Oktatás-Informatikai Konferencia Budapest, 2014.02.07-08.

Bevezetés Miről lesz szó? Miért kezdődött el a munka? Mi lett belőle? Hogyan lehet használni? Mivel lehet folytatni?

Alapok ELTE-IK-n Programozási Alapismeretek oktatása Rá kell vennünk a hallgatókat a módszeres gondolkodásra Algoritmust először Kell egy programozási nyelv is Kódot másodszor Megvalósítás, kipróbálás Most C++-t használunk

Alapok Tehát kell mindkettő Miért? Hogyan? Algoritmus Kód Általánosabb Módszeres feladatmegoldás Kód Speciális nyelvi kifejezések Futtatás miatt szükséges

Módszeres feladatmegoldás Feladat megértése / specifikálás Adatmodell (be/kimenet, elő/utófeltétel) Algoritmus készítés (nyelvfüggetlen) Implementálás Code::Blocks IDE, C++ nyelv Futtatás, hibakeresés/javítás Tesztelés Dokumentálás (csak házi feladatban)

Tapasztalatok Specifikáció hiányos (ha van) Nekiesnek a kódnak Algoritmus a kódból visszafejtve ReplaceAll (informatikus -> inciklusmatikus) Tesztelés összecsapott Dokumentáció <- mintadokumentációból a végén benne maradnak részek a mintából (pl specifikáció)

Ötlet Adjunk egy alkalmazást, ami segít Adatot gyűjteni Dupla munka kiküszöbölése Dokumentáció, kód előgenerálás (időt spórolunk a diáknak copy-paste helyett) Win-win helyzet kialakítása Mindenki nyerjen Mert az erőszak nem használ

Saját készítésű web-es alkalmazás Programming Fundamentals Wizard - PFW Web-es rendszer (langs: HU, EN) Java-ban fejlesztve (JSP, HTML, CSS, JS, XSLT) Glassfish Application Server-en fut Az egyetemi szerveren Felhasználó azonosítása Gmail (OpenID), inf.elte.hu-s vagy regisztrált név/jelszó párral Az adatok tárolása speciális XML formátumban

PFW Adatgyűjtés helye Általános információk (fejlesztés előtt) Feladat szövege, készítő, … Egy feladat több részfeladatot tartalmazhat Bemenet és előfeltételben lehetnek közös részek Részfeladatonként Kiegészítő bemenet és előfeltétel Kimenet, utófeltétel és algoritmus Kiegészítő információk (kódolás után) Tesztelés, fejlesztési lehetőségek

Algoritmus leírók Eljárás összegzés(N, X[], S): S:=0; ciklus i:=1-től N-ig S:=S+X[i]; ciklus vége Eljárás vége void subtask_1(int N, int X[], int & S){ S:=0; for (int i=0; i<N; i++) { S=S+X[i]; }

Algoritmus a PFW-ben NSD (Nassi-Shneiderman Diagram, struktogram) Komplex diagram Dobozok jelekkel és jelentésekkel Nyelvfüggetlen (programozási és természetes) Külföldi hallgatók képzése angol nyelven Pszeudókód angolul hasonlít a programozási nyelvekhez Anyanyelvüket én nem beszélem Nehéz rajzolni (papíron, hibajavítás, …)

Kitekintés - „NSD szerkesztők” Ben Shneiderman 2003-ban összegyűjtötte http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/ StruktoGraaf 3.0 Holland, fizetős, € 84,- EasyCode Német EuroSoftInc kezdte, EasyCode, kód generálás, fizetős (14 nap próba) SmartDraw Amerika Kaliforniai, $ 197,-

Kitekintés - „NSD szerkesztők” Microsoft Visio SourceCoder Már nem elérhető a HREF Tools Corp. Cég honlapja szerint. Még pár (6-10) link nem elérhető

Kitekintés - „NSD szerkesztők” Nem szerepeltek az oldalon Egyéb Microsoft termékek Paint eszközök Javításkor elölről kell újrarajzolni Structorizer Luxemburgi, weben applet, letölthető Stukimania ELTE-s szakdolgozat Webes

PFW-ben megoldva Java, JSP, HTML, JS, CSS XML XSLT NSD szerkesztés Új TML nyelv (task, feladat leírás, AML-re épül) XSLT Generálásokhoz, NSD megjelenítéshez NSD szerkesztés Egér jobb-gomb, Ajax hívás, újratöltés

PFW – így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW - így néz ki

PFW, mint generátor Van sok információnk Lehetséges a generálás Dokumentációt és algoritmust Nem 100%-os megoldást! Sablont az ismert adatokkal

Dokumentáció generálása Kattintunk egy gombon MS Word dokumentum letöltése HTML doc kiterjesztéssel és mime típussal Betöltődik a programba Lehetne OpenOffice is (más kiterjesztés és mime) Piros színnel jelzi, hogy hol kell belenyúlnia a hallgatónak. „Javítsd!” Képernyő képek, saját kiegészítések, …

Generált dokumentáció NSD

Forráskód generálása Kattintás egy gombon Tömörített (zip) könyvtár letöltése Code::Blocks projekt <rövidnév>.cbp, main.cpp, subtasks.h, subtasks.cpp

Generált forráskód NSD

Generált forráskód main.cpp Változók generálása a specifikációból (be-/kimenet) Függvényhívások minden részfeladathoz Adatok beolvasását implementálni kell Klaviatúra vagy fájl Adatok kiírását implementálni kell Képernyő vagy fájl

Generált forráskód subtasks.h subtasks.cpp Minden függvényhez a fejléc információk Paraméterek a specifikációból (be-/kimenet) subtasks.cpp Generált forráskód az algoritmusból A hibás szintaxisú kódot javítani kell! void subtask_1(int N, int X[], int & S){ S:=0; while (i:=1..N) { S:=S+X[i]; }

Generált forráskód Lehetséges a nyelvspecifikus kifejezések használata de inkább NE! Algoritmus maradjon nyelvfüggetlen! void subtask_1(int N, int X[], int & S){ S=0; int i=0; while (i<N){ S=S+X[i]; i++; }

Módszertan Szeretnénk ha a hallgatók tartanák a sorrendet: 1. Algoritmus, 2. Forráskód Nincs elég időnk Időt spórolunk a generálással Régi sablonból hibás információk nem maradnak Könnyen szerkeszthető NSD Egységes kinézetű specifikáció és algoritmus Nyelvfüggetlen algoritmus

Módszertan Vonalvezetőt adunk a lépések betartásához Meg tudjuk mutatni a kapcsolatot a specifikáció és forráskód között Meg tudjuk mutatni a kapcsolatot az algoritmus és forráskód között A szintaktika javításával is tanulható a programozási nyelv Elektronikus felületet biztosítunk a gyakorláshoz

Módszertan Segítünk, de Nem helyettesítjük a gondolkodást kódolást dokumentálást

Módszertan Módszeres, szisztematikus Élményközpontú és sikerorientált Folyamat, amit be kell tartani Élményközpontú és sikerorientált gyorsan és látható eredmény kis módosítással futó kód Felfedeztető Specifikáció és függvény paraméterek kapcsolata Algoritmus és kód összehasonlítása

A jövő Fejlesztési lehetőségek MathML beépítése az elő- és utófeltételekhez Házi feladatokhoz Kivonat generálás A4-es PDF Feladat szöveg, specifikáció és algoritmus Fejlesztés megkezdése előtt be lehetne adni Email küldéssel beadás a rendszerből Automatizált kiértékelés (legalább elő feldolgozás)

Irodalom I. Nassi, B. Shneiderman: Flowchart techniques for structured programming, ACM SIGPLAN Notices, Volume 8 Issue 8, August 1973, Pages 12 - 26 Dijkstra E.W.: A Discipline of Programming, Prentice-Hall, Englewood Cli_s, 1973. Szlávi Péter, Zsakó László: Módszeres programozás: Programozási bevezető, 18. Mikrológia Sz. Csepregi, A. Dezső, T. Gregorics, S. Sike: Automatic Implementation of Service Required by Components, Workshop on Property Verification for Software Components and Services ,PROVECS 2007, http://lina.atlanstic.net/provecs/2007/provecs2007proceedings.pdf

Irodalom Menyhárt László: Can a language be before "the first programming language"?, Teaching Mathematics and Computer Science, 2011, Volume IX, Issue II, 209-224 ISSN: 1589-7389, http://tmcs.math.klte.hu/Contents/2011-Vol-IX-Issue-II.html Menyhárt László, Pap Gáborné: Dokumentáció alapú programfejlesztés; INFODIDACT 2012 konferencia, Zamárdi, Magyarország, 2012.11.15- 2012.11.16. Menyhárt László, Pap Gáborné: How can we get our students to think while we help their work too?: Document based development; Proceedings of the 7th International Multi-Conference on Society, Cybernetics and Informatics. Konferencia helye, ideje: Orlando, Amerikai Egyesült Államok, 2013.07.09-2013.07.12. Florida: International Institute of Informatics and Systemics (IIIS), 2013. pp. 97-102. (ISBN:ISBN-13: 978- 1-936338-83-2)

Irodalom Vladimir Averbukh, Mikhail Bakhterev: The analysis of visual parallel programming languages, ACSIJ Advances in Computer Science: an International Journal, Vol.2, Issue3, No. 4,2013, ISSN : 2322-5157 Martin Weise: A Model for Teaching Informatics to German Secondary School Students in English-language Bilingual Education, Proceedings of the 6th International Conference ISSEP 2013; Oldenburg, Germany, February 26–March 2, 2013/Diethelm et al. (Eds.)/ Potsdam: Universitätsverlag Potsdam, 2013/ S.127-137 B. Shneiderman: A short history of structured flowcharts (Nassi- Shneiderman Diagrams), University Maryland, 2003, http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/ Bob Fisch: Structorizer, http://structorizer.fisch.lu/ Molnár Tamás: StukiMania, http://stukimania.hu, 2013

Irodalom https://157.181.166.134:8181/PFW/index2_HU.jsp http://xml.inf.elte.hu/2013_14_1/progalap/anyagok/PFW_leiras.pdf https://docs.google.com/forms/d/1LfhO64yJRFhywHqRBfoJzawK8PBZDi zImWkTFnI4HmA/viewform https://docs.google.com/spreadsheet/viewform?usp=drive_web&formkey=d ERsTi1rS1V6OGc3Rzc3cm85YW5KNFE6MA#gid=0

Köszönjük a figyelmet! Elérhetőség Menyhárt László Gábor Dr. Pap Gáborné menyhart@inf.elte.hu papne@inf.elte.hu Tel.: +36 1 209-0555 / 8652 , 8469 Fax: +36 1 381-2140 Cím: 1117. Budapest, Pázmány Péter sétány 1/C. 2.406