Switch to full style
C, C++, Java, PHP, Ruby...

Pravila foruma

U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Odgovori

Re: Arduino/Croduino set za početnike

27 pro 2017, 14:01

jura je lijepo iskomentirao kod, svaka čast :thmbs-up

Ja bi u funkciji morse na početku napravila test da li je slovo iz područja velikih slova i ako je konvertirala ga u malo. To bi pridonjelo isključivo čitljivosti koda pa nebi imao
Kod:
if (letter == 'A' || letter == 'a')

nego
Kod:
if (letter == 'a')

tj u tom slučaju bi pisala switch case umjesto if. Al velim, to je samo malko uredniji kod, nipošto se ne može reći točniji.

Kad se odlučiš pisati sljedeći program za arduino, slobodno piši tu ideje pa ti pomognem ako zapneš.

Vidim da imaš nekog doticaja sa php-om, iako su C i php vrlo slični, velika je razlika pisati kod za embedded sistem kao što je arduino ili php kod za server. Razlika u resursima je ogromna i kod web aplikacija skoro nitko ne pazi na veličine varijabli, brzinu izvođenja itd. Dok je upravo veličina programa i količina dostupne memorije ključ kod pisanja programa za npr arduino. Npr dok u php-u nitko neće ni trepnut dal definirat varijablu kao char ili int, kod arduina se vrlo lako dogodi da nemaš mjesta za int.

Re: Arduino/Croduino set za početnike

27 pro 2017, 15:21

Ništa, gcc -S i usporediti assembler kod u if vs switch! Primam opklade na PP, minimalni ulog 100 kuna.

Re: Arduino/Croduino set za početnike

27 pro 2017, 19:30

shrike je napisao/la:Ništa, gcc -S i usporediti assembler kod u if vs switch! Primam opklade na PP, minimalni ulog 100 kuna.

Hvala na poticaju! Isprobao na Arduinu. IF je začudo bolji, kraći i elegantniji a SWITCH izgleda prilično loše - ni blizu onako kako bi ga čovjek pisao ručno. Onda sam kasnije naletio na tekst gdje majstor kaže "ne koristite switch u embedded programiranju jer compilerova implementacija jako ovisi o poretku podataka u CASE te mjesečevim mijenama."

https://embeddedgurus.com/stack-overflo ... tatements/

Postoje neka osnovna pravila ponašanja ali nema čarobne formule nego isplaniraj, radi, testiraj pa opet preradi. :-D

Re: Arduino/Croduino set za početnike

28 pro 2017, 10:27

Nemojte samo na jednom primjeru odlučivat dal je if-else ili switch-case bolji. U nekim situacijama će se if-else optimalnije prevest, u drugima će bolji biti switch-case.

A kod embedded programiranja ionako treba pregledat prevedeni kod u assebmleru ako vam je cilj brže izvođenje i manji kod. Neki compileri tako suludo optimiraju kod da nakon kompajliranja doslovno fale djelovi koda. Ne jednom smo gubili dane tražeći zašto se program ne odvija kako je zamišljen da bi na kraju u assembleru vidjeli da su neki djelovi izbačeni jer je eto compiler mislio da su ti djelovi zabunom nutra??

Re: Arduino/Croduino set za početnike

30 pro 2017, 08:55

nicky je napisao/la:Nemojte samo na jednom primjeru odlučivat dal je if-else ili switch-case bolji. U nekim situacijama će se if-else optimalnije prevest, u drugima će bolji biti switch-case.

A kod embedded programiranja ionako treba pregledat prevedeni kod u assebmleru ako vam je cilj brže izvođenje i manji kod. Neki compileri tako suludo optimiraju kod da nakon kompajliranja doslovno fale djelovi koda. Ne jednom smo gubili dane tražeći zašto se program ne odvija kako je zamišljen da bi na kraju u assembleru vidjeli da su neki djelovi izbačeni jer je eto compiler mislio da su ti djelovi zabunom nutra??


Slažem se totalno. A ono gore je bilo konkretno u onom Arduino slučaju, trebao sam to navesti.
Što se tiče nedostajućeg koda nakon kompilacije, to nije tako neobično. Optimizacija jako preuređuje kod, ovisno o stupnju i uključenim opcijama. Potpuno izbacivanje bi se desilo, recimo, ako zaboraviš označiti kao "volatile" ulazne portove ili globalne varijable koje su dijeljene s interruptom. Kompajler ne može znati da se te variable mijenjaju iz vanjskog svijeta ili interruptom nego vidi samo varijable koje se nikad ne mijenjaju. I tako ih optimizira kao da su konstante, posve izbacujući suvišni kod.
Odgovori