ampers Napisano Listopad 6, 2022 Udostępnij Napisano Listopad 6, 2022 Witam. Chcę się tylko upewnić czy poprawnie rozumuję składnie i działanie pętli. While(warunek1) // pętla nr.1 { While(warunek2) //pętla nr.2 { } } Do sedna, pętla nr.1 będzie się wykonywać do czasu spełnienia warunek1 to oczywiste. Idąc dalej jeżeli zostanie spełniony warunek2 to będziemy się poruszali w pętli nr.2 I teraz moje pytanie jeżeli z jakiś powodów warunek1 nie będzie spełniony to przerwie działanie obu pętli i program poleci sobie dalej ? Czy może jest tak że jeżeli się poruszam w pętli nr.2 to nawet gdy warunek z pętli nr.1 przestanie być spełniany to dalej będę zapętlony w pętli nr.2 bo tam warunek2 jest prawdziwy ?
Treker (Damian Szymański) Listopad 7, 2022 Udostępnij Listopad 7, 2022 @ampers witam na forum Dnia 6.11.2022 o 08:57, ampers napisał: I teraz moje pytanie jeżeli z jakiś powodów warunek1 nie będzie spełniony to przerwie działanie obu pętli i program poleci sobie dalej ? Nie, jeśli program jest w jednej pętli to nic innego nie jest sprawdzane - pomijając np. przerwania itd., ale w tak podstawowym przykładzie możemy założyć, że wykonywana jest tylko pętla numer 2. Dnia 6.11.2022 o 08:57, ampers napisał: Czy może jest tak że jeżeli się poruszam w pętli nr.2 to nawet gdy warunek z pętli nr.1 przestanie być spełniany to dalej będę zapętlony w pętli nr.2 bo tam warunek2 jest prawdziwy ? Tak, dokładnie tak będzie. Jeśli program wskoczy to jednej pętli to będzie krążył tylko w niej. 1
ampers Listopad 8, 2022 Autor tematu Udostępnij Listopad 8, 2022 (edytowany) Dzięki wielkie oto mi chodziło. Zdaje sobie sprawę że to podstawy ale nieraz te podstawy sprawiają że ciężko doszukać się problemu. A swoją drogą czy ktoś ma jakiś sprawdzony sposób na działanie pętli warunek1 nie będzie spełniony to przerwie działanie obu pętli i program poleci sobie dalej gdy jest w pętli nr.2 ? Coś w rodzaju : While(warunek1) // pętla nr.1 { While(warunek2) //pętla nr.2 { if(warunek1==30) {break;} } } Czy może są jakieś zgrabniejsze metody bo nie chcę używać jeszcze attachInterrupt. pozdrawiam i też witam serdecznie wszystkich tutaj. Edytowano Listopad 8, 2022 przez ampers
farmaceuta Listopad 8, 2022 Udostępnij Listopad 8, 2022 (edytowany) Z zagnieżdżonych pętli (a o takich mowa) możesz się zgrabnie wydostać za pomocą słowa kluczowego "return" użycie spowoduje zakonczenie funkcji w której się znajdujesz...więc jeśli to będzie w loop() to na początek loop() ("break" spowoduje zakończenie tylko tej jednej pętli w której się znajdujesz) While(warunek1) // pętla nr.1 { While(warunek2) //pętla nr.2 { if(warunek1==30) { return; } } } Edytowano Listopad 8, 2022 przez farmaceuta 1
jand Listopad 8, 2022 Udostępnij Listopad 8, 2022 Przy takiej składni dowolny warunek == flase kończy pętlę: while ((warunek1) && (warunek2)) { } Jeśli warunki nie są obliczane wewnątrz pętli, to bez np. przerwań pętla się nie skończy. 1 1
ampers Listopad 11, 2022 Autor tematu Udostępnij Listopad 11, 2022 Dziękuje bardzo za szybkie odpowiedzi. Zgodnie z waszymi wytycznymi udało się mi zrealizować to co chciałem. Pozdrawiam i zamykam temat.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »