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

Теоретическая часть. Практическая работа

Читайте также:
  1. I часть
  2. II часть
  3. II. Основная часть. Марксистская школа.
  4. II. Практическая часть
  5. II. Практическая часть
  6. II. Практическая часть
  7. II. Практическая часть

Практическая работа

Тема: Обработка типизированного файла

1. Цель работы:

· Освоение основ структурного программирования;

· Освоение алгоритмов обработки типизированного файла;

· Закрепление навыков работы с файлом.

 

 

Обеспечение

· Инструментальная система, поддерживающая TurboPascal.

· Инструментальная система, поддерживающая C или C++.

3. Продолжительность выполнения работы:

6 академических часов.

(В случае, если студентам предоставляется шаблон программы, то объем выполнения работы сокращается до 4 академических часов)

4. Задание:

 

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

 

 

5. Требование к заданию:

5.1. Количество полей в базе данных должно быть не менее пяти, причем разного типа.

5.2. Количество функций обработки типизированного файла не менее пяти.

5.3. Алгоритмы функций обработки типизированного файла должны быть эффективными.

5.4. Разработка программы должна проводиться в соответствии правилам структурного программирования.

5.5. Для одной функции обработки использовать минимальное обращение к файлу (т.е. использовать динамическую память)

5.6. Для остальных функции обработки минимально использовать оперативную память (т.е. максимально использовать работу с файлом)

5.7. «Меню» для выбора функций должно быть простым, выбор операции обработки по номеру операции.

5.8. Наименование пунктов меню должно отражать выполняемую операцию.

5.9. При работе программы должно быть понятно выполнение текущих операций.

5.10. Исходный текст программы должен соответствовать хорошему стилю программирования.

5.11. Программа должна работать надежно.

5.12.

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

Работа выполняется в 3 этапа:

1 этап Создание макета (шаблона) программы с готовой основной частью, меню и «заглушками».

1) анализ задания;

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

3) разработать укрупненный алгоритм программы, т.е. алгоритм основной части программы;

4) реализовать алгоритм (т.е. написать код), вместо отсутствующих к данному моменту блоков программы написать заглушки.

5) Реализовать функцию выбора операции над типизированном файлом (меню).

6) Отладить программу.

7) Проверить работу программы по тестам;

8) Показать работу программы преподавателю.

Этап

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

10) Разработать эту часть программы на исходном языке. По ходу разработки алгоритмов отдельных функций необходимо раскрывать «заглушки».

11) Отладить программу (по мере раскрытия «заглушек»);

12) Проверить работу программы по тестам;

13) Показать работу программы преподавателю.

Этап

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

15) Разработать эту часть программы на исходном языке. По ходу разработки алгоритмов отдельных функций необходимо раскрывать «заглушки»

16) Отладить программу (по мере раскрытия «заглушек»);

17) Проверить работу программы по тестам;

18) Показать работу программы преподавателю.

19) Оформить отчет;

20) Защитить работу.

 

 

7. Содержание отчета:

1. Наименование темы работы;

2. Цель работы;

3. Обеспечение (в какой среде была выполнена работа);

4. Задание общее и индивидуальное;

5. Блок-схемы основных блоков программы;

6. Исходный текст программы;

7. Копии экрана, подтверждающие работоспособность программы

 

Теоретическая часть

8.1.Основные правила структурного программирования. Основные правила заключаются в следующем

1) Программа должна состоять из основной части программы (ОЧ) и блоков, к которым ОЧ обращается.

2) ОЧ должна состоять из операторов обращения к блокам и должна быть составлена так, чтобы можно было легко понять логику программы. Для этого ОЧ должна отражать (по возможности) структуру функционального смысла программы и соответствовать укрупненному алгоритму программы.

3) Каждый блок должен представлять собой функциональный узел. Каждый блок должен иметь по возможности единственный вход и единственный выход. Блок должен быть независимым. Надо избегать общих для нескольких модулей переменных для временного хранения:

4) Программы пишутся сверху, т.е. начиная с БП, вместо отсутствующих к данному моменту блоков пишутся заменители (заглушки), имитирующие работу блоков.

5) Логические конструкции программы должны соответствовать: последовательности, выбору, повторению.

6) Данные в программе должны быть четко сгруппированы по функциональной принадлежности: задачи (входные, выходные, промежуточные), конструкции программы (глобальные, локальные, обмена).

7) Стиль программы должен быть простым и ясным, т.е. без излишних сложностей, без избыточности данных.

8) Листинг программы (исходный текст программы) должен быть организован в соответствии правилам читабельности

9) В программе не стоит злоупотреблять оператором безусловного перехода.

10) Если в программе используются серия операторов условного перехода if то их необходимо заменить «переключателем» (switch).

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

- дублирование фрагментов,

- использование вспомогательных переменных,

- управление признаков.

 

8.2. Функции обработки типизированного файла

К стандартным функциям обработки типизированного файла (базы данных одной таблицы реальной) относятся:

- удаление записи,

- изменение записи,

- вставка записей,

- упорядочивание данных,

- поиск данных,

- ввод,

- просмотр.

8.3. Физическое удаление записи с использованием дополнительного файла.

 

Механизм физического удаления.

Пусть имеется БД, которая содержит пронумерованные записи. Требуется выполнить: удаление К-ой записи, с использованием дополнительного файла. Пусть К=3. Схематично выполнение операции удаления пояснено на рисунке:

 

File 1 (чтение) File 2 (запись)


   
   
   
     
   
   
   
     
3’(4)    
4’(5)    
5’(6)    
6’(7)    

 

Словесный алгоритм физического удаления записи с использованием дополнительного файла:

1) Открываем исходный файл (файл с данными File1) на режим ‘чтение’.

2) Открываем файл на режим ‘запись’ (File2)

3) Счетчик порядковых номеров записей I=0

4) Читаем из файла File1 запись.

5) Определяем конец файла File1?

- если конец файла, то переходим на шаг 9 (конец обработки),

- если не конец файла, то счетчик I увеличиваем на единицу.

6) Проверяем та ли запись которую надо удалить (т.е. i=k)?

7) Если номер проверяемой записи не соответствует номеру удаляемой записи, то эту запись записываем в файл file2, иначе переходим на шаг 4.

8) Закрываем файлы File1 и File2.

9) Переименовываем файлы:

- Имя и расширение файла f2 = имени и расширению файла f1;

- имя f1 оставляем прежним, а расширение заменяем, например, на *.bak

8.4. Удаление записи без использования дополнительного файла.

Рисунок, поясняющий физическое удаление записи без использования дополнительного файла:

 

А) Б) Fn - f

   
   
   
   
   
   
 
   
   
   
   
   
   

 

 
К=3

 

Начало 1 4

Начало ->

 
2 записи ->

 


А) сдвиг одной записи Б) сдвиг всех записей

 

пояснения к выполнению

1) Установка файлового указателя на 4-ой записи

2) Чтение 4-ой записи

3) Установка файлового указателя на 3-ей (удаляемой) записи.

4) Запись 4-ой записи на 3-ю запись.

В результате 3-я запись удалена, т.е. на месте старой информации находится новая информация, которая была на записи 4, и мы имеем на 3 и 4 записи месте будут две одинаковые информации.

Словесный алгоритм

  1. Отрываем файл f на режим работы ‘чтение/запись’.
  2. Определяем число записей N в файле f.
  3. Вводим номер записи K, которую надо удалить.
  4. i=0.
  5. Устанавливаем файловый указатель на (K+i) запись.
  6. Читаем К+i-ую запись. (После чтения файловый указатель перемещается на одну запись ниже по файлу).
  7. Устанавливаем файловый указатель на К+i-1-ой записи (минус 2 записи вверх от текущего положения указателя),
  8. Записываем в файл прочитанную ранее запись (см. п. 6).
  9. i=i+1
  10. Проверяем K+i=N:

- Если K+i не равен N, то повторяем действия начиная с 5 пункта;

- Если К+i=N, то последнюю запись отсекаем (truncate(f) в Pascal).

  1. Закрываем файл.

 

8.5. Логическое удаление записи – это условное удаление записи, а физически запись остается.

 

Используемый прием: Для реализации логического удаления необходимо в структуру данных добавлять служебное поле, которое будем служить признаком удаленной записи. Существует различные варианты реализации, например:

1) Поле может иметь одно из значений: TRUE или FALSE

2) При записи БД в служебное поле записывается порядковый номер записи, в случае логического удаления этот номер заменяется на инверсное значение.

3) На практике встречаются и другие варианты реализации.

Логически удаленные записи «невидимые» при выполнении других операций обработки (изменение записи, поиск, сортировка и т.д.). Это надо учитывать при реализации.

Рассмотрим механизм логического удаления, при этом примем, что удаленная запись помечается отрицательным числом. Пояснения смотри на рисунке:

 

   
-2  
   
-4  
   
-6  
   

 

а) Записи с номерами –2, -4, -6 логически удалены и логически в файле содержатся четыре записи.

Словесный алгоритм логического удаления записи из файла.

Пусть надо удалить k-ую запись из файла

Принимаем: логически удаленная запись – это отрицательный номер записи.

1. Открываем файл и на чтение и на запись

2. Устанавливаем файловый указатель на начала К-ой записи.

3. Читаем К-ую запись из файла.

4. Изменяем поле, отвечающее за логическое удаление, на инверсное значение.

5. Устанавливаем указатель на начало К-ой записи.

6. Записываем К-ую запись в файл.

7. Закрываем файл.

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

 

 

8.6. Восстановление записей – это восстановление логически удаленных данных. Операция восстановления обратная операция логическому удалению.

8.7. Сжатие данных. Сжатие – это физическое удаление логически удаленных записей.

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

 

f1 (на чтение) f2 (на запись)

       
       
       
       
       
     

 

- Ввод с клавиатуры

 

Рисунок, поясняющий операцию вставки без использования дополнительного файла.

 

f (нач. состояние) f (конечное состояние)

         
         
       
      (3’)
      (4’)
      (5’)
      (6’)
  8 (7’)

 

 

 


Начало

 
Ввод с клавиатуры

 

8.9. Сортировка записей с использованием индексного массива на примере упорядочивания данных в БД по одному полю.

Описание метода

Индексы хранятся в памяти в виде массива или в файле. В начальный момент массив инициализируется целыми числами по порядку от 1 до N (число записей в файле). Суть метода состоит в том, что во время сортировки, при сравнении полей записи, меняются местами не поля записи, а элементы индексного массива.

Рассмотрим на конкретном примере механизм метода на рисунке

 

Расположение данных Содержание индексного файла.

в файле до сортировки после сортировки

 


  Иванов  
  Сидоров  
  Шумов
  Архипов  
  Петров  
  Волков  

 

Порядок вывода данных при просмотре

     
     
     
     
     
     

 

  Архипов
  Волков
  Иванов
  Петров
  Сидоров
  Шумов

 

 

Словесный алгоритм индексной сортировки:

  1. Открыть файл БД на чтение.
  2. Определить количество записей в файле N
  3. Если нет индексного файла, то инициализируется индексный массив index (в порядке упорядочивания в диапазоне от 1 до N), иначе данные переписываются в индексный массив.
  4. i=0
  5. Устанавливаем файловый указатель на i-ую запись.
  6. Читаем i-ую запись из файла
  7. j=i+1
  8. Устанавливаем файловый указатель на j-ую запись
  9. Читаем j-ую запись из файла
  10. Сравниваем поле i-ой и j-ой записи
  11. Если эти поля не соответствуют упорядочиванию, то меняются местами i-ый и j-ый элементы индексного массива
  12. Если j<N-1, то j=j+1 и переход на п.8
  13. Если i<N-1, то i=i+1 и переход на п.5
  14. Записать индексный массив в индексный файл (если есть необходимость).
  15. Вывести записи на экран монитора в соответствии с индексным массивом. Пример:

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

{

fseek(fp, index(i), SET_SEEK);

fwrite(&zp, sizeof(bd),1,fp);

viv_zp(…); {вывод записи на экран монитора}

}

8.10. Функции обработки:


Дата добавления: 2015-10-21; просмотров: 92 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Включение содержания обучения в контекст решения значимых жизненных задач| Работа с файлами

mybiblioteka.su - 2015-2024 год. (0.026 сек.)