Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

После завершения работы удалить файлы с дискового носителя

Государственное образовательное учреждение высшего профессионального образования

«Казанский национальный исследовательский технический университет им. А.Н.Туполева»

Кафедра автоматизированных систем обработки информации и управления

 

 

Лабораторная работа № 1

 

НОСИТЕЛИ, ПАПКИ И ФАЙЛЫ.

ПОСЛЕДОВАТЕЛЬНАЯ ОБРАБОТКА ФАЙЛОВ

Вариант №12

 

Выполнил: студент группы 4209 Шильников Д. В.

 

 

Проверил: Суздальцев В.А.

 

Казань. 2013

Цель проведения лабораторной работы

 

Целью проведения лабораторной работы является привитие практических навыков определения объемных и временных характеристик файлов при последовательной обработке.

Перед выполнением работы студент должен знать основы программирования на языке С#, методы обработки последовательных файлов и ознакомится с теоретическим материалом лекций соответствующего раздела дисциплины «Информатика».

 

 

Порядок выполнения лабораторной работы

1. Определить размер кластера носителя и количество секторов в кластере. Для этого создать файл в текстовом редакторе (Блокнот) небольшого размера (до 512 байтов). Определить свойства файла («Правая клавиша мыши» + «Свойства») и занести их в таблицу. Свойство: «На диске» определить размер кластера. Размер сектора считать равным 512 байт. Результаты прдоставить в форме таблицы (см. таблицу № 1).

2. Написать и отладить программу создания файла на языке С#. Программу подготовить для консольного режима. Использовать фрагменты примера программы из приложения 1. в отчет включить алгоритм программы (схема алгоритмы) и ее текст (C#).

3. Подготовить семь текстовых файлов в соответствии с заданием (см. таблица 2) лабораторной работы (файлы с записями фиксированной длины). Имена файлов должны включать номер файла, размер в кластерах, фамилию студента (например, f1_1000_Иванов.txt). Перед созданием оценить объем файлов и определить объем свободного места на носителе. Сделать вывод о возможности создания файлов. Результаты расчетов занести в таблицу (таблица 3). Перед созданием файлов на носителе предоставить расчеты преподавателю для проверки. Все расчеты оформлять в соответствии с требованиями подготовки научно-технических отчетов. Сделать выводы об объеме незаполненного пространства кластеров и определить процент заполнения дисковой памяти.

4. Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 240 символов), резерв длины имени файла).

5. Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

5.1. Время создания файла, среднее время добавления записи и создания кластера.

5.2. Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор Excel).


 

6. Написать и отладить программу на языке С#, выполняющую следующие функции для файла:

6.1. Последовательное чтение записей файла.

6.2. Определение количества записей в файле.

6.3. Определение объема полезной информации в файле.

6.4. Определение длины каждой записи файла.

6.5. Определение смещения каждой записи в файле.

6.6. Определение времени чтения файла, включая время открытия и закрытия файлов.

6.7. Результаты экспериментов отобразить в таблице и на графиках (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

6.8. Сделать выводы о видах временных зависимостей.

После завершения работы удалить файлы с дискового носителя.

7. Подготовить отчет о выполнении лабораторной работы.

8. Поготовится к теоретическому опросу контролиррующей системой.

9. Защитить отчет лабораторной работы

 

 

1. Определить размер кластера носителя и количество секторов в кластере. Результаты предоставить в форме таблицы.

 

Определим размер кластера носителя и количество секторов в кластере. Для этого создадим файл в текстовом редакторе небольшого размера. Для того чтобы определить размер кластера носителя, нужно нажать правой кнопкой мыши по созданному текстовому документу и нажать на Свойства. В появившемся окне в строке На диске:видно сколько памяти выделяется для хранения данного текстового документа на диске. В нашем случае размер текстового документа - 7 Байт, размер на диске – 4 Кб. Это значит, что размер кластера носителя – 4Кб или 4×1024=4096 Байт. Считая размер сектора равным 512 Байт, можно вычислить количество секторов в кластере. Для этого размер кластера разделим на размер сектора:4096 Байт: 512 Байт=8. Все результаты предоставим в форме таблицы:

 
 
Таблица 1. Характеристики файла  

  Характеристика файла Значение
Имя файла Ш.Д.
Приложение Блокнот
Размещение C:\work\4209\Shilnikov_D
Размер в байтах
Размер в Кбайтах 0,0009765625
Размер в Мбайтах 0.00000095367431640625
На диске в байтах
На диске в Кбайтах
На диске в Мбайтах 0.00390625
Размер в секторах (сектор: 512 байт)
Размер в кластерах 4кб
Создан 11 сентября 2013 г., 12:32:11
Изменен 11 сентября 2013 г., 12:37:52
Открыт 11 сентября 2013 г., 12:43:33
Только чтение нет
Скрытый нет
Архивный да

 

2. Написать и отладить программу создания файла на языке С#. Программу подготовить для консольного режима. Использовать фрагменты примера программы из приложения 1. в отчет включить алгоритм программы (схема алгоритмы) и ее текст (C#).

 

Напишем и отладим программу создания файла на языке С# в консольном режиме, используя фрагменты примера программы из приложения 1. Создадим новый проект в Microsoft Visual Studio C# (MVS C#). Для начала запускаем программу MVS C# следующим образом: ПускВсе программы Microsoft Visual Studio 2008.Чтобы создать проект проделываем следующие операции: на панели быстрого доступа нажимаем на Fileдалее выбираем NewProject.В появившемся окне в левом столбце выбираем Visual С++, появится несколько строчек, выбираем Visual С#.В правом столбце выбираем режим консольного приложения, т.е. выбираем строчку ConsoleApplication.Далее появится новое окно, в котором нажимаем на Finish.

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

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

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

 

namespace Consol

{

class Program

{

static void Main(string[] args)

{

int i;

string str;

FileStream f1;

const int n = 71040;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Create);

f1.Close();

 

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Open, FileAccess.Write);

StreamWriter fstr = new StreamWriter(f1);

str = "llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll";

Console.Write("Nagmite Enter");

Console.ReadLine();

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

 

{ fstr.WriteLine(str); }

 

fstr.Close();

}

}

}

 

Данная программа создает в папке, в которой расположен сам проект, пустой текстовый документ «Fl_1110_Shilnikov_D.txt».

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

 

 

 
 

 

 


3. Подготовить семь текстовых файлов в соответствии с заданием (см. таблица 2) лабораторной работы (файлы с записями фиксированной длины). Имена файлов должны включать номер файла, размер в кластерах, фамилию студента (например, f1_1110_Shilnikov.txt). Перед созданием оценить объем файлов и определить объем свободного места на носителе. Сделать вывод о возможности создания файлов. Результаты расчетов занести в таблицу 3. Перед созданием файлов на носителе предоставить расчеты преподавателю для проверки. Все расчеты оформлять в соответствии с требованиями подготовки научно-технических отчетов. Сделать выводы об объеме незаполненного пространства кластеров и определить процент заполнения дисковой памяти.

Таблица 2. Вариант задания

  Длина записи Размеры файлов в кластерах Символ для формирования содержания записи
Файл f1 Файл f2 Файл f3 Файл f4 Файл f5 Файл f6 Файл f7
l

 

 

Подготовим семь текстовых файлов в соответствии с вариантом №12 лабораторной работы. Перед созданием оценим объем файлов и определим объем свободного места на носителе. Сделаем это следующим образом: Заходим в Мой компьютер, нажимаем правой кнопкой на диск С, в появившемся окне нажимаем на Свойства, находим две строчки – Занятои Свободно, запишем соответствующие значения этим параметрам:

Занято:45 368 201 216 байт

Свободно:19 644 379 136 байт

Оценим объем файлов, которые нам предстоит создать. Зная, что на диске 1 кластер занимает 4096 байт, определим объем всех семи файлов по следующей формуле: V=k*b.

 

1 файл: 1110 × 4096 = 4546560 байт;

2 файл: 1310 × 4096 = 5365760 байт;

3 файл: 1510 × 4096 = 6184960 байт;

4 файл: 1710 × 4096 = 7004160 байт;

5 файл: 1910 × 4096 = 488960 байт;

6 файл: 2110 × 4096 = 8642560 байт;

7 файл: 2310 × 4096 = 9461760 байт.

 

Определим объем суммы всех семи файлов:

4546560 + 5365760 + 6184960 + 7004160 + 488960 + 8642560 + 9461760 =

49029120 байт. Т.к. объем свободного места на диске превышает объем суммы наших семи файлов (19 644 379 136 <49 029 120), то возможность создать эти файлы существует.

Результаты расчетов занесем в таблицу 3:

 

Таблица 3. Объемные характеристики файлов

Размер кластера в байтах – 4096 Размер записи - 64
  Имя файла в папке «ЛБ4209» Размер файла в кластерах (из задания) Количество записей в кластере Размер файла в записях Размер файла в Мбайт, Кбайт, байт На диске Мбайт, Кбайт, байт
f1 f1_1110_Шильников 4.3359375   4.3359375
f2 f2_1310_Шильников 5.1171875 5.1171875  
f3 f3_1510_Шильников 5.8984375 5.8984375  
f4 f4_1710_Шильников 6.6796875 6.6796875  
f5 f5_1910_Шильников 7.4609375 7.4609375  
f6 f6_2110_Шильников 8.2421875  
f7 f7_2310_Шильников 9.0234375 9.0234375  
Всего 46.7578125 46.7578125  
Свободное место на диске C       ----  

 

Определение процента заполнения дисковой памяти:

Чтобы определить полный объем дисковой памяти необходимо сложить объем свободного места и объем занятого места на диске:

Занято:45 368 201 216 байт

Свободно:19 644 379 136 байт

Полный объем дисковой памяти: 45 368 201 216 + 19 644 379 136 = 65 012 580 352 Байт.

Чтобы определить процент заполнения дисковой памяти, необходимо разделить объем свободного места на диске на полный объем дисковой памяти и полученное частное умножить на 100%.

 

Процент свободного места: (19 644 379 136 / 65 012 580 352) × 100% =

0.302 100% = 30.2%

4. Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 240 символов), резерв длины имени файла).

 

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

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

 

Первый текстовый файл:

Полное имя:fl_1110_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

 

Второй текстовый файл:

Полное имя:f2_1310_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

Третий текстовый файл:

Полное имя:f3_1510_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

Четвертый текстовый файл:

Полное имя:f4_1710_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

Пятый текстовый файл:

Полное имя:f5_1910_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

Шестой текстовый файл:

Полное имя:f6_2110_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

Седьмой текстовый файл:

Полное имя:f7_2310_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

 

 


5. Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

1. Время создания файла, среднее время добавления записи и создания кластера.

2. Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор Excel).

 

5.1 Для того чтобы определить время создания файла, необходимо дополнить текст нашей программы функциями подсчета времени, которые будут располагаться до и после цикла записи строк в файл. Разность этих значений функций и будет значением времени создания файла. Само это значение будет записываться в отдельный файл <show.txt>.

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

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

 

namespace Consol

{

class Program

{

static void Main(string[] args)

{

FileInfo foutshow = new FileInfo("show.txt");

DateTime nowсn = new DateTime();

double tb = 0;

double te = 0;

 

int i;

string str;

FileStream f1;

const int n = 71040;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Create);

f1.Close();

 

f1 = new FileStream("Fl_1120_Shilnikov_D.txt", FileMode.Open, FileAccess.Write);

StreamWriter fstr = new StreamWriter(f1);

str = "llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll";

Console.Write("Nagmite Enter");

Console.ReadLine();

 

nowсn = DateTime.Now;

tb = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.MilliSecond;

 

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

 

{ fstr.WriteLine(str); }

 

nowсn = DateTime.Now;

te = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.MilliSecond;

 

 

fstr.Close();

 

StreamWriter f = foutshow.CreateText();

f.WriteLine

(string.Format("\"{0:000}\";\"{1:000}\";\"{2:0000}\"", tb, te, te - tb));

f.Close();

 

}

 

}

 

}

 

Проделаем данную операцию со всеми семи программами.

Среднее время добавления записи можно найти по формуле: t=T/c, где t – это среднее время добавления, T – это время создания файла, с – это количество записей в файле.

Проведем вычисления для всех файлов:

 

Для 1-го файла: 47 / 71040=0.00065 с;

Для 2-го файла: 62 / 83840=0.00073 с;

Для 3-го файла: 70 / 96640=0.00072 c;

Для 4-го файла: 78 / 109440=0.0007 c;

Для 5-го файла: 93 / 122240=0.00075 c;

Для 6-го файла: 94 / 135040=0.00069 c;

Для 7-го файла: 110 / 147840=0.00074 c.

 

Среднее время создания кластера можно найти по формуле: V=T/k, где V – это среднее время добавления записи, T – это время создания файла, k – это количество занимаемых кластеров файлом.

Проведем вычисления для всех файлов:

 

Для 1-го файла: 47 / 1110=0.0419 с;

Для 2-го файла: 62 / 1310=0.0469 с;

Для 3-го файла: 70 / 1510=0.0460 c;

Для 4-го файла: 78 / 1710=0.0453 c;

Для 5-го файла: 93 / 1910=0.0484 c;

Для 6-го файла: 94 / 2110=0.0443 c;

Для 7-го файла: 110 / 2310=0.047 c.

 

 

Занесем все данные в таблицу 4:

 

Таблица №4. временные характеристики файлов

Имя файла Время создания файла Среднее время добавления записи Среднее время создания кластера
Fl_1110_Shilnikov_D.txt 0.00065 с 0.0419 с
F2_1310_Shilnikov_D.txt 0.00073 с 0.0469 с
F3_1510_Shilnikov_D.txt 0.00072 с 0.0460 с
F4_1710_Shilnikov_D.txt 0.0007 с 0.0453 c
F5_1910_Shilnikov_D.txt 0.00075 с 0.0484 с
F6_2110_Shilnikov_D.txt 0.00069 с 0.0443 с
F7_2310_Shilnikov_D.txt 0.00074 с 0.047 c

 

