Условный и безусловный операторы языка паскаль метки. Условный оператор в паскаль. Какой вид имеет полная форма оператора условного перехода if в языке Паскаль

Оператор условного перехода в Турбо Паскаль имеет вид:

If условие then оператор 1 else оператор 2 ;

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1 , записанный после ключевого слова then. В противном случае будет выполнен оператор 2 , следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать:

If условие then оператор 1 ;

Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Базовые операции и математические процедуры и функции

Математические выражения в алгоритмической записи состоят из операций и операндов. Большинство операций является бинарными, т.е. содержат два операнда (унарные операции содержат один операнд, например: -а, взятие адреса @В).

Арифметические операции:

+, -, /, *, div (целочисленное деление), mod (остаток от деления),

Логические: not, and, or, xor,

Операции отношения: >, <, >=, <=, <>, =.

Логические вычисления и операции отношения

Наличие типа Boolean и операций с ним позволяет программировать логические вычисления, в основу которых заложена Булева алгебра. Введены четыре логических операции, результат которых всегда имеет тип Boolean и может иметь только одно из двух значений (Trueº1 (истинно) или Falseº0 (ложно)).

Чтобы не было ошибок, при логических вычислениях лучше расставлять скобки самим. Так, например, запись Not A And B будет воспринята компилятором как (Not A)And B, а, может быть, необходимо было бы так: Not (A And B).

Математические процедуры и функции

Системная библиотека Turbo Pascal’я приведена в таблице:

Математические функции очень чувствительны к диапазону своих аргументов. Кроме того, возвращаемые значения целых типов должны в них умещаться, иначе возможны фатальные последствия

Большинство функций являются стандартными и не нуждаются в комментариях. Отдельно хотелось бы остановиться на специфических.

Функция PI генерирует число «Пи» с точностью, зависящей от наличия сопроцессора и содержит от 10 до 14 значащих цифр после запятой, она может использоваться в вычислениях как константа, но не может быть поставлена в вычислимые константы блока Const.

Набор тригонометрических функций ограничен, но дает возможность расширить математическую библиотеку путем введения своих собственных функций, определяющих стандартные математические

Типы данных

Лабораторная работа №2 (2 часа)

Вариант 5

Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора Goto , смысловое значение в программе «перейти к …», а его общий вид такой:

Goto m;

m – метка, заранее заданная в разделе описания меток. Следующая программа показывает как работает оператор безусловного перехода.

1
2
3
4
5
6
7
8
9
10

program goto_primer; {имя программы}
uses crt; {подключение модуля}
label m; {описание метки m}
begin
write (‘Karl Marx ‘ ) ; {вывод строки}
goto m; {требование перейти к метки}
write (‘clever’ ) ; {этот оператор пропускается}
m: write (‘fool’ ) ; {выполняется переход в эту область}
readkey; {для останова программы}
end .

В этой программе нет никаких условий, но именно о них будет идти далее речь.

Условный оператор:

В Паскале проверить какую-то часть программы для определения дальнейшего пути, по которому ей следует идти, есть оператор If . В зависимости от выполнения логического условия он указывает, какой блок выполниться следующим. Существует две формы записи: полная и краткая. Вторая отличается от первой тем что в ней имеется ветвь Else (иначе).

Общий вид краткой формы:

If <условие A> Then <оператор 1>;

Общий вид полной формы:

If <условие A> Then <оператор 1>

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

В краткой форме выполняется оператор 1 тогда, когда условие A истинно, иначе управление переходит к следующему оператору. В полной форме если условие A истинно, то выполняется оператор 1, иначе выполняется оператор 2. Следует запомнить, что перед else точка с запятой не ставится.

Пример программы с условным оператором, записанным в краткой форме:

Пример программы с условным оператором, записанным в полной форме:

В Паскале можно вкладывать один условный оператор в другой, причем делать это можно множество раз. При этом следует отметить, что каждому Then соответствует ближайшее Else .

Оператор выбора:

Когда количество альтернатив больше двух применяется оператор выбора Case . Его вид:

Case <селектор> Of

<значение селектора>: <оператор 1>;

<значение селектора>: <оператор 2>;

<значение селектора>: <оператор N>;

Else <оператор>

Если селектором оператора If было логическое выражение, то в Case им выступает переменная, которая может быть целого, перечислимого, интервального или символьного типа. В случае совпадения селектора со значения выполняется соответствующий оператор. Задать значение селектору можно тремя способами:

1) перечислением: 1, 10, 100, 1000

2) диапазоном: ‘d’..’k’

3) перечислением и диапазоном: 1..10, 20, 30, 50, 70..100

Выполнятся в операторе выбора, может только одна ветка (идущая раньше), даже когда селектор совпадает с несколькими значениями. Также, в отличие от If в Case можно ставить точку с запятой перед Else .

Рассмотрим программу, в которой условия проверяет оператор выбора.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

program case_primer;
uses crt;
var money: char ;
begin
write (‘Первая буква кода денежной единицы: ‘ ) ;
readln (money) ; {ввод значение в переменную}
case money of
‘A’ , ‘a’ : writeln (‘Французский франк’ ) ;
‘B’ , ‘b’ : writeln (‘Динар’ ) ;
‘C’ , ‘c’ : writeln (‘Юань’ ) ;
‘E’ , ‘e’ : writeln (‘Испанская песета’ ) ;
‘G’ , ‘g’ : writeln (‘Английский фунт стерлингов’ ) ;
‘I’ , ‘i’ : writeln (‘Итальянская лира’ ) ;
‘J’ , ‘j’ : writeln (‘Иена’ ) ;
‘R’ , ‘r’ : writeln (‘Рубль’ ) ;
‘U’ , ‘u’ : writeln (‘Доллар США’ ) ;
‘X’ , ‘x’ : writeln (‘Восточнокарибский доллар’ ) ;
else writeln (‘Неизвестная единица’ )
end ;
readkey;
end .

Программа проверяет селектор на соответствие его с имеющимися значениями. Если совпадений не находится, то выполняется блок Else .

Составной оператор представляет собой несколько операторов, объединяемых в один для выполнения действий в другом операторе(условном, цикла, выбора и пр.)

if x>0 then y:=x+2 else y:=x-2

13.Условный оператор.

б) Ветвящаяся структура

Оператор условного перехода

Оператор условного перехода в Турбо Паскаль имеет вид:

if условие then оператор 1 else оператор 2 ;

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1 , записанный после ключевого слова then. В противном случае будет выполнен оператор 2 , следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать:

if условие then оператор 1 ;

Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.

Примеры .

if x > 0 then modul:= x else modul:= -x;

if k > 0 then WriteLn("k - число положительное");

if min > max then begin

14.Оператор перехода. Метки и операторы перехода

Можно теоретически показать, что рассмотренных операторов вполне достаточно для написания программ любой сложности. В этом отношении наличие в языке операторов перехода кажется излишним. Более того, современная технология структурного программирования основана на принципе «программировать без GOTO»: считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее запутанной и сложной в отладке.

Тем не менее, в некоторых случаях использование операторов перехода может упростить программу.

Оператор перехода имеет вид:

GOTO <метка>.

Здесь GOTO - зарезервированное слово (перейти [на метку]); <метка> - метка.

Метка в Турбо Паскале - это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В целях совместимости со стандартным языком Паскаль в языке Турбо Паскаль допускается в качестве меток использование также целых чисел без знака.

Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток:

Пример

1: WriteLn("Переход к метке 1");

Действие оператора GOTO состоит в передаче управления соответствующему меченному оператору.При использовании меток необходимо руководствоваться следующими правилами:метка, на которую ссылается оператор GOTO, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. В основном пустой оператор используется для передачи управления в конец составного оператора.

Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может отсутствовать). В качестве условий выбора используется значение логического выражения. В Турбо Паскале имеются два ус­ловных оператора: if и case.

Оператор условия if

Оператор условия if может принимать одну из следующих форм:

if <условие> then <оператор1>

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

if <условие> then <оператор>;

Оператор условия if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значе­ние булевского типа. В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then. Если результат вычисления выражения в условии есть False (ложь), то выполняется <оператор2>. Во втором случае - если результат выражения Тгuе, выполняется <оператор>, если False - выполняется оператор, следующий сразу за оператором if. По правилам каждая из ветвей может содержать либо один выполняемый оператор, либо несколько, объединенных в составной оператор. Точка с запятой перед E lse не ставится.

Оператор выбора case

Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбораcase позволяет сделать выбор из произволь­ного числа имеющихся вариантов.

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

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

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

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

Оператор caseработает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словомelse. Если словоelseотсутствует, активизируется оператор, находящийся за словомend, т.е. первый оператор за границейcase.

Выражение-селектор - это простая переменная целого, символьного, перечисляемого или логического типов, в зависимости от значения которой принимается решение;

Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Тип констант должен совпадать cтипом селектора;

В указанном формате предполагается использование одного оператора для каждой альтернативы, но при необходимости можно можно задать несколько операторов, группировав их в составной оператор.

Ветвь Else не обязательна, и в отличие от оператора if, перед ней можно ставить точку с запятой.

Операторы повтора

Если в программе возникает необходимость неоднократно выполнить некоторые операторы, то используются операторы повтора (цикла). В языке Паскаль раз­личают три вида операторов цикла: while, repeat, for.

Оператор while

Оператор while (пока) называют оператором цикла с Предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.

while <условие продолжения повторений> do

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

Условие – логическое выражение. Тело цикла – простой или составной оператор. Составной оператор используется в тех случаях, когда тело цикла состоит из 2-х и более операторов.

Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен False, происходит выход из цикла и пере­ход к первому оператору, стоящему сразу за телом цикла.

Оператор повтора repeat

Оператор repeatреализует цикл спостусловием . Цикл с постусловием всегда будет выполнен хотя бы один раз.

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

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

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

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

Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат логического выражения равен False, то тело цикла активизируется еще раз; если результат True, происходит выход из цикла.

Оператор повтора for

Это оператор с известным числом повторений. Часто этот оператор повтора называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла , илиуправляющей переменной .

Оператор повтора for может быть представлен в двух форматах:

for <параметр цикла> := to do <тело цикла>;

for <параметр цикла> := downto do <тело цикла>;

где <параметр цикла> - это переменная целого, символьного, логического или перечисляемого типов;

SI и S2 - выражения, определяющие соответственно начальное и конечное значения параметра цикла;

for ... do - заголовок цикла;

Тело цикла может быть простым илисоставным оператором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все зна­чения параметра цикла от начального до конечного.

Действие команды. Параметру цикла присваивается значение выражения S1. Если оно меньше или равно, чем значение выраженияS2, то выполняется тело цикла. После этого значение параметра автоматически увеличивается на единицу и оно снова сравнивается со значением выраженияS2 и т.д. Когда значение параметра станет больше, чем значение выраженияS2, то выполняется следующий после цикла оператор.

Шаг изменения параметра цикла для оператора for…to…doравен +1, а для оператораfor…downto…doравен -1.

Вопросы для самопроверки:

    Формат оператора присваивания. Допустимо ли использование величин разных типов в арифметическом выражении?

    В чем заключается отличие оператора ввода Read от оператора Readln?

    Укажите форматы вывода данных.

    Какие виды ветвлений реализованы в Turbo Pascal?

    Для чего используются ветвления? Приведите примеры.

    Две формы записи условного оператора If.

    Формат записи вложенного оператора If.

    Формат записи оператора выбора Case?

    В каких случаях используется составной оператор Begin…end?

    Как в блок-схемах изображаются разветвленные алгоритмы?

    Что такое цикл?

    Какие виды циклов реализованы в Turbo Pascal?

    Что такое тело цикла?

    В каком случае тело цикла заключается в операторные скобки begin…end?

    В чем отличия операторов повтора while и repeat?

    В каких случаях предпочтительнее использовать для организации циклов оператор повтора for? Что записывается в заголовке этого оператора?

    Каким образом в операторе цикла for описывается направление изменения значения параметра цикла?

Бывает, что в программах возникает необходимость организовать ветвление. В этом случае процесс решения задачи происходит на основе выполнения или не выполнения некоторого условия.

В языке Паскаль выбор действия, в зависимости от некоторого условия, может быть реализован с помощью конструкции

if ... then ... else ... if ... then ...

2. Какой вид имеет полная форма оператора условного перехода if в языке Паскаль?

Полная форма оператора условного перехода if :

if условие then оператор1 else оператор2 ;

Действие оператора состоит в следующем: сначала вычисляется значение выражения условие . Если оно истинное (равное TRUE ), то выполняется оператор, который следует за словом then (оператор1 ). Если значение ложное (FALSE ), то выполняется оператор, который следует за словом else (оператор2 ).

Операторы оператор1 и оператор2 могут быть составными, то есть содержать несколько строк кода. Такие операторы берутся в операторные скобки begin … end . Такая необходимость возникает, если после зарезервированных слов then или else нужно указать несколько операторов.

В этом случае общий вид оператора условного перехода может иметь, например, следующий вид:

if условие then begin // несколько операторов ... end else begin // несколько операторов ... end ;

3. Какой вид имеет сокращенная форма оператора условного перехода?

Сокращенная форма оператора условного перехода не содержит блока else и имеет вид:

if условие then оператор ;

В этом случае оператор работает следующим образом. Сначала вычисляется значение логического (булевого) выражения условие . Если результат логического выражения условие истинный (равный TRUE ), то выполняется оператор, который следует за словом then . Если результат равный FALSE , то выполняется оператор, который следует за оператором if (в операторе if…then ничего не выполняется).

Если при выполнении условия нужно выполнить несколько операторов, то общий вид оператора условного перехода может быть таким:

if условие then begin // два или больше оператора ... end ;

4. Примеры использования оператора условного перехода, который имеет полную форму представления.

Пример 1. Фрагмент программы нахождения максимального значения между двумя вещественными числами.

var a,b:real; // a, b - переменные, для которых ищется максимум max:real; // максимум ... begin ... // a, b - задаются if a>b then max:=a else max:=b; ... end ;

Пример 2.

Фрагмент программного кода, решающего эту задачу:

... var x,f:real; begin ... // x - задается if -5 then f:= x*x+8 else f:= -x*x*x+2 ; // в переменной f - результат ... end ;

5. Примеры использования оператора условного перехода, который имеет сокращенную форму представления.

Пример 1. Фрагмент кода, который находит минимальное значение между двумя вещественными числами x и y .

... var min:real; ... begin ... // x, y - заданы min:= x; if minthen min:= y; ... end ;

Пример 2. Вычисление значения функции согласно условию. Пусть необходимо найти значение функции:

var x, f:real; begin ... // x - задано if x<-6 then f:=3 *x*x-x; if (-6 <=x) and (x<=5 ) then f:=sqrt(7 -x); if x>5 then f:=8 *x-3 ; ... end ;

Top