Hardware és software alapismeretek
A hardver és a szoftver jelentőségének
változása
A számítástechnika hajnalában (1950-es évek) a hardvernek sokkal nagyobb
volt a jelentősége, hiszen akkoriban magának a számítógépnek, mint
szerkezetnek az öszzeállítása és működtetése jelentette a legnagyobb
problémát. Akkoriban csak a hozzáértő szakemberek jutottak számítógép
közelébe, így nem is volt cél, hogy kimondottan felhasználóbarát programokat
írjanak. |
|
Ahogy a technológia fejlődött, úgy a számítógép (a hardver) egyre
megbízhatóbbá és olcsóbbá vált, így fokozatosan eljutott a kisebb cégekhez, s
mára a hétköznapi emberig. Tehát a felhaszánlók köre megváltozott: profi
szakemberek helyett most gyermekek, tanárok, orvosok, titkárnők, pékek, és
takarítónők ülnek a gépek előtt, és minden joggal elvárják, hogy a számítógépet
a saját különböző céljaikra a lehető legkényelmesebben lehessen felhasználni, a
legkevesebb tanulással.
De mivel a számítógép hardvere csupán egy halom vas és műanyag, ami
önmagától semmi értelmes dologra nem képes, a fent említett hatalmas
felhasználói igényeket a programoknak (szoftvereknek) kell biztosítani. A
számítástechnika története során tehát a hangsúly áthelyeződött a hardverről a
szoftverre. Mára a szoftvergyártás (vagyis a programozás) jelentős iparággá
nőtt.
A hardver és a szoftver kapcsolata: a
számítógépek működése
Számítógépek
A számítástechnika fejlődése során számtalan különböző próbálkozás
született arra, hogy miként lehetne a számításokat valamilyen géppel
elvégeztetni. Mindközűl a Neumann-elvű gépek bizonyultak a
legsikeresebbnek, a modern elektronika pedig megteremtette a digitális technológia alkalmazásának műszaki feltételeit.
A Neumann-elvű számítógépek lényege, hogy mind az adatok, mind az
elvégzendő feladat (kódolt utasítások formájában) a memóriában van eltárolva. A
digitális szó azt jelenti, hogy mindent számokként ábrázolunk, és azokat
dolgozzuk fel.
A ma körülöttünk lévő számítógépek mind ilyen elven működnek, legyen az PC,
Macintosh, nagygép, laptop, palmtop, vagy akár mobiltelefon, CD játszó, vagy
mikrohullámú sütő processzora. Ezért ettől a ponttól számítógépen Neumann-elvű
digitális számítógépet értünk.
A programvégrehajtás menete
A memória
minden rekesze
sorszámmal (címmel) rendelkezik, így a memória bármely rekesze megcímezhető, és
így a processzor által közvetlenül elérhető.
A CPU (központi feldolgozó és vezérlő egység, a ,,processzor'')
feladata, hogy
végighaladjon a program utasításain, és az előírt sorrendben végrehajtsa
azokat. Az utasítások műveleteket végeznek az adatokon.
|
1. a soron következő
utasítás gépi kódja lehívódik a memórióból a CPU-ba 2. dekódolás:
megállapítja, hogy milyen adatokkal milyen műveletet kell elvégezni 3. beolvassa a memóriából
a szükséges adatokat, végrehajtja az előírt utasítást, |
A szoftver a számítógépet
muködtetö-, a számítógépen futtatható programok, valamint a számítógépen tárolt
adatok és a kapcsolódó dokumentációk összessége.
Szoftver (angol: software) : alatt
a legszukebb értelemben elektronikus adatfeldolgozó berendezések (például
számítógépek) memóriájában elhelyezkedö, azokat muködtetö programokat értünk.
Körülbelül ez volt a John W. Tukey által 1958-ban bevezetett angol software kifejezés eredeti értelme is.
A szoftver nemcsak elektronikus
memóriatartalomként realizálódik, hanem életciklusának megfelelöen többféle
formában jelenik meg, fogalma ezekre a megvalósulási formákra is kiterjed.
így a szoftver fogalmába tágabb
értelemben beletartozik:
A szoftver olyan termék, ami nem
készül el határidöre, többe kerül mint tervezték, és -legalábbis részben- nem
azt végzi amit kellene!
Atulajdonosi szoftverek I.: |
Atulajdonosi
szoftverek II.: |
|
|
|
|
A rendszerszoftver: olyan
szoftver ami feltétlenül szükséges a hardware muködéséhez.
Típusai:
1.
Operációs
rendszer (OS-operating system)
o Kernel (mindíg fut, a RAM-ban van)
o Segédprogramok (Utilities): pl.: driver
(muködéshez szükséges)
2.
Egyéb,
beépített programok (Kellékek): hangrögzítö, jegyzettömb, parancssor, stb. (
kényelmi és kiegészítö szolgáltatásokat nyújtanak)
Az operációs rendszerfelelös a
számítógép alapvetö muködtetéséért.Az operációs rendszer feladatai közé
tartozik a hardver és a felhasználó közötti kapcsolat megteremtése, a
háttétárakhoz kapcsolódó adatkezelö muveletek biztosítása és a perifériák
kezelése, felhasználói szoftverek futtatása.
Az operációs rendszereket több
szempontból osztályozhatjuk.
A felhasználók száma szerint lehet:
Példák:
Kulcsszavak:
GUI-Graphical User Interface:
Grafikus kezelöi felület (pl.:Windows asztal)
Drag and Drop: A „fogd és vidd”, „húzd és ejtsd” (drag and
drop)
A rendszerközeli szoftverek az
operációs rendszermuködéséhez nem elengedhetetlenül szükségesek, de annak
használatát megkönnyítik, a rendszer biztonságát jelentös mértékben megnövelik.
2 csoportját különböztetjük meg:
Az ilyen típusú szoftverek egyik
legismertebb fejlesztöje Peter Norton. Az ö nevéhet fuzödik többek közt a
Norton Commander, a Norton Utilites termékek kifejlesztése, melyet napjainkban
a Symantec Corporation fejleszt tovább.
Az új operácíós rendszerek a rendszerközeli szoftveekr egyre több funkcióját
veszik át
Fordítóprogramjait és fejlesztöi
környezetét.
Felhasználói szoftvernek nevezzük
azokat a programokat, melyek egy meghatározott felhasználói igényt elégítenek
ki.
Megkülönböztetünk általános célú és egyedi célú felhasználói szoftvereket.
általános célú szoftver: ide sorolhatjuk a játék programokat, a szövegszerkesztöket, a
nyilvántartó- és grafikai programokat.
összességében a szoftveripar legnagyobb üzletága a felhasználói szoftverek
fejlesztése.
Felhasználói szoftverek:
|
Write, WordPad, Word, WordPerfect |
|
Kiadványszerkesztö |
Corel Ventura, Microsoft Publisher |
|
Táblázatkezelö |
Microsoft Excel, Quattro |
|
Adatbáziskezelö |
Microsoft Acces, Informix, Starbase, Magic |
|
Grafikai programok |
Paint, Paint Brush, CorelDraw, Adobe Pohotshop |
|
Prezentációs programok |
Microsoft Powerpoint, Graphics, Star Impress |
|
Böngészöprogramok |
Internet Explorer, Netscape Navigator, Opera |
|
Levelezö- és csoportmunka programok |
Microsoft Outlook Express, Pegazus Mail |
|
Tervezö rendszerek |
Microstation, AutoCAD |
|
Multimédiás programok |
Macromedia Flash, Adobe Premierre |
|
Játék- és egyedi célú programok |
2D és 3D-s játékok, ügyviteli rendszerprogramok |
|
Egyedi célú szoftverek: speciális igényeket kielégítö, konkrét cél
édekében készülö, általános célra nem alkalmazható programok tartoznak ide.
A szoftverek fejlesztése nagyon gyors ütemben zajlik, egy éven belül egy
verziónak akár több új változata is megjelenhet.Szükség van a szoftverek
különféle verzióinak a megkülönböztetésére, ennek megsegítésére bevezették az
úgynevezett verziószámok használatát.általában a programok elsö publikus
változata az 1.0 verziószámot kapja, majd a különféle továbbfejlesztésektöl
kaphat új verziószámot, pl.:1.1, 1.5... stb.
A sorszámozásra nincs általános szabály, a programozók szubjektív módon adják
termékeiknek a verziószámot.Ha a szoftveren nagyobb fejlesztéseket hajtanak
végre, akkor azt általában az egész számjegy megváltoztatásával jelzik.
A Microsoft 1995-töl kezdödöen bevezette a programok egye verzióinak
évszámokkal történö megkülönböztetését.
Pl.: Office irodai programcsomag újabb verziói az Office 95, Office 97, Office
2000
Ezt a jelölési formát késöbb más szotfver cég is átvette.
Programkészítés lépései
A "jó" programozó
Az algoritmus
Az algoritmus szó eredete a koraközépkori arab matematikáig nyúlik vissza.
Muhammad Ibn Músza Al-Hvarizmi csillagász, matematikus Kr.e. a IX. században
élt a mai Üzbegisztán területén. A De Numero Indorum (A hindu számokról) című
könyvén a pontatlan latin fordítás következtében neve Algorithmus-ra változott.
Az algebra szó az arab eredű "al-jabr" szóból származik,
mely Muhammad ibn Músza l-Hvárizmi perzsa
matematikus Kitab al-Jabr wa-l-Muqabala (ejtsd: "Hisab al-dzsabr walmukabala" ,szó szerint "A rövidítés és törlés tudománya") című, 820-ban írt értekezésének
címében található.
Muhammad ibn Músza l-Hvárizmi Abū ʿAbdallāh
Muḥammad ibn Mūsā al-Khwārizmī Persian/Arabic: أبو
عبد الله
محمد بن موسى
الخوارزمي |
||||
Page from a Latin translation, beginning with "Dixit algorizmi" |
A stamp issued September 6, 1983 in the Soviet Union, commemorating
al-Khwārizmī's (approximate) 1200th birthday. |
A page from Al-Khwārizmī's al-Kitāb al-mukhtaṣar fī ḥisāb al-jabr
wa-l-muqābala. |
The Astronomical Tables of al-Khwārizmī. |
Nevének néhány írásmódja. |
Ma az algoritmus szó nem a könyv írójának nevét idézi, hanem így hívnak
minden, valamely módon és sorrendben végrehajtandó számolási eljárást a
matematikában.
Algoritmizálás
Az algoritmus olyan pontos előírás, amely megmondja, hogy
egy adott típushoz tartozó összes feladat (problémaosztály) megoldásához milyen
műveleteket kell meghatározott sorrendben elvégezni (vagyis pontosan megmondja, hogy miként kell megoldani a problémát).Kívánalmak:
Az egyes lépésekben elvégezhető műveletek Neumann-elvű számítógépek
esetében:
Leírása:
Algoritmus-leíró eszközök
Folyamatábra
A folyamatábra segítségével a program folyamatát részletesen ábrázolni
tudjuk.
Minden folyamatábra egy START szimbólumot tartalmaz.
A START a kezdőszimbólum, ebből pontosan egy van minden folyamatábrában. |
|
|
A STOP a folyamatábra záró
szimbóluma. Ebből elvileg csak egy van, de többet is lehet használni. |
|
Az értékadás szimbóluma. |
|
Ki: output. A megadott kifejezés
eredménye kiíródik a képernyőre. |
|
Be: input. A megadott változók
értékeit a program sorban bekéri a billentyűzetről. |
|
Feltételes elágazás. Ha a megadott
feltétel igaz, akkor az IGAZ ágon kell továbbhaladni. Ha a feltétel hamis,
akkor a HAMIS ágon. Mindig két ág van. A rombusz belsejébe egy egyértelműen
eldönthető logikai kifejezést kell írni. |
|
Számlálós ciklus. A ciklusváltozó (i)
felveszi a kezdőértéket, amennyiben ez kisebb vagy egyenlő, mint a végérték,
az ismétlés ágon kell haladni. Mielőtt visszatérnénk a szimbólumba, a
ciklusváltozó értéke automatikusan 1-gyel nő. Az ismétlés ágon kell
elhelyezni a ciklusmag utasításait. Amennyiben a ciklusváltozó értéke
meghaladja a végértéket, a ciklus futása befejeződik, és a másik ágon
folytatódik a program végrehajtása. |
|
Nem csatlakozó folyamatok (nem szimbólum) |
|
Folyamatok csatlakozási pontja (nem szimbólum) |
|
Algoritmus megszakítása egy ponton |
|
Algoritmus folytatása egy ponttól |
Struktogram
Dobozolós módszer. Csak strukturált algoritmusok írhatók le segítségével.
Hátrány, hogy előre kell dönteni a téglalap méretéről.
|
Az értékadás szimbóluma. |
|
Input. A megadott változók értékeit a gép
sorban bekéri a billentyűzetről. |
|
Output. A megadott kifejezés eredménye
kiíródik a képernyőre. |
|
Feltételes elágazás. A megadott feltétel igaz értéke esetén a jobb oldali rész-blokkba zárt
utasításblokk hajtódik végre. "Nem" esetén a bal oldali blokk
utasításai hajtódnak végre. Az Igen és a Nem ágak felcserélhetők, ezért
mindig jelölni kell, melyik melyik. |
|
Számlálós ciklus. |
|
Előltesztelős ciklus. Amíg a feltétel igaz,
addig hajtja végre a ciklusmagot. |
|
Hátultesztelős ciklus. |
Leíró nyelv
Nincsenek szigorúan kötött szabályok, mivel nem egységes a kódrendszere.
Nyelvi eszközökkel, mondatszerűen írjuk le a program-szerkezetet. Deklarációnál
felsoroljuk, melyik változó, milyen típusú.
ALGORITMUS KEZD |
AKEZD |
... |
... |
ALGORITMUS VÉGE |
AVÉGE |
Értékadás |
v:=érték |
Kiíratás |
ki: kifejezés |
Beolvasás |
be: változólista |
Elágazás |
HA feltétel AKKOR ... HVÉGE |
Számlálós ciklus |
CIKLUS cv:=ké-től vé-ig ... CVÉGE |
Előltesztelős ciklus |
CIKLUS AMÍG feltétel ... CVÉGE |
Hátultesztelős ciklus |
CIKLUS ... AMÍG feltétel |
Legfontosabb fogalmak:
folyamatábra, értékadás, input, output, számlálós ciklus, ciklusváltozó,
struktogram, előltesztelős ciklus, hátultesztelős ciklus, leíró nyelv
Kérdések, feladatok:
Hasonlítsd össze a folyamatábra és a
struktogram elemeit!
Melyik az a folyamatábra-szimbólum, amely
csak egyszer fordul elő az ábrán?
Hogyan ábrázoljuk a ciklusokat
folyamatábrával?
Hogyan működik a számlálós ciklus?
Mi a különbség az elől- és a
hátultesztelős ciklusok között?
Struktogram esetén miből tudjuk, hogy
értékadásról van szó?
Hogyan írjuk le leíró nyelvvel a
feltételes elágazást?
Gyakorlati feladatok:
Feladat1: Egy osztályban 27 tanuló érettségizett. Olvassuk be a tanulók
egyéni átlagát! Számítsuk ki úgy az osztályátlagot, hogy az 1,5-nél gyengébben
teljesítőket kihagyjuk!
Megoldás folyamatábrával!
Feladat 2: Tetszőleges egyismeretlenes
egyenlet megoldása: AX+B=0
DEKLARÁCIÓK
A,B,X: Valós
KEZD
BE: A,B
HA A=0 AKKOR
KI: ’Hibás bemenő A’
KÜLÖNBEN
KI: ’X=’,-B/A
VÉGE.
Feladat 3: Két elem cseréje:
DEKLARÁCIÓK:
A,B,C: Típus
KEZD
BE: A,B
C:=A
A:=B
B:=C
VÉGE.
Feladat 4: Két szám legnagyobb közös osztója
A nagyobbik számot csökkenteni kell a kisebbikkel, és a kapott értékre át
kell írni. Ezt addig kell folytatni, amíg egyenlő számot nem kapunk. Ez az
érték a két szám legnagyobb közös osztója.
Pl.
27/21
27 21
6 21
6 15
6 9
6 3
3 3
DEKLARÁCIÓK
A,B: Egész
KEZD
BE: A,B
HA (A<=0) OR (B<=0) AKKOR
KI: ’Hibás bemenő adatok!’
KÜLÖNBEN
CIKLUS amíg A<>B
HA A>B AKKOR
A:=A-B
KÜLÖNBEN
B:=B-A
CVÉGE
KI: ’A közös nevezőjük:’, A
HAVÉGE
VÉGE.
Feladat 5. Másodfokú egyenlet megoldása
Önálló feladatok : A megoldás folyamatábrával, struktogrammal és
leírónyelven is elkészítendő.
1. Adott A[n,m] matrix.
keressük meg a mátrixnak azr az elemét, amelyik a legtöbb sorban előfordul.
2. Készíts programot a
háromszög területének kiszámítására, ha adott
o a három oldal
o két oldal és egy szög
o egy oldal és két szög
3. Határozd meg egy
természetes szám osztóinak összegét.
4. Egy bankszámlára egymás
után érkeznek a befizetések előre nem tudjuk hány). Állapítsuk meg, honnan jött
a legnagyobb befizetés. Mekkora volt az átlagos befizetés?
A programkészítés elvei
Egy számítógép által érthető nyelven írt algoritmust programnak nevezünk
Algoritmus tervezése:
Az algoritmus tervezésének alapja a dekompozíció, a feladatot részekre kell
bontani, a részeket meg kell oldani, majd a megoldott részeket kell
összeállítani, hogy együtt működhessenek.
A részekre bontásnál két irányzatot különböztetünk meg:
A felülről lefelé való programtervezés irányelvei:
Az alulról felfelé tervezés lényege:
Objektumorientált szemléletmód 1
Objektumorientált szemléletmód 2
Objektumorientált szemléletmóddal
kapcsolatos fogalmak
Az öröklődés: Az utód osztályban csak az ős osztálytól való eltéréseket
kell megadni!
Ős osztály |
Résztvevő |
|
Név, születési dátum |
||
Dolgozik, tanul |
||
Utód osztály |
Tanár |
Tanuló |
Tantárgy, beosztás |
Évfolyam, szak |
|
dolgozik |
tanul |
Adat:
A számítástechnikában adatnak (angol
nyelven data) nevezzük
a számokkal leírható dolgokat, melyek számítástechnikai eszközökkel
rögzíthetők, feldolgozhatóak, és megjeleníthetők. Az adat nagyon tág fogalom:
gyakorlatilag bármilyen jel potenciálisan adatnak tekinthető (Wikipédia)
Példák számítógéppel kezelt
adattípusokra: Szövegek, számok, mérési adatok, álló és mozgóképek, hangok,
stb.
Minden program utasításai
adatokon dolgoznak, ezért ismeretük alapvető fontosságú!
Minden adattípusnál meg kell
nézni, hogy milyen értékeket képes tárolni, hogyan ábrázolja a számítógép, és
végül milyen műveleteket végezhetünk velük.
Adattípusok: (Csak a
leggyakoribbak!.) |
|
Egyszerű
(elemi) |
Összetett |
Egész |
Tömb |
Karakter |
Rekord |
String |
Láncolt lista |
Logikai |
Bináris fa |
Valós |
Objektum |
|
Mutató |
Egyszerű adattípusok : Az egyszerű adattípusok esetén a tárolt
adat tovább nem bontható részekre.Ilyen a szám, logikai, karakter adatok
pl.: 129; -32; 12.765865; @; a;
A; b; B; c; C.....stb.
Összetett adattípusok: Összetett adattípus esetén több adat
tárolását feltételezzük. Ilyen a rekord, a tömb, a sor, a verem, a lista,
sztring, stb.
pl.:
TETSZŐLEGES SZÖVEG(string): "Over The Rainbow";
EGY POLGÁR ADATAI(Record): Okos Pista, 2001,02,15, Szolnok, magyar;
HETI LOTTÓSZÁMOK(Tömb): 23,34,65,36,67
felvehető
értékek |
ábrázolás |
false (hamis) |
0 |
true (igaz) |
nem 0, legtöbbször 1 |
műveletek |
asm |
C/C++, Java |
tagadás (negálás, invertálás) |
not |
! |
és |
and |
&& |
vagy |
or |
|| |
kizáró vagy |
xor |
^ |
Ábrázolása
kettes számrendszerben történik. Egy kettes számrendszerbeli számjegy - egy
bit.
Az ábrázolható számtartomány attól függ, hogy hány biten (n) történik a
tárolás:
ábrázolható
számtartomány |
|
előjel nélküli |
0 .. 2n-1 |
előjeles |
-2n-1 .. 2n-1-1 |
Például
egy n=16 bites előjeles egész esetében ez -215..215-1, vagyis -32768..32785.
A mai gépek általában 8, 16, 32, 64 biten tárolják az egész számokat.
Műveletek egész
számokkal |
műveleti jel |
megjegyzés |
negálás |
- |
|
összeadás, kivonás, szorzás |
+ - * |
|
(egész) osztás |
/ |
7/2=3 |
maradék (modulus) képzés |
% |
7%2=1 |
növelés (inkrementálás), |
++ |
x++ jelentése: x = x + 1 |
Bitműveletek |
műveleti jel |
|
tagadás (negálás, invertálás) |
not |
~ |
és |
and |
& |
vagy |
or |
| |
kizáró vagy |
xor |
^ |
shift (eltolás) balra |
shl |
<< |
shift (eltolás) jobbra |
shr |
>> |
neve |
|
egyszeres pontosságú |
float |
dupla pontosságú |
double |
Gépi
ábrázolása normál alakban: Például: 0.00123 = 0.123 * 10-2
(megadása 0.123e-2)
Műveletek: + -
* /
Összehasonlítás: a kerekítések és az ábrázolási pontatlanságok miatt használjuk
az |a - b| < epsilon formulát!
Ábrázolás (méret):
ASCII kódtábla szerint 1 bájton 0-255 kódú jelek.
UNICODE-16 szerint 2 bájt
UNICODE-32 szerint 4 bájt
UNICODE-64 szerint 8 bájt
Intervallum: ASCII 0-255 kódú jelek. Tartalmazzák az angol ábc kis és
nagybetűit, néhány ékezetes betűt (pl nem az Ő,Ű betűket). A tartalmazott
betűket sem abc sorrendben, mert külön tartományt képez a kis és a nagybetűk.
Ezen kívül tartalmazzák az írásjeleket, és néhány speciális karaktert. (http://hu.wikipedia.org/wiki/ASCII címen meg lehet nézni az egyes
karaktereket)
Műveletek: nincs karakterspecifikus művelet.
Relációs műveletek: vannak,
(kód alapján) de ez nem logikus csak egy résztartományon belül. (pl.
A<B<a)
Ábrázolása:
karaktertömb/karakterfüzér.
Stringkonstans: dupla aposztrófok
között: "Ez
itt egy sor\n"
Adatainkat tárolási helyei a
számítógépben: RAM vagy valamilyen háttértár
Tárolás módja a RAM - ban:
1.
Változó:
Megcímzett memória terület. Tároló ahol az adatainkat tároljuk.
2.
Konstans:
azonosítóval rendelkező állandó adat. pl.: PI
Tárolás módja háttértáron:
Fájlként. pl: level.txt; nevsor.mdb; fizetés.xls...
"A változók a memóriában
tárolódnak, vagyis minden azonosítóhoz hozzárendeljük a
memória egy szeletét, melyet a rendszer lefoglalva tart a változó teljes
életciklusa alatt.
(Néhány változó típus esetén, mint a pointerek, valamivel bonyolultabb a
helyzet, de a .NET
rendszerben nem kell törıdnünk a memória kezelésével, mivel a .NET
felügyeli, lefoglalja és
felszabadítja a memóriát.)" (Hernyák)
Tankönyvből megtanulandó
fogalmak: változó deklaráció,definíció; lokális, globális változó, kezdőérték,
privát, publikus változó
Egyszerű adattípusok :
C# adattípus |
.NET |
Mérete(byte) |
Legkisebb érték |
Legnagyobb érték |
sbyte |
System.Sbyte |
1 |
-128 |
127 |
byte |
System.Byte |
1 |
0 |
255 |
short |
System.Int16 |
2 |
-32 768 |
32 767 |
ushort |
System.UInt16 |
2 |
0 |
65 535 |
int |
System.Int32 |
4 |
-2 147 483 648 |
2 147 483 647 |
uint |
System.UInt32 |
4 |
0 |
4 294 967 295 |
long |
System.Int64 |
8 |
-9 223 372 036 854 775 808 |
9 223 372 036 854 775 807 |
ulong |
System.UInt64 |
8 |
0 |
18 446 744 073 709 551 615 |
char |
System.Char |
2 |
0 |
65 535 |
float |
System.Single |
4 |
1,5*10-45 |
3,4*1038 |
double |
System.Double |
8 |
5,0*10-324 |
1,7*10308 |
bool |
System.Boolean |
1 |
false (0) |
true (1) |
decimal |
System.Decimal |
16 |
1,0*10-28 |
kb. 7,9*1028 |
Műveletek adatokkal
Operátorok
Amikor programozunk, utasításokat adunk a számítógépnek. Ezek az utasítások
kifejezésekből állnak, a kifejezések pedig operátorokból és operandusokból,
illetve ezek kombinációjából jönnek létre. Az operandus általában az adat, az operátor pedig a műveleti jel.
Utasítás = kifejezések valamint adatok és operátorok kombinációja
pl.:
Ez egy utasítás: Console.WriteLine("Az eredmény : "+ (bekertszam1/5)
);//a processzor végre tudja hajtani!!
Ez egy kifejezés: (bekertszam1/5)
Ez egy operátor; "+"
Ez egy operandus : bekertszam1
Ez egy adat: 5
Precedencia
Precedencia = Műveleti sorrend.
A C# nyelv precedencia szerint 14 kategóriába sorolja az operátorokat (a
kisebb sorszámút fogja a fordító hamarabb kiértékelni):
1. Zárójel, metódushívás
2. Pozitív és negatív operátorok (x = -5), logika- és bináris tagadás, postfix,
prefix inkrementáló és dekrementáló operátorok, explicit típuskonverzió
3. Szorzás, maradékos és maradék nélküli osztás
4. Összeadás, kivonás
5. Bit-eltoló (>> és <<) operátorok
6. Kisebb (vagy egyenlő), nagyobb (vagy egyenlő), as, is
7. Egyenlő és nem egyenlő operátorok
8. Logikai ÉS
9. Logikai XOR
10. Logikai VAGY
11. Feltételes ÉS
12. Feltételes VAGY
13. Feltételes operátor ( ? : )
14. Értékadó operátor, illetve a “rövid formában” használt operátorok (pl: x
+=y)
pl.:
2+3*5 = 17
(2+3)*5 = 25
Asszociativitas: (balról-jobbra)
4 / 2 * 6 = 12
EGYSZERŰ ADATTÍPUSOK JELLEMZŐ MŰVELETEI:
Logikai: NOT, AND, OR, XOR
Valós: +, -, *, /, =, <, >, <>,
<=, >=
Egész: +, -, *, =, <, >, <>, <=,
>=, / – az eredményt a gép kerekíti, % (maradékos osztás maradéka – pl.
5%2=1, 4%2=0)
String: + (összekapcsolás), <> (a két
string nem egyenlő), a betűk ABC sorrendje szerint: <, >, <=, >=
Karakter: a betűk ABC sorrendje szerint: <,
>, <>, <=, >=
Típuskonverzió: Adatok átalakítása (
például karaktert számmá)
A felhasználói input kezelésére lehetőséget biztosítanak a Console.Read() ,és a
Console.ReadLine()metódusok.
Mindkettő esetében adatokat olvasunk be a billentyőzetről, s ha kiegészítjük a
két metódust a Convert osztály konverziós függvényeivel, nemcsak string típusú
adatokat, hanem szám típusú, vagy logikai értékeket is beolvashatunk a
felhasználótól.
Néhány konverziós függvény a Convert osztályból:
Convert.ToInt16( );
Convert.ToInt32( );
Convert.ToByte( );
Convert.ToString( );
Convert.ToDateTime( );
stb.
Mi történik az alábbi minta programban?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace konverzio
{
class Program
{
static void Main(string[] args)
{
Console .WriteLine ("Kérem az átalakítandó számot: ");
string strSzam = Console.ReadLine();
Console.WriteLine(Convert.ToString(Convert.ToInt32(strSzam, 10), 2));
Console.WriteLine("Kérem a megjelenítendő karakter ASCII kódját: ");
int iSzam = Convert.ToInt16(Console.ReadLine());
Console.WriteLine(Convert.ToChar(iSzam));
for (int i = 0; i < 256; i++)
{
Console.Write("\t"+i+"\t"+
Convert.ToChar(i)+"\n");
}
Console.ReadKey(); } } }
Adattípusok (4)
Összetett adattípusok: karakterlánc
(string) adattípus felépítése, ábrázolása, helyfoglalása, felhasználása.
Sztring: Karakterlánc, másképpen szöveg.
A sztring kezelésének lényege, hogy a szöveg karaktereit sorban, sorszám
szerint elérhetően tároljuk.
Például:
string strSzoveg = "Kelkáposzta";//tároljuk a "Kelkáposzta"
szót
Az egyes karakterek számozása 0-val kezdődik, tehát a "K" a 0., az
"e" az 1., ....
Így, a
Console.Writeline(strSzoveg[2])
Kifejezés az "l" betűt adja.
A sztringek kezelésére sok függvény áll rendelkezésre, lekédezhetjük a
hosszát, karakter, szövegrészletet kereshetünk benne, cserélhetünk sztring
részleteket, stb. A mellékelt példákban a legfontosabb függvények előfordulnak.
Otthoni feladatok:
1. Kérj be tetszőleges
szöveget, majd írasd ki a hosszát.
2. Kérj be tetszőleges
szöveget, majd mindek karakterét cseréld nagybetűsre.
3. Kérj be tetszőleges
szöveget, majd írasd ki visszafelé.
példák:
1.,
static void Main(string[] args)
{
string strSzoveg = "Kelkáposzta";
string strSzoveg2;
Console.WriteLine("Karaktercsere, k--X");
Console.WriteLine(strSzoveg);
strSzoveg2=strSzoveg. Replace("k", "X");
Console.Write(strSzoveg2);
Console.WriteLine("\n****************");
Console.WriteLine("Karakter törlés adott helyről, 3-tól 2 db
karakter");
Console.WriteLine(strSzoveg);
strSzoveg2 = strSzoveg.Remove(3, 2);
Console.Write(strSzoveg2);
Console.WriteLine("\n****************");
Console.ReadKey();
}
2.,
static void Main(string[] args)
{
string strSzoveg = "123456789";
string strSzoveg2 = "12344456789";
Console.WriteLine(strSzoveg);
for (int i = 1; i < strSzoveg .Length ;i++ )//string mint vektor
Console.Write(strSzoveg[i]);
Console.WriteLine();
int iEredmeny = strSzoveg.CompareTo(strSzoveg2);//Összehasonlítás
Console.WriteLine(iEredmeny);
Console.Write("Adj meg egy rövid szöveget, amit beszúrok egy stringbe!:
");
string strBeszur = Console.ReadLine();
strSzoveg =strSzoveg .Insert (1,strBeszur );//beszúrás
Console.WriteLine(strSzoveg);
Console.WriteLine("Most szöveget keresünk szövegben!");
string strSzovega = "Boci Boci Tarka, Se Füle se Farka, oda megyünk lakni,
ahol tejet kapni!";
string strSzovegb;
Console.Write("Kérem a keresendő szövegrészletet!");//keresés
szövegben
strSzovegb= (Console .ReadLine ());
strSzovega = strSzovega.ToUpper();
Console.Write(strSzovega);
strSzovegb = strSzovegb.ToUpper();
if (strSzovega .IndexOf (strSzovegb )>-1)
Console .WriteLine ("Ez benne van!!!!");
else
Console .WriteLine ("Nincs ilyen részlete a szövegnek");
Console.WriteLine("Trimmeljük a szöveget, elejéről és a végéről is
levágunk szövegrészletet!");
char chrElso = Convert.ToChar(strSzovega[0]);
Console .WriteLine (strSzovega .TrimStart (chrElso ));
Console.Write("Karakter keresése!");
char[] keres = new[] {'B'};
int iDarab = strSzovega.IndexOfAny(keres);
Console.WriteLine(iDarab);
Console.ReadKey();
}
3.,
static void Main(string[] args)
{
/*Kérj be 2 sztringet, állapítsd meg,
* hogy része-e a második az elsőnek,
* s ha igen, hanyadik pozíción kezdődik benne!
*/
Console.WriteLine("Kérem az első stringet!");
string strSzoveg1=Console .ReadLine ();
string strSzöveg1Upper = strSzoveg1.ToUpper();
strSzöveg1Upper = strSzöveg1Upper.Replace(" ", "");
Console.WriteLine("Kérem a második stringet!");
string strSzoveg2 = Console.ReadLine();
string strSzöveg2Upper = strSzoveg2.ToUpper();
strSzöveg2Upper = strSzöveg2Upper.Replace(" ", "");
if (strSzöveg1Upper.IndexOf(strSzöveg2Upper) > -1)
Console.WriteLine("Szerepel benne");
else
Console.WriteLine("Nem szerepel benne!");
Console.ReadKey();
}
Adattípusok (4)
Összetett adattípusok: karakterlánc
(string) adattípus felépítése, ábrázolása, helyfoglalása, felhasználása.
Sztring: Karakterlánc, másképpen szöveg.
A sztring kezelésének lényege, hogy a szöveg karaktereit sorban, sorszám
szerint elérhetően tároljuk.
Például:
string strSzoveg = "Kelkáposzta";//tároljuk a "Kelkáposzta"
szót
Az egyes karakterek számozása 0-val kezdődik, tehát a "K" a 0., az
"e" az 1., ....
Így, a
Console.Writeline(strSzoveg[2])
Kifejezés az "l" betűt adja.
A sztringek kezelésére sok függvény áll rendelkezésre, lekédezhetjük a
hosszát, karakter, szövegrészletet kereshetünk benne, cserélhetünk sztring
részleteket, stb. A mellékelt példákban a legfontosabb függvények előfordulnak.
Otthoni feladatok:
1. Kérj be tetszőleges
szöveget, majd írasd ki a hosszát.
2. Kérj be tetszőleges
szöveget, majd mindek karakterét cseréld nagybetűsre.
3. Kérj be tetszőleges
szöveget, majd írasd ki visszafelé.
példák:
1.,
static void Main(string[] args)
{
string strSzoveg = "Kelkáposzta";
string strSzoveg2;
Console.WriteLine("Karaktercsere, k--X");
Console.WriteLine(strSzoveg);
strSzoveg2=strSzoveg. Replace("k", "X");
Console.Write(strSzoveg2);
Console.WriteLine("\n****************");
Console.WriteLine("Karakter törlés adott helyről, 3-tól 2 db karakter");
Console.WriteLine(strSzoveg);
strSzoveg2 = strSzoveg.Remove(3, 2);
Console.Write(strSzoveg2);
Console.WriteLine("\n****************");
Console.ReadKey();
}
2.,
static void Main(string[] args)
{
string strSzoveg = "123456789";
string strSzoveg2 = "12344456789";
Console.WriteLine(strSzoveg);
for (int i = 1; i < strSzoveg .Length ;i++ )//string mint vektor
Console.Write(strSzoveg[i]);
Console.WriteLine();
int iEredmeny = strSzoveg.CompareTo(strSzoveg2);//Összehasonlítás
Console.WriteLine(iEredmeny);
Console.Write("Adj meg egy rövid szöveget, amit beszúrok egy stringbe!:
");
string strBeszur = Console.ReadLine();
strSzoveg =strSzoveg .Insert (1,strBeszur );//beszúrás
Console.WriteLine(strSzoveg);
Console.WriteLine("Most szöveget keresünk szövegben!");
string strSzovega = "Boci Boci Tarka, Se Füle se Farka, oda megyünk lakni,
ahol tejet kapni!";
string strSzovegb;
Console.Write("Kérem a keresendő szövegrészletet!");//keresés
szövegben
strSzovegb= (Console .ReadLine ());
strSzovega = strSzovega.ToUpper();
Console.Write(strSzovega);
strSzovegb = strSzovegb.ToUpper();
if (strSzovega .IndexOf (strSzovegb )>-1)
Console .WriteLine ("Ez benne van!!!!");
else
Console .WriteLine ("Nincs ilyen részlete a szövegnek");
Console.WriteLine("Trimmeljük a szöveget, elejéről és a végéről is
levágunk szövegrészletet!");
char chrElso = Convert.ToChar(strSzovega[0]);
Console .WriteLine (strSzovega .TrimStart (chrElso ));
Console.Write("Karakter keresése!");
char[] keres = new[] {'B'};
int iDarab = strSzovega.IndexOfAny(keres);
Console.WriteLine(iDarab);
Console.ReadKey();
}
3.,
static void Main(string[] args)
{
/*Kérj be 2 sztringet, állapítsd meg,
* hogy része-e a második az elsőnek,
* s ha igen, hanyadik pozíción kezdődik benne!
*/
Console.WriteLine("Kérem az első stringet!");
string strSzoveg1=Console .ReadLine ();
string strSzöveg1Upper = strSzoveg1.ToUpper();
strSzöveg1Upper = strSzöveg1Upper.Replace(" ", "");
Console.WriteLine("Kérem a második stringet!");
string strSzoveg2 = Console.ReadLine();
string strSzöveg2Upper = strSzoveg2.ToUpper();
strSzöveg2Upper = strSzöveg2Upper.Replace(" ", "");
if (strSzöveg1Upper.IndexOf(strSzöveg2Upper) > -1)
Console.WriteLine("Szerepel benne");
else
Console.WriteLine("Nem szerepel benne!");
Console.ReadKey();
}
Program elemei
Változó: Megcímzett, névvel ellátott memóriaterület a számítógép RAM-jában.
Konstans: Állandó, nem változtatható érték.
Azonosító: Olyan jelsorozat, amellyel a változó tartalmára
hivatkozhatunk és megváltoztathatjuk azt.
Értékadás: Az a művelet, melynek során a változó értéke megváltozik.
Jele C#: „ = ” – egyenlő.
Kezdőérték: A változó és a konstans induló értéke
Deklaráció: Az algoritmus azon pontja, ahol a változót először
elhelyezzük (típust adunk neki).
Definiálás, inícializálás : Értékadó művelet.
Kifejezés:
Műveletek:
Változók: (Változók a C# nyelvben)
Fogalma: A változók olyan névvel ellátott memóriaterületek, amelyekben
típustól függő értékeket tárolhatunk. Ezt a memóriaterületet számunkra a
fordító (compiler) foglalja le, amelyre a program törzsében a változó
azonosítójával hivatkozhatunk.
Minden változót, használat előtt deklarálni kell.
Jellemzői:
1. Neve (azonosítója): Csak betűvel (az angol ABC szerint) és aláhúzásjellel kezdődhet, és
betűvel, számmal vagy aláhúzásjellel folytatódhat. Hossza legalább 1 karakter.
Kis- és nagybetű általában nem különböző (a C-ben igen).
2. Típusa:
o Logikai, szám (egész,
valós), szöveg, karakter, stb.
o Azonos típusok
összehasonlíthatóak egymással.
o A típus meghatározza,
hogy milyen műveletek végezhetők vele.
o Meghatározza a méretét
(memóriában)
3. Értéke: Egy a megadott
típusban elhelyezkedő elem. Pl.
o logikai (TRUE és FALSE
lehet, hossza: 1 bit)
o egész (-végtelen és
+végtelen közötti egész szám)
o valós (-végtelen és
+végtelen közötti tört vagy egész szám),
o string (’SzöVeG’ –
maximum 255 karakter hosszúságú szöveg lehet, de lehet akár 1, akár 0 karakter
hosszúságú is – a C-ben nincs valódi string, így nem csak 255 karakternyi,
hanem bármilyen hosszúságú szöveget egy „0” karakter zárja),
o karakter (’X’ – lehet
speciális jel, számjegy, betű vagy üres karakter)
4. Értelmezett műveletek
Típusok:
Kifejezés:
Változók literálok, műveleti jelek kombinációja.
pl.: int iSzam= iBe + 10;
literál: konkrét érték (pl.: 2, "s", true)
Ciklus (iteráció)
Fogalma: Utasítás(ok) többszöri végrehajtása.
Típusai:
Ha a feltétel nem teljesül akkor egyszer sem hajtódik végre a ciklusmag.
Például: Olvassunk be számokat és írassuk ki a négyzetgyöküket mindaddig,
amíg negatív számot nem adunk meg.
Növekményes,
elöltesztelő, előírt lépésszámú (FOR) ciklus
1. Írassuk ki 1 - től 20 ig
a számokat és négyzetüket!
2. Írassuk ki 99-től
csökkenő sorrendben az összes pozitív, 3-mal osztható egész számot!
3. Írassuk ki az első tíz,
hárommal osztható szám felét!
4. Írassuk ki 101-től 50 ig
csökkenő sorrendben az öttel osztható számok kétszeresét!
5. Írjuk ki az első n
páratlan szám négyzetét!
6. Határozzuk meg az elsőN
természetes szám összegét!
7. Határozzuk meg az első N
természetes szám szorzatát(N faftoriális)!
8. Írjuk ki az első N
négyzetszám átlagát!
9. Számítsa ki a gép 10
tetszőleges szám összegét, szorzatát, és átlagát!
10. Írjuk ki az N-nél nem
nagyobb páratlan számok összegét!
11. Készítsünk N-es
szorzótáblát(1*N=, 2*N=, ...)!
12. Készítsen a gép számtani
sorozatot (adott az első elem, a differencia és az elemszám)!
13. Oldjuk meg az előző
feladatot mértani sorozattal!
14. Tegyünk X forintot évi
P%-os kamatra bankba. Írassuk ki hogyan alakul a megtakarítás az évek folyamán!
15. Egy beolvasott számról
döntsük el, hogy -30 és 40 között van-e?
Szelekció
Típusai: Egyszerű, Összetett, Többszörös
HA feltétel AKKOR utasítás VÉGE;
HA feltétel AKKOR utasítás_1 KÜL ÖNBEN utasítás_2 VÉGE;
ELÁGAZÁS
MIKOR feltétel_1:
utasítás_1;
MIKOR feltétel_2:
utasítás_2;
MIKOR feltétel_3:
utasítás_3;
VÉGE;
Gyakorló feladatok, példák: