DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu

Instrukcje strukturalne to takie, które zawierają inne instrukcje i kontrolują kolejność ich wykonywania. Obejmują one:

  • instrukcja złożona
  • operator warunkowy If;
  • oświadczenie warunkowe dotyczące sprawy
  • powtórz instrukcję pętli;
  • instrukcja while loop;
  • operator dla pętli.

Oświadczenie złożone

Często konieczne jest, aby w związku z niektórymi działaniami kilku operatorów było postrzeganych w programie jako jeden operator. Taki operator można uzyskać, jeśli niezbędna sekwencja operatorów jest połączona z nawiasami operatora. Słowa serwisowe Początek i Koniec nazywane są nawiasami operatora.

Format operatora:

numer operatora 1;

operator nr 2;

operator nr 3;

numer operatora n-1;

numer operatora n; Koniec;

Słowo Początek pełni rolę nawiasu otwierającego, słowo Koniec pełni rolę nawiasu zamykającego.

Operator złożony jest postrzegany jako pojedynczy operator. Można go wstawić w dowolnym miejscu programu, gdzie dozwolony jest tylko jeden operator.

Operatory zawarte w operatorze złożonym, jak każdy inny operator, są oddzielone średnikiem, ale separator ten można pominąć przed końcem. Po zakończeniu potrzebny jest średnik jako separator między instrukcją złożoną a kolejną instrukcją.

W poniższych sekcjach znaczenie i cel wyrażenia złożonego zostaną zilustrowane licznymi przykładami.

JEŻELI warunek

Operator If implementuje konstrukcję algorytmiczną „Rozwiązanie” i pozwala na zmianę kolejności operatorów w zależności od prawdy lub fałszu określonego warunku. Format operatora można zapisać w dwóch postaciach: pełnej i niekompletnej.

Format operatora w pełnej formie:

Gdyby<условие> Następnie<оператор 1> Jeszcze<оператор 2>

Format operatora w niekompletnej formie:

Gdyby<условие>Następnie<оператор 1>

Jeśli (jeśli), to (wtedy), inaczej (inaczej) są słowami zastrzeżonymi.

Schematy blokowe instrukcji if przedstawiono poniżej:

Instrukcja warunkowa działa w następujący sposób. Wyrażenie warunkowe jest obliczane jako pierwsze.< условие >. Jeśli wynikiem jest Prawda, to< оператор 1 > (po słowie Następnie) i< оператор 2 > pominięto. Jeśli wynikiem jest False, to< оператор 1 > pominięte, ale wykonane< оператор 2 > (po słowie Else). W przeciwnym razie przecinek nigdy nie będzie poprzedzony średnikiem, ponieważ nie jest to koniec instrukcji If.

Inna część<оператор 2> Warunkową instrukcję If można pominąć. Gdyby< условие > Jeśli stwierdzenie jest prawdziwe, to<оператор 1> w przeciwnym razie to oświadczenie zostanie pominięte. W takim przypadku format instrukcji warunkowej ma niepełną formę:

Porównaj dwa projekty:

Gdyby<условие>Następnie<оператор 1>;

Gdyby<условие>Następnie<оператор 1>; <оператор 2>;

W pierwszej linii<оператор 1> wykonane lub nie wykonane w zależności od wykonania<условия> . W drugiej linii<оператор 2> zawsze wykonywane, ponieważ po<оператора 1> istnieje separator „;” a wszystko, co jest warte pole separatora, to inny operator. Dlatego zgodnie z formatem instrukcji If po zastrzeżonych słowach Then i Else może znajdować się tylko jedna instrukcja.

Przykład:

Jeżeli a\u003e 0 to b: \u003d 1;

Jeżeli a\u003e 0 to b: \u003d 1; a: \u003d b; (operator a: \u003d b; zawsze wykonywane)

Jeśli po słowach When and Else konieczne jest wykonanie nie jednego, ale kilku operatorów, należy wstawić nawiasy operatora, tj. użyj instrukcji złożonej.

W takim przypadku instrukcja If będzie wyglądać następująco:

Gdyby<условие>Następnie

operator 11;

operator 1n;

operator 21;

operator 2n;

Przykład.

Jeśli a\u003e 0, to zacznij b: \u003d 1; a: \u003d b; koniec;

ZADANIE 1. Oblicz wartość funkcji podanej przez nierówności

y \u003d x + 1 przy x<0; y=2∙x при x>0. program a5; var x, y: real; zacznij pisać („Wpisz wartość x:”); readln (x); if x writeln („Wartość y wynosi:”, y: 6: 2) kończy się.

