C++ (2/4): Pętle for i while
Budowa legendarnej pętli 'for' w języku C++. Definiowanie startu, warunku i kroku.
Pętle w C++ (2/4)
Automatyzacja procesów – przechodzenie przez elementy, liczenie potęg, budowanie ciągów. Na maturze to twoje codzienne narzędzie pracy.
1. Klasyczna pętla while (Dopóki...)
Działa prosto i bezpośrednio. Ocenia warunek w okrągłym nawiasie przed wejściem, tak samo jak zwykły if. Zmiana polega na tym, że zamiast wejść raz, wraca zawsze do góry, póki warunek jest Prawdą.
#include <iostream>
using namespace std;
int main() {
int i = 1;
while (i <= 5) {
cout << "Pętla numer: " << i << endl;
i++; // Tajemny, kultowy skrót C++, odpowiednik i = i + 1;
}
return 0;
}Pułapka nieskończoności 🪤: Pamiętaj by na dole powiększać zmienną i. Zapomnij, a pętla będzie pisać rzędy jedynek w nieskończoność aż zablokujesz Windowsa.
2. Pętla for (Najpopularniejsza)
W C++ pętla ta wygląda na pierwszy rzut oka przerażająco, ale jest genialna w swoim uporządkowaniu. Cały warunek (start, granica, iteracja) umieszczony jest w jednym okrągłym nawiasie, przedzielony dwoma średnikami.
for (ZMIENNA STARTOWA; KIEDY MA SKOŃCZYĆ; O ILE MA UROSNĄĆ) { ... }
#include <iostream>
using namespace std;
int main() {
// Zauważ, że zaczynamy liczyć standardowo od zera.
// Zatrzymujemy się tuż przed dziesiątką (i < 10)
for (int i = 0; i < 10; i++) {
cout << "Okrążenie: " << i << endl;
}
return 0;
}Dlaczego liczymy od zera, aż "ostro" do granicy?
Zwróć uwagę, dlaczego niemal każdy informatyk pisze pętlę do potęgowania jako (int i = 0; i < 5; i++), a nie np. (int i = 1; i <= 5; i++). Głównym powodem są Tablice, o których przeczytasz w kolejnej lekcji. W świecie C++ pamięć maszynowa nie rozumie pokoju pierwszego. Zawsze buduje system jako przesunięcie. "Pierwszy element to przesunięcie równe 0 względem początku".
3. Przechodzenie Pętlą For po Stringu (Napisie)
Co roku na maturze każe Ci się rozbić wyraz na części i np. zamienić w nim literki z małych na duże, albo sprawdzić szyfr (np. Szyfr Cezara). W C++ traktujemy słowo string dokładnie jak ciąg małych elementów zwanych typem char (Characters / Znaki). A one są przydzielone właśnie w Tablicy startującej od Zera!
#include <iostream>
#include <string>
using namespace std;
int main() {
string slowo = "MATURA";
int licznik = 0;
// slowo.length() zwraca informację, ile liter ma napis. W tym wypadku 6.
// Skoro ma 6, to indeksy idą od 0 do 5!
for (int i = 0; i < slowo.length(); i++) {
// Pytamy słowo o indeks i
if (slowo[i] == 'A') {
licznik++;
}
}
cout << "Znalazlem liter A: " << licznik << endl;
return 0;
}PUŁAPKA (Cudzysłów a Apostrof!) 🪤 Spójrz na kod wyżej: użyłem "MATURA" (Podwójne uszy), ale w ifie zapytałem o 'A' (Pojedynczy). To BARDZO ważna zasada w C++.
"Napis"- to wielki pakiet znaków, cały string.'A'- to samotna, biedna literka. Typchar. Kiedy rozbiliśmy pętlą string na atomy (indeksy), wyciągaliśmy pojedynczechary. Oznacza to, że nie możemy ich przyrównywać do dwu-usznego stringa! (Wywali błąd w konsoli przy budowaniu).
