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

Post on 02-Jan-2016

88 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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émenyhart@inf.elte.hu papne@inf.elte.huTel.: +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

top related