Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Informatika / 4 - циклические вычислительные процессы общее

.pdf
Скачиваний:
24
Добавлен:
14.03.2016
Размер:
377.51 Кб
Скачать

Л. Р. №

Студент

Иванов И. И.

«Циклические

Группа

ХХ-999

 

 

Дата

дд.мм.гг

вычислительные процессы»

 

 

 

Допуск

 

 

 

 

 

Выполнение

 

 

 

 

 

Отчет

 

 

 

 

Условие задачи 1

Трижды определить значение выражения, используя три различных цикла

k

 

n

2

 

S =

 

.

 

 

n=1

 

n + x

Тестовые примеры к задаче 1

1)

Входные данные: k = 5, x = 1

Выходные данные:

S = 0.707+3.016+7.517+14.672+24.878

полученная сумма S = 24.878

2)

Входные данные: k = 3, x = 0

Выходные данные:

S = 1.000+ 3.828+ 9.025

полученная сумма S = 9.025

1

Блок-схемы к задаче 1

 

 

 

 

 

 

 

 

Начало

 

 

 

Начало

 

Ввод k, x

 

 

 

 

 

 

 

 

Ввод k, x

 

S := 0

 

 

 

 

 

 

Начало

 

S := 0

 

n := 1

 

 

 

 

 

 

Ввод k, x

 

n := 1

 

 

 

S := 0

 

 

 

n ≤ k

 

 

 

 

n2

 

 

 

S := S +

 

 

n := 1 , k

 

 

 

 

 

n + x

 

n2

 

 

 

 

S := S +

S := S +

n2

n := n + 1

 

n + x

n + x

 

 

 

 

 

 

 

 

n := n + 1

 

 

 

n > k

 

 

 

Вывод S

 

 

 

 

 

Конец

 

Вывод S

 

Вывод S

 

 

 

 

 

 

 

 

 

 

a)

Конец

Конец

 

 

использование

б)

в)

цикла for

использование

использование

 

цикла repeat

цикла while

2

Листинг программы на Pascal к задаче 1 (вариант с циклом for)

program cicleForSumm; var n,k:integer;

x,S:real; begin

cls;

writeLn('Введите k, x'); readLn(k,x);

for n:=1 to k do S:=S+sqr(n)/sqrt(n+x);

writeLn('полученная сумма S=',S:8:3); end.

Листинг программы на Pascal к задаче 1 (вариант с циклом repeat)

program cicleRepeatSumm; var n,k:integer;

x,S:real; begin

cls;

writeLn('Введите k, x'); readLn(k,x);

S:=0;

n:=1; repeat

S:=S+sqr(n)/sqrt(n+x);

writeLn(S,n:5);

n:=n+1; until n>k;

writeLn('полученная сумма S=',S:8:3); end.

Листинг программы на Pascal к задаче 1 (вариант с циклом while)

program cicleWhileSumm; var n,k:integer;

x,S:real; begin

cls;

writeLn('Введите k, x'); readLn(k,x);

S:=0;

n:=1;

while n <= k do begin

S:=S+sqr(n)/sqrt(n+x);

n:=n+1;

end;

writeLn('полученная сумма S=',S:8:3); end.

3

Условие задачи 2

Трижды протабулировать функцию, используя три различных цикла

f

(

x

)

=

(

x +a

)

2 на интервале x

[

]

, x = 0,3 , указав при этом значения

 

 

 

 

 

2; 3

функции с нечетной и четной целой частью.

Тестовые примеры к задаче 2

 

1) Входные данные: a = 12

f(

Выходные данные:

- целая часть 100 четная

-2.00) =

100.00

f(

-1.70) =

106.09

- целая часть 106 четная

f(

-1.40) =

112.36

- целая часть 112 четная

f(

-1.10) =

118.81

- целая часть 118 четная

f(

-0.80) =

125.44

- целая часть 125 нечетная

f(

-0.50) =

132.25

- целая часть 132 четная

f(

-0.20) =

139.24

- целая часть 139 нечетная

f(

0.10)

=

146.41

- целая часть 146 четная

f(

0.40)

=

153.76

- целая часть 153 нечетная

f(

0.70)

=

161.29

- целая часть 161 нечетная

f(

1.00)

=

169.00

- целая часть 169 нечетная

f(

1.30)

=

176.89

- целая часть 176 четная

f(

1.60)

=

184.96

- целая часть 184 четная

f(

1.90)

=

193.21

- целая часть 193 нечетная

f(

2.20)

=

201.64

- целая часть 201 нечетная

f(

2.50)

=

210.25

- целая часть 210 четная

f(

2.80)

=

219.04

- целая часть 219 нечетная

 

2) Входные данные: a = 1

f(

Выходные данные:

- целая часть 9 нечетная

-2.00) =

9.00

f(

-1.70) =

7.29

- целая часть 7 нечетная

f(

-1.40) =

5.76

- целая часть 5 нечетная

f(

-1.10) =

4.41

- целая часть 4 четная

f(

-0.80) =

3.24

- целая часть 3 нечетная

f(

-0.50) =

2.25

- целая часть 2 четная

f(

-0.20) =

1.44

- целая часть 1 нечетная

f(

0.10)

=

0.81

- целая часть 0 четная

f(

0.40)

=

0.36

- целая часть 0 четная

f(

0.70)

=

0.09

- целая часть 0 четная

f(

1.00)

=

0.00

- целая часть 0 четная

f(

1.30)

=

0.09

- целая часть 0 четная

f(

1.60)

=

0.36

- целая часть 0 четная

f(

1.90)

=

0.81

- целая часть 0 четная

f(

2.20)

=

1.44

- целая часть 1 нечетная

f(

2.50)

=

2.25

- целая часть 2 четная

f(

2.80)

=

3.24

- целая часть 3 нечетная

4

Блок-схемы к задаче 2

 

 

 

 

 

 

Начало

Начало

 

 

 

 

 

 

Ввод a

Ввод a

 

 

 

 

 

 

x0:=-2

x0:=-2

 

 

 

N:=trunc((3-x0)/0.3)

 

f := (x+a)2

 

 

 

k := 0 , N

 

 

 

 

 

 

Вывод x, f

x:=x0+0.3*k

 

 

 

f := (x+a)2

 

trunc(f) mod 2 ≠ 0

 

 

‘Целая часть’

 

 

‘Целая часть’

Вывод x, f

 

trunc(f) ‘нечетная’

trunc(f) ‘четная’

 

 

 

trunc(f) mod 2 ≠ 0

 

x := x + 0.3

‘Целая часть’

‘Целая часть’

 

 

trunc(f) ‘нечетная’

trunc(f) ‘четная’

 

x > 3

 

 

 

Конец

Конец

 

 

 

a) использование цикла for

б) использование цикла repeat

5

Листинг программы на Pascal к задаче 2 (вариант с циклом for)

program cicleForTabul; var x0,f,x,a:real;

N,k:integer; begin

cls;

writeLn('Введите a'); readLn(a);

x0:=-2; N:=trunc((3-x0)/0.3); for k:=0 to N do

begin

6

x:=x0+0.3*k;

f:=sqr(x+a); write('f(',x:8:2,') =',f:8:2); if trunc(f) mod 2 <> 0 then

writeLn(' - целая часть ',trunc(f) ,' нечетная ') else

writeLn(' - целая часть ',trunc(f) ,' четная');

end;

end.

Листинг программы на Pascal к задаче 2 (вариант с циклом repeat)

program cicleRepeatTabul; var f,x,a:real;

begin cls;

writeLn('Введите a'); readLn(a);

x:=-2; repeat

f:=sqr(x+a); write('f(',x:8:2,') =',f:8:2); if trunc(f) mod 2 <> 0 then

writeLn(' - целая часть ',trunc(f) ,' нечетная ') else

writeLn(' - целая часть ',trunc(f) ,' четная'); x:=x+0.3;

until x>3;

end.

Листинг программы на Pascal к задаче 2 (вариант с циклом while)

program cicleWhileTabul; var f,x,a:real;

begin cls;

writeLn('Введите a'); readLn(a);

x:=-2;

while x <= 3 do begin

f:=sqr(x+a); write('f(',x:8:2,') =',f:8:2); if trunc(f) mod 2 <> 0 then

begin

writeLn(' - целая часть ',trunc(f) ,' нечетная ') end

else

writeLn(' - целая часть ',trunc(f) ,' четная');

x:=x+0.3;

end;

end.

7

Условие задачи 3

Ввести целое число N . Если N >0 , то составить программу наглядного вычисления факториала, выводя в каждой строке кроме самого значения факториала поочередно столько раз символы «>» и «<», сколько сомножителей в факториале. Например, для N =5:

1>

2<<

6>>>

24<<<<

120>>>>>

Тестовый пример к задаче 3

Входные данные:

N=6

Выходные данные:

1>

2<<

6>>>

24<<<<

120>>>>>

720<<<<<<

8

Блок-схема к задаче 3

Листинг программы на Pascal к задаче 3

program ABC;

var i,k,N:integer; f:LongInt;

begin

writeLn('Введите N'); readLn(N);

f:=1;

for i:=1 to N do begin

f:=f*i;

write(f);

for k:=1 to i do

if i mod 2 <> 0 then write('>')

else write('<');

writeLn;

end;

end.

9

Список задач №1 для лабораторной работы «Циклические вычислительные процессы»

1.

Трижды определить значение суммы, используя три различных цикла

 

S = 6 (n2 + x).

 

 

 

 

n=1

 

 

 

 

 

2.

Трижды определить значение произведения, используя три различных

 

 

4

 

 

 

 

 

цикла P =(n2 + x).

 

 

 

n=1

 

 

 

3.

Трижды определить значение суммы, используя три различных цикла

 

S =5 (n3 +n x).

 

 

 

n=1

 

 

 

 

 

4.

Трижды определить значение произведения, используя три различных

 

 

8

 

 

 

 

 

цикла

P =(n + x).

 

 

 

n=1

 

 

 

5.

Трижды определить значение суммы, используя три различных цикла

 

S =9

ln (n).

 

 

 

 

n=3

 

 

 

 

 

6.

Трижды определить значение суммы, используя три различных цикла

 

S =k (n +1)2 .

 

 

 

 

n=1

 

 

 

 

 

7.

Трижды определить значение произведения, используя три различных

 

цикла

k n

 

 

 

 

P =

+ x .

 

 

 

n=1 2

 

 

 

8.

Трижды определить значение произведения, используя три различных

 

 

5

1

 

 

 

цикла

P =

 

 

+ x .

 

 

2n

 

 

n=1

 

 

9. Трижды определить значение суммы, используя три различных цикла

S = 6 (x n 1)3 .

10.

n=1

 

 

Трижды определить значение произведения, используя три различных

 

 

5

 

 

цикла

P =(2x + n ).

11.

 

n=1

Трижды определить значение произведения, используя три различных

 

 

6

 

 

цикла P =(n +2x).

12.

 

n=1

Трижды определить значение суммы, используя три различных цикла

 

S = 4

n + x

.

 

2

 

n=1 (n +1)

10