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

КР2 часть 1, вариант 20

.doc
Скачиваний:
13
Добавлен:
01.04.2014
Размер:
75.26 Кб
Скачать

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра программного обеспечения информационных технологий

  

  

 

Факультет ФНиДО

Специальность ПОИТ

  

 

Контрольная работа № 2

по дисциплине «Основы алгоритмизации и программирования»

часть 1

Вариант № 20

 

  

Выполнила:

 

  

 

Минск 2012

1). Задание

Вычислить сумму пятидесяти первых элементов последовательности, заданной формулой:

Xi = 0,7*Xi-13 + 0,3*Xi-2 – 0,1*Xi-3

при X0 = X1 = X2 = 1. Массивы не использовать.

2). Схема алгоритма

На рис. 1 приведен способа графического представления алгоритма

Рис. 3. Диаграмма Насси-Шнейдермана

3). Программа на языке Pascal

Далее приведена программа на языке Pascal, также данная программа хранится в файле KR2.pas

{Программа вычисления суммы первых 50-ти чисел

последовательности}

Program KR2;

Uses Crt; {Используем модуль Crt}

{Начинается раздел описания переменных}

var

i:integer; {Счетчик числа шагов}

x0,x1,x2:real; {Числа последовательности}

x:real; {Для хранения очередного слагаемого}

S:real; {В этой переменной будем

накапливать сумму}

A,B:real; {Переменные используются в качестве

третьей переменной для обмена значениями}

{Начинается тело программы}

begin

ClrScr; {Обновим экран}

x0:=1; {Присвоили значение первому числу

последовательности}

x1:=X0; {Присвоили значение второму числу

последовательности}

x2:=X1; {Присвоили значение третьему числу

последовательности}

i:=4; {Присвоили счетчику значение}

S:=x0+x1+x2; {Считаем сумму первых трех чисел

последовательности}

Writeln('Х0, X1, X2 по условию задачи равны ', X0:3, X1:3, X2:3); {Выведем на экран входные данные}

{Начинается тело цикла, в котором произойдет расчет

первых 50-ти чисел последовательности}

while i<=50 do {Пока счетчик шагов не станет равен 50

считаем сумму}

begin

x:=0.7*x2*sqr(x2)+0.3*x1-0.1*x0; {Посчитали новое слагаемое}

S:=S+x; {Увеличили сумму на текущее

слагаемое}

A:=x2; {Обмен значениями через

третью переменную}

B:=x1; {Обмен значениями через

третью переменную}

x2:=x; {Обмен значениями}

x1:=A; {Обмен значениями через

третью переменную}

x0:=B; {Обмен значениями через

третью переменную}

inc(i) {Вычислили номер следующего шага}

end; {Конец описания тела цикла}

writeln('сумма равна ', s); {Вывод содержимого ячейки S

с пояснительным текстом}

readln {Здесь программа приостановиться

и будет ждать ввод с клавиатуры}

end. {Здесь оканчивается тело программы}

4). Тестовый набор данных

В табл. 1 использован прием трассировки.

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

Оператор

Условие

X

S

I

N

Примечание

3

4

3

While I<=50

Да

0.9

3.9

5

4

S:=S+X, S:=3+0.9,

S:=3.9

While I<=50

Да

0,7103

4.6103

6

5

S:=S+X, S:=3.9+0.7103, S:=4,6103

While I<=50

Да

0.42086

5.03116

7

6

S:=S+X, S:=4.6103+0.42086

S:=5.03116

While I<=50

Да

8.8502704622E-11

5.2715600020E+00

51

50

S:=5.2715600020E+00

While I<=50

Нет,

т.к. I=51

Табл. 1. Трассировка программы

5). Описание схемы алгоритма

  1. Объявляем переменные, в том числе счетчик числа шагов;

  2. Считаем сумму первых трех чисел последовательности;

  3. Выводим на экран входные данные;

  4. Проверяем, выполняется ли условие, при котором счетчик числа шагов должен быть меньше пятидесяти. Если условие выполняется, переходим к 5-му пункту, если не выполняется переходим к 10-му пункту;

  5. Считаем следующее слагаемое;

  6. Добавляем следующее слагаемое к накопленной сумме чисел;

  7. Обновляем переменные;

  8. Счетчик числа шагов увеличиваем на 1;

  9. Переходим к выполнению 4 пункта;

  10. . Выводим на экран сумму первых пятидесяти чисел последовательности.