Jestem bardzo początkujący, ucze się programowania dopiero od tygodnia.
Czy mógłby mi ktoś wyjaśnić bardzo prostym językiem kiedy i do czego stosować daną pętle (do, while, for) ??
Mam z tym bardzo duże problemy, nie mogę się tego nauczyć i załapać co i jak, myślę, że z innymi rzeczami będzie mi łatwiej, a te pętle to jest masakra.
Zaczniemy od pętli do-while. Wykonuje się ona dopóki nie zostanie spełniony warunek (np. i < 5, i mniejsze od 5, jeśli i będzie większe lub równe to przerywa się jej wykonywanie). Pętla do-while wykona się przynajmniej raz. Przydaje się to gdy musisz i tak wykonać jakąś operację zawartą w pętli a warunek i tak jest nie spełniony. Załóżmy, że i=7 i wtedy w pętli do-while można wykonać działanie a=8+i. Mimo że warunek nie jest spełniony to do zmiennej a przypisana zostanie wartość 8+7 czyli 15.
Pętla while tak jak wyżej wykonuje się do kiedy nie zostanie spełniony warunek. Może się ona w ogóle nie wykonać gdy np. i będzie równe 6 (przykład wyżej).
Pętla for jest dobra gdy np. musimy wykonać coś ileś razy (można inne pętle również wykorzystać ale ta jest najwygodniejsza)
Załóżmy że chcesz wyświetlić literę “a” 10 razy.
for(int i=0;i<10;i++)
{
cout<<"“a”;
}
int i =0 deklaracja zmiennej,
i<10 pętla będzie się wykonywać 10 razy (dopóki i będzie mniejsze od 10)
i++, zwiększanie wartości i o 1 z każdym przebiegiem pętli.
Pętla for jest też niesamowicie przydatna w poruszaniu się po tablicach. Elementy w tablicy są ponumerowane od 0 do n. Tak samo możesz ustawić pętle for żeby startowała od 0 a kończyła na n i dzięki temu do każdego elementu tablicy można przypisać jakąś wartość.
Jeśli wiesz dokładnie ile razy ma się wykonać pętla to często używa się for. Ponadto przy tablicach często będziesz je używał.
While używasz jeśli chcesz powtórzyć jakieś czynności jednak nie musi się ona wykonać jeśli problem ,który postawisz dla tej pętli nie będzie spełniony od początku.
Do…while jeśli chcesz coś powtórzyć jednak sprawdzasz czy ma się wykonać jeszcze raz po tym jak się wykona. Przeciwnie do while.
Jednak większość pętli można napisać na każdej z możliwości, kwestia warunku.
Spróbuj w ramach ćwiczeń napisać 3 pętle ,które wypiszą 10 razy “Hello” wykorzystując while, do…while,for.
pętle while użyjesz w przypadku gdy nie wiesz ile jest elementów, np. pobierasz je kolejno i nie wiesz ile ich jest, jesli brak nowego elementu to koniec pętli. Choćby odczyt kolejnych linii pliku :
jako że pracuje jako programista .NET łatwiej mi o przykład w C++ dla .NET
StreamReader^ sr = gcnew StreamReader("TestFile.txt");
String^ line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr->ReadLine()) != nullptr)
{
Console::WriteLine(line);
}
jak widać pętla while to wykonanie bloku kodu w jej wnetrzu jesli jest spełniony warunek w nawiasach (). Rozpisując to co jest w nawiasach :
(line = sr->ReadLine()) != nullptr
// to samo co :
line = sr->ReadLine()
line != nullptr
czyli sprawdzane jest czy line nie jest pustym uchwytem (null pointer), czyli ze nic nie pobrano.
Źle do tego podchodzisz już od samego początku, niepotrzebnie się ograniczasz.
Nie daj sobie wmówić na start, że coś się używa do czegoś bo tak. Eksperymentuj.
Zmorą większościowi podręczników jest to, że wpajają stereotypy… To tak jakby wmawiać Einsteinowi na starcie, że fizyka Newtonowska jest najlepsza bo wszyscy ją stosują…
Ja na przykład w życiu jeszcze nie użyłem tej durnej pętli do…while.
Prawda jest taka, że każdą pętlą osiągniesz zamierzony efekt.
Tylko w jednej pętli może to być 1 linijka, a w drugiej to samo otrzymasz wypisując kilka linii i zaprzęgając dodatkowe zmienne…
I tutaj po raz pierwszy w programowaniu spotkasz się z pojęciem “optymalizacji kodu”.
tu masz link do bardzo ciekawej lekcji po polsku, gdzie na przykładzie tłumaczą działanie tech pętli.
proszę czytać manuala danego języka programowania poza tym google nie boli. uczysz się tydzień, ale czego, programować? Programowania nie opanujesz w jakimś nawet kiepskim stopniu jak sam nie napiszesz kilkadziesiąt a nawet kilkaset programów, także powodzenia w dalszej drodze.
Trochę trudne przykłady tutaj podawane są na początek dla Ciebie.
for (int i = 0; i < 10;i++)//i++ postinkrementacja
cout << i << ' ';
do {
cin >> zmienna;
} while (zmienna != 0); /*Podany przykład będzie się wykonywał dopóki zmienna będzie różna od 0 "!="*/
Podobnie jest z :
while(zmienna != 0){
cin >> zmienna;
}
Różnica polega na sprawdzeniu warunku do {} while robi to pod koniec. W Pascalu … teoretycznie kod jest łatwiejszy i może lepiej zrozumiesz
Tylko dzisiaj jak się uczyłem było zadanie żeby napisać program który wypisze liczby od 1 do 100. Wiem, że jest to bardzo łatwe,ale zauważyłem, że już pozapominałem wszystko. Więc chyba nie nadaje się do tego
A jak można inaczej zrobić pętle while w tym przykładzie ?? Jakby wyglądał kod ?? Sorki za uciążliwość, chcę się tego w miarę nauczyć, a mam największe problemy z tymi pętlami.
#include
#include
int main()
{
int nLiczba;
do
{
std::cout << "Wprowadz liczbe wieksza od 10: ";
std::cin >> nLiczba;
}
while (nLiczba <= 10);
std::cout << "Dziekuje za wspolprace. ";
getch();
}
O for narazie nie będę pytał, bo zauważyłem, że go się stosuje żeby wypisał np. jakieś liczby np. od 1 do 10000, itp.
Warunek sprawdzany na początku, więc zmienną musiałbyś pobrać przed pętlą, oraz pobierać dopóki nie będzie spełniać warunku.
Btw warunek masz nie adekwatny do zadania, bowiem w warunku jest liczba mniejsza od 10, a w zapytaniu masz na odwrót. Pętla do while, zawsze robi co najmniej jeden przebieg, a while nie.
#include
#include
int main()
{
int jakas;
std::cout<<"Podaj liczbe: ";
std::cin>>jakas;
if (jakas<0)
{
std::cout<<"Podales liczbe ujemna"<
}
if (jakas>=0 & jakas<10)
{
std::cout<<"Liczba jednocyfrowa"<
}
if (jakas>=10 & jakas<100)
{
std::cout<<"Liczba dwucyfrowa"<
}
if (jakas>=100 & jakas<1000)
{
std::cout<<"Liczba trzycyfrowa"<
}
getch();
}
Jak użyć pętle do…while i jak samo while, aby po wyświetleniu wyniku np. tym: Podałeś liczbe ujemną wróciło do poczatku programy czyli podania liczby ??