Cyklické výpočetní procesy. Programování cyklických procesů Programování cyklických procesů zpracování dat

V programování se často potýkáme s úkoly, ve kterých dochází k procesům, které se opakují. Proto musíme znát a být schopni používat takový koncept jako „ cyklické výpočetní procesy».

Pro začínajícího programátora bude snadné pochopit je pomocí zobecněného příkladu. Kromě toho je důležité si uvědomit, že ve všech programovacích jazycích existují způsoby, jak implementovat smyčky.

Co je to smyčka v programování?

Smyčka - v programování se to nazývá vícenásobné opakování stejných akcí nebo výpočtů, ale podle stejných závislostí s různými hodnotami proměnných.

S konceptem cyklu se setkáváme nejen v programování. V mnoha oblastech našeho života existují cykly.

Například koloběh vody v přírodě je přirozeným cyklem v našem životě.

Nyní zvažte hlavní pravidla a koncepty používané ve výpočetních cyklech.

Fáze cyklického procesu

Cyklus by měl být obecně realizován ve 4 fázích:
  • Fáze 1 - příprava cyklu (inicializace).
    Nastavení počáteční hodnoty parametru a proměnné smyčky.
    Parametr smyčky - tato hodnota, která počítá počet kroků v cyklu (počet opakování cyklu)
    Proměnná smyčky Je hodnota, která mění svou hodnotu v každé fázi cyklu.
    Inicializace - tento úkol počáteční hodnoty proměnná parametru a smyčky.
  • Fáze 2 - tělo cyklu.
    Toto je vícenásobné opakování akce ve smyčce nebo výpočty pro stejné matematické závislosti s různými hodnotami proměnných.
  • Fáze 3 - úprava (změna) cyklu.
  • Fáze 4 - řízení cyklu.
    Toto je kontrola stavu pro pokračování nebo začátek cyklu.
V Pascalu jsou 3 operátoři smyček, kteří mohou implementovat libovolné algoritmická - cyklická struktura :
  1. Operátor smyčky s parametrem
  2. Operátor smyčky s předpokladem
  3. Operátor smyčky s dodatečnou podmínkou
Podrobně je budeme zvažovat v příštím článku.

1. Metody konstrukce cyklických výpočetních procesů v programech.

2. Počítač je zadánN reálná čísla. Vytvořte program, který zobrazí aritmetický průměr této sady.

Úvod

Smyčkové programy se používají téměř ve všech software... V tomto případě mohou být smyčky explicitní nebo implicitní. Zejména implicitní smyčka je přítomna v obsluhách přerušení, které ve skutečnosti fungují v nekonečné smyčce, jejíž tělo je iniciováno přerušením. Subrutiny jsou také funkce kruhového okna windows aplikace... Dále uvažujeme programy se smyčkou, jejichž tělo obsahuje funkční moduly.

Cyklický proces je výpočetní proces, při kterém se výpočty provádějí opakovaně pomocí stejných vzorců pro různé hodnoty argumentu.

Programykteré implementují cyklický proces, se nazývají cyklické programy.

Při organizování cyklu lze rozlišit následující fáze:

příprava (inicializace) cyklu (I);

provádění výpočtů cyklu (tělo cyklu) (T);

modifikace parametrů (M);

kontrola stavu konce cyklu (Y).

Pořadí, ve kterém jsou tyto kroky prováděny, například T a M, se může lišit. V závislosti na místě kontroly rozlišují koncové podmínky cyklu mezi cykly s dolním a horním koncem. U smyčky se spodním koncem se tělo smyčky provede alespoň jednou, protože se nejprve provedou výpočty a poté se zkontroluje podmínka ukončení smyčky.


V případě smyčky s horním koncem nemusí být tělo smyčky provedeno ani jednou, pokud je okamžitě splněna podmínka ukončení.

Smyčka se nazývá deterministická, pokud je znám nebo je předem určen počet opakování těla smyčky. Smyčka se nazývá iterativní, pokud není předem znám počet opakování těla smyčky, ale závisí na hodnotách parametrů (některé proměnné) použitých při výpočtech.

Tělo smyčky je opakující se část programu.

Parametr smyčky je proměnná, která nabývá nových hodnot pokaždé, když se smyčka opakuje (smyčky mohou být jednoduché nebo složité).

Obecná forma smyčka n krát

Obecně je cyklus napsán n krát takto:

nts počet opakování krát

Služební slovo nts (začátek cyklu) a kts (konec cyklu) jsou psány striktně pod sebou a jsou spojeny svislou čarou. Napravo od tohoto řádku je zapsána opakovaná sekvence příkazů (tělo smyčky).

Počet opakování je libovolné celé číslo.

