Dzisiaj ma prośbę o wytłumaczenie tej pętli
for
(wiem - podstawy podstaw).
Wziąłem się za czytanie "Szkoły programowania ..." i tam znalazłem taki kod, w który nie wiem kiedy dokładnie jest przypisanie zmiennej typu char do pierwszego elementu tablicy oraz kiedy jest inkrementacja.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word = "?ate";
for( char ch = 'a'; word != "mate"; ch++ )
{
cout << word << endl;
word[ 0 ] = ch;
}
cout << "Petla sie skonczyla, a slowo to " << word << endl;
return 0;
}
Program wykonuje się moim zdaniem tak:
1/pętla for sprawdza, czy
? ate
jest identyczne ze słowem
mate
. Oczywiście
? ate
nie jest identyczne ze słowem
mate
, więc zwraca fałsz, co w połączeniu z negacją w sumie daje prawdę, więc pętla się wykonuje.
2/w linii 5 pierwszemu elementowi tablicy zawierającej słowo
? ate
przypisywany jest znak
'a'
.
3/Czy teraz - po nadpisaniu pierwszego elementu zmiennej
word
?- jest inkrementacja, bo momentu inkrementacji za bardzo nie jestem pewien ? Czyli znak
'a'
zmienia się w znak
'b'
po nadpisaniu zmiennej
word
?
5/pętla for sprawdza, czy
aate
jest identyczne ze słowem
mate
. Oczywiście
aate
nie jest identyczne ze słowem
mate
, więc zwraca fałsz, co w połączeniu z negacją w sumie daje prawdę, więc pętla się wykonuje.
6/w linii 5 pierwszemu elementowi tablicy zawierającej słowo
aate
przypisywany jest znak
'b'
, który mamy z powodu wcześniejszej inkrementacji
'a'
do
'b'
.
7/znów inkrementacja z
'b'
do
'c'
To co powyżej napisałem jest prawidłowe, czy ten program działa trochę inaczej?
Trochę niecodzienna ta pętla, bo najpierw sprawdza zmienną, która jest trochę inna aniżeli wynikałoby to z początkowego znaku
'a'
, chodzi mi, że zaczyna pętla od
? ate
, które jest "poza" pętlą, nie zaś od
aate
.