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

Черников / Домашние задания / ДЗ-5 / 05_Username_ФункцУказат

.docx
Скачиваний:
67
Добавлен:
15.04.2018
Размер:
28.8 Кб
Скачать

Задача 1.

  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Text;

  5. namespace ConsoleApplication5

  6. {

  7. class Program

  8. {

  9. static void Main(string[] args)

  10. {

  11. double x, y = 0;// аргумент и значение функции.

  12. char rep;// признак повтора.

  13. string str; //Строка для ввода и вывода данных.

  14. Metka://Начало программы.

  15. Console.Clear();// Очистка экрана

  16. Console.ForegroundColor = ConsoleColor.Yellow;//Задание тексту желтого цвета.

  17. Console.WriteLine("Введите аргумент x");// Ввод и считывание

  18. str = Console.ReadLine();// аргумента.

  19. x = double.Parse(str);

  1. if (x<-1||x>1) y=1;// Задание условия .

  2. if (x>=-1 && x<0) y=0.3;

  3. if (x>=0 && x<=1) y=x*x;

  4. str="F("+x+")="+y;//Формирование строки.

  5. Console.WriteLine(str);//Вывод строки

  6. Console.Beep(1600, 999);

  7. Console.Write("Для повтора вычисления нажмите клавишу k:");//Повторное вычисление при нажатии клавиши k.

  8. rep=char.Parse(Console.ReadLine());

  9. if (rep=='k'||rep=='K') goto Metka;

  10. }

  11. }

  12. }

Расчет функциональных указателей

f1 – количество внешних вводов

Номера строк: 18-19, 27

f1 = 2

f2 – внешний вывод данных

Номера строк: 17, 24, 26

f2 = 3

f3 – внешние запросы

f3 = количество внешних запросов (диалоговых вводов-выводов) равно нулю, так как отсутствуют

обращения к внутренним и внешним логическим файлам;

f4 – локальные внутренние логические файлы

f4 = количество локальных внутренних логических файлов равно нулю, так как в решении такие

файлы отсутствуют;

f5 – количество внешних интерфейсных файлов

f5 = количество внешних интерфейсных файлов равно нулю, так как в решении такие файлы

отсутствуют.

Исходные данные для расчета количества функциональных указателей сведем в таблицу (табл. 1) с

учетом сложности обращений к данным данных. Для внешних вводов, выводов и запросов обращение к 1–4 элементам данных представляет собой низкий уровень сложности, обращение к 5–19 элементам данных – средний уровень сложности, обращение к более 19 элементам – высокий уровень сложности.

Исходные данные для расчета FP-метрик

Характеристика

Учет сложности

Итого

Низкая

Средняя

Высокая

Внешние вводы

2 × 3 = 6

0 × 4 = 0

0 × 5 = 0

6

Внешние выводы

3 × 4 = 8

0 × 5 = 0

0 × 7 = 0

12

Внешние запросы

0 × 3 = 0

0 × 4 = 0

0 × 6 = 0

0

Внутренние логические файлы

0 × 7 = 0

0 × 10 = 0

0 × 15 = 0

0

Внешние интерфейсные файлы

0 × 5 = 0

0 × 7 = 0

0 × 10 = 0

0

Общее количество

18

Для внутренних и внешних файлов обращение к 1–19 элементам соответствует низкому уровню

сложности, к 20–50 соответствует среднему уровню сложности и к более 50 – высокому уровню

сложности. В соответствии с уровнем сложности значение характеристики умножается на коэффициент сложности. В табл. 1 коэффициенты сложности расположены справа от знака умножения. При внешних вводах решения программы осуществляется обращение к одному элементу данных, что соответствует низкому уровню сложности (строка 19). При внешних выводах также осуществляется обращение к одному элементу данных (строка 24). Внешние запросы, внутренние и внешние файлы отсутствуют.

Определим теперь значения коэффициентов регулировки сложности ki, отвечая на поставленные

вопросы.

1. Какое влияние имеет наличие средств передачи данных? Ответ: влияние существенное,

следовательно, k1 = 5.

2. Какое влияние имеет распределенная обработка данных? Ответ: влияние случайное, отсюда k2 = 1.

3. Какое влияние имеет распространенность используемой аппаратной платформы? Ответ: влияние

случайное, тогда k3 = 1.

4. Какое влияние имеет критичность к требованиям производительности и ограничению времени

ответа? Ответ: влияние случайное, поэтому k4 = 1.

5. Какое влияние имеет частота транзакций? Ответ: влияние случайное, следовательно, k5 = 1.

6. Какое влияние имеет ввод данных в режиме реального времени? Ответ: влияние основное, тогда k6 = 5.

7. Какое влияние имеет эффективность работы конечного пользователя? Ответ: влияние среднее,

поэтому k7 = 3.

8. Какое влияние имеет оперативное обновление локальных файлов в режиме реального времени?

Ответ: влияние случайное, отсюда k8 = 1.

9. Какое влияние имеет скорость обработки данных (вычислений)? Ответ: влияние важное, поэтому

k9 = 4.

10. Какое влияние имеют количество и категории пользователей? Ответ: влияние случайное, тогда k10 = 1.

11. Какое влияние имеет легкость инсталляции? Ответ: влияние случайное, отсюда k11 = 1.

12. Какое влияние имеет легкость эксплуатации? Ответ: влияние случайное, следовательно, k12 = 1.

13. Какое влияние имеет разнообразие условий применения? Ответ: влияние случайное, поэтому k13 = 1.

14. Какое влияние имеет простота внесения изменений? Ответ: влияние случайное, тогда k14 = 1.

Подсчитываем сумму коэффициентов:

14

Σ ki = 5 + 1 + 1 + 1 + 1 + 5 + 3 + 1 + 4 + 1 + 1 + 1 + 1 + 1 = 29.

i =1

Подставляем в формулу (3.1.2) полученные данные:

14

FP = F · (0,65 + 0,01 · Σ ki) = 18 · (0,65 + 0,01 · 29) = 16,92.

i =1

Теперь на основе рассчитанного значения количества функциональных указателей FP можно

рассчитывать показатели качества, производительности, удельной стоимости и документированности.

Для определения уровня связности программных модулей полученного решения воспользуемся

алгоритмом процедуры, описанным в теоретической части раздела. Представленное решение включает

один программный модуль.

Метод Main осуществляет решение поставленной задачи. Модуль реализует не единственную

прикладную функцию. Действия внутри модуля связаны. Порядок действия внутри модуля важен – тип

связности – коммуникационный, сила связности – 7.

Таким образом, в решении преобладает модуль с силой связности 7, что говорит о достаточно

высоком качестве программы, легкой ее тестируемости.

Определим уровень сцепления модулей, для чего проанализируем каждый из модулей разработанного

решения на предмет межмодульной связи.

Метод Main имеет сцепление по управлению (сила сцепления 4), т.к. является вызывающим.

Сила сцепления программных модулей рассматриваемого решения составляет 4, что говорит об

уровне качества программы чуть выше среднего.

Задача 2. Код данной задачи идентичен коду Задачи 1.

Задача 3.

  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Text;

  5. using System.Collections;

  6. namespace ConsoleApplication1

  7. {

  8. class Method

  9. {

  10. public double[,] Заполнение(int n, int m)

  11. {

  12. double[,] a = new double[n,m];

  13. int i,j;

  14. Random gen = new Random();

  15. for (i = 0; i < n; i++)

  16. for (j = 0; j < m; j++)

  17. a[i, j] = gen.NextDouble() * (21.7 - (-12.4)) + (-12.4);

  18. return a;

  19. }

  20. public void Вывод(double[,] a, int n, int m)

  21. {

  22. int i,j;

  23. for (i = 0; i < n; i++, Console.WriteLine())

  24. for (j = 0; j < m; j++)

  25. Console.Write("{0,7:f1} ", a[i, j]);

  26. }

  27. public ArrayList Копирование(double[,] a, int n, int m)

  28. {

  29. int i, j;

  30. ArrayList b = new ArrayList();

  31. for (i = 0; i < n; i++)

  32. for (j = 0; j < m; j++)

  33. if (a[i, j] < 0)

  34. b.Add(a[i, j]);

  35. return b;

  36. }

  37. public void Вывод1(ArrayList b)

  38. {

  39. int i;

  40. for (i = 0; i < b.Count; i++)

  41. Console.Write("{0,2:f1} ", b[i]);

  42. }

  43. }

  44. class Program

  45. {

  46. static void Main(string[] args)

  47. {

  48. int n,m;

  49. Console.WriteLine("Введите кол-во строк в массиве: ");

  50. n= int.Parse(Console.ReadLine());

  51. Console.WriteLine("Введите кол-во столбцов в массиве: ");

  52. m= int.Parse(Console.ReadLine());

  53. double[,] a = new double[n, m];

  54. Method obj1 = new Method();

  55. Method obj2 = new Method();

  56. Method obj3 = new Method();

  57. Method obj4 = new Method();

  58. obj1.Вывод(obj2.Заполнение(n, m), n, m);

  59. obj4.Вывод1( obj3.Копирование(obj2.Заполнение(n, m), n, m));

  60. Console.ReadLine();

  61. }

  62. }

  63. }

Расчет функциональных указателей

f1 – количество внешних вводов

Номера строк: 50, 52

f1 = 2

f2 – внешний вывод данных

Номера строк: 25, 41, 49, 51

f2 = 4

f3 – внешние запросы

f3 = количество внешних запросов (диалоговых вводов-выводов) равно нулю, так как отсутствуют

обращения к внутренним и внешним логическим файлам;

f4 – локальные внутренние логические файлы

f4 = количество локальных внутренних логических файлов равно нулю, так как в решении такие

файлы отсутствуют;

f5 – количество внешних интерфейсных файлов

f5 = количество внешних интерфейсных файлов равно нулю, так как в решении такие файлы

отсутствуют.

Исходные данные для расчета количества функциональных указателей сведем в таблицу (табл. 1) с

учетом сложности обращений к данным данных. Для внешних вводов, выводов и запросов обращение к 1–4 элементам данных представляет собой низкий уровень сложности, обращение к 5–19 элементам данных – средний уровень сложности, обращение к более 19 элементам – высокий уровень сложности.

Исходные данные для расчета FP-метрик

Характеристика

Учет сложности

Итого

Низкая

Средняя

Высокая

Внешние вводы

2 × 3 = 6

0 × 4 = 0

0 × 5 = 0

6

Внешние выводы

4 × 4 = 8

0 × 5 = 0

0 × 7 = 0

16

Внешние запросы

0 × 3 = 0

0 × 4 = 0

0 × 6 = 0

0

Внутренние логические файлы

0 × 7 = 0

0 × 10 = 0

0 × 15 = 0

0

Внешние интерфейсные файлы

0 × 5 = 0

0 × 7 = 0

0 × 10 = 0

0

Общее количество

22

Для внутренних и внешних файлов обращение к 1–19 элементам соответствует низкому уровню

сложности, к 20–50 соответствует среднему уровню сложности и к более 50 – высокому уровню

сложности. В соответствии с уровнем сложности значение характеристики умножается на коэффициент сложности. В табл. 1 коэффициенты сложности расположены справа от знака умножения. При внешних вводах решения программы осуществляется обращение к одному элементу данных, что соответствует низкому уровню сложности (строки 50, 52). При внешних выводах также осуществляется обращение к одному элементу данных (строка 41). Внешние запросы, внутренние и внешние файлы отсутствуют.

Определим теперь значения коэффициентов регулировки сложности ki, отвечая на поставленные

вопросы.

1. Какое влияние имеет наличие средств передачи данных? Ответ: влияние существенное,

следовательно, k1 = 5.

2. Какое влияние имеет распределенная обработка данных? Ответ: влияние случайное, отсюда k2 = 1.

3. Какое влияние имеет распространенность используемой аппаратной платформы? Ответ: влияние

случайное, тогда k3 = 1.

4. Какое влияние имеет критичность к требованиям производительности и ограничению времени

ответа? Ответ: влияние случайное, поэтому k4 = 1.

5. Какое влияние имеет частота транзакций? Ответ: влияние случайное, следовательно, k5 = 1.

6. Какое влияние имеет ввод данных в режиме реального времени? Ответ: влияние основное, тогда k6 = 5.

7. Какое влияние имеет эффективность работы конечного пользователя? Ответ: влияние среднее,

поэтому k7 = 3.

8. Какое влияние имеет оперативное обновление локальных файлов в режиме реального времени?

Ответ: влияние случайное, отсюда k8 = 1.

9. Какое влияние имеет скорость обработки данных (вычислений)? Ответ: влияние важное, поэтому

k9 = 4.

10. Какое влияние имеют количество и категории пользователей? Ответ: влияние случайное, тогда k10 = 1.

11. Какое влияние имеет легкость инсталляции? Ответ: влияние случайное, отсюда k11 = 1.

12. Какое влияние имеет легкость эксплуатации? Ответ: влияние случайное, следовательно, k12 = 1.

13. Какое влияние имеет разнообразие условий применения? Ответ: влияние случайное, поэтому k13 = 1.

14. Какое влияние имеет простота внесения изменений? Ответ: влияние случайное, тогда k14 = 1.

Подсчитываем сумму коэффициентов:

14

Σ ki = 5 + 1 + 1 + 1 + 1 + 5 + 3 + 1 + 4 + 1 + 1 + 1 + 1 + 1 = 29.

i =1

Подставляем в формулу (3.1.2) полученные данные:

14

FP = F · (0,65 + 0,01 · Σ ki) = 22 · (0,65 + 0,01 · 29) = 20,68.

i =1

Теперь на основе рассчитанного значения количества функциональных указателей FP можно

рассчитывать показатели качества, производительности, удельной стоимости и документированности.

Для определения уровня связности программных модулей полученного решения воспользуемся

алгоритмом процедуры, описанным в теоретической части раздела. Представленное решение включает

пять программных модулей.

Метод Заполнение осуществляет заполнение двумерного массива. Модуль реализует

единственную прикладную функцию – тип связности – функциональный, сила связности – 10.

Метод Вывод осуществляет вывод на экран монитора первый указанный массив. Модуль реализует

единственную прикладную функцию – тип связности – функциональный, сила связности – 10.

Метод Копирование осуществляет копирование элементов одного массива в другой. Модуль реализует

единственную прикладную функцию – тип связности – функциональный, сила связности – 10.

Метод Вывод1 осуществляет вывод на экран монитора второй, полученный из первого, массив. Модуль реализует единственную прикладную функцию – тип связности – функциональный, сила связности – 10.

Метод Main осуществляет решение поставленной задачи. Модуль реализует не единственную

прикладную функцию. Действия внутри модуля связаны. Порядок действия внутри модуля важен – тип

связности – коммуникационный, сила связности – 7.

Таким образом, в решении преобладают модули с силой связности 7 и 10, что говорит о достаточно

высоком качестве программы, легкой ее тестируемости.

Определим уровень сцепления модулей, для чего проанализируем каждый из модулей разработанного

решения на предмет межмодульной связи.

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

Метод Вывод является вызывающим и одновременно вызываемым. Поскольку уровень сцепления

вызывающего метода выше, то мы не рассматриваем этот метод как вызываемый. Метод Вывод

осуществляет вызов метода Заполнение с передачей ему списка параметров, влияющих на работу метода.

Таким образом, метод Вывод имеет сцепление по управлению (сила сцепления 4).

Метод Копирование является вызывающим и одновременно вызываемым. Поскольку уровень сцепления вызывающего метода выше, то мы не рассматриваем этот метод как вызываемый. Метод Копирование осуществляет вызов метода Заполнение с передачей ему списка параметров, влияющих на работу метода.

Таким образом, метод Копирование имеет сцепление по управлению (сила сцепления 4).

Метод Вывод1 является вызывающим и одновременно вызываемым. Поскольку уровень сцепления

вызывающего метода выше, то мы не рассматриваем этот метод как вызываемый. Метод Вывод1

осуществляет вызов метода Копирование с передачей ему списка параметров, влияющих на работу метода.

Таким образом, метод Вывод1 имеет сцепление по управлению (сила сцепления 4).

Метод Main имеет сцепление по управлению (сила сцепления 4), т.к. является вызывающим.

Сила сцепления программных модулей рассматриваемого решения составляет 3-4, что говорит об

уровне качества программы чуть выше среднего.

Соседние файлы в папке ДЗ-5