RE: Ukazka C++ pro děti

Pavel Hudecek edizon na seznam.cz
Středa Březen 31 12:20:15 CEST 2021


Je to jen ukázka jak vypadá C++, jinak tomu předchází 10 příkladů z C a pak to zas C bude pokračovat. Tohle asi ještě upravím. Ale chtěl jsem tam i něco na private a friend.

PH

Od: Michal Vanka
Odesláno:středa 31. března 2021 9:42
Komu: HW-news
Předmět: Re: Ukazka C++ pro děti

... a dale:
1) promenna tlacStickPred by mela byt soucasti tridy tlacitko.
2) Stisk by se mel testovat volanim metody, treba stisknuto()

                               if (Tlacitko.stisknuto()) { // právě bylo stisknuto, vyvolat událost
                                               Tlacitko.stisk();
                               }

Dale, ty deti uvidi C++ poprve v zivote a nebo uz maji nejake zkusenosti (treba s C)?

Spise bych to videl na a) zacnu s C (kdekoli), b) zjistim, co je C++ a to tam, kde mam dobry debugger (visual studio), 
c) pouziju C++ v mikrokontroleru

Kazdopadne hodne stesti...

-mv


On Wed, Mar 31, 2021 at 8:13 AM Pavel Brychta <pavel.brychta na duhasys.eu> wrote:
Přesně tak - konstruktor by měl pouze nastavit vnitřní proměnné a stavy 
daného objektu. Pokud například chci použít ten GPIO, který je 
"normálně" obsazený LED diodou jako vstup, který umožní něco nouzově 
inicializovat, tak to takto použít nejde - statický konstruktor třídy 
clLED nastaví ten GPIO jako výstup už při vytváření objektu. Pokud 
nastavení fyzického GPIO uděláte až v init(), begin(), setup(), 
start()..., tak do té doby můžete ten GPIO použít i jinak. Toto se týká 
jakékoliv periferie v MCU, kterou chcete obsluhovat objektově. A pokud 
tu inicializaci potřebujete proto, aby ta LEDka nesvítila od zapnutí 
napájení, tak pak je chyba v hw designu, kterou sice je možné částečně 
napravit ve fw, ale je třeba na to někde upozornit a nemělo by tohle 
řešení být pravidlem. Dalším závažným problémem pak je v clTlac::stisk() 
to nešťastné přímé volání globálního objektu Led.blikat() a statická 
proměnná b - tady bych udělal to, že b přesunu asi jako proměnnou 
objektu clTlac a rozhodně nebudu volat Led.blikat() - buď to udělejte 
jako callback, nebo registrujte referenci na objekt Led přímo ve třídě 
clTlac.

Pavel Brychta

Dne 30. 03. 21 v 21:58 Miroslav Šinko napsal(a):
> Osobne sa drzim toho, ze v konstruktore by sa mal "nastavit" len dany 
> objekt, t.j. jeho premenne. Konkretne tuto si myslim, ze nie je dobry 
> napad inicializovat registre procesora. Objekty su vytvarane ako 
> globalne premenne, jednoducho povedane ktovie kedy a ktovie v akom 
> poradi. Nastavenie registrov procesora by som v classach vyclenil do 
> metod s nazvom povedzme init a tie volal v maine namiesto komentara 
> "tady nic neni: inicializace je v konstruktorech".
>
> miro
>
> On 30.3.2021 20:08, Pavel Hudecek wrote:
>> Dobrý den všem,
>>
>> Udělal jsem malou ukázku programu v C++ pro děti na kroužek, prosím o
>> zhodnocení, zda v tom nejsou nějaký nevhodný věci:-)
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210331/0ae9b938/attachment.html>


Další informace o konferenci Hw-list