Hogyan lehetett volna helyesen megoldani?
A lényeg:
int a = 7;
int b = 3;
A programba nem lehet belemódosítani csak alá írni. Az én megoldásom ez volt:
int a = 7;
int b = 3;
int regia;
int regib;
regia = a;
regib = b;
a = regib;
b = regia;
A válasz nem jó, mert egyetlen változóval kellett volna megoldanom. Hogyan lehet egyetlen változóval megoldani ezt a feladatot?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ha pl. egy sort-ot implementálsz, amiben azért van egy pár csere, akkor vagy minden swap előtt ellenőrzöd, hogy egyenlő e a kettő, vagy deklarálsz egy temp változót egyszer, és nem kell ellenőrizgetned.
Csak annyit akartam mondani, hogy jó tudni hogy létezik XOR swap, de nem biztos hogy élesben használni is kell :)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Csak annyit akartam mondani, hogy jó tudni hogy létezik XOR swap, de nem biztos hogy élesben használni is kell :)"
Én meg, gyakorló beágyazott rendszer fejlesztőként annyit szeretnék mondani, hogy ilyen hülyeségeket inkább ne terjessz. Gondold végig a dolgokat szövegelés előtt, próbáld használni az agyadat és tartsd szem előtt, hogy a beágyazott rendszerek esetén jellemzően nagyon csekély erőforrás áll a fejlesztők rendelkezésére (pl. 20-64 byte RAM, 1-2 kByte ROM), ezért is alkalmaznak ilyen és ehhez hasonló trükköket, nem pedig azért, mert annyira unatkoznának.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Egyébként használta már valaki a változó értékcserét élesben?
Anno mi is tanultuk egyetemen, de sosem jött elő a valóságban
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Egyébként használta már valaki a változó értékcserét élesben?"
Desktop környezetben erre ma már nincs szükség.
Beágyazott rendszerek esetében sem jellemző, mert ma már vannak erős kontrollerek, sok rammal, de bizonyos célfejlesztéseknél, ahova nem szánnak drága kontrollert, csak fillérest, ami éppen hogy elég a feladatra, ott meglehetősen gyakori. Legalábbis, annál gyakoribb, mint ahogy azt elképzeli az ember.
egyes processzorok (vagy kontrollerek) esetében, valósidejű fejlesztéseknél is jól jöhet, ha a proci "olyan", tehát ha 3 XOR műveletet hamarabb lefuttat, mint a többszöri adatmozgatással járó, segédváltozós variánst.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
MC68HC705K1 microcontroller:
- 504 bytes of program memory (OTPROM)
- 32 bytes of RAM.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Nem olcsóbb a hardver mint a programozó?
Pl egy arduino kb 100ft(már maga az atmega chip), és végtelen memóriája van az általad hozzott példához képest(2kb).
Persze ha rengeteget kell gyártani akkor megérheti
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Nem olcsóbb a hardver mint a programozó?"
Nem.
Legalábbis, nem minden esetben.
Adott egy termék, amit majd eladnak nem több mint 20 millió példányban.
Az annyit jelent, hogy ha csak 10 centtel olcsóbb kontrollert építenek bele, akkor az 2 millió dollár nyereséget jelent, a fejlesztőnek meg plusz (sokat mondok) max egy havi plusz bérébe (idejébe) kerül az abba szabott firmware.
Olyan programozót én meg még nem láttam, aki havi két millát keresne, dollárban.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!