Při provádění algoritmu se posloupnost příkazů v těle smyčky opakuje zadaný počet opakování. Pravidla algoritmického jazyka umožňují zadat libovolný celočíselný počet opakování. Může být nulový nebo dokonce záporný. Tyto případy nejsou považovány za chybné, pouze tělo smyčky nebude provedeno ani jednou a počítač okamžitě provede příkazy napsané po kts

Celkový pohled na dosavadní cyklus

Obecně platí, že cyklus je stále psán takto:

nts bye podmínka

| tělo smyčky (sekvence příkazů)

Během cyklu počítač opakuje následující kroky:

a) zatím zkontroluje stav napsaný za servisním slovem;

b) pokud podmínka není splněna, pak provádění cyklu končí a počítač začne vykonávat příkazy napsané po cc. Pokud je podmínka splněna, počítač provede tělo smyčky, znovu zkontroluje podmínku atd.

Celkový pohled na cyklus pro

nts for i from i1 to i2

| tělo smyčky (sekvence příkazů)

Zde i je název celočíselné hodnoty, i1, i2 jsou libovolná celá čísla nebo výrazy s celočíselnými hodnotami. Tělo smyčky se postupně provádí pro i \u003d i1, i \u003d i1 + 1, i1 + 2,… i \u003d i2.

Pravidla algoritmického jazyka umožňují specifikovat všechna celá čísla i1, i2. zejména i2 může být menší než i1. tento případ se nepovažuje za chybný - pouze tělo smyčky nebude provedeno ani jednou a počítač okamžitě provede příkazy napsané po kts.

Opakujte nkrát a opakujte sbohem

Smyčky n krát a zatímco jsou formátovány v algoritmickém jazyce téměř stejné. To není překvapující, protože oba tyto příkazy vytvářejí smyčku - opakující se sekvenci příkazů. Servisní slova nts a kts označují, že se smyčka provádí, a záhlaví smyčky určuje konkrétní mechanismus pro její provedení.

Tyto dva cykly však mají jeden významný rozdíl. Počínaje spuštěním smyčky nkrát, počítač ví, kolikrát bude muset opakovat tělo smyčky. Při provádění smyčky tomu tak dosud není: počítač pokaždé zkontroluje podmínku smyčky a nemůže předem určit, kdy bude provádění ukončeno. Počet opakování cyklu je možné zjistit až po dokončení cyklu.

Z toho je jasné, ve kterých případech by se měl použít který cyklus. Pokud je počet opakování znám v době, kdy cyklus začíná, je vhodné použít cyklus n-krát. Pokud počet opakování nelze určit předem, je nutný cyklus while.

Například program automatické ovládání má strukturu znázorněnou na obr. jeden. Moduly obsažené ve smyčce (stejně jako moduly pro zpracování přerušení), každý s jedním vstupem a jedním výstupem, obvykle mají charakteristickou vlastnost: moduly obsahují statické proměnné, kterým je v aktuálním cyklu přiřazena hodnota, a analýza těchto proměnných se provede v dalším cyklu. Uvedené proměnné tedy charakterizují stav modulu na konci aktuálního nebo na začátku dalšího programového cyklu. V následujícím budeme uvažovat pouze o takových modulech cyklických programů a krátce je označíme jako MCP.


Obr. 1. Typická struktura řídicí program s nekonečnou smyčkou.

MCL mají různorodou strukturu, jejíž složitost musí být posouzena podle zvláštních kritérií. V.V. Lipaev navrhl vhodné a objektivní kritérium pro složitost softwarových modulů, konkrétně počet a celkovou délku cest v řídicím grafu modulu. Zohledněny jsou pouze podmíněné a výběry. Toto kritérium však pro MPC se statickou pamětí zjevně nestačí, protože při analýze MPC je nutné pamatovat na hodnoty všech statických proměnných nastavených v předchozím cyklu. Kromě toho neexistují žádná doporučení pro standardizaci algoritmů a programů, s výjimkou dlouho známého strukturovaného programování v běžných programovacích jazycích, jako jsou C a Pascal. Tento článek navrhuje zaplnit tyto mezery ve vztahu k MCP.

2. Fragmenty modulů cyklických programů

Bipolární fragment nebo jen fragment bude považován za programovou část s jedním vstupem a jedním výstupem (včetně operátorů smyčky) za předpokladu, že uvažované MCP jsou strukturovány. Nejjednodušší fragment obsahuje jediný operátor. Sekvence fragmentů je také fragment. MCP je zase fragment a skládá se ze sekvence fragmentů.

V navrhované metodě nezávislých fragmentů pro syntézu struktury modulů, které implementují rozhodovací tabulky. V tomto případě je takový fragment považován za nezávislý, pokud může být vložen kdekoli v pořadí fragmentů modulu. Nezávislost umístění takového fragmentu je způsobena skutečností, že data v něm analyzovaná nejsou vytvořena ve specifikované sekvenci fragmentů a data generovaná v nezávislém fragmentu nejsou analyzována v této sekvenci fragmentů. Proto mohou být nezávislé fragmenty prováděny paralelně (pseudo-paralelně). Na obr. 2 ukazuje možné možnosti implementace modulu se dvěma nezávislými fragmenty. Ve variantách „a“ a „b“ jsou fragmenty přeskupeny, aniž by došlo k narušení podstaty programu; ve variantě „c“ jsou fragmenty implementovány paralelně.


Obr. Možnosti implementace pro modul s nezávislými fragmenty:

a) a b) - postupná implementace,

c) - paralelní implementace: dvojitá vodorovná čára označuje paralelizaci programu, tučná vodorovná čára označuje ukončení paralelních procesů.

Závislý fragment je ten, jehož umístění závisí na umístění jiného fragmentu v modulu. Budeme rozlišovat mezi horními a spodními závislými fragmenty. Výše závislý fragment musí být vždy umístěn pod nějakým fragmentem, ve kterém jsou vytvořeny proměnné použité v tomto (závislém) fragmentu. Fragment závislý na dně musí být vždy umístěn nad fragmentem, který používá proměnné vytvořené v tomto fragmentu. Dva závislé fragmenty, z nichž jeden je shora závislý na druhém a druhý zespodu závislý na prvním, se budou nazývat vzájemně závislé fragmenty. Nelze je vyměnit a nelze je implementovat paralelně. Na obr. 3 ukazuje příklad modulu se vzájemně závislými fragmenty. Mezi vzájemně závislými fragmenty mohou být další, závislé nebo na nich nezávislé. Obr. Modul se závislými fragmenty.

Závislý fragment se nazývá fixní, pokud je jeho umístění v modulu striktně definováno. Například v modulu pro rozpoznávání znaků zadaných z klávesnice musí být první závislý fragment vstupu znaků první zdola. Operátory „start“ a „end“ modulu jsou pevné fragmenty.

Absolutně nezávislé fragmenty neexistují, už jen proto, že v kterémkoli modulu jsou zmíněny fixní fragmenty začátku a konce. Nezávislý fragment má tedy v obecném případě oblast možného umístění omezenou dvěma vzájemně závislými fragmenty. To znamená, že přísnější definice nezávislého fragmentu zní následovně: nezávislý s ohledem na dva pevné fragmenty je fragment, který lze umístit kdekoli v posloupnosti fragmentů ohraničených nahoře a dole zadanými pevnými fragmenty.

PROGRAMOVÁNÍ CYKLICKÝCH PROCESŮ VÝPOČTU

Základní informace

Proces, ve kterém je jeden příkaz nebo skupina příkazů proveden vícekrát pro různé hodnoty argumentů, se nazývá cyklický proces... VBA používá opakování příkazů k provádění opakovaných akcí, které jsou následujících typů:

operátor smyčka s parametremFor - Next, jehož konstrukce se používá, pokud je předem známo, kolikrát by se tělo smyčky mělo opakovat:

For counter \u003d start_value That end_value Step step statement_block

Dále s počítadlem

operátory smyčka s předpoklademnebo postcondition, který se používá k uspořádání smyčky s neznámým počtem opakování těla smyčky:

Konstrukce smyčky

Konstrukce smyčky

s podmínkou má formu:

s podmínkou je:

Podmínka Do While

statement_block

statement_block

Stav Loop While

Podmínka Do

statement_block

statement_block

Podmínka Loop Until

Zatímco podmínka

statement_block

Vypracujeme vlastní formulář a vypracujeme program pro stanovení indexu ziskovosti navrhovaného investičního projektu na modernizaci zařízení, pokud je výše počáteční investice (IP) 10 000 tisíc rublů, diskontní sazba r \u003d 10% a odhadované peněžní toky jsou následující:

Peněžní tok (ДПk B), B tisíc rublů

Nechte vypadat uživatelský formulář (obr. 1) a hodnoty hodnot peněžních toků za 1. - 5. rok se načtou z buněk listu „Příklad 1“ (obr. 2).

Vlastnosti tvarových objektů jsou uvedeny v tabulce 1.

Postava: 1. Formulář „Index ziskovosti

ziskovost

investiční projekt "

vypočteno podle vzorce

.N

DPk

IR \u003d

k \u003d 1 (1+ r)

kde n je počet let, během nichž přijdou peněžní příjmy.

Postava: 2. Tabulka rozdělení peněžních toků

stůl 1

Vlastnictví

Vlastnictví

Titulek \u003d anuitní index

Titulek \u003d Počáteční velikost

ziskovost investice

investice

th projekt

Titulek \u003d Diskontní sazba

Titulek \u003d Index ziskovosti

Titulek \u003d jasný

Titulek \u003d Konec

Chcete-li zpracovat událost kliknutí na tlačítko „Vypočítat“, zadejte následující

Soukromý dílčí výpočet_Click ()

