3. P¦tle
Transkrypt
3. P¦tle
Podstawy Programowania :: Roman Grundkiewicz :: 2014 Zaj¦cia 3 3. P¦tle 1 P¦tle while i do-while W trakcie dziaªania programu cz¦sto zachodzi potrzeba wykonania pewnych operacji wielokrotnie. P¦tla while sªu»y do wielokrotnego powtarzania pewnych instrukcji dopóty, dopóki prawdziwy jest podany warunek: 1 2 3 4 while (warunek) { // instrukcje wykonywane, dopoki warunek jest prawdziwy } // dalsze instrukcje Przykªad: 1 2 3 4 5 int i = 5; while(i > 0) { std::cout << i-- << "... "; } std::cout << "BOOM!" << std::endl; wypisze na ekranie konsoli: 1 5... 4... 3... 2... 1... BOOM! Aby p¦tla zostaªa wykonana przynajmniej jeden raz niezale»nie czy podany warunek jest prawdziwy, nale»y u»y¢ p¦tli do-while: 1 2 3 4 do { // instrukcja wykonana raz i powtarzana, dopoki warunek jest prawdziwy } while (warunek) // dalsze instrukcje 2 P¦tla for Cz¦sto podczas korzystania z p¦tli przydatne jest odniesienie si¦ do licznika, który odlicza kolejne iteracje. W przypadku p¦tli while oraz do-while programista musi zadba¢ o niego sam, np: 1 2 3 4 5 int i = 0; while (i < 10) { std::cout << i << " "; i++; } To samo umo»liwia p¦tla for: 1 2 3 for (int i = 0; i < 10; i++) { std::cout << i << " "; } 1 Podstawy Programowania :: Roman Grundkiewicz :: 2014 Zaj¦cia 3 Oba fragmenty kodu wypisz¡ liczby mniejsze ni» 10. Posta¢ p¦tli for: 1 2 3 for (inicjalizacja; warunek_kontynuacji; krok) { // ciag instrukcji } P¦tla for wykonuje kod inicjalizacji tylko jeden raz, przed wykonaniem pierwszej iteracji. Przed ka»dym przebiegiem p¦tli sprawdzany jest warunek_kontynuacji i je»eli jest on prawdziwy, wykonywany jest ci¡g instrukcji zawartych w bloku. Na ko«cu ka»dej iteracji wykonywany jest krok dowolna operacja modykuj¡ca licznik i. Zarówno inicjalizacja, warunek_kontunuacji oraz krok mog¡ by¢ puste. Mog¡ równie» zawiera¢ wi¦cej ni» jedno wyra»enie oddzielone przecinkami. 2.1 Przerywanie i wznawianie p¦tli Instrukcja break powoduje opuszczenie p¦tli, bez wykonywania pozostaªych iteracji. Natomiast instrukcja continue przerywa bie»¡c¡ iteracj¦ i przechodzi do nast¦pnej, a co za tym idzie nie wykonuje ewentualnych dalszych instrukcji dla danego kroku. Przykªad 1): p¦tla niesko«czona, przerywana dopiero gdy u»ytkownik poda 'q': 1 2 std::cout << "press 'q' to exit" << std::endl; char sign; 3 4 5 while (true) { std::cin >> sign; 6 if (sign == 'q') { std::cout << "exit" << std::endl; break; } 7 8 9 10 11 12 13 } std::cout << "sign = " << sign << std::endl; Przykªad 2): wypisanie liczb mniejszych od 25 i niepodzielnych przez 4: 1 2 3 4 5 6 for (int i = 0; i < 25; i++) { if (i % 4 == 0) { continue; } std::cout << i << std::endl; } 2 Podstawy Programowania :: Roman Grundkiewicz :: 2014 3 Snippets • 1 2 3 4 • 1 Iteracja po wszystkich liczbach parzystych mniejszych od n int n = 10; for (int i = 0; i < n; i += 2) { // ... } Odliczanie od n do 0 z u»yciem p¦tli while #include <iostream> 2 3 4 5 6 • 1 2 int n = 10; while (n--) { std::cout << n; } Czytanie liczb od u»ytkownika do momentu podania liczby 0 #include <iostream> int n; 3 4 5 6 7 1 2 while (true) { std::cin >> n; if (n == 0) break; } #include <iostream> int n; 3 4 5 6 do { std::cin >> n; } while (n != 0); 3 Zaj¦cia 3