Работа с файлами в С#

Автор: Пользователь скрыл имя, 18 Февраля 2013 в 19:52, лабораторная работа

Описание работы

Написать программу, которая вводит текст, состоящий из нескольких предложений, и выводит его на экран, меняя местами каждые два соседних слова.
1.2. Анализ технического задания
Для данной программы воспользуемся методом Substring, который позволит извлечь из строки подстроку (первый параметр означает, с какого места извлекаем (нумерация с нуля), а второй - сколько символов извлекаем). И методом Remove, который удаляет символы из строки (первый параметр - это с какой позиции удаляем (нумерация с нуля), второй - сколько символов удаляем).

Работа содержит 1 файл

лаба3.docx

— 153.10 Кб (Скачать)

Филиал  федерального государственного бюджетного образовательного учреждения высшего  профессионального образования 
'' НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ '' МЭИ '' 
в городе Смоленске

 

 

 

 

 

Кафедра вычислительной техники

 

 

 

 

 

 

 

Отчет

по лабораторной работе №3

по курсу  «Технология программирования»

 

Тема: «Работа с файлами в С#»

 

 

 

 

 

 

Группа:               ВМ-09

Студент:               Кузнецова Н.А.

Преподаватель:     Панкратова Е.А.

Вариант:                  5

 

 

 

 

 

 

 

 

 

 

Смоленск 2012

  1. Работа с функциями класса System.String

 

                                      1.1. Техническое задание

 

  1. Написать программу, которая вводит текст, состоящий из нескольких предложений, и выводит его на экран, меняя местами каждые два соседних слова.

 

1.2. Анализ технического задания

Для данной программы воспользуемся  методом Substring, который позволит извлечь из строки подстроку (первый параметр означает, с какого места извлекаем (нумерация с нуля), а второй - сколько символов извлекаем). И методом Remove, который удаляет символы из строки (первый параметр - это с какой позиции удаляем (нумерация с нуля), второй - сколько символов удаляем).

 

            В поле textBox1 будем вводить предложения. А в поле textBox2 по нажатию кнопки Button1 будет выводиться результат.

 

                                                             1.3. Блок-схема














Рисунок 1.1 - Блок-схема процедуры выполнения задания

1.4. Текст программы

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            string s, s1, s2,s3;

            int k=0;

            s = "";

            s1 = "";

            s2 = "";

            s3 = "";

            s =' '+ textBox1.Text+' ';

            int nom = s.Length;

           

            for (int i = 0; i < s.Length; i++)

            {

                if (s[i] == ' ')

                {

                    int q = i;

                    if (s1=="")

                    {

                        s1 = s.Substring(0,q);

                        i = 0;

                        s3=s1;

                    }

                    else

                    {

                        textBox2.Text += s.Substring(0,q);

                        i = 0;

                        textBox2.Text +=s1;

                        s1 = "";

                    }

                    s = s.Remove(0, q);

                    //textBox1.Text = s;

                }

 

            }

            s2=textBox2.Text;

            if (s2.Length != nom)

                textBox2.Text=s2+s3;

        }

       

    }

}

 

 

                    1.5. Результаты функционального тестирования

При корректно введенных данных в поле textBox1 программа работает верно:

введем следующий текст: «Достаточно смены декораций, и все сразу может измениться — ход времени, поток эмоций. Xapуки Мураками.»

 

- при вводе лишних пробелов  и enter программа работает неправильно:

 

- при вводе некорректных данных и enter программа работает нормально:

 

Рисунок 1.2 – Результаты тестирования

1.6. Оценка приложения

1.6.1 Оценка характеристик программы  с помощью метрик Джилба

Таблица 1 - Текст программы

Номер

строки

Строки программы

1

using System;

2

  using System.Collections.Generic;

3

  using System.ComponentModel;

4

  using System.Data;

5

using System.Drawing;

6

using System.Text;

7

  using System.Windows.Forms;

8

namespace WindowsApplication1

9

{

10

   public partial class Form1 : Form

11

   {

12

      public Form1()

13

      {

14

        InitializeComponent();

15

      }

16

      private void button1_Click(object sender, EventArgs e)

17

     {

18

     string s, s1, s2,s3;

19

     int k=0;

20

   s = "";

21

   s1 = "";

22

   s2 = "";

23

   s3 = "";

24

   s =' '+ textBox1.Text+' ';

25

        int nom = s.Length;

26

        for (int i = 0; i < s.Length; i++)

27

        {

28

             if (s[i] == ' ')

29

             {    

30

                int q = i; 

31

                if (s1=="")

32

                { 

33

                     s1 = s.Substring(0,q);

34

                     i = 0;

35

                     s3=s1;

36

                }

37

                else

38

                {

39

                     textBox2.Text += s.Substring(0,q);

40

                     i = 0;        

41

                     textBox2.Text +=s1;  

42

                     s1 = "";

43

                 }

44

                 s = s.Remove(0, q);

45

               }

46

         }

47

         s2=textBox2.Text; 

48

         if (s2.Length != nom)

49

             textBox2.Text=s2+s3;

50

        }

51

      }

52

   }


Учитывая  основные метрические характеристики для программы, для данного текста программы определим:

Таблица 2 - Словарь операторов и операций программы

№ пп

Операторы, операции

Номера строк

Кол-во повтор-ий

1

using...;

1 - 7

7

2

namespace ...

8

1

3

class ...

10

1

4

private void...

16

1

5

string

18

4

6

int

19, 25, 26, 30

4

7

for

26

1

8

if

28, 31, 48

3

9

==

28, 31

2

10

+=

39, 41

2

11

!=

48

1

12

,

18, 33, 39, 44

6

13

;

1-7, 18-25, 30, 33-35, 39-42, 47, 49

27

14

=

19-26, 30, 33-35, 40, 42, 44, 47, 49

17

15

+

24, 49

2

16

++

26

1

17

{}

9(52), 11(51), 13(15), 17(50), 27(46), 29(45), 32(36), 38(43)

16

18

()

12, 14, 16, 26, 28, 31, 33, 39, 44, 48

20

19

.

2-7, 24-26, 33, 39, 41, 44, 47-49

19

                                                                                                                                                         Всего                        135


 

Определим значения характеристик  LIF, LLoop, Lmod, f, L, Cl и cl.

Значение характеристики  LIF определяется количеством используемых в программе операторов if . В представленном решении их три (см. таблицу 2, пункт 8).

Значение характеристики  LLoop определяется количеством используемых в программе циклов. В исходном тексте данной программы содержится один цикл:  оператор for (см. таблицу 2, пункт 7).

Значение характеристики  Lmod определяется количеством используемых в программе модулей в решении. В представленном решении используется два программных модуля, которые оперделяется следующими строками:

public partial class Form1 : Form (см. таблицу 2, пункт 3).

private void button1_Click (см. таблицу 2, пункт 4).

Общее количество операторов условия  4, из них 3 оператора if и 1 оператор цикла. Общее число всех используемых операторов L=135 (см. таблицу 2).

Таким образом:

CL = 4 – абсолютная сложность программы;

Cl = CL/L = 4/135 = 0,029.

Количество  связей между модулями Nsv равно двум – по одной связи между основным и каждым из дополнительных модулей. Отношение числа связей к числу модулей определяется следующим образом:

 

                     Из полученных результатов анализа текста программы следует, что исходный код имеет невысокую сложность, так как на 135 оператора текста приходится всего лишь 4 оператора условий. Общее число программных модулей решения также невелико (3 модуля), что подтверждает низкий уровень сложности программы.

1.6.2 Оценка характеристик программы  с помощью метрик Чепина

Выполним оценку качества программы с помощью метрики  Чепина, которая позволяет оценить меру трудности понимания программы на основе входных и выходных данных. Все множество переменных, составляющих список ввода-вывода, разбивается на четыре функциональные группы:

  • Р - вводимые переменные для расчетов и для обеспечения вывода;
  • М - модифицируемые, создаваемые внутри программы переменные;
  • С - переменные, участвующие в управлении работой программного модуля (управляющие переменные);
  • T - не используемые в программе переменные.

В таблице 3 приведен  анализ  исходного текста программы

Таблица 3 – Анализ исходного кода программы

№ п/п

Наименование переменных

Номера строк

Р ( для расчетов и для обеспечения вывода)

1

s

18

М ( модифицируемые или создаваемые внутри программы переменные)

1

s1

18

2

s2

18

3

s3

18

4

k

19

5

i

26

6

q

30

C (управляющие переменные)

 

Отсутствуют

 

T (не используемые в программе переменные)

 

Отсутствуют

 

 

Переменная s используется в качестве исходных данных.

Переменные s1, s2, s3, k, i и q в процессе выполнения программы создаются и модифицируются.

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

  • Р = 1 - количество переменных для расчетов;

М = 6 - количество модифицируемых переменных;

  • С = 0 - количество переменных, используемых в управлении программой;
  • Т = 0 - количество неиспользуемых переменных (такие переменные в программе отсутствуют).

Расчет метрики Чепина:

Q = P + 2M + 3C + 0,5T = 1 + 2*6 + 3*0 + 0,5*0 = 13.

На основе полученных значений метрики Чепина уровень сложности данного решения можно считать сравнительно низким, как так в исходном тексте программы используется незначительное количество переменных, что не затрудняет понимание программы.

 

2. Работа с функциями  класса StringBuilder

 

2.1. Техническое задание

        Дан текст.  Составить программу проверки  правильности написания сочетаний «жи», «ши», «ча», «ща», «чу» и «щу». Исправить ошибки.

2.2. Анализ технического задания

          В поле textBox1 будем выводить текст с ошибками, а в поле textBox2 будет его выводить с исправлениями. Для поиска ошибок воспользуемся конструкцией switch()case: будем просматривать по два символа.

 

                                                             2.3. Блок-схема


 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 2.1 - Блок-схема выполнения public void TextChange

2.4. Текст программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        string s;

     

        public Form1()

        {

            InitializeComponent();

        }

// Кнопка "Добавить текст"

        private void button1_Click(object sender, EventArgs e)

        {

            textBox1.Text = "Жыраф, шыповник, чясто, рощя, чюдо, щюка, жывой. У розы колючие шыпы. У нас живет собака Рыжык.";

            s = textBox1.Text;

        }

 

// Кнопка "Исправить ошибки"

        private void button2_Click(object sender, EventArgs e)

        {

            s = textBox1.Text + " ";

            TextChange(s);

        }

 

        public void TextChange(string s)

        {

            textBox2.Clear();

 

            for (int j = 0; j < s.Length; j++)

Информация о работе Работа с файлами в С#