„Nastavení typu proměnných

Dim pv, dp, i, n As Integer

Dim r, s jako svobodný

„Přečíst hodnoty proměnných

pv \u003d Val (txtPV.Text)

r \u003d Val (txtSD.Text) / 100

n \u003d Val (InputBox ("Zadejte počet let, po který

přijít

hotovost

účtenky "," Zadávání údajů "))

„Čtení hodnot peněžních toků

dp \u003d Buňky (2, i + 2)

„shrnutí

txtIR.Text \u003d Round (s / pv, 2) „zaokrouhlit a vytisknout výsledek

Funkce Round (N, k) zaokrouhlí N na k desetinná místa.

Dále pomocí prvku tlačítka panelu nástrojů Ovládací prvkyumístíme tlačítko „Otevřít formulář“ pod tabulku pro zahájení procedury „Formulář indexu ziskovosti“ (obr. 3). Kód tohoto postupu je:

Soukromý podformulář Profit Index_Click ()

Postava: 3. Stanovení indexu ziskovosti investičního projektu

Pomocí vytvořeného tlačítka „Otevřít formulář“ spusťte formulář a vypočítejte index ziskovosti investičního projektu (obr. 3).

Vypracujeme vlastní formulář a sestavíme program pro vyhledání všech dvouciferných čísel, jejichž součet čtverců je dělitelný 13.

Chcete-li vytvořit tento vlastní formulář, přejděte do editoru VB (zůstaňte ve stejném sešitu MS Excel jako v příkladu 1) a přidejte další formulář (obr. 4).

Vlastnosti tvarových objektů jsou uvedeny v tabulce 2.

Zpracování událostí kliknutí na tlačítko

následující kód:

Soukromý dílčí výpočet_Click ()

Postava: 4. Formulář například 2

Label2.Caption \u003d ""

„Definice první číslice dvouciferného čísla

„Definice druhé číslice dvouciferného čísla

If (i1 ^ 2 + i2 ^ 2) Mod 13 \u003d 0 Pak Label2.Caption \u003d Label2.Caption + Str (i) + ""

Soukromý sub clean_Click ()

Label2.Caption \u003d ""

Soukromý výstup SubForm_Click ()

tabulka 2

Vlastnictví

Titulek \u003d Příklad 2

Titulek \u003d Dvouciferná čísla, součet

čtverce čísel dělitelné 13

TextAlign \u003d 2-fmTextAlignCenter

Titulek \u003d „“

AutoSize \u003d False

Vlastnictví

Titulek \u003d jasný

Titulek \u003d Konec

Na listu „Příklad 2“ umístěte

tlačítko "Otevřít formulář" pro vyvolání formuláře

„Příklad 2“ a spusťte tento formulář (obr.

Budeme se rozvíjet

zvyk

rozhraní

a skládat

program pro vás

série součty:

výpočty s přesností ε \u003d 10P

k + 2

S \u003d ∑

(− 1)

k \u003d 1

Zůstaňme ve stejném sešitu aplikace Excel,

jako v příkladech 1 a 2. Použití nástroje

Postava: 5. Dvouciferná čísla, součet čtverců

policajti „Nápis“, „Pole“ a „Tlačítko“

jejichž čísla jsou dělitelná 13

žádné nástroje

Elementy

řízení

umístěte odpovídající objekty do listu „Příklad 3“ (obr. 6).

Vlastnosti listových objektů „Příklad 3“ jsou uvedeny v tabulce 3.

Tabulka 3

Vlastnictví

Vlastnictví

Titulek \u003d Součet sérií

Titulek \u003d jasný

Chcete-li zpracovat události stisknutí tlačítek „Vypočítat“ a „Vymazat“, zadejte do modulu „List3 (příklad 3)“ následující programový kód:

eps \u003d Val (InputBox ("Nastavit přesnost", "Zadávání dat"))

a \u003d (-1) ^ (k + 2) / (f * 2 ^ k) s \u003d s + a

Smyčka txtS.Text \u003d s

Soukromý sub clean_Click () txtS.Text \u003d ""

Tady bude tělo Do While - Loop

vykonat,

období

absolutní

k + 2

n− 1

k + 2

n + 2

hodnota (tj.

(− 1)

−∑

(− 1)

(− 1)

) bude

Postava: 6. Výpočet částky

k \u003d 1

k \u003d 1

překročit stanovenou přesnost 10 P

Podívejme se na práci programu (obr.7).

Budeme se rozvíjet

zvyk

vytvořme program k vyřešení následujícího problému.

Při analýze ekonomických aktivit

nainstalován

další

vzor: v lednu 2004 zisk tohoto

podniky činily 573 tisíc rublů. a během

následujících 5 let vzrostlo o i% měsíčně,

kde i je číslo měsíce (tj. v únoru - o 2%, v březnu)

- o 3% atd.), ve srovnání s výškou zisku v

Postava: 7. Výsledek výpočtu

předchozí měsíc.

Určete přijaté pre-

součet série

přijetí výše zisku za roky 2004, 2005,…, 2008, jakož i celkové výše zisku za těchto 5 let.

Chcete-li vytvořit tento vlastní formulář, přejděte do editoru VB (zůstaňte ve stejném sešitu MS Excel jako v příkladech 1-3) a přidejte ještě jeden formulář (obr.8). Výstup vypočítaných hodnot zisku podniku bude proveden jak v poli objektu ListBox umístěném na formuláři, tak v buňkách listu „Příklad 4“ (obr. 9).

Postava: 8. Formulář „Zisk podniku“ Obr. 9. Tabulka například 4

Vlastnosti tvarových objektů jsou uvedeny v tabulce 4.

Tabulka 4

Vlastnictví

Vlastnictví

Titulek \u003d Zisk podniku

Titulek \u003d jasný

Titulek \u003d Konec

Poznámka. Vlastnost ColumnCount určuje počet sloupců v objektu ListBox.

Pro zpracování událostí stisknutí tlačítek „Vypočítat“, „Vymazat“ a „Vy-

move ", zadejte následující kód:

Soukromý sub calc_Click () Dim i, j jako celé číslo

Dim PrM, prG, sPr jako Single

PrM \u003d Val (InputBox ("Zadejte zisk přijatý v lednu 2004", "Zadání dat"))

ListBox používá k přidání položek do seznamu AddItem metodu

ListName.AddItem Expression, Index

kde Výraz je položka seznamu, která má být přidána; Rejstřík - pořadové číslo prvku v seznamu (číslování prvků seznamu začíná od 0).

Vlastnost List (LineNumber, ColumnNumber) objektu ListBox vrací (přiřadí) položku seznamu na křižovatce zadaného řádku a sloupce.

Na listu „Příklad 4“ umístěte tlačítko „Otevřít formulář“, čímž vyvoláte formulář „Zisk podniku“ a spustíte tento formulář (obr. 10).

Nyní můžete do sešitu MS Excel přidat další list s názvem „Obsah“, na kterém například pomocí tlačítka Nástroj na panelu nástrojů Formuláře vytvoříte čtyři tlačítka: „Index ziskovosti“, „Dvouciferná čísla“, „Součet sérií“, „Zisk podniky “.

V editoru VB přidejte nový modul (Vložit → Modul), do kterého zadáme následující kód:

Příklad veřejného listu 1 ()

Pracovní listy („Příklad 1“). Aktivujte

ListPr.AddItem "Year", 0

„Nastavit počáteční podpisy a data

ListPr.List (0, 1) \u003d "Zisk, tisíc rublů."

„Cyklujte roky

„Cyklujte po měsících každého roku

If (i \u003d 4) And (j \u003d 1) Then

PrM \u003d PrM * (1 + j / 100)

Úkol číslo 2

Programování větvících se výpočetních procesů

Objektivní

Získejte programovací dovednosti pro větvení výpočetních procesů. Prozkoumejte podmíněné příkazy, logické proměnné, logické vztahy a operace.

Nechť je na rovině x, y uvedena oblast D. Je nutné určit, zda bod se souřadnicemi (x, y) „spadne“ do oblasti D nebo ne. Pokud zasáhne, je nutné vypočítat funkci a proměnnou M, jejíž hodnota je znamením „zasáhnout“ nebo „nezasáhnout“, přiřadit hodnotu M \u003d 1. Jinak vypočítejte a nastavte M \u003d 2.

Pracovní proces

Algoritmus pro řešení problému:

1. Vypište oblast D a zapište funkce a

2. Napište rovnice definující hranice oblasti

3. Připravte 7 bodů tak, aby některé body byly uvnitř D a některé mimo něj.

4. Napište program k dokončení úkolu.

5. Získejte a zaznamenejte výsledky počítání pro vybrané body.

f 1 \u003d tg (x) / e y f 2 \u003d

(x\u003e 0 a y\u003e 0 a X ** 2 + Y ** 2<=9) или (x<0 и y>0 a y<=x+4) или (x<0 и y<0 и x>(-4) a y\u003e (- 2))

pak bod patří doméně D

1)(1;1)
2)(3;3)
3)(-1;2)
4)(-5;2)
5)(-2;-1)
6)(-5;-3)

