Скачиваний:
23
Добавлен:
01.05.2014
Размер:
158.21 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

Кафедра МОЭВМ

Лабораторная работа №1

Построение операционных графовых моделей (ОГМ) последовательных программ

Выполнил: Виноградов М.Н.

Группа: 1382

Преподаватель: Кирьянчиков В.А.

Санкт-Петербург

2006

  1. Задание

Для рассматривавшегося в лабораторных работах курса «Метрология программного обеспечения» (или курса "Качество и надежность программного обеспечения") индивидуального задания разработать операционную модель управляющего графа программы на основе схемы алгоритма и ассемблерного представления программы. При выполнении работы рекомендуется для упрощения обработки графа и ПЦМ исключить диалог при выполнении операций ввода-вывода данных, а также привести программу к структурированному виду.

Выбрать вариант графа с нагруженными вершинами, каждая из которых должна представлять фрагмент программы, соответствующий линейному участку или ветвлению. При расчете вероятностей ветвлений, зависящих от распределения данных, принять равномерное распределение обрабатываемых данных в ограниченном диапазоне (например, [0,100] - для положительных чисел или [-100,100] - для произвольных чисел). В случае ветвлений, вызванных проверкой выхода из цикла, вероятности рассчитываются исходя априорных сведений о числе повторений цикла. Сложные случаи оценки вероятностей ветвлений согласовать с преподавателем.

В качестве параметров, характеризующих потребление ресурсов, использовать времена выполнения команд соответствующих участков программы, задаваемые в тактах процессора. Выполнить оценку времен выполнения каждого линейного участка и каждого ветвления в графе программы. Оценку времен выполнения участков производить либо с использованием монитора (например, Sampler или Vtune), либо прямым подсчетом по тексту программы. В последнем случае времена исполнения команд процессора (в тактах) следует выбирать из файла InstrX86.tim в соответствии с типом и параметрами компьютера, выбираемыми по номеру в списке группы.

  1. Текст программы (Pascal)

Программа вычисляет корень уравнения x2–2=0 методом Ньютона.

program newdr1;

var x,x2 : real;

alldone : boolean;

error : boolean;

procedure func(x: real;

var fx,dfx: real);

begin

fx:=x*x-2.0;

dfx:=2.0*x

end; { func }

procedure newton(var x: real);

const tol = 1.0E-6;

var fx,dfx,dx,x1: real;

begin { newton }

repeat

x1:=x;

func(x,fx,dfx);

if(abs(dfx)<tol) then

begin

if(dfx>=0.0) then dfx:=tol

else dfx := -tol

end;

dx:=fx/dfx;

x:=x1-dx;

writeln('x=',x1,',fx=',fx,',dfx=',dfx);

until abs(dx)<=abs(tol*x)

end; { newton }

begin { main program }

alldone:=false;

repeat

writeln;

write('First guess (999. to exit): '); { first guess }

readln(x);

if x=999. then alldone:=true

else

begin

newton(x);

writeln;

writeln('The solution is ',x);

writeln

end

until alldone

end.