programozási ismeretek oktatása: kód vagy algoritmus
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
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ásraAlgoritmust először
Kell egy programozási nyelv isKó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ódSpeciális nyelvi kifejezések
Futtatás miatt szükséges
Módszeres feladatmegoldás
Feladat megértése / specifikálásAdatmodell (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 visszafejtveReplaceAll (informatikus -> inciklusmatikus)
Tesztelés összecsapott
Dokumentáció <- mintadokumentációból a végénbenne 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éseDokumentáció, kód előgenerálás (időt spórolunk a
diáknak copy-paste helyett)
Win-win helyzet kialakításaMindenki 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ókEljá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öttehttp://www.cs.umd.edu/hcil/members/bshneiderman/nsd/
StruktoGraaf 3.0Holland, fizetős, € 84,-
EasyCodeNémet EuroSoftInc kezdte, EasyCode, kód generálás,
fizetős (14 nap próba)
SmartDrawAmerika Kaliforniai, $ 197,-
Kitekintés - „NSD szerkesztők”
Microsoft Visio
SourceCoderMá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ökJavításkor elölről kell újrarajzolni
StructorizerLuxemburgi, weben applet, letölthető
StukimaniaELTE-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 – í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ásDokumentá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.cppVá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.hMinden függvényhez a fejléc információk
Paraméterek a specifikációból (be-/kimenet)
subtasks.cppGenerá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, szisztematikusFolyamat, amit be kell tartani
Élményközpontú és sikerorientáltgyorsan é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 feladatokhozKivonat 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.jsphttp://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é[email protected] [email protected].: +36 1 209-0555 / 8652 , 8469Fax: +36 1 381-2140Cím: 1117. Budapest, Pázmány Péter sétány 1/C. 2.406