Fortran MathCAD
X y z m C z m C
0,1573E + 01 T 1.573
0,0751E + 01 F 0.751
-1 -0,1211E + 01 T -1.211
-5 0,083E + 01 F 0.83
-2 -1 0,394E + 01 T 3.94
-5 -3 0,0282E + 01 F 0.282
-3 0,0271E + 01 F 0.271

PRINT *, "X \u003d?, Y \u003d?"; PŘEČTĚTE si *, X, Y

C \u003d (x\u003e 0..a. Y\u003e 0..a.X ** 2 + Y ** 2<=9).or.(x<0..and.y>0..a.y.<=x+4).or.(x<0..and.y<0..and.x>(-4). A.y\u003e (- 2))

TISK 2, X, Y, Z, C, M

2 FORMÁT ("X \u003d", F7,3,3X, "Y \u003d", F7,3,3X, "Z \u003d", E11,4,3X, "C \u003d", L2,3X, "M \u003d", I2 /)

KONEC PROGRAMU LAB2

FUNKCE F1 (X, Y)

F1 \u003d opálení (x) / exp (x) ** r

FUNKCE F2 (X, Y)

F2 \u003d (sqrt (sin (2 * x + 3 * y) ** 2) ** 1./3.)

print *, "a, b, c \u003d?"; read "(2F7.3)", a, b, c

