Vltozk Vltoz A vltoz egy olyan memrialokci amelyhez

  • Slides: 28
Download presentation
Változók

Változók

Változó • A változó egy olyan memórialokáció amelyhez szimbolikus nevet rendeltünk. Ezt a lokációt

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.

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

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) •

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ő

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,

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ó é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.

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 =

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.

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

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.

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, …

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);

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);

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 () {

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. •

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

“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

“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

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). •

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 <

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

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

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

Program

Program

Program