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

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ЭНЕГРЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. СМОЛЕНСКЕ

Кафедра информатики

Отчет по лабораторной работе №3

Тема: «Циклические алгоритмы»

По курсу: «Информатика»

Студент: Юшковский С.Л.

Группа: ПЭ-09

Преподаватель:

Бояринов Ю.Г.

Смоленск 2010

Подготовка к работе.

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

  1. Дать определение циклическому алгоритму.

Циклическим называется алгоритм, в котором присутствует многократное повторение однотипных действий (тело цикла), которые выполняются при определенных условиях (условия работы цикла).

  1. Изучить правила построения циклических алгоритмов: с предусловием и постусловием.

Циклический алгоритм с предусловием, такой циклический алгоритм, в котором сначала проверяется условие (логическое выражение) выполнения алгоритма, а потом если значение логического выражения истинно, выполняется тело цикла до тех пор, пока логическое выражение не станет ложным, если ложно, то выполнение цикла прекращается. Таким образом, тело цикла может не выполниться ни разу.

Циклический алгоритм с постусловием, циклический алгоритм, в котором сначала выполняется тело цикла, а потом выполняется проверка условия (логическое выражение) если значение логического выражения истинно, то выполнение цикла прекращается, если ложно, то выполняется тело цикла. Таким образом тело цикла выполняется как минимум один раз.

  1. Записать структуру операторов FOR, WHILE, REPEAT.

For {начальное (конечное) значение параметра} to(downto) {конечное (начальное) значение параметра} do {тело цикла}

Здесь значение параметра должно иметь целый тип. Если тело цикла состоит из нескольких операторов, то их необходимо заключить в операторные скобки.

While {логическое выражение} do

{тело цикла}

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

Repeat { тело цикла }

Until{ логическое выражение };

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

Ход работы.

Техническое задание.

Составить алгоритм и программу решения задачи. Выводить значение функции F(x) до тех пор пока не будет пройден локальный максимум функции (4* x-4)/(x^2-2*x+2) или значение аргумента не станет равным 10. При этом аргумент должен каждый раз увеличиваться на 0.1, начальное значение аргумента равно 0. Дано вещественное А и целое N вывести на экран значение

Анализ технического задания.

Для того чтобы выводить значение функции F(x) до тех пор пока не будет пройден её локальный максимум необходимо ввести дополнительную переменную max, в которую будет записано значение F(x+dx). В условии выполнения цикла необходимо сравнить max и F(x), если F(x)<max и x<=10, то выполняется тело цикла. В теле цикла необходимо выводить значение функции, а также увеличивать x на dx, значению max присваивать значение функции F(x+dx); Таким образом, если F(x+dx)<F(x), то значение функции прекратит выводиться на экран, так как данное условие соответствует точке локального максимума. Для того чтобы посчитать значение

при заданных A и N необходимо в цикле for, N+1 раз последовательно проссумировать значение некоторой функции F, которая задается формулой F:= exp(N*ln(A)), кроме того необходимо задать чередование знаков ((-1)^N), для этого в теле цикла необходимо задать условие если N нечетное, из общей суммы необходимо отнять F, иначе – прибавить.

Задача 1.

Выводить значение функции F(x) до тех пор пока не будет пройден локальный максимум функции (4* x-4)/(x^2-2*x+2) или значение аргумента не станет равным 10. При этом аргумент должен каждый раз увеличиваться на 0.1, начальное значение аргумента равно 0.

Блок-схема.

Н

Max:=0.1; x:=0; F:=0;

F

К

F<max and x<=10

нет

да

Max:= (4*(x+0.1)-4)/(sqr(x+0.1)-2*(x+0.1)+2);

;

F:= (4* x-4)/(x*x-2*x+2); x:=x+0,1;

Текст программы.

Program example1;

Uses crt;

Var x,f,max: real;

Begin

Clrscr;

F:=0;

Max:=0.1;

X:=0;

While (F<max) do

begin

Maxx:=(4*(+0.1)-4)/(sqr(x+0.1)-2*(x+0.1)+2);

F:= (4* x-4)/(x*x-2*x+2);

X:=X+0.1;

Writeln ('F(x)= ', F);

End;

Readln;

End.

Результаты тестирования.

Данная программа работает без ввода пользователем каких-либо данных. Программа работает корректно относительно данной функции.

Задача 2.

Дано вещественное А и целое N вывести на экран значение

Блок-схема.

Н

A, N

I<=N

F:=Exp(N*ln(abs(A)));

I mod2=0

S:=S+F;

S:=S-F;

K

нет

да

да нет

I:=I+1;

Текст программы.

Program example2;

Uses crt;

Var A,S,F: real; N,I: integer;

Begin

Clrscr;

Writeln(‘vvedite A’);

Readln(A);

Writeln(‘vvedite N’);

Readln(N);

S:=0;

For I:=0 to N do

Begin

F:= Exp(I*ln(abs(A)));

If (I mod 2)=0 then

S:=S+F

Else

S:=SF;

End;

Writeln(‘S= ’,S);

Readln;

End.

Результаты тестирования.

Результаты тестирования

A

N

вывод

Корректные значения

2

2

S=3

Корректные значения

3

2

S=7

Корректные значения

5

8

S=325521

Корректные значения

-2

2

S =3

Корректные значения

0

3

Ошибка

Некорректные значения

a

4

Ошибка ввода

Вывод: программа работает корректно при любых ненулевых значениях A. При A равном нолю программа выдает сообщении об ошибке. Также программа работает некорректно при вводе символа вместо числа.

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

Соседние файлы в папке Программирование