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 przyrostka 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. W przypadku tablic, które mają stały rozmiar, ranged 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



Witajcie drodzy czytelnicy! Tutaj dochodzimy do badania cykli. Cykle w Pascalu. Co to jest? Jak tego użyć? Do czego są potrzebne? Oto pytania, na które dzisiaj odpowiem.
Jeśli czytałeś, to wiesz, że istnieją trzy rodzaje algorytmów: liniowy, rozgałęziający i cykliczny. Wiemy już, jak zaimplementować algorytmy w Pascalu. Zacznijmy studiować ostatni typ algorytmów.
W Pascalu, podobnie jak w większości języków programowania, istnieją trzy typy konstrukcji pętli.

Każdy cykl składa się z treści i nagłówka. Treść pętli jest zbiorem powtarzających się instrukcji, a warunek jest wyrażeniem logicznym, w zależności od wyniku, którego pętla się powtarza.

Weźmy jeden problem, który rozwiążemy za pomocą różnego rodzaju cykli.

Zadanie 1. Wyświetl wszystkie cyfry od 1 do cyfry wprowadzonej z klawiatury.

While, czyli pętla z warunkiem wstępnym

Jak zapewne zrozumiałeś już z nazwy, podczas gdy to pętla, w której warunek pojawia się przed treścią. Co więcej, ciało pętli jest wykonywane wtedy i tylko wtedy, gdy warunek PRAWDA; jak tylko stanie się stan fałszywy

Chociaż ma format:

podczas gdy < условие> robić<оператор 1>; (Pa… zrób….)

Ta pętla jest odpowiednia tylko dla jednej instrukcji, jeśli chcesz użyć wielu instrukcji w swoim kodzie, powinieneś ująć je w nawiasy instrukcji - zaczynać oraz koniec;.

Rozwiązanie problemu.

Program example_while; zmienna i, N: liczba całkowita; (deklarowanie zmiennych) begin i:= 1; (Ustaw i na 1) readln(N); (Odczytaj ostatnią liczbę) podczas gdy i<= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

Powtórz, czyli pętla z warunkiem końcowym

Powtarzać- całkowite przeciwieństwo podczas gdy. Powtarzać to pętla, w której warunek występuje po ciele. Co więcej, jest wykonywany wtedy i tylko wtedy, gdy wynik warunku fałszywy;jak tylko wyrażenie logiczne stanie się PRAWDA, pętla zostaje zakończona.

Powtórzenie ma format:

powtarzać( powtarzać … )
<оператор 1>;
< оператор 2>;

aż do(zanim…) <условие>

Zaczynać oraz koniec nie wymagane.

Rozwiązanie problemu.

Przykład programu_powtórz; var i, N: integer;( zadeklaruj zmienne) begin i:= 1; (Ustaw i na 1) readln(N); ( Przeczytaj ostatnią liczbę ) powtórz ( nie ma potrzeby rozpoczynania i kończenia po powtórzeniu ) write(i, " "); (Wyświetlacz i) Inc(i); (Zwiększ i o jeden.) aż i = N + 1; (Na przykład i = 11 i N = 10. Pętla zatrzyma się, więc warunek stanie się spełniony.) end.

For, czyli pętla z parametrem

Do to pętla, w której ciało jest wykonywane określoną liczbę razy.

Istnieją dwa sposoby na napisanie tej pętli:

Pierwsza forma

dla<счетчик1> := <значение1>do<конечное_значение>robić<оператор1>;

<счетчик1>wzrośnie o 1.

<значение1>jest początkową wartością licznika. Może to być zmienna lub liczba.
<конечное_значение>: jak tylko wartość<счетчик1>stanie się więcej<конечное_значение>

Jeśli chcesz napisać kilka instrukcji w ciele pętli, użyj zaczynać oraz koniec.

I<счетчик1>, oraz<конечное_значение>, oraz<значение1>- zmienne całość rodzaj.

Najczęściej zmienna i jest używana jako licznik.

Druga forma

dla<счетчик2> := <значение2>aż do<конечное_значение>robić<оператор1>;

Po każdej iteracji wartość<счетчик2>zmniejszy się o 1.

<значение2>jest początkową wartością licznika.
<конечное_значение>: jak tylko wartość<счетчик2>stanie się mniej<конечное_значение>, pętla zostaje zakończona.

Dwie ważne uwagi:

  1. Pętla powtarza się tak długo, jak długo wartość licznika znajduje się w segmencie [wartość; wartość_końcowa].
  2. Zmień wartość licznika wewnątrz ciała to jest zabronione! Oto, co wyprowadza kompilator:

Rozwiązanie problemu:

Przykład programu_dla; zmienna i, N: liczba całkowita; rozpocznij czytanie (N); (przypuśćmy, że wpisaliśmy 10) for i:= 1 do N do write(i, " "); (liczba iteracji - 10 - 1 + 1 = 10) koniec.

Zgadzam się, ten kod jest prostszy i bardziej zwięzły niż wszystkie poprzednie. I cykl dla- cykl nie do końca zwyczajny, nie ma w nim warunku logicznego. Dlatego pętla z parametrem w programowaniu nazywana jest cukrem składniowym. Cukier składniowy to dodatki do składni języka programowania, które nie dodają nowych funkcji, ale czynią język bardziej przyjaznym dla człowieka.

Rozwiążmy kilka problemów.

Za 1. Podano liczby całkowite K i N (N > 0). Wyjście N razy liczba K.

Organizujemy prosty cykl od 1 do wymaganej liczby.

Program dla1; zmienna K, N, i: liczba całkowita; rozpocznij czytanie(K, N); dla i:= 1 do N napisz(K, " "); (Piszemy K oddzielone spacją) end.

Dla 2. < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

Ponieważ< B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.

Program dla2; var A, B, i, count: liczba całkowita; rozpocznij czytanie(A, B); dla i:= A do B napisz(i, " "); (zapisz liczby od najmniejszej do największej) count:= B - A + 1; (liczba liczb) napisane; write("Liczba liczb - ", liczba); koniec.

Dla9. Biorąc pod uwagę dwie liczby całkowite A i B (A< B). Найти сумму квадратов всех целых чисел от A до B включительно.

Organizujemy taki sam cykl jak w poprzednim zadaniu, ale jednocześnie sumujemy kwadraty wszystkich liczb. Aby obliczyć kwadrat, użyj funkcji.

Program dla9; zmienna A, B, i, S: liczba całkowita; rozpocznij czytanie(A, B); S:= 0; (PascalABC robi to automatycznie, ale jeśli masz inny kompilator, zalecamy ręczne ustawienie zmiennych na zero) dla i:= A do B do S:= S + Sqr(i); (dodaj wszystkie kwadraty) napisane; napisz("Suma kwadratów - ", S); koniec.

Dla13°. Podano liczbę całkowitą N (> 0). Znajdź wartość wyrażenia 1,1 - 1,2 + 1,3 - ... (N terminy, znaki naprzemiennie). Nie używaj operatora warunkowego.

Aby zmienić znak, w każdej iteracji pętli zmieniamy wartość zmiennej specjalnej na przeciwną.

Program dla13; zmienna N, A, i: liczba całkowita; S: prawdziwy rozpocznij Napisz("N = "); readln(N); S:= 1,1; O:= 1; (dodatnia pierwsza) dla i:= 2 do N do (wykonaliśmy już pierwszą iterację pętli, więc zaczynamy liczyć od 2) begin A:= -A; (Teraz ujemny) S:= S + A * (1 + i / 10); (dodaj) koniec; Zapis(S:5:1); (Podajmy jedną znajomość części ułamkowej) koniec.

Chociaż1°. Podano liczby dodatnie A i B (A > B). Na odcinku o długości A umieszczana jest maksymalna możliwa liczba odcinków o długości B (bez zakładek). Bez używania mnożenia i dzielenia znajdź długość niezajętej części segmentu A.

Za każdym razem odejmij B od A, aż A - B >= 0.

Program while1; zmienna A, B: liczba całkowita; rozpocznij czytanieln(A, B); podczas gdy (A - B) >= 0 do A:= A - B; (Podczas gdy różnica jest dodatnia, odejmujemy. Konieczne jest podanie wariantu o wielokrotności A i B, dlatego >=) write(A); koniec.

Chociaż4°.Podano liczbę całkowitą N (> 0). Jeśli jest to potęga 3, to wypisz True, jeśli nie, wypisz False.

Postępujemy w następujący sposób: podczas gdy N jest podzielne przez 3, dzielimy N przez 3. Wtedy, jeśli N = 1, liczba jest potęgą trzech; jeśli N<>1, to liczba nie jest potęgą trójki. Aby rozwiązać ten problem, musisz wiedzieć, co to jest i jak działają.

Program while4; zmienna N: liczba całkowita; rozpocznij czytanieln(N); podczas gdy N mod 3 = 0 do N:= N div 3; (Dopóki reszta z dzielenia przez trzy wynosi zero, podziel N przez 3) writeln(N = 1); (wyrażenie logiczne) koniec.

To wszystko na dzisiaj! Nie zapomnij częściej odwiedzać naszej strony i klikać przyciski znajdujące się przed komentarzami.

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.

Operator pętli z parametrem jest używany właśnie w takich przypadkach, gdy konieczne jest zorganizowanie pętli o zadanej liczbie powtórzeń

dla <параметр_цикла>:=<начальное_знач> do <конечное_знач> robić <оператор>;

dla <параметр_цикла>:=<конечное_знач> aż do <начальное_зна.> robić <оператор>;

Instrukcja, która jest treścią pętli, może być prosta lub złożona.

Parametr pętli, jak również zakres jego zmiany, może być tylko typu całkowitego lub wyliczanego.

Parametr jest opisany razem z innymi zmiennymi.

Krok pętli for jest zawsze stały i wynosi „1” lub „-1”.

Wyświetl pierwsze dziesięć dodatnich liczb całkowitych

zmienna i: liczba całkowita; //licznik jest wprowadzony

fori:=1to10do//gdy wartość licznika wynosi od 1 do 10, wykonaj następujące czynności

napisane(i); //wyjściowa wartość licznika

zmienna,suma:liczba całkowita;

suma:=0; //zerowanie wartości zmiennej

fori:=10to99do//wyliczanie dwucyfrowych liczb dodatnich

jeśli i mod 3=0 to //wielokrotność 3

suma:=suma+i; //suma poprzedniej wartości zmiennej i liczby odpowiadającej warunkowi

Wyświetl iloczyn pierwszych dziesięciu dodatnich liczb parzystych

zmienna,pr:liczba całkowita;

pr:=1; //przy znajdowaniu produktu wartość początkowa zmiennej to nie 0, ale 1

dla i:=1 do 10 do

jeśli i mod 2=0 to //określ parzystość

Biorąc pod uwagę dwie liczby całkowite A i B (A< B). Вывести в порядке возрастания все целые числа, расположенные между A и B (в том числе A и B), a также количество N этих чисел .

var i,pr: liczba całkowita;

k:=0; //wyzeruj wartość zmiennej, czyli liczbę

fori:=AtoBdo//wyliczanie liczb z podanego zakresu

napisane(i); //wyjście w porządku rosnącym

k:=k+1; // liczenie liczb

napisane(k); //wyjście kwoty następuje poza pętlą, ponieważ wydane raz

Wprowadź N różnych liczb. Znajdź średnią arytmetyczną wszystkich liczb.

Varn,i,a:liczba całkowita;

Dla i:=1 do N do

Writeln("średnia arytmetyczna= ",s/n:4:2);

Instrukcja Loop z while ... Wykonaj warunek

Instrukcja while ... do jest przeznaczona do implementacji pętli z warunkiem wstępnym.

Stan treści pętli while jest sprawdzany przed rozpoczęciem każdego kroku. Dlatego jeśli warunek nie zostanie spełniony natychmiast, treść pętli jest ignorowana, a sterowanie jest przekazywane operatorowi bezpośrednio po treści pętli.

Kontakt z operatorempodczas gdy ... nie tłumaczy się jako "pa... do zrobienia" i wygląda tak:

podczas gdy <условие> robić <оператор>

Pętla while implikuje następujący algorytm: gdy warunek jest prawdziwy, instrukcje ciała pętli są wykonywane.

Sam warunek może być stałą logiczną, zmienną lub wyrażeniem logicznym.

Podczas pisania pętli z warunkiem wstępnym należy pamiętać o następujących kwestiach.

    aby pętla miała kiedykolwiek szansę się zakończyć, zawartość jej ciała musi koniecznie wpływać na stan pętli.

    warunek musi składać się z poprawnych wyrażeń i wartości zdefiniowanych przed pierwszym wykonaniem treści pętli.

Jeśli warunek pętli jest fałszywy, pętla nigdy się nie wykona!

W większości programów istnieje potrzeba wielokrotnego wykonywania jakiejś instrukcji (lub bloku instrukcji). Do organizowania takich konstrukcji można użyć instrukcji Loop. Język programowania Pascal używa następujących typów instrukcji pętli: for, while, repeat (PascalABC.NET używa również operatora pętli foreach).

Blok instrukcji, który musi być wykonywany wielokrotnie, nazywany jest treścią pętli.

za oświadczenie w Pascal

Jeśli liczba powtórzeń ciała cykl jest znany z góry, następnie jest używany instrukcja pętli for, który jest również często określany jako instrukcja pętli z parametrem.

Instrukcja for składa się z dwóch części: ciała pętli i nagłówka, który ma na celu opisanie początkowej i końcowej wartości parametru loop, a także opcji jego zmiany.

W zależności od kierunku zmiany parametru pętli (wzrost – do lub spadek – dół) w Pascalu, operator pętli for można zapisać w jednej z dwóch postaci:

  • dla parametru := wartość_początkowa do wartość_końcowa do
  • operator;
  • dla parametru := wartość_początkowa w dół do wartość_końcowa do
  • operator;

Zmienna parametru pętli może przyjmować dowolny typ porządkowy. W takim przypadku wartość początkowa i końcowa muszą mieć typ zgodny z typem zmiennej parametru.

Rozważmy działanie pętli for.

Przed rozpoczęciem wykonywania instrukcji pętli obliczana jest wartość początkowa przypisana do zmiennej parametru oraz wartość końcowa. Następnie cyklicznie wykonywane są następujące operacje:

  1. Porównuje bieżącą wartość parametru z wartością końcową.
  2. Jeśli parametr warunku wartość_końcowa ma wartość true, wykonywana jest treść pętli, w przeciwnym razie instrukcja for kończy się, a sterowanie jest przekazywane do instrukcji następującej po pętli.

Uwaga: w języku Pascal parametr pętli niezależnie od wzrostu lub spadku zmienia się za każdym razem o jeden.

Zadanie. Wyświetl listę kwadratów liczb całkowitych od 10 do 1.

Rozwiązanie. W postawionym problemie zmniejsza się parametr cyklu.

(Fragment kodu programu)

  • dla i:= 10 do 1 do
  • napisane (i:2, " ", i * i);

Uwaga: jeśli konieczne jest użycie więcej niż jednej instrukcji w ciele pętli, wówczas używana jest instrukcja złożona (nawiasy operatorskie begin i end ).

Przykład 2. Znane są oceny kandydata z czterech egzaminów. Określ ilość zdobytych punktów.

Zadanie. Znane są oceny kandydata z czterech egzaminów. Określ ilość zdobytych punktów.

Rozwiązanie. Użyjemy operatora pętli z parametrami w programie, ponieważ znana jest liczba powtórzeń wykonanych czynności (wnioskodawca otrzymał dokładnie cztery oceny)

(Fragment kodu programu)

  • s:= 0;
  • dla i:= 1 do 4 do
  • zaczynać
  • readln(znak);
  • s:= s + znak;
  • pismo(e);