Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
algoritm.doc
Скачиваний:
42
Добавлен:
13.02.2015
Размер:
923.14 Кб
Скачать

Задание

Составьте программу для вычисления следующих выражений:

№ ва

Выражение

Значения переменных

Результат

рианта

а

b

c

1.

1,5

10,2

10,034

6,00

2.

13,5

0,92

1,05

-20,00

3.

0,785

1,5708

3,777

5,00

4.

9,01

7,7058

0,05

5.

2,0

13,0

0,8

2,00

6.

3,1415

96,6

18,4

1,00

7.

1,5

1,725

5,2425

34,00

8.

3,1416

1,5708

-1,884

0,50

9.

0,5

6,385

4,201

1,00

10.

9,5

-4,51

2,2093

-100,00

При выполнении программы использовать предлагаемые значения переменных a,bиc. При правильно составленном выражении результат должен совпасть со значением, приведённым в последней колонке.

Тема 6 Программирование разветвляющихся алгоритмов

Алгоритмы решения большинства задач не являются последовательными. Порядок работы программы может зависеть от определённых условий, например исходных данных, или результатов, полученных во время выполнения программы, или команд пользователя. В языке Pascalусловиеэто выражение логического типа (boolean), которое может принимать одно из двух значений: «истина» (TRUE) или «ложь» (FALSE). Простое условие состоит из двух операндов и оператора сравнения. В общем виде условие записывается следующим образом:

Операнд1 Оператор Операнд2;

где Операнд1 иОперанд2– операнды условия, в качестве которых могут выступать переменная, константа, функция или выражение;Оператор – оператор сравнения. ВTurboPascalимеется шесть операторов сравнения, которые перечислены ниже:

Оператор

Описание

Оператор

Описание

Больше

 

Не равно

Меньше

=

Больше или равно

=

Равно

=

Меньше или равно

Примеры условий: Summa < 1000; A>=X;

В первом примере операндами условия являются переменная и константа. Значение этого условия будет истинным, если значение переменной Summaменьше, чем1000. Во втором примере в качестве операндов используются переменные. Значение этого условия будет истинным, если значение переменнойAбольше или равноX.

Из простых условий, которые являются выражениями логического типа, можно строить сложные условия с применением к ним, как к операндам, логических операций: not– «отрицание»,and – «логическое И»,or - «логическое ИЛИ».

При записи сложных условий важно учитывать то, что логические операции имеют более высокий приоритет, чем операторы сравнения, поэтому простые условия следует брать в скобки. Например, пусть условие предоставления скидки сформулировано следующим образом: «Скидка предоставляется, если сумма покупки 500 руб. и день покупки – воскресенье; или если сумма покупки превышает 1000 руб.». Тогда условие можно записать:

((Summa > 500) and (Day = 7)) or (Summa > 1000)

Выбор действия в зависимости от выполнения условия может быть реализован при помощи операторов (инструкций) if иcase.

Оператор IF

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

В общем виде оператор IFзаписывается так:

If <условие>

then

begin

< операторы, выполняемые, если условие истинно >

end

else

begin

< операторы, выполняемые, если условие ложно >

end;

Выполняется оператор if следующим образом.

Сначала вычисляется значение выражения условие. Затем, если условие истинно (значение выраженияусловиеравноTRUE), то выполняются операторы, следующие за словомthen, находящиеся междуbeginиend. Еслиусловиене является истинным (значение выраженияусловиеравноFALSE), то выполняются операторы, следующие за словомelse, находящиеся междуbeginиend.

Если при выполнении (невыполнении) условия надо выполнить только один оператор, то ключевые слова begin иendможно не писать.

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

if <условие>

then

begin

<операторы, выполняемые, если условие истинно>

end;

Если в программе необходимо реализовать выбор более чем из двух вариантов, то применяют несколько условных операторов, «вложенных» один в другой. В качестве примера рассмотрим программу нахождения корней квадратного уравнения. Ниже приведён текст программы:

Program SqEquation;

Uses crt;

Var

a,b,c,x1,x2,d:real;

Begin

Clrscr;

Writeln('Решение уравнения Ax^2+Bx+C=0');

Wwrite('Введите A (A не равно 0)');

Readln(A);

Write('Введите B');

Readln(b);

Write('Введите C');

Readln(c);

d:=b*b-4*a*c;

If d>0

then

begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

Writeln('x1= ',x1:7:3,' x2= ',x2:7:3);

end

else

if d=0

then

begin

x1:=-b/(2*a);

Writeln('x= ',x1:7:3);

end

else

Writeln('Действительных корней нет');

Readln;

End.

Наберите текст программы, сохраните на диске в свою папку под именем Equation.pas, скомпилируйте и выполните программу. Используя программу, решите следующие уравнения:

x2-3x-4=0; x2-9x=0; x2+4x+4=0; 7x2-3x+16=0;

Оператор CASE

Оператор caseявляется обобщением оператораifи позволяет сделать выбор из произвольного числа имеющихся вариантов. В общем виде инструкцияcaseзаписывается следующим образом:

Case <выражение> of

<список констант 1>: begin

{последовательность операторов 1}

end;

<список констант 2>: begin

{последовательность операторов 2}

end;

<список констант N>: begin

{последовательность операторов N}

end

else

begin

{последовательность операторов, выполняемых в случае,}

{если значение выражения не попало ни в один }

{из списков констант }

end;

end;

Здесь:

<Выражение> – выражение, от значения (значение должно быть обязательно целого типа:Integer, Word, Byte;или символьного -Charтипа) которого зависит дальнейший ход программы (одна из последовательностей операторов, которая должна выполнена);

Список констант – константы (целого типа или типаChar), разделенные запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1,2,3,4,5,6 может быть заменен диапазоном 1..6.

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

Пример:

Var day:integer;

......

case day of

1..5:writeln('Рабочий день');

6:writeln('Суббота');

7:writeln('Воскресенье');

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]