Wyniki programu:

Wprowadź wartości x: 0,5

Wartość y wynosi: 1,00

ZADANIE 2. Napisz program do rozwiązania równania kwadratowego. Jeśli wartość dyskryminatora jest mniejsza niż zero, wyślij odpowiedni komunikat.

Program a6; var a, b, c: real; (współczynniki równania) x1, x2: rzeczywiste; (pierwiastki równania) d: rzeczywisty; (dyskryminator) rozpocząć Writeln („Rozwiązanie równania kwadratowego”: 50); Napisz („Wprowadź wartości współczynników a, b, c:”); Readln (a, b, c); (wprowadzenie współczynników) d: \u003d b * b-4 * a * c; jeśli (d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

Wyniki programu:

Rozwiązanie równania kwadratowego

Wprowadź współczynniki a, b, c: 3 1 6

Równanie nie ma korzeni.

W instrukcji If można użyć nie tylko instrukcji złożonej, ale także dowolnej instrukcji strukturalnej. Operator warunkowy, jeśli przez nas uważany, może być również wykorzystywany jako taki operator. W tym przypadku mówimy o zagnieżdżonych instrukcjach If.

Przykład.

jeśli warunek to
zaczynać Wsporniki operatora
operator; zagnieżdżone
Instrukcja IF
niekompletna forma
jeśli warunek to operator
oświadczenie else;
koniec
jeszcze
zaczynać Wsporniki operatora
operator; zagnieżdżone
instrukcja IF
niekompletna forma
jeśli warunek
następnie oświadczenie;
koniec;

Podczas pracy z zagnieżdżonymi operatorami gdyby należy wziąć pod uwagę następujące zasady:

  • przed słowem zastrzeżonym inaczej symbol „;” nigdy nie ustawione;
  • słowo zarezerwowane „inne” jest zawsze powiązane z najbliższym słowem zastrzeżonym, które znajduje się przed nim.

ZADANIE 3. Ulepszamy program rozwiązywania równania kwadratowego (ZADANIE 2). Gdy wartość współczynnika wynosi a \u003d 0, równanie degeneruje się. Fakt ten nie został uwzględniony w programie, co spowoduje błąd krytyczny podczas wykonywania programu (dzielenie przez zero). Aby wykluczyć dzielenie przez zero, sprawdzamy wartość współczynnika a po wprowadzeniu go przez operator Readln (a, b, c).

Ponieważ zmienna a jest zadeklarowana w programie jako zmienna typu rzeczywistego, jej wartość liczbowa w maszynie nie jest dokładnie reprezentowana, z pewnym błędem. Dlatego rekord jak

Istnieje kilka opcji poprawnego porównania wartości zmiennej rzeczywistej z zerowym:

ZADANIE 4. Zaawansowany program rozwiązań kwadratowych.

Program a7; Var a, b, c: real; (współczynniki równania) x1, x2: rzeczywiste; (pierwiastki równania) d: rzeczywisty; (dyskryminator) rozpocząć Writeln („Rozwiązanie równania kwadratowego”: 50); Napisz („Wprowadź wartości współczynników a, b, c:”); Readln (a, b, c); (wprowadzanie współczynników), jeżeli runda (a)<>0, a następnie rozpocznij d: \u003d b * b-4 * a * c; jeśli d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

Wyniki programu:

Rozwiązanie równania kwadratowego Wprowadź wartości współczynników a, b, c: 0 1 6 Dzielenie przez zero.

Instrukcja warunkowego wyboru wielkości liter

Operator wyboru jest uogólnieniem operatora If i jest stosowany w przypadkach, w których konieczne jest wykonanie tylko jednego operatora z zestawu operatorów, w zależności od wartości klucza wyboru.

Wyrażenie jest używane jako klawisz wyboru, który znajduje się między zastrzeżonymi słowami Case i of. Wyrażenie może być liczbą całkowitą, logiczną lub typem znaku. Wyrażenie nie może być typu Real, String.

Format operatora:

Przypadek "<ключ выбора>"stała 1: operator 1; stała 2: operator 2; stała 3: operator 3; ... stała N-1: operator N-1; stała N: operator Nn; inny operator Koniec;

Tutaj Case (w przypadku), of (of), Else (inaczej), End (end) są słowami zastrzeżonymi.

Klawisz wyboru jest wyrażeniem dowolnego typu oprócz Real i String.

Constant1 jest stałą tego samego typu co wyrażenie.

Operator1 jest dowolnym operatorem.

Operator selekcji działa w następujący sposób. Najpierw oceniane jest wyrażenie<ключ выбора> , a następnie w sekwencji operatorów jest szukany taki, który poprzedza stała równa obliczonej wartości<ключ выбора> . Wykonywana jest znaleziona instrukcja, po której instrukcja select kończy swoją pracę (kontrola jest przekazywana do końca). Jeśli na liście stałych nie zostanie znaleziona stała odpowiadająca obliczonej wartości klawisza wyboru, sterowanie zostanie przekazane operatorowi za słowem Else.

Inna część<оператора> można pominąć, a jeśli żądanej stałej nie ma na liście stałych, nic się nie dzieje, a operator selekcji po prostu kończy swoją pracę.

ZADANIE 5. Napisz prosty program kalkulacyjny.

Program a8; var x, y: real; z: prawdziwy; (wynik) op: char; (wybierz klawisz) rozpocznij zapis („Wprowadź operandy x, y:”); Readln (x, y); Napisz („Wprowadź operację (+, -, *, /):”); Readln (op); przypadek „+”: z: \u003d x + y; „-”: z: \u003d x-y; „*”: Z: \u003d x * y; „/”: Jeśli y0, to z: \u003d x / y Elsewriteln („Dzielenie przez zero”); Else writeln („Brak działania!”); koniec; (op) (abyś mógł zaznaczyć „czyj” koniec) writeln („Wynik to \u003d’, z: 8: 2); koniec.

Wyniki programu:

Wpisz operandy x, y: 4 2

Wprowadź operację (+, -, *, /): *

Wynik to \u003d 8,00

W programie klawisz wyboru jest zmienną typu znakowego. W zależności od wprowadzonej wartości znaku (+, -, *, /) wykonywana jest jedna z operacji arytmetycznych: dodawanie, odejmowanie, mnożenie lub dzielenie. Jeśli zero zostanie wprowadzone jako dzielnik, wówczas dzielenie nie jest możliwe i wyświetlany jest komunikat „Dzielenie przez zero”. Jeśli zostanie wprowadzony jakikolwiek inny znak, wynikiem będzie komunikat „Brak akcji!”. Jeśli wprowadzone zostaną prawidłowe operacje, wyświetlony zostanie wynik.

ZADANIE 6. Napisz program, który pyta użytkownika o dzień tygodnia, a następnie wyświetla nazwę dnia tygodnia lub komunikat o błędzie, jeśli wprowadzone zostaną niepoprawne dane.

Program a9; Var n: liczba całkowita; (dzień tygodnia) Rozpocznij pisanie („Wpisz dzień tygodnia:”); readln (n); przypadek nr 1: writeln („poniedziałek”); 2: writeln („wtorek”); 3: writeln („środa”); 4: writeln („czwartek”); 5: writeln („piątek”); 6: writeln („sobota”); 7: writeln („niedziela”); w przeciwnym razie napisz („pomyliłeś się!”) koniec; (n) koniec.

Wyniki programu:

Wpisz numer dnia tygodnia: 1

poniedziałek

Żadna stała nie powinna pokrywać się z inną. Jeśli konieczne jest wykonanie tego samego operatora dla kilku stałych, można je na przykład wymienić za pomocą przecinka

przypadek n 1,3,5,7,9: writeln („Są to liczby nieparzyste”); 2,4,6,8,10: writeln („To są liczby parzyste”); koniec;

Operator Nazywa się zdanie języka programowania, które definiuje pełny opis niektórych działań, które należy wykonać. Główną częścią programu w Turbo Pascal jest sekwencja operatorów. Instrukcje separatora są średnikami. Wszystkich operatorów języka Turbo Pascal można podzielić na dwie grupy: proste i strukturalne.

Wywoływani są operatorzy, którzy nie zawierają żadnych innych operatorów prosty. Obejmują one przypisanie, skok bezwarunkowy, wywołanie procedury i puste oświadczenie.

Operator przypisania

Operator przypisania (:=) nakazuje wykonanie wyrażenia określonego po jego prawej stronie i przypisanie wyniku do zmiennej, której identyfikator znajduje się po lewej stronie. Zmienna i wyrażenie muszą być zgodne według typu.

Operator przypisania jest wykonywany w następujący sposób: najpierw obliczane jest wyrażenie po prawej stronie przypisania, a następnie jego wartość jest przypisywana do zmiennej wskazanej po lewej stronie operatora.

Na przykład dla operatora

Rezultat: \u003d A div B;

wykonywany jest pierwszy podział na wartości całkowite wartości zmiennej I od wartości zmiennej Wa następnie wynik jest przypisywany do zmiennej Rezult.

Przykłady zastosowania operatora przypisania:

I:= 8;

S: \u003d A *W;

Ostatok: \u003d A mod B;

Stosunek: \u003d A / B;

Bezwarunkowy operator skoku (przejdź do)

Bezwarunkowy operator skoku (iść do) oznacza „przejdź do” i stosuje się go w przypadkach, gdy po wykonaniu jakiegoś operatora konieczne jest wykonanie kolejnego nie w kolejności, ale innego operatora oznaczonego etykietą.

Przypomnij, że etykieta jest zadeklarowana w sekcji opisu etykiety i może zawierać zarówno znaki numeryczne, jak i alfabetyczne.

Podczas korzystania z operatora iść donależy o tym pamiętać zakres etykiety jest tylko blokiem, w którym jest opisany. Przeniesienie kontroli do innej jednostki jest zabronione.

Zasady korzystania z bezwarunkowego operatora skoku. Zastosowanie bezwarunkowych transferów kontroli w programie jest uważane za teoretycznie zbędne i podlega poważnej krytyce, ponieważ przyczynia się do tworzenia niejasnych i trudnych do modyfikacji programów, które powodują duże trudności w debugowaniu i konserwacji. Dlatego zalecane jest minimalne użycie przez operatora. iść do z zastrzeżeniem następujących zasad:

Należy dążyć do użycia operatorów przejścia (jeśli wydaje się to niemożliwe bez nich), aby przenieść kontrolę tylko w dół (do przodu) w całym tekście programu; w razie potrzeby kontrola transferu z powrotem powinna korzystać z operatorów pętli;

Odległość między etykietą a operatorem przejścia nie powinna przekraczać jednej strony tekstu (lub wysokości ekranu wyświetlacza).

Przykład użycia bezwarunkowego operatora skoku:

etykieta metka; (w sekcji opisów etykiet opisano etykietę z nazwąMetka}

zaczynać (główny program)

(główne instrukcje programu)

(główne instrukcje programu oznaczone)

Porządek pracy

    Aby przestudiować informacje teoretyczne na ten temat: „Pisanie programu w Pascal przy użyciu operatorów przypisania i bezwarunkowego skoku”.

    Uzyskaj indywidualne zadanie od nauczyciela i opracuj program zgodny z zadaniem.

    Pokaż nauczycielowi program roboczy.

    Odpowiedz na pytania kontrolne.

pytania testowe

    Główne elementy programowania.

    Główne cechy programu. Pojęcia dotyczące języka, nakładek, bloków globalnych i lokalnych.

    Operatorzy języka programowania Pascal. Operator przypisania. Format, przykłady.

    Bezwarunkowy operator skoku. Format, przykłady. Podstawowe warunki użytkowania

Praca laboratoryjna nr 7

Pisanie programu w Pascal przy użyciu operatorów warunkowych i operatora selekcjiWalizka

cel pracy : kształtowanie wiedzy i umiejętności pracy z operatorami języków. Nabycie umiejętności programowania za pomocą operatorów przypisań i bezwarunkowych skoków.

Krótka informacja teoretyczna

Instrukcje warunkowe

Operatory warunkowe mają na celu wybranie jednej z możliwych akcji (operatorów) do wykonania w zależności od określonego warunku (w tym przypadku jedna z akcji może być pusta, tj. Nieobecna). Jako warunki wyboru używana jest wartość. wyrażenie logiczne.

Turbo Pascal ma dwie instrukcje warunkowe: jeśli i sprawa.

Jeśli warunek

Oświadczenie o stanie gdyby jest jednym z najpopularniejszych narzędzi, które zmieniają naturalną kolejność wykonywania instrukcji programu.

Może mieć jedną z następujących postaci:

    gdyby<условие> następnie<оператор1>

jeszcze<оператор2>;

    gdyby<условие> następnie<оператор>;

Przetłumaczone z języka angielskiego formaty te można zdefiniować jako:

    GDYBY <условие> DO <оператор1> JESZCZE <оператор2>

    GDYBY <условие> DO <оператор>

Oświadczenie o stanie gdyby wykonywane w następujący sposób. Najpierw oceniane jest wyrażenie zapisane w warunku. W wyniku jego obliczenia uzyskuje się wartość typu logicznego.

W pierwszym przypadku, jeśli wartość wyrażenia wynosi Prawdziwe (prawda) jest spełniona <оператор1>, wskazane po słowie następnie(w tłumaczeniu - „to”). Jeśli wynikiem oceny wyrażenia w warunku jest Fałszywe (false), a następnie wykonany <оператор2> .

W drugim przypadku, jeśli wynik wyrażenia Prawdziwe, wykonane <оператор>, gdyby Fałszywe - operator bezpośrednio za operatorem gdyby. Operatorzy gdyby może zagnieżdżone.

Przykład fragmentu programu z instrukcją warunku if:

jeśli Ch \u003d "N", to Parol: \u003d True

else Parol: \u003d False;

jeśli Parol \u003d Prawda, to

jeśli X \u003d 100, to wpisz („Hasło i kod są poprawne”)

Writeln („Błąd w kodzie”);

W tym przykładzie wartość zmiennej typu znaku jest odczytywana z klawiatury Ch. Następnie sprawdzany jest warunek Zh=" N." . Jeśli tak, to zmienna Paroltyp logiczny ma przypisaną wartość Prawdziwejeśli warunek nie jest spełniony, Fałszywe. Następnie wartość kodu jest odczytywana z klawiatury X. Następnie instrukcja if sprawdza warunek Parol \u003d True. Jeśli to ważne Prawdziwe, a następnie operator sprawdza wprowadzone hasło jeśli X \u003d 100. Jeśli warunek X \u003d 100 ma znaczenie Prawdziwe, wyświetlany jest komunikat „Hasło i kod są poprawne”, a sterowanie w programie jest przekazywane operatorowi po słowie koniecjeśli to ważne Fałszywe, instrukcja złożona stojąca po wykonaniu słowa jeszcze, który wyświetla komunikat „Błąd w kodzie” na ekranie monitora wideo i wywołuje standardową procedurę Przystanek (1) zatrzymać program.

Funkcja aplikacji operatoragdyby. Podczas korzystania z zagnieżdżonych instrukcji warunkowych może wystąpić niejednoznaczność składniowa, na przykład:

jeśli warunek 1 to jeśli warunek 2 to<оператор1> jeszcze<оператор2>

Pojawiająca się dwuznaczność do jakiego operatora gdyby część należy jeszcze <оператор2>, dozwolone jest, aby słowo serwisowe jeszcze zawsze powiązane (powiązane) z najbliższym oficjalnym słowem w tekście gdyby który nie jest jeszcze powiązany ze słowem serwisowym jeszcze.

W związku z tym należy zachować ostrożność podczas pisania zagnieżdżonych instrukcji warunkowych.

Przykład 1 . Utwórz program, który oblicza iloraz dwóch liczb całkowitych. Ze względu na to, że nie można podzielić przez zero, zorganizuj kontrolę wprowadzania danych.

Aby kontrolować wartości wejściowe dzielnika, używamy operatora skoku warunkowego jeśli ... to ... jeszcze.

Tekst programu może wyglądać następująco:

program Primer1;

A, B: liczba całkowita;

Napisz („Wprowadź wartość dywidendy A:”);

Napisz („Wprowadź wartość dzielnika B:”);

jeśli B \u003d 0 (Kontrola wprowadzania numerub}

następnie Writeln („Nie można podzielić Ha zero”) (Warunek spełniony)

(Warunek niespełniony)

Rezultat: \u003d A / B;

Writeln („Iloraz liczb”, A, „i”, B, „\u003d”, wynik);

Operator przejścia pozwala przejść z bieżącej lokalizacji programu do innej lokalizacji, która nie jest następna w kolejności. Ten operator narusza normalny przebieg wykonywania programu.

Przejście odbywa się za pomocą tak zwanych tagów.
Etykieta to identyfikator lub liczba całkowita bez znaku w zakresie od 0 do 9999, która znajduje się przed operatorem programu i jest oddzielona dwukropkiem. Wszystkie tagi używane w programie muszą być wcześniej zadeklarowane w sekcji deklaracji tagów rozpoczynającej się od etykiety WORD.

Można teoretycznie wykazać, że rozważane operatory są wystarczające do pisania programów o dowolnej złożoności. Pod tym względem obecność operatorów przejścia w języku wydaje się zbędna. Co więcej, nowoczesna technologia programowania strukturalnego opiera się na zasadzie „programowania bez GOTO”: uważa się, że nadużycie operatorów przejściowych utrudnia zrozumienie programu, przez co jest mylące i trudne do debugowania. Jednak w niektórych przypadkach korzystanie z operatorów oddziałów może uprościć program.

Operator przejścia ma postać:

Tutaj goto jest słowem zastrzeżonym (przejdź [do etykiety]); - etykieta.

Etykieta 1; // Zadeklaruj etykietę o nazwie 1 var
a: Liczba całkowita; zaczynać
a: \u003d 10;
Idź 1; // Przejdź do etykiety 1
a: \u003d sqrt (a); // To oświadczenie nigdy nie zostanie wykonane! 1: a: \u003d a + a; // Instrukcja oznaczona jako 1 koniec;

Operatory skoku warunkowego

Operator warunku ma wykonywać lub nie wykonywać żadnych działań zależnych od wyniku warunku typu Boolean. Ten operator służy do rozwidlenia wykonania programu,
to znaczy, jeśli ten warunek jest spełniony (i tylko w tym przypadku!), wówczas spełniona jest pewna sekwencja operatorów; w przeciwnym razie wykonywane są inne operatory. Operator warunku wygląda następująco:

gdyby stan: schorzenie następnie operator1 inny operator2;

Instrukcja warunku może być napisana w uproszczonej formie:

gdyby stan: schorzenie następnie operator;

Oto kilka przykładów użycia instrukcji warunku:

jeśli a\u003e 0 to b: \u003d sqrt (a) else b: \u003d a * 2; // Warunek Operator
jeśli a \u003d 10, to b: \u003d b + 1; // Uproszczony formularz

Aby zorganizować rozgałęzienie w kilku kierunkach (więcej niż dwóch), możesz użyć kilku operatorów warunkowych zagnieżdżonych w sobie. Zagnieżdżanie instrukcji warunkowych jest zgodne z tymi samymi regułami, co zagnieżdżanie operatorów złożonych.

W przeciwieństwie do innych języków programowania w Object Pascal, priorytet operacji relacyjnych jest mniejszy niż operacji logicznych, więc poszczególne elementy złożonego wyrażenia logicznego są ujęte w nawiasy. Na przykład taki zapis poprzedniego oświadczenia będzie niepoprawny:
jeśli a\u003e bi 0, to ... // Błąd, ponieważ w rzeczywistości (biorąc pod uwagę priorytet operacji) kompilator przetłumaczy ten wiersz:
jeśli a\u003e (bib) 0, to ...

Operator oddziału

Tym razem będę kontynuować rozważanie tematu „Operatorzy”.

Instrukcje przejściowe (bezwarunkowe) mają na celu przekazanie kontroli operatorowi oznaczonemu etykietą (poprzedzoną etykietą).

Autorska wersja języka wymaga oznaczenia jako dziesiętna liczba całkowita w zakresie 1..9999 . Jako tagi Turbo Pascal pozwala na użycie identyfikatorów. Podczas korzystania z operatorów przejścia należy przestrzegać następujących zasad:

1) Wszystkie tagi w bloku muszą zostać opisane. Ponadto każdą etykietę można opisać nie więcej niż raz. Te. w bloku nie mogą być dwie etykiety o tej samej nazwie.

2) Etykieta wskazana przez operatora przejścia musi wskazywać na operatora (zaznaczyć go) znajdującego się w tym samym bloku, co sam operator przejścia. Te. przejścia poza procedurami (funkcjami) lub wewnątrz nich są niedozwolone.

3) Próba przeniesienia (kontroli przeniesienia) do struktury operatora może powodować nieprzewidziane efekty, chociaż w tym przypadku kompilator może nie generować komunikatów o błędach.

Użycie bezwarunkowego przejścia w programie jest uważane za teoretycznie zbędne, ponieważ może powodować zamieszanie w łańcuchu logicznie zlokalizowanych operacji programu, co może prowadzić do wielkich trudności podczas debugowania i modyfikacji takiego programu. Zaleca się stosowanie operatorów przejścia, przestrzegając następujących zasad:

1) jeśli wydaje się to niemożliwe bez operatorów przejścia, musisz starać się je wykorzystywać do przenoszenia kontroli tylko w dół tekstu programu (do przodu); gdy konieczne jest przeniesienie sterowania „do tyłu”, lepiej jest użyć operatorów pętli (patrz poniżej);

2) dla jasności odległość między etykietą a operatorem przejścia do niej nie powinna przekraczać jednej strony tekstu (lub wysokości ekranu wyświetlacza), w przeciwnym razie znaczenie takiego bezwarunkowego przejścia będzie trudne do uchwycenia.

