| ELTE-OTK-IT jegyzetek

Programozási alapismeretek

Programkészítés lépései

Tartalom

Bevezetés

1. Specifikálás

2. Algoritmus

3. Kódolás

4. Tesztelés

5. Hibakeresés

6. Hibajavítás

7. Minőségvizsgálat, hatékonyság

8. Dokumentálás

9. Használat, karbantartás

További linkek

Források

Bevezetés

A Programozási alapismeretek tárgyon egyszerűbb programok elkészítésével foglalkozunk. Ezt egy külön keretrendszerben tesszük.

A tárgyon tanult megközelítési módszer, egy konzisztens, a projektünk méretétől független alkalmazható keretrendszert ad (vagy próbál adni) programunk elkészítéséhez.

Vegyük a következő feladatot:

Egy ötgyerekes nagycsalád nyaralni indul a Balatonra. Az autópályán a 11 éves, a számok iránt mindig nagy érdeklődést mutató Matyi nem látja a kilométerórát, de szeretné megtudni, mekkora sebességgel mennek. Így elkezdi megszámolni hány kilométer táblát hagytak el, és közben az időt is méri. Milyen eredményt kap?

1. Specifikálás

Első lépésként szeretnénk a feladatunkat olyan formális módon meghatározni, hogy az sallangmentesen, röviden és érthetően olvasható legyen.

Tudni akarjuk, a szükséges be- és kimeneti információkat (Milyen adatok kellenek a megoldáshoz?; Mi a megoldás?), a bemeneti adatok értelmezési tartományát (Milyen adatokat engedünk beolvasni?), valamint azt, hogy hogyan kapjuk meg a kívánt kimenetet (Hogy kapjuk meg a megoldást?). Ezeket az alábbi módon fogjuk ábrázolni:


            Be: // bemeneti adatok
            Ki: // kimeneti adatok
            Ef: // bemenet értelmezési tartománya
            Uf: // kimeneti érték meghatározása
        

A helyes specifikáció írása bár időigényes tud lenni, rövid kódok esetén pedig egyenesen fölöslegesnek érződik, később segítségünkre lehet, mivel

  • a feladatot jól elkülönülő egységekre bontja, valamint
  • egy hosszú feladat specifikációjából dolgozni könnyebb, mint a szöveget bogarászni
Az út, idő ismeretében határozd meg a sebességet!

                Be: s ∈ R, t ∈ R
                Ki: v ∈ R
                Ef: s >= 0 és t > 0
                Uf: v = s / t
            

Megjegyzés: vannak egyéb információk is (pl. segédadatok, függvények), ám ezekkel később fogunk foglalkozni.

ELTE specifikációs rendszerének dokumentációja

2. Algoritmus

Második lépésben a kész specifikációnk alapján megtervezzük azt az algoritmust, ami helyesen megoldja a feladatunkat.

Egy program 3 fő egységre osztható:

  1. Beolvasás
  2. Eredmény kiszámítása
  3. Kiírás

Az algoritmus "csupán" a második lépés megvalósulásáról szól, vagyis, hogy hogyan kapjuk meg a kívánt eredményt.

Nem foglalkozunk a bemeneti adatok helyes beolvasásával, az eredmény kiírásával. Ennek oka, hogy ezek megvalósítása programnyelvenként eltérő, esetleges.

Az algoritmus szekvenciálisan halad, a következőkből épül(het) fel:

  • elágazások (ha akkor, különben)
  • ciklusok (ismétélődés; számlálós és feltételes)
  • függvények (algoritmus fő részében többször meghívható "nevére" hivatkozva)

Megjegyzés: függvényt alapvetően akkor írunk, ha az a specifikációban függvényként van hivatkozva!

Az algoritmust pszeudokódban írjuk le. Ezt azért használjuk, hogy programozási nyelvtől függetlenül értelmezhető legyen az algoritmusunk. A következő módon néz(het) ki:

Így nézhet ki:


            Változó
                i: Egész // adat-deklarárció, azon változókra, amiket a specifikációban nem deklaráltunk egyértelműen
            db := 0
            db2 := 0
            Ciklus 1-től elemszám-ig     // számlálós (for) ciklus
                Ha valtozo < masik_valtozo akkor  // elágazás
                    db := db + 1
                különben
                    db2 := db2 + 1
                Elágazás vége
            Ciklus vége
        

Megjegyzés: más algoritmusleíró nyelvek is léteznek (pl. folyamatábra, struktogram), de a tárgyon csak pszeudokódot használunk.

További információk pszeudokód íráshoz.

A példánkra alkalmazva:

Az út, idő ismeretében határozd meg a sebességet!

                v := s / t
            

3. Kódolás

Ez a szó szoros értelemben vett "programozás", itt készítjük el a lefutó kódot. A tárgyon C# nyelvben dolgozunk (VS-ben). Amikor létrehozunk egy projektet, az így fog kinézni (minusz a kommentek):


        namespace projekt_neve
        {
            internal class Program
            {
                // Függvények

                static void Main(string[] args)
                {
                    // Deklaráció

                    // Beolvasás

                    // Feldolgozás

                    // Kiírás

                }
            }
        }
    
Segítség a programozási környezet (Visual Studio) telepítéséhez, futtatásához.

Fontos: a program (a különböző függvények és eljárások kivételével) a static void Main(string[] args) részen belülre kerül!

Az út, idő ismeretében határozd meg a sebességet!

            // Deklaráció
            double s, t;    // Be
            double v;       // Ki

            // Beolvasás
            Console.Write("s = ")
            double.TryParse(Console.ReadLine(), out s);
            Console.Write("t = ")
            double.TryParse(Console.ReadLine(), out t);

            // Feldolgozás
            v = s / t;

            // Kiírás
            Console.WriteLine($"A sebesség: {v}");
        

4. Tesztelés

megírás alatt

5. Hibakeresés

megírás alatt

6. Hibajavítás

megírás alatt

7. Minőségvizsgálat, hatékonyság

megírás alatt

8. Dokumentálás

megírás alatt

9. Használat, karbantartás

megírás alatt

További linkek

ELTE specifikáció szerkesztője Specifikációs rendszer dokumentációja

Források

Horváth Győző, Horváth Gyula, Szlávi Péter, Törley Gábor: Programozási alapismeretek 1. előadás (ppt) (előadó: Törley Gábor)