Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

Ustrukturyzowane operatorzy nazywane są takimi operatorami, które obejmują innych operatorów i kontrolują sekwencję ich wykonania. Obejmują one:

  • operator kompozytowy;
  • operator warunkowy, jeśli;
  • casel Operator Case;
  • powtórzyć operator cyklu;
  • operator cyklu:
  • operator cykl.

Operator kompozytowy

Często konieczne jest, aby kilku operatorów jest postrzegany w odniesieniu do niektórych działań jako jednego operatora. Taki operator można uzyskać, jeśli niezbędna sekwencja operatorów łączy z wspornikami operatora. Służby służbowe i końcowe nazywane są wspornikami operatora.

Format operatora:

numer operatora 1;

operator numer 2;

numer operatora 3;

operator nr n-1;

numer operatora N; Koniec;

Słowo rozpoczyna odgrywa rolę wspornika otwierającego, koniec słowa jest rolą wspornika zamykającego.

Operator kompozytowy jest postrzegany jako pojedynczy operator. Można go wprowadzić do dowolnego miejsca programu, w którym dozwolony jest tylko jeden operator.

Operatorzy zawartych w operatorze kompozytowym, jak każdy operatorzy, są oddzielone średnikiem, ale przed końcem, separator można nie być zainstalowany. Po zakończeniu punktu przecinka jest konieczne jako separator między operatorem kompozytowym a następnym operatorem.

W poniższych sekcjach znaczenie i cel operatora kompozytowego zostaną zilustrowane na licznych przykładach.

Operator warunkowy, jeśli.

Jeśli operator implementuje algorytmiczny projekt "Rozwiązanie" i pozwala na zmianę procedury wykonania operatorów w zależności od prawdy lub filcu w pewnym warunkach. Format operatora można zarejestrować w dwóch formach: pełny i niekompletny formularz.

Format operatora w pełnej formie:

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

Format operatora w niekompletnym formacie:

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

Jeśli (jeśli), potem (wtedy), else (inaczej) - zarezerwowane słowa.

Jeśli operator schematyki są poniżej:

Operator warunkowych działa w następujący sposób. Najpierw oblicza wyrażenie warunkowe< условие >. Jeśli wynik jest prawdziwy (prawda), to jest wykonywane< оператор 1 > (po tym słowie) i< оператор 2 > pominięty. Jeśli wynik jest fałszywy (fałsz), to< оператор 1 > pominięty i wykonany< оператор 2 > (Po słowa innym). W przede wszystkim punkt przecinka nigdy nie jest umieszczony, ponieważ nie jest to koniec operatora, jeśli operator.

Część innego.<оператор 2> operator warunkowy. Jeśli można pominąć. Jeśli< условие > Jeśli operator będzie prawdziwy, a następnie wykonany<оператор 1> W przeciwnym razie operator jest pomijany. W takim przypadku format operatora warunkowego ma niekompletny formularz:

Porównaj dwie konstrukcje:

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

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

W pierwszej linii<оператор 1> lub wykonane lub nie wykonywane w zależności od wykonania<условия> . W drugiej linii<оператор 2> zawsze biegnie, bo po<оператора 1> wart separatora ";" I wszystko, co pole Separator jest uważane za innego operatora. Dlatego, zgodnie z formatem operatora, jeśli po zarezerwowanych słów, a tylko jeden operator może stać.

Przykład:

Jeśli A\u003e 0 następnie B: \u003d 1;

Jeśli A\u003e 0 następnie B: \u003d 1; A: \u003d b; (Operator A: \u003d b; zawsze)

Jeśli musisz wykonać następująco, a nie jeden, ale kilka operatorów, należy umieścić wsporniki operatora, tj. Użyj operatora kompozytowego.

W takim przypadku, jeśli operator będzie miał następujący formularz:

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

operator 11;

operator 1N;

operator 21;

operator 2N;

Przykład.

Jeśli A\u003e 0, a następnie rozpocznij B: \u003d 1; A: \u003d b; koniec;

Zadanie 1. Oblicz wartość funkcji określonych nierówności

y \u003d x + 1 z x<0; y=2∙x при x>0. Program A5; Var x, y: real; Rozpocznij zapis ("Enter X:"); Readln (x); Jeśli x Writeln ("Wartość U oznacza:", Y: 6: 2) koniec.

Wyniki programu:

Wprowadź wartości X: 0,5.

Wartość wartości: 1,00

Zadanie 2. Napisz program rozwiązywanie równania kwadratowego. Jeśli dyskryminacyjny jest mniejszy niż zero, a następnie wyświetl odpowiedni komunikat.

Program A6; Var a, b, c: real; (współczynniki równania) X1, X2: Real; (równanie korzenie) D: Real; (dyskryminujący) Rozpocznij Writeln ("Rozwiązanie równania kwadratowego": 50); Napisz ("Wprowadź wartości współczynników A, B, C:"); Readln (A, B, C); (Wchodzące współczynniki) 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 kwadratu

Wprowadź wartości współczynników A, B, C: 3 1 6

Równanie nie ma korzeni.

W instrukcji IF może być stosowany nie tylko operator kompozytowy, ale także dowolny strukturyzowany operator. Jako taki operator, warunkowy, jeśli można użyć operatora odżywki. W takim przypadku mówią o zagnieżdżonych, jeśli operatorzy.

Przykład.

Jeśli stan wtedy.
Zaczynać. Wsporniki operatora.
operator; zagnieżdżony
Jeśli operator,
niekompletny formularz
Jeśli warunek, a następnie opakowanie
Inaczej operator;
Koniec.
JESZCZE.
Zaczynać. Wsporniki operatora.
operator; zagnieżdżony
jeśli operator,
niekompletny formularz
Jeśli warunek
Potem operator;
koniec;

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

  • przed zarezerwowanym słowem symbolem ";" nigdy nie umieszczaj;
  • zarezerwowane słowo jest zawsze związane z najbliższym przed nim ze stałym zarezerwowanym słowem.

Zadanie 3. Popraw program rozwiązywania równania kwadratowego (zadanie 2). Gdy wartość współczynnika A \u003d 0, równanie jest zdegenerowane. W programie, fakt ten nie został uwzględniony, co spowoduje śmiertelny błąd w wykonaniu programu (podział na zero). W celu wykluczenia podziału do zera, wykonaj walidację współczynnika i po jego wejściu do operatora ReadLn (A, B, C).

Ponieważ zmienna A jest zadeklarowana w programie jako zmienna typu rzeczywistego, jego wartość numeryczna w maszynie jest przedstawiona dokładnie, z pewnym błędem. Dlatego wpisz rekord

Istnieje kilka opcji dla właściwego porównania wartości zmiennej rzeczywistej z zero:

Zadanie 4. Ulepszony program rozwiązania równania kwadratowego.

Program A7; VAR A, B, C: Real; (współczynniki równania) X1, X2: Real; (równanie korzenie) D: Real; (dyskryminujący) Rozpocznij Writeln ("Rozwiązanie równania kwadratowego": 50); Napisz ("Wprowadź wartości współczynników A, B, C:"); Readln (A, B, C); (Wchodząc do współczynników), jeśli okrągły (a)<>0 Następnie rozpocznij D: \u003d B * B-4 * A * C; IF 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:

Roztwór równania kwadratowego Wprowadź wartości współczynników A, B, C: 0 1 6 podziału na zero.

Operator wyboru przypadków

Operator selekcji jest uogólnieniem oświadczenia 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 wartości kluczowej.

Jako klucz używany jest wyrażenie, który znajduje się między zarezerwowanymi słowami sprawy i. Wyrażenie może być całych typów logicznych i symbolicznych. Wyrażenie nie może mieć rodzaju prawdziwego, ciąg.

Format operatora:

W razie "<ключ выбора>"Konstanca1: Operator 1; Konstanca2: Operator 2; Constanta3: Operator 3; ... Constantan-1: Operator N-1; Constantan: Operator NN; Else operator End;

Oto Sase (w przypadku), z (z), inaczej (inaczej), koniec (koniec) są zarezerwowane słowa.

Klucz wyboru jest wyrazem dowolnego typu, z wyjątkiem rzeczywistego i łańcucha.

Constant1 - stała tego samego typu jako wyrażenie.

Operator1 - operator arbitralny.

Operator selekcji działa w następujący sposób. Początkowo wyrażenie jest obliczane<ключ выбора> a następnie w sekwencji operatorów określających ten poprzedzony stałą równą obliczonej wartości<ключ выбора> . Ustalony operator jest wykonywany, po czym operator wyboru kończy swoją pracę (sterowanie jest przesyłane do końca). Jeśli stała nie zostanie znaleziona na liście stałej odpowiadającej obliczonej wartości klawisza wyboru, kontrola jest przekazywana do operatora stojąca za słowem indziej.

