2012. február 24., péntek

Rendszerváltás

Ezt a bejegyzést most teljes egészében a másik blogomról másoltam be ide. Viszont úgy néz ki, hogy egy kicsit részletesebben fogok foglalkozni a Linux témával és azt majd inkább itt teszem. Előző félévben a suliban kaptunk egy kis alap fejtágítást a Linuxról. Bevezetés a számítástechnikába órán mindig Debian Linux-ot kellett használnunk és megismerkedtünk az alap szöveges parancsokkal és a rendszer felépítésével. Pár bejegyzés keretében ezeket szeretném majd saját magam számára feleleveníteni és veletek megosztani.

Egy majdnem hirtelen ötlettől vezérelve, ma fogtam a laptopom és szépen leformáztam az egészet, majd a Windows 7 helyett, feldobtam egy Ubuntu Linux-ot. Azért mondom, hogy majdnem hirtelen volt az ötlet, mert ősszel is ezen gondolkodtam. A suliban bevszámtech órán kötelezően Linux-ot kellett használnunk és nekem akkor eléggé megtetszett a dolog. Szóval már ki akartam próbálni egy ideje élesben is a dolgot. Nézegettem is különböző pendrive-ról is futtatható Linux disztribúciókat, aztán valahogy megállapodtam az Ubuntu-nál. A végén mégse raktam fel, nehezen ment az elszakadás a már megszokott Windows-tól. Viszont már eléggé le volt fáradva a laptopom és ezért ráfért volna egy teljes újratelepítés. Aztán meg, ha már telepítek, akkor gondoltam nézzük élesben is a Linux-ot, ha tetszik, akkor maradhat, ha nem, akkor vissza Windows. Kicsit nehézkesen ment a partíciós tábla normális létrehozása, ráadásul, hogy akartam egy kis plusz helyet is hagyni, hogy esetleg két operációs rendszert is fel tudjak tenni. Miután ez összejött, elindult a telepítés. Szerencsére nem tartott túl sokáig, kényelmesen elmosogattam és mire visszajöttem, már kész is volt. Miután végzett a telepítő, kért szépen egy újraindítást, amit meg is kapott. Ezek után már hiba nélkül észlelte a gépemben lévő alkatrészeket és fel is ajánlotta, hogy letölti nekem a megfelelő illesztőprogramokat. Miután ez is megvolt, kért egy újabb újraindítást, hogy életbe léphessenek a változtatások. Ezt is engedtem neki. Viszont ez után jött a vicces dolog. Kidobott egy olyan hibát, hogy valamelyik boot fájl megsérült és ezért a Ctrl+Alt+Del kombináció segítségével indítsam újra a gépet. Ezt meg is tettem, úgy körülbelül harmincszor. Miután meguntam, teljesen áramtalanítottam a gépet és úgy próbálkoztam. Kicsit meglepődtem, amikor bekapcsoltam a gépet és nem történt semmi. A gép ment, de a képernyő teljesen sötét maradt, nem történt semmi. Még a BIOS-ba se tudtam belépni, semmibe. Ezt a ki-be kapcsolgatást is megcsináltam párszor, de nem volt semmi hatása. Gondoltam kicsit hagyom pihenni és addig inkább eszek valamit. Ez meg is történt és miután újra próbálkoztam, már beindult mindenféle gond nélkül. Nem tudom, hogy mi nyűgje volt, vagy milyen boot fájl hiányzott neki, mert utána arról már nem kaptam semmilyen üzenetet és azóta szerencsére minden megy zökkenőmentesen. Most jön majd az a rész, hogy az üresen hagyott partícióra megpróbálok felrakni egy Windows 7-t. Tudnék örülni, ha összejönni. Ha nem sikerül, akkor meg tesztelgetem még egy kicsit a Linux-ot és vagy marad, vagy nem. Talán még írok majd a fejleményekről, bár nem tudom, hogy hány olyan ember olvassa a blogom, akit esetleg érdekel is ez a téma.

Íme egy Ubuntu asztal

2012. február 8., szerda

Ciklus, mert a jó dolgokat meg kell ismételni

No, végre elkezdtem folytatni ezt is. A mai tananyag pedig a különböző ciklusokat taglalja majd, amik arra jók, hogy egyszerűen meg tudjunk ismételni -akár elég sokszor is- bizonyos kód részleteket. Háromféle ciklust fogunk venni, melyek a következők: elől tesztelő (while), hátul tesztelő (do while), számláló (for).
Kezdjük is egyből a while ciklussal. A feladat majdnem ugyanaz, mint a legutóbb, csak most nem egyszer fogjuk kiíratni a "Hello World!" szöveget, hanem tízszer. Vágjunk is bele, íme a kód:

#include<iostream>
using namespace std;
int main()
{
    string szoveg; //kérünk egy szöveg változót, ahogy a legutóbb
    szoveg="Hello World!"; //rakunk bele szöveget, ebben sincs semmi új
    int i=0; //létrehozunk egy egész típusú változót, melynek egyből értéket is adunk, méghozzá a nullát
    while(i<10) //jön a ciklus, zárójelben megadjuk, hogy meddig menjen. Addig meg amíg i<10
    {
        cout<<szoveg<<endl; //kiírjunk a szöveget, majd az "endl" utasítással átugrunk a következő sorba
        i++; //megnöveljük az "i" értékét egyel, hogy majd egyszer nagyobb legyen 10nél
    }
    return 0;
}

Ugyan kommenteltem, de azért most magyarázok még egy picit. Az "i" értéke először nulla, ezért a ciklusunk lefut (gondolom mindenkinek egyértelmű miért...a 0 kisebb, mint a 10). A ciklusunkban megnöveljük az "i"-t, így az értéke már 1 lesz, ami viszont még mindig kisebb, mint a 10. Ez így fog menni, amíg az "i" értéke 10 nem lesz, ugyanis a 10 már nem kisebb, mint a 10. Ugye milyen egyszerű? A végeredmény pedig itt látható:

Ott van mind a 10 darab "Hello World!"

Jöhet következő áldozatunk, vagyis a do while ciklus. Ennek az a lényege, hogy míg a while nem biztos, hogy akár egyszer is lefut. Elvégre az "i"nek egyből adhattuk volna azt az értéket is, hogy 25, ami nagyobb, mint a 10...a ciklus így sosem futott volna le, ugyanis a futás előtt ellenőrzi a megadott feltételt. A do while, pont fordítva csinálja a dolgot. Lefut a ciklus, ellenőriz, ha megfelelt, akkor megint lefut és újra ellenőriz, egészen addig, amíg a feltétel teljesül. Ez annyit jelent, hogy ez a ciklus mindig lefut, legalább egyszer. Nézzük is meg, hogy hogyan néz ki:

#include<iostream>
using namespace std;
int main()
{
    string szoveg;
    szoveg="Hello World!";
    int i=0; //eddig minden ugyanúgy néz ki, mint az előbb
    do //innen jön a ciklus
    {
        cout<<szoveg<<endl; // a ciklusmag is teljesen megeggyezik
        i++;
    } while(i<10); //most pedig ellenőrzünk
    return 0;
}

Látható, hogy a feltétel a dolog működését is prezentálva, a ciklus végén helyezkedik el, elvégre akkor történik az ellenőrzése. Ezt nem fogom tovább ragozni, majdnem teljesen ugyanaz, mint a while ciklus. Igazából nem is túl gyakran használjuk, vagyis én nem használtam eddig valami gyakran. 

Most pedig jöhet a talán leggyakrabban használt ciklus, a számláló ciklus. Ez már egy kicsit kompaktabb móka. Viszont ezt is könnyű használni és igen hasznos. Lássuk hát!

#include<iostream>
using namespace std;
int main()
{
    string szoveg;
    szoveg="Hello World!"; //eddig minden stimmel
    for(int i=0;i<10;i++) //Teremtőm, itt meg milyen bonyolult feltétel van! Na jó, nem is, mindjárt megértjük!
    {
        cout<<szoveg<<endl; //ciklus mag megegyezik, viszont az "i++;" elköltözött
    }
    return 0;
}

Jöjjön a magyarázat! Lett egy nagyon szép feltételünk: (int i=0;i<10;i++) ez ugyanaz, mint ami eddig volt, csak egy kicsit tömörebben és egyszerűbben. Az első részben megadjuk, hogy amit vizsgálunk, az egy "i" nevű egész szám legyen, ami kezdetben nulla (int i=0), aztán megmondjuk, hogy meddig menjen a ciklus. Addig menjen amíg "i" barátunk kisebb, mint tíz (i<10). Ezután pedig jön a szokásos, növeljük az "i" értékét dolog (i++). Mindent szépen megcsináltunk, méghozzá egy lépésben. Ezért már semmi mással nem is kell foglalkoznunk, csak a ciklusmaggal. Ugye milyen kényelmes? 
Szerintem egyelőre bőven elég is ennyi a ciklusokról. Amennyiben valami nem érhető, kommentben nyugodtan tessék kérdezni! Egyébként a másik ciklusnál direkt nem fotóztam le a kimenetet, ugyanis teljesen ugyanaz, mint az első ciklusnál. Jó tanulást!

2012. február 7., kedd

Szünet

Hejhó, úgy gondoltam, hogy beugrom egy pillanatra, bár egyelőre csak azért, hogy életjelet adjak. Ennél a blognál úgy gondoltam, hogy folyamatosan fogom vezetni a tanulmányaimmal, csak az a baj, hogy ez a dolog az első félév vége felé jutott eszembe. Azóta már túl vagyok az első vizsgaidőszakomon is, ami eléggé vegyes szájízzel telt. A blogot természetesen folytatni fogom, bár kicsi érdekes lesz a felépítése és a tempója, tekintve, hogy fél évvel le vagyok maradva a vezetésével. Minden esetre ez most arra is nagyon jó nekem, hogy kicsit visszarázódjak a tanulós, programozós egyetemi életvitelembe. Nem is nagyon húznám tovább a szót, ugyanis már hajnali 2 körül jár az idő és én meg már eléggé hulla vagyok. Ami jönni fog...a C++ vonal menni fog továbbra is, ugyanis a suliban még mindig ezt fogjuk venni. Viszont igyekezni fogok nagyon gyorsan ledarálni itt az előző féléves anyagot, majd minden előadás/gyakorlat után megdobni titeket egy szép, zsíros bejegyzéssel. Így nagyjából azt fogjátok tudni, amit nekem leadnak az egyetemen. A második félévben már kicsit izgalmasabb lesz a  progtéma, jönnek a grafikus mókák, egyszerűbb játékokat is kell majd csinálni és mesterséges intelligenciát programozni. Biztos nagyon mókás lesz, amiből szerencsére ti sem fogtok kimaradni. Ami C++ mellett még várható lesz...csütörtökönként nem lesznek óráim, így úgy gondoltam, hogy minden csütörtökön előveszek majd valamit, ami nem törzsanyag a sulimban. Egyelőre valami webes prognyelven gondolkodom, igazából a PHP-be már bele is kezdtem, szóval arról tudnék írni. Ezen kívül érdekel még a java egyik aranyossága, ami a play framework névre hallgat. Ezeken kívül, ami jöhet még...fizika, méréstechnika. Igazából lesz menedzsmentem is, de arról nem hiszem, hogy fogok írni, annál már annak is örülni fogok, ha túlélem. Nagyjából ez lenne a terv, remélem sikerül tartanom magam hozzá. A következő bejegyzésben pedig jönnek a vezérlési szerkezetek, először a ciklusok, majd az elágazások. Legyetek jók és ne vegyetek példát rólam, vagyis tanuljatok!