Programowanie procesów cyklicznych. Cykliczne procesy obliczeniowe Programowanie cyklicznych procesów obliczeniowych

Klikając przycisk „Pobierz archiwum”, pobierzesz potrzebny plik za darmo.
Przed pobraniem tego pliku pamiętaj o dobrych esejach, kontrolach, pracach semestralnych, pracach dyplomowych, artykułach i innych dokumentach, które nie zostały odebrane na Twoim komputerze. To twoja praca, powinna uczestniczyć w rozwoju społeczeństwa i przynosić korzyści ludziom. Znajdź te prace i wyślij je do bazy wiedzy.
My i wszyscy studenci, doktoranci, młodzi naukowcy, którzy wykorzystują bazę wiedzy w swoich studiach i pracy, będziemy Państwu bardzo wdzięczni.

Aby pobrać archiwum z dokumentem należy w polu poniżej wpisać pięciocyfrowy numer i kliknąć przycisk „Pobierz archiwum”

Podobne dokumenty

    Opracowanie arkusza raportowego „Sklepy” w Excel 2013. Praca z tabelami z rodziny Microsoft Office. Budowa wykresu kołowego i histogramu, wykresy. Opracowanie procedur tablicowania funkcji. Programowanie funkcji użytkownika w VBA.

    praca semestralna, dodana 04.03.2014

    Pakiet Microsoft Office. Arkusz kalkulacyjny MS Excel. Tworzenie maski i wprowadzanie danych. Formuły i funkcje. Wyjaśnienie funkcji użytkownika MS Excel. Fizyczne zestawienie problemów. Ustalenie warunków brzegowych dla dopuszczalnych wartości zmiennych.

    praca semestralna, dodana 06.07.2015

    Funkcje korzystania z wbudowanych funkcji programu Microsoft Excel. Tworzenie tabel, wypełnianie ich danymi, kreślenie wykresów. Zastosowanie formuł matematycznych do wykonywania zapytań za pomocą pakietów aplikacji. Wymagania techniczne komputera.

    praca semestralna, dodana 25.04.2013

    Organizacja i dostęp do plików. operacje na plikach. Programowanie za pomocą wbudowanych funkcji I/O; liniowe, rozgałęzione i cykliczne procesy obliczeniowe z wykorzystaniem If-else, operatora wyboru przypadku; tablice i macierze.

    praca semestralna, dodano 24.05.2014 r.

    Procesor arkuszy kalkulacyjnych Microsoft Excel - program użytkowy przeznaczony do automatyzacji przetwarzania informacji gospodarczych prezentowanych w postaci tabel; zastosowanie wzorów i funkcji do wykonywania obliczeń; konspiratorstwo.

    streszczenie, dodane 02.03.2013

    Programowanie procesów obliczeniowych w języku FORTRAN w celu zapewnienia współdziałania systemu „Człowiek-Produkcja-Natura”. Wykorzystanie tablic do zestawienia cykli do obliczania poziomu zanieczyszczenia środowiska, kosztów przetwarzania odpadów.

    praca semestralna, dodana 30.05.2014

    Stworzenie aplikacji, która będzie wykreślać wykresy funkcji dla danego wyrażenia matematycznego. Opracowanie programu „Generator funkcji matematycznych”. Tworzenie kreatora funkcji do wprowadzania wyrażenia matematycznego, testowania.

    praca dyplomowa, dodana 16.02.2016

Laboratorium #2

"Programowanie cyklicznych procesów obliczeniowych"

Cel

Nauka operatorów pętli w C++.

Część teoretyczna

Cykl- rodzaj struktury kontrolnej w językach programowania wysokiego poziomu, zaprojektowanej do organizowania wielokrotnego wykonywania zestawu instrukcji. Cykl można również nazwać dowolną, wielokrotnie wykonywaną sekwencją instrukcji, zorganizowaną w dowolny sposób.

Zbiór instrukcji zaprojektowanych do wielokrotnego wykonywania nosi nazwę ciało pętli . Wykonywanie ciała pętli raz nazywa się iteracja . Wyrażenie, które określa, czy iteracja zostanie wykonana ponownie, czy też pętla się zakończy, nazywa się warunek wyjścia lub zakończenie cyklu. Zmienna przechowująca aktualny numer iteracji nazywa się licznik iteracji pętla lub po prostu lada cykl. Pętla niekoniecznie zawiera licznik, może być więcej niż jeden licznik - warunek wyjścia z pętli może zależeć od kilku zmiennych, które są zmieniane w pętli.

