C# – Programozás elmélet


Programozási alpfogalmak

Most áttekintünk néhány programozási alapfogalmat a teljesség igénye nélkül. Csak annyival, és olyan szinten ismerkedünk meg, amennyire egy középiskolásnak szüksége lehet. Nem győzöm hangsúlyozni, a gimnázium nem képez programozókat, csak belekóstolunk ebbe a szakmába, és esetleg sok otthoni munkával emelt szintű érettségit is tehetünk.

  • Programozás – olyan folyamat, amely során egy feladat megoldását a számítógép számára érthető módon írjuk le.
  • Programozási nyelv – a programozáskor használt leírás nyelve.
  • Program – a programozás eredményeként jön létre, utasítások sorozatából épül fel.
  • Forrás program – a megírt programszöveg, amelyet valamilyen szövegszerkesztővel hoztunk létre.
  • Fordító program (compiler) – a programot a számítógép számára lefordítja, azaz a forrásprogramot egy úgynevezett tárgyprogrammá alakítja (ez már gépi kódú program, de általában még nem futtatható). A legtöbb fordító két menetben fordítja le a forrásprogramot, az első menetben a lexikális és szintaktikai elemzés történik. Ennek végeztével megkapjuk az úgynevezett közbülső formulát. A második menetben a fordító a közbülső formából előállítja a tárgyprogramot.
  • Lexikális elemzés – legfontosabb feladata, hogy felderítse a program úgynevezett alapjeleit, és szabványos formában átadja azokat a szintaktikai elemzőnek (alapszavak, azonosítók, konstansok, elhatároló jelek, stb).
  • Szintaktikai elemzés – a lexikai elemzőtől már standard formában kapja meg a programot. Megvizsgálja, hogy az adott programozási nyelv nyelvtani szabályai szerint helyes-e a program. Elkészíti minden utasítás szintaxis fáját. A folyamat végén a fordítóprogram elkészíti a közbülső formát.
  • Közbülső forma – a műveletek még nem abban a sorrendben vannak, ahogyan azokat végre kell hajtani. Matematikából már tudjuk, hogy a műveleteket általában nem balról jobbra hajtjuk végre, hanem léteznek egyéb szabályok is (zárójelek, prioritás, stb).
  • Kódgenerálás – a tulajdonképpeni fordítást jelenti, ennek végeredménye a tárgynyelvű program.
  • Programszerkesztés – a tárgynyelvű programot még szerkeszteni kell ahhoz, hogy végleges, futtatható formájú legyen.
  • Értelmező program (interpreter) – a forrásnyelvű programot hajtja végre utasításonként, minden futtatáskor újra kell értelmezni a forrásprogramot.
  • Szintaktikai hibák – azok a hibák, amelyek a programozási nyelv szabályai ellen vétenek (pl. helytelen utasítás).
  • Szemantikai hibák – azok a hibák, amelyek a feladat megoldása szempontjából helytelenek (pl. nullával való osztás).
  • Konstans – olyan adat, amely állandó értékkel bír, nem változik.
  • Változó – olyan adat, amely megváltoztathatja az értékét.

A programírás lépései

  • A feladat pontos megfogalmazása írásban
  • Az algoritmus megtervezése, elkészítése
  • Kódolás
  • Tesztelés, hibakeresés, javítás
  • A program hatékonyságának vizsgálata
  • Dokumentáció készítése

Az algoritmus fogalma

Algoritmus – egy probléma megoldásának véges számú részlépésben történő egyértelmű, és teljes leírása.

Az algoritmus elemi lépései

  • Beolvasás
  • Kiírás
  • Értékadás
  • Elágazás
  • Ciklus

Algoritmus leíró eszközök

Struktogram

Az algoritmust (megosztott) téglalapokba írjuk, és a végrehajtandó utasításokat ezekben határozzuk meg.

Folyamatábra

Különböző geometriai szimbólumok segítségével írjuk le az algoritmust. Az egyes ábráknak meghatározott jelentésük van, ezeket nem szabad felcserélni. Az elágazási irányok megadása önkényes, de egy programon belül csak egy módon használjuk.

Mondatszerű leírás

Az algoritmust egymás után következő, hétköznapi szavakkal és mondatokkal írjuk le.

Adat fogalma, adattípusok

Ha rögzítjük az információt, akkor adatról beszélünk, tehát maga a program is adat, és amivel a program dolgozik, az is adat. Az adatokat általában valamilyen háttértárolón rögzítjük.

Adattípusok:

  • Elemi típusok (nincs belső szerkezetük)
    • Logikai
    • Karakter
    • Egész szám
    • Valós szám
  • Összetett típusok (elemi adattípusokból épülnek fel), például:
    • Tömb
    • Szöveg
    • Lista
    • Rekord
    • stb.

Adatszerkezetek

Fontos jellemzője egy adatnak, adathalmaznak, a szerkezete. Az adatcsoportokban valamilyen logikai összefüggés érvényesül. Ezeket az összefüggéseket adatszerkezeteknek nevezzük. Az adatszerkezetekkel különböző műveleteket végezhetünk:

  • Létrehozás
  • Módosítás
  • Rendezés
  • Keresés
  • Bejárás
  • Feldolgozás

Ismertebb adatszerkezetek a következők:

  • Halmaz
  • Tömb
  • Lista
  • Sor
  • Verem
  • Gráf
  • Fa

Adatállományok

A számítógépen lévő információ tárolási egysége a fájl. Egy fájl tartalma a gép szempontjából vagy adat, vagy program, amely a processzor által végrehajtható utasításokat tartalmaz. A fájlban tárolt adat tetszőleges, lehet szöveg, grafikus kép, hang stb. Az adatok formájára nézve nincs előírás, a gyakorlatban nagyon sokféle formátum létezik. A fájlt minden operációs rendszer használja, konkrét megjelenése azonban már az operációs rendszertől függ. Fizikailag tehát a háttértáron elhelyezkedő összefüggő adathalmazt tekinthetjük fájloknak.

A lemezeken elhelyezkedő fájloknak van nevük, fizikai elhelyezkedésük a lemezen, méretük, attribútumaik és más és más rendszereken még sok egyéb jellemzőik is. Ha az operációs rendszerben futó program fel akarja dolgozni egy lemezen elhelyezkedő fájlban lévő adatokat, akkor azt először tudatnia kell az operációs rendszerrel egyértelműen, hogy melyik a kérdéses fájl, aminek hatására az operációs rendszer fizikailag megkeresi a fájlt, és az adatait hozzáférhetővé teszi a program számára. Ezt a folyamatot a fájl megnyitásának nevezzük.

Adatállománnyal (fájllal) végezhető műveletek:

  • Létrehozás
  • Megnyitás
  • Bővítés
  • Keresés
  • Törlés
  • Módosítás
  • Lezárás

Programozási nyelvek

A programozási nyelv a számítástechnikában használt olyan, az ember által olvasható és értelmezhető utasítások sorozata, amivel közvetlenül, vagy közvetve (pl. gépi kódra fordítás után) közölhetjük a számítógéppel egy adott feladat elvégzésének módját. Ma már sokféle programozási nyelv létezik, hiszen a feladatok is különbözőek. Vannak alacsony szintű, illetve magasszintű programozási nyelvek. Minél magasabb szintű egy programozási nyelv, annál könnyebb vele dolgozni, több segítséget, szolgáltatást nyújt. Természetesen a fejlesztői környezettel együtt! Én ebben a kis rövid leírásban, összefoglalóban a C# (szísárp) nyelv alapjaival foglalkozom Microsoft Visual Studio 2019 Community fejlesztői környezetben. Csak olyan, és annyi ismereteket írok le, rendszerezek, amennyire egy gimnáziumi tanulónak szüksége van. Aki mélyebben el akar merülni a programozásban, az egy felsőoktatási intézményben megteheti, illetve utána egy munkahelyen szerezhet gyakorlatot. Sok-sok év, esetleg évtized után mondhatja magáról, hogy tud programozni.