Kihagyás

1. előadás - Problémamegoldás

Teljes(ebb) jegyzetért: See PPT

Meta

Előadó: Horváth Győző

Kezdés: 12:15

Feladatmegoldás

Programozási tételek, programozási alapok

Weboldal

Követelmények

Célok

  • Módszeres feladatmegoldás számítógép segítségével
  • Eszközök bonyolultabb feladatok helyes megoldásához
    • Programozási tételek
  • Programozási alapok

Követelmények

  • Folyamatos számonkérésű tárgy
  • See Weboldal
  • CsoportZH-k, ÉvfolyamZH-k javíthatóak

Gyakorlaton 5-10 perc röpdolgozat (0-2 pont, 10 darab)

  • A1: algorithmizálás
  • A2: Gépes, működő módon leimplementálni
  • C1/C2/C3: Beadandó gyakorlati feladat
    • 2 hét határidő
  • Ck: Komplex beadandó
    • Nehezebb
    • Jól kidolgozott:
      • terv dokumentáció
      • kód
  • B1/B2: Évfolyam ZH-k. Alg és kód.

Ax és Bx javítható.

Programkészítés folyamata

  • Specifikálás
    • miből? mit?
    • Specifikáció
  • Tervezés
    • mivel? hogyan?
  • Algoritmus-leírás
  • Kódolás
    • a gép hogyan?
    • reprezentáció / implementáció
  • Tesztelés
    • Bugs???
    • diagnózis
  • Hibakeresés
    • Bugs, de hol????
  • Hibajavítás
    • No more bugs?
    • okok, hibahelyek
  • Minőségvizsgálat
    • Javítható, dehogyan?
    • jó program
  • Dokumentálás
    • Hogyan működik
    • használható program
  • Használat, Karbantartás
    • Még mindíg jó?
    • évelő (időtálló) program

Példa feladat

A 13 éves Dávid, a 10 éves Matyi és a 8 éves Veronika egy szép napos délutánon 100m2.es családi házuk kertjében játszanak. A farakásnál találnak egy-egy botot, amelyeket sarkaikkal összeillesztenek, és így egy háromszöget kapunk. Dávid aki felsőbe jár, váltig állítja, hogy ez egy derékszögű háromszög. Matyi, akinek viszont nagyon jó műszaki érzéke van, nem hiszi. A három gyerek berohan, hogy Apától kérjen segítséget a kérdés eldöntésében. Mit mond Apa?

Lényegelemzés

  • Felesleges információ szelektálása
  • Lényeg kiemelése
  • Absztrakció

Példa elemzése

Feladat: 3 szám lehet-e egy derékszögű háromszög 3 oldala?

  • 3; 4; 5 -> igen
  • 2,6; 4; 5,8 -> nem

Változók elnevezése(?)

"Megkapni": három számot

  • Pontosabban: három valós számot
  • Még pontosabban: a, b, c valós számokat

"Visszaadni": logikai értéket

  • Pontosabban: bool

Megszorítások

  • "Megkapni": a, b, c valós számok
  • Mindent elfogadok? Negatív oldalak?

"Megkapni": a, b, c pozitív valós számokat

Specifikáció

Célja

A feladat formális megragadása

Összetevői

  1. Bemenő adatok (azonosító, értékhalmaz)
  2. Ismeretek a bemenetről (előfeltétel)
  3. Eredmények
  4. Az eredményt meghatározó állítás (utófeltétel)
  5. A használt fogalmak definíciói
  6. A megoldással szembeni követelmények
  7. Korlátozó tényezők

Tulajdonságai

  1. Egyértelmű
  2. Tömör
  3. Érthető

Eszközei

  • Szöveges leírás
  • Matematikai leírás

Példa

Specifikáció:

  • Bemenet: x, y, z ∈ ℝ (valós számok halmaza)
  • Kimenet: lehet ∈ 𝕃 (logikai értékek halmaza)
  • Előfeltétel: x>0 és y>0 és z>0
  • Utófeltétel: lehet=(x2+y2=z2)

Specifikáció = függvény

  • Bemenet: x,y,z ∈ ℝ
    • a függvény értelmezési tartománya: R\R\R=R^3 (amelynek egyes komponenseire lehet hivatkozni a specifikációban x-szel, y-nal, z-vel)
  • Kimenet: lehet ∈ 𝕃
    • a függvény értékkészlete: L (amelyre hivatkozhatunk a specifikációban lehet-tel)
  • Előfeltétel: x>0, y>0, z>0
    • a függvény értelmezési tartományának szűkítése (R3-ról R3+-ra)
  • Utófeltétel: lehet=(x2+y2=z2)
    • mi igaz a végeredményre: a "kiszámítási szabály"

Algoritmus

Elemi tevékenységek

értékadás, beolvasás, kiírás

Algoritmus összeállítás módja

  • Szekvencia (egymás utáni végrehajtás)
  • Elágazás (választás több tevékenység közül)
  • Ciklus (ismétés)
  • Alprogram (összetett tevékenyés,g absztrakció)

Specifikáció és megvalósítás

A feladat specifikációja valós világbeli objektumokhoz rendel valamilyen valós világbeli eredményt. Emiatt valós világbeli dolgokkal (pontosabban azok absztrakciójával, pl. valós számok halmaza) foglalkozik.

A feladat számítógépes megoldása emiatt több lépésből áll

A valós világbeli objektumokat leíró adatokat be kell juttatni a számítógépbe, annak memóriájában tárolni kell – ezek lesznek a megoldásbeli változók, amelyek típusa a számítógépes világ által elfogadott/megvalósított típusokból állhat (azaz pl. a számítógépes valós számok halmaza a matematika valós számhalmazának egy véges része lehet) – a specifikációban szereplő neveket (egyelőre) azonos nevű memóriabeli változókkal azonosítjuk.

Programok 3 fő lépése

  • Adatbevitel
  • Számolás
  • Kiírás

Kód: keret

namespace haromszog {
    internal class Program {
        static void main(string[] args) {
            // Deklaráció
            double a, b, c;
            bool lehet;
            // Beolvasás
            Console.WriteLine("a = ");
            double.TryParse(Console.ReadLine(), out a);

            Console.WriteLine("b = ");
            double.TryParse(Console.ReadLine(), out b);

            Console.WriteLine("c = ");
            double.TryParse(Console.ReadLine(), out c);
            // Feldolgozás
            lehet = (a*a + b*b == c*c);
            // Kiírás
            Console.WriteLine("Lehet derékszögű háromszög: {0}", lehet);
        }
    }
}

Deklaráció

Matematikai jele Neve Típusa C#-ban
Egész szám int
Természetes szám uint
𝕃 Logikai bool
Valós szám float
𝕊 Szöveg string
Karakter char