Co to jest petla for jak działa

Tu możesz pisać o swoich problemach z pisaniem programów w języku C dla AVR.
krzychu20
Newb
Newb
Posty: 57
Rejestracja: niedziela 20 wrz 2015, 15:43

Co to jest petla for jak działa

Postautor: krzychu20 » czwartek 21 sty 2016, 19:25

Witam próbuje nauczyć się programowania C avr robiłem już ćwiczenia ledowe ale chce iść dalej. Ale nie rozumiem pętli for co to jest na jakiej zasadzie to działa do czego to służy ta pętla for prosiłbym aby ktoś z was wytłumaczył na necie wiem ze jest ale nie rozumiem tego wg :mrgreen:

Awatar użytkownika
Grzegorz...
User
User
Posty: 462
Rejestracja: piątek 09 paź 2015, 18:57

Re: Co to jest petla for jak działa

Postautor: Grzegorz... » czwartek 21 sty 2016, 19:35

Ja Ci podpowiem bardziej oględnie.
W sumie w każdym języku programowania wygląda podobnie.
Poszukaj w książkach/necie jakikolwiek poradnik odnośnie programowania C,C++ i sam skojarzysz o co "biega", a to będzie dużo cenniejsze niż jakiekolwiek wyjaśnienia bezpośrednio na forum.
Ostatnio zmieniony czwartek 21 sty 2016, 19:37 przez Grzegorz..., łącznie zmieniany 2 razy.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1177
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Co to jest petla for jak działa

Postautor: Antystatyczny » czwartek 21 sty 2016, 19:41

Cześć, spróbuję Ci to jakoś łopatologicznie wyjaśnić. Generalnie pętle stosuje się po to, by jakaś część kodu wykonała się wiele razy. No bo bez sensu byłoby pisać np. 50 razy tę sama instrukcję, prawda? Dlatego stosuje się pętle i jedną z takich pętli jest for. W typowym scenariuszu pętla wygląda następująco:

Kod: Zaznacz cały

for(zmienna = 0; zmienna < 15; zmienna++)
{
  to wszystko, co znajdzie się tutaj, czyli pomiędzy nawiasami klamrowymi, zostanie wykonane wiele razy
}


Jak widzisz w pętli for są trzy parametry. Pierwszy z nich to zmienna. Musi być gdzieś wcześniej zdefiniowana lub bezpośrednio wewnątrz nawiasów instrukcji for (Zaraz do tego wrócę). Nasza zmienna ma wartość początkową zero, bo tak jej kazałem (zmienna = 0). Następnym parametrem jest warunek, który decyduje o tym, czy dana pętla ma się nadal wykonywać, czy już warunek się spełnił i trzeba już ją opuścić. W naszym przypadku pętla będzie wykonywana DOPÓKI ZMIENNA JEST MNIEJSZA OD 15. Następny parametr to manipulacja wartością naszej zmiennej. Na potrzeby tego przykładu wymyśliłem sobie, że każde przejście tej pętli spowoduje zwiększenie wartości "zmienna" o jeden. Tak więc nasza pętla wykona się piętnaście razy. Przy pierwszym przejściu zmienna = 0, potem wykonywane są instrukcje z wnętrza pętli i zwiększana jest wartość "zmienna". Kolejne przejście... zmienna = 1 i znowu instrukcje z wnętrza pętli...itd. W pewnym momencie pętla się wykona, "zmienna" osiągnie wartość 15 i program znów będzie chciał wykonać pętlę, ale NAJPIERW SPRAWDZI WARUNEK zmienna < 15. No ale już nie jest mniejsza, więc nie wykona kolejnego przejścia i pójdzie dalej...

Aha, miałem napisać o definiowaniu zmiennej wewnątrz instrukcji for. Bardzo często robię tak:

for( uint8_t moja_zmienna = 0; moja_zmienna < 200; moja_zmienna++)
{
//jakiś kod w pętli
}

Jak widzisz powołałem do życia zmienną o nazwie moja_zmienna wprost w instrukcji for... bo właśnie teraz była mi potrzebna :) Nie jestem pewien, czy jest to zgodne z dobrymi praktykami programowania, ale jest z punktu widzenia kompilatora jest to jak najbardziej poprawne.

Mam nadzieję, że nie zaciemniłem zbytnio...
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: Co to jest petla for jak działa

Postautor: SuperGość » czwartek 21 sty 2016, 19:45

tymi [b] i [u] mogłeś mu zaciemnić

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1177
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Co to jest petla for jak działa

Postautor: Antystatyczny » czwartek 21 sty 2016, 19:47

Dziękuję, już poprawiłem
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
Grzegorz...
User
User
Posty: 462
Rejestracja: piątek 09 paź 2015, 18:57

Re: Co to jest petla for jak działa

Postautor: Grzegorz... » czwartek 21 sty 2016, 20:10

Ja przepraszam tłumaczących te podstawy, ale za chwilę Kolega pytający lub ktoś inny spyta o "while" lub inną pętlę, a tego niestety trzeba się nauczyć z publikacji czy to książkowych czy internetowych lub po prostu w szkole :).

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1177
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Co to jest petla for jak działa

Postautor: Antystatyczny » czwartek 21 sty 2016, 20:12

Przecież jest na forum, czyli w internecie, a przed chwilą opublikowaliśmy wyjaśnienie :) Kolega ma książki, ale nie bardzo radzi sobie ze zrozumieniem zawartego w nich przekazu. Staramy się opisac prościej (na ile się da)
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: Co to jest petla for jak działa

Postautor: SuperGość » czwartek 21 sty 2016, 20:15

Tam u góry w nagłówku forum jest napisane "przyjazne" i tak ma być, przecież nie zmuszamy nikogo do odpowiedzi, a pytań głupich nie ma. Nie można bać się zadawać prostych pytań.

Awatar użytkownika
WoodPaker
User
User
Posty: 136
Rejestracja: czwartek 17 wrz 2015, 19:23
Lokalizacja: USA
Kontaktowanie:

Re: Co to jest petla for jak działa

Postautor: WoodPaker » czwartek 21 sty 2016, 21:20

Załóżmy, że masz petle o takim kształcie
for( i = 1; i <= 10; i++ )
{
Nalej_wody_do_miski;
}

Na początku zostanie wyzerowana zmienna i i ustawiona --> 1
Następnie zostanie spawrdzony warunek czy i jest mniejsze bądź równe 10,
Potem zostanie nalana woda do miski i zwiekszona wartosc i o 1
Nastepnie znow program wroci do gory petli, gdzie sparwdzi warunek i jesli jest selniony to znów zostanie nalana woda do miski i zwiększona wartość i
Na samym końcu kiedy i będzie większe od 10 pętla zakończy swoje działanie :)
Life is to short to eject USB safely


Wróć do „Programowanie AVR w C”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości