Примеры выполнения задания




 

Задача № 1

вычислить значение функции y = f(x) для x, заданных на интервале a £ x £ b, где a и b - известные числа, x меняется с шагом hx.

Эта задача называется задачей табулирования функции одной переменной на интервале. Задача поставлена. Есть готовая математическая модель. ее можно пояснить графиком (рисунок 2).

 

 

Рисунок 2 – График математической модели

 

 

Вычисления в данной задаче носят циклический характер: х принимает значение а, вычисляется y = f(x), затем х увеличивается на величину h x и снова вычисляется y = f(x), и так до тех пор, пока х не станет больше b. В данном случае х является единственным параметром цикла с известным начальным и конечным значением, поэтому будет построен простой цикл с параметром. Рассмотрим на этом примере несколько вариантов разработки алгоритма.

1) Построим цикл с предусловием, используя основную управляющую конструкцию повторение. Блок схема приведена на рисунке 3.

особое внимание в этом алгоритме надо обратить на действие х = х + hх. это не алгебраическое уравнение. Эту запись надо читать так: х присвоить х + hх. Известно, что при присвоении переменным в программе начальных данных или при их объявлении каждой переменной ставится в соответствии какая-то ячейка оперативной памяти, то есть адресное пространство оперативной памяти длиной в несколько бит. В эту ячейку заносится значение переменной, то есть при выполнении действия х = а в ячейку, отведенную для х, заносится число, равное а (в данном случае оно берется из ячейки, соответствующей переменной а). это число хранится там до тех пор, пока на его место не будет занесено другое число. При выполнении действия х = х + hх к числу, хранящемуся в х прибавляется значение шага hх и сумма записывается в ячейке, соответствующей х. Старое значение х при этом стирается. Таким образом, при многократном повторении цикла в одной и той же ячейке памяти последовательно сохраняются много разных значений х.

2) В этом варианте так же построим цикл с предусловием, но для его организации используем стандартный блок "граница цикла". Этот вариант делает схему алгоритма более компактной, по ней удобнее составлять программу. Блок схема приведена на рисунке 4.

 

 

Рисунок 3 Рисунок 4

 

3) В третьем варианте построим цикл с постусловием с использованием управляющей конструкции повторение (рисунок 5)

4) В четвертом варианте построим цикл с постусловием с использованием стандартного блока "граница цикла" (рисунок 6).

 

Рисунок 5 Рисунок 6

 

в отличие от цикла с предусловием цикл с постусловием обязательно выполняется хотя бы один раз.

 

Задача № 2

 

Вычислить сумму где n - заданное целое число.

Эта задача похожа на предыдущую тем, что в ней так же надо многократно выполнять вычисления по одной и той же формуле с разными значениями параметра i. но, в отличие от предыдущей задачи, полученные значения надо суммировать, и результатом будет одно число, которое в итоге запомнится в переменной S. Принципнакопления суммы S тот же, что и вычисление x = x + hx в предыдущем примере. Действие S = 0 необходимо для очистки нулем ячейки, соответствующей переменной S.

 

Таблица входных данных

Переменная Описание переменной
n Целое число

Таблица выходных данных

Переменная Описание переменной
s сумма

 

Блок-схема:

 

 

Задача № 3

Постановка задачи:

Вычислить P = n!, где n ³ 0 - целое.

 

Математическая модель:

 

Воспользуемся таким алгоритмом вычисления n! (n факториал):


Таблица входных данных

Переменная Описание переменной
n Целое число

Таблица выходных данных

Переменная Описание переменной
n Целое число
P Факториал числа n

Блок-схема:

 

 

Задача № 4

Постановка задачи:

Вычислить ,

где х - заданное вещественное число.


Таблица входных данных

Переменная Описание переменной
x Вещественное число

Таблица выходных данных

Переменная Описание переменной
t Результат вычислений

Блок-схема:

Задача № 5

Вычислить сумму:

где а – вещественное, n - целое число - заданные числа.

В данной задаче надо вычислять произведение (в знаменателе) и сумму.

 


Таблица входных данных

Переменная Описание переменной
а Вещественное число
n Целое число

Таблица выходных данных

Переменная Описание переменной
s Сумма ряда

Блок-схема:

Задача № 6

Дано произвольное натуральное число n. Определить все цифры числа и найти их сумму.

Данная задача отличается от предыдущей тем, что заранее невозможно определить, сколько раз повторятся действия по выделению цифр числа и самим надо придумать условие, по которому прекращаются вычисления и осуществляется выход из цикла. Это пример построения итерационного цикла. Можно предложить такой алгоритм, описав его в словесно-формульном виде:

1) данное число n разделить на десять ();

2) в полученном числе выделить целую часть ();

3) найти разность полученного числа и его целой части, эту разность умножить на десять . Результат будет являться последней цифрой числа;

4) вывести полученную цифру и прибавить ее к сумме s = s + d;

5) проверить, не является ли значение p нулем. Если является, то это означает, что цифры все закончились и надо выходить из цикла. Если нет, то надо повторить пункты 1-4, предварительно присвоив n значение p, так как в итерационном цикле всегда один из результатов, полученный в предыдущем повторении цикла (одно повторение называют итерацией) является исходным данным для следующей итерации.

Схема алгоритма приведена на рисунке 7. в этой схеме предусмотрена "защита от дурака" - первые два блока. Это понятие означает защиту от неправильно введенных данных. Если будет введено n £ 0, то ввод надо повторить.

 

 

Рисунок 7

 

Рядом со схемой показана "ручная отладка" алгоритма, то есть, проверка того, как будет работать алгоритм при каждом повторении цикла не за машиной, а на листе бумаги. Такую отладку можно рекомендовать для каждого вновь разрабатываемого алгоритма, особенно начинающим программистам. Не обязательно расписывать все повторения цикла, да это и невозможно, если он повторяется много раз. Обычно достаточно расписать несколько первых повторений цикла, а в случае цикла с параметром и несколько последних.

В данном примере отладка проведена для заданного числа n = 348.

Задача № 7

Рассмотрим пример построения итерационного цикла для вычисления суммы бесконечного ряда.

Постановка задачи:

Даны действительные x, e

(x ¹ 0, 0 < e < 0.01). Вычислить с точностью e сумму бесконечного ряда

S =

Таблица входных данных

Переменная Описание переменной
x Действительное число
ɛ Требуемая точность

Таблица выходных данных

Переменная Описание переменной
s сумма членов бесконечного ряда, вычисленная с точностью e.

Математическая модель:

При k стремящемся к бесконечности члены данного ряда убывают по абсолютной величине. Значит существует такой k -ый член ряда, что все последующие члены ряда будут меньше e по

абсолютной величине и, следовательно, ими можно пренебречь при подсчёте суммы ряда с точностью e.

Отсюда следует, что можно составить алгоритм вычисления суммы ряда с точностью e за конечное число шагов (итераций).

Для вычисления суммы ряда с точностью e применим итерационный цикл, т.к. заранее нельзя определить, сколько членов ряда попадут в сумму. Вычисления будут производиться по следующему алгоритму:

1) присвоить k значение 0, k – указатель на номер члена ряда;

2) обнулить переменную для вычисления суммы S = 0;

3) вычислить по формуле k -ый член ряда a = ;

4) добавить его значение к сумме: S = S + a;

5) установить указатель на следующий член ряда: k = k + 1;

6) если абсолютное значение а больше или равно e, то перейти к пункту 3;

7) распечатать сумму ряда S.

При рассмотрении данного алгоритма, можно обнаружить, что на 3-ем шаге приходиться каждый раз вычислять факториал (в знаменателе) и возводить в степень число (в числителе) при вычислении очередного члена ряда. При увеличении k эти операции будут занимать очень много времени.

Данную проблему можно обойти, использовав при вычислении очередного члена ряда значение предыдущего члена, умноженное на дополнение qk, которое определяется делением последующего члена ряда на предыдущий.

ak+1 = qk * ak; qk = ak+1 / ak

Учитывая дополнение qk для вычисления суммы ряда необходимо вначале вычислить a0, а затем в цикле на каждой итерации вычислять следующий член ряда, домножая предыдущий член ряда на соответствующее дополнение.

 

Блок-схема:

 

 

 

 

 


Контрольные вопросы.

1) Дайте определение алгоритма.

2) Дайте определение цикла.

3) Какие виды конструкций повторение вы знаете?

4) Какие основные типы алгоритмов вы знаете?

5) Дайте определение циклических алгоритмов.

 

Требования к оформлению отчета по лабораторной работе:

 

1 Отчет сдается в распечатанном и в электронном виде.

2 Отчет должен быть выполнен в соответствии с руководящим документом оформления текстовых студенческих работ.

3 В отчете для заданной задачи должны быть приведены:

- постановка задачи

- математическая модель решения задачи

- таблица входных данных

- таблица выходных данных

- блок-схема решения задачи.

4 Файл, содержащий электронную версию отчета должен иметь название в соответствии со следующим шаблоном:

 

Название группы_Название предмета_ФИО студента_номер лабораторной работы.

 

Например, для группы 1ПИб-1 для предмета «Информатика» название файла будет выглядеть следующим образом:

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: