420 likes | 581 Views
Programozási ismeretek oktatása: kód vagy algoritmus. Menyhárt László, Dr. Pap Gáborné IV. Oktatás-Informatikai Konferencia Budapest, 20 14 . 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.
E N D
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 • Á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 • Ú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, 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 • 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 • 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/1LfhO64yJRFhywHqRBfoJzawK8PBZDizImWkTFnI4HmA/viewform • https://docs.google.com/spreadsheet/viewform?usp=drive_web&formkey=dERsTi1rS1V6OGc3Rzc3cm85YW5KNFE6MA#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