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.