játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5467
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2524

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2192
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Dev C++ Alapok 2006.04.28 07:10


Először is indítsuk el a Dev C++-t.
Egy sima konzolos progihoz lehet egyszerűen csak egy sima forrást nyitni, de akkor annak nem lehet a beállításait módosítgatni (később fog kelleni..).
Szóval készítsünk egy projekt fájlt. (Fájl/ÚjProjekt...)
Válasszuk az Empty Project-et, alul írjuk be a projekt nevét. (most nekem ez: first)
Többit hagyjuk békén. Mentsük el a projektet! (több fájt fog létrehozni, tehát érdemes mappát készíteni neki.)
Amint látjuk, oldalt megjelenik a projekt neve, de semmi nem történt.
Kattintsunk jobb gombbal a projekt nevére, és válasszuk az Új fájl opcióra. Megjelenik Egy üres lap. Na itt elkezdhetünk programozni!

Egyenlőre csak ennyit írjunk be:
int main()
{
}

Ezzel kész is a program. Persze semmit nem csinál, megnyílik és kilép (lehet, hogy olyan gyorsan, hogy nem is látod...)
Futtatáshoz nyomjunk F9-et. Ekkor kéri, hogy mentsük el. Mentsük (nálam a neve: main.cpp)
Mentés után lefut a progi.

Ahhoz, hogy tudjunk valamit kiiratni a képernyőre, szükségünk lesz egy header-re. Neve: stdio.h . Ez tartalmazza a Standard Bemenet és Kimenet parancsokat.

Tehát írjuk be a programba (int main elé):
#include < stdio.h>
Amint láthatjuk, kacsacsőrök között van az stdio.h. Ez lehetne "" is. Programozói megállapodás, hogy a gyárilag elkészített header-eket kacsacsőrök közé rakjuk, a sajátokat "" közé.

Amint ez kész, a program ismerni fogja a Bemenet Kimenet parancsokat. Most írjuk be a programunkba (a {} közé):
printf("Hello World!");

A printf a szövegkiiratást jelenti. Utána "" közé kell írni a szöveget.
A "" közé lehet beírni vezérlőkaraktereket. Ilyen pl a sortörés, ami n. Ezekről majd később.

Ha most lefuttatjuk a programunkat, akkoris egyből kilép, de ha lassan fut le (valami más fogja a processzort), akkor látjuk, hogy valóban kiiratta.

Tehát most nekünk kell valami, ami lelassítja. A legegyszerűbb megoldás, hogy várakoztatjuk billentyűlenyomásig.
Ezt a getch() paranccsal tudjuk elérni. (a conio.h-ban van definiálva)
Tehát az elejére:
#include < conio.h >
A printf után 1 sorral:
getch();
Most futtassuk le!
Amint látjuk, megáll a program, és ha megnyomunk valamit, akkor máris kilép.

Ez így mind szép és jó, de mit érünk vele? Igazából nemsokat.

Most próbáljunk meg bekérni valamit. Mondjuk a nevet.
Töröljük ki az eddig beírottakat (mármint a {} közöttieket).
Először írjuk ki, hogy kérem a nevet:
printf("Kerem a nevet!n");
Amint látjátok, már ebben van n vagyis sortörés. Ugye nem lenne jó, ha utána rakná a nevet is?

Először definiáljunk egy változót. Írjuk be a printf után:
char nev[50];

Ez azt jelenti, hogy a nev nevű változó 50 karakterből állhat (ennyi elég egy névnek). Változók lehetnek: int (egész szám), float (lebegőpontosan ábrázolt valós szám), double (kétszeres pontosságú float), char (karakter), short (természetes szám) és még sok minden.

Utána jön a szövegbekéretés. Ezért felel a scanf. Ez is az stdio.h-ban van, tehát nem kell semmi újat include-lnunk.
scanf("%s", &nev);
Az első paramétere, hogy milyen formátumú szöveget akarunk bekérni. Itt %s, mert string-et, azaz szöveget. Lehetne: %c (egy karaktert), %i (int, vagyis egész szám), %d (double), %f(float) és így tovább.
a Második paraméter,hogy melyik változóba kérjük be. Itt az előbb definiált 'nev' változóba kérjük be szöveg formátumként.

Utána írjunk ki megint valamit. Például: 'Üdvözöllek' és a nevet.
Ezt így tehetjük meg:
printf("Udvozollek %s!n", nev);
Most az előbb használt formátum jelzőt is használtam, a %s-t. Annak a helyére rakja be a program a 'nev' változó tartalmát. A "" közötti rész után ,-vel elválasztva jön az, hogy mit rakjon be. Itt most egyértelműen a 'nev'-et rakja be.

Akkor most ellenőrizzük. Hogy lássunk is valamit belőle, ezek után írjuk be a getch()-t.
És most lehet futtatni.
Amint látjuk, működik.

Ugorjunk fel egy sort (tehát a következőket a getch() elé írjuk!!).
Most nézzük meg a feltételes elágazásokat.
Lényegük, hogy vizsgálnak valamilyen feltételt, és aszerint fut tovább a program. Vegyünk egy egyszerűbb példát. Kérje be az életkorát :
printf("Kerem a korodat!n");
int kor;
scanf("%i", &kor);

Akinek ez eddig nem világos, olvassa vissza!

Utána vizsgálja meg, hogy nagykorú-e (szóval 18 éves vagy annál idősebb). ÉS ha az, akkor írja ki, hogy nagykorú vagy, ha nem az, akkor azt írja ki, hogy nem vagy nagykorú.

A feltételes elágazás így néz ki:
if (kor >= 18) printf("Nagykoru vagyn");
else printf("Nem vagy nagykorun");


Lényege: HA (kor >= 18) akkor kiírja, hogy "Nagykoru vagy"
EGYÉBKÉNT kiírja, hogy "Nem vagy nagykoru"
Remélem érhető.
Ha lefuttatjuk, akkor megy minden.
Ezzel már lehet mit kezdeni (pl ilyen Legyen Ön is Milliomos féle programot csinálni)

Megjegyzés: a scanf-nél pl scanf("%i", &kor) a kor-elé MINDIG kell rakni & jelet. Ez azért van, mert a scanf prototípusa:
int scanf(const char* szoveg,...);

Tehát a scanf argumentumai memóriacímet várnak, de nekünk csak statikus változónk van. Ezért az & jelet kell elé tennünk, ami annyit tesz, hogy lekéri a változó memóriacímét (Thx for Hacker)
Sokszor idegeskedtem már rajta, hogy mért nem fut a program, és ezt lefelejtettem.
Fájl : Dev C++ Alapok
Méret: 0,5 Mb - Letöltve : 2324

Értékelés: 6.05

