русс | укр

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

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

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

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


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

Алгоритмическая конструкция ветвление


Дата добавления: 2015-06-12; просмотров: 1723; Нарушение авторских прав


 

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

If <логическое выражение> Then серия1 Else серия2;

Если логическое выражение, выступающее в качестве условия, принимает значение True (истинно), то выполняются операторы следующие за then (серия1), если False (ложь), то выполняются операторы расположенные после else (серия2).

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

If <логическое выражение> Then серия;

Когда выполняется последовательность команд (серия), необходимо использовать так называемые операторные скобки:

Begin

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

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

...

<Оператор N>

End;

! Точка с запятой после Begin не ставиться.

Вариант условного оператора в этом случае:

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

Else Begin < группа операторов 2> End;

! Знак "точка с запятой" не ставится перед служебным словом Else, но операторы в группах отделяются друг от друга этим знаком.

На языке Паскаль условия представляют собой выражения, значением которых является величина логического типа (True - истина или False - ложь). Это может быть как просто переменная указанного типа, так и сложная последовательность высказываний, связанных логическими операциями.

В простых условиях могут применяться знаки операций сравнения: >(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), <=(меньше или равно).

Пример. (C+D3)>=(D1*(45-2))



В сложных условиях логические выражения строятся с помощью логических операций: and (и), or (или), not (не).

Примеры: (a>b) and (a>c); (Х<=1) or (Y>5) and (a>2); (4*Х-1>0) and (Х+2<3); not (a=b).

!Операции сравнения имеют низший приоритет по сравнению с другими операциями, поэтому отношения в логических выражениях заключают в скобки.

Пример. Из двух чисел необходимо выбрать наибольшее.

ProgramExample;

Var A,B,C : Real; {A,B - для хранения чисел, C - результат}

Begin

Writeln('Введите два числа');

Readln(A,B); {Ввод чисел с клавиатуры}

If A>B Then C:=A Else C:=B; {Если A>B, то результат A сохраняем в С, иначе результат - B}

Writeln(‘Наибольшее число =’,C); {Выводим результат на экран}

End.

Пример.По заданным коэффициентам решить квадратное уравнение

ProgramSq1;

Var A, B, C, D, X1, X2 : Real;

Begin

Writeln ('Введите коэффициенты квадратного уравнения');

Readln (A,B,C);

D:=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=', X1:8:3, ' X2=',X2:8:3)

End

End.

Условный оператор реализует разветвление вычислительного процесса по двум направлениям, одно из которых осуществляется при выполнении условия, другое - в противном случае. Для реализации разветвлений более чем по двум направлениям необходимо использовать несколько условных операторов. В этом случае говорят о вложенности условных операторов. В случае вложенных ветвлений каждое новое ключевое слово Else относится к ближайшему If.

Пример. Дано действительное число a. Вычислить f(a), если

Program Usl1;

Var х, F : Real;

Begin

WriteLn('Введите действительное число: '); ReadLn(х);

If х <= 0 Then F: = 0 Else

If х <= 1 THEN F: = Sqr(х) - х Else F = Sqr(х) - Sin(Pi * Sqr(х));

WriteLn('Значение функции F(‘,x:5:2,’) = ', F:10:4);

End.

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

В конструкции CASE вычисляется выражение K и выбирается ветвь, значение метки которой совпадает со значением K. После выполнения выбранной ветви происходит выход из конструкции CASE. Если в последовательности нет метки со значением, равным K, то управление передается внешнему оператору, следующему за конструкцией CASE (в случае отсутствия альтернативы ELSE; если она есть, то выполняется следующий за ней оператор, а уже затем управление передается внешнему оператору).

Запись оператора выбора

Case K OF

A1 : серия 1;

A2 : серия 2;

...

AN : серия N

Else серия N + 1

End;

Любая из указанных серий операторов может состоять как из единственного оператора, так и нескольких (в этом случае, как обычно, операторы, относящиеся к одной метке, должны быть заключены в операторные скобки Begin…End).

Выражение K здесь может быть любого порядкового типа (к таким типам относятся все целые типы, Boolean, Char).

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

Program Maximum;

Var Max, X, Y : Real;

Begin

Write('Введите два неравных числа:');

ReadLn(X, Y);

Case X > Y Of

TRUE : Max := X;

FALSE : Max := Y

End;

WriteLn('Максимальное из двух есть ', Max : 12 : 6)

End.

Задания для практической работы.

Составить программы на языке Pascal.

1. Дано число к- целое. Определить, является ли оно четным (нечетным).

2. Выяснить, имеет ли решение уравнение вида А*х+В=0 в зависимости от параметра А.

3. Вычислить значение функции: х*5 ,если х<=-1

x/5 ,если х>=-1

4. Вычислить значение функции: х*5 ,если х<=-1

x/5 ,если х>=-1

x2 ,если -1<x<1

5. Даны три числа А, В и С. Значение наибольшего из них удвоить.

6. Даны три числа А, В и С. Выяснить существует ли треугольник с длинами сторон А,В,С.

7. Дано число К- целое, трехзначное. Найти сумму цифр этого числа.

8. Даны три числа А , В и С . Выдать их в порядке возрастания.

9. Составьте алгоритм, который по номеру дня недели выдает его название.

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

11. Составьте алгоритм, который по кол-ву лет школьника определяет, в каком он учится классе.

 



<== предыдущая лекция | следующая лекция ==>
Реализация линейных алгоритмов | Алгоритмическая конструкция повторение


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


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

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

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


 


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

 
 

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

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