Część innego.<оператора> Można pominąć, a następnie w nieobecności na liście stałych pożądana stała nie wydarzy się, a operator selekcji po prostu uzupełnia swoją pracę.

Zadanie 5. Napisz prosty program kalkulatora.

Program A8; Var x, y: real; Z: Real; (Wynik) OP: Char; (wybierz klawisz) Rozpocznij zapis ("Wprowadź operands x, y:"); Readln (X, Y); Napisz ("Wprowadź operację (+, -, *, /): '); Readln (OP); Przypadek OP z "+": Z: \u003d x + y; "-": z: \u003d x-y; '*': Z: \u003d x * y; "/ ': Jeśli y0 następnie z: \u003d x / y elsewriteln (" podział na zero "); Else Writeln ("Akcja nie jest dostarczana!"); koniec; (PO) (więc możesz zaznaczyć ", którego" koniec) Writeln ("wynik jest \u003d ', Z: 8: 2); koniec.

Wyniki programu:

Wejdź do operandów X, Y: 4 2

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

Wynik wynosi \u003d 8,00

W programie klucz znakowy jest zmienną typu symboli. W zależności od wprowadzonych wartości symboli (+, -, *, /) przeprowadzono jedną z działań arytmetycznych: dodanie, odejmowanie, mnożenie lub podział. Jeśli zero zostanie wprowadzony jako dzielnik, dywizja jest niemożliwa, a wydana jest komunikat "Division do Zero". Jeśli wprowadzono żadną inną postać, wynik będzie komunikat "Działanie nie jest dostarczone!". Jeśli wprowadzono dopuszczalne operacje, wynik zostanie wydany.

Zadanie 6. Napisz program, który żąda od numeru dnia użytkownika, a następnie wyświetla nazwę dnia tygodnia lub komunikat o błędzie, jeśli wprowadzono nieprawidłowe dane.

Program A9; Var n: liczby całkowitej; (Numer dnia tygodnia) Rozpocznij pisanie ("Wprowadź numer dnia tygodnia:"); Readln (n); Przypadek n 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 pisz ("mylisz się!") (n) koniec.

Wyniki programu:

Wpisz dzienną liczbę tygodnia: 1

poniedziałek

Żadna stała nie powinna pokrywać się z drugim. Jeśli chcesz wykonać ten sam operator dla wielu stałych, możesz wymienić je przez przecinek, na przykład

przypadek n 1,3,5,7,9: Writeln ("Są to nieparzyste figury"); 2,4,6,8,10: Writeln ("Są to nawet liczby"); koniec;

Operator Programowanie Propozycja języka nazywana jest pełnym opisem niektórych działań, które należy wykonać. Główną częścią programu Turbo Pascal jest sekwencją operatorów. Separator operatorów jest punktem z przecinkiem. Wszystkie operatorzy języka Turbo Pascal można podzielić na dwie grupy: proste i konstrukcyjne.

Operatorzy nie zawierają żadnych innych operatorów prosty. Obejmują one operatory przypisywania, bezwarunkowe przejście, procedura połączenia i pusty operator.

Operator aplikacji.

Operator aplikacji. (:=) Przepisuje wykonanie wyrażenia określonego w prawej części i przypisanie wyniku zmiennej, której identyfikator znajduje się po lewej stronie. Zmienna i wyrażenie muszą być zgodne z typem.

Oświadczenie przydziału jest wykonywane w następujący sposób: Po pierwsze, wyrażenie jest obliczane po prawej stronie przypisania, a następnie jego wartość jest przypisana do zmiennej określonej po lewej stronie operatora.

Na przykład dla operatora

Rezultura: \u003d Div B;

po pierwsze, podział całkowcowy wartości zmiennej ALE na wartości zmiennej Wa następnie wynik jest przypisany do zmiennej Rezult..

Przykłady zastosowania operatora przydziału:

ALE:= 8;

S: \u003d A *W;

Ostatok: \u003d mod b;

Stosunek: \u003d A / B;

Bezwarunkowy operator przejścia (przejdź do)

