![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie
![]() Uczę się PHP i mam problem z pętlami. Wiem, że może się wam to wydac niedorzeczne, ale po prostu nie potrafię ich zrozumieć. Teorię i składnię znam, ale nie potrafię wykorzystać tego w praktyce i poegam na najprostszych zadaniach. Nie wiem w czym dokładnie tkwi problem. Może w tym, że nie rozumiem zasad ich działania, nie wiem jak zagnieżdżać jedne w drugich. Z if nie mam takiego problemu. Prosze o jakieś rady i wskazówki. Najlepiej jakby mi ktoś to bardzo łopatologicznie wytłumaczył. Posiadam książki, przeczesywałam internet, ale wszytsko na nic, jeżeli ktoś mi tego nie wytłumaczy ludzkim językiem. Dlatego zwracam się do was - starych wyjadaczy z prośba o pomoc. Pozdrawiam, Kasia -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Pętle to najzwyczajniej na świecie powtarzanie n+1 razy tego co znajduje się w ciele pętli (pomiędzy klamrami { }). Powtarzana jest aż do momentu spełnienia warunku
pętla w pętli
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za szybką odpowiedź.
Chciałabym sie dowiezieć, czy dobrze zrozumiałam napisany przez ciebie kod.... Zmienna a jest fałszywa. Zmienna i jest równa 0. Wykonuj pętlę, dopóki a jest równe fałszowi. Wyświetl zmienną i, która równa jest 0. Jeżeli 0 jest większe od 5 to zmienna a jest prawdziwa, poczym zwiększ jej wartość o jeden. następny przykład to wypisanie serii liczb. $i - 0 i jeżeli jest <= 5 to wyświetl ją zwiększając o jeden. Tablica ma wartości a,b,c. Dla każdego elementu z tablicy przypisany jest klucz i wartość Wyświetl zatem klucz oraz wartość. Następny przykład to odliczanie od 1 -10. Wyświetli się ciąg znaków ' - ' dziesięc razy. Mam nadzieję, że dobrze zinterpretowałam, jeśli nie proszę o wskazanie moich błędów. -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
1. Dobrze
2. $i jest równe 0; powtarzaj do puki $i będzie mniejsze lub równe 5; zwiększ $i o jeden. W ciele pętli wyświetl $i 3. dobrze 4. wynik powinien wyglądać tak 1 -> 1 1 -> 2 1 -> 3 ... 10 -> 1 10 -> 2 .. w sumie ciało drugiej pętli wykona się 100 razy (10 z pierwszej * 10 z drugiej) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 2 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Oke moja kolej
![]() for Zmienna $i wynosi 0, a ty potrzebujesz wyniku 4 mogłaś napisać to w if, ale do działania w którym to klient (użytkownik) coś podaje i to co poda trzeba zwiększyć może pojawić się błąd, bo nie wiesz ile musisz powiększać itd i tu masz pętle for postać: Kod for (wyrażenie_inicjujące; wyrażenie_warunkowe; wyrażenie iteracyjne) instrukcja; INSTRUKCJA: wyrażenie_inicjujące — wyrażenie, którego zadaniem jest zwykle ustalenie warunku początkowego (warunków początkowych) pętli; wyrażenie_warunkowe — od jego wartości (true lub false) zależy, czy pętla będzie wykonywana dalej, czy też zostanie zakończona; wyrażenie_iteracyjne — zwykle jest to instrukcja modyfikująca licznik pętli, czyli wpływająca na kontynuację lub zakończenie pętli (licznik pętli jest często sprawdzany w wyrażeniu_warunkowym); instrukcja — instrukcja (prosta lub złożona) stanowiąca tzw. ciało pętli — jest to kod, który będzie powtarzany w pętli. czyli wyrażenie_inicjujące - to nasze $i = 0 wyrażenie_warunkowe - to to kiedy się skończy pętla czyli $i = 4 skończy się gdy $i będzie równe 4 wyrażenie_iteracyjne - co się ma dziać dopóki nie ma tego 4 przykład
coś takiego ![]() While To też jest łatwe ![]() Postać Kod while (warunek) instrukcja; pętla while wykonuje się tak długo, jak długo warunek jest spełniony. czyli przykładzik
i powinno być 4 będzie $i się powiększało aż będzie równe 4 ![]() do…while Pętla do…while jest modyfikacją pętli while. Postać jest ta sama tylko warunek jest sprawdzany ciągle po wykonaniu ciała. Postać: Kod do { instrukcja; } while (warunek); czyli
Będzie sprawdzało się co każde wykonanie ciała pętli czy jest już odpowiedni wynik. Pisałem na szybko może się przyda jak nic nie rozumiesz, bo napisałem bez ładu i składu to sorki |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A mógłbyś mi wytłumaczyć dlaczego w zagniżdżeniu wykonywane jest mnożenie 10 * 10?
Oke moja kolej ![]() for Zmienna $i wynosi 0, a ty potrzebujesz wyniku 4 mogłaś napisać to w if, ale do działania w którym to klient (użytkownik) coś podaje i to co poda trzeba zwiększyć może pojawić się błąd, bo nie wiesz ile musisz powiększać itd i tu masz pętle for postać: Kod for (wyrażenie_inicjujące; wyrażenie_warunkowe; wyrażenie iteracyjne) instrukcja; INSTRUKCJA: wyrażenie_inicjujące — wyrażenie, którego zadaniem jest zwykle ustalenie warunku początkowego (warunków początkowych) pętli; wyrażenie_warunkowe — od jego wartości (true lub false) zależy, czy pętla będzie wykonywana dalej, czy też zostanie zakończona; wyrażenie_iteracyjne — zwykle jest to instrukcja modyfikująca licznik pętli, czyli wpływająca na kontynuację lub zakończenie pętli (licznik pętli jest często sprawdzany w wyrażeniu_warunkowym); instrukcja — instrukcja (prosta lub złożona) stanowiąca tzw. ciało pętli — jest to kod, który będzie powtarzany w pętli. czyli wyrażenie_inicjujące - to nasze $i = 0 wyrażenie_warunkowe - to to kiedy się skończy pętla czyli $i = 4 skończy się gdy $i będzie równe 4 wyrażenie_iteracyjne - co się ma dziać dopóki nie ma tego 4 przykład
coś takiego ![]() Czyli mam rozumieć, że pętla zaczyna działać dopiero po przejściu przez wyrażenie warunkowe, potem wykonywane sa instrukcje, a na zakończenie wykonywane jest wyrażenie iteracyjne? Jeśli chodzi o while i do... while to różnica jest tylko w tym, że w do... while warunki są sprawdzane na początku? Chodzi mi też głównie o to, że nie potrafię sobie poradzić z naprawdę prostymi zadaniami takimi jak: ***Napisac program wyswietlajacy losowe liczby z przedzialu 0-10 do momentu az ich suma wyniesie 50.*** ***Napisac program wyswietlajacy 5 losowych liczb z przedzialu od 0 do 100 i podajacy ich sume.*** ***Napiszemy skrypt, który wyswietli X ciągów liczb od zera do dwudziestu (gdzie X będzie wyznaczała zmienna $ilosc). Jeśli $ilosc będzie mniejsza od zera, wyświetlimy X ciągów od dwudziestu do zera (X oznaczymy jako "- $ilość"). Jeżeli $ilosc będzie równa 0, wyświetlimy komunikat o braku ciągów.*** ***Stosując pętle while, warunek if i modulo napisz kod wypisujący wszystkie liczby parzyste od 0 do 1000 włącznie.*** ***Napisz kod stosując pętlę do..while, który wyświeli napisy: liczba1 liczba2 liczba3 liczba4 itd. ,aż do liczba456.*** ***Wyświetl wszystkie liczby nie podzielne przez 3 z zakresu od 799 do 841 stosując continue i break.*** Pomimo, że pod ćwiczeniami z linku widnieją kody, to i tak po przeanalizowaniu, nie potrafię sama tego napisać http://gajdaw.pl/php/petla-for-cwiczenia/p3.html Nie chodzi mi o to, żebyście napisali za mnie te zadania, tylko żebyście mogli mi je wytłumaczyć w sposób przystępny i zrozumiały, tak, żebym sama mogła to zrobić i zrozumieć. Kilku krotnie przymierzałam się do ich wykonania, lecz nie mam pojęcia czemu nie potrafię ich wykonać mimo iż znam składnie poleceń... ![]() -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
to nie mnożenie
![]() pętla pierwsza wykona się 10 razy pętla nr. 2 wykona się 10 razy za każdym powtórzeniem pętli nr. 1 wykona się 10 powtórzeń pętli nr. 2 w sumie 100 razy (10 pierwszej * 10 drugiej) te zadania są dość nieżyciowe ![]() 1. za pomocą pętli for() wypisz wszystkie elementy tablicy (podpowiedź, użyj count()) 2. za pomocą pętli for() stwórz tablicę, która będzie posiadała wszystkie wartości z przedziału 0-10 (podpowiedź $array[$klucz] = $wartość) To samo zrób używając pętli foreach() i while() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Uzupełnienie tego co opisali wyżej.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj kod i jego komentarze, uruchom cały ten kod a zrozumiesz. Prościej chyba się nie da. Ten post edytował pyro 31.01.2013, 10:19:05 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@Night123:
Zanim zaczniesz uczyć innych sugeruję najpierw douczyć siebie. Poczytaj czym jest drugie wyrażenie w forze bo na pewno nie tym co napisałeś. Poczytaj o różnicach między = a ==. Dodatkowo radzę zwiększać liczniki w pętlach. Poza tym Twoje przykłady zapętlą się w nieskończoność. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
// ADD
Kasia Cytat http://olgarojek.daportfolio.com/ Coś tu brzydko pachnie. -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
phpion to ja już nic nie rozumiem.... piszesz do kolegi:
Zanim zaczniesz uczyć innych sugeruję najpierw douczyć siebie. Poczytaj czym jest drugie wyrażenie w forze bo na pewno nie tym co napisałeś. Poczytaj o różnicach między = a ==. Dodatkowo radzę zwiększać liczniki w pętlach. Poza tym Twoje przykłady zapętlą się w nieskończoność. W końcu ja sama się zapętliłam i nie wiem co robć... : // ADD Coś tu brzydko pachnie. Na drugie mam Kasia, a Olga mi się nie podoba, ale niestety muszę go formalnie używać... Dlatego wszędzie dzie się da i wszystcy mówią do mnie Kasia ![]() Uzupełnienie tego co opisali wyżej. Ten materiał także już przerabiałam... Nie wiem co jest ze mną nie tak, że pomimo znajomości składni, nie potrafię jej wprowadzić w życie. Łączyć, dopasowywać odpowiednich instrukcji do zadań. Ślęczę teraz nad zadaniami od kolegi CuteOne i ni hu hu nie wiem jak to zrobić.... z pierwszego wyszło mi coś takowego:
Według localhosta wyszło tak: 1 2 3 4 5 6 7 I chyba koledze o to właśnie chodziło (mam nadzieję) Ten post edytował gwiazdka_root 31.01.2013, 10:51:20 -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
1. Manual twoim przyjacielem - count()
2. Zadanie jest poprawnie wykonane ale co gdy nie znasz ilości elementów tablicy?
teraz wykonaj to samo dla pętli foreach i while. Na monitorze ma się wyświetlić klucz i wartość pod danym kluczem (tak jak w powyższym przykładzie). Jak już ogarniesz powyższe zadanie to przejdź do zagnieżdżeń pętli w pętli np. mam tablicę wielowymiarową
Zadanie to wyrzucić na ekran wszystkie wartości z tej tablicy za pomocą pętli podpowiedź-aby sprawdzić czy dana wartość jest tablicą is_array() Ten post edytował CuteOne 31.01.2013, 11:24:03 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Blisko, ale wywołaj jeszcze taki kod:
I zobacz jak wyglądają klucze w tej tablicy. -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
teraz wykonaj to samo dla pętli foreach i while. Na monitorze ma się wyświetlić klucz i wartość pod danym kluczem (tak jak w powyższym przykładzie). Z foreach mi wyszło :
tab[0] = 1 tab[1] = 2 tab[2] = 3 tab[3] = 4 tab[4] = 5 tab[5] = 6 tab[6] = 7 Ale z while mam już problem i nie potrafię do tego dojść....
Aby tego było mało próbowałam zrobić jeszcze jedno ćwiczenie, ale wyskakuje mi błąd, że zmiene $key i $value sa niezdefiniowane... ![]()
-------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Pętle "działają" do puki jest spełniony warunek. W while masz podstawowy błąd - wykonaj pętle jeżeli tablica jest mniejsza od 7.
Co do pętli for().. odpowiedź jest dość prosta - nie masz nigdzie zadeklarowanej zmiennej $key i $value. W tym wypadku kluczem jest $i a wartością $array[$i]
Myślę, że dobrze ci idzie i niedługo pojmiesz sens pętli a gdy do tego dojdzie rozwiąż to zadanie Jasio posiada tablicę wielowymiarową
zadaniem Jasia jest usunąć zwierzęta nie pasujące do danego zbioru. Ma to wykonać za pomocą zagnieżdżonych pętli foreach() a następnie wyświetlić wynik działania w kolejnych zagnieżdżonych pętlach Do usunięcia używamy unset() |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Próbowała sobie poradzić tym zadaniem, które wcześniej mi podałeś, lecz kombinowałam na wszelkie sposoby, a wyciągnąć wartości się nie udało...
![]()
Niestety wyszło tak: tak -> Array nie -> Array aha -> ok o Coś mi się wydaje, że zbytnio nie rozumiem konstrukcji tej tablicy. Ten post edytował gwiazdka_root 1.02.2013, 10:29:51 -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz wyświetlić zawartość tablicy, gdy echo wyświetla Array, użyj print_r Ten post edytował !*! 1.02.2013, 10:41:47 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 31.01.2013 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Teraz już zupełnie zgłupiałam
![]() Wyszło mi coś takiego: tak Array ( [0] => wiem [1] => wiedza ) nie Array ( [0] => patrz [1] => teraz ) aha ok Czy mogłabym poprosić o analize tego kodu? Myślałam, że trzeba umieścić w nim dwie pętle... :/ -------------------- Tak jestem kobietką :)
http://olgarojek.daportfolio.com/ |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
I dobrze Ci wyszło. Podobnie jak w przypadku Twojego kodu jest ok, poza tym że return był zbędny, a jak już to nie w tym miejscu.
A i wersja z pętlą która wyświetla zawartość jeśli jest tablicą.
Otrzymujesz coś takiego: key: tak Array ( [0] => wiem [1] => wiedza ) value: wiem value: wiedza key: nie Array ( [0] => patrz [1] => teraz ) value: patrz value: teraz key: aha value: ok Ten post edytował !*! 1.02.2013, 11:00:09 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:35 |