5.2. Чтобы построить график изменения среднего времени добавления записи, от объема файла в записях, необходимо скопировать значения среднего времени добавления записи и значения количества записей в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на Рис.1:

 

Рис. 1. График изменения среднего времени добавления

записи от объема файла в записях.

 

Чтобы построить график изменения среднего времени добавления кластера от объема файла в кластерах, необходимо скопировать значения среднего времени добавления кластера и значения количества кластеров в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на рис.2:

 

Рис. 2. График изменения среднего времени добавления

кластера от объема файла в кластерах.

 

6. Написать и отладить программу на языке С#, выполняющую следующие функции для файла:

1. Последовательное чтение записей файла.

2. Определение количества записей в файле.

3. Определение объем полезной информации в файле.

4. Определение длины каждой записи файла.

5. Определение смещения каждой записи в файле.

6. Определение времени чтения файла, включая время открытия и закрытия файлов.

7. Результаты экспериментов отобразить в таблице и на графиках (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

8. Сделать выводы о видах временных зависимостей.

Используя навыки программирования, напишем и отладим программу на языке С#, выполняющую следующие функции для файла:

1. Последовательное чтение записей файла.

2. Определение количества записей в файле.

3. Определение объем полезной информации в файле.

4. Определение длины каждой записи файла.

5. Определение смещения каждой записи в файле.

6. Определение времени чтения файла, включая время открытия и закрытия файлов.

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

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Информатика

{

class Program

{

static void Main(string[] args)

{

int i, k = 0;

int tb = 0;

int te = 0;

string s = null;

int q = 0;

int L = 0;

int l = 0;

int a = 0;

FileStream f1;

FileInfo fout = new FileInfo("Результат.txt");

StreamWriter fo = fout.CreateText();

DateTime nowсn = new DateTime();

nowсn = DateTime.Now;

tb = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.Second;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Open);

do

{

 

i = f1.ReadByte();

if (i != -1)

 

 

k++;

}

while (i != -1);

f1.Close();

// Console.ReadLine();

StreamReader fi = new StreamReader("Fl_1110_Shilnikov_D.txt", Encoding.GetEncoding(1251));

 

 

while ((s = fi.ReadLine()) != null)

{

l = s.Length;

L = L + l + 2;

q++;

fo.WriteLine(string.Format("\"{0:000}\";\"{1:0000}\"", a, l));

fo.WriteLine(string.Format("\"{0}", s));

a = L;

}

fo.WriteLine(string.Format("Количество записей: {0}", q));

fo.WriteLine(string.Format("Объем полезной информации: {0}", k - (q * 2)));

fi.Close();

nowсn = DateTime.Now;

te = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.Second;

fo.WriteLine

(string.Format("\"Время открытия:{0:00000}\";\"Время закрытиия:{1:00000}\";\"Время чтения файла:{2:000000}\"", tb, te, te - tb));

fo.Close();

 

}

}

}

 

Данная программа создает текстовый документ в котором записывается количество записей в файле, объем полезной информации в файле, длина каждой записи файла, смещение каждой записи в файле. время чтения файла, включая время открытия и закрытия файла.

Применив данную программу ко всем семи нашим текстовым документам, создадим и заполним таблицу 4, отображающую результаты эксперимента:

 

Таблица №4. Результаты эксперимента.

Имя файла Количество записей в файле Объем полезной информации в файле Время чтения файла (мс) Среднее время добавления записи (мс)
Fl_1110_Shilnikov_D.txt 4444160 Байт 0,007659
F2_1310_Shilnikov_D.txt 5237760 Байт 0,008902
F3_1510_Shilnikov_D.txt 6031360 Байт 0,008409
F4_1710_Shilnikov_D.txt 6824960 Байт 0,01032
F5_1910_Shilnikov_D.txt 7635160 Байт 0,008667
F6_2110_Shilnikov_D.txt 8413960 Байт 0,008063
F7_2310_Shilnikov_D.txt 9205760 Байт 0,007658

 

Определим среднее время чтения записи, для того чтобы сравнить его со средним значением времени создания записи.

Среднее время чтения записи можно найти по формуле: t=T/c, где t – это среднее время чтения записи, T – это время чтения файла, с – это количество записей в файле.

 

Проведем вычисления для всех файлов:

Для 1-го файла: 549 / 71040=0.00014 с;

Для 2-го файла: 752 / 83840=0.00016 с;

Для 3-го файла: 818 / 96640=0.00018 c;

Для 4-го файла: 1136 / 109440=0.0002 c;

Для 5-го файла: 1065 / 122240=0.0002 c;

Для 6-го файла: 1094 / 135040=0.00021 c;

Для 7-го файла: 1137 / 147840=0.00021 c.

 

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

 

Рис. 3. График изменения среднего времени чтения

записи от объема файла в записях.

 

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

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