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

лабораторные работы / Алиева 1 лаба

.docx
Скачиваний:
27
Добавлен:
28.01.2014
Размер:
73.78 Кб
Скачать

БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ ТЕХНОЛОГИИ И УПРАВЛЕНИЯ

ФАКУЛЬТЕТ ИНЖЕНЕРНО-СТРОИТЕЛЬНЫЙ

КАФЕДРА «ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ»

ЛАБОРАТОРНАЯ РАБОТА

по дисциплине «Логическое программирование»

Выполнила:

ст. гр. ИСТ-22

Начарова О.Ю.

Проверил:

Алиева Е.В.

_____________________

«__»__________2009г.

Балаково

Начало

Введите b:

c==0

c==0

Введите c:

d<0

Введите d:

d<0

Введите число не равное 0

Введите 0 или положитель-ное число!

a=2*b*b+2/c+sqrt(d)

Конец

да

да

нет

нет да

да

Ответ:

// Лека.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "stdio.h"

#include "conio.h"

#include "math.h"

int _tmain(int argc, _TCHAR* argv[])

{

float a,b,c,d;

printf ("\n Vvedite chislo b:");

scanf ("%f",&b);

do

{

printf ("\n Vvedite chislo c:");

scanf ("%f",&c);

if (c==0) printf("\n vvedite chislo ne ravnoe 0!\n");

}

while (c==0);

do

{

printf ("\n Vvedite chislo d:");

scanf ("%f",&d);

if (d<0) printf ("\n vvedite 0 ili polozitel'noe chislo \n");

}

while (d<

0);

a=2*b*b+2/c+sqrt(d);

printf ("\nOtvet:%f",a);

getch();

}

Технология работы

В данной работе необходимо провести анализ переменных, используемых в программе.

Например, необходимо составить программу для вычисления значения выражения:

a= 2b2+2/c+√d

Проведем анализ переменных, которые необходимо будет использовать в программе.

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

Входными переменными являются b,c,d. Значения этих переменных вводятся пользователем с клавиатуры.

Переменные b,c,d имеют числовой тип. Также они могут иметь целочисленный тип. Однако, так как это приведет к автоматическому преобразованию результата вычисления к целочисленному типу, то целесообразно присвоить этим переменным вещественный тип (float). В этом случае вычисление будет произведено с точностью до 6 знаков после запятой.

Определим теоретический и фактический диапазон изменения входных переменных:

b – теоретический диапазон для переменных типа float (3.410-38…3.41038), совпадает с фактическим, так как на переменную b не накладывается никаких ограничений

c– теоретический диапазон для переменных типа float (3.410-38…3.41038), совпадает с фактическим, так как на переменную c не накладывается никаких ограничений

d- теоретический диапазон для переменных типа float (3.410-38…3.41038), фактический диапазон [3.410-38;0)(0; 3.41038]так как переменная d находится в знаменателе и под знаком корня.

Переменные a,b,c являются глобальными, так как в программе нет необходимости использовать функции.

Выходной переменной является a. Ее значение вычисляется в программе и выводится на экран.

Переменная a имеет числовой тип с плавающей занятой float.

Определим теоретический и фактический диапазон изменения выходной переменной:

Теоретический диапазон для переменных типа float составляет (3.410-38…3.41038)

Определим нижнюю границу фактического диапазона:

amin= 2b2 max+2/cmin+√dmax=2(3,14*1038)2+2/(3,14*10-38)+ √3,14*1038 = 23,12*1076

Определим верхнюю границу фактического диапазона:

amax= 2b2 min+2/cmax+√dmin=2(3,14*10-38)2+2/(3,14*1038)+ √3,14*1038=1,84*1019

Таким образом, верхняя граница фактического диапазона для переменной а превышает установленные теоретические значения.

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

Имя переменной

Тип данных

Область видимости

Входная /выходная /промежуточная

Диапазон данных теоретический

Диапазон данных фактический

Исключения

a

float

Глобальная

Выходная

(3.410-38

…3.41038)

(3.41038…3.41038)

нет

b

float

Глобальная

Входная

(3.410-38

…3.41038)

(3.41038…3.41038)

нет

c

float

Глобальная

Входная

(3.410-38

…3.41038)

[3.410-38;0)

(0; 3.41038]

Возникновение ошибки при вводе отрицательного значения или значения, равного нулю

d

float

глобальная

Входная

(3.410-38

…3.41038)

23,12*1076

1,84*1019

Ограничение фактического диапазона

cos (t), x<0

z= sin(t), x>0

1, x=0

Начало

t>1

или t<1

Введите t:

Вводите x:

t>1

или t<-1

Ошибка!

X<0

X>0

ответ

конец

Z=cos(t)

Z=sin(t)

Z=1

// лаб1 лог прог.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "stdio.h"

#include "conio.h"

#include "time.h"

#include "stdlib.h"

#define size 20

void main()

{ int a[size];

int i,max,min;

int S;

printf("Vvedite posledovatel'nost' celyh chisel.\n");

scanf("%i",&a[i]);

for(i=0;i<20;i++)

{

if(a[i]>max)

max=i;

if(a[i]<min)

min=i}};

for(i=1;i<20;i++)

{

if(a[i]>max)

max=a[i]

if(a[i]<min)

min=a[i];}}

for(i=0;i<size;i++)

{

(a[i]=rand()100+1);}

printf("\ta[i]=&a[i]",i,a[i]);

S+=(max&&&min);

}

printf("max=%i",max);

printf("min=%i",min);

printf("\n S=%i",S);

getch();

}

Соседние файлы в папке лабораторные работы