1. óra - hello, world
A számítógép és a program - átugorható bevezető
A számítógép memóriájában adatok és programok vannak, számsorokként tárolva. A processzor sorban olvassa egy program utasításait (minden utasítás egy szám). Az utasítások nagyon primitív dolgokat tudnak csak, szerencsére nekünk nem is lesz dolgunk velük. Azért néhány példa: rakd ezt az adatot a memóriában egyik helyről a másikra - pontosan meg kell adni honnan hova; adj össze két számot - pontosan meg kell adni a két szám helyét és az eredmény helyét; küldj néhány számot egy perifériának - például a videokártyának; ... stb. Gépi kódnak hívják ezt, és elég nehéz benne programozni.
De szerencsére...
...kitalálták a magasszintű programozási nyelveket, amikben egy utasítás ilyen primitív utasítások akár százait is helyettesíti. A processzor közvetlenül ezt nem tudja értelmezni, ezért le kell fordítani gépi kódra. Ez amúgy egy gombnyomás. A Windowsos fordítók többnyire egy .EXE kiterjesztésű fájlba írják a gépi kódot. Ha erre "kettőt kattintasz" akkor betöltődik és elindul a program. A helyzet egy picit bonyolultabb. A mai programok már önmagukban nem képesek futni, csak ha telepítve vannak bizonyos segédprogramok. Ilyen például a Windows nevű. :) A mi programjainknak ezen kívűl még a .NET keretrendszer is kelleni fog. Ez Windows Vistában már alapból van. Linuxra és régebbi Windowsokra könnyen telepíthető. Szerencséseknek már "hozta magával" egy másik program.
Többféle programozási nyelv létezik, mindnek vannak előnyei, hátrányai, fanatikus hívői és gyűlölői. Mi C#-ot fogunk tanulni.
A C# és a .NET
Mi most a C# programozási nyelven fogunk programozni méghozzá a .NET-keretrendszerben. Ezeket 2001-ben adta ki a Microsoft, azóta készült Linuxos nyílt-forrású másolata is. Közvetlen őse a Java, nagyon hasonlítanak egymásra. Mindketten erősen "programozóbarát" nyelvek. A kezdés talán nem ezekben a leges-legkönnyebb, de mindenképpen könnyű.
Mi a
SharpDevelop szövegszerkesztőjét fogjuk használni, amiből közvetlenül hívható a C#-fordító és indítható a lefordított program.
SharpDevelop projekt
A Solution és a Project itt SharpDevelopban úgy tűnik azonos fogalmak. Egy projekt a programot tartalmazó fájlból és beállításokból áll. A SharpDevelop felajánl néhány lehetséges beállításgyűjteményt, válasszuk a Console Application-t, és adjuk meg a nevet:
Már kezdhetjük is írni a programot! Sőt, kaptunk egy kész HelloWörldöt (TM)!
using System;
namespace Elso
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Futtatás: a menüsor alatti zöld nyílra kattintva futtatható le ez a program. (TODO: leírni részletesebben)
Minden egyszerű C# program így kezdődik...
using System;
namespace ProjektNév
{
class Program
{
public static void Main(string[] args)
{
...és három bezáró-kapcsos zárójellel végződik. Ezek között vannak a parancsok:
Console.Write("szöveg");
kiírja a szöveget.
Console.WriteLine("szöveg");
kiírja a szöveget és új sort kezd.
Console.ReadKey(true);
Várakozik
egy billentyű leütésére. Most ez azért kell, mert ha véget ér a program becsukódna az ablak.
FEJLESSZÜK KICSIT TOVÁBB A PROGRAMOT!
using System;
namespace Elso
{
class Program
{
public static void Main(string[] args)
{
string s1;
Console.WriteLine("Mi a neved?");
s1 = Console.ReadLine();
Console.Write("Hello ");
Console.Write(s1);
Console.WriteLine("!");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
A "legérdekesebb sor":
string s1;
Ez azt jelenti, hogy legyen a programnak egy s1 nevű, szövegeket tároló változója. Változó: bele lehet rakni valamit, amit később ki lehet olvasni. Lehet több változót is csinálni, ekkor mindnek más kell, hogy legyen a neve, mert az alapján különböztethetők meg. Ezt például nevezhettük volna úgy is, hogy: nev. Ekkor s1 helyett persze mindenhol azt kellett volna írni, hogy nev.
Még egy érdekes sor van:
s1 = Console.ReadLine();
Ez beolvasott egy szöveget a billenyűzetről (enter leütésig), majd belerakta az eredményt az s1 változóba.
Console.Write(s1);
Ez a többi szövegkiíráshoz hasonló, csak éppen az s1 tartalmát írja ki. Amúgy ahol idézőjelek közötti szöveget lehet írni, ott jó eséllyel lehet string típusú változókat is írni.
Még egy turbózás maradt hátra:
Cseréld ki a következő sort:
Console.Write("Hello ");
A következő ötre
if (s1 == "Joe") {
Console.Write("Eki-Eki, Eki-Eki, vabang! ");
} else {
Console.Write("Hello ");
}
- Mit csinálhat vajon az új program?
- Mit jelent angolul az, hogy if, vagy az, hogy else?
- És mit jelenthet ez, hogy Eki-Eki, Eki-Eki, vabang!
Házi feladat
Házi feladat?! Természetesen szorgalmi. Készíts programot, ami csak egy adott név és jelszó beírása esetén írja ki a titkos adatokat... Ha ez megvan, legyen kétféle lehetséges név, két külön jelszóval. Mindkét ember más-és-más titkos adatokat kapjon!