лабораторные работы / Алиева 1 лаба
.docxБАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
ФАКУЛЬТЕТ ИНЖЕНЕРНО-СТРОИТЕЛЬНЫЙ
КАФЕДРА «ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ»
ЛАБОРАТОРНАЯ РАБОТА
по дисциплине «Логическое программирование»
|
Выполнила: ст. гр. ИСТ-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.410-38…3.41038), совпадает с фактическим, так как на переменную b не накладывается никаких ограничений
c– теоретический диапазон для переменных типа float (3.410-38…3.41038), совпадает с фактическим, так как на переменную c не накладывается никаких ограничений
d- теоретический диапазон для переменных типа float (3.410-38…3.41038), фактический диапазон [3.410-38;0)(0; 3.41038]так как переменная d находится в знаменателе и под знаком корня.
Переменные a,b,c являются глобальными, так как в программе нет необходимости использовать функции.
Выходной переменной является a. Ее значение вычисляется в программе и выводится на экран.
Переменная a имеет числовой тип с плавающей занятой float.
Определим теоретический и фактический диапазон изменения выходной переменной:
Теоретический диапазон для переменных типа float составляет (3.410-38…3.41038)
Определим нижнюю границу фактического диапазона:
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.410-38 …3.41038) |
(3.41038…3.41038) |
нет |
b |
float |
Глобальная |
Входная |
(3.410-38 …3.41038) |
(3.41038…3.41038) |
нет |
c |
float |
Глобальная |
Входная |
(3.410-38 …3.41038) |
[3.410-38;0) (0; 3.41038] |
Возникновение ошибки при вводе отрицательного значения или значения, равного нулю |
d |
float |
глобальная |
Входная |
(3.410-38 …3.41038) |
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();
}