Wykonanie dowolnej pętli obejmuje początkową inicjalizację zmiennych pętli, sprawdzenie warunku wyjścia, wykonanie treści pętli i aktualizację zmiennej pętli przy każdej iteracji. Ponadto większość języków programowania zapewnia środki do wczesnej kontroli pętli, np. instrukcje zakończenia pętli, czyli wyjścia z pętli niezależnie od prawdziwości warunku wyjścia (w języku C - przerwa) oraz operatory pomijania iteracji (w języku C - kontynuuj).

Istnieją następujące rodzaje cykli.


1. Bezwarunkowe pętle. Cykle , wyjście, z którego nie zapewnia logika programu. Ze względu na swoją nietypowość języki programowania nie zapewniają specjalnych środków składniowych do tworzenia nieskończonych pętli, dlatego takie pętle są tworzone przy użyciu konstrukcji przeznaczonych do tworzenia zwykłych (lub warunkowy) cykli. Na przykład język C używa pętli dla(;;) z pustymi sekcjami.

2. Pętle warunkowe. Są to pętle, których wykonanie jest kontrolowane przez pewien warunek sprawdzany na początku lub na końcu ciała pętli. W związku z tym pętle warunkowe mają warunek wstępny i warunek końcowy. Pętla z warunkiem wstępnym to pętla wykonywana, gdy warunek określony przed jej rozpoczęciem jest prawdziwy. Ten warunek jest sprawdzony zanim wykonanie ciała pętli, więc ciało nie może zostać wykonane ani razu (jeśli warunek jest fałszywy od samego początku). W większości proceduralnych języków programowania jest zaimplementowany przez operatora chwila, stąd jego druga nazwa - while-loop. W C++ taka pętla wygląda tak:

chwila(<условие>)

<тело цикла>

Pętla z warunkiem końcowym - pętla, w której sprawdzany jest warunek po wykonanie korpusu pętli. Wynika z tego, że pętla jest zawsze wykonywana przynajmniej raz. W Pascalu ta pętla jest zaimplementowana przez operatora powtarzać dopóki, w C - rób… podczas gdy, Na przykład:

<тело цикла>

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

W różnych językach istnieją pewne różnice w stosowaniu warunku pętli z warunkiem końcowym. W Pascalu i językach z niego wywodzących się stan takiego cyklu traktowany jest jako: warunek wyjścia Pętla kończy się, gdy warunek jest spełniony. W C - jak warunek kontynuacji(pętla kończy się, gdy warunek jest fałszywy; takie pętle są czasami nazywane „pętlami while”).

Pętla ze środka- najbardziej ogólna forma pętli warunkowej. Syntaktycznie taki cykl tworzony jest za pomocą trzech konstrukcji: początku cyklu, końca cyklu i polecenia wyjścia z cyklu. Konstrukcja start definiuje punkt w programie, w którym zaczyna się treść pętli, konstrukcja end definiuje punkt, w którym kończy się treść pętli. Wewnątrz ciała musi znajdować się polecenie wyjścia z pętli, po wykonaniu którego pętla się kończy, a sterowanie jest przekazywane operatorowi po konstrukcji końca pętli. Oczywiście, aby pętla została wykonana więcej niż raz, nie należy wywoływać komendy exit bezwarunkowo, a tylko wtedy, gdy spełniony jest warunek wyjścia z pętli.

Główną cechą tego typu pętli jest to, że część ciała pętli znajdująca się za początkiem pętli i przed poleceniem wyjścia jest zawsze wykonywana (nawet jeśli warunek wyjścia z pętli jest spełniony w pierwszej iteracji), a część ciała pętli znajdująca się po poleceniu wyjścia nie jest wykonywana podczas ostatniej iteracji. Za pomocą środkowej pętli wyjściowej można łatwo modelować zarówno pętlę warunków wstępnych (umieszczając instrukcję exit na początku treści pętli), jak i pętlę warunków końcowych (umieszczając instrukcję exit na końcu treści pętli).

Pętla z licznikiem to pętla, w której jakaś zmienna zmienia swoją wartość z podanej wartości początkowej na wartość końcową z pewnym krokiem, a dla każdej wartości tej zmiennej korpus pętli jest wykonywany jeden raz. W większości proceduralnych języków programowania jest zaimplementowany przez operatora dla, który określa licznik (tzw. „zmienna pętli”), wymaganą liczbę przejść (lub wartość graniczną licznika) i ewentualnie krok, o który zmienia się licznik.

W niektórych językach, takich jak C i innych wywodzących się z niego, pętla dla, pomimo formy składniowej pętli z licznikiem, jest w rzeczywistości pętlą z warunkiem wstępnym. Oznacza to, że w C konstrukcja pętli:


dla (i = 0; i< 10; ++i)

Pętla ciała

faktycznie reprezentuje inną formę zapisu budowy:

podczas gdy ja< 10)

Pętla ciała

Oznacza to, że w konstrukcji for najpierw zapisywane jest dowolne zdanie inicjalizacji pętli, następnie warunek kontynuacji, a na końcu jakaś operacja wykonywana po każdym ciele pętli (nie musi to być zmiana licznika; może to być edycja wskaźnik lub jakaś całkowicie obca operacja). W przypadku tego typu języków problem opisany powyżej jest bardzo prosty: zmienna licznika zachowuje się w sposób całkowicie przewidywalny i na końcu pętli zachowuje swoją ostatnią wartość.

Zapętlanie w C++

1. Pętla for.

Pętla wykorzystująca instrukcję for jest wygodna w użyciu, gdy wymagana liczba iteracji jest z góry znana. Składnia tego operatora to:

for (działanie przed rozpoczęciem pętli;

warunek kontynuowania cyklu;

akcje na końcu każdej iteracji pętli) (

instrukcja pętli;

instrukcja pętli 2;

instrukcja cyklu N;

Jest szczególny przypadek tego wpisu (z licznikiem):

for (licznik = wartość; licznik< значение; шаг цикла)

cykl ciała;

Najpierw do licznika przypisywana jest wartość początkowa, po której umieszczany jest średnik. Następnie ustawiana jest wartość końcowa licznika pętli. Gdy wartość licznika osiągnie określony limit, pętla się zakończy. Następnie ustawiany jest krok pętli - wartość o jaką licznik pętli będzie się zwiększał lub zmniejszał z każdym przejściem.

Przykład: Oblicz sumę wszystkich liczb od 1 do 1000.

#włączać

używając standardowej przestrzeni nazw;

wew; // licznik pętli

suma int = 0; // suma liczb od 1 do 1000.

setlocale(0, "");

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

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

2. Pętla while.

Organizacja cykli chwila lub zrób...gdywygodny w użyciu, gdy wymagana liczba iteracji nie jest z góry znana. Składnia pętli chwila w C++ wygląda to tak.

podczas (warunek) (

Pętla ciała;

Ta pętla będzie wykonywana, dopóki warunek podany w nawiasach będzie spełniony. Przykład realizacji sumowania liczb od 1 do 1000 za pomocą pętli while:

#włączać

używając standardowej przestrzeni nazw;

setlocale(0, "");

podczas gdy ja< 1000)

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

3. wykonaj pętlę while

Cykl zrób chwilę różni się od chwila fakt, że gdy wykona pętlę, jedno przejście pętli zostanie wykonane niezależnie od warunku. Program do rozwiązywania problemu znalezienia sumy liczb od 1 do 1000 za pomocą pętli zrób chwilę:

#włączać

używając standardowej przestrzeni nazw;

setlocale(0, "");

int i = 0; // zainicjuj licznik pętli.

suma int = 0; // zainicjuj licznik sum.

wykonaj (// pętla.

) podczas gdy ja< 1000); // пока выполняется условие.

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

1. Opracuj program w C++, aby rozwiązać problem odpowiadający wybranej opcji.

2. Wejdź, zdebuguj i skompiluj program. Sprawdź, czy działa poprawnie.

1. Schemat blokowy algorytmu programu.

2. Lista programów z komentarzami.

3. Wyniki przejazdów kontrolnych.

pytania testowe

1. Zdefiniuj pętlę, treść pętli, iterację.

2. Jaki jest warunek wyjścia pętli, licznik iteracji?

3. Jakie są etapy każdego cyklu?

4. Jak działa pętla warunków końcowych?

5. Jak działa pętla z warunkiem wstępnym?

6. Jak działa pętla licznika?

7. Jak zaimplementowana jest pętla za pomocą instrukcji for?

8. Jak zaimplementowana jest pętla za pomocą instrukcji while?

9. W jaki sposób zaimplementowana jest pętla za pomocą instrukcji do while?

1. Wyświetl następującą sekwencję znaków

2. Wprowadza się ciąg liczb całkowitych (0 to koniec ciągu), znajdź różnicę między najmniejszą z liczb dodatnich a największą z liczb ujemnych.

3. Wprowadź ciąg N liczb całkowitych, znajdź różnicę między iloczynem liczb nieparzystych a największą spośród liczb ujemnych.

4. Wprowadzany jest ciąg liczb całkowitych, 0 to koniec ciągu. Sprawdź, czy sekwencja zawiera co najmniej dwie liczby całkowite, które są wielokrotnościami 3, 5 i 7.

5. Wprowadzany jest ciąg N liczb całkowitych. Określ największą liczbę spośród wielokrotności 11.

6. Wprowadzany jest ciąg liczb całkowitych, 0 to koniec ciągu. Sprawdź, czy sekwencja zawiera co najmniej trzy ujemne liczby parzyste.