Tagi są definiowane przez opisy rozpoczynające się od słowa serwisowego etykietai zawierają sekwencję nazw etykiet oddzielonych przecinkami. Aby przenieść kontrolę na operatora oznaczonego etykietą, zapewniony jest bezwarunkowy operator skoku iść do. Etykieta jest oddzielona od następującego po niej operatora symbolem „:” (dwukropek). Przykład:

var j: liczba całkowita;

(zadeklaruj dwa tagi)

etykietaStart, Zakończ;

Start: writeln („Rozpoczęcie programu”);

iść do koniec

Zakończ: writeln („Koniec programu”);

Oświadczenie złożone

Najprostszym operatorem strukturalnym jest operator złożony. Ten operator ustawia kolejność wykonywania zawartych w nim operatorów. Operator złożony składa się z listy operatorów oddzielonych символ; ’(średnik) i ujęty w słowa serwisowe zaczynaći koniec.

Potrzeba instrukcji złożonej może wystąpić, gdy składnia jest język pascal pozwala na użycie tylko jednego operatora w miejscu programu, gdzie wymagana jest cała seria działań (operatorzy, patrz przykłady poniżej). Oto prosty przykład instrukcji złożonej:

Operator warunkowy

Znaczenie operatora warunkowego polega na analizie pewnego warunku logicznego i zgodnie z tym, czy warunek ten jest spełniony, czy nie, przekazanie kontroli do odpowiedniego operatora. Warunek może być wyrażeniem zwracającym wartość logiczną typu logicznego. Wynik analizy warunku może być wartością prawdziwe, tj. warunek jest spełniony i fałszywe, tj. warunek nie jest spełniony.

