Vltozk Vltoz A vltoz egy olyan memrialokci amelyhez
- Slides: 28
Változók
Változó • A változó egy olyan memórialokáció amelyhez szimbolikus nevet rendeltünk. Ezt a lokációt fel lehet tölteni vagy akár üresen is lehet hagyni. Különféle típusú értékek őrzésére szolgál. • A változók azért fontosak mert a program futása közben változtathatjuk a tartalmukat (értéküket). Ezért is viselik a „változó” nevet. Az állandókat (konstansokat) nem lehet változtatni.
A változó típusa • A változó típusa határozza meg a benne elhelyezendő adat természetét. Úgyszintén, a típus határozza meg hogy mennyi memória lesz rezerválva az adott változónak. • A C programozási nyelv körülbelül 10 különféle típusú változót ismer.
Változótípusok • boolean (false or true) – 1 byte • char (az ‘a’-t számként őrzi – ASCII) – 1 byte, signed (-128 : +127), unsigned (0 : 255) • byte (8 -bit unsigned data, 0 : 255) • int (2 -bytes, signed -32768 : 32767 unsigned 0 : 65535) • word ugyanaz mint az unsigned int
Változótípusok • long (4 bytes signed -2147483648 : 2147483647 unsigned 0 : 4294967295) • float (4 -bytes signed -3. 4028235 E+38 : 3. 4028246 E+38) • double (ugyanaz mint a float, de dupla pontossággal) • array – ugyanolyan típusú elemek sorozata melyekhez indekszen keresztül lehet hozzáférni. méret: (elemek száma) x (típus mérete)
Változótípusok • string – karakterek sorozata, az utolsó a null (ASCII 0). Az első betű kicsi „s”. méret: (elemek száma) x (1 byte) • String – adatstruktúra (osztály) amely alkalmas a karakterláncok kezelésére. Az első betű a nagy „S”.
Roll-over • Ha a változó értékét az adott típusra előrelátott felső határ fölé növeljük, akkor az intervallum elejére fog ugrani. int my. Int = 32767; // az int típus // makszimális // értéke my. Int = my. Int + 1; // ezután a my. Int // értéke -32768 Ugyanez történik kivonáskor is.
Deklaráció és definíció • A deklaráció és a definíció NEM UGYANAZ! • A változó deklarációja egy kijelentés amellyel egy azonosítót hozunk létre, és megjelöljük a változó típusát és (néha) dimenzióját. • Az azonosító a változó neve, a típust az előző oldalakon ismertettük. A dimenzió a sorozatoknál és a String-eknél fontos.
Deklaráció és definíció • A C programozási nyelvben a változót használat előtt muszáj deklarálni. Ha ezt nem tesszük meg, a fordítóprogram mindenképpen hibát fog jelezni.
Deklaráció és definíció - példák • bool my. Variable; // deklaráció my. Variable = true; // definíció értékadással • char my. Char = ‘U’ // deklaráció és definíció // (az ‘U’=85 ASCII értéke) • int led. Pin = 8; • byte my. Byte = B 10111; // 23 bináris alakban
Deklaráció és definíció - példák • long my. Long = -123; • float my. Float = -123456. 1; A változó definiálása értékadást jelent egy korábban lefoglalt memórialokációnak az adott változó számára.
S. O. S. projekt • Hardver: LED az Arduino 12 -es lábacskájára kötve 220Ω-os ellenálláson keresztül. • Szoftver: program amelyik a LED-et az S. O. S. Morze szimbólumoktól függően villogtatja. • S: “. . . ”, O: “- - -”, S: “. . . ”
S. O. S. projekt int led. Pin = 12; void setup () { pin. Mode(led. Pin, OUTPUT); } void loop () { digital. Write (led. Pin, HIGH); delay(200); // dot digital. Write (led. Pin, LOW); delay(200); digital. Write (led. Pin, HIGH); delay(200); digital. Write (led. Pin, LOW); delay(500); digital. Write (led. Pin, HIGH); delay(500); // dash digital. Write (led. Pin, LOW); delay(500); . . . }
S. O. S. projekt • 4 sor állandóan ismétlődik: HIGH, delay, LOW, delay, … • A delay vagy 200 ms (dot), vagy 500 ms (dash) • A kód rövidebb és hatékonyabb lesz ha az állandóan ismétlődő műveletekre függvényt írunk. • A függvényt flash-nek fogjuk nevezni, és a duration-nal (időtartam) fogjuk hívni. Az időtartam 200 vagy 500 (milliszekundum).
Flash függvény void flash (int duration) { digital. Write (led. Pin, HIGH); delay (duration); digital. Write (led. Pin, LOW); delay (duration); }
Az új loop függvény void loop () { flash (200); // S delay (300); flash (500); // O flash (200); // S delay (1000); }
A program a flash függvénnyel int led. Pin = 12; void setup () { pin. Mode (led. Pin, OUTPUT); } void loop () { // S flash (200); delay (300); // O flash (500); // S flash (200); delay (1000); } void flash (int duration) { digital. Write (led. Pin, HIGH); delay (duration); digital. Write (led. Pin, LOW); delay (duration); }
Ciklusok • Utasítások csoportját ismétlik meghatározott számú alkalommal amíg valamilyen feltétel nem teljesül. • Az S. O. S. projekt az “S” betű megjelenítéséhez a LED-et csak 3 -szor villantotta fel, ezért a programot gyalog is meg lehetett írni. Mit csinálnánk ha a LED-et több 100 -szor kellene felvillantani? • A program írása eltartana, a program pedig sok memóriát foglalna el. • Ilyenkor használjuk a for ciklust.
“for” ciklus • Akkor használjuk ha előre ismerjük a végrehajtások számát. • Szintakszis: for (int i = 0; i < 100; i ++) { flash(200); Mit kell tenni minden } alkalommal miután Számláló változó deklarációja és a kezdőérték definíciója – 0. Ciklusban maradás feltétele, “i” kisebb mint 100. áthaladunk a cikluson. Ebben az esetben az “i”-t növeljük eggyel.
“while” ciklus • Az előző feladatot while ciklussal is meg lehetett volna valósítani. int i = 0; while (i < 100) { flash(200); i ++; } A kapcsos zárójelek közötti utasításokat “blokk”-nak nevezzük. Ahhoz, hogy a ciklusban maradjunk, a zárójelben lévő kifejezés muszáj hogy igaz (true) legyen, ellenkező esetben a program a kapcsos zárójel utáni utasítással folytatja a végrehajtást.
Sorozatok (arrays) • A sorozatok több érték őrzésére szolgálnak. Eddig a változók csak egy értéket tartalmaztak (általában int-et). • A sorozat olyan változó amelyik több értéket tartalmaz, és ahol mindegyik elemhez hozzáférhetünk a sorszáma alapján. • Az elemek számozása (indekszelése) 0 -tól kezdődik.
Sorozatok • Elkészítjük a Morze szimbólumok hosszának listáját (200 ms és 500 ms). • int durations [] = {200, 500, 200, 200}; • Ha azonnal definiáljuk a sorozat tartalmát, nem szükséges megadni a sorozat elemeinek számát. • Ha nem definiáljuk a tartalmat, akkor int durations [10];
Az új loop() void loop () { for (int i = 0; i < 9; i ++) { flash (durations [i]); } delay(1000); }
Morze átalakító • Hardver: ugyanaz mint az előző projektekben. • Szoftver: a Serial Monitor-ba írt szöveget Morze kóddá alakítani, és az Arduino-ra csatlakoztatott LED-en kiírni.
Morze átalakító dash (-) = 3 * dot (. ) (- és. ) közötti szünet = = 1 * dot (. ) betűk közötti szünet = = 1 * dash(-) szavak közötti szünet = = 7 * dot(. )
Program
Program
Program
- Vannak olyan pillanatok az életben amikor
- Veled lenni olyan
- Egy rejtvényújságban egymás mellett két
- A mazsola egy rémült
- Lesznek ketten egy testté
- Kik alkotnak egy háztartást
- Milyen karakterek szerepelhetnek egy e mail címben
- Szállnak szállnak peregnek a levelek dal
- Egy 2 cm élhosszúságú tömör
- Az úr jósága hogy még élünk a földön
- Hiszem vallom egy az isten
- Egy 82 cm magasságú háromoldalú hasáb
- Egy reflexív elemei
- Egy apa azt mondja a 8 éves lányának
- Tóth árpád elégia egy rekettyebokorhoz
- Egy nagy tömör kockát állítottunk össze
- Egy.best
- Egyenlettel megoldható szöveges feladatok
- Vess el egy gondolatot
- Logikai szita
- Kik alkotnak egy háztartást
- Háromszög szerkesztés alapesetei
- "persistent"
- Egy anya reménye
- Milyen tényezőktől függ az anyagok oldhatósága
- Vízszintesre eső merőleges vetülete
- Egy kz láger falára
- Költő
- Derk haank