@trix ik vind het best je doorzetting vermogen best verbazend goed.
Toen je jaren gelden met dit project begon kon ik zelf ook amper C++ en heb toen een cursus gevolg en dat heeft me erg veel geholpen. Ik zie nu aan de vragen dat je worstelt met de grondbeginselen en basis van C++.
Ik zou je dan ook deze cursus willen aanbevelen.
https://www.udemy.com/courses/search/?src=ukw&q=Beginning+C%2B%2B+…
En dan vooral "Beginning C++ Programming - From Beginner to Beyond" als die niet al gelijk bovenaan staat van.
Hij begint echt bij het eerste begin en vooral daar mis je een flink deel van.
Wat is het verschil tussen een globale en lokale variabele, wat is een functie en hoe werkt dat op de achtergrond.
Ik heb tot nu toe ook maar 2/3 van de cursusgedaan op een gegeven moment word het echt moeilijk en ben ik een beetje de interesse verloren. Er4gens halverwege krijg je een deel certificaat en op dat punt begrijp je C++ ook wel echt veel beter.
IK heb er dacht ik 3 jaar geleden nog ruim 100,- voor betaald nu geven ze het bijna gratis weg. Maar dat geeft niet, ik vind en vond 100,- voor een dergelijke cursus al een niet duur zeker niet in verhouding met vergelijke bare cursus maar dan dat je er life bij bent.
IK weet dat je heel druk bent met je project, maar ik denk serieus als je dat even voor aantal weken opzij zet en die cursus eerst doet,dat je die weken heel snel in zal halen.
Als je de cursus gaat doen, begin dan ook bij het begin wat soms saai is. Want als je stukken gaat overslaan mis je toch wel erg veel.
kan/moet dat dan een "alles" omvattende functie zijn zoals main in main.c ?
Er is niet echt iets als een alles omvattende functie. Ik kan ook zoiet maken
void execute_this_forever(){
while(1){
Voer deze code eindeloos uit;
}
}
Void main() {
execute_this_forever();
}
Het gaat erom dat je code ergens begint, dat kan in main() zijn zoals vaak bij C++ maar in de arduinoIDE begint de code bij setup() om vervolgens na de laatse regel van setup() door te gaan naar loop().
loop() zegt het al duidelijk na de laatste regel van loop() begint het weer bij de eerste regel van loop().
In C++ word het programma regel voor regel afgehandeld. Als er een sprong naar een functie word gedaan zoals hierboven execute_this_forever() dan gaat het daarheen. Het bijzondere is dat als je eenmaal in execute_this_forever() aangekomen dat alles wat er in main() gebeurde zoals variabelen daar niet meer bestaan die zijn er gewoon niet, behalve een variabele die je expres globaal hebt aangemaakt. Vandaar ook dat een lokale en globale variabele verschillend is want lokale variabelen bestaan alleen lokaal in de functie waar je nu bent maar eenmaal weg uit die functie bestaat die variabele niet meer, die word vernietigd.
Als execute_this_forever() een functie was zonder die while(1) dan zou die 1x keer uitgevoerd worden en vervolgens zou je dan weer terug gaan naar main() onder de regel met execute_this_forever().
Er is dus geen alles omvattende functie maar gewoon een regel voor regel uitgevoerde code dat is alles wat er is na het compilen.
Dit omdat een CPU ook maar regel voor regel kan uitvoeren. De main() of loop() is dan ook niet veel anders dan een gewone functie voor C++ behalve dat de loop() functie aan het einde van de code een extra sprong instructie erachter plakt. Die sprong instructie aan het einde van de code zegt dan ook heel simpel spring naar het beging (eerste regel).
[Bericht gewijzigd door
benleentje
op vrijdag 8 april 2022 22:26:50
(38%)