Przeczytaj
Przypomnienie informacji o pętli for
Konstrukcja pętli for
składa się z trzech głównych elementów, które są umieszczone wewnątrz definicji tej pętli:
zmienna sterująca z przypisaną początkową wartością;
warunek określający, do jakiego momentu pętla ma się wykonywać;
zmiana wartości następująca po każdej iteracji.
Budowa i zastosowanie pętli while
Pętla while
jest zbudowana inaczej. Zmienna sterująca jest tworzona przed zdefiniowaniem samej pętli. Warunek jest umieszczony, podobnie jak w pętli for
, wewnątrz definicji, a zmiana wartości zmiennej sterującej następuje w ciele tej pętli, czyli tam, gdzie zdefiniowane są powtarzane operacje. Ta różnica może nie być widoczna na schemacie blokowym, jednak będzie ją można zaobserwować, gdy przejdziemy do implementacji pętli while
w językach programowania.
Teoretycznie pętla while
może być używana w zasadzie w każdej sytuacji, w której mogłaby być użyta pętla for
. Wszystko zależy od tego, co i w jaki sposób chcemy osiągnąć.
Najczęściej jednak pętli for
używamy wtedy, gdy wiemy, ile dokładnie razy chcemy powtórzyć daną czynność. Natomiast pętlę while
wykorzystujemy, gdy nie jest ważna liczba powtórzeń, a zależy nam tylko na spełnieniu określonego warunku.
Przykładowe algorytmy wykorzystujące pętlę while
Wypisanie ciągu liczb całkowitych z zakresu
Tworząc nasz schemat blokowy, zacznijmy od zdefiniowania zmiennej liczba
, która będzie przechowywać kolejno wyświetlane wartości liczbowe i przy okazji będzie zmienną sterującą dla naszej pętli while
. Niech wartością startową tej zmiennej będzie .
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba = 1](https://static.zpe.gov.pl/portal/f/res-minimized/RMj24jSDvxBBr/1665413506/24RDa92wojbLi3TF2ql9Lh4hCA2mWe4m.png)
Zastanówmy się teraz, do jakiego momentu chcemy, aby nasza pętla działała. Skoro zaczynamy ciąg liczbowy od wartości , to pętla powinna się skończyć, gdy wartość zmiennej liczba
przekroczy wartość . Dodajmy do schematu ten warunek:
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba = 1 3. Fioletowy romb. liczba <= 10](https://static.zpe.gov.pl/portal/f/res-minimized/RIpGS8nGxCEV1/1665413506/2Tehwzch8wscJwIlxjChAnRDp7ntnHnA.png)
Jeśli wartość zmiennej liczba
mieści się w określonym przedziale, wypisujemy jej wartość na ekranie, zwiększamy jej wartość o i powracamy do sprawdzania warunku.
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba = 1 3. Fioletowy romb. liczba <= 10 Jeśli 3 prawda, to 4. Fioletowy romb. Wypisz na ekranie (liczba) 5. Niebieski prostokąt. liczba = liczba + 1 6. Powrót do kroku 2](https://static.zpe.gov.pl/portal/f/res-minimized/R1Xe0j9rCrNJZ/1665413506/1l64u17Fh8QpyfjZWwqkntFpMnTR5T6N.png)
Jeśli wartość zmiennej liczba
przekroczy wartość , oznacza to, że cały zakres liczb, którego oczekiwaliśmy, został wypisany na ekranie. W takim momencie możemy zakończyć nasz algorytm.
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba = 1 3. Fioletowy romb. liczba <= 10 Jeśli 3 prawda, to 4. Fioletowy romb. Wypisz na ekranie (liczba) 5. Niebieski prostokąt. liczba = liczba + 1 6. Powrót do kroku 2 Jeśli 3 fałsz, to 4. Czerwony okrąg. STOP](https://static.zpe.gov.pl/portal/f/res-minimized/RZl1bUb6D3cJ2/1665413506/1iZD8GhRNONuGTKXWAimMyDCLLTU8GLV.png)
Zazwyczaj warunek w pętli while
można zapisać na więcej sposobów, np. warunek liczba <= 10
można zapisać też w postaci liczba != 11
, a działanie pętli i rezultat będą takie same.
Wpisywanie kodu PIN w bankomacie
Wyobraźmy sobie, że piszemy program obsługujący bankomaty. Nasz schemat działania programu jest następujący:
Użytkownik podaje kod PINPIN swojej karty, aby móc potwierdzić, że jest właścicielem karty.
Jeśli kod PIN jest błędny, program prosi ponownie o wpisanie kodu (użytkownik ma łącznie trzy próby).
Jeśli trzy próby zakończą się błędem, wypisujemy komunikat o zablokowaniu dostępu do tego konta i kończymy algorytm.
Jeśli natomiast którakolwiek z prób się uda, wypisujemy komunikat o udanej identyfikacji i kończymy algorytm.
Zacznijmy standardowo od startu algorytmu i utworzenia zmiennej liczba_prob
przechowującej liczbę prób identyfikacji. Dodajemy też warunek sprawdzający, czy użytkownik próbował już 3‑krotnie uzyskać dostęp do konta.
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba_prob = 1 3. Fioletowy romb. liczba_prob <= 3](https://static.zpe.gov.pl/portal/f/res-minimized/RJpnIL7wsterf/1665413507/2VWa9GTkQ2aEnnJe77QZWtXqTvWDy4x6.png)
Dopóki użytkownik nie przekroczył dostępnej liczby prób, program wczytuje od użytkownika kod PIN, który jest przechowywany w zmiennej kod_pin
.
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba_prob = 1 3. Fioletowy romb. liczba_prob <= 3 Jeśli 3 prawda, to 4. Fioletowy romb. Wczytaj dane (kod_pin)](https://static.zpe.gov.pl/portal/f/res-minimized/RPL3mQH2ogW7D/1665413507/2GfST1U2u1xZjOZ4rKLRj6KKkb149vAU.png)
Jeśli kod PIN jest poprawny, to uzyskujemy dostęp do konta i kończymy algorytm, a jeśli nie, wypisujemy informację o błędzie, zwiększamy wartość zmiennej liczba_prob
i ponawiamy operację.
![Schemat pętli. 1. Zielony okrąg. START 2. Niebieski prostokąt. liczba_prob = 1 3. Fioletowy romb. liczba_prob <= 3 Jeśli 3 prawda, to 4. Fioletowy romb. Wczytaj dane (kod_pin) 5. Fioletowy romb. Czy kod jest poprawny? Jeśli 5 prawda, to 6. Fioletowy romb. Wypisz na ekranie: „Dostęp przyznany” 7. Czerwony okrąg. STOP Jeśli 5 fałsz, to 6. Fioletowy romb. Wypisz na ekranie „Błędny kod” 7. Niebieski prostokąt. liczba_prob = liczba_prob + 1 8. Powrót do kroku 2](https://static.zpe.gov.pl/portal/f/res-minimized/RxupbTfSluNEd/1665413507/dxJsQjNLnRfEBI9Ct8o2ua1Lo94gOwYS.png)
W przypadku, gdy wszystkie próby okazały się błędne, blokujemy dostęp do konta i kończymy program.
![Schemat pętli. 1. Zielona okrąg. START 2. Niebieski prostokąt. liczba_prob = 1 3. Fioletowy romb. liczba_prob < = 3 Jeśli 3 fałsz, to 4. Fioletowy romb. Wypisz na ekranie „Konto zablokowane” 5. Czerwony okrąg. STOP Jeśli 3 prawda, to 4. Fioletowy romb. Wczytaj dane (kod_pin) 5. Fioletowy romb. Czy kod jest poprawny? Jeśli 5 prawda, to 6. Wypisz na ekranie: „Dostęp przyznany” 7. Czerwony okrąg. STOP Jeśli 5 fałsz, to 6. Fioletowy romb. Wypisz na ekranie „Błędny kod”. 7. Niebieski prostokąt. liczba_prob = liczba_prob + 1 8. Powrót do kroku 2](https://static.zpe.gov.pl/portal/f/res-minimized/RQPC6J4nTxnBS/1665413508/EaAZ93bvUVhauQyuCiqVvZIK9DdnpK3r.png)
Słownik
jest to akronim angielskiego wyrażenia Personal Identification Number (pol. osobisty numer identyfikacji); oznacza kod numeryczny służący do uwierzytelnienia, np. w telefonii komórkowej, bankowości itp.