Návod pro smyčku implementuje algoritmickou strukturu smyčka s parametrem(nebo smyčka s počítadlem). Smyčka for se používá, když se v programu před provedením instrukcí smyčky zjistí počet kroků této smyčky (nebo je předem určen). Ve vývojovém diagramu je příkaz for znázorněn následovně:

Syntax:

Pro( inicializace; stav; modifikace) (Opakujte pokyny těla; )

Pokud je v těle smyčky jedna instrukce, pak ( ) lze vynechat. Proměnná parametru cyklu (počítadlo) může být libovolného číselného typu. Díky tomu je smyčka for C++ stejně všestranná jako smyčka while. V sekci modifikace se nejčastěji používá operace přírůstek (nebo dekrement) přípony nebo předpony, ale lze použít jakýkoli výraz přiřazení, který mění hodnotu parametru smyčky. Smyčka funguje takto:

  • Na začátku probíhá popis a inicializace proměnné čítače.
  • Dále zkontrolujte podmínku: má-li výraz hodnotu skutečný, dojde k iteraci
  • Po provedení instrukcí těla smyčky se hodnota čítače upraví

Poznámka: v C++ je pravidlem dělat popis proměnné čítače v hlavičce smyčky. To však není nutné, zvláště pokud plánujete inicializovat několik proměnných v sekci inicializace, jak je implementováno v programu 9.2. Použití deklarace proměnné čítače v hlavičce smyčky však vede k deklaraci lokální proměnné, která je po ukončení smyčky automaticky zničena. Proto, pokud to není nezbytně nutné, popis proměnné čítače mimo cyklus for by neměl být prováděn.
Zatímco cyklus for běží, nedoporučuje se měnit operandy ve výrazech záhlaví cyklu - to povede k nejrůznějším chybám! Ale hodnoty proměnných (nebo konstant), včetně měnitelné hodnoty(počítadlo), můžete použít. Zvažte klasický příklad.

Program 9.1 Je dáno přirozené číslo N. Vytiskněte všechny dělitele tohoto čísla.

#zahrnout << "N = "; cin >>N; for (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

Použití příkazu continue ve smyčce for

Při použití příkazu continue v cyklu for je nutné vzít v úvahu zvláštnosti fungování tohoto cyklu:

  • Výroky po pokračování budou přeskočeny
  • Poté je počítadlo upraveno.
  • Přechod na další iteraci (v opačném případě kontrola podmínky)

Ukažme si to na příkladu: 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

Poznámka. Poznámka: i když je výstup čísel podle podmínky přeskočen, počítadlo se zvýší. Tento příklad je pouze pro ilustraci, neměli byste takto programovat smyčku! Tento problém je lepší vyřešit následujícím způsobem:

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

Více výrazů v sekci inicializace a úpravy

Jak jsme uvedli dříve, v záhlaví příkazu for by měly být tři sekce. Výrazy v těchto sekcích lze vynechat, ale ";" vynechat nelze. . Koneckonců, můžete jen odejít; . Titulek ve tvaru:

Pro (;;) ( ... )

je směr „nekonečné“ smyčky. (Opuštění smyčky musí být naprogramováno uvnitř těla smyčky).
C++ podporuje více výrazů v inicializačních a modifikačních částech hlavičky příkazu for. V tomto případě musí být podmínka pokračování cyklu jedna!
Například. Problém: Vypočítejte faktoriál čísla nepřesahujícího 20.
Program 9.2

#zahrnout pomocí jmenného prostoru std; int main() ( bez znaménka dlouhé dlouhé 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

Poznámka: všimněte si, že výstupní proud na řádku 12 neodkazuje na tělo smyčky! (Na konci nadpisu - ;). Tato smyčka má tedy v těle prázdnou instrukci a všechny výrazy jsou vyhodnoceny v hlavičce. Program 9.2 správně vypočítá faktoriál čísla od 0 do 20.

Smyčka for založená na rozsahu

Chcete-li iterovat prvky pole nebo kontejneru, musíte provést stejný typ akcí při použití těžkopádného kódu. Pro zjednodušení práce s kontejnery v C++ existuje speciální forma cyklu for – rozsahová for (loop pro na základě rozsahu nebo rozsah pro).
Syntax:

