Cykl z parametrem został już przez nas uwzględniony w sekcji „Algorytm” w temacie „Typy algorytmów”.
Wykorzystywana jest pętla z parametrem,gdy wiadomo z góry, ile razy pętla powinna zostać wykonana.

Format rekordu cyklu:

Tutaj za, do, do- słowa zastrzeżone (dla, przed, wykonaj);

<пар. цикла> - parametr cyklu - zmienna liczba całkowita typ (typ całkowity);
<нач. знач.> - wartość początkowa - liczba lub zmiennaliczba całkowita typ (typ całkowity);
<кон. знач.> - wartość końcowa - liczba lub
zmiennyliczba całkowita typ (typ całkowity);
<оператор> jest dowolnym operatorem Pascala.

Przykład: Dla i:=1 do n do<оператор>
tutaj ja jest parametrem pętli
1 - wartość początkowa
n - wartość końcowa
Jeśli w treści pętli używanych jest kilka operatorów, używane są nawiasy operatorskie: begin ... end.
Podczas wykonywania instrukcji for wyrażenie jest najpierw oceniane<нач.знач.>i przypisanie jej wartości do zmiennej pętli<пар.цикла> := <нач. знач.>. Dalej są porównywane<пар.цикла>oraz <кон.знач.>. Dopóki nie staną się równe, instrukcje będą wykonywane. Wartość zmiennej pętli<нач.знач>automatycznie zwiększana o jeden podczas pętli.Należy od razu zauważyć, że niemożliwe jest ustawienie innego kroku cyklu niż 1 w tym operatorze.
Przykład:
Możliwe są następujące instrukcje pętli:

1) dla i:= 1 do n do s1;

2) dla i:= 3 do 10 do s1;

3) dla i:= a do b do s1;

4) dla i:= a do b do
zaczynać

s1;
s2;
...
sn

koniec;

Tutaj s1, s2, s3, ... sn są operatorami pętli.

Przykład:
Napisz program wyświetlający liczby od 1 do 10.

Przykład:
Napisz program do obliczania silni liczby n, czyli n!. (0!=1)

Objaśnienie programu:
Zmienna n jest dla liczby wprowadzonej przez użytkownika, której silnia ma zostać znaleziona; f - zmienna, w której zostanie „zgromadzona” wartość silni liczby n; i - zmienna pętli.
Ustawiona zostaje początkowa wartość zmiennej f:=1.
Wtedy zaczyna się cykl. Zmienna i jest inicjowana na 1; jest porównywany z końcowym - n (1<= n), если условие истинно, тогда выполняется оператор (в этой программе он один): f:= f*i, 1*1=1; значение переменной цикла увеличивается на 1, т. е. станет равным: i:= i + 1, 1 + 1 = 2 и цикл повторяется.
Gdy wartość i stanie się równa n, pętla wykona się po raz ostatni, ponieważ następną wartością i będzie n + 1, czyli więcej niż ostateczna wartość n, warunek i<= n - ложно, цикл не выполняется.

Istnieje inna forma instrukcji pętli For:
Format rekordu cyklu:

Zamiana słowa zastrzeżonego na na downto oznacza, że ​​krok parametru pętli wynosi (-1).
Zmiana wartości parametru przechodzi z większej wartości na mniejszą, tj.<нач. знач.> <кон. знач.>.

Przykład:
Możliwe są następujące instrukcje pętli:

1) dla i:= n do 1 do s1;

2) dla i:= 10 do 3 do s1;

3) dla i:= b do a do s1; (zakładając b>a)

4) dla i:= b do a do
zaczynać

S1;
s2;
...
sn

koniec; (zakładając b>a)

Tutaj s1, s2, s3, ... sn są operatorami pętli.

Przykład: Program obliczeniowy Silnia liczby można składać za pomocą tej instrukcji pętli.


Zadania

  1. Mając 10 liczb, wypisz te, które są idealnymi kwadratami.
  2. Mając 10 liczb, znajdź ich produkt.Zrób schemat blokowy i program.
  3. Mając 10 liczb, znajdź sumę liczb parzystych.Zrób schemat blokowy i program.
  4. Mając 10 liczb, znajdź liczbę ujemnych.Zrób schemat blokowy i program.
  5. Biorąc pod uwagę n liczb rzeczywistych. Znajdź maksimum i minimum.Zrób schemat blokowy i program.
  6. Biorąc pod uwagę n liczb rzeczywistych. Znajdź średnią arytmetyczną wszystkich elementów.Zrób schemat blokowy i program.
  7. Biorąc pod uwagę n liczb rzeczywistych. Znajdź średnią arytmetyczną elementów ujemnych i dodatnich.Zrób schemat blokowy i program.
  8. Biorąc pod uwagę n liczb naturalnych. Znajdź sumę i iloczyn elementów, które są wielokrotnościami 3 i 5.Zrób schemat blokowy i program.
  9. Biorąc pod uwagę n liczb naturalnych. Wycofać te liczby, których wartości są potęgami dwójki (1, 2, 4, 8, 16, ...).Zrób schemat blokowy i program.
  10. Biorąc pod uwagę n liczb naturalnych. Wycofać te liczby, których wartości znajdują się w segmencie.Zrób schemat blokowy i program.
  11. Biorąc pod uwagę n liczb naturalnych. Wyświetl te liczby, których wartości są kwadratami pewnej liczby.Zrób schemat blokowy i program.
  12. Biorąc pod uwagę liczbę naturalną n. Znajdź n 2.Zrób schemat blokowy i program.
  13. Biorąc pod uwagę liczby naturalne a, n. Znajdź n.Zrób schemat blokowy i program.
  14. Biorąc pod uwagę liczbę naturalną n. Określ jego pojemność, zwiększ najbardziej znaczącą cyfrę liczby o 2
  15. Biorąc pod uwagę liczbę naturalną n. Zamień pierwszą i ostatnią cyfrę numeru
  16. Biorąc pod uwagę liczbę naturalną n. Cyfry liczby będące wielokrotnościami 2 są zastępowane przez 0.
  17. Biorąc pod uwagę liczbę naturalną n. Cyfry liczby będące wielokrotnościami 3 są zastępowane przez 1.
  18. Biorąc pod uwagę liczbę naturalną n. Oblicz iloczyn (2n-1)*(3n-1)*(4n-1)*...*(10n-1).Zrób schemat blokowy i program.
  19. Oblicz sumę 2+4+6+...+100.Zrób schemat blokowy i program.
  20. Dana liczba naturalna n, rzeczywista x. Oblicz iloczyn x+x/2+x/3+...+x/n.Zrób schemat blokowy i program.
  21. Biorąc pod uwagę liczbę naturalną n. Oblicz P=(1-1/2)(1-1/3)...(1-1/n), gdzie n>2.Zrób schemat blokowy i program.
  22. Biorąc pod uwagę liczbę naturalną n. Oblicz P=(1+x)/n+(2+x)/(n-1)+...+(n+x)/1.Zrób schemat blokowy i program.
  23. Biorąc pod uwagę n liczb naturalnych. Oblicz sumę szeregu1+x/1!+x 2 /2!+x 3 /3!+...+x n/n!. Zrób schemat blokowy i program.

Instrukcja dla pętli implementuje strukturę algorytmiczną pętla z parametrem(lub pętla z licznikiem). Pętla for jest używana, gdy w programie, przed wykonaniem instrukcji pętli, liczba kroków tej pętli staje się znana (lub z góry określona). Na schemacie blokowym instrukcja for jest przedstawiona w następujący sposób:

Składnia:

Do ( inicjalizacja; stan; modyfikacja) ( Instrukcje dotyczące pętli; )

Jeśli w ciele pętli jest jedna instrukcja, to ( ) można pominąć. Zmienna parametru cyklu (licznik) może być dowolnego typu numerycznego. To sprawia, że ​​pętla for C++ jest tak samo wszechstronna jak pętla while. W sekcji modyfikacji najczęściej używana jest operacja przyrostu lub prefiksu inkrementacji (lub dekrementacji), ale można użyć dowolnego wyrażenia przypisania, które zmienia wartość parametru pętli. Pętla działa tak:

  • Na początku następuje opis i inicjalizacja zmiennej licznika.
  • Następnie sprawdź warunek: jeśli wyrażenie ma wartość PRAWDA, będzie iteracja
  • Po wykonaniu instrukcji ciała pętli, wartość licznika jest modyfikowana

Notatka: w C++ regułą jest tworzenie opisu zmiennej licznika w nagłówku pętli. Ale nie jest to konieczne, zwłaszcza jeśli planujesz zainicjować kilka zmiennych w sekcji inicjalizacji, jak zaimplementowano w Programie 9.2. Jednak użycie deklaracji zmiennej licznika w nagłówku pętli skutkuje deklaracją zmiennej lokalnej, która jest automatycznie niszczona po zakończeniu pętli. Dlatego, o ile nie jest to absolutnie konieczne, opis zmiennej licznika poza pętlą for nie powinien być wykonywany.
Podczas działania pętli for nie zaleca się zmiany operandów w wyrażeniach nagłówka pętli — prowadzi to do różnego rodzaju błędów! Ale wartości zmiennych (lub stałych), w tym zmienne wartości(licznik), możesz użyć. Rozważ klasyczny przykład.

Program 9.1 Biorąc pod uwagę liczbę naturalną N. Wydrukuj wszystkie dzielniki tej liczby.

#włączać << "N = "; cin >>N; dla (int i = 2; i< N / 2; i++) { if (N % i == 0) cout << i << " "; } return 0; } N = 16000 2 4 5 8 10 16 20 25 32 40 50 64 80 100 125 128 160 200 250 320 400 500 640 800 1000 1600 2000 3200 4000

Używanie instrukcji continue w pętli for

Używając instrukcji continue w pętli for, należy wziąć pod uwagę specyfikę działania tej pętli:

  • Oświadczenia następujące po kontynuacji zostaną pominięte
  • Następnie licznik jest modyfikowany.
  • Przejście do następnej iteracji (w przeciwnym razie sprawdzenie warunku)

Pokażmy to na przykładzie: int main() ( for (int i = 1; i< 20; i++) { if (i % 2 == 0) continue; cout << i << " "; } 1 3 5 7 9 11 13 15 17 19

Notatka. Uwaga: chociaż wyprowadzanie liczb według warunku jest pomijane, licznik jest zwiększany. Ten przykład służy wyłącznie do celów ilustracyjnych, nie należy programować pętli w ten sposób! Ten problem lepiej rozwiązać w następujący sposób:

int main() ( for (int i = 1; i< 20; i += 2) cout << i << " ";

Wiele wyrażeń w sekcji inicjalizacji i modyfikacji

Jak zauważyliśmy wcześniej, w nagłówku oświadczenia for powinny znajdować się trzy sekcje. Wyrażenia w tych sekcjach można pominąć, ale nie można pominąć „;”. . W końcu możesz tylko odejść; . Tytuł w formie:

Do (;;) ( ... )

jest nagłówkiem „nieskończonej” pętli. (Wyjście z pętli musi być zaprogramowane wewnątrz ciała pętli).
C++ obsługuje wiele wyrażeń w sekcjach inicjowania i modyfikacji nagłówka instrukcji for. W takim przypadku warunkiem kontynuacji cyklu musi być jeden!
Na przykład. Stwierdzenie problemu: Oblicz silnię liczby nieprzekraczającej 20.
Program 9.2

#włączać używając standardowej przestrzeni nazw; int main() ( unsigned long long n; int i, k; cout<< "k = "; cin >>k; // 0<= k <= 20 for(n = 1, i = 1; i <= k; n *= i, ++i); cout << k << "! = " << n << endl; return 0; } k = 20 20! = 2432902008176640000

Notatka: zauważ, że strumień wyjściowy w linii 12 nie odnosi się do ciała pętli! (Na końcu tytułu - ;). Tak więc ta pętla ma w ciele pustą instrukcję, a wszystkie wyrażenia są oceniane w nagłówku. Program 9.2 poprawnie oblicza silnię liczby od 0 do 20.

Pętla w oparciu o zakres

Aby przejść przez elementy tablicy lub kontenera, musisz wykonać ten sam rodzaj akcji, używając niewygodnego kodu. Aby uprościć pracę z kontenerami w C++, istnieje specjalna forma pętli for - oparta na zakresie for (loop na podstawie zasięgu lub zakres dla).
Składnia:

Do ( ogłoszenie : nazwa_sekwencji) instrukcja_pętli

Korzystanie z zakresu opartego na na przykładzie tablicy C:
Program 9.3

#włączać używając standardowej przestrzeni nazw; int main() ( int x ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ); for (auto & s: x) ( cout<< s << " "; } return 0; }

Aby zmienić elementy tablicy, zmienna s musi być zmienną referencyjną (jak w powyższym przykładzie). Jeśli zmienna nie jest referencją, dane zostaną skopiowane. W przypadku automatycznego wnioskowania o typie w tej pętli używany jest specyfikator auto. for ma ograniczenia dotyczące pracy z tablicami dynamicznymi: nie obsługuje zmiany rozmiaru tablicy, ponieważ zawiera stały wskaźnik końca tablicy. Kiedy mamy do czynienia z tablicami, które mają stały rozmiar, zasięg for jest świetną i bezpieczną alternatywą dla zwykłego for .

Zagnieżdżone dla pętli

Podobnie jak inne instrukcje pętli, for obsługuje strukturę zagnieżdżonych pętli. Używanie zagnieżdżonych pętli for do organizowania danych wejściowych i wyjściowych tablic dwuwymiarowych jest znacznie bardziej zwarte niż użycie pętli while.
Jednak podczas przechodzenia przez takie tablice należy unikać używania instrukcji if. Często zadanie można zrealizować bardziej racjonalnie, manipulując indeksami (zmiennymi pętli i oraz j). To znaczy uzależnić zmianę jednego indeksu od wartości drugiego. Rozważmy dwa przykłady.
Program 9.4 Mając macierz kwadratową o rozmiarze n, której elementy są równe 0. Wypełnij jedynkami elementy poniżej i na głównej przekątnej.

#włączać używając standardowej przestrzeni nazw; int main() ( int n; cout<< "n = "; cin >>n; intmas[n][n]; // Wypełnij zerami for(int i = 0; i< n; i++) for(int j = 0; j < n; j++) mas[i][j] = 0; // Реализация for(int i = 0; i < n; i++) for(int j = 0; j <= i; j++) mas[i][j] = 1; // Вывод for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout.width(2); cout << mas[i][j]; } cout << "\n"; } return 0; } n = 10 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1

Program 9,5 Napisz program, który wypełni tablicę liczbami trójkąta Pascala i wypisze tę tablicę. Trójkąt Pascala wygląda tak:


Trójkąt ten ma jedynki u góry i po bokach (w programie 9.5 trójkąt jest "położony na bok" - boki trójkąta: pierwsza kolumna i główna przekątna). Każda liczba jest równa sumie dwóch liczb powyżej niej. Linie trójkąta są symetryczne względem osi pionowej i zawierają współczynniki dwumianowe.

#włączać używając standardowej przestrzeni nazw; int main() ( int n; cout<< "n = "; cin >>n; pass[n][n]; dla (int i = 0; i< n; i++) for (int j = 0; j < n; j++) pas[i][j] = 0; pas = 1; for (int i = 1; i < n; i++) { pas[i] = 1; for (int j = 1; j <= i; j++) { pas[i][j] = pas + pas[j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { cout.width(4); cout << pas[i][j]; } cout << "\n"; } return 0; } n = 12 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1

pytania
  1. Czy instrukcję pętli for można zastąpić instrukcją pętli while w programie? Czy zawsze można to zrobić?
  2. Kiedy lepiej używać instrukcji for do zapętlania? podczas gdy?
  3. Czy w nagłówku instrukcji for możliwe są następujące wyrażenia: a) for (;a > b && !(a % 2);) b) for (a > b;;) c) for (;;i = 0) d) dla ( ;i = 0;) e) dla (;;i++, --b) f) dla (--i;;) g) dla (b = 0; b != a;) ?
  4. Zmienna i jest parametrem pętli zewnętrznej, a j jest parametrem pętli zagnieżdżonej. Czy zmienna j będzie dostępna w zewnętrznej pętli? w zagnieżdżonej pętli?
Podręcznik
Praca domowa
  1. Tył 29. Napisz program, który wprowadza liczby naturalne a oraz b, a wyświetlacz pokazuje wszystkie liczby pierwsze z zakresu od a zanim b(pomysł na algorytm Program 8.5)
  2. Tył 30. Liczba doskonała to liczba równa sumie wszystkich jej dzielników mniejszej od niej (na przykład liczba 6 = 1 + 2 + 3). Napisz program, który przyjmuje liczbę naturalną N i określa, czy N jest idealne.
  3. Napisz program, który wyświetla kwadratową tablicę liczbową n x n, która wygląda tak dla n = 10: 1 * * * * * * * * * * 2 * * * * * * * * * * 3 * * * * * * * * * * 4 * * * * * * * * * * 5 * * * * * * * * * * 6 * * * * * * * * * * * 7 * * * * * * * * * * * 8 * * * * * * * * * * 9 * * * * * * * * * * * 10
Literatura
  1. Laforet R. Programowanie obiektowe w C++ (4th ed.). Piotr: 2004
  2. Prata, Szczepan. Język programowania C++. Wykłady i ćwiczenia, wyd. 6: Per. z angielskiego. - ŚRODEK. William, 2012
  3. Lippman B. Stanley, Josy Lajoye, Barbara E. Moo. Język programowania C++. Kurs podstawowy. Wyd. 5. M: LLC „I. D. Williamsa”, 2014
  4. Elline A. C++. Od lamera do programisty. Petersburg: Piotr, 2015
  5. Schildt G. C++: Kurs podstawowy, wyd. M.: Williams, 2010



W Turbo Pascalu szczególne miejsce zajmują cykle. Rozpoczynają naukę natychmiast po wypracowaniu umiejętności przekazywania informacji wejściowych i wyjściowych na ekranie. W końcu większość zadań sprowadza się do tego, że cykle z parametrem i inne konstrukcje ułatwiają pisanie i działanie określonego bloku programu.

Odmiany cykli

W sumie istnieją trzy odmiany:

  • z parametrem
  • z warunkiem wstępnym
  • z warunkiem końcowym.

Pętle z parametrem, inaczej zwanym For … to … do lub For … downto …. zrobić, wielokrotnie powtarzać określoną sekwencję czynności. W zasadzie inne odmiany są używane w tym samym celu, tylko w pętli for liczba kroków jest z góry znana.

W pozostałych dwóch konstruktach (While i Repeat) liczba iteracji jest początkowo nieznana. Dlatego podczas studiowania zadania konieczne jest już zrozumienie, który cykl będzie używany.

Podstawowe definicje na ten temat

Pętle z parametrami to wiele iteracji. Licznik jest głównym wskaźnikiem, za pomocą którego wykonywana jest dana konstrukcja. Granice interwału pokazują granice, w których zostaną wykonane określone iteracje. Nawiasem mówiąc, absolutnie nie jest konieczne, aby wartość początkowa była równa 1. Użytkownik niezależnie ustala obie granice przedziału. Treść pętli to zestaw poleceń, dla których określono już liczbę powtórzeń.

Pojęcie „pętli z parametrami” oznacza, że ​​w tej konstrukcji sprawdzany jest warunek, po którym wykonywany jest zestaw iteracji. Licznik rośnie (lub maleje) i wszystko się powtarza. Treść pętli będzie wykonywana, dopóki warunek będzie spełniony.

Dla ... to ... zrobić: algorytm pracy, składnia

Jak już wspomniano, cykle z parametrem są używane w zadaniach, w których wskazany jest „przedział”, w którym należy pracować. Może to być więc tablica liczb, dni tygodnia, wiersze wiersza itp.

Istnieją 2 rodzaje konstrukcji: zwiększanie licznika i zmniejszanie go. Pierwsza struktura zostanie napisana w następujący sposób:

dla zmienna wychodząca := granica 1 do granica 2 robić

ciało pętli;

Tutaj: nr ref. zmienny zadeklarowane przez użytkownika na początku programu lub bloku; granica 1 i granica 2- początkowa i końcowa wartość przedziału; w ciało cykl określa zestaw akcji do wykonania przez program. Należy pamiętać, że jeśli w ciele pętli znajduje się tylko 1 komenda, to nawiasy operator begin...end można pominąć. W tej wersji projektu licznik, a mianowicie<исх.переменная>, będzie się zwiększać stopniowo o 1.

dla zmienna wychodząca:= granica 1 aż do granica 2 robić

ciało pętli;

Oto ref. zmienna będzie się zmniejszać w przyrostach o 1.

Schemat pętli z parametrem For ... to ... do będzie wyglądał następująco:

  • Ustawiana jest wartość górnej granicy przedziału, tj. granica 2.
  • Zmienna źródłowa wartość parametru jest przypisana granica 1.
  • Warunek jest sprawdzany: surowa zmienna ≤ granica 2.
  • Po otrzymaniu wyniku Prawdziwe (Prawdziwe) wykonywana jest treść pętli.
  • Licznik jest zwiększany o 1.
  • Kroki 3-5 są wykonywane dokładnie do momentu spełnienia warunku: zmienna źródłowa > limit 2. Jak tylko to się stanie, pętla wychodzi, a kontrola jest przekazywana do polecenia następującego po tej konstrukcji.

W For ... downto ... do algorytm pracy jest podobny do powyższego, z wyjątkiem kilku punktów:

  • W trzecim akapicie sprawdzany jest warunek: zmienna źródłowa ≥ limit 2.
  • W piątym wierszu algorytmu licznik jest zmniejszany o 1.
  • W szóstym akapicie polecenia 3-5 będą wykonywane do momentu spełnienia warunku: zmienna wychodząca< граница 2.

Wszystko inne jest podobne w obu algorytmach pracy.

Schemat blokowy pętli z parametrem

Pętle z parametrem mają następującą postać schematu blokowego (choć zostało to już przedstawione powyżej). Tutaj również pokazano uproszczoną organizację projektu.

Podstawowe wymagania dla cyklu z parametrem

Pętle z parametrami wymagają określonych warunków.

  • Licznik i granice zakresu (tj. zmienna źródłowa, granica 1 i granica 2) muszą być tego samego typu danych. Jeśli istnieje tylko zgodność między wartością początkową i końcową segmentu a oryginalną zmienną, program może zachowywać się niepoprawnie, ponieważ granice zostaną przekonwertowane zgodnie z typem danych oryginalnego parametru.
  • Typ danych, do którego muszą należeć wartości parametrów, musi być liczbą całkowitą. Zdecydowanie odradza się używanie prawdziwego typu.
  • Niepożądana jest zmiana wartości początkowego parametru zmiennej w ciele pętli. W przeciwnym razie użytkownik nie będzie w stanie śledzić ewentualnych błędów, które się pojawiły.
  • W przeciwieństwie do innych rodzajów pętli, w For … to … do lub For … downto … do krok nie może zmienić się na parametr inny niż 1.

Turbo Pascal: jak wyrwać się z pętli

Dość często pojawiają się problemy, w których występuje pętla, tzn. sprawdzany warunek jest zawsze spełniony. Procedura przerwania pomaga wyjść z pętli z warunkiem wstępnym, warunkiem końcowym, parametrem. Oznacza to, że ich praca kończy się przed terminem.

Pętle parametrów Pascala (których programowanie zakłada „wieczną” słuszność warunku) można zatrzymać za pomocą Kontynuuj. Tutaj praca przebiega następująco: bieżąca iteracja kończy wykonywanie przed terminem, sterowanie jest przekazywane do następnego polecenia, ale bez wychodzenia z pętli.

Procedura Exit jest niezbędna do zakończenia pracy określonego bloku w kodzie programu. Jest on wywoływany wewnątrz procedury (funkcji) iw tym samym momencie wykonanie tego "kawałka" natychmiast się zatrzymuje. Jeżeli Exit znajduje się w głównym bloku programu, to kończy pracę.

Procedura Halt sprowadza zasadę działania do następującej: program kończy się całkowicie.

Przykłady zadań z rozwiązaniem

Po zapoznaniu się z tematem „Pętle z parametrem w Pascalu” przydatne będzie dla użytkownika najpierw przestudiowanie przykładów, a następnie nauczenie się samodzielnego pisania kodu. Proste zadania pomagają przyszłemu programiście poznać teorię w praktyce, a następnie z powodzeniem ją zastosować. W temacie „Pętle z parametrem” można znaleźć przykłady problemów z rozwiązaniem zarówno łatwe, jak i złożone. Oto 3 zadania, w których analizowane są algorytmy pracy oraz podawane są wyjaśnienia i komentarze do każdego rozwiązania.

Zadanie 1

Dana dwuwymiarowa tablica liczb naturalnych z zakresu , dobrana losowo. Znajdź liczbę wszystkich liczb dwucyfrowych, których suma cyfr jest wielokrotnością 2.

Algorytm działania:

  1. Utwórz dwuwymiarową tablicę.
  2. Sprawdź każdy numer pod kątem zgodności z warunkami:

a) jeśli 9< Х < 100, то разделить его нацело на 10 посредством div;

b) wyodrębnij drugą cyfrę liczby dzieląc przez mod;

c) zsumuj wyróżnione liczby;

d) podziel przez mod podaną sumę przez 2;

e) jeśli wynik wynosi 0, licznik jest zwiększany o 1.

Zadanie 2

Biorąc pod uwagę jednowymiarową tablicę elementów całkowitych. Znajdź liczbę liczb dodatnich.

Algorytm działania:

  1. Utwórz tablicę elementów całkowitych generowanych przez randomize.
  2. Dołącz IF do pętli z parametrem, który sprawdzi dany element pod kątem zgodności z warunkiem: X>0.
  3. Jeśli warunek jest spełniony, licznik jest zwiększany o 1.
  4. Po pętli wynikowa wartość licznika powinna zostać wyświetlona na ekranie.

Dane w nawiasach () to komentarze. W linii 11 możesz wyświetlić tablicę na ekranie na dwa sposoby: zostaw spację między liczbami lub przydziel określoną liczbę komórek dla każdego elementu (w tym przypadku jest ich 5).

W linii 12. zmienną licznika można również zwiększyć na dwa sposoby: albo dodać 1 do poprzedniej wartości, albo użyć standardowej funkcji Inc.

Zadanie 3

Biorąc pod uwagę macierz kwadratową. Znajdź liczbę elementów dodatnich na głównej przekątnej.

Wyjaśnienia:

W tablicy liczb główna przekątna rozciąga się od lewego górnego rogu do prawego dolnego rogu. Jego osobliwością jest to, że indeksy wierszy i kolumn są takie same. Dlatego wystarczy zorganizować 1 cykl, aby przejść przez linie bez iteracji po pozostałych elementach.

Algorytm działania:

  1. Utwórz macierz kwadratową.
  2. Ustaw zmienną odpowiedzialną za zliczanie elementów dodatnich na „0”.
  3. Wykonaj cykl, aby stworzyć kwadratową matrycę.
  4. Zorganizuj pętlę, aby sprawdzić warunek: jeśli liczba na głównej przekątnej jest >0, licznik jest zwiększany o 1.
  5. Po zakończeniu pętli wyświetl wartość zmiennej przechowującej liczbę elementów dodatnich na ekranie.

Konfrontacja dwóch języków programowania: C i Turbo Pascal

Z reguły szanujący się programista zna kilka języków. Na przykład może to być C++, Turbo Pascal, Delphi, Java itp. Sprzeciw obu z nich został wyraźnie wyrażony już w latach 80-tych. (C i turbopascal). Pod koniec XX wieku tę samą walkę zaobserwowano między C++ a Javą.

W przestrzeni wirtualnej wśród trzech tuzinów języków programowania można wyróżnić trzy najjaśniejsze pary, których opozycja zadziwiła największe umysły cyberprzestrzeni: Algol-60 i Fortran, Pascal i C, Java i C++. Oczywiście te odczucia są subiektywne, ale w pewnym momencie jeden z pary był liderem. Wynikało to z wymagań branży i zapotrzebowania na konkretny produkt programowy. W latach 70. Fortran „rządził światem”, w latach 80. – Turbo Pascal, w latach 90. – C++. Oczywiście żaden z nich „nie umarł”. Zamiast tego przekształciły się w ulepszone produkty programowe.

Studiując języki programowania, zauważysz, że w niektórych tematach składnia jest podobna. Tak więc pętle z parametrem w C są podobne do podobnych konstrukcji w Pascalu, z wyjątkiem niektórych punktów.

Co ciekawe, twórcy Turbo Pascala (Old World) wykorzystali wyniki prac amerykańskich naukowców, podczas gdy w Nowym Świecie aktywnie zastosowali wyniki badań europejskich specjalistów. W Europie programiści bardziej opowiadają się za czystością i zwartością języków programowania, podczas gdy amerykańskie umysły mają tendencję do wykorzystywania nowomodnych trendów w pisaniu kodu.

Pętla z parametrem ma następujący format:

for (inicjalizacja; wyrażenie; modyfikacje) instrukcja;

Inicjalizacja służy do deklarowania i przypisywania wartości początkowych wartościom użytym w pętli. W tej części możesz napisać kilka instrukcji oddzielonych przecinkiem (operacja „wykonywanie sekwencyjne”), na przykład tak:

dla (int i = 0, j = 2; ...

dla (k=1, m=0; ...

Zakres zmiennych zadeklarowanych w części inicjującej pętlę to pętla 1 . Inicjalizacja jest wykonywana raz na początku wykonywania pętli.

Wyrażenie definiuje warunek wykonania pętli: jeśli jej wynik, rzutowany na bool , jest prawdziwy, pętla jest wykonywana. Pętla z parametrem jest zaimplementowana jako pętla z warunkiem wstępnym.

Modyfikacje są wykonywane po każdej iteracji pętli i zwykle służą do zmiany parametrów pętli. W części dotyczącej modyfikacji możesz wpisać kilka operatorów oddzielonych przecinkami. Proste lub złożone operator jest ciałem pętli. Dowolną część instrukcji for można pominąć (ale średniki należy pozostawić na miejscu!).

Przykład (operator obliczający sumę liczb od 1 do 100):

dla (Int i = 1, s = 0; 1<=100; i++) s += i;

Przykład (program wyświetla tabelę wartości funkcji y \u003d x 2 +1 we wprowadzonym zakresie):

#włączać

pływak Xn, Xk, Dx, X;

printf("Wprowadź zakres i przyrost argumentu: ");

scanf("%f%f%f", &Xn, &Xk, &Dx);

printf("|X|Y|\n");

dla (X = Xn; X<=Xk; X+=Dx)

printf (" | %5.2f | %5.2f |\n", X*X + 1);

Przykład (program znajduje wszystkie dzielniki liczby całkowitej dodatniej):

#włączać int main()(

int num, half, div;

Cout<< “\n Введите число: "; cin >>liczba;

for (połowa = liczba / 2, dz = 2; dz<= half; div++)

if (!(num %div))cout<< div <<"\n";

Ostatnie dwa przykłady wykonują te same akcje, co przykłady dla pętli z warunkiem wstępnym, ale są napisane bardziej zwięźle i przejrzyście: wszystkie akcje związane ze sterowaniem pętlą są zlokalizowane w jej nagłówku.

Dowolną pętlę while można rzutować na jej odpowiednik pętli for i odwrotnie, w następujący sposób:

dla (b1: b2; b3) operatora b1;

natomiast (b2)( stwierdzenie; b3;)

Wspólny błędy podczas programowania cykli - użycie niezainicjowanych zmiennych w treści pętli i nieprawidłowe wprowadzenie warunku wyjścia z pętli.

q sprawdzić, czy wszystkim zmiennym znajdującym się po prawej stronie instrukcji przypisania w ciele pętli przypisano wcześniej wartości początkowe (a także czy jest możliwe wykonanie innych instrukcji);


q sprawdzić, czy przynajmniej jedna zmienna, która jest uwzględniona w warunku wyjścia pętli, zmienia się w pętli;

q zapewnić wyjście awaryjne z pętli po osiągnięciu określonej liczby iteracji;

q i oczywiście nie zapominaj, że jeśli chcesz wykonać więcej niż jedną instrukcję w ciele pętli, musisz ująć je w nawiasy klamrowe.

Instrukcje pętli są wymienne, ale niektóre rekomendacje wybierając najlepsze w każdym przypadku.

Instrukcja do while jest zwykle używana, gdy pętla musi zostać wykonana przynajmniej raz (na przykład, jeśli w pętli znajdują się dane wejściowe).

Operator podczas jest wygodniejszy w użyciu w przypadkach, gdy liczba iteracji nie jest z góry znana, nie ma oczywistych parametrów pętli lub wygodniej jest zapisać modyfikację parametru nie na końcu ciała pętli.

Instrukcja for jest preferowana w większości innych przypadków (zdecydowanie do organizowania cykli z licznikami).

Ogólnie rzecz biorąc, dzisiaj dowiemy się bardziej szczegółowo o każdym z cykli w Pascalu i zobaczymy, jak są ustawione. będziemy demontować pętla while z warunkiem wstępnym, dla pętli z parametrem oraz powtarzaj - aż do pętli z warunkiem końcowym.

1. Pętla z parametrem w Pascalu - FOR

Pętla FOR ustawia pewien warunek, zgodnie z którym program będzie działał, dopóki nie zostanie wykonany, powiedzmy, że musimy zapętlić program 5 (lub n) razy, to jest to łatwe do zrobienia za pomocą tej pętli. Pętla FOR ma charakterystyczną cechę - licznik, który zwykle oznaczany jest literą i lub j.

Wygląd cyklu z parametrem w paskalach:

for i:= 1 do n wykonaj // przypisz i najpierw do jednego, potem do dwóch, trzech, ..., n

Po pierwszym przejściu przypisujemy 1 do zmiennej i, po drugim przejściu przypisujemy 2 i tak dalej, aż dojdziemy do n. do jest do ... w porządku rosnącym, istnieje również do - do ... w porządku malejącym.

Schemat blokowy cyklu z parametrem:

2. Pętla z warunkiem wstępnym w Pascalu - PODCZAS

Operator pętli z warunkiem wstępnym wykonuje akcje nieznaną liczbę razy. Pętla kończy się, jeśli jakieś wyrażenie logiczne lub jego wynik jest fałszywy. Ponieważ poprawność wyrażenia logicznego jest sprawdzana na początku, ciało pętli może nie zostać wykonane ani razu.

Struktura pętli z warunkiem wstępnym:

PODCZAS rozpocząć koniec;

Wyrażenie logiczne, którego prawdziwość sprawdzana jest na początku wykonania operatora cyklicznego;

Wszelkie wykonywalne instrukcje językowe.

Kolejność wykonania pętli:

Gdy warunek jest prawdziwy, wykonywana jest treść pętli. Gdy tylko warunek stanie się fałszywy, pętla zostaje zakończona.

Schemat blokowy cyklu z warunkiem wstępnym:


Uwaga: prostokątne bloki pokazują każdą akcję, która jest wykonywana w cyklu lub po nim (krok cyklu), owale pokazują początek lub koniec całego programu lub jego części. Główną rolę w tym schemacie blokowym odgrywa jego centralna część.

Przykład:

Zadanie: obliczyć sumę szeregu 1+1,5+2+2,5+3+3,5+ .. + 30

program przykładowy;

varsum:rzeczywiste; n:rzeczywista; POCZĄTEK suma:=0; n:=1; podczas gdy n

3. Pętla z warunkiem końcowym - Powtarzaj - do.

Ten operator jest podobny do operatora pętli z warunkiem wstępnym, ale różni się od niego tym, że warunek jest sprawdzany po wykonaniu treści (akcji) pętli. Zapewnia to wykonanie co najmniej raz, w przeciwieństwie do poprzednio analizowanych pętli.

Zauważ, że ta instrukcja pętli zakłada obecność kilku instrukcji w ciele pętli, to znaczy, że możesz wykonać kilka akcji, więc słowa serwisowe Begin i End nie są potrzebne.

Sekwencja instrukcji zawartych w ciele pętli jest wykonywana jeden raz, po czym sprawdzany jest warunek zapisany po słowie serwisowym Do. Jeśli warunek nie jest spełniony, pętla się kończy. W przeciwnym razie treść pętli jest powtarzana jeszcze raz, po czym warunek jest ponownie sprawdzany.

Schemat blokowy cyklu z warunkiem końcowym:

Format zapisu, struktura cyklu:
POWTARZAJ, AŻ ;

Przykład:

Test programu2; Warb:Prawdziwy; Rozpocznij b:=100; Powtórz b:=b/2; do czasu

Wnioski:

1. Pętla z parametrem wykorzystuje zmienną zwaną parametrem pętli lub licznikiem. Przed wykonaniem pętli parametr (licznik) jest ustawiany na wartość początkową. Po wykonaniu kroku cyklu wartość parametru jest zwiększana o jeden. Pętla trwa, dopóki parametr nie osiągnie swojej końcowej wartości, która jest określona po to (downto).

2. Pętla z warunkiem wstępnym jest wykonywana do momentu, gdy warunek wykonania stanie się fałszywy i jest kontynuowana, jeśli warunek jest prawdziwy.

3. Pętla z warunkiem końcowym jest wykonywana do momentu spełnienia warunku, jeśli warunek jest fałszywy, pętla jest kontynuowana.