Лабораторная работа №6 Условный оператор If

Формат документа: rtf
Размер документа: 0.88 Мб





Прямая ссылка будет доступна
примерно через: 45 сек.



  • Сообщить о нарушении / Abuse
    Все документы на сайте взяты из открытых источников, которые размещаются пользователями. Приносим свои глубочайшие извинения, если Ваш документ был опубликован без Вашего на то согласия.

5




5

Лабораторная работа №6

Разветвляющиеся структуры. Условный оператор If-then-else

Цель: сформировать навыки и умения программирования разветвляющихся структур на примере арифметической прогрессии.

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

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

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

Часть else может и отсутствовать. Перед else нет «;».

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

if (<условие1>)and(<условие2>)….and(<условиеN>) then

<оператор1>

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

Если необходимо выполнение хотя бы одного из условий, тогда в условный оператор вводится оператор OR(ИЛИ):

if (<условие1>)or(<условие2>)….or(<условиеN> ) then <оператор1>

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

Если за операторами then и else следует более одного оператора, их необходимо заключить в операторные скобки (так называемый составной оператор):

if <условие> then

begin

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

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

…………….

end

else {внимание! Перед и после оператора else нет знака «;»

begin

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

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

…………….

end;


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





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



Пример 1.Написать программу для вычисления значений функции:

y=

Функция вычисляется на трех диапазонах аргумента x по трем различным формулам. Составим блок-схему алгоритма решения данной задачи:












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

Program lab1;

Var x,y: real;

Begin

Writeln(‘Введите x’);

Readln(x);

If x>2,5 then y:=x-2

Else

If (x>=0) and (x<=2,5) then y:= 1+sqr(x)

Else y:=x*ln(abs(cos(x)));

Writeln(‘Значение функции y=’,y:3:3);

End.

Арифметическая прогрессия.

(an): a1, a2, …, … , an, …. .

Арифметической прогрессией (АП) называется числовая последовательность, каждый член которой, начиная со второго, равен последующему, сложенному с одним и тем же числом d. Это число называется разностью арифметической прогрессии. Таким образом, АП задается рекуррентным равенством:

an+1 =an + d, n N.

d= an+1-an,

an =a1+d*(n-1), или

an = ,

где a1-первый член прогрессии, an – n-ый член прогрессии, d – разность арифметической прогрессии.

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

Sn= или Sn=


Если d=0, то Sn=a1*n.

Арифметическая прогрессия является возрастающей, если d>0, и убывающей, если d<0.

Пример 2. Найти сумму первых 5 членов АП, если известно, что первый член АП a1 =1, а шестой a6 =21. Если разность АП d=0, то посчитать сумму по формуле Sn=a1*n.

Решение. Так как a6 = a1 +d(n-1),т.е. 1=21+5d, то d=(21-1)/5=4;

S5 ==45.

Программа, записанная на языке TP, для нахождения арифметической прогрессии приведена ниже.

var a1,ai,an,i,n,d,Sn:real;

begin

write('введите кол-во суммируемых членов прогрессии n=');

read(n);

write('введите первый элемент a1=');

read(a1);

write('введите n-ый элемент an=');

read(an);

writeln('введите d');

read(d);

if n<2 then writeln('введите другое число!!')

else

if d=0 then

Sn:=a1*n;

else

begin

d:=(an-a1)/n;

Sn:=((2*a1+d*(n-1))/2)*n;

end;

write('Сумма Sn=',Sn:3:3);

end.


Используя приведенный выше пример, составьте программу нахождения арифметической прогрессии в Задачах №6.1 - 6.4. Для проверки правильности выполнения программы после каждого задания приведен ответ.

Задание № 6.1. Используя арифметическую прогрессию найти сумму всех двузначных натуральных чисел (10..99).

Ответ: 4905

Задание № 6.2. Используя арифметическую прогрессию найти сумму всех целых чисел, каждое из которых делится без остатка на 11 и удовлетворяет условию -44< n 165. (Прим. d=11, n-число членов прогрессии).

Ответ: 1254

Задание № 6.3. Используя арифметическую прогрессию найти сумму всех двузначных натуральных чисел, которые при делении на 7 дают в остатке 2.

Ответ: 654

Задание № 6.4. Используя арифметическую прогрессию найти количество двузначных натуральных чисел, кратных 6. (Прим. D=6).

Ответ: 4905

В задачах №6.5- 6.15, используя условный оператор If, составить программу для нахождения значения заданной функции.

Задание № 6.5. Cоставить программу для вычисления
F(x)=

Задание № 6.6. Cоставить программу для вычисления
F(x)=

Задание № 6.7. Cоставить программу для вычисления
F(x)=

Задание № 6.8. Cоставить программу для вычисления
Z(x)=

Задание № 6.9. Cоставить программу для вычисления

F(x,y)=


Задание № 6.10. Cоставить программу для вычисления
Z(x)=

Задание № 6.11. Cоставить программу для вычисления
y=cos
f(x)+sin z2, где f(x)

Задание № 6.12. Cоставить программу для вычисления
y=sin
f(x), где f(x)

Задание № 6.13. Cоставить программу для вычисления
z=cos3
f(x,y), где f(x,y)

Задание № 6.14. Cоставить программу для вычисления
z=

y(x) z(x)=

Задание № 6.15. Cоставить программу для вычисления

ysin2 z(x), где

z(x)=