
- •Уфимский государственный нефтяной технический университет Кафедра вычислительной техники и инженерной кибернетики учебно-методическое пособие
- •Введение
- •Состав контрольной работы
- •Требования к оформлению отчета
- •Примеры алгоритмов и программ
- •1. Программирование алгоритмов линейной структуры
- •2. Программирование алгоритмов циклической структуры
- •3. Программирование алгоритмов разветвляющейся структуры
- •4. Суммирование рядов
- •Результаты
- •Результаты
- •5. Работа с массивами
- •Список рекомендуемой литературы
- •Министерство общего и профессионального образования российской федерации
- •Символы к блок-схемам по гост 19.003-80
- •Содержание
3. Программирование алгоритмов разветвляющейся структуры
Пример.
Вычислить значение функции.
если
а) с использованием условного оператора if-then-else
Паскаль-программа
Program
prim21;
var
a,b,c,x,y:real;
n:integer;
begin
write(‘Введите
а=’);
readln(a);
x:=ln(abs(a-cos(a)));
c:=x*a; b:=x+a;
if c<=0 then
begin y:=-10.5; n:=1; end
else
if c=>3.5 then
да
begin
y:=c+ln(b); n:=3; end
else
нет
begin y:=exp(c)+2*b; n:=2; end;
writeln(‘x=’,x:1:3,’ c=’,c:1:3,’ y=’,
да
y:1:3,’
n=’,n);
end.
нет
y=eс+2b,
n=2 y=c+lnb,
n=3
y=-10.5,
n=1
x=1.927 c=14.162 y=16.389 n=3
б) c использованием оператора выбора case
Паскаль-программа
Program
prim22;
var a,b,c,x,y:real;
k:integer;
begin
write(‘Введите а=’); readln(a);
x:=ln(abs(a-cos(a)));
c:=x*a; b:=x+a;
if
c<=0 then k:=1 else
if c<=3.5 then k:=2 else k:=3;
case k of
1:
y:=-10.5;
да
2: y:=exp(c)+2*b;
3:
y:=c+ln(b);
нет
end;
да writeln(‘x=’,x:1:3,’
c=’,c:1:3,’
=’,y:1:3,’ k=’,k);
нет end.
Результат
Введите а=7.35
x=1.927
c=14.162
y=16.389 k=3
нет
да
k=1
y=ec+2b
k=2
k=3
4. Суммирование рядов
Задача. Разработать программу вычисления точного Y и прибли-женного S значений функции при изменении её аргумента от xн до xк
с шагом Δx.
Приближенное
значение функции, представленной
бесконечным рядом
,
вычислять путем суммирования членов
ряда до достижения требуемой точности
=
.
То есть прибавлять очередной член ряда
до тех пор, пока его значение по абсолютной
величине не станет меньше
.
Для предотвращения зацикливания
предусмотреть завершение процесса
суммирования членов ряда по заданному
максимальному номеру члена ряда
=1000.
Ниже рассмотрены примеры суммирования бесконечных рядов трех типов:
а) текущий член ряда ai вычисляется непосредственно;
б) текущий член ряда ai вычисляется по рекуррентной формуле
,
где
;
в) текущий член
ряда ai
является
произведением двух сомножителей
,
где
вычисляется непосредственно, а
-по
рекуррентной формуле. Формула итерации
для текущего члена находится в виде:
,
где
.
Примеры
а) рассматривается вариант вычисления суммы бесконечного ряда, текущий член ai которого вычисляется непосредственно и имеет вид, например,
и т.д.
Пример 1.
;
;
;
-
вычисляется непосредственно;
Блок-схема
алгоритма
Паскаль-программа program
prim41; const
n=1000;e=0.0001; label
met; var
x,y,s,xn,xk,dx,a:real;
i:integer; begin
write('Введите
xn,xk,dx=>'); readln(xn,xk,dx); x:=xn; while
x<=xk do begin
y:=1/2-pi/4*abs(sin(x)); s:=0; for
i:=1 to n do begin
a:=cos(2*i*x)/(4*i*i-1); if
abs(a)<e then goto met; s:=s+a; end;
met:writeln('x=',x:3:1, ‘y=',y:8:5,'
s=',s:8:5,' i=',i); x:=x+dx; end; readln end.
нет
да
s=0