7. Wprowadzany jest ciąg N liczb rzeczywistych. Określ najmniejszą liczbę spośród liczb większych niż 20.

8. Wprowadzany jest ciąg liczb całkowitych, 0 to koniec ciągu. Oblicz liczbę liczb dodatnich, które są wielokrotnościami 7, a nie 5, oraz sumą ujemnych elementów ciągu.

9. Wprowadzany jest ciąg N liczb rzeczywistych. Wyznacz średnią arytmetyczną spośród elementów ciągu będących wielokrotnościami 7.

10. Wprowadzany jest ciąg cyfr, 0 to koniec ciągu. Określ, czy sekwencja jest ściśle malejąca.

12. Wprowadzany jest ciąg liczb całkowitych, 0 to koniec ciągu. Sprawdź, czy sekwencja zawiera co najmniej dwie sąsiednie dodatnie liczby całkowite.

13. Wprowadzany jest ciąg N liczb rzeczywistych. Sprawdź, czy sekwencja jest naprzemienna.

14. Wprowadzany jest ciąg N liczb rzeczywistych. Określ różnicę między minimalnym dodatnim a maksymalnym ujemnym elementem sekwencji.

15. Znajdź trzy ostatnie wielokrotności czwórki w zakresie od 1 do N. Oblicz sumę tych liczb.

16. Wyświetl następującą sekwencję znaków

18. Oblicz iloczyn ostatnich trzech liczb niepodzielnych przez 5 z zakresu od N1 do N2.

19. Oblicz średnią arytmetyczną liczb parzystych, które nie są wielokrotnościami czterech w zakresie od 1 do K.

1. Metody konstruowania cyklicznych procesów obliczeniowych w programach.

2. Wszedł do komputeraNliczby rzeczywiste. Napisz program wyświetlający średnią arytmetyczną tego zbioru.

Wstęp

Programy w pętli są używane w prawie każdym oprogramowaniu. W takim przypadku cykle mogą być jawne i niejawne. W szczególności niejawna pętla jest obecna w procedurach obsługi przerwań, które faktycznie działają w nieskończonej pętli, której treść jest wyzwalana przez przerwanie. Podprogramy są również cyklicznymi - funkcjami okienkowymi aplikacji Windows. Ponadto brane są pod uwagę programy z cyklem, których korpus zawiera moduły funkcjonalne.

Proces cykliczny to proces obliczeniowy, w którym obliczenia są wielokrotnie wykonywane przy użyciu tych samych formuł dla różnych wartości argumentu.

Programy realizujące proces cykliczny nazywane są programami cyklicznymi.

Organizację cyklu można podzielić na następujące etapy:

przygotowanie (inicjalizacja) cyklu (AND);

wykonanie obliczeń pętli (ciało pętli) (T);

modyfikacja parametrów (M);

sprawdzenie warunku zakończenia cyklu (U).

Kolejność, w jakiej te etapy, np. T i M, mogą być wykonywane, może być różna. W zależności od lokalizacji testu warunki zakończenia pętli rozróżniają pętle z dolnymi i górnymi zakończeniami. Dla pętli z dolnym końcem treść pętli jest wykonywana przynajmniej raz, ponieważ najpierw wykonywane są obliczenia, a następnie sprawdzany jest warunek wyjścia z pętli.


W przypadku pętli zakończonej od góry, treść pętli może nie zostać wykonana nawet raz, jeśli warunek wyjścia zostanie spełniony natychmiast.

Pętlę nazywamy deterministyczną, jeśli liczba powtórzeń treści pętli jest znana lub określona z góry. Cykl nazywa się iteracyjnym, jeśli liczba powtórzeń korpusu cyklu nie jest z góry znana, ale zależy od wartości parametrów (niektórych zmiennych) biorących udział w obliczeniach.

Pętla ciała To część programu, która powtarza się wielokrotnie.

Parametr cyklu to zmienna, która przy każdym powtórzeniu pętli przyjmuje nowe wartości (istnieją pętle proste i złożone).

Ogólny widok cyklu n razy

Ogólnie cykl n razy zapisujemy w następujący sposób:

nc liczba powtórzeń razy

Słowo serwisowe nts (początek cyklu) i kts (koniec cyklu) są zapisane ściśle jeden pod drugim i są połączone pionową kreską. Po prawej stronie tej linii zapisana jest powtarzająca się sekwencja poleceń (treść pętli).

Liczba powtórzeń jest dowolną liczbą całkowitą.

Gdy algorytm jest wykonywany, sekwencja poleceń w ciele pętli jest powtarzana określoną liczbę razy. Reguły języka algorytmicznego pozwalają określić dowolną całkowitą liczbę powtórzeń. Może być zerowa lub nawet ujemna. Przypadki te nie są uważane za błędne, tylko treść pętli nie zostanie wykonana ani razu, a komputer natychmiast przystąpi do wykonywania poleceń napisanych po kts

Ogólny widok cyklu

Ogólnie cykl jest napisany w następujący sposób:

nc stan pożegnania

| treść pętli (sekwencja poleceń)

Podczas wykonywania cyklu komputer powtarza następujące kroki:

a) sprawdza stan zapisany po słowie serwisowym;

b) jeśli warunek nie jest spełniony, to wykonanie pętli kończy się i komputer rozpoczyna wykonywanie poleceń zapisanych po kts. Jeśli warunek jest spełniony, komputer wykonuje treść pętli, ponownie sprawdza warunek i tak dalej.

Ogólny widok cyklu dla

nc dla i od i1 do i2

| treść pętli (sekwencja poleceń)

Tutaj i to nazwa wartości typu całkowitego, i1, i2 to dowolne liczby całkowite lub wyrażenia z wartościami całkowitymi. Treść pętli jest wykonywana sekwencyjnie dla i = i1, i = i1 + 1, i1 + 2, …i = i2.

Reguły języka algorytmicznego pozwalają na określenie dowolnych liczb całkowitych i1, i2. w szczególności i2 może być mniejsze niż i1. ten przypadek nie jest uważany za błędny - tylko treść pętli nie zostanie wykonana ani razu, a komputer natychmiast przystąpi do wykonywania poleceń napisanych po kts.

Zapętl n razy i zapętl while

Pętle n razy i do tej pory są ułożone w języku algorytmicznym w prawie ten sam sposób. Nie jest to zaskakujące, ponieważ oba te polecenia ustawiają cykl - powtarzającą się sekwencję poleceń. Słowa serwisowe nts i kts wskazują, że cykl jest wykonywany, a nagłówek cyklu określa specyficzny mechanizm jego wykonania.

Jednak te dwa cykle mają jedną istotną różnicę. Zaczynając wykonywać pętlę n razy, komputer wie, ile razy będzie musiał powtórzyć treść pętli. Podczas wykonywania pętli jeszcze tak nie jest: komputer za każdym razem sprawdza stan pętli i nie może z góry określić, kiedy zakończy się wykonywanie. Liczbę powtórzeń cyklu można sprawdzić tylko do momentu zakończenia cyklu.

To wyjaśnia, w jakich przypadkach, który cykl należy zastosować. Jeśli liczba powtórzeń jest znana przed rozpoczęciem pętli, wygodnie jest użyć pętli n razy. Jeśli nie można z góry określić liczby powtórzeń, zdecydowanie konieczny jest cykl.

Na przykład program automatycznego sterowania ma strukturę pokazaną na rys. jeden. Moduły zawarte w cyklu(podobnie jak moduły obsługi przerwań), każdy z jednym wejściem i jednym wyjściem, mają zazwyczaj charakterystyczną cechę: moduły zawierają zmienne statyczne, którym w bieżącym cyklu przypisywana jest wartość, a analiza tych zmiennych jest wykonywana w kolejnym cyklu. Wspomniane zmienne charakteryzują więc stan modułu na końcu bieżącego lub początku kolejnego cyklu programu. W przyszłości rozważymy tylko takie moduły programów cyklicznych i będziemy je określać skrótowo jako MCP.


Rys.1. Typowa struktura programu sterującego z nieskończoną pętlą.

MCP mają zróżnicowaną strukturę, której złożoność należy oceniać według specjalnych kryteriów. V.V. Lipaev zaproponował wygodne i obiektywne kryterium złożoności modułów programu, a mianowicie: liczbę i całkowitą długość ścieżek w grafie kontrolnym modułu. Uwzględnia to tylko instrukcje warunkowe i wybrane. Jednak to kryterium wyraźnie nie wystarcza dla MCP z pamięcią statyczną, ponieważ przy analizie MCP konieczne jest zapamiętanie wartości wszystkich zmiennych statycznych ustawionych w poprzednim cyklu. Ponadto nie ma zaleceń dotyczących standaryzacji algorytmów i programów, poza znanym od dawna programowaniem strukturalnym w powszechnie używanych językach programowania, takich jak C i Pascal. W niniejszym artykule proponuje się wypełnienie tych luk w odniesieniu do MCP.

2. Fragmenty modułów programów cyklicznych

Dwubiegunowy fragment lub po prostu fragment, rozważymy sekcję programu z jednym wejściem i jednym wyjściem (w tym operatorami pętli) przy założeniu, że rozważane MCP są ustrukturyzowane. Najprostszy fragment zawiera jeden operator. Sekwencja fragmentów również jest fragmentem. Z kolei MCP jest fragmentem i składa się z sekwencji fragmentów.

Zaproponowano metodę niezależnych fragmentów do syntezy struktury modułów implementujących tablice decyzyjne. W tym przypadku fragment jest uważany za niezależny, jeśli można go wstawić w dowolnym miejscu sekwencji fragmentów modułu. Niezależność lokalizacji takiego fragmentu wynika z faktu, że analizowane w nim dane nie tworzą się w określonej sekwencji fragmentów, a dane generowane w niezależnym fragmencie nie są analizowane w tej sekwencji fragmentów. Dlatego niezależne fragmenty mogą być wykonywane równolegle (pseudo-równoległe). Na ryc. 2 przedstawia możliwe implementacje modułu z dwoma niezależnymi fragmentami. W opcjach „a” i „b” fragmenty są przestawiane bez zniekształcania istoty programu; w wersji „c” fragmenty realizowane są równolegle.


Rys.2. Opcje implementacji modułu z niezależnymi fragmentami:

a) i b) - realizacja sekwencyjna,

c) - implementacja równoległa: podwójna pozioma linia oznacza zrównoleglenie programu, pogrubiona pozioma linia oznacza zakończenie równoległych procesów.

Fragment zależny to taki, którego lokalizacja zależy od lokalizacji innego fragmentu(ów) w module. Rozróżnimy fragmenty zależne od góry i od dołu. Fragment zależny od góry musi zawsze znajdować się poniżej jakiegoś fragmentu, w którym tworzone są zmienne używane w tym (zależnym) fragmencie. Fragment zależny od dołu powinien zawsze znajdować się nad fragmentem, który wykorzystuje zmienne wygenerowane w tym fragmencie. Dwa zależne fragmenty, z których jeden jest zależny od góry od drugiego, a drugi od pierwszego od dołu, będą nazywane fragmentami wzajemnie zależnymi. Nie można ich zamieniać ani wdrażać równolegle. Na ryc. 3 pokazuje przykład modułu z wzajemnie zależnymi fragmentami. Pomiędzy wzajemnie zależnymi fragmentami mogą znajdować się inne, zależne lub niezależne od nich. Rys.3. Moduł z zależnymi fragmentami.

Ustalony fragment nazwiemy fragmentem zależnym, którego położenie w module jest ściśle określone. Np. w module rozpoznawania znaku wprowadzanego z klawiatury jako pierwszy powinien być zależny od dołu fragment bezpośrednio wprowadzanego znaku. Operatory „start” i „end” modułu są stałymi fragmentami.

Absolutnie niezależne fragmenty nie istnieją, choćby dlatego, że w każdym module są wymienione stałe fragmenty początku i końca. Dlatego niezależny fragment na ogół ma region możliwej lokalizacji ograniczony przez dwa wzajemnie zależne fragmenty. To znaczy, ściślejsza definicja niezależnego fragmentu jest następująca: w odniesieniu do dwóch ustalonych fragmentów nazwiemy niezależny taki fragment, który może być umieszczony w dowolnym miejscu w sekwencji fragmentów ograniczonych powyżej i poniżej przez określone ustalone fragmenty.

Zadanie numer 2

Programowanie rozgałęzionych procesów obliczeniowych

Cel

Zdobądź umiejętności programowania do rozgałęziania procesów obliczeniowych. Naucz się instrukcji warunkowych, zmiennych logicznych, relacji logicznych i operacji.

Niech obszar D zostanie podany na płaszczyźnie x, y. Wymagane jest ustalenie, czy punkt o współrzędnych (x, y) „wpada” w obszar D, czy nie. Jeśli trafi, to należy obliczyć funkcję i zmiennej M, której wartość jest znakiem „trafienia” lub „braku”, przypisać wartość M=1. W przeciwnym razie obliczyć i umieścić M=2.

Proces pracy

Algorytm rozwiązania problemu:

1. Napisz region D i wypisz funkcje i

2. Zapisz równania określające granice obszaru

3. Przygotuj 7 punktów tak, aby niektóre z nich znajdowały się wewnątrz D, a niektóre poza nim.

4. Napisz program do wykonania zadania.

5. Dla wybranych punktów pobierz i zapisz wyniki liczenia.

f 1= tg(x)/e y f 2 =

(x>0 i y>0 oraz X**2+Y**2<=9) или (x<0 и y>0 i y<=x+4) или (x<0 и y<0 и x>(-4) i y>(-2))

wtedy punkt należy do obszaru D

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

Fortran MathCAD
x tak z m c z m c
0.1573E+01 T 1.573
0.0751E+01 F 0.751
-1 -0,211E+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=?,Y=?";CZYTAJ *,X,Y

C=(x>0..i.y>0..i.X**2+Y**2<=9).or.(x<0..and.y>0..i.y<=x+4).or.(x<0..and.y<0..and.x>(-4).i.y>(-2))

DRUKUJ2,X,Y,Z,C,M

2 FORMAT("X=",F7.3,3X,"Y=",F7.3,3X,"Z=",E11.4,3X,"C=",L2,3X,"M=", I2/)

ZAKOŃCZ PROGRAM LAB2

FUNKCJA F1(X,Y)

F1=tan(x)/exp(x)**y

FUNKCJA F2(X,Y)

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

print*,"a,b,c=?";czytaj "(2F7.3)",a,b,c

q=a>b.i.a

a c

w=b>a.i.b

b c

e=c>a.i.c

c b

28.,558.,345. 345.0000


Zadanie numer 3

Programowanie cyklicznych procesów obliczeniowych

Cel

Zdobądź umiejętności programowania cyklicznych procesów obliczeniowych. Poznaj pętle krokowe i pętle warunkowe.

1. Zapisz wzory obliczeniowe do obliczenia terminu i ostateczną kwotę

2. Opracuj algorytm obliczania z zadaną dokładnością sumy skończonej liczby członów w zadanym zakresie parametru x z zadanym krokiem. Podziel zakres x przez 10, aby uzyskać krok.

3. Stwórz program do rozwiązania problemu. W programie dla każdej wartości x należy przewidzieć obliczenie zarówno przybliżonej, jak i dokładnej sumy odpowiednich szeregów y zgodnie ze wzorem podanym w tabeli.

dokładną wartość sumy szeregu, a także liczbę zsumowanych terminów.

Proces pracy

1. Ustaw początek cyklu x0 i koniec cyklu xl

2. Ustaw krok h zgodnie ze wzorem

4. Napisz program do rozwiązywania problemów w sposób powtarzalny

5. Zbuduj tabelę otrzymanych danych

Wzór wiersza:

Wzór na dokładne obliczenie sumy: π/4

1. x0= π/10 xk=9 π/10

3.


prawdziwe:: a,b,c,eps,h,s,x,x0,xk,y,p

b=(grzech*(x)*(2*n)-1+grzech*((2*n-1)*x))/4*n-2

jeśli(abs(a)

drukuj 2,x,s,y,n; napisz(1,2)x,s,y,n

koniec do 2 format("x=",f6.3,3x,"s=",e10.3,3x,"y=",e10.3,3x,"n=",i5)

koniec programu lab3


x S(x) tak
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,624E+3 0.785
2.324 -9,986E+4 0.785
2.575 -8,928E+5 0.785
2.826 -6,477E+6 0.785

Cel:

Aby studiować cykliczne instrukcje for, while, do - while, naucz się komponować i programować algorytmy cykliczne.

Krótka informacja teoretyczna

Operatory cykli są używane, gdy konieczne jest kilkakrotne powtórzenie niektórych czynności (operatorów i operacji) i takie sekcje algorytmów nazywamy cyklami.

instrukcja pętli for

Podstawowa forma operatora pętli for to

for (wyrażenie_1; wyrażenie_2; wyrażenie_3)

operator;

gdzie wyrażenie_1– początkowa wartość parametru cyklu;

wyrażenie_2– sprawdzenie warunku kontynuacji cyklu;

wyrażenie_3– zmiana parametru cyklu (korekta);

operator jest prostym lub złożonym operatorem C.

Schemat działania operatora jest następujący: tylko po obliczeniu wyrażenia_1 sprawdzane jest wyrażenie_2, a jeśli jest „prawda”, to wykonywana jest cykliczna sekcja programu, wtedy parametr jest korygowany i tak dalej aż do wyrażenia_2 przyjmuje wartość „fałsz”.

Na przykład: dla (k=1; k<5; k++)

printf("\n %d", k);

W wyniku wykonania tego zestawienia w kolumnie drukowane są liczby od 1 do 4.

Jako parametru pętli można użyć zmiennej dowolnego typu podstawowego.

Na przykład:

for(ch='a'; ch<=’z’; ch++) // Вывод на экран букв

printf(„%c”,ch); // Alfabet łaciński

Musisz dokładnie kontrolować strukturę pętli for w swoim programie, aby nie skończyć z nieskończoną pętlą (z której nie ma wyjścia).

na przykład:

dla(k=10;k>6;k++)

printf("nieskończona pętla \n");

Wyjdź z pętli wcześnie na następujące sposoby:

Według dodatkowego warunku;

Używając następujących stwierdzeń:

złamać;- wyjście z pętli, w której znajduje się przerwa, sterowanie przekazywane jest na pierwszą wykonaną instrukcję po pętli;

wyjście(intKod);- wyjście z programu;

zwrócić;- wyjście z funkcji;

Korzystanie z bezwarunkowego operatora skoku iść do<метка>;

Wczesny koniec bieżącego kroku cyklicznego możliwe za pomocą dodatkowego warunku lub operatora kontyntynuj, który przerywa wykonanie kroku pętli prądowej, tj. pomija instrukcje reszty pętli i przekazuje sterowanie do instrukcji head loop w celu poprawienia parametru i przetestowania warunku.

Zabronione jest przenoszenie kontroli z zewnątrz do wewnątrz pętli.

Dowolne z wyrażeń pętli for w nawiasach może być nieobecne, ale znak ";" nie można upuścić.

na przykład:

dla(;i<3; i++)

puts("Cześć!");

Zapętlone instrukcje while i do-while

Podstawowa forma operatora cyklicznego chwila:

Chociaż (warunek)

operator;

gdzie operator

Pętla jest wykonywana, dopóki warunek ma wartość „prawda”, tj. wyrażenie w nawiasach zwraca wynik inny niż null. Jest to pętla z warunkiem wstępnym - najpierw sprawdzany jest warunek, a następnie wykonywana jest instrukcja. Dlatego pętla while nie zostanie wykonana nawet raz, jeśli początkowy wynik oceny warunku wynosi 0.

Podstawowa forma operatora robić - póki:

operator;

podczas (warunek);

gdzie operator jest prostą, złożoną lub pustą instrukcją.

Operator robićchwila jest operatorem pętli z warunkiem końcowym, tj. najpierw wykonywana jest instrukcja, a następnie sprawdzany jest warunek. Ponieważ w pętli do-while warunek jest sprawdzany na końcu pętli, pętla zostanie wykonana przynajmniej raz.

W pętlach, takich jak while i do-while, dozwolone są te same metody wcześniejszego wyjścia z pętli i wcześniejszego zakończenia bieżącego kroku pętli, jak w instrukcji for, ale w tym drugim przypadku, w przeciwieństwie do pętli for, sterowanie jest przeniesiony do sprawdzania stanu. Aby zapobiec nieskończonej pętli wewnątrz pętli while i do-while, musisz zapewnić możliwość zmiany zmiennych zawartych w warunku.

Na przykład:

dla (i=1;i<=300;i++) // Печать целых чисел, кратных 5

jeśli (i%5!=0) kontynuuj;

printf("%5d",i);

Przykłady nieskończonych pętli:

operator;

2) while(number_not_0) // Zawsze prawda!

operator;

operator;

while(liczba_nie_0); // Zawsze prawda!

Wśród instrukcji pętli musi znajdować się warunek wyjścia.

Pętle zagnieżdżone

W przypadku pętli zagnieżdżonych jedna pętla znajduje się wewnątrz drugiej, na przykład:

for(i=nn;i

for(j=mn;j

operator;

gdzie operator jest prostą, złożoną lub pustą instrukcją. Pętla wewnętrzna zostanie wykonana dla każdej wartości parametru i, która spełnia warunek pętli zewnętrznej.

Przykład:

dla(i=1;i<10;i++) // Печать таблицы умножения

dla(j=1;j<4;j++)

printf("\n %d*%d=%2d", i, j, i*j);

printf("\n");

Przykład użycia instrukcji for

Oblicz . Program powinien drukować wyniki pośrednie i końcowe.

Tekst programu może wyglądać tak:

#włączać

#włączać

puts("Wpisz N");

scanf(„%d”,&N);

dla (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол-

( // weź i podwój przypisanie

printf(" \n k=%d s=%f ", k, s);

printf("\n ODPOWIEDŹ: s=%f, Naciśnij dowolny klawisz...",s);

Warianty poszczególnych zadań

Napisz program do zdefiniowania tabeli wartości funkcji w w dowolnym zakresie [ a,b] zmiany argumentów X z dowolnym krokiem h. Wartości a, b, h wprowadzone z klawiatury. Tabela musi zawierać następujące kolumny: numer seryjny, wartość argumentu x, wartość funkcji, komunikat o rosnącej lub malejącej funkcji, różnica między dwiema sąsiednimi wartościami funkcji.

Określ maksymalne i minimalne wartości funkcji.

1. a=-p; b=p; h=0,4.

2. a=0,7; b=1,8; h=0,1.

3. a=-0,5; b=2,5; h=0,2.

4. a=-0,9; b=2,7; h=0,3.

5. a=-2; b=0,8; h=0,2.

6. a=-1,9; b=2,7; h=0,3.

7.a=-0,4p; b=0,4p; h=0,5.

8. a=-0,3p; b=1,3p; h=p/10.

9. a=-p/2; b=p/2; h=p/10.

10. a=-3; b=3; h=0,5.