Pro( inzerát : název_sekvence) loop_statement

Použití na základě rozsahu pro na příkladu C-pole:
Program 9.3

#zahrnout pomocí jmenného prostoru std; int main() ( int x ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ); for (auto &s: x) ( cout<< s << " "; } return 0; }

Aby bylo možné změnit prvky pole, musí být proměnná s referenční proměnnou (jako v příkladu výše). Pokud proměnná není odkaz, data se zkopírují. Pro automatické odvození typu se v této smyčce používá auto specifier. range-based for má omezení pro práci s dynamickými poli: nepodporuje změnu velikosti pole, protože obsahuje pevný ukazatel konce pole. Při práci s poli, která mají pevnou velikost, je ranged for skvělou a bezpečnou alternativou k běžnému for .

Vnořené pro smyčky

Stejně jako ostatní příkazy cyklů podporuje for strukturu vnořených cyklů. Použití vnořených smyček for k organizaci vstupu a výstupu dvourozměrných polí je mnohem kompaktnější než použití smyčky while.
Při procházení takových polí je však třeba se vyhnout použití příkazu if. Úkol lze často implementovat racionálněji manipulací s indexy (proměnné smyčky i a j). To znamená, aby byla změna jednoho indexu závislá na hodnotě druhého. Uvažujme dva příklady.
Program 9.4 Je dána čtvercová matice o velikosti n, jejíž prvky se rovnají 0. Vyplňte prvky pod a na hlavní diagonále jedničkami.

#zahrnout pomocí jmenného prostoru std; int main() ( int n; cout<< "n = "; cin >>n; intmas[n][n]; // Doplňte nulami 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 Napište program, který vyplní pole čísly Pascalova trojúhelníku a vypíše toto pole. Pascalův trojúhelník vypadá takto:


Tento trojúhelník má nahoře a po stranách jedničky (v programu 9.5 trojúhelník „leží na jeho straně“ – strany trojúhelníku: první sloupec a hlavní úhlopříčka). Každé číslo se rovná součtu dvou čísel nad ním. Čáry trojúhelníku jsou symetrické kolem svislé osy a obsahují binomické koeficienty.

#zahrnout pomocí jmenného prostoru std; int main() ( int n; cout<< "n = "; cin >>n; int pass[n][n]; for (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

Otázky
  1. Může být v programu příkaz cyklu for nahrazen příkazem cyklu while? Je to vždy možné?
  2. Kdy je lepší použít pro cyklování příkaz for? zatímco?
  3. Jsou v záhlaví příkazu for možné následující výrazy: a) pro (;a > b && !(a % 2);) b) pro (a > b;;) c) pro (;;i = 0) d) pro (;i = 0;) e) pro (;;i++, --b) f) pro (--i;;) g) pro (b = 0; b != a;) ?
  4. Proměnná i je parametr vnější smyčky a j je parametr vnořené smyčky. Bude proměnná j dostupná ve vnější smyčce? jsem ve vnořené smyčce?
Učebnice
Domácí práce
  1. Zadní 29. Napište program, který zadává přirozená čísla A a b a na displeji se zobrazí všechna prvočísla v rozsahu od A před b(nápad algoritmu Program 8.5)
  2. Zadní 30. Dokonalé číslo je číslo rovnající se součtu všech jeho dělitelů menších, než je ono samo (například číslo 6 = 1 + 2 + 3). Napište program, který vezme přirozené číslo N a určí, zda je N dokonalé.
  3. Napište program, který zobrazí n x n čtvercovou číselnou tabulku, která vypadá takto pro n = 10: 1 * * * * * * * * * * 2 * * * * * * * * * * 3 * * * * * * * * * * 4 * * * * * * * * * * 5 * * * * * * * * * * 6 * * * * * * * * * * * 7 * * * * * * * * * * * 8 * * * * * * * * * * 9 * * * * * * * * * * * 10
Literatura
  1. Laforet R. Objektově orientované programování v C++ (4. vydání). Petr: 2004
  2. Prata, Stephene. C++ programovací jazyk. Přednášky a cvičení, 6. vyd.: Per. z angličtiny. - M.: I.D. William, 2012
  3. Lippman B. Stanley, Josy Lajoye, Barbara E. Moo. C++ programovací jazyk. Základní kurz. Ed. 5. M: LLC „I. D. Williams“, 2014
  4. Elline A. C++. Od lamera k programátorovi. Petrohrad: Petr, 2015
  5. Schildt G. C++: Základní kurz, 3. vyd. M.: Williams, 2010



Dobrý den, milí čtenáři! Zde se dostáváme ke studiu cyklů. Cykly v Pascalu. co to je? Jak to použít? K čemu jsou potřeba? To jsou otázky, na které dnes odpovím.
Pokud jste četli, pak víte, že existují tři typy algoritmů: lineární, větvené a cyklické. Již víme, jak implementovat algoritmy v Pascalu. Začněme studovat poslední typ algoritmů.
V Pascalu, stejně jako ve většině programovacích jazyků, existují tři typy smyčkových konstrukcí.

Každý cyklus se skládá z těla a záhlaví. Tělo smyčky je sada opakujících se příkazů a podmínka je logický výraz v závislosti na výsledku, který se smyčka opakuje.

Vezměme si jeden problém, který budeme řešit pomocí různých typů cyklů.

Úkol 1. Zobrazte všechna čísla od 1 po číslo zadané z klávesnice.

Zatímco, nebo smyčka s předpokladem

Jak už jste asi pochopili z názvu, zatímco je smyčka, ve které podmínka přichází před tělo. Kromě toho se tělo smyčky provede tehdy a pouze tehdy, pokud je splněna podmínka skutečný; jakmile se stav stane Nepravdivé

Zatímco má formát:

zatímco < условие> dělat<оператор 1>; (Ahoj...dělej...)

Tato smyčka je vhodná pouze pro jeden příkaz, pokud chcete v kódu použít více příkazů, měli byste je uzavřít do hranatých závorek − začít a konec;.

Řešení problému.

Program example_while; var i, N: celé číslo; (deklarování proměnných) begin i:= 1; (Nastav i na 1) readln(N); (Přečtěte si poslední číslo), zatímco i<= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

Opakujte nebo smyčku s postcondition

Opakovat- úplný opak zatímco. Opakovat je smyčka, ve které je stav po těle. Navíc se provede tehdy a jen tehdy, když je výsledkem podmínky Nepravdivé; jakmile se booleovský výraz stane skutečný, smyčka je ukončena.

Opakování má formát:

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

dokud(před…) <условие>

Začít a konec není požadováno.

Řešení problému.

Program example_repeat; var i, N: integer;( deklarovat proměnné) begin i:= 1; (Nastav i na 1) readln(N); ( Přečíst poslední číslo ) repeat ( není třeba začátky a konce po opakování ) write(i, " "); (Zobrazení i) Inc(i); (Zvýšení i o jednu.) dokud i = N + 1; (Například i = 11 a N = 10. Smyčka se zastaví, takže se podmínka stane pravdivou.) end.

For, nebo smyčka s parametrem

Pro je smyčka, ve které je tělo vykonáváno daným počtem opakování.

Tuto smyčku lze napsat dvěma způsoby:

První forma

pro<счетчик1> := <значение1>na<конечное_значение>dělat<оператор1>;

<счетчик1>se zvýší o 1.

<значение1>je počáteční hodnota čítače. Může to být proměnná nebo číslo.
<конечное_значение>: jakmile hodnota<счетчик1>bude více<конечное_значение>

Pokud chcete do těla smyčky zapsat několik příkazů, použijte začít a konec.

A<счетчик1>, a<конечное_значение>, a<значение1>- proměnné celý typ.

Nejčastěji se jako čítač používá proměnná i.

Druhá forma

pro<счетчик2> := <значение2>dolů<конечное_значение>dělat<оператор1>;

Po každé iteraci hodnota<счетчик2>se sníží o 1.

<значение2>je počáteční hodnota čítače.
<конечное_значение>: jakmile hodnota<счетчик2>bude méně<конечное_значение>, smyčka je ukončena.

Dvě důležité poznámky:

  1. Smyčka se opakuje tak dlouho, dokud hodnota čítače leží v segmentu [hodnota; koncová_hodnota].
  2. Změňte hodnotu počítadla uvnitř těla je to zakázáno! Zde je výstup kompilátoru:

Řešení problému:

Program example_for; var i, N: celé číslo; začít číst(N); (předpokládejme, že jsme zadali 10) for i:= 1 až N do write(i, " "); (počet iterací - 10 - 1 + 1 = 10) konec.

Souhlasíte, tento kód je jednodušší a stručnější než všechny předchozí. A cyklus pro- ne úplně obyčejný cyklus, není v něm žádná logická podmínka. Proto se smyčka s parametrem v programování nazývá syntaktický cukr. Syntaktický cukr je doplněk k syntaxi programovacího jazyka, který nepřidává nové funkce, ale činí jazyk uživatelsky přívětivějším.

Pojďme vyřešit pár problémů.

Pro 1. Jsou dána celá čísla K a N (N > 0). Výstup N krát číslo K.

Zorganizujeme jednoduchý cyklus od 1 do požadovaného počtu.

Program pro 1; var K, N, i: celé číslo; začít číst(K, N); for i:= 1 to N do write(K, " "); (píšeme K oddělené mezerou) end.

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

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

Program pro 2; var A, B, i, počet: celé číslo; začít číst(A, B); for i:= A to B do write(i, " "); (pište čísla od nejmenšího po největší) count:= B - A + 1; (počítat počet čísel) writeln; write("Pocet cisel - ", pocet); konec.

Pro 9. Jsou-li dána dvě celá čísla A a B (A< B). Найти сумму квадратов всех целых чисел от A до B включительно.

Uspořádáme stejný cyklus jako v předchozí úloze, ale zároveň sečteme druhé mocniny všech čísel. K výpočtu čtverce použijte funkci.

Program pro 9; var A, B, i, S: celé číslo; začít číst(A, B); S:= 0; (PascalABC to dělá automaticky, ale pokud máte jiný kompilátor, doporučujeme nastavit proměnné na nulu ručně) for i:= A až B do S:= S + Sqr(i); (přidej všechny čtverečky) writeln; write("Součet čtverců - ", S); konec.

Pro 13°. Je dáno celé číslo N (> 0). Najděte hodnotu výrazu 1,1 - 1,2 + 1,3 - ... (N členů, znaménka se střídají). Nepoužívejte podmíněný operátor.

Abychom změnili znaménko, při každé iteraci cyklu změníme hodnotu speciální proměnné na opačnou.

Program pro 13; var N, A, i: celé číslo; S: skutečný begin Zapis("N = "); readln(N); S:= 1,1; A:= 1; (První kladné) pro i:= 2 až N do (první iteraci cyklu jsme již provedli, takže začneme počítat od 2) begin A:= -A; (nyní záporné) S:= S + A * (1 + i / 10); (přidat) konec; WriteIn(S:5:1); (Dejme jednu známost pro zlomkovou část) konec.

Zatímco 1°. Jsou dána kladná čísla A a B (A > B). Na segment délky A je umístěn maximální možný počet segmentů délky B (bez přesahů). Bez použití násobení a dělení najděte délku neobsazené části segmentu A.

Pokaždé odečtěte B od A, dokud A - B >= 0.

Program while1; var A, B: celé číslo; begin readln(A, B); zatímco (A - B) >= 0 do A:= A - B; (Dokud je rozdíl kladný, odečítáme. Je nutné poskytnout variantu s násobností A a B, proto >=) napište(A); konec.

Zatímco 4°.Je dáno celé číslo N (> 0). Pokud je to mocnina 3, pak výstup True, pokud ne, výstup False.

Postupujeme následovně: zatímco N je dělitelné 3, dělíme N 3. Pak, jestliže N = 1, číslo je mocninou tří; pokud N<>1, pak číslo není mocninou tří. Abyste tento problém vyřešili, musíte vědět, co to je a jak fungují.

Program while4; var N: celé číslo; začít readln(N); zatímco N mod 3 = 0 do N:= N div 3; (Dokud je zbytek dělení třemi nula, rozdělte N 3) writeln(N = 1); (booleovský výraz) konec.

To je pro dnešek vše! Nezapomeňte navštěvovat naše stránky častěji a klikat na tlačítka, která se nacházejí před komentáři.

Cyklus s parametrem jsme již zvažovali v sekci "Algoritmus" v tématu "Typy algoritmů".
Používá se smyčka s parametrem,když je předem známo, kolikrát se má smyčka provést.

Formát záznamu cyklu:

Tady pro, dělat, dělat- vyhrazená slova (pro, před, provést);

<пар. цикла> - parametr cyklu - proměnná celé číslo typ (celočíselný typ);
<нач. знач.> - počáteční hodnota - číslo nebo proměnnácelé číslo typ (celočíselný typ);
<кон. знач.> - koncová hodnota - číslo popř
variabilnícelé číslo typ (celočíselný typ);
<оператор> je libovolný operátor Pascal.

Příklad: Pro i:=1 až n udělejte<оператор>
zde i je parametr smyčky
1 - počáteční hodnota
n - konečná hodnota
Pokud je v těle smyčky použito několik operátorů, použijí se závorky operátorů: begin ... end.
Při provádění příkazu for je výraz nejprve vyhodnocen<нач.знач.>a přiřazení její hodnoty proměnné smyčky<пар.цикла> := <нач. знач.>. Dále jsou porovnány<пар.цикла>a <кон.знач.>. Dokud se nebudou rovnat, budou se provádět příkazy. Hodnota proměnné smyčky<нач.знач>automaticky navýšeno o jedničku během cyklu.Ihned je třeba poznamenat, že v tomto operátoru nelze nastavit jiný krok cyklu než 1.
Příklad:
Jsou možné následující příkazy cyklu:

1) pro i:= 1 až n do s1;

2) pro i:= 3 až 10 do s1;

3) pro i:= a až b do s1;

4) pro i:= a až b dělají
začít

s1;
s2;
...
sn

konec;

Zde s1, s2, s3, ... sn jsou smyčkové operátory.

Příklad:
Napište program pro zobrazení čísel od 1 do 10.

Příklad:
Napište program pro výpočet faktoriálu čísla n, tedy n!. (0!=1)

Vysvětlení programu:
Proměnná n je pro číslo zadané uživatelem, jehož faktoriál se má najít; f - proměnná, ve které se bude "kumulovat" hodnota faktoriálu čísla n; i - proměnná smyčky.
Počáteční hodnota proměnné f:= 1 je nastavena.
Pak začíná koloběh. Proměnná i je inicializována na 1; porovnává se s konečným - n (1<= n), если условие истинно, тогда выполняется оператор (в этой программе он один): f:= f*i, 1*1=1; значение переменной цикла увеличивается на 1, т. е. станет равным: i:= i + 1, 1 + 1 = 2 и цикл повторяется.
Když se hodnota i stane rovna n, pak se smyčka provede naposledy, protože další hodnota i bude n + 1, což je větší než konečná hodnota n, podmínka i<= n - ложно, цикл не выполняется.

Existuje další forma příkazu cyklu For:
Formát záznamu cyklu:

Nahrazení rezervovaného slova na slovem downto znamená, že krok parametru smyčky je (-1).
Změna hodnoty parametru jde z větší hodnoty na menší, tzn.<нач. знач.> <кон. знач.>.

Příklad:
Jsou možné následující příkazy cyklu:

1) pro i:= n až 1 do s1;

2) pro i:= 10 až 3 do s1;

3) pro i:= b až po a do s1; (za předpokladu b>a)

4) pro i:= b až do a do
začít

SI;
s2;
...
sn

konec; (za předpokladu b>a)

Zde s1, s2, s3, ... sn jsou smyčkové operátory.

Příklad: Kalkulační program faktoriálčísla lze skládat pomocí tohoto příkazu smyčky.


Úkoly

  1. Vzhledem k 10 číslům vytiskněte ta, která jsou dokonalými čtverci.
  2. Vzhledem k 10 číslům najděte jejich produkt.Vytvořte blokové schéma a program.
  3. Je-li dáno 10 čísel, najděte součet sudých čísel.Vytvořte blokové schéma a program.
  4. Zadaných 10 čísel najděte počet záporných čísel.Vytvořte blokové schéma a program.
  5. Je dáno n reálných čísel. Najděte maximum a minimum.Vytvořte blokové schéma a program.
  6. Je dáno n reálných čísel. Najděte aritmetický průměr všech prvků.Vytvořte blokové schéma a program.
  7. Je dáno n reálných čísel. Najděte aritmetický průměr záporných a kladných prvků.Vytvořte blokové schéma a program.
  8. Je dáno n přirozených čísel. Najděte součet a součin prvků, které jsou násobky 3 a 5.Vytvořte blokové schéma a program.
  9. Je dáno n přirozených čísel. Ustoupit ta čísla, jejichž hodnoty jsou mocniny dvou (1, 2, 4, 8, 16, ...).Vytvořte blokové schéma a program.
  10. Je dáno n přirozených čísel. Ustoupit ta čísla, jejichž hodnoty jsou v segmentu.Vytvořte blokové schéma a program.
  11. Je dáno n přirozených čísel. Zobrazte čísla, jejichž hodnoty jsou druhé mocniny nějakého čísla.Vytvořte blokové schéma a program.
  12. Je dáno přirozené číslo n. Najděte n 2.Vytvořte blokové schéma a program.
  13. Jsou dána přirozená čísla a, n. Najděte n.Vytvořte blokové schéma a program.
  14. Je dáno přirozené číslo n. Určete jeho kapacitu, zvyšte nejvýznamnější číslici čísla o 2
  15. Je dáno přirozené číslo n. Prohoďte první a poslední číslici čísla
  16. Je dáno přirozené číslo n. Číslice čísla, které jsou násobky 2, jsou nahrazeny 0.
  17. Je dáno přirozené číslo n. Číslice čísla, které jsou násobky 3, jsou nahrazeny 1.
  18. Je dáno přirozené číslo n. Vypočítejte součin (2n-1)*(3n-1)*(4n-1)*...*(10n-1).Vytvořte blokové schéma a program.
  19. Vypočítejte součet 2+4+6+...+100.Vytvořte blokové schéma a program.
  20. Je dáno přirozené číslo n, reálné x. Vypočítejte součin x+x/2+x/3+...+x/n.Vytvořte blokové schéma a program.
  21. Je dáno přirozené číslo n. Vypočítejte P=(1-1/2)(1-1/3)...(1-1/n), kde n>2.Vytvořte blokové schéma a program.
  22. Je dáno přirozené číslo n. Vypočítejte P=(1+x)/n+(2+x)/(n-1)+...+(n+x)/1.Vytvořte blokové schéma a program.
  23. Je dáno n přirozených čísel. Vypočítejte součet řady1+x/1!+x 2 /2!+x 3 /3!+ ...+x n/n!. Vytvořte blokové schéma a program.

Operátor smyčky s parametrem se používá právě v takových případech, kdy je potřeba zorganizovat smyčku s daným počtem opakování

pro <параметр_цикла>:=<начальное_знач> na <конечное_знач> dělat <оператор>;

pro <параметр_цикла>:=<конечное_знач> dolů <начальное_зна.> dělat <оператор>;

Příkaz, který je tělem smyčky, může být jednoduchý nebo složený.

Parametr smyčky, stejně jako rozsah jeho změny, může být pouze celočíselného nebo výčtového typu.

Parametr je popsán společně s dalšími proměnnými.

Krok cyklu for je vždy konstantní a je roven "1" nebo "-1".

Zobrazte prvních deset kladných celých čísel

var i: celé číslo; //je zadáno počítadlo

fori:=1to10do//když je hodnota čítače od 1 do 10, proveďte následující

writeln(i); //výstup hodnoty čítače

vari,soucet:integer;

součet:=0; //vynulování hodnoty proměnné

fori:=10to99do//výčet dvouciferných kladných čísel

pokud i mod 3=0 pak //násobnost 3

sum:=součet+i; //součet předchozí hodnoty proměnné a čísla odpovídající podmínce

Zobrazte součin prvních deseti kladných sudých čísel

vari,pr:integer;

pr:=1; //při hledání produktu není počáteční hodnota proměnné 0, ale 1

pro i:=1 až 10 do

pokud i mod 2=0 pak //určí paritu

Jsou-li dána dvě celá čísla A a B (A< B). Вывести в порядке возрастания все целые числа, расположенные между A и B (в том числе A и B), a также количество N этих чисел .

var i,pr: celé číslo;

k:=0; //nula hodnotu proměnné, což znamená číslo

fori:=AtoBdo//výčet čísel z daného rozsahu

writeln(i); //výstup ve vzestupném pořadí

k:=k+1; // počítání čísel

writeln(k); //výstup částky probíhá mimo smyčku, protože vydáno jednou

Zadejte N různých čísel. Najděte aritmetický průměr všech čísel.

Varn,i,a:integer;

Pro i:=1 až N do

Writeln("aritmetický průměr= ",s/n:4:2);

Příkaz smyčky s while ... Proveďte předběžnou podmínku

Příkaz while ... do je navržen tak, aby implementoval smyčky s předběžnou podmínkou.

Před začátkem každého kroku se kontroluje stav těla smyčky while. Pokud tedy podmínka není splněna okamžitě, tělo smyčky je ignorováno a řízení je přeneseno na operátora bezprostředně za tělem smyčky.

Kontaktování operátorazatímco... dělat překládá se jako "na shledanou... udělat" a vypadá takto:

zatímco <условие> dělat <оператор>

Cyklus while implikuje následující algoritmus: když je podmínka pravdivá, provedou se příkazy těla smyčky.

Samotná podmínka může být logická konstanta, proměnná nebo booleovský výraz.

Při psaní smyček s předpokladem mějte na paměti následující.

    má-li mít smyčka někdy šanci skončit, obsah jejího těla musí nutně ovlivnit stav smyčky.

    podmínka se musí skládat z platných výrazů a hodnot definovaných před prvním spuštěním těla smyčky.

Pokud je podmínka smyčky nepravdivá, smyčka se nikdy nespustí!

Ve většině programů je potřeba opakovaně provádět nějaký příkaz (nebo blok příkazů). K organizaci takových konstrukcí lze použít příkazy smyčky. Programovací jazyk Pascal používá následující typy operátorů smyčky: for, while, repeat (PascalABC.NET také používá operátor smyčky foreach).

Blok příkazů, který je třeba provádět opakovaně, se nazývá tělo smyčky.

pro výpis v Pascalu

Pokud počet opakování těla cyklus je znám předem, pak se použije příkaz pro smyčku, který se také často označuje jako příkaz smyčky s parametrem.

Příkaz for se skládá ze dvou částí: těla smyčky a hlavičky, která má za úkol popsat počáteční a konečnou hodnotu parametru smyčky a také možnost ji změnit.

V závislosti na směru změny parametru smyčky (zvýšení - na nebo snížení - dolů) v Pascalu může být operátor smyčky for zapsán v jedné ze dvou forem:

  • pro parametr := počáteční_hodnota až koncová_hodnota do
  • operátor;
  • pro parametr := start_value downto end_value do
  • operátor;

Proměnná parametru smyčky může mít jakýkoli ordinální typ. V tomto případě musí mít počáteční a konečná hodnota typ kompatibilní s typem proměnné parametru.

Podívejme se na práci cyklu for.

Před začátkem příkazu smyčky se vypočítá počáteční hodnota přiřazená proměnné parametru a konečná hodnota. Poté se cyklicky provádějí následující operace:

  1. Porovná aktuální hodnotu parametru s konečnou hodnotou.
  2. Pokud je parametr podmínky koncová_hodnota pravdivý, provede se tělo smyčky, jinak se příkaz for ukončí a řízení se přenese na příkaz následující za smyčkou.

Pozor: v jazyce Pascal se parametr smyčky bez ohledu na zvýšení nebo snížení pokaždé změní o jednu.

Úkol. Zobrazte seznam druhých mocnin celých čísel od 10 do 1.

Řešení. V nastoleném problému se parametr cyklu snižuje.

(úryvek kódu programu)

  • pro i:= 10 až 1 do
  • writeln(i:2, " ", i * i);

Pozor: pokud je nutné použít více než jeden příkaz v těle cyklu, pak se použije složený příkaz (závorky operátoru begin a end ).

Příklad 2. Známky žadatele ve čtyřech zkouškách jsou známy. Určete počet bodů, které získali.

Úkol. Známky uchazeče ve čtyřech zkouškách jsou známy. Určete počet bodů, které získali.

Řešení. V programu použijeme operátor smyčky s parametry, protože počet opakování provedených akcí je znám (žadatel obdržel přesně čtyři známky)

(úryvek kódu programu)

  • s:= 0;
  • pro i:= 1 až 4 do
  • začít
  • readln(značka);
  • s:= s + značka;
  • writeln(y);