Bezwarunkowy operator przejścia (iść do) Oznacza "Przejdź do" i stosuje się w przypadkach, gdy po wykonaniu pewnego operatora konieczne jest wykonywanie niepotrzebne w kolejności, ale każdy inny oznaczony przez operatora etykiet.

Przypomnijmy, że etykieta jest zadeklarowana w sekcji opisy etykiet i może zawierać zarówno symbole cyfrowe, jak i alfabetyczne.

Podczas korzystania z operatora iść do.należy pamiętać obszar oznaczający To tylko urządzenie, w którym jest opisany. Kontrola do innego bloku jest zabronione.

Zasady korzystania z bezwarunkowego operatora przejściowego. Wykorzystanie bezwarunkowego zarządzania zarządzaniem w programie uważa się za teoretycznie zbędne i jest poddawane poważnym krytyce, ponieważ przyczynia się do utworzenia nieprzerwanych i trudnych modyfikowanych programów, które powodują duże trudności podczas debugowania i towarzyszy. Dlatego zaleca się minimalne użycie operatora. iść do. Zgodnie z następującymi zasadami:

Powinien dążyć do stosowania instrukcji przejściowych (jeśli wydaje się niemożliwe bez nich), aby przekazać kontrolę tylko w dół (do przodu) w tekście programu; Jeśli chcesz przenieść kontrolę, powinieneś użyć operatorów cyklu;

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

Przykład zastosowania bezwarunkowego operatora przejściowego:

etykieta metka; (W opisie etykiet opisano etykietę nazwanąMetka.}

zaczynać. (podstawowy program)

(Główne operatorzy programu)

(Oferujący główni operatorzy programu)

Procedura wykonywania pracy

    Zbadaj informacje teoretyczne na temat: "Pisanie programu na pastownicy za pomocą przydziału i bezwarunkowych operatorów przejściowych."

    Uzyskaj indywidualne zadanie od nauczyciela i opracować program zgodnie z zadaniem.

    Pokaż uruchomiony program do nauczyciela.

    Odpowiedz na pytania testowe.

Pytania kontrolne.

    Podstawowe elementy programowania.

    Główne cechy programu. Koncepcje języka, nakładki, globalnych i lokalnych bloków.

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

    Bezwarunkowy operator przejścia. Format, przykłady. Podstawowe zasady użytkowania

Numer pracy laboratoryjnej 7

Pisząc program na Pascal za pomocą warunkowych operatorów i operatora wyboruWalizka.

cel pracy : Tworzenie wiedzy i umiejętności do pracy z operatorami języka. Nabycie umiejętności pisania programu przy użyciu przydziału i bezwarunkowych operatorów przejściowych.

Krótkie informacje teoretyczne.

Operatorzy warunkowych

Operatorzy warunkowych mają na celu wybór jednego z możliwych działań (operatorów), w zależności od jakiegoś stanu (w tym samym czasie, jedna z działań może być pusta, tj. Jest nieobecny). Wartość jest używana jako wybór logiczny wyraz.

Turbo Pascal ma dwóch warunkowych operatorów: if i sprawa.

Warunek operatora, jeśli.

Warunki operatora gdyby Jest to jeden z najpopularniejszych funduszy, które zmieniają naturalną procedurę wykonania operatorów programowych.

Może to zająć jedną z następujących form:

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

jESZCZE.<оператор2>;

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

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

    JEŚLI <условие> Że <оператор1> Inaczej <оператор2>

    JEŚLI <условие> Że <оператор>

Warunki operatora gdyby Jest wykonywany w następujący sposób. Najpierw obliczana jest wyrażenie zapisane w stanie. W wyniku obliczeń otrzymuje wartość typu boolowskiego.

W pierwszym przypadku, jeśli wartość ekspresyjna jest Prawdziwe. (Prawda), wykonana <оператор1>, Określony po słowie następnie.(Przetłumaczone - "do"). Jeśli wynik obliczania wyrażenia w stanie jest Fałszywe (kłamstwo), a następnie uruchomiony <оператор2> .

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

Przykład fragmentu programu z operatorem warunku IF:

jeśli ch \u003d "n", a następnie Parol: \u003d true

inaczej parol: \u003d false;

jeśli parol \u003d prawda, że

jeśli x \u003d 100 pisz ("Hasło i kod prawej")

Writeln ("Błąd w kodzie");

W tym przykładzie klawiatura odczytuje wartość zmiennej typu znaków Ch. Warunek jest następnie sprawdzany Zh.=" N." . Jeśli zostanie wykonany, a następnie zmienna Parol.typ Boolean jest przypisaną wartość Prawdziwe.Jeśli warunek nie zostanie wykonany, Fałszywe. Następnie z klawiatury przeczytaj wartość kodu X.. Następnie, jeśli operator sprawdza parol \u003d prawdziwy stan. Jeśli się liczy Prawdziwe.Następnie sprawdzenie hasła wprowadzonego przez operatora jeśli x \u003d 100. Jeśli warunek X \u003d 100. ma znaczenie Prawdziwe.Zostanie wyświetlona komunikat "Hasło i kod jest poprawny", a zarządzanie w programie jest przesyłane do operatora zgodnie ze słowem koniec.Jeśli się liczy Fałszywe, operator kompozytowy stojący po, słowa jESZCZE.który wyświetla komunikat "Błąd w kodzie" na ekranie monitora wideo i powoduje standardową procedurę HALT (1) Zatrzymać program.

Cecha zastosowania operatoragdyby. Przy użyciu zagnieżdżonych operatorów warunkowych może wystąpić niejednoznaczność syntaktyczna, na przykład:

jeśli warunek1, a następnie na warunkach2<оператор1> JESZCZE.<оператор2>

Pojawiająca się niejednoznaczność do której operatora gdyby Należy do pracy jESZCZE. <оператор2>, Jest dozwolony przez fakt, że słowo usługi jESZCZE. Zawsze powiązany (powiązany) z najbliższym słowem biznesowym gdyby który nie jest jeszcze związany z słowem serwisowym jESZCZE..

W tym względzie powinien być dokładny podczas pisania zagnieżdżonych operatorów.

Przykład 1. . Utwórz program, który oblicza prywatne dwie liczby całkowite. Ze względu na fakt, że niemożliwe jest podział do zera, aby zorganizować kontrolę nad wpisem danych.

Aby sterować wartościami wejściowymi Divider, należy użyć warunkowego operatora przejściowego Jeśli ... potem ... jeszcze.

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

program Primer1;

A, w: Integer;

Napisz ("Wprowadź wartość Difty A:");

Napisz ("Wprowadź wartość dzielnicy do:");

jeśli b \u003d 0 (Wejście sterowanie liczbąB.}

następnie Writeln ("ha zero, aby się podzielić, jest niemożliwe") (Stan zadowolony)

(Warunek nie jest spełniony)

Rezultacja: \u003d A / B;

Writeln ("Numery prywatne" i, "i", w, "\u003d", Rezultura);

Operator przejścia umożliwia przeniesienie z bieżącego programu wykonania programu do innego miejsca, który nie jest przestrzegany w kolejności. Ten operator narusza normalny przebieg realizacji programu.

Przejście przeprowadza się przy użyciu tzw. Tagów.
Etykieta jest identyfikatorem lub liczbą całkowitą bez znaku w zakresie od 0 do 9999, który znajduje się przed dowolnym operatorem programu i jest oddzielona od je dwukropkowym. Wszystkie tagi używane w programie muszą być wcześniej zadeklarowane w sekcji Ogłoszenia Etykiety, począwszy od etykiety.

Możesz teoretycznie pokazać, że uważane operatorzy są wystarczająco dość, aby pisać programy o każdej złożoności. W tym względzie obecność w języku operatorów przejściowych wydaje się niepotrzebna. Ponadto nowoczesna struktura programowania strukturalnego opiera się na zasadzie "Programowanie bez Goto": Uważa się, że nadużywanie operatorów przejściowych utrudnia zrozumienie programu, sprawia, że \u200b\u200bjest mylące i złożone w debugowaniu. Niemniej jednak w niektórych przypadkach użycie operatorów przejściowych może uprościć program.

Operator przejścia ma formularz:

Tutaj Goto to zarezerwowane słowo (Idź [na etykiecie]); - Etykieta.

Etykieta 1; // deklaruj etykietę o nazwie 1 var
O: Integer; Zaczynać.
A: \u003d 10;
Goto 1; // przejście do etykiety 1
A: \u003d sqrt (a); // Ten operator nigdy nie zostanie wykonany! 1: A: \u003d A + A; // Operator oznaczony etykietą 1 koniec;

Warunkowych operatorów przejściowych

Operator warunku jest przeznaczony do wykonywania lub nie spełnienia jakichkolwiek działań w zależności od wyniku stanu Boolean. Ten operator służy do wykonywania programu oddziału,
tj. Jeśli ten warunek jest prawdziwy (i tylko w tym przypadku!), wykonywane są pewną sekwencję operatorów, w przeciwnym razie przeprowadzane są inni operatorzy. Rodzaj warunków operatora, takich jak:

gdyby stan: schorzenie następnie. operator1 else operator2;

Operator warunku można zarejestrować w uproszczonej formie:

gdyby stan: schorzenie następnie. operator;

Podamy przykłady stosowania warunków operatorów:

jeśli A\u003e 0 Następnie B: \u003d SQRT (A) ELS B: \u003d A * 2; // warunki operatora
Jeśli A \u003d 10 następnie B: \u003d B + 1; // Formularz uproszczony

Aby zorganizować rozgałęzienie do kilku kierunków (więcej niż dwóch), można użyć kilku operatorów warunku zainwestowanych w siebie. Występuje osadzanie operatorów państwowych zgodnie z tymi samymi zasadami, co inwestycja operatorów kompozytowych.

W przeciwieństwie do innych języków programowania Pascal, priorytet operacji relacji jest mniejszy niż logiczne "Operacje, na tym poszczególne elementy kompleksowej ekspresji logicznej znajdują się w nawiasach. Na przykład, taki zapis poprzedniego operatora będzie nieprawidłowy:
Jeśli A\u003e B i B 0 z ... // Błąd jak faktycznie (z uwzględnieniem priorytetu operacji) Kompilator nadaje tej linii:
Jeśli\u003e (b i b) 0, a następnie ...

Operator przejścia.

Tym razem będę kontynuował rozważenie tematów "Operatorzy".

Operatorzy (bezwarunkowe) przejście mają na celu przesyłanie kontroli operatora, znakowany znak (który jest poprzedzony etykietą).

Wersja języka autora obejmuje projekt etykiety w formie całej liczby dziesiętnej w zakresie 1..9999 . Jako etykiety Turbo Pascal. Umożliwia wykorzystanie identyfikatorów. Podczas korzystania z operatorów przejściowych należy wykonać następujące zasady:

1) Należy opisać wszystkie znaczniki, które są w bloku. W tym przypadku każda etykieta może być opisana nie więcej niż raz. Te. W bloku nie może być dwóch etykiet o tej samej nazwie.

2) Etykieta określona w instrukcji przejściowej musi określić operator (Włóż go), znajdującym się w tym samym bloku, co sam operator przejścia. Te. Przejścia wewnętrznie procedury (funkcje) lub wewnątrz nich nie są dozwolone.

3) Próba przejścia (transmisja sterowania) wewnątrz operatora strukturalnego może spowodować nieprzewidywalne efekty, chociaż w tym przypadku kompilator może nie dać komunikatu o błędzie.

Zastosowanie bezwarunkowego przejścia w programie uważa się za teoretycznie zbędne, ponieważ może zawierać zamieszanie w łańcuchu logicznie umieszczonych operacji programowych, co może prowadzić do dużych trudności w debugowaniu i modyfikowaniu takiego programu. Zaleca się stosowanie operatorów transportu, zgodnie z następującymi zasadami:

1) Jeśli wydaje się niemożliwe bez operatorów przejściowych, konieczne jest dążenie do stosowania ich do kontroli transferu tylko w dół tekstu programu (do przodu); Jeśli masz potrzebę przesyłania operatorów cyklu "Back" (patrz poniżej);

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

Tagi są określane przez opisy, które zaczynają się od słowa serwisowego etykietai zawierają sekwencję nazw etykiet przez przecinek. Aby przenieść kontrolę operatora, znakowany znak, zapewniony jest bezwarunkowy operator przejścia iść do.. Etykieta jest oddzielona od następującego operatora za nim ":" (COLON). Przykład:

var. J: liczby całkowitej;

(Oświadczamy dwie etykiety)

etykietaPoczątek, wykończ;

Start: Writeln ("Program startowy");

iść do. KONIEC;

Zakończ: Writeln ("koniec programu");

Operator kompozytowy

Najprostszym operatorem strukturalnym jest operator kompozytowy. Ten operator ustawia sekwencję operatorów zawartych w nim. Operator kompozytowy jest sporządzony w postaci listy operatorów oddzielonych od siebie z symbolem ";" (punkt z przecinkami) i więźniom między oficjalnymi słowami zaczynać.i koniec..

Potrzeba operatora kompozytowego może wystąpić w przypadkach, gdy składnia język języka Pascala Umożliwia użytkowaniu tylko jednego operatora w miejscu programu, w którym potrzebne są szereg działań (operatorzy, patrz przykłady poniżej). Dam prosty przykład operatora kompozytowego:

Operator warunkowy

Znaczeniem operatora warunkowego jest przeanalizowanie pewnego stanu logicznego, a zgodnie z tym, warunek ten jest wykonywany lub nie, przeniesienie kontroli odpowiedniego operatora. W warunkach, może wystąpić wyrażenie, które zwraca logiczną wartość typu boolowskiego. Wynik analizy stanu może być wartością prawdziwe.. Warunek jest wykonywany przez I. fałszywe. Stan nie jest wykonywany.

Operator warunkowy jest wykonywany w następujący sposób. Wstępnie oblicza wyrażenie wskazane po słowie serwisowym Gdyby.. Jeśli stan zostanie wykonany, kontrola jest przesyłana do operatora określonego po słowie serwisowym następnie.Jeśli nie, operator jest wykonywany, wskazany po słowie serwisowym. W tym przypadku część operatora warunkowego, zaczynając od słowa innego, może być nieobecny. Oto przykłady warunkowych operatorów:

Gdyby Bredny następnie. Writeln ("klucz klucz");

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

JESZCZE. Min: \u003d A;

gdyby X1\u003e x2. Potem zacznij.

Ostatni przykład jest dokładnie tak, gdy konieczne jest, aby liczba operatorów jest wykonywana przez warunek, ale ze względu na to, że następnie.lub jESZCZE.może być tylko jeden operator, czyli możliwość rozstrzygnięcia sytuacji za pomocą operatora kompozytowego zawierającego tylko wiele niezbędnych operatorów.

W przygotowywaniu zagnieżdżonych operatorów warunkowych należy pamiętać, że gałąź innej zawsze należy do wcześniejszego oddziału Gdyby.kto jeszcze nie ma gałęzi innego. Te. Następny projekt.

gdyby Warunek1. a następnie, jeśli. Warunek2. następnie. Operator1. jESZCZE.Operator2;

dla jasności możesz się zinterpretować

gdyby Warunek1. Potem zacznij.

gdybyWarunek2. następnie. Operator1. jESZCZE.Operator2;

Konieczne jest obserwowanie dokładności podczas korzystania z zagnieżdżonych operatorów warunkowych, tak że w tworzeniu kompilacji następnego warunkowego operatora programu, nie trać z oczu, na pierwszy rzut oka, niewielka część, która może prowadzić do zupełnie innej konwencjonalnej rozgałęzia się.

Opcja operatora.

Dość często sytuacja występuje, gdy łańcuch warunkowych operatorów rośnie do ogromnych skal, na przykład, w poniższym przykładzie ilustruje skromną gałęzi w swoim rozmiarze, ale już zawierający złożoność postrzegania rozkładanego znaczenia:

rodzaj TWAY \u003d (w górę, w prawo, w dół, w lewo);

var. Sposób: TWAY;

Mapx, Mapy: Word;

gdybyWay \u003d up. następnie. Mapa: \u003d Mapy - 1

JESZCZE. gdyby Sposób \u003d racja. następnie.MAPX: \u003d MAPX + 1

JESZCZE.gdyby Sposób \u003d w dół. następnie.Mapy: \u003d Mapy + 1

JESZCZE. MAPX: \u003d MAPX - 1;

Ostatnia gałąź nie ma operatora GdybyPonieważ w przypadku nie spełnienia wszystkich trzech warunków logiczny byłoby logiczne, że operator odpowiadający czwartym i ostatnim wariantowi możliwych wartości tego typu byłoby wprowadzone Tway..

W takim przypadku wciąż byliśmy szczęśliwi tego typu Tway.ma tylko cztery opcje dla otrzymanych wartości. Opracowanie takich gałęzi zamieniłoby się w rutynę, jeśli było dziesięć opcji i więcej? Ale w prezentowanym oddziale jest prosty wzór. Czy można w jakiś sposób uprościć i bardziej wydajny i czytelny? Jest to możliwe, a dla tego w języku jest operator operatora, którego projekt może zawierać dowolną liczbę alternatyw dla określonej ekspresji. Następnie ostatni przykład można przepisać w nowy sposób:

walizka. Droga. z.

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

PRAWO: MAPX: \u003d MAPX + 1;

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

W lewo: MAPX: \u003d MAPX - 1;

Cóż, całkiem inna rzecz. Teraz rozważ procedurę wykonania tego operatora. Wstępnie oblicza wartość wyrażenia zgodnie ze słowem serwisowym walizka.Ale ponieważ w tym przypadku występuje nazwa zmiennej Droga.Wartość tej zmiennej jest wykonywana. Uzyskana wartość jest porównywana na przemian z każdą alternatywą (stała, bezpośrednia wartość) wskazana po oficjalnym słowie z.. W przypadku równości, wartość ekspresyjna następnej stałej, wykonana jest operator alternatywny, zgodnie z tym stałą, oddzieloną od jej dwukropek. Po zakończeniu wykonania operatora alternatywnego, akcja przechodzi do operatora zgodnie z operatorem opcji. Jeśli wartość zostanie utracona Droga.ani z jedną stałą ten operator. Opcja nie powoduje żadnych działań.

Ale co jeśli konieczne jest zapewnienie pewnej gałęzi operatorów, które byłyby przeprowadzane w przypadku awarii wartości ekspresyjnej z dowolną stałą? Aby to zrobić, możesz użyć alternatywy dla innego, na przykład:

walizka.Droga. z.

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

PRAWO: MAPX: \u003d MAPX + 1;

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

jESZCZE. MAPX: \u003d MAPX - 1;

W związku z tym projekt zbudowany za pomocą operatora przypadku jest całkowicie równoważny z konstrukcją zbudowaną wcześniej za pomocą operatora Gdyby.. Ponadto jest wizualnie i nie ma ryzyka, aby się mylić w wielu jESZCZE..

Po raz kolejny chcę zwrócić uwagę na fakt, że stałe w operatorze opcji mogą być zarówno bezpośrednie liczbami całkowitymi, jak i nazwiski nieustalonych stałych opisanych wcześniej. Wykorzystanie typowych stałych w alternatywach opcji operatora nie jest dozwolony. Dzięki temu w każdym przykładzie wykonania można określić całą listę stałych przez przecinek lub zakres wartości, na przykład:

walizka.Droga. z.

W górę, w dół: Writeln ("ruchomy pionowy");

W prawo, po lewej: Writeln ("poruszanie się poziomo");

walizka.X. z.

10,20,30: Writeln ("dziesiątki");

1..9: Writeln ("jednostki");

W ostatnim operatorze projektu writeln ("jednostki") Zakończone, jeśli zmienna X będzie miała jedną z wartości 1,2,3,..,8,9 .

Jak możesz zauważyć, linie ze stałymi ustawiłem się na okrężnicy, jak mi się wydaje, że ten rodzaj jest wyraźnie, chociaż jest to kwestia smaku, a to, co jest znane, nie ma smaku i koloru towarzysza; )

Zastosuj opcjonalną opcję, należy zastosować zgodnie z następującymi zasadami:

1) Ważna wartość Wyrażenia - "Przełącz", nagrany po słowie serwisowym walizka.musi spełniać typ dyskretny: dla całego typu muszą leżeć w zakresie -32768..32767 .

2) Wszystkie określone alternatywy stałych muszą mieć typ kompatybilny z typem ekspresji.

3) Nie należy powtarzać stałych alternatywnych w operatorze opcji, a zakresy nie powinny przecinać i nie powinny zawierać stałych określonych w tym lub innych alternatywach.

Jeszcze jedna rzecz. Projekt walizka.zapewnia jeden operator dla każdej alternatywy. Jeśli istnieje potrzeba wykonywania kilku operatorów, powinna zostać pogrupowana w operatora kompozytowego zacznij ..end.. Możliwe jest określenie pustego operatora alternatywy, wprowadzenie symbolu ";" (punkt z przecinkiem) natychmiast po okrężnicy, która nic nie wykona. I składnia oddziału jESZCZE.zapewnia wskazanie sekwencji operatorów oddzielonych przez ";"; (średnik).

Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu