close

Вход

Забыли?

вход по аккаунту

?

лаба 1 отчет

код для вставкиСкачать
Министерство образования и науки Российской Федерации
Филиал федерального государственного бюджетного образовательного
учреждения высшего профессионального образования
"Национальный исследовательский университет "МЭИ"
в г. Смоленске
Кафедра вычислительной техники
Лабораторная работа №1
по курсу: «Технология программирования»
Группа:
ВМ-09
Студент:
Полячков.А.А.
Преподаватель: Панкратова Е.А.
Федулов Я.А
Вариант:
18
Смоленск 2012 г.
ОЦЕНКА ХАРАКТЕРИСТИК ПРОГРАММ НА ОСНОВЕ
ЛЕКСИЧЕСКОГО АНАЛИЗА
Задача :
1)Напишите программу расчета по двум формулам.
2) В одномерном массиве, состоящем из п вещественных элементов,
вычислить:
 количество элементов массива, меньших С;
 сумму целых частей элементов массива, расположенных после последнего
отрицательного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все
элементы, отличающиеся от максимального не более чем на 20%, а потом — все
остальные.
Определить значения метрик Холстеда, на основе которых дать оценку
качества разработанного исходного текста программы.
Реализация программы
Текст программы для реализации возможного решения поставленной
задачи, разработанной с использованием языка программирования С#,
приведен в таблице 1:
Номер
строки
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Таблица 1 Текст программы
Строки программы
using System;
using System.Collections.Generic;
using System.Text;
namespace vjz
{
class Program
{
static void Main(string[] args)
{
int max,I,gg;
int kol=0,j=0;
int[] q,z;
int a = Int32.Parse(Console.ReadLine());
double z1, z2;
//Console.read(a)
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//z1 = (a + 2) / (Math.Sqrt(2 * a));
z1 = ((a + 2) / (Math.Sqrt(2 * a)) - a / (Math.Sqrt(2 *
a) + 2) + 2 / (a - Math.Sqrt(2 * a))) * (Math.Sqrt(a) Math.Sqrt(2)) / (a + 2);
z2 = 1 / (Math.Sqrt(a) + Math.Sqrt(2 ));
Console.WriteLine(z1);
Console.WriteLine(z2);
Console.WriteLine("введите размер массива");
int n = Int32.Parse(Console.ReadLine());
Console.WriteLine("введите С");
int c = Int32.Parse(Console.ReadLine());
q = new int[n];
z = new int[n];
Random b = new Random();
for ( i = 0; i < n; ++i)
{
q[i] = b.Next(100)-50;
Console.WriteLine(Convert.ToString(q[i]));
}
max = q[0];
for ( i = 0; i < n; ++i)
{
if (q[i]>max)
max = q[i];
if (q[i] < c)
kol++;
}
Console.WriteLine("меньше С");
Console.WriteLine(kol);
kol = 0;
for ( i = n-1; i>-1; --i)
{
if (q[i] <0 )
break;
kol=kol+q[i];
}
Console.WriteLine("max");
Console.WriteLine(max);
for ( i = 0; i < n; ++i)
if ((q[i] > 0.8 * max) && (q[i] < 1.2 * max))
{
z[j]=q[i];
j++;
q[i] = 999;
}
for ( i = 0; i < n; ++i)
if (q[i]!=999)
{
z[j] = q[i];
j++;
}
Console.WriteLine("новый массив");
for ( j = 0; j < n; ++j)
Console.WriteLine(Convert.ToString(z[j]));
Console.WriteLine("сумма");
Console.WriteLine(kol);
gg = Int32.Parse(Console.ReadLine());
65
66
67
68
69
70
71
72
73
74
75
76
77
}
}
}
В таблице
Словарь программы
2 приведены операторы и операции, используемые в
программе (столбец 2). Номера строк исходной программы, где встречается
каждый оператор или операция, указаны в третьем столбце. В четвертом
столбце указано число повторений каждого оператора или операции в
исходном тексте программы.
Таблица 2. Словарь операторов и операций программы
№
пп
1
2
3
4
5
6
7
Операторы,
операции
using...;
namespace ...
class ...
static void...
double...
int
Console.
WriteLine()
8 ....Parse()
9 if ()...else...
10 Math.Sqrt
11 for
12 ;
13 ,
14 *
15 =
Номера строк
1,2,3
4
6
8
16
10,11,12,13,22,24
19,20,21,22,31,41,42,50,51,65,67,68,69
13,22,70
36,38,46,53,60
16,17,18
29,35,45,53,60,67
1,2,3,4,10,11,12,13,14,17,18,19,20,21,22,
23,24,25,26,27,30,31,33,34,37,39,41,42,
43,47,48,50,51,55,56,57,62,63,65,67,68,69
70,28,34,44,52,59,66
10,11,12,14,
17,53
11,13,17,18,24,22,26,28,30,33,34,37,44,48,52
Количество
повторений
3
1
1
1
1
6
13
3
5
8
6
55
5
6
19
16
17
18
19
+
<
>
{}
20 ()
21 &&
22 “ “
23 /
24 .
25
26
27
28
++
-!=
55,57,62,70
17,18,48
28,34,38,46,52,59,66
36,44,53
5(73), 7(72), 9(71), 29(32),35(40),45(49),
54(58),61(64)
8,13,17,18,19,20,21,22,23,24,27,28,30,31,34
36,38,41,42,44,46,50,51,52,53,59,60,65,
66,67,68,69,70
53
21,23,41,65,68
17,18
2,3,13,17,18,19,20,21,22,23,24,31,41,42,50,51,
65,67,68,69,70
17,30,44
28,34,39,56,63,66
44,
60
N1=263
N2=117
n1=28
n2=18
где:
N1-обшее число всех операторов
N2-обшее число всех операндов
n1-число различных операторов данной реализации
n2-число различных операндов данной реализации
Словарь программы:
n=n1+n2=46
Длинна реализации:
N=N1+N2=380
Длинна программы:
N1=n1*log(n1)+n2*log(n2)=63,11
Объем программы:
V=N*log(n)=631,85
5
7
3
8
50
1
5
5
33
5
6
1
1
263
Потенциальный (минимальный) объем:
V* = (n2*+ 2) *log2(n2 + 2)=19* log(19)=24,3
уровень программы:
L = V*/ V= 0,038
уровень языка:
уровень языка:
 = L* V* = 0,052 * 42,96 = 0,934;
интеллектуальное содержание программы: I= L *V =24,03;
работа по программированию: E=V / L =16627
Оценка характеристик программы
Используя сформированные таблицы с необходимыми параметрами для
расчета и применяя соотношения Холстеда, вычислим характеристики
рассматриваемой программы:
• словарь программы: n = n1 + n2 = 28 + 16 = 44;
• длина реализации:
N = N1 + N2 = 116 + 36 = 152;
• длина программы:
N ~ = n1* log2 n1+ n2* log2n2 = 28* log228+16*
log216=28*4,81+16*4=134,68+64=198,68;
• объем программы в битах: V = (N2+ N1) * log2 (n1 + n2) =(116 + 36) *
log2(28 + 16) = 152 * log244 = 152*5,46 = 829,92;
• потенциальный объем программы: V* = (n2*+ 2) *log2(n2 + 2) = (10 + 2) *
log2(10 + 2) = 12 *3,58 = 42,96;
• уровень программы: L = V*/ V= 42,96 / 829,92 = 0,052;
• уровень языка:
 = L* V* = 0,052 * 42,96 = 2,23;
• интеллектуальное содержание программы: I= L *V =0,052 * 829,92 = 43,16;
работа по программированию: E=V / L = 829,92 / 0,052 = 15960.
Сведем все результаты расчетов метрик Холстеда в таблицу 5.
ВЫВОД: Уровень исследуемой программы весьма низкий, так как потенциальный объем программы в значительной степени меньше ее реального
объема.
Техническое задание:
2)Дана целочисленная прямоугольная матрица. Определить:
 количество строк, содержащих хотя бы один нулевой элемент;
 номер столбца, в котором находится самая длинная серия одинаковых
элементов.
3)Написать программу расчета по двум формулам
sin   cos(2   )
z1 
cos  sin(2   )
1  sin 2
z2 
cos2
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Text;
System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int n1, nn;
int sc;
sc = 0;
dataGridView1.Rows.Add(5);
int[,] array = new int[32, 32];
Random rand = new Random();
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
dataGridView1[i, j].Value = rand.Next(5);
}
}
for (int j = 0; j < 5; j++)
{
for (int i = 0; i < 5; i++)
{
if (Convert.ToInt32(dataGridView1[i, j].Value) == 0)
{
sc++;
break;
}
}
}
int nj = 1;
int maxp = 1;
for (int j = 0; j < 5; j++)
{
n1 = 1;
for (int i = 0; i < 4; i++)
{
if (Convert.ToInt32(dataGridView1[i, j].Value) ==
Convert.ToInt32(dataGridView1[i+1, j].Value))
{
n1=n1+1;
if (n1 > maxp)
{
maxp = n1;
nj = j;
}
}
else
{
n1 = 1;
}
}
}
textBox1.Text = Convert.ToString(sc);
textBox2.Text = Convert.ToString(nj+1);
}
}
}
начало
Заполнение массива
Перебор по
строкам
Перебор по
столбцам
Возврат на первый
элемент
Значение =0?
Увеличиваем счетчик
Перебор по
строкам
Перебор по
столбцам
Вывод
счетчика
Текуший=след?
конец
Увеличиваем счетчик
Рисунок 1 – Блок схема 1-ой программы
н
Ввод b
1+ Math.Sin(2*b))/Math.Cos(2*b)
Вывод z
к
Рисунок 2 – Блок схема для Button1 2-ой программы
н
Ввод а, b
z = (Math.Sin(a) + Math.Cos(2 * b - a)) /
(Math.Cos(a) - Math.Sin(2 * b - a)
Вывод z
к
Рисунок 2 – Блок схема для Button2 2-ой программы
Тестирование программы
Корректные
значения
a
1
Граничные
0
значения
Некорректны sdfdsfd
е значения
s
Программа 1
b Z1
2 0,372064374116
82
0 1
e
w
ошибка
Z2
0,372064374116
82
1
ошибка
Документ
Категория
Программирование, Базы данных
Просмотров
5
Размер файла
190 Кб
Теги
лаба, отчет
1/--страниц
Пожаловаться на содержимое документа