- •Уфимский государственный нефтяной технический университет Кафедра вычислительной техники и инженерной кибернетики учебно-методическое пособие
- •Введение
- •Состав контрольной работы
- •Требования к оформлению отчета
- •Примеры алгоритмов и программ
- •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