Új hozzászólás
srayi          2009.01.20 08:15
B@z köszi az írást, emiatt lett meg a minimum pontos kettesem prog. alap első félévből xD
B@z          2006.06.04 12:51
jjah és itt név bekérés volt, annak meg elég kell lennie 50 karakternek
B@z          2006.06.04 12:51
huhh 1 kicsit későn válaszolok, de:
magasabb szintű dolgoknál ez nem ok. pl a devc++ kihal, ha char *os változót akarsz sprintf-elni. na ezt most jól megaszondtam. szal én jobban szeretem a tömböt hazsnálni, de igen, lehet így is...
T.C          2006.05.14 04:36
Jól van B@Z nem azért írtam, csak a könyv az szerintem alap.
Pl a char nev[50]; helyett egyszerűen:
char* nev; és akkor beírhatod nyugodtan, hogy "B@Z 16" vagy amit akarsz mindeféle megkötés és tömbözés nélkül.
B@z          2006.05.08 03:44
hehe lol. szerinted én nemvok programozó? mert igenis könyv nélkül tanultam meg. van milliónyi jókis segédlet a neten (hogy az msdn-t ne is említsem), meg van 101 olyan emberke, aki szívesen segít. igen, megcsináltam
T.C          2006.05.07 18:35
"PL nekem sosenem volt C++os könyvem. Pascalos volt, asse tom, hogy már hol van. ebook meg.... sose volt nekem 1" B@Z ezt ugye te se gondoltad komoylan? Könyv nélkül tanulni programozni hát érdekes lehet. Nekem itt az asztal mellett van egy halom könyv meg egy DVd nyi e-book. Ez az alap. A többi meg évek alatti rutin...
B@z          2006.05.01 14:15
WToma, ne érts félre, nem ezért nem írok több cikket. hanem eccerűen pancser vok hozzá. a kritikát igenis jó volt, nem vettem leszólásnak meg bántásnak. csak a valúságot fogadtam el. ennyi
WToma          2006.04.29 13:31
B@z: nem akarom elvenni a kedved a cikkírástól, csak szerintem még egyszerűen csiszolni kell a témaválasztáson és a felépítésen.
Szerintem az ilyen cikkek hosszú távon sokkal kevésbé hasznosak, mint egy jól felépített és átgondolt, akár több részből álló írás.
Írni is úgy kell, ahogy programozni: átgondoltan. "Hirtelen felindulásból" csak rövid progikat és egyszerű tutorokat lehet írni, de a C++ nyelv alapjai nem ide tartoznak.
Mégegyszer bocs, ha bántva érzed magad, nem ez volt a célom. Nyilván a progizást se hagyod abba ha valaki leszólja az egyik forrásodat. Újra átgondolod, ha arra érdemesnek tartod a kritikát, és nekifutsz mégegyszer. Ennyi
Toma
B@z          2006.04.29 13:00
jah, asylum:
"Változók lehetnek: int (egész szám), float (lebegőpontosan ábrázolt valós szám), double (kétszeres pontosságú float), char (karakter), short (természetes szám) és még sok minden."
mostmár tudják
B@z          2006.04.29 12:59
köszönöm szépen a kritikákat, úgyláccik megint nemfogok cikket írni egy ideig
de télleg jók amiket mondtatok, de mostmár igazán rájöttem, hogy pancser vok a cikkíráshoz -.-
amúgy énis ilyen cikkekből tanultam meg programozni (félig), és úgy őszintén egy kicsit nem érdekelt, hogy mi a változó definíciója... de ezzel lehet, hogy csak énvok így...
scanf.. hát őő izé. énis cin-el meg cout-al kezdtem, azokat használtam, de már nemis emléxem, hogy miért de áttértem a scanf meg printf-re... asszem még warlock jáccott közre... de nem bizta. már nem emléxem..
Asylum          2006.04.29 10:15
Nekem már alapbol a cout/cin t tanitották printf röl szó se volt...amugy a cikk jo csak tényleg az abszolut kezdöknek csak épp nekik meg azért nem mert hirböl se tudják mi azaz int meg string
VT          2006.04.29 07:34
printf scanf fúúúj!!! Unintelligens ronda parancsok, a cout/cin kombó szebb, jobb, elegánsabb.
Rendesen kaptam a fejemre programozáson hogy miért azt használom, mert azt nem is kéne tudnom, majd csak 3. félévtől, nyomogassam a printf/scanf-et mert a többi is azt csinálja. Jobb, modernebb? Kit érdekel? (magyar oktatás rulez)
WToma          2006.04.29 02:03
Hopp ja amígy azt kifelejtettem a nagy osztásban, hogy a szándék az nemes és igaza van annak, aki azt mondja, hogy kell keződnek is cikksorozat, de talán nem ilyen cikkek.
Toma
WToma          2006.04.29 02:02
"A programozás manapság egy versenyfutás a mérnökök között, akik egyre nagyobb és találékonyabb idiótabiztos programokat készítenek és a Világegyetem között, ami egyre nagyobb és találékonyabb idiótákat termel.
Jelenleg a Világegyetem áll nyerésre." -- Rich Cook