Instrukcja warunkowa jest wykonywana w następujący sposób. Wyrażenie określone po słowie serwisowym jest wstępnie obliczane GDYBY. Jeżeli warunek jest spełniony, sterowanie jest przekazywane do operatora określonego po słowie serwisowym następniejeśli nie, instrukcja określona po wykonaniu słowa serwisowego else. Ponadto część wyrażenia warunkowego, zaczynającego się od słowa else, może być nieobecna. Oto przykłady instrukcji warunkowych:

Gdyby Wciśnięty następnie writeln („Klawisz wciśnięty”);

Gdyby A\u003e B następnie Min .: \u003d B

jeszcze Min .: \u003d A;

gdyby X1\u003e X2 potem zacznij

Ostatni przykład ma miejsce tylko wtedy, gdy konieczne jest wykonanie szeregu instrukcji według warunku, ale z uwagi na fakt, że za słowem serwisowym następnielub jeszczetylko jeden operator może podążać, czyli zdolność do rozwiązania sytuacji za pomocą operatora złożonego zawierającego tylko kilka niezbędnych operatorów.

Podczas konstruowania zagnieżdżonych instrukcji warunkowych należy pamiętać, że gałąź else zawsze należy do poprzedniej gałęzi GDYBYktóry nie ma jeszcze innej gałęzi. Te. po budowie

gdyby Warunek 1 a następnie, jeśli Warunek 2 następnie Operator1 jeszczeOperator2;

dla jasności możesz to interpretować w ten sposób

gdyby Warunek 1 potem zacznij

gdybyWarunek 2 następnie Operator1 jeszczeOperator2;

Należy zachować ostrożność podczas korzystania z zagnieżdżonych instrukcji warunkowych, aby w czasie kompilacji kolejnej instrukcji warunkowej programu nie można było stracić z oczu tak pozornie małego szczegółu, który może prowadzić do zupełnie odmiennego wykonania rozgałęzienia warunkowego.

Operator opcji

Często zdarza się sytuacja, gdy łańcuch instrukcji warunkowych rośnie do ogromnej skali, na przykład poniższy przykład ilustruje skromne rozgałęzienie, ale już zawierające złożoność postrzegania związanego z nim znaczenia:

rodzaj TWay \u003d (góra, prawo, dół, lewo);

var Droga: TWay;

MapX, MapY: słowo;

gdybyWay \u003d w górę następnie MapY: \u003d MapY - 1

jeszcze gdyby Droga \u003d w prawo następnieMapX: \u003d MapX + 1

jeszczegdyby Way \u003d w dół następnieMapY: \u003d MapY + 1

jeszcze MapX: \u003d MapX - 1;

Ostatni jeszcze oddział nie ma operatora Gdyby, ponieważ jeżeli wszystkie trzy warunki nie zostaną spełnione, logiczne byłoby, aby operator przystąpił do działania odpowiadającemu czwartemu i ostatniemu wariantowi możliwych wartości tego typu Tway.

W tym przypadku nadal mamy szczęście, że ten typ Twayma tylko cztery opcje dla akceptowanych wartości. Kompilacja takich gałęzi stałaby się rutyną, gdyby istniało dziesięć lub więcej opcji? Ale w prezentowanej gałęzi widoczny jest prosty wzór. Czy można to w jakiś sposób uprościć, uczynić bardziej wydajnym i czytelnym? Jest to możliwe i do tego celu operator języka jest dostarczany w języku, którego konstrukcja może zawierać dowolną liczbę alternatyw dla określonego wyrażenia. Następnie ostatni przykład można przepisać w nowy sposób:

walizka Droga z

W górę: MapY: \u003d MapY - 1;

Po prawej: MapX: \u003d MapX + 1;

W dół: MapY: \u003d MapY + 1;

Po lewej: MapX: \u003d MapX - 1;

Cóż, to zupełnie inna sprawa. Teraz rozważ kolejność wykonania tego operatora. Wartość wyrażenia następującego po słowie serwisowym jest wstępnie obliczana walizka, ale ponieważ w tym przypadku istnieje nazwa zmiennej Droga, następnie odczytywana jest wartość tej zmiennej. Wynikową wartość porównuje się kolejno z każdą alternatywą (stałą, natychmiastową wartością) określoną po słowie serwisowym z. Jeśli wartość wyrażenia jest równa następnej stałej, wykonywany jest operator alternatywny następujący po tej stałej, oddzielony dwukropkiem. Po ukończeniu operatora alternatywnego akcja przechodzi do operatora zgodnie z operatorem wariantu. Jeśli wartość nie pasuje Drogabez stałej dany operator opcja nie powoduje żadnych działań.

Ale co jeśli konieczne jest zapewnienie pewnej gałęzi operatorów, która byłaby wykonana, gdyby wartość wyrażenia nie pasowała do żadnej stałej? Aby to zrobić, możesz użyć alternatywy else, na przykład:

walizkaDroga z

W górę: MapY: \u003d MapY - 1;

Po prawej: MapX: \u003d MapX + 1;

W dół: MapY: \u003d MapY + 1;

jeszcze MapX: \u003d MapX - 1;

Dlatego konstrukcja zbudowana przy użyciu operatora skrzynki jest całkowicie równoważna konstrukcji zbudowanej wcześniej przy użyciu operatora GDYBY. Ponadto jest bardziej wizualny i nie ma ryzyka uwikłania się w liczne jeszcze.

Jeszcze raz chcę zwrócić uwagę na fakt, że stałe w operatorze wariantu mogą być albo liczbami całkowitymi bezpośrednimi, albo opisanymi wcześniej nazwami typów bez typu. Użycie stałych wpisanych jako alternatywy dla operatora wariantu jest niedozwolone. Ponadto w każdej opcji można określić listę stałych oddzielonych przecinkami lub zakres wartości, na przykład:

walizkaDroga z

W górę, w dół: writeln („Moving vertical”);

Prawo, lewo: writeln („Poruszanie się w poziomie”);

walizkaX z

10,20,30: writeln („dziesiątki”);

1..9: writeln („jednostki”);

W najnowszej konstrukcji operator writeln („jednostki”) zostanie wykonane, jeśli zmienna X ma jedną z wartości 1,2,3,..,8,9 .

Jak widać, wyrównałem linie ze stałymi z dwukropkami, ponieważ wydaje mi się, że ten rodzaj jest bardziej widoczny, chociaż jest to kwestia gustu, ale jak wiadomo, nie ma towarzysza w smaku i kolorze; O)

Użyj operatora wariantu zgodnie z następującymi zasadami:

1) Prawidłowa wartość wyrażenia - „przełącznik” zapisany po słowie serwisowym walizkamuszą spełniać typ dyskretny: dla typu liczb całkowitych muszą znajdować się w zakresie -32768..32767 .

2) Wszystkie wskazane stałe alternatyw muszą być typu zgodnego z rodzajem wyrażenia.

3) Stałe w alternatywach nie powinny być powtarzane w operatorze wariantu, a zakresy nie powinny się pokrywać i nie powinny zawierać stałych określonych w tej lub innych alternatywach.

Jeszcze jedna rzecz. Projekt walizkazapewnia jednego operatora dla każdej alternatywy. Jeśli konieczne będzie wykonanie kilku instrukcji, zgrupuj je w instrukcję złożoną. start..end. Możliwe jest określenie pustego operatora dla alternatywy poprzez umieszczenie symbolu „;” (średnik) bezpośrednio po dwukropku, który nic nie zrobi. Składnia gałęzi jeszczezapewnia wskazanie sekwencji instrukcji oddzielonych symbolem „;” (średnik).

DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu