Daily Archives: 2012. március 5. hétfő

ROBOTIKA 1 jegyzet (a kiegészítéseket frissítem folymatosan)

program flow diagram (folyamatábra) (ez állhat elágazásokból és ciklusokból)

Elágazások (szelekció): kétirányú (if, else) vagy sokirányú elágazás lehet (switch?

igaz/hamis vizsgálat – megvizsgáljuk a feltételt hogy melyik állapotnak fele meg

ciklusok:

előlteszetelő (pl. for, ami egy ún. számláló ciklus)

hátulteszetelő (while)

UML Unified Modeling Language (ez egy folymatábra rendszer?)

Egy program részei:

változók

elágazások

ciklusok

tömbök

 

 

típusos (c++) (meg kell mondani neki a változó típusát, hogy egész szám-e (int, ami az integer rövidítése) vagy lebegő pontos (ún. float) és típusfüggetlen nyelvek (php)

most típusos nyelveket veszünk

adattárolási egységek: 

bit=1/0, byte=8bit (00000001), word=2byte=16bit, d word= 4byte=32bit

ilyen processzorok vannak a gépekben

 

cisc processor konkrét utasítássokkal dolgozik, pl mikrokontrollerben, (másik a risc)

regiszeterekben történik a műveletek elvégzése

órajel

 

compiler – gépi kód

Compiler: a fordító a forráskódból előállít egy bináris verziót amit a futtató hardver értelmezni tud. C++ platformfüggetlen programozási nyelv.

Interpreter: a forráskódból nem csinál gépi kódot, az értelmező rendszer soronként érelmezi a kódot és egyből lefuttatja.

 

számrendszerek, kettes azámrendszer egy 8 bites rendszeben

helyi értékek: 128 64 32 16 8 4 2 1,

11111111=255

00100000=32

7bit plusz 1 az előjelnek: -127 — 127 lehet tárolni (-1111111)(+1111111)

 

 

Változókban tároljuk ideiglenesen az értékeket, (pl egy szenzor által mért értéket)

C nyelv, változókat lehet rendelni bitekhez

adatokat változókban tároljuk el (vannak lebegőpontos tárolók is)

char -mindig előjeles változó

byte -nem előjeles, unsigned char

short -mindig 2byte (word)

int -d word, 32 bit

long -dd word

longlong

-lebegőpontos értékek:

float (lebegő pontos, tehát nem egész szám)

double (kétszer olyan hosszú, mint a float, tehát kétszer olyan hosszú számot képes tárolni)

string

A változóknak van hatóköre: akkor jön létre, ha létrehozom, és addig tárolódik, amíg

 

PL:

Egy lámpa fényerejének mérésével kapok egy értéket. Azt egy változóban kell tárolnom, és nevet is kell neki adnom, hogy később tudjam, hogy milyen néven kell rá hivatkozni a programban. (A lámpa fényerejének mért értéke mondjuk 0,12)

A programban először létre kell hoznom egy változót, amit úgy tehetek meg, hogy kiírom, hogy milyen fajta változót akarok létrehozni.

Mivel a mért érték amit tárolni akarok a változóban nem egész szám ebben az esetben egy float típusú változót kell használnom, tehát

változótípus változónév;

float fenyero;

(Azért “fenyero” a változónak a neve, hogy később is tudjam, hogy minek az értékét tárolom benne, és azért nincs ékezet, mert a programnyelv nem szereti az ékezetes változónevet.)

 

struct { }

constructor, destructor

 

változók élettartama: kapcsos zárójellel jelezzük a szkópokat, scope?

a függvény definiálása is szkópot jelent, ami belül van LOCAL az felül írja a külső GLOBAL definíciót a lefutás végéig, utána visszatér a külsőhöz

 

(result) name (p0, p1, ..) { }

 

lehet függvény prototípust deklarálni előre

 

ELÁGAZÁSOK:

legegyszerűbb módja az if { } ha igaz-1 akkor lefut, ha hamis-0 akkor nem fut le (csak a 0 a hamis minden más szám igaz)

if{ } else{ } ha hams akkor az else fut le, boolean

Logikai feltételt fogalmazunk meg, operátorokkal (aritmetikai -szorzás, osztás, kivonás stb.- vagy logikai -és, vagy, nem egyenlő, kisebb, nagyobb stb.)

bool érték lesz a végeredmény tehát vagy igaz vagy hamis

if { } else if { }  else { }

logikai műveletek igazság táblázata

 

SZÁMRENDSZEREK:

nyolcas és tizenhatos

8 bites portokra írunk ki számokat az arduinonál, decimális számot kell átszámolni ehhez -kettes és tizenahtos számrdsz.-

tizenhatos: A B C D E F 0 1 2 3 4 5 6 7 8 9

A 0–9 számjegyek használata értelemszerű (azaz: a tízes számrendszernek megfelelő), az A számjegy 10-et, a B számjegy 11-et, a C számjegy 12-t, a D számjegy 13-at, az E számjegy 14-et és az F számjegy 15–öt jelöl (ez összesen 16 számjegy, hiszen a nulla az első).

 

CIKLUSOK:

for (kezdőérték;végérték; lépésköz)  { ebben fut a ciklus, magyaraul a végrehajtandó utasítások }

pl: for (int kiskacsa =0; kiskacsa<30; kiskacsa++)

ez azt fogja csinálni, hogy a kiskacsa kezdőértéke nulla; amit harmincig akarok növelni;eggyel

for (int kiskacsa =40; kiskacsa>30; kiskacsa–)

for ciklus számlálóciklus, ami a{}közötti részt azaz a ciklusmagot annyiszor hajtja végre amíg a ciklusváltozó (ebben az esetben “kiskacsa”) értéke nem éri el a megadott végértéket

break-kilép a ciklusból- és continue-ciklus elejére visz-

while () { }

do  { } while ()  { }

wikipedia

Operátorok:

értékadó operátorok (pl = vagy +=, *= )

pl int kiskacsa = kiskacsa*2  ez ugyanaz, mint int kiskacsa*=2

öszzehasonlító operátorok (==, vagy a >

int kiskacsa = 20;

int kiskacsa = 20+1 de ez egyenlő azzal, mint ha azt írnám, hogy

kiskacsa++ (egyel megnöveli a kiskacsa értékét)

== ezzel tudok két értéket összehasonlítani

TÖMB: egy tömbnek minden eleme ugyanolyan. A C stílusú tömb azonos típusú adatok halmaza, amelyek a memóriában folytonosan helyezkednek el. Csak alapértelmezett konstruktorral rendelkező (minden beépített típus ilyen) típusokból lehet tömböt létrehozni. A tömb elemeire a tömb nevével és az indexelő operátorral hivatkozhatunk.

Pointer: Amikor egy változót definiálunk, a memóriában létrejön egy megfelelő méretű tároló, amelybe bemásolódik a kezdőérték. Érték szerinti átadás.

Referencia szerinti átadás.

 

Szintakika vagy szintaxis: http://wiki.prog.hu/wiki/Szintaxis

 

ARDUINO:

mikrokontroller, lábai ki vannak vezetve ki és bemenetekre, in/out (port)

http://arduino.cc/en/Reference/HomePage

 

 

Köszönet a jegyzetért Harsányi Rékának.

Valamint köszönet Pomozi Péternek a korrepetálásért.