Én nem tartom szerencsésnek a cikket (pedig én nyomtam ám rá az áment ), mert szerintem egy kezdőt -- márpedig nekik szól a cikked -- erősen összezavar a nyelv, fordító és fejlesztőkörnyezet fogalmában, utána pedig órákig bogozhatjuk a fórumon a szálakat
Az megint más dolog, hogy printf-fel szokás kezdeni -- hát persze, mert valamivel meg kell jeleníteni az eredményeket. De nem jó dolog rögtön utána az input fgvekkel foglalkozni, mert azok elég bonyolultak tudnak lenni. Ráadásul úgy -- kezdőkről beszélünk! -- hogy azt se tudja esetleg, hogy mi a fene az a változó, és akkor rögtön bedobjuk, hogy string, tömb (ami amúgy se egy könnyű része a C++-nak), és akkor még nem szóltam a memóriacímről, ami csak ott lóg a levegőben, és szegény olvasó is csak annyit tud róla, hogy potenciális hibaforrás!

Én tudom, hogy nehéz cikket írni (ezért szoktam én általában inkább fordítani ), de szerintem jobban át kellett volna gondolnod, mielőtt beküldöd.

Toma
bloodknife          2006.04.28 23:41
B@z
hogy a hardcore programozók tanuljanak belőle

jól kifejezted magad...
De egyébbként egyetértek B@z-al kellenek ide sőt nemcsak ide az alapok!
KergeDelfin          2006.04.28 22:18
Jah és még annyit hogy ez még nem C++, csak sima C.
KergeDelfin          2006.04.28 22:16
Indulásnak jó. Egy megjegyzés: Arra sose számíts hogy a felhasználó nem lesz olyan pancser hogy valami hülyeséget kitaláljon.A felhasználók hülyék, és a programtervezés pont erről szól, el kell varrni minden szálat, mert egy nagyobb kaliberű programnál komoly gondokkal járhat a hibakezelés hiánya, és ha valaki most akarja kezdeni a C/C++-t, akkor jobb most az elején rászoktatni. Ja és szerintem szólj valamelyik modinak hogy írogassa be szegény backslash-eket, mert így abból az n-ből soha nem lesz sortörés.
Dzsó          2006.04.28 17:11
Átolvastam, és szerintem nagyon jó. Aki C++-t akar tanulni, annak ez nagyon jó kezdés. A C++ tankönyvekkel az a legnagyobb baj, hogy tele van felesleges szövegekkel (az első fejezetben szinte mindegyik elkezdi mesélni a C++ nyelv történetét - kit érdekel?), aztán pedig "bedobja a mélyvízbe" az olvasót - írnak példaprogramot, de olyan utasításokat is használnak benne, amit a szerencsétlen kezdő egyáltalán nem ért. És a legrosszabb, hogy ezeket nem is magyarázzák el, csak használják.

Szóval 10 pont, és remélem lesz folytatás is!
VT          2006.04.28 11:15
Jobb cím lenne simán csak a C++ alapok.
Magáról a C++ nyelvről van benne szó nem a Devcpp fejlesztőkörnyezetről.
B@z          2006.04.28 09:46
jah de amúgy vedd lécci figyelembe a bevezetést: "Ez a cikk kezdőknek szól, akik még nem programoztak igazán." szal ezért írtam ilyen alap dolgokról
B@z          2006.04.28 09:45
hmmm... ez igaz... ezzel a hibábal még nem találkoztam... de régebben igen, de már kiesett
DevC++ról meg.. tudod nem minden műxik DevC++ban, ami VC++ban műxik, azért adtam neki a DevC++nevet, mert ez csak olyan parancsokat tartalmaz, amit elfogad a dev c++. pl ez nem szereti a "void main"-t, hanem mindenképpen int kell neki. szal ilyenekért. a fejlesztőkörnyezetet énse ismerem annyira, hogy írni tudnék róla.. hát ez van...
cs_adam          2006.04.28 09:41
Baz: Én leginkább csak azt akartam mondani, hogy a Dev C++ról akartál írni, és helyette a C++ról szól a tutorial. Egy DevC++os tutorial sorozat hasznos lenne, de akkor valóban arról (mint fejlesztői környezetről írj), és ne a C++ prorgamozási nyelvről. Én például a C++hoz értek, de a DevC++ról csak hallottam idáig. Ebből is látszik, hogy a DevC++ alapjai nem jelenti azt, hogy írni kéne mellé a C++ alapjairól is.
A scanf azért nem mindegy. Én például a teljes nevemet írtam be, amiből a progi csak a vezetéknevemet fogta fel, a maradék meg a bufferelt input miatt elvitte a kor bekérését is, és kiírta hogy "Nem vagy nagykorú". Azért elmondanám "enyhítő körülménynek", hogy a C++ról írás nem könnyű dolog, okkal nem ír róla boldog-boldogtalan.
B@z          2006.04.28 09:03
hali!
szeki: hehe, számtek óra. tudod mi nekünk a számtek óra? word, excel.... lol... ottan aztán várhatok dev c++-t....

cs_adam: jóvan, akor írjál te. annyit írtam a dev c++ról, hogy tudd használni, progizni, többet énse használtam belőle. és hidd el, nagypn sokan keresnek olyan cikket, ami az alapoktól megy. tudod az ilyen cikkeket nem azért írják, hogy a hardcore programozók tanuljanak belőle (akkor nem dev c++ Alapok lenne a címe lol), hanem azért, hogy azok, akik még az életükben nem használtak dev c++-t azok el tudjanak indulni. és manapság nem úgy megy, hogy mindenki megvehet akármilyen könyvet (rosszabbul élünk mint 4 éve , meg az nem Dev C++al foglalkozik (legalábbis olyat nem találtam... jade, volt 1!). PL nekem sosenem volt C++os könyvem. Pascalos volt, asse tom, hogy már hol van. ebook meg.... sose volt nekem 1 jó... szal pl, amikor kezdtem, nekem is jól jöttek az ilyen cikkek. és te is beláthatod, hogy nem neked íródott a scanfos dolog, meg... nemtom, nekem még nem volt problémám vele. gondolom senki nem olyan pancser, hogyha bekér vmit a program, akkor 1 space-t ír be
szeki          2006.04.28 08:31
vagy járjanak számtech órára
cs_adam          2006.04.28 08:25
Jobb lett volna, ha tényleg a Dev C++ról írsz, és nem a C++ nyelvről. Az első tíz soron kívül az egész a nyelvről szól. Ráadásul ebben (a változók nem blokk elején való definiálásán kívül) semmi olyan nincs, ami a C-ben ne lenne. Aztán a scanf-fel stringet bekérni nem szerencsés, mert az első whitespace-nél megáll (pl. szóköznél, ami nem jó dolog) vagy túlcsordulás léphet fel. Végsőként pedig a main nem tér vissza értékkel, pedig int típusúra csináltad.
Lehet vitatkozni velem, de szerintem ez inkább C/C++ tutorial, annak viszont elég gyenge. Akiknek ennyire az alapoktól kell a C/C++, azok inkább szerezzenek egy könyvet, vagy egy e-book-ot.
szeki          2006.04.28 08:08
ok, számtech óra első fél órája Remélem lesz folytatás. Az alapokba jó lenne belevenni, vektorokat, tömböket, mártixokat, fájlkezelést, szerverkapcsolatot, amiknek nagyobb hazsnát vehetjük, de indulásnak jó.