Programozók! El tudnátok magyarázni a programozás alapjait?
9.-es vagyok Szoftverfejlesztő szakon. Iskolában a C# nyelvet használjuk a Visual Studio-val. Egyelőre sok mindent nem értek a programozásban. Az eddigi programjainkat leírom ide. Szóval az első egy alap, ami kiírja, hogy "Hello World!"
Console.Write("Hello World");
Console.ReadKey();
Ha jól tudom, a Console. egy alap parancs, amit kiírunk a legtöbb parancs elejére. Utána jön a "Write", ami a kiírást jelenti, azt írja ki, amit utána zárójelbe írunk idézőjelek közé. Kettősponttal zárjuk a parancsot, utána a Readkey() parancs pedig azt jelenti, hogy nyomjunk le egy billentyűt és bezáródik a program. Ezt még értem, nem túl bonyolult. A következő program a háromszög kerületét számítja ki.
int a;
int b;
int c;
Console.WriteLine("Háromszög kerület számító program");
//Console.WriteLine(Console.Readline());
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("c=");
c = Convert.ToInt32(Console.ReadLine());
int K = a + b + c;
Console.Write("A háromszög kerülete: ");
Console.WriteLine(K);
Console.ReadKey();
Console.ReadKey();
Mivel a háromszög 3 oldalból áll (a, b, c), ezekből számítjuk ki a kerületet. Az "int" parancssa, ha jól tudom, deklaráljuk a változót, azaz meghatározzuk a típusát és azonosítóját. Utána kiíratjuk a program nevét, majd jön ez a parancs, amit már nem értek: //Console.WriteLine(Console.Readline()); Ez a programban zöld színű. Utána kiíratjuk, hogy "a= ", ez után jön a egy parancs, amit szintén nem értek:
a = Convert.ToInt32(Console.ReadLine()); Ez azt jelenti, hogy bekérjük a változó értékét? Utána ezt eljátsszuk a többi oldalnál is. Aztán jön:
int int K = a + b + c; Ez a kerület számításának megadása, de miért van ott az "int"? Utána kiíratjuk:
"A háromszög kerülete= " , majd utána jön egy writeLine, ami nem tudom, miért kell. Utána 2 Console.Readkey(); parancs jön, amit szerintem csak véletlenül írtam le 2-szer.
Aztán ez alapján csináltam egy házi feladatot, ami egy szám négyzetét számítja ki. Ezt én ígycsináltam meg:
int x;
Console.WriteLine("Hatványozó program");
//Console.Writeline(Console.Readline());
Console.Write("x=");
x = Convert.ToInt32(Console.ReadLine());
int c = x * x;
Console.Write("Az x négyzete: ");
Console.WriteLine(c);
Console.ReadKey();
Ez ugyan jó, de jóval rövidebben is meg lehetett volna csinálni. A következő program a háromszög szerkeszthetőségét számítja ki:
int a;
int b;
int c;
Console.WriteLine("Háromszögszerkeszthetőséget számító program");
//Console.WriteLine(Console.Readline());
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("c=");
c = Convert.ToInt32(Console.ReadLine());
if (a + b > c)
{
if (a + c > b)
{
if (b + c > a)
Console.WriteLine("SZERKESZTHETŐ!");
}
else
Console.WriteLine("NEM szerkeszthető!");
}
else
Console.WriteLine("NEM szerkeszthető!");
Console.ReadKey();
Ennek az eleje ugyanaz, mint kerületszámító programé. Ide is a 3 oldal kell. Aztán "if", azaz "ha" függvénnyel megvizsgáljuk az oldalakat, hiszen akkor szerkeszthető a háromszög, ha bármely 2 oldalának összege nagyobb a harmadikénál. "else" , azaz "különben" pedig nem szerkeszthető, ezt a monitorra kiíratjuk. A kapcsos zárójel mit jelent? Itt egy kicsit bonyolultan vannak nekem a kapcsos zárójelek.
Aztán jön a következő program, ami abszolútértéket számol:
double x;
Console.Write("Kérek egy számot! x= ");
x = Convert.ToDouble(Console.ReadLine());
if (x < 0)
{
x = x * -1;
}
Console.Write("|x| = ");
Console.WriteLine(x);
Console.ReadKey();
A "double" függvény mi? Ezt szintén nem tudom, illetve a hozzá tartozó 2 sort se értem:
Console.Write("Kérek egy számot! x= ");
x = Convert.ToDouble(Console.ReadLine());
Egy szám abszolútértékén a 0-tól való távolságát értjük. Szóval ha a számunk kisebb 0-nál, megszorozzuk -1-gyel. Utána az előbbiekben már tapasztalt részek jönnek, amit szintén nem teljesen értek. Na, ennyi. El tudná ezeket részletesen magyarázni? Remélem, csak a kezdet ilyen bonyolult.
"majd jön ez a parancs, amit már nem értek: //Console.WriteLine(Console.Readline()); Ez a programban zöld színű."
azért mert a // egy kommentet jelöl, tehát azt figyelmen kívül hagyja a fordító(mire használják? arra hogy oda írjanak egy megjegyzést, hogy mit is művel az a rész, vagy csak simán nem akarom kitörölni azt a részt, de még szükség lehet rá, ezért ki kommentelem), és a visual studio és általában mindenhol zöldé teszi a kommentet, így jobban láttod hogy az egy komment, nem pedig valami más, azt viszont fontos megjegyezni hogy:
a // az mindig csak egy sort kommentel ki, van olyan ami több sort is ki kommentel, annak a nyitó kapcsa: /* és a záró kapcsa */ tehát minden ami ez a két kapocs közt van az komment
" Utána kiíratjuk, hogy "a= ", ez után jön a egy parancs, amit szintén nem értek:
a = Convert.ToInt32(Console.ReadLine()); Ez azt jelenti, hogy bekérjük a változó értékét? Utána ezt eljátsszuk a többi oldalnál is."
mindig belülről kifele haladunk, tehát elsőnek bekérjük amit beakarunk kérni: Console.ReadLine() , aztán mivel a ReadLine() egy stringet(karakterlánc, vagy ha jobban tetszik: szöveg) add vissza és mi egy integer(röviden int) típusú változóban akarjuk tárolni, ezért át kell konvertálnunk integer típusúra
" Aztán jön:
int int K = a + b + c; Ez a kerület számításának megadása, de miért van ott az "int"?"
azért mert K nevű változód még nem volt idáig, nem is létezett, és most létrehozod, és fel is töltöd egyből, mert például ha azt írtad volna hogy: K = a + b + c;
akkor hibát dobna, mert nincs K nevű változód
" Utána kiíratjuk:
"A háromszög kerülete= " , majd utána jön egy writeLine, ami nem tudom, miért kell. Utána 2 Console.Readkey(); parancs jön, amit szerintem csak véletlenül írtam le 2-szer. "
mert kiíratod a K nevű változónak az értékét, ha Console.WriteLine(K), akkor a K nevű változót írod ki, de ha Console.WriteLine("K"), akkor a K-t mint stringet íratod ki
nem tudom tudod-e, de azért elmondom:
a Write() és a WriteLine() között a különbség, hogy a WriteLine() kiíratás után csinál egy sortörést, tehát a következő kiírás már a következő sorban lesz
"Ennek az eleje ugyanaz, mint kerületszámító programé. Ide is a 3 oldal kell. Aztán "if", azaz "ha" függvénnyel megvizsgáljuk az oldalakat, hiszen akkor szerkeszthető a háromszög, ha bármely 2 oldalának összege nagyobb a harmadikénál. "else" , azaz "különben" pedig nem szerkeszthető, ezt a monitorra kiíratjuk. A kapcsos zárójel mit jelent?"
a kapcsos zárójel egy blokkot jelöl (nem tudom szebben mondani jelenleg), vagyis megmutatja mi melyikhez tartozik, azért van nyitó és záró hogy tudjuk hol az eleje és vége
számomra nehéz ezt elmagyarázni, jobban megérted szerintem ha videót nézel, keress rá: c# elágazások
"A "double" függvény mi? Ezt szintén nem tudom, illetve a hozzá tartozó 2 sort se értem:
Console.Write("Kérek egy számot! x= ");
x = Convert.ToDouble(Console.ReadLine()); "
a double nem függvény, a double az lebegőpontos típust jelöl (vagyis törtet,
pl.:
int a = 6 / 9;
ha kiiratnánk az 'a' változót, akkor 0-át írna ki
de ha ez így lenne:
double a = 6 / 9;
és ezt íratjuk ki, akkor: 0.666666666666667-et kapnánk)
a többi rész pedig: ha elkezded visual studioban írni ezt: Convert.
akkor a . után felhozza mik a lehetőségeid, és látsz ott több mindent, mivel nekünk double típusú kell, ezért azzá konvertáljuk
azt megjegyzem hogy int-él több minden van: 16,32,64, ezek a sort(16), int(32), long(64)-et takarja, mind három számot tud tárolni, csak a sort kevesebbet míg a long többet
„Ha jól tudom, a Console. egy alap parancs, amit kiírunk a legtöbb parancs elejére.”
- Nem. A „Console” nem egy „alap parancs”. Most még biztosan nem tanultatok objektum-orientált programozást, ezért képzeld egy úgy a Console-t, mint függvények (pl. Write(), ReadKey(), stb…) gyüjteménye, ahol olyan dolgok vannak, amelyek egy bizonyos dolog kezelését teszik lehetővé. Jelen esetben a Console, azaz a konzol kezelését segítő függvényeket tartalmaz.
„Az "int" parancssa, ha jól tudom, deklaráljuk a változót, azaz meghatározzuk a típusát és azonosítóját.”
- Az „int” sem egy parancs, inkább egy jelzés a gép felé, arról, hogy a változóban miféle dolgot akarsz tárolni. Jelen esetben egy Integer-t, azaz egy egész számot.
„//Console.WriteLine(Console.Readline()); Ez a programban zöld színű.”
- Ez egy sima komment, ahogy a többiek már kifejtették.
„a = Convert.ToInt32(Console.ReadLine());”
- A Convert-t is képzeld el úgy, mint függvények gyűjteményét. Ebben a gyűjteményben olyan függvényeket találsz meg, amelyek egyik típusról (int, double, stb…) egy másik típusra alakítanak.
A Console.ReadLine() egy szöveget (most egy sort) adna nekünk, de ugye egy szöveggel nem lehet összeadni, kivonni, ezért valamit kezdenünk kell vele. Itt jön képbe a Convert.ToInt32() függvény, amely a szövegből „kiszedi” a számot, amely ezek után belekerül az „a” változóba.
„int K = a + b + c; Ez a kerület számításának megadása, de miért van ott az "int"?”
- Azért van ott az „int”, mivel a „K” egy új változó, még sosem használtuk eddig, most hozzuk létre. Ilyenkor meg kell mondanunk, hogy milyen adatot akarunk benne tárolni. Most „int” típusú dolgot, azaz egy egész számot szeretnék a „K” változóban tárolni.
„ majd utána jön egy writeLine, ami nem tudom, miért kell.”
- Ha nem lenne ott az a WriteLine(), akkor nem látnánk az eredményt. Ugye a „K” változóba kiszámoltuk a háromszög kerületét, és most ki szeretnénk írni. A „Console.WriteLine(K);” pontosan ezt teszi nekünk, fogja a „K” értékét és kiírja, ÉS - amiben különbözik a sima Write()-tól - kiír még egy sortörést is, tehát átmegyünk egy új sorba.
„Aztán "if", azaz "ha" függvénnyel megvizsgáljuk az oldalakat,”
- Rettentő fontos dolog: AZ IF NEM EGY FÜGGVÉNY! Az „if”, azaz „ha” egy vezérlési szerkezet. Ha az if-nek megadott feltétel igaz, akkor az utána lévő kapcsos zárójelek közötti utasításokat végrehajtja.
if(a>b) {
Console.WriteLine("a>b");
// ez akkor fog végrehajtódni, ha a>b igaz, azaz
// akkor fogod az „a>b” szöveget látni, ha az „a változó értéke nagyobb mint „b”-jé.
} else {
Console.WriteLine("a<=b");
// ez akkor fog végrehajtódni, ha a>b NEM igaz, tehát kisebb, vagy egyenlő, azaz
// akkor fogod az „a<=b” szöveget látni, ha az „a” változó értéke kisebb vagy egyenlő mint „b”-jé.
}
A kapcsos zárójel csoportba fogja az utasításokat, pl. azokat, amelyeket szeretnénk ha végrehajtódnának, ha egy feltétel igaz.
„A "double" függvény mi?”
- A „double” az nem függvény, olyan mint az „int”, megmondja a gépnek, hogy az adott változóban milyen típusú adatot akarunk tárolni. Jelen esetben lebegőpontos számot, egy tizedes törtet (pl. 3.141592653, 2.7775573, stb…).
„Console.Write("Kérek egy számot! x= ");”
- Ez sima kiírás, mint a többi, a konzolra kiírja a „Kérek egy számot! x= ” szöveget.
„x = Convert.ToDouble(Console.ReadLine());”
- Ez nagyon hasonló a „a = Convert.ToInt32(Console.ReadLine());”-hoz. Ez is beolvas egy sort, azonban itt nem egy egész számot „szed ki” a szövegből, hanem egy tizedes törtet.
Convert.ToInt32("3.1415"); -> 3
Convert.ToDouble("3.1415"); -> 3.1415
„Console.Write("|x| = ");”
- Kiírja, hogy „|x| = ”.
„Console.WriteLine(x);”
- Kiírja az „x” változó értékét, és még egy sortörést, tehát új sorba megyünk át.
„Console.ReadKey();”
- Beolvas egy karaktert azért, hogy ne záródjon be azonnal a konzolablak.
-----------------------------------------------
Próbáltam mindent minél egyszerűbben elmagyarázni, néhol talán nem vagyok hű az elfogadott definíciókhoz.
Remélem érthető.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!