Struktura oddziału. Operator warunkowy. Operator warunkowy w Pascal Tłumaczenie gramatyki tłumaczenie operatora warunkowego języka Pascal

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

  • operator złożony;
  • operator warunkowy jeśli;
  • instrukcja warunkowa Case ;
  • operator pętli Powtórz ;
  • instrukcja pętli while;
  • operator Dla pętli.

Operator złożony

Często konieczne jest, aby w związku z jakimś działaniem kilka stwierdzeń było postrzeganych w programie jako jedno stwierdzenie. Taki operator można uzyskać, jeśli wymagana sekwencja operatorów jest połączona z nawiasami operatorów. Słowa serwisowe Początek i Koniec nazywane są nawiasami operatorskimi.

Format operatora:

operator numer 1;

operator numer 2;

operator numer 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.

Instrukcja złożona jest traktowana jako instrukcja pojedyncza. Można go wstawić w dowolnym miejscu programu, gdzie dozwolona jest tylko jedna instrukcja.

Instrukcje zawarte w instrukcji złożonej, podobnie jak inne instrukcje, są oddzielone średnikiem, ale ten separator można pominąć przed końcem. Po zakończeniu wymagany jest średnik jako separator między instrukcją złożoną a następną instrukcją.

W kolejnych sekcjach znaczenie i cel operator złożony zostanie zilustrowany licznymi przykładami.

Warunkowe oświadczenie IF

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

Format operatora w pełnej formie:

Jeśli<условие>Następnie<оператор 1>W przeciwnym razie<оператор 2>

Format operatora w formie niekompletnej:

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

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

Schematy blokowe instrukcji if pokazano poniżej:

Operator warunkowy działa w ten sposób. Najpierw oceniane jest wyrażenie warunkowe< условие >. Jeśli wynik to prawda, to< оператор 1 >(po słowie Wtedy) i< оператор 2 >pominięto. Jeśli wynikiem jest False (false), to< оператор 1 >pominięto i wykonano< оператор 2 >(po słowie Inaczej). Else nigdy nie jest poprzedzone średnikiem, ponieważ nie jest to koniec instrukcji If.

Inna część<оператор 2>warunkową instrukcję If można pominąć. Jeśli< условие >Jeśli stwierdzenie ma wartość True , wtedy<оператор 1>, w przeciwnym razie ten operator jest pomijany. W takim przypadku format oświadczenia warunkowego ma postać niekompletną:

Porównajmy dwa projekty:

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

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

W pierwszej linii<оператор 1>wykonane lub niewykonane w zależności od egzekucji<условия>. W drugiej linii<оператор 2>jest zawsze wykonywany, ponieważ po<оператора 1>jest separator ";" a wszystko, co jest warte pola ogranicznika, liczy się jako inny operator. Dlatego, zgodnie z formatem instrukcji If, po słowach zastrzeżonych Then i Else może występować tylko jedna instrukcja.

Przykład:

Jeśli a > 0 Wtedy b:=1;

Jeśli a > 0 Wtedy b:=1; a:=b; (operator a:=b; zawsze wykonywany)

Jeżeli konieczne jest wykonanie po Wtedy i Else nie jednego, ale kilku operatorów, to należy umieścić operatory nawiasy, tj. użyj operatora złożonego.

W takim przypadku instrukcja If wyglądałaby tak:

Jeśli<условие>Następnie

operator 11;

operator 1n;

operator 21;

operator 2n;

Przykład.

Jeśli a>0, to zacznij b:=1; a:=b; koniec;

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

y=x+1 dla x<0; y=2∙x при x>0.program a5; varx,y:real; begin write('Podaj wartość x:'); readln(x); if x writeln('Wartość y to: ', y:6:2) end.

Wyniki programu:

Wprowadź wartości x:0,5

Wartość y wynosi: 1,00

ZADANIE 2. Napisz program do rozwiązywania równania kwadratowego. Jeśli dyskryminator jest mniejszy od zera, wyświetl odpowiedni komunikat.

Program a6; zmienna a,b,c:rzeczywista; (współczynniki równania) x1,x2:real; (pierwiastki równania) d:real; (dyskryminant) begin Writeln('Rozwiązanie równania kwadratowego':50); Write('Wprowadź wartości współczynników a,b,c:'); readln(a,b,c); (wprowadzanie współczynników) d:=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ązywanie równania kwadratowego

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

Równanie nie ma pierwiastków.

W instrukcji If można użyć nie tylko instrukcji złożonej, ale także dowolnej instrukcji strukturalnej. Operator warunkowy If rozważany przez nas może być również użyty jako taki operator. W tym przypadku mówi się o zagnieżdżonych instrukcjach If.

Przykład.

jeśli warunek to
rozpocząć Wsporniki operatora
operator; zagnieżdżone
oświadczenie JEŻELI,
formularz niekompletny
jeśli warunek to oświadczenie
oświadczenie w przeciwnym razie;
koniec
w przeciwnym razie
rozpocząć Wsporniki operatora
operator; zagnieżdżone
oświadczenie JEŻELI,
formularz niekompletny
jeśli warunek
następnie oświadczenie;
koniec;

Podczas pracy z instrukcjami zagnieżdżonymi jeśli należy wziąć pod uwagę następujące zasady:

  • przed słowem zastrzeżonym else znak ";" nigdy nie ustawiony;
  • słowo zastrzeżone else jest zawsze kojarzone z najbliższym słowem zastrzeżonym przed nim.

ZADANIE 3. Poprawimy program do rozwiązywania równania kwadratowego (ZADANIE 2). Gdy wartość współczynnika a=0, równanie ulega degeneracji. Ten fakt nie został uwzględniony w programie, co spowoduje krytyczny błąd podczas wykonywania programu (podziel przez zero). Aby wykluczyć dzielenie przez zero, sprawdzamy wartość współczynnika a po jego wpisaniu 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 wpis taki jak

Istnieje kilka opcji prawidłowego porównania wartości rzeczywistej zmiennej z zerem:

ZADANIE 4. Ulepszony program do rozwiązywania równania kwadratowego.

Program a7;Var a,b,c:real; (współczynniki równania) x1,x2:real; (pierwiastki równania) d:real; (dyskryminant) begin Writeln('Rozwiązanie równania kwadratowego':50); Write('Wprowadź wartości współczynników a,b,c: '); readln(a,b,c); (współczynniki wejściowe), jeśli runda(a)<>0 następnie zacznij d:=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 Podziel przez zero.

Oświadczenie o wyborze warunkowym Przypadek

Instrukcja select jest uogólnieniem instrukcji If i jest używana, gdy tylko jedna instrukcja z zestawu instrukcji musi zostać wykonana, w zależności od wartości klucza select.

Klawisz wyboru to wyrażenie znajdujące się między słowami zastrzeżonymi Case i of. Wyrażenie może być typu całkowitego, logicznego i znakowego. Wyrażenie nie może być typu Real, String.

Format operatora:

W razie"<ключ выбора>" stała1: operator 1; stała2: operator 2; stała3: operator 3; ... stałaN-1: operator N-1; stałaN: operator Nn; Else operator End;

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

Klucz wyboru to wyrażenie dowolnego typu innego niż Real i String .

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

Operator1 jest dowolnym operatorem.

Instrukcja select działa w następujący sposób. Najpierw oceniane jest wyrażenie<ключ выбора>, a następnie w ciągu operatorów znajduje się jeden, który jest poprzedzony stałą równą obliczonej wartości<ключ выбора>. Znaleziona instrukcja jest wykonywana, po czym instrukcja select kończy swoją pracę (sterowanie zostaje przeniesione na koniec). Jeśli na liście stałych nie zostanie znaleziona żadna stała, która odpowiada obliczonej wartości klawisza wyboru, sterowanie jest przekazywane do instrukcji następującej po słowie Else.

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

ZADANIE 5. Napisz prosty program do kalkulatora.

Program a8; varx,y:real; z:rzeczywista; (wynik) op:char; (klawisz wyboru) begin Write('Wprowadź operandy x,y: '); readln(x,y); Write('Wprowadź operację(+,-,*,/): '); readln(op); przypadek „+”:z:=x+y; ‘-‘:z:=x-y; „*”:z:=x*y; ‘/‘:if y0 then z:=x/y Elsewriteln(‘Podziel przez zero’); Else writeln('Brak działania!'); koniec; (op) (żebyś mógł zaznaczyć koniec "czyj") writeln('Wynik =',z:8:2); koniec.

Wyniki programu:

Wprowadź argumenty x,y:4 2

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

Wynik to = 8.00

W programie klawiszem wyboru jest zmienna typu znakowego. W zależności od wprowadzonej wartości symboli (+, -, *, /) wykonywana jest jedna z operacji arytmetycznych: dodawanie, odejmowanie, mnożenie lub dzielenie. Jeżeli jako dzielnik zostanie wprowadzone zero, dzielenie nie jest możliwe i wyświetlany jest komunikat „Podział przez zero”. Jeśli zostanie wprowadzony jakikolwiek inny znak, wynikiem będzie komunikat „Nie wykonano żadnej akcji!”. W przypadku wprowadzenia prawidłowych operacji zwracany jest wynik.

ZADANIE 6. Napisz program, który pyta użytkownika o numer dnia tygodnia, a następnie wyświetla nazwę dnia tygodnia lub komunikat o błędzie, jeśli dane wejściowe są nieprawidłowe.

Program a9; Warn: liczba całkowita; (numer dnia tygodnia) Begin write('Podaj numer dnia tygodnia:'); readln(n); przypadek n z 1: writeln('Poniedziałek'); 2: writeln('wtorek'); 3: writeln('środa'); 4: writeln('czwartek'); 5: writeln('Piątek'); 6: writeln('sobota'); 7: writeln('Niedziela'); else write('popełniłeś błąd!') end; (n) koniec.

Wyniki programu:

Wpisz numer dnia tygodnia:1

Poniedziałek

Żadna stała nie może pasować do drugiej. Jeśli ta sama instrukcja musi zostać wykonana dla kilku stałych, to można je wymienić oddzielone przecinkami, na przykład

przypadek n z 1,3,5,7,9: writeln('To są liczby nieparzyste'); 2,4,6,8,10: writeln('To są cyfry parzyste'); koniec;

Operator jest niepodzielnym elementem programu, który umożliwia wykonywanie określonych działań algorytmicznych. Różnica między operatorem w stosunku do innych elementów polega na tym, że zawsze oznacza on jakąś akcję. W Pascalu operatory składają się ze słów funkcyjnych. Wyrażenia używane w programie są oddzielone od siebie oraz od innych elementów programu symbolem (;). Wszystko Operatory języka Pascal Można podzielić na dwie grupy:

  1. jedyny;
  2. zbudowany.

Proste operatory to operatory, które nie zawierają innych operatorów. Obejmują one:

  • operator przypisania (:=);
  • operator procedury;
  • bezwarunkowy operator skoku (GOTO).

Oświadczenia strukturalne są stwierdzeniami zawierającymi inne stwierdzenia. Obejmują one:

  • operator złożony;
  • operatory warunków (IF, CASE);
  • instrukcje pętli (FOR, WHILE, REPEAT);
  • dołączyć do operatora (Z).

Proste operatory

instrukcja procedury

instrukcja procedury służy do wywołania procedury.

Format: [nazwa_procedury] (lista parametrów połączenia);

Instrukcja procedury składa się z identyfikatora procedury, po którym bezpośrednio następuje lista parametrów wywołania w nawiasach. Pascal posiada procedury bez parametrów. W takim przypadku po wywołaniu nie ma listy parametrów. Wykonanie instrukcji procedury prowadzi do aktywacji czynności opisanych w jej treści. W Pascalu istnieją dwa rodzaje procedur:

  • normy, które są opisane w samym języku i należą do języka;
  • Procedury użytkownika, które tworzy użytkownik.

Aby wywołać standardowe procedury, należy połączyć się w sekcji USES nazwy modułu (biblioteki), gdzie ta procedura jest opisana. Szereg procedur znajdujących się w module SYSTEM jest zawsze automatycznie podłączanych do programu i ich łączenie w sekcji ZASTOSOWANIA nie jest konieczne. Standardowe procedury Pascala to ODCZYT, ZAPIS, PRZEPIS, ZAMKNIJ, ZERUJ.

CZYTAJ ([zmienna_plikowa], [lista_wejść])

CZYTAJ (x,y)

Procedury użytkownika (niestandardowe) muszą zostać utworzone przed ich użyciem w programie i znajdują się albo w sekcji opisowej samego programu, albo w oddzielnych jednostkach programowych modułu. Jeżeli procedura jest w module, to nazwa tego modułu musi być podana w aplikacji USES.

Instrukcja skoku bezwarunkowego GOTO

Format: GOTO [etykieta];

GOTO to słowo zastrzeżone w Pascalu. [etykieta] to arbitralny identyfikator, który umożliwia oznaczenie instrukcji programu i późniejsze odwołanie się do niej. W języku Pascal dozwolone jest używanie jako etykiet liczby całkowitej bez znaku. Etykieta jest umieszczana przed oznakowanym operatorem i oddzielana od niego (:). Jeden operator może być oznaczony kilkoma etykietami. Są też oddzielone od siebie (:). Zanim etykieta będzie mogła zostać użyta w sekcji instrukcji, musi zostać zadeklarowana w sekcji ETYKIETA (sekcja opisu).

Akcja GOTO przekazuje sterowanie do odpowiedniej instrukcji oznaczonej etykietą. Korzystając z etykiet, musisz przestrzegać następujących zasad:

  • etykieta musi być opisana w sekcji opisu i należy użyć wszystkich etykiet;
  • jeśli jako etykiety używane są liczby całkowite, nie są one deklarowane.

Sprzeczny z zasadami technologii programowania strukturalnego. Współczesne języki programowania nie zawierają takiego operatora i nie ma potrzeby z niego korzystać. Ponadto nowoczesne komputery wykorzystują tak zwaną metodę potokową. W przypadku napotkania w programie bezwarunkowego operatora gałęzi, to taki operator przerywa cały potok, wymuszając jego utworzenie od nowa, co znacznie spowalnia proces obliczeniowy.

Oświadczenia strukturalne

Oświadczenia warunku IF

Operator warunkowy służy w programie do implementacji struktury algorytmicznej - rozgałęzienia. W tej strukturze proces obliczeniowy może przebiegać w jednym z możliwych kierunków. Wybór kierunku odbywa się zwykle poprzez sprawdzenie jakiegoś warunku. Istnieją dwa rodzaje struktury gałęzi: struktura wideł i struktura obejściowa.

W Pascalu operator warunkowy IF jest sposobem na zorganizowanie rozgałęzionego procesu obliczeniowego.

Format: IF [wyrażenie_logiczne] Następnie [instrukcja_1]; Inny [operator_2];

IF, Then, Else - słowa służbowe. [operator_1], [operator_2] - zwykłe operacje w języku Pascal. Część Else jest opcjonalna (może jej brakować).

Instrukcja IF działa tak: najpierw sprawdzany jest wynik wyrażenia logicznego. Jeśli wynikiem jest PRAWDA, wykonywane jest polecenie [operator_1] następujące po słowie kluczowym Then, a parametr [operator_2] jest pomijany. Jeśli wynik jest FAŁSZ, to [instrukcja_1] jest pomijana i wykonywana jest [instrukcja_2].

Jeśli brakuje części Else, wówczas instrukcja IF ma niekompletny formularz:

IF [wyrażenie_logiczne] Następnie [operator];

W tym przypadku, jeśli wynik jest TRUE, to wykonywany jest [operator], jeśli jest FALSE, to kontrola jest przekazywana operatorowi po instrukcji IF.

są 2 liczby A i B. Znajdź maksymalną liczbę.

Operator złożony

Instrukcja złożona to sekwencja dowolnych operacji w programie, ujęta w tak zwane nawiasy operatorskie (Begin-End).

Format: Rozpocznij [wypowiedzi]; koniec;

Instrukcje złożone umożliwiają reprezentowanie grupy instrukcji jako pojedynczej instrukcji.

CASE wybierz oświadczenie

Zaprojektowany do implementacji wielu rozgałęzień, ponieważ instrukcja IF może implementować tylko dwa kierunki procesu obliczeniowego, nie zawsze jest wygodnie używać jej do implementacji wielu rozgałęzień. Wielokrotne rozgałęzienie jest implementowane przez instrukcję CASE.

Format: CASE [klawisz wyboru] OF

[select_constant_1]:[operator_1];

[select_2_constant]:[operator_2];

[N_wyboru]:[N_operatora];

ELSE [operator];

CASE, OF, ELSE, END - słowa serwisowe. [select_key] to parametr jednego z typów porządkowych. [choice_consts] - stałe tego samego typu co klucz wyboru realizujący wybór. [operator_1(N)] jest zwykłym operatorem. ELSE może brakować.

Instrukcja wyboru działa w następujący sposób: przed wykonaniem instrukcji określana jest wartość parametru klucza wyboru. Ten parametr może być wyrażony jako zmienna w programie lub w inny sposób. Następnie parametr klucza wyboru jest sekwencyjnie porównywany ze stałą wyboru. Jeśli wartość klucza wyboru pasuje do jednej ze stałych wyboru, instrukcja następująca po tej stałej jest wykonywana, a wszystkie inne instrukcje są ignorowane. Jeśli klucz wyboru nie pasuje do żadnej ze stałych, wykonywana jest instrukcja następująca po Else. Else jest często opcjonalne, a jeśli klucz wyboru nie pasuje do żadnej ze stałych wyboru i jeśli Else nie występuje, sterowanie jest przekazywane do instrukcji następującej po instrukcji CASE.

W instrukcji CASE nie ma jawnej kontroli warunku, która jest specyficzna dla instrukcji IF. W tym samym czasie wykonywana jest niejawna operacja porównania. CASE wprowadza dysonans do programu Pascal, ponieważ instrukcja data kończy się słowem kluczowym End, które nie ma pary Begin.

Napisz algorytm i program do zadania symulującego działanie sygnalizacji świetlnej. Po wpisaniu znaku pierwszej litery kolorów sygnalizacji, program powinien wyświetlić komunikat o odpowiednim kolorze i akcjach.

Program działa w następujący sposób: za pomocą procedury Czytaj na klawiaturze wprowadza się symbol litery koloru sygnalizacji świetlnej. Jeżeli zostanie wpisana litera 'g' odpowiadająca zielonemu, to w instrukcji CASE wartość wpisana w listę wyboru znajdzie stałą wyboru 'g' i wyświetli się komunikat „Zielony, ruch dozwolony”. Podczas wpisywania znaku z liter „k” i „g” zostaną wyświetlone podobne komunikaty. Jeśli wprowadzisz jakikolwiek inny znak, wyświetli się komunikat „Sygnalizacja świetlna nie działa”, ponieważ w tym przypadku działa Inna część instrukcji CASE.

Instrukcje pętli

Cykliczna struktura algorytmiczna to struktura, w której niektóre czynności wykonywane są kilkakrotnie. W programowaniu istnieją dwa rodzaje struktur pętli: pętla z parametrem i pętla iteracyjna.

Pętla z parametrem ma zawsze tzw. parametry pętli: X, X n , X k , ∆X. Czasami pętla z parametrem nazywana jest pętlą zwykłą. Cechą charakterystyczną jest to, że przed wykonaniem pętli można określić liczbę pętli i powtórzeń.

W pętli iteracyjnej nie można określić liczby pętli przed jej wykonaniem. Jest wykonywany tak długo, jak spełniony jest warunek kontynuacji pętli.

W Pascalu są trzy operatory, które implementują cykliczne struktury obliczeniowe:

  • DLA operatora liczącego. Jest przeznaczony do implementacji pętli z parametrem i nie może być używany do implementacji pętli iteracyjnej;
  • operator pętli z warunkiem wstępnym WHILE;
  • operator pętli z warunkiem końcowym REPEAT.

Ostatnie dwa koncentrują się na implementacji pętli iteracyjnej, ale mogą być również używane do implementacji pętli z parametrem.

DLA Oświadczenie

Format: FOR [parametr_pętli] := [c_c_p_c] Do [c_c_c_c] Wykonaj [operator];

FOR, To, Do - słowa służbowe. [parametr_pętli] - parametr pętli. [n_z_p_ts] - początkowa wartość parametru cyklu. [k_z_p_ts] - końcowa wartość parametru cyklu. [operator] - dowolny operator.

Parametr pętli musi być zmienną typu porządkowego. Wartości początkowe i końcowe parametru pętli muszą być tego samego typu co parametr pętli.

Rozważ pracę operatora nad jego algorytmem:

W pierwszym kroku wartość parametru cyklu przyjmuje [n_z_p_ts], następnie parametr cyklu jest sprawdzany czy jest mniejszy lub równy [k_z_p_ts]. Ten warunek jest warunkiem kontynuowania pętli. Po wykonaniu, pętla kontynuuje swoją pracę i wykonywane jest [instrukcja], po czym parametr pętli jest zwiększany (zmniejszany) o jeden. Następnie z nową wartością parametru loop sprawdzany jest warunek kontynuowania pętli. Jeśli zostanie wykonany, akcje są powtarzane. Jeśli warunek nie jest spełniony, pętla się kończy.

Operator For różni się znacznie od podobnych operatorów w innych językach programowania. Różnice to:

  • treść instrukcji For. Instrukcja nie może być wykonana ani razu, ponieważ test warunku kontynuacji pętli jest wykonywany przed ciałem pętli;
  • krok zmiany parametru cyklu jest stały i wynosi 1;
  • treść pętli w instrukcji For jest reprezentowana przez pojedynczą instrukcję. W przypadku, gdy akcja ciała pętli wymaga więcej niż jednej prostej instrukcji, wówczas instrukcje te muszą zostać przekształcone w jedną złożoną instrukcję za pomocą nawiasów operatorskich (BEGIN-END);
  • Parametr pętli może być tylko zmienną typu porządkowego.

Przykład użycia instrukcji FOR: zrób stół do przeliczania rubli na dolary.

Instrukcja WHILE (instrukcja pętli z warunkiem wstępnym)

Format: GDY [warunek] Wykonaj [wypowiedź];

WHILE, Do - słowa służbowe. [warunek] - wyrażenie typu logicznego. [operator] - zwykły operator.

;

Instrukcja While działa w następujący sposób: najpierw sprawdzany jest wynik warunku logicznego. Jeżeli wynik jest prawdziwy, to wykonywany jest operator, po którym następuje powrót do sprawdzenia warunku z nową wartością parametrów w wyrażeniu logicznym warunku. Jeśli wynik jest fałszywy, pętla się kończy.

Pracując z While należy zwrócić uwagę na jego właściwości:

  • warunki użyte w While są warunkiem kontynuacji pętli;
  • w treści cyklu zawsze zmienia się wartość parametru zawartego w wyrażeniu warunku;
  • Pętla While może nigdy nie zostać wykonana, ponieważ sprawdzenie warunku podczas pętli jest wykonywane przed treścią pętli.

Instrukcja REPEAT (instrukcja pętli z warunkiem końcowym)

Format: REPEAT [ciało_pętli]; UNTIL [warunek];

Instrukcja REPEAT działa w następujący sposób: najpierw wykonywane są instrukcje ciała pętli, po czym sprawdzany jest wynik warunku logicznego. Jeżeli wynik jest fałszywy, to następuje powrót do wykonania operatorów następnego ciała cyklu. Jeśli wynik jest prawdziwy, instrukcja kończy działanie.

Operator powtarzania ma następujące cechy:

  • w Powtórz sprawdzany jest warunek zakończenia pętli, a jeśli warunek jest spełniony, pętla się kończy;
  • treść pętli jest zawsze wykonywana przynajmniej raz;
  • parametr sprawdzania warunku jest zmieniany w ciele pętli;
  • Instrukcje treści pętli nie muszą być ujęte w nawiasy operatorowe (BEGIN-END), podczas gdy rolę nawiasów operatorskich pełnią Repeat i Until.

Oblicz y=sin(x), gdzie xn=10, xk=100, krok to 10.

Operatory warunkowe służą do wyboru jednej z możliwych akcji (operatorów) do wykonania w zależności od pewnego warunku (w tym przypadku jedna z akcji może być nieobecna). Wartość wyrażenia logicznego jest używana jako warunki wyboru. W Turbo Pascalu są dwie instrukcje warunkowe: if i case.

jeśli warunek warunek

Instrukcja warunkowa if może przybrać jedną z następujących form:

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

w przeciwnym razie<оператор2>;

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

Instrukcja warunkowa if jest wykonywana w następujący sposób. Najpierw oceniane jest wyrażenie zapisane w warunku. W wyniku jego oceny uzyskuje się wartość typu Boolean. W pierwszym przypadku, jeśli wartość wyrażenia to True, to<оператор1>, określony po słowie then. Jeśli wynikiem oceny wyrażenia w warunku jest False (false), to<оператор2>. W drugim przypadku - jeśli wynik wyrażenia Tgue jest wykonywany<оператор>if False, wykonywana jest instrukcja następująca bezpośrednio po instrukcji if. Zgodnie z regułami każda z gałęzi może zawierać albo jedną wykonaną instrukcję, albo kilka połączonych w instrukcję złożoną.Średnik przed milse nie ustawiony.

oświadczenie o wyborze przypadku

Jeśli jeden operator jeśli może zapewnić wybór między dwiema alternatywami, to operator wyboru walizka pozwala na dokonanie wyboru z dowolnej liczby dostępnych opcji.

walizka<выражение-селектор>z

<список1>: <оператор1>;

<список2>: <оператор2>;

<списокN>: <операторN>;

Opis przypadku działa w ten sposób. Najpierw oceniana jest wartość wyrażenia selektora, a następnie dostarczana jest implementacja operatora, którego stała wyboru jest równa bieżącej wartości selektora. Jeśli żadna ze stałych nie jest równa bieżącej wartości selektora, wykonywana jest instrukcja następująca po słowie else. Jeśli słowo else nie jest obecne, instrukcja po zakończeniu słowa jest aktywowana, tj. pierwszy operator za granicąprzypadek.

Wyrażenie selektora jest prostą zmienną typu całkowitego, znakowego, wyliczanego lub typu Boolean, w zależności od wartości, której podjęto decyzję;

Lista stałych wyboru składa się z dowolnej liczby wartości lub zakresów oddzielonych od siebie przecinkami. Typ stałych musi odpowiadać typowi selektora;

Ten format zakłada jedną instrukcję dla każdej alternatywy, ale opcjonalnie można określić wiele instrukcji, grupując je w instrukcję złożoną.

Oddział W przeciwnym razie jest opcjonalna i w przeciwieństwie do instrukcji if może być poprzedzona średnikiem.

Operatory powtarzania

Jeśli program musi wielokrotnie wykonywać niektóre instrukcje, używane są instrukcje powtarzania (pętli). W Pascalu istnieją trzy typy instrukcji pętli: while, repeat i for.

podczas gdy oświadczenie

Instrukcja while (while) nazywana jest instrukcją pętli z Warunek wstępny za to, że test warunku wykonania ciała cyklu jest wykonywany na samym początku instrukcji.

chwila<условие продолжения повторений>robić

<тело цикла>;

Stan : schorzenie jest wyrażeniem logicznym. Pętla ciała jest operatorem prostym lub złożonym. Instrukcja złożona jest używana, gdy treść pętli składa się z 2 lub więcej instrukcji.

Przed każdym wykonaniem treści pętli oceniana jest wartość wyrażenia warunku. Jeśli wynikiem jest True, wykonywana jest treść pętli i wyrażenie warunku jest ponownie oceniane. Jeśli wynikiem jest False, pętla kończy działanie i przeskakuje do pierwszej instrukcji bezpośrednio po treści pętli.

powtórz oświadczenie

Instrukcja repeat implementuje pętlę z stan końcowy . Pętla z warunkiem końcowym zawsze zostanie wykonana przynajmniej raz.

<оператор1>;

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

<оператор N>;

dopóki<условие окончания цикла>;

Instrukcje zawarte między słowami powtarzaj i dopóki są treścią pętli. Ciało pętli jest wykonywane jako pierwsze, a następnie sprawdzany jest warunek wyjścia pętli. Jeśli wynikiem wyrażenia logicznego jest False, ciało pętli jest ponownie aktywowane; jeśli wynikiem jest True, pętla kończy działanie.

dla operatora powtarzającego

Jest to operator o znanej liczbie powtórzeń. Ta instrukcja powtarzania jest często nazywana instrukcją pętli z parametrem, ponieważ liczba powtórzeń jest określona przez zmienną o nazwie parametr cyklu , lub zmienna kontrolna .

Instrukcja for repeat może być reprezentowana w dwóch formatach:

dla<параметр цикла> := do robić<тело цикла>;

dla<параметр цикла> := aż do robić<тело цикла>;

gdzie<параметр цикла>jest zmienną typu całkowitego, znakowego, logicznego lub wyliczanego;

SI i S2 - wyrażenia określające odpowiednio początkowe i końcowe wartości parametru cyklu;

for ... do - nagłówek cyklu;

Korpus pętli może być jedyny lub złożony operator. Instrukcja for zapewnia, że ​​treść pętli jest wykonywana do momentu, aż wszystkie wartości parametru pętli od początku do końca zostaną poprawione.

Akcja dowodzenia. Parametr pętli ma przypisaną wartość wyrażenia S1. Jeśli jest mniejsza lub równa wartości wyrażenia S2, to wykonywana jest treść pętli. Następnie wartość parametru jest automatycznie zwiększana o jeden i ponownie porównywana z wartością wyrażenia S2 i tak dalej. Gdy wartość parametru staje się większa niż wartość wyrażenia S2, następna instrukcja po wykonaniu pętli.

Krok zmiany parametru cyklu dla instrukcji for…to…do wynosi +1, a dla instrukcji for…downto…do wynosi -1.

Pytania do samodzielnego zbadania:

    Format operatora przypisania. Czy dopuszczalne jest używanie wartości różnych typów w wyrażeniu arytmetycznym?

    Jaka jest różnica między instrukcją wejściową Read a instrukcją Readln?

    Określ formaty wyjściowe.

    Jakie gałęzie są wdrażane w Turbo Pascal?

    Do czego służą gałęzie? Daj przykłady.

    Dwie formy zapisu operatora warunkowego If.

    Zagnieżdżony format notacji instrukcji If.

    Format rekordu instrukcji Case select?

    Kiedy używana jest instrukcja złożona Begin...end?

    W jaki sposób algorytmy rozgałęziania są przedstawiane na schematach blokowych?

    Czym jest cykl?

    Jakie rodzaje pętli są zaimplementowane w Turbo Pascalu?

    Co to jest treść pętli?

    W takim przypadku treść pętli jest ujęta w nawiasy operator begin...end?

    Jaka jest różnica między operatorami while i repeat?

    Kiedy lepiej używać operatora powtarzania do zapętlania? Co jest napisane w nagłówku tego operatora?

    Jak instrukcja for loop opisuje kierunek, w którym zmienia się wartość parametru loop?

Zdarza się, że w programach istnieje potrzeba organizowania rozgałęzień. W takim przypadku proces rozwiązywania problemu następuje na podstawie spełnienia lub niespełnienia jakiegoś warunku.

W języku Pascal wybór akcji, w zależności od jakiegoś warunku, można zrealizować za pomocą konstrukcji

jeśli ... to ... inaczej ... Jeśli następnie ...

2. Jaka jest pełna postać operatora skoku warunkowego, jeśli w Pascalu?

Pełna forma warunkowego operatora oddziału jeśli :

jeśli stan : schorzenie następnie operator1 w przeciwnym razie operator2;

Działanie operatora jest następujące: najpierw obliczana jest wartość wyrażenia stan : schorzenie . Jeśli jest to prawda (równe TRUE ), to wykonywane jest polecenie następujące po słowie. następnie (operator1). Jeśli wartością jest FALSE , wykonywana jest instrukcja następująca po słowie. w przeciwnym razie(operator2 ).

Operatorzy operator1 oraz operator2 może być złożony, to znaczy zawierać kilka wierszy kodu. Takie operatory są brane w nawiasy operatorów. początek ... koniec. Taka potrzeba pojawia się, gdy po słowach zastrzeżonych… następnie lub w przeciwnym razie Musisz określić wielu operatorów.

W tym przypadku ogólna postać operatora skoku warunkowego może mieć na przykład następującą postać:

jeśli stan : schorzenie następnie rozpocząć // wielu operatorów ... koniec w przeciwnym razie rozpocząć // wielu operatorów ... koniec ;

3. Jaka jest skrócona forma operatora skoku warunkowego?

Skrócona forma instrukcji skoku warunkowego nie zawiera bloku w przeciwnym razie i wygląda tak:

jeśli stan : schorzenie następnie operator;

W takim przypadku operator działa w następujący sposób. Najpierw obliczana jest wartość wyrażenia logicznego (logicznego) stan : schorzenie . Jeśli wynik wyrażenia logicznego stan : schorzenie prawda (równe PRAWDA), następnie wykonywana jest instrukcja następująca po słowie. następnie. Jeśli wynikiem jest FALSE , wykonywana jest instrukcja następująca po instrukcji. jeśli(w operatorze Jeśli następnie nic się nie dzieje).

Jeśli kilka instrukcji musi być wykonanych, gdy warunek jest spełniony, ogólna postać instrukcji przejścia warunkowego może wyglądać następująco:

jeśli stan : schorzenie następnie rozpocząć // dwóch lub więcej operatorów ... koniec ;

4. Przykłady użycia operatora skoku warunkowego, który ma pełną formę reprezentacji.

Przykład 1 Fragment programu do znajdowania wartości maksymalnej między dwiema liczbami rzeczywistymi.

var a,b:rzeczywista; // a, b - zmienne, dla których poszukiwane jest maksimum max:rzeczywistość; // maksymalny ... rozpocząć ... // a, b - są podane jeśli a>b następnie max:=a w przeciwnym razie max:=b; ... koniec ;

Przykład 2

Fragment kod programu to rozwiązuje ten problem:

... var x,f:rzeczywiste; rozpocząć ... // x - zestaw jeśli -5 następnie f:= x*x+8 w przeciwnym razie f:= -x*x*x+2 ; // w zmiennej f - wynik ... koniec ;

5. Przykłady użycia operatora skoku warunkowego, który ma skróconą formę reprezentacji.

Przykład 1 Fragment kodu, który znajduje minimalną wartość między dwiema liczbami rzeczywistymi x oraz tak .

... var min:rzeczywistość; ... rozpocząć ... // x, y - dane min:=x; jeśli min następnie min:= tak; ... koniec ;

Przykład 2 Obliczanie wartości funkcji według warunku. Niech będzie konieczne znalezienie wartości funkcji:

var x, f:rzeczywistość; rozpocząć ... // x - podane jeśli x<-6 następnie f:=3 *x*x-x; jeśli (-6 <=x) oraz(x<=5 ) następnie f:=sqrt(7-x); jeśli x>5 następnie f:=8 *x-3 ; ... koniec ;

Lekcja dotyczy operatora warunkowego w Pascalu ( jeśli). Wyjaśnia, jak używać wielu warunków w jednej konstrukcji ( ORAZ oraz LUB). Uwzględniono przykłady pracy z operatorem.

Przypominamy, że ta strona nie stanowi kompletnej prezentacji informacji na ten temat. Celem portalu jest umożliwienie przyswojenia materiału na podstawie gotowych, rozwiązanych przykładów na temat „Język programowania Pascal” wraz z praktycznymi zadaniami utrwalenia materiału. Zadania Pascala prezentowane na stronie są ułożone sekwencyjnie w miarę wzrostu ich złożoności. Witryna może być wykorzystywana przez nauczycieli i wykładowców jako pomoc wizualna.

Przed podjęciem tego tematu używano głównie algorytmów liniowych w Pascalu, które są typowe dla bardzo prostych zadań, w których czynności (operatory) wykonywane są sekwencyjnie, jedna po drugiej. Bardziej złożone algorytmy wymagają użycia konstrukcji rozgałęziającej.

Schemat blokowy instrukcji warunkowej:

Operator warunkowy w Pascalu ma następującą składnię:

Skrócona wersja:

if warunek to oświadczenie;

Pełna wersja:

if warunek then instrukcja else instrukcja;

Operator warunkowy w Pascalu - if - służy do organizowania postępu zadania w taki sposób, że kolejność wykonywania operatorów zmienia się w zależności od jakiegoś warunku logicznego. Warunek logiczny może przyjąć jedną z dwóch wartości: odpowiednio prawda (prawda) lub fałsz (fałsz), może to być prawda lub fałsz.

Operator złożony

Jeśli w prawdziwym stanie konieczne jest wykonanie kilku instrukcji, to zgodnie z zasadami języka Pascal muszą być ujęte w blok, zaczynając od słowa funkcyjnego begin i kończąc na słowie funkcyjnym end . Taki blok nazywa się wsporniki operatora, a ta konstrukcja operator złożony:

Nawiasy operatorskie i operator złożony w Pascalu:

if wyrażenie logiczne to zacznij instrukcję1; operator2; end else początek instrukcja1; operator2; koniec;

Tłumaczenie z angielskiego operatora warunku ułatwi zrozumienie jego użycia:

JEŚLI NASTĘPNIE W PRZECIWNYM RAZIE
JEŚLI NASTĘPNIE INACZEJ


W warunku (w wyrażeniu logicznym) używane są operatory relacyjne.
Rozważmy listę operatorów relacyjnych Pascala:

  • więcej >
  • mniejszy
  • większe lub równe w Pascalu >=
  • mniejsza lub równa w Pascal
  • porównanie w Pascalu =
  • nierówne w Pascal

Przykład: znajdź największą z dwóch liczb

opcja 1 Opcja 2


Zrozum szczegółowo pracę Możesz użyć operatora warunkowego w Pascalu, oglądając samouczek wideo:

Przykład: obliczyć wartość zmiennej y z jednej z dwóch gałęzi

Pokaż rozwiązanie:

varx,y:real; rozpocznij writeln("Wpisz x"); odczyt(x); jeśli x>0 to y:=ln(x) w przeciwnym razie y:=exp(x); writeln ("y=", y:6:2) (łączna liczba zajmie 6 pozycji i będzie miała 2 miejsca po przecinku) end.

Zwróć uwagę, jak w tym przykładzie jest drukowane y. Przy wnioskowaniu zmiennych typu w pascalu można skorzystać z tzw sformatowane wyjście, lub notacja z dwoma dwukropkami:
y:6:2
- liczba po pierwszym dwukropku (6) wskazuje, ile znaków zajmie liczba, gdy zostanie wyświetlona na ekranie
- liczba po drugim dwukropku (2) wskazuje, ile miejsc dziesiętnych liczby rzeczywistej zostanie wyświetlonych

Zatem użycie takiej notacji w Pascalu praktycznie pozwala na zaokrąglanie do setnych, tysięcznych itd.

Zadanie 0. Oblicz wartość zmiennej y za pomocą jednej z dwóch gałęzi:

Zadanie 1. Do komputera wprowadzane są dwie liczby. Jeśli pierwszy jest większy niż drugi, oblicz ich sumę, w przeciwnym razie - iloczyn. Następnie komputer powinien wydrukować wynik i tekst PROBLEM ROZWIĄZANY

Zadanie 2. Smok co roku przyrasta trzy głowy, ale po ukończeniu 100 lat - tylko dwie. Ile głów i oczu ma smok? N lat?

Operacje logiczne w Pascalu (w wyrażeniu boolowskim)

Kiedy musisz użyć podwójnego warunku w Pascalu, potrzebujesz operacji logicznych.

  • Operacja Boole'a ORAZ (I), umieszczony pomiędzy dwoma warunkami, mówi, że oba te warunki muszą być spełnione jednocześnie (musi być prawdziwe). Logicznym znaczeniem tej operacji jest „koniunkcja”.
  • Umieszczony pomiędzy dwoma warunkami, znak LUB (LUB) mówi, że wystarczy, jeśli przynajmniej jeden z nich jest prawdziwy (jeden z dwóch warunków jest prawdziwy). Logicznym znaczeniem tej operacji jest „odłączenie”.
  • w Pascalu XOR - znak operacji logicznej, oznaczający „ścisłą alternatywę” i wskazujący, że konieczne jest, aby jeden z dwóch warunków był spełniony (prawda), a drugi nie był spełniony (fałsz).
  • Operacja Boole'a NIE przed wyrażeniem logicznym lub zmienną ma znaczenie „negacja” lub „inwersja” i wskazuje, że jeśli dana zmienna lub wyrażenie jest prawdziwe, to jego negacja jest fałszem i odwrotnie.

Ważny: Każdy z prostych warunków musi być ujęty w nawiasy.

Przykład: Rozważ przykłady operacji logicznych w wyrażeniach logicznych w Pascal

1 2 3 4 5 6 7 8 varn: liczba całkowita ; początek:= 6 ; jeśli (n>5 ) i (n<10 ) then writeln ("истина" ) ; if (n>7) lub (n<10 ) then writeln ("истина" ) ; if (n>7)xor(n<10 ) then writeln ("истина" ) ; if not (n>7) następnie napisz("prawda"); koniec.

zmienna:liczba całkowita; początek:=6; jeśli (n>5) i (n<10) then writeln("истина"); if (n>7) lub (n<10) then writeln("истина"); if (n>7) xor(n<10) then writeln("истина"); if not(n>7) następnie napisz("prawda"); koniec.

Przykład: Firma rekrutuje pracowników w wieku od 25 do 40 lat włącznie. Wprowadź wiek osoby i określ, czy nadaje się do tej firmy (wyświetl odpowiedź „odpowiedni” lub „nieodpowiedni”).
Osobliwość: musimy sprawdzić, czy dwa warunki są spełnione jednocześnie.