русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

У С Л О В Н Ы Й О П Е Р А Т О Р


Дата добавления: 2014-11-27; просмотров: 596; Нарушение авторских прав


 

С помощью условного оператора реализуются разветвляющиеся вычислительные процессы.

Разветвляющимися процессами называются такие, в которых в зависимости от значения некоторого признака обработка данных производится по одному из возможных направлений (по одной из ветвей).

В условном операторе в зависимости от выполнения проверяемого условия вычисление производится по одной из двух возможных ветвей (если количество ветвей вычислительного процесса свыше двух, то в этом случае обычно используется оператор Case, который в дальнейшем рассматривается в разделе «Оператор варианта»).

 

Пример 1.

 

Это сигнатура, функция знака y = sign(x). График функции:

 

y

 

1

 

 
 


0 x

 
 


-1

 

 

Блок-схема вычисления функции знака:

 

 
 

 

 


да нет

 

 

y := 1
да нет

 

 


Здесь производятся две проверки. В первой из них ( ) определяется первая ветвь вычислений, но остаются неопределенными вторая и третья ветви в формуле вычисления функции знака. Разделение этих ветвей выполняет вторая проверка ( ). В последнем случае знак «=» - это операция отношения, но не присваивание переменной нулевого значения.

 

Синтаксическая диаграмма условного оператора:

 

 
 

 


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

Ранее указывалось, что операторы в Паскаль-программе разделяются между собой точкой с запятой. В связи с этим внутри любого структурного оператора, в том числе оператора if, символ ";" не должен встречаться, иначе все, что стоит после него, будет считаться уже другим оператором.



 

 

Пример 2.

If x>0 then

y:=sqrt(x);

Else

y:=sqr(x);

 

В этом примере точка с запятой, стоящая перед словом else, заканчивает текст условного оператора. А это приводит к ошибке, поскольку оператора, начинающегося с зарезервированного слова else, в Паскале нет.

Следовательно, перед словом elseв условном операторе не должно быть точки с запятой, в противном случае это рассматривается как ошибка.

 

Паскаль-программа для функции знака:

 

ProgramSign1;

Var x : integer;

y : shortint;

Begin

Ввод x

If x>0 then

y:=1

Else

If x<0 then

y:=-1

Else

y:=0;

Печать y

End.

 

Если x - вещественная переменная, то сравнение в большинстве случаев нужно выполнять по e, где e - достаточно малое число (погрешность задания исходных данных). Как уже ранее указывалось, вещественные числа, как правило, определяют результаты измерений, производимых с определенной точностью. В этом случае значение с точки зрения математики является положительным числом. Если же переменная означает вес груза, то значение кг должно считаться эквивалентным нулю, если точность измерения веса кг.

 

На числовой оси вещественный нуль - это e-окрестность точки 0. Другими словами, если ½x½ < e, то x считается равным нулю.

 

x < 0 x = 0 x > 0

 
 


-e 0 e x

 

Следовательно, для вещественных переменных

 

 

Аналогично, и т.п.

 

Реализация функции знака для вещественного аргумента:

 

ProgramSign2;

Const eps = 0.000001;

Varx : real;

y : shortint;

Begin

Ввод x

If x>eps then

y:=1

Else

If x<-eps then

y:=-1

Else

y:=0;

Печать y

End.

В реальных программах вычисление sign(x) оформляется в виде функции, обращение к которой аналогично, например, обращению к функции sin(x).

 

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

 

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

 

Поскольку областью определения корня нечетной степени является вся числовая ось, то в программе должны анализироваться альтернативные варианты x < 0, x = 0 и x > 0. Учитывая, что ln(x), используемый при вычислении степенной функции, определен лишь при x > 0, рассматриваемую задачу можно реализовать следующим образом:

 

If abs(x)<eps then

y:=0

Else

y:=sign(x)*exp(ln(abs(x))/3);

Здесь рекомендуется установить eps <= 1E-30 ( при x = 1E-30 получим y = 1E-10 ).

 

Пример 3.

; сравнить и .

Var a,x,y : real;

b : boolean;

Begin

a:=5; x:=0.88;

y:=a*sin(x)/sqrt(1-sqr(cos(x));

b:=y=a;

Значения и равны лишь при точных вычислениях. При вычислении на ЭВМ мы имеем дело с приближенными значениями вещественных переменных.

Здесь мы получим b = false, так как y - a = 1.5 × 10-11 (точное значение y - a = 0).

 

Правильная реализация:

 

Consteps = 0.000001;

Var a,x,y : real;

b : boolean;

Begin

a:=5; x:=0.88;

y:=a*sin(x)/sqrt(1-sqr(cos(x));

b:=abs(y-a)<eps;

Здесь имеем b = true.

Пример 4. .

Program Max;

Vary,a,b,c : real;

Begin

Ввод a,b,c

y:=a;

Ifb>y then

y:=b;

If c>y then

y:=c;

Печать y

End.

 

Ниже приведена блок-схема для примера 4.

 

       
 
   
 

 

 


да нет

       
 
   
 

 


да нет

       
 
   
 

 


Примечание. Здесь, в отличие от предыдущих примеров, нет необходимости проверять отношения между значениями переменных с учетом погрешности .

 

Операторы 1 и 2, изображенные на синтаксической диаграмме условного оператора, в свою очередь могут быть условными операторами.

 

Пример 5.

IfB1 then

If B2 then

IfB3 then

S1

Else

S2

Else

IfB4 then

S3

Else

S4

Else

S5 .

 

Здесь B1,B2,B3,B4 – некоторые логические выражения, принимающие значения true или false; S1,S2,S3,S4,S5 – операторы (например, операторы присваивания). Каждое слово "else" в условном операторе относится к ближайшему слову "if", не связанному с каким-либо словом "else".

 

Схема действия записанного выше условного оператора наглядно изображена на приведенной ниже блок-схеме.

 

 
 

 


false true

       
   
 

 


false true

 

       
   


false true false true

 

 


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

 

Пример 6. Сгруппировать переменные в порядке возрастания.

 

Содержание алгоритма:

1) Если , то обменять значения и ( « ).

2) Если , то « .

3) Если , то « .

 

 

ProgramGroup;

Var a,b,c,R : real;

Begin

Ввод a,b,c

Ifa>b then

Begin

R:=a; a:=b; b:=R;

End;

Ifa>c then

Begin

R:=a; a:=c; c:=R;

End;

Ifb>c then

Begin

R:=b; b:=c; c:=R;

End;

Печать a,b,c

End.

 

 



<== предыдущая лекция | следующая лекция ==>
О П Е Р А Т О Р П Р И С В А И В А Н И Я | П Р О Ц Е Д У Р Ы В В О Д А - В Ы В О Д А


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.352 сек.