Vezérlőpult
A6. Az első program · Bevezetés, környezet, Git

A blokk · Bevezetés, környezet, Git · 6. tananyag

Az első program

Eddig mindent megtanultunk a program körül — most végre magáról a kódról lesz szó. Az első program egyetlen sor, de ebben az egy sorban ott a C# fél világa: osztály, metódus, szöveg, utasítás. Szavanként szétszedjük, és megnézzük azt is, hova tűnt a Main.

2 tanóraAz első saját kódVisual Studio kell hozzá

Tanulási célok

1Az egysoros program — szavanként

Hozz létre egy új Console App projektet (A5), és nézd meg a Program.cs-t:

Console.WriteLine("Hello, World!");

Ez egyetlen utasítás (statement) — egy parancs a gépnek. Szedjük szét:

RészMi ez?Mit csinál?
Consoleosztály a BCL-ből (A3!)a konzolt képviseli a programban
.tagelérés„a Console-nak ezt a képességét kérem”
WriteLinemetóduskiír egy sort a konzolra, és a végén új sort kezd
("Hello, World!")argumentum zárójelbenezt az értéket adjuk át a metódusnak: ezt írja ki
"Hello, World!"string literálidézőjelek közötti szöveg — az idézőjel nem íródik ki
;utasítás lezárásaitt a parancs vége
ℹ️ MINDEN OBJEKTUM (folytatás)

Már az első sorodban egy osztály (Console) metódusát (WriteLine) hívod. C#-ban nem lehet „csak úgy a levegőbe” kódot írni: minden képesség valamelyik osztályhoz tartozik.

Mi történik futtatáskor?

Ctrl+F5 → a Visual Studio elmenti a fájlt → a Roslyn IL-re fordítja (A3) → a bin mappába kerül a program (A4) → a CLR elindítja → a konzolon megjelenik: Hello, World! — Itt láthatod az egész folyamatot, amit az előző fejezetekben leírtunk..

2Több utasítás, Write és WriteLine, megjegyzések

A program utasítások sorozata — felülről lefelé, sorban hajtódnak végre:

Console.WriteLine("Első sor");
Console.WriteLine("Második sor");
Console.WriteLine();                  // üres sor — argumentum nélkül
Console.Write("Ez ");
Console.Write("egy ");
Console.WriteLine("sorba kerül.");

Kimenet:

Első sor
Második sor

Ez egy sorba kerül.

Megjegyzések

A megjegyzést (comment) a fordító teljesen figyelmen kívül hagyja — az embernek szól:

// Ez egysoros megjegyzés — a sor végéig tart.
Console.WriteLine("Ez lefut");       // utasítás után is állhat
// Console.WriteLine("Ez viszont NEM fut le — megjegyzésbe tettük");

/* Ez pedig többsoros megjegyzés:
   addig tart, amíg le nem zárjuk. */
💡 TIPP

Az A5-ből ismert Ctrl+K, Ctrl+C billentyűkombináció pont ezt csinálja: a kijelölt sorokat megjegyzésbe teszi. Kód „ideiglenes kikapcsolására” is ez a bevett módszer.

3Hova tűnt a Main? — top-level és a klasszikus forma

Ha programoztál már máshol, vagy régebbi C#-könyvet láttál, feltűnhetett: a mi programunkban nincs se osztály, se Main metódus. Régen ugyanez a program így nézett ki — és ma is írható így:

namespace ElsoProgram
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

A Main a program belépési pontja (entry point): a CLR ezt a metódust keresi meg és indítja el. Egy programban pontosan egy belépési pont lehet.

A top-level statements (C# 9 óta — A2!) ezt a „körítést” elrejti: a fordító a háttérben ma is legenerálja a Program osztályt és a Main metódust, és a te soraidat teszi bele:

Amit te írsz
Console.WriteLine("Szia");
Amit a fordító csinál belőle
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Szia");
    }
}

Nem két nyelv — egy nyelv, két írásmód. A top-level rövidebb és kezdésnek barátságosabb, ezért az I. félévben ezt használjuk. A klasszikus formát akkor vesszük elő, amikor a static és az osztályok világát tanuljuk (D4, majd H blokk) — akkor minden szava érthető lesz.

ℹ️ JÓ TUDNI

Top-level utasításokat csak egyetlen fájlba írhatsz a projektben (különben a fordító nem tudná, mi a belépési pont — CS8802 hiba). A többi fájlba osztályok kerülnek majd.

4Hibavadász

Helyes vagy hibás?

Döntsd el mindegyik kódsorról: lefordulna-e így? Utána megtudod, miért.

1 / 8Pontszám: 0

5Gyakori hibák — az első CS-kódjaid

A fordító hibái elsőre ijesztőek, pedig baráti kézfogások: megmondják, hol és mi a baj. A hibakód (CS + szám) rákereshető, de a minta hamar ismerős lesz:

HibaüzenetMit jelent?Mit tegyél?
CS1002: ; expectedhiányzik a pontosvesszőtedd ki a sor végére a ;-t
CS0103: The name 'console' does not exist…ismeretlen név — a C# megkülönbözteti a kis- és nagybetűtconsoleConsole, writelineWriteLine
CS1010: Newline in constantlezáratlan string — hiányzik az idézőjel párjazárd le: "…"
CS1026: ) expectedhiányzó zárójelszámold össze: minden (-nek van ) párja?
CS8802: Only one compilation unit can have top-level statementskét fájlban is top-level kód vana top-level sorok csak a Program.cs-ben lehetnek
⚠️ FONTOS SZOKÁS

Mindig a legelső hibát javítsd ki, és fordíts újra! Egyetlen hiányzó pontosvessző lavinányi követő hibát okozhat — az első javításával a többi is eltűnhet.

6Gyakorlat — névjegykártya a konzolra

  1. Hozz létre új projektet: Console App, név: Nevjegy, .NET 10.
  2. Írd meg a saját szöveges „névjegykártyádat” — keretezéssel:
// Névjegykártya — az első saját programom
Console.WriteLine("+----------------------------+");
Console.WriteLine("|  Kiss Anna                 |");
Console.WriteLine("|  11.I osztály              |");
Console.WriteLine("|  Kedvenc nyelv: C#         |");
Console.WriteLine("+----------------------------+");
  1. Futtasd (Ctrl+F5). Igazítsd a kereteket, hogy szépen álljanak!
  2. Hibalabor — rontsd el szándékosan, egyszerre mindig csak egyet, és figyeld meg a hibaüzenetet (Error List):
    • törölj ki egy pontosvesszőt → CS1002;
    • írd kisbetűvel: consoleCS0103;
    • törölj ki egy záró idézőjelet → CS1010.
    Mindig javítsd vissza, mielőtt a következőt rontod el!
  3. Tegyél a program elejére egy megjegyzést a neveddel és a dátummal.
✅ ELLENŐRZŐ PONT

A névjegy hibátlanul megjelenik, és mindhárom hibaüzenetet láttad a saját szemeddel — és vissza is javítottad őket.

7Feladatok

Gyakorló feladatok

⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás

A6.1

Írd le fejből, mit jelent a sorban minden rész: Console.WriteLine("Szia!"); — osztály? metódus? argumentum? lezárás?

A6.2

Mit ír ki az alábbi program? Előbb papíron döntsd el, aztán ellenőrizd géppel!

Console.Write("A");
Console.WriteLine("B");
Console.WriteLine("C");
A6.3⭐⭐

Készíts „lépcsőt”: írj programot, amely csillagokból lépcsőt rajzol (1, 2, 3, 4, 5 csillag soronként). Hány WriteLine kell hozzá?

A6.4⭐⭐

A klasszikus formájú programban (3. szakasz) keresd meg: hol az osztály neve, hol a metódus neve, hol a te utasításod? Mi lehet a static void szerepe? (Tipp: még nem kell tudnod — az a D blokk. De tippelni szabad!)

A6.5⭐⭐⭐

Nézd meg a sharplab.io-n (A3 gyakorlat): írd be az egysoros top-level programot, és a jobb oldalon válts C# nézetre (ez a „mit generál a fordító” nézet). Megtalálod benne a Main-t? Mi lett az osztály neve?

8Önellenőrző kvíz

Ellenőrizd magad!

Minden kérdésnél egy válasz helyes. A végén pontszámot kapsz.

9Fogalomtár

FogalomJelentés
utasítás (statement)egy parancs a gépnek; pontosvessző zárja
metódushívásegy osztály képességének használata: Osztaly.Metodus(argumentum)
argumentuma metódusnak zárójelben átadott érték
string literálidézőjelek közé írt szöveg a kódban
megjegyzés (comment)// vagy /* … */ — a fordító figyelmen kívül hagyja, az embernek szól
top-level statementsosztály és Main nélküli írásmód — a körítést a fordító generálja
Maina program belépési pontja: a CLR ezt indítja el
belépési pont (entry point)az a hely, ahol a program futása kezdődik

10Összegzés

  1. Az első sor felépítése: osztály (Console) . metódus (WriteLine) ( argumentum ) ("Hello, World!") ; — és ez a minta ezerszer visszatér.
  2. A program utasítások sorozata, felülről lefelé; a WriteLine új sort kezd, a Write nem; a megjegyzéseket a fordító átugorja.
  3. A top-level írásmód mögött a fordító ma is legenerálja a Program osztályt és a Main belépési pontot — egy nyelv, két írásmód.
  4. Top-level utasítások csak egyetlen fájlban állhatnak — a többi fájlba osztályok kerülnek majd.
  5. A fordítási hiba nem ellenség: megmondja, hol a baj (CS1002 = pontosvessző, CS0103 = elgépelt név…) — és mindig az első hibát javítsd először.