q \u003d a\u003e b.and.a

a c

w \u003d b\u003e a. a. b

b c

e \u003d c\u003e a.and.c

c b

28.,558.,345. 345.0000


Úkol číslo 3

Programování cyklických výpočetních procesů

Objektivní

Získejte dovednosti v programování cyklických výpočetních procesů. Prozkoumejte krokové smyčky a podmíněné smyčky.

1. Zapište si výpočetní vzorce pro výpočet termínu a konečné částky

2. Vytvořte algoritmus pro výpočet s danou přesností součet konečného počtu členů řady ve specifikovaném variačním rozsahu parametru x s \u200b\u200bdaným krokem. Krok získáte vydělením rozsahu x 10.

3. Vytvořte program pro řešení problému. V programu pro každou hodnotu x zajistěte výpočet přibližného i přesného součtu odpovídající řady y podle vzorce uvedeného v tabulce.

přesnou hodnotu součtu řady a také počet sečtených členů.

Pracovní proces

1. Nastavte začátek x0 cyklu a konec xl cyklu

2. Krok h nastavíme podle vzorce

4. Vytvořte program pro opakované řešení problémů

5. Vytvořte tabulku přijatých dat

Vzorec řady:

Vzorec pro přesný výpočet součtu: π / 4

1.x0 \u003d π / 10 xk \u003d 9 π / 10

3.


real :: a, b, c, eps, h, s, x, x0, xk, y, str

b \u003d (sin * (x) * (2 * n) -1 + sin * ((2 * n-1) * x)) / 4 * n-2

pokud (abs (a)

tisk 2, x, s, y, n; napište (1,2) x, s, y, n

end do 2 format ("x \u003d", f6.3,3x, "s \u003d", e10.3,3x, "y \u003d", e10.3,3x, "n \u003d", i5)

ukončit program lab3


X S (x) y
0.314 0.324 0.785
0.565 0.622 0.785
0.817 0.979 0.785
1.068 1.404 0.785
1.319 1.43 0.785
1.57 -19.257 0.785
1.821 -533.961 0.785
2.072 -8 624 E + 3 0.785
2.324 -9,986 E + 4 0.785
2.575 -8,928E + 5 0.785
2.826 -6,477E + 6 0.785

Laboratorní práce č. 2

"Programování cyklických výpočetních procesů"

Objektivní

Operátory učení smyčky v C ++.

Teoretická část

Cyklus - druh struktury řízení v programovacích jazycích na vysoké úrovni, který je určen k organizaci opakovaného provádění sady pokynů. Smyčku lze také nazvat libovolnou posloupností instrukcí, které lze provádět opakovaně, organizovaným jakýmkoli způsobem.

Je volána sada instrukcí určených k opakovanému provádění tělo cyklu ... Je vyvoláno provedení těla smyčky jednou opakování ... Je volán výraz, který určuje, zda bude iterace provedena znovu, nebo smyčka skončí podmínka ukončení nebo podmínka pro konec cyklu. Volá se proměnná ukládající aktuální číslo iterace čítač iterací cyklus nebo jen čelit cyklus. Smyčka nemusí nutně obsahovat čítač, může existovat více než jedno počítadlo - podmínka pro opuštění smyčky může záviset na několika proměnných změněných ve smyčce.

Provedení jakékoli smyčky zahrnuje počáteční inicializaci proměnných smyčky, kontrolu podmínky ukončení, provedení těla smyčky a aktualizaci proměnné smyčky při každé iteraci. Kromě toho většina programovacích jazyků poskytuje prostředky pro časné ovládání smyčky, například příkazy ukončení smyčky, to znamená odchod ze smyčky bez ohledu na pravdivost podmínky ukončení (v C, přerušení) a operátory pro přeskočení iterace (v C, pokračování).

Existují následující typy cyklů.


1. Bezpodmínečné cykly.Cykly , výstup, který není poskytován logikou programu. Vzhledem ke své atypické povaze programovací jazyky neposkytují speciální syntaktické nástroje pro vytváření nekonečných smyček, proto se takové smyčky vytvářejí pomocí konstrukcí určených k vytváření obyčejných (nebo podmiňovací způsob) cykly. Například C používá smyčku pro (;;) s prázdnými částmi.

2. Podmíněné smyčky.Jedná se o smyčky, jejichž provádění je řízeno nějakou podmínkou kontrolovanou na začátku nebo na konci těla smyčky. Podmíněné smyčky lze tedy předběžně stabilizovat a dodatečně upravit. Smyčka s předpokladem je smyčka, která se provádí, pokud je splněna určitá podmínka zadaná před jejím začátkem. Tento stav je zkontrolován před provedení těla smyčky, takže tělo nemusí být provedeno ani jednou (pokud je podmínka od samého začátku falešná). Ve většině procedurálních programovacích jazyků je implementován operátorem zatímco, proto jeho druhé jméno - while-loop. V jazyce C ++ vypadá taková smyčka takto:

zatímco (<условие>)

<тело цикла>

Smyčka s podmínkou - smyčka, ve které je kontrolován stav po provedení těla smyčky. To znamená, že smyčka je vždy provedena alespoň jednou. V Pascalu je tato smyčka implementována operátorem opakujte..do té doby, v C - dělat, zatímco, např .:

<тело цикла>

zatímco (<условие продолжения цикла>);

Existují určité rozdíly v použití podmínky smyčky s podmínkou v různých jazycích. V Pascalu a jazycích z něj odvozených je podmínka takového cyklu interpretována jako podmínka ukončení - smyčka končí, když je podmínka splněna. V C - jak podmínka pokračování (smyčka končí, když je podmínka nepravdivá; takové smyčky se někdy nazývají „bye loop“).

Smyčka ze středu je nejběžnější forma podmíněné smyčky. Syntakticky je taková smyčka formátována pomocí tří konstruktů: začátek smyčky, konec smyčky a příkaz k ukončení smyčky. Počáteční konstrukt definuje bod v programu, kde začíná tělo smyčky, a koncový konstrukt definuje bod, kde končí tělo. Uvnitř těla musí být příkaz k opuštění smyčky, když je spuštěna, smyčka končí a ovládací prvek je přenesen na operátora následujícího po konci konstrukce smyčky. Přirozeně, aby se smyčka prováděla vícekrát, neměl by se příkaz exit volat bezpodmínečně, ale pouze když je splněna podmínka ukončení smyčky.

Hlavním rysem tohoto typu smyčky je to, že část těla smyčky umístěná po začátku smyčky a před provedením příkazu exit je vždy provedena (i když je podmínka ukončení smyčky pravdivá při první iteraci) a část těla smyčky umístěná po příkazu exit není provedena, když poslední iterace. Pomocí smyčky s výstupem ze středu můžete snadno modelovat smyčku s předpokladem (umístěním příkazu exit na začátek těla smyčky) a smyčku s postcondicí (umístěním příkazu exit na konec těla smyčky).

Smyčka s čítačem je smyčka, ve které proměnná s určitým krokem změní svou hodnotu z dané počáteční hodnoty na konečnou hodnotu a pro každou hodnotu této proměnné se tělo smyčky provede jednou. Ve většině procedurálních programovacích jazyků je implementován operátorem pro, který označuje počitadlo (tzv. „proměnná cyklu“), požadovaný počet průchodů (nebo mezní hodnotu počitadla) a případně krok, kterým se počítadlo mění.

V některých jazycích, například, C a další pocházeli z tohoto cyklu pronavzdory syntaktické formě smyčky čítače je to ve skutečnosti předem připravená smyčka. To je v C konstrukce smyčky:


pro (i \u003d 0; i< 10; ++i)

Tělo smyčky

je vlastně jiná forma psaní stavby:

zatímco já< 10)

Tělo smyčky

To znamená, že ve struktuře for se nejprve zapíše libovolné prohlášení o inicializaci smyčky, pak - podmínka pokračování a nakonec nějaká operace provedená po každém těle smyčky (nemusí to být změna čítače; může to být úprava ukazatele nebo nějaká zcela cizí operace). U jazyků tohoto druhu lze výše uvedený problém vyřešit velmi jednoduše: proměnná čítače se chová zcela předvídatelným způsobem a po skončení smyčky si zachovává svoji poslední hodnotu.

Organizace smyček v C ++

1. Smyčka for.

Smyčka for je užitečná, když je předem znám požadovaný počet iterací. Syntaxe pro tento operátor je:

for (akce před začátkem smyčky;

podmínka pokračování smyčky;

akce na konci každé iterace smyčky) (

instrukce smyčky;

instrukce smyčky 2;

instrukce smyčky N;

U této položky existuje speciální případ (s počítadlem):

for (counter \u003d value; counter< значение; шаг цикла)

tělo smyčky;

Nejprve je čítači přiřazena počáteční hodnota, následovaná středníkem. Poté je nastavena koncová hodnota počitadla smyčky. Jakmile čítač dosáhne stanoveného limitu, cyklus končí. Poté je nastaven krok cyklu - hodnota, o kterou se počítadlo cyklu bude s každým průchodem zvyšovat nebo snižovat.

Příklad: Počítání součtu všech čísel od 1 do 1000.

#zahrnout

pomocí jmenného prostoru std;

int i; // počitadlo smyčky

int součet \u003d 0; // součet čísel od 1 do 1000.

setlocale (0, "");

pro (i \u003d 1; i<= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

2. Smyčka while.

Organizace cyklu zatímco nebo dělat, zatímcovhodné použít, když požadovaný počet iterací není předem znám... Syntaxe smyčky zatímco v C ++ vypadá takto.

while (Podmínka) (

Tělo smyčky;

Tato smyčka bude provedena, dokud bude splněna podmínka uvedená v závorkách. Příklad implementace sčítání čísel od 1 do 1000 pomocí while smyčky:

#zahrnout

pomocí jmenného prostoru std;

setlocale (0, "");

zatímco já< 1000)

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

3. Smyčka do while

Cyklus dělat, zatímco se liší od zatímcoskutečnost, že při provedení smyčky bude proveden jeden průchod smyčky bez ohledu na podmínku. Program pro řešení problému hledání součtu čísel od 1 do 1000 pomocí smyčky dělat, zatímco:

#zahrnout

pomocí jmenného prostoru std;

setlocale (0, "");

int i \u003d 0; // inicializuje čítač smyček.

int součet \u003d 0; // inicializuje počítadlo součtu.

do (// provést smyčku.

) zatímco já< 1000); // пока выполняется условие.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

1. Vytvořte program v C ++ pro řešení problému odpovídající zvolené možnosti.

2. Zadejte, odlaďte a zkompilujte program. Zkontrolujte, zda funguje správně.

1. Blokové schéma programového algoritmu.

2. Výpis programu s komentáři.

3. Výsledky kontrolních běhů.

Kontrolní otázky

1. Uveďte definici smyčky, těla smyčky, iterace.

2. Co je podmínka ukončení smyčky, iterační čítač?

3. Jaké fáze zahrnuje jakýkoli cyklus?

4. Jak funguje postkondiční smyčka?

5. Jak funguje předběžná smyčka?

6. Jak funguje počítadlo?

7. Jak je smyčka implementována pomocí příkazu for?

8. Jak je smyčka implementována pomocí příkazu while?

9. Jak je smyčka implementována pomocí příkazu do while?

1. Zobrazte následující posloupnost znaků

2. Zadejte posloupnost celých čísel (0 je konec posloupnosti), najděte rozdíl mezi nejmenšími mezi kladnými a největšími mezi zápornými čísly.

3. Zadejte posloupnost N celých čísel, najděte rozdíl mezi součinem lichých čísel a největším mezi zápornými čísly.

4. Zadejte posloupnost celých čísel, 0 - konec posloupnosti. Určete, zda sekvence obsahuje alespoň dvě čísla, která jsou násobky 3, 5 a 7.

5. Zavádí se posloupnost N celých čísel. Najděte největší počet z násobků 11.

6. Zadejte sekvenci celých čísel, 0 - konec sekvence. Určete, zda posloupnost obsahuje alespoň tři záporná sudá čísla.

7. Zavádí se posloupnost N reálných čísel. Určete nejmenší číslo z čísel větších než 20.

8. Zadejte sekvenci celých čísel, 0 - konec sekvence. Vypočítejte počet kladných násobků 7 a ne násobků 5 a součet záporných prvků posloupnosti.

9. Zavádí se posloupnost N reálných čísel. Určete aritmetický průměr mezi prvky posloupnosti, které jsou násobky 7.

10. Zadejte posloupnost čísel, 0 - konec posloupnosti. Určete, zda sekvence striktně klesá.

12. Zadejte sekvenci celých čísel, 0 - konec sekvence. Určete, zda sekvence obsahuje alespoň dvě sousední kladná čísla.

13. Zavádí se posloupnost N reálných čísel. Určete, zda se v posloupnosti střídají znaky.

14. Zavádí se posloupnost N reálných čísel. Určete rozdíl mezi minimálními kladnými a maximálními zápornými prvky sekvence.

15. Najděte poslední tři násobky čtyř v rozsahu od 1 do N. Vypočítejte součet těchto čísel.

16. Zobrazte následující posloupnost znaků

18. Vypočítejte součin posledních tří čísel, která nejsou násobky 5 v rozsahu od N1 do N2.

19. Vypočítejte aritmetický průměr sudých čísel, která nejsou násobky čtyř v rozsahu od 1 do K.