2. лабораторная работа №7




Скачать 402.5 Kb.
Название2. лабораторная работа №7
страница1/4
Дата22.12.2012
Размер402.5 Kb.
ТипЛабораторная работа
  1   2   3   4




  1. ВВЕДЕНИЕ


Лабораторные работы выполняются в среде Borland C++3.11 по следующим темам:


  1. Обработка данных бинарных файлов.

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

По каждой лабораторной работе оформляется отчет, который должен содержать:

  • цель лабораторной работы;

  • вариант задания на выполнение лабораторной работы;

  • структуру программы;

  • схемы алгоритмов всех функций программы;

  • таблицы глобальных переменных программы и локальных переменных каждой функции;

  • листинги файлов программы, исходных данных и результатов.

Все материалы должны сохраняться в тетради для лабораторных работ.

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


2. ЛАБОРАТОРНАЯ РАБОТА № 7


Обработка данных бинарных файлов


2.1. Цель лабораторной работы


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

  • объявления файлов;

  • функций открытия и закрытия файлов;

  • методов создания файла, дополнения, чтения и модификации данных, содержащихся в файле;

  • методов поэтапной разработки и отладки программы.




    1. . Теоретические сведения


2.2.1. Работа с файлами


Основное отличие внешней памяти компьютера от основной (иначе оперативной) памяти состоит в возможности сохранения информации при отключении компьютера. Информация во внешней памяти (на жестком диске, на магнитных лентах, на оптическом диске, на дискетах и т.д.) сохраняется в виде файлов – именованных объектов внешней памяти, доступ к которым поддерживается операционной системой. Поддержка операционной системы состоит в том, что в ней имеются средства:

  • создания файлов;

  • уничтожения файлов;

  • поиска файлов на внешнем носителе информации;

  • чтения и записи данных из файлов и в файл;

  • открытия файлов;

  • закрытия файлов;

  • позиционирования файлов.

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

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

Такие действия являются частью аспекта ввода/вывода данных в С++ и для их реализации в C++ имеются различные средства.

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

Так функции С++ позволяют читать данные из файлов или получать их с устройств (например, с клавиатуры) и помещать их в оперативную память компьютера, а также записывать данные из оперативной памяти в файл или выводить их на различные устройства, например, на экран или на принтер.

Средства ввода/вывода языка С++ можно разделить на три группы:

  1. ввод/вывод верхнего уровня – потоковый

    • библиотека функций потокового ввода/вывода (язык С) (заголовочный файл stdio.h)

    • б) библиотека классов входных – выходных потоков (язык С++) (файлы - iostream.h, fstream.h, strstrea.h)

  1. ввод/вывод нижнего уровня (системный ввод/вывод)

(файл io.h)

  1. ввод/вывод для консоли и портов (файл conio.h)


Потоковый ввод/вывод должен содержать следующие методы работы с файлами:

  1. создание файла;

  2. создание потока;

  3. открытие файла;

  4. “присоединение” файла к потоку;

  5. обмены с файлом с помощью потока;

  6. “отсоединение ” файла от потока;

  7. закрытие файла;

  8. удаление файла.

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

Библиотеки ввода/вывода С++ включают средства для работы с последовательными файлами, представляющими собой именованную последовательность байтов, имеющую начало и конец. Чтение из файла или запись в файл ведутся байт за байтом. Позиции в файле, откуда производится чтение или куда ведется запись, определяются указателями позиций файла. Указатели позиций записи или чтения устанавливаются либо автоматически, либо их можно установить на нужный байт с помощью функций управления положением.


2.2.2. Текстовые и бинарные (двоичные) файлы


Когда данные сохраняются в файле, их можно сохранять в текстовой форме или в двоичном формате.

Текстовая форма означает, что все данные, даже числа, сохраняются как текст – последовательность символов.

Двоичный формат означает, что данные в файле сохраняются во внутреннем представлении этих данных компьютером.

Для символа двоичное представление совпадает с его текстовым – двоичным представлением ASCII-кода символа.

Однако для чисел двоичное представление очень сильно отличается от их текстового представления.

Например, сохранение числа, имеющего значение -1.23456789е-05, в текстовом формате представляет собой сохранение 15 символов, из которых сформировано данное число. Для этого требуется, чтобы внутреннее представление компьютера числа с плавающей точкой было преобразовано в текстовую форму, и, следовательно, для записи в файл нужно использовать операцию << - вставки в файловый поток, которая выполняет такое преобразование.

Двоичный формат означает, что число, представляемое символами, сохраняется в бинарном файле, так как оно сохранялось бы в оперативной памяти, то есть во внутреннем представлении компьютера. Вместо кодов символов сохраняется 64-разрядное представление числа типа double (по умолчанию вещественное число имеет форму внутреннего представления, которой соответствует тип данных double).

Рассмотрим пример - форму хранения значения переменной float a = 139.76 в текстовом и бинарном файле.

При записи в текстовой файл операция вставки << производит преобразование внутренних кодов переменной в коды символов числа, то есть в файле сохраняются коды следующих символов:


‘1’

‘3’

‘9’

‘.’

‘7’

‘6’

00110001

00110011

00111001

00101110

00110111

00110110

------------------------------------------всего 48 бит--------------------------------------------


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


Представление вещественных  чисел в формате  с плавающей запятой


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

Форма с плавающей точкой использует представление вещественного числа А в виде произведения мантиссы m (значащей части числа) на основание системы счисления q в некоторой целой степени p, которую называют порядком:

А=m x qp .

Порядок - это степень, в которую нужно возвести основание системы счисления, чтобы, умножив его на мантиссу, получить число в естественном виде, с фиксированной точкой.

Например, число 139,76 можно записать в виде: 0,13976х103. Здесь m=0,13976 – мантисса, p=3 – порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе, чтобы число было представлено в естественной форме (с фиксированной точкой). Отсюда и название - «плавающая точка». Однако справедливы и следующие равенства:

13,976х101 = 1,3976х102 = 0,013976х104 = 13976 х10-2

Получается, что представление числа в форме с плавающей точкой неоднозначно. Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию:

0.1 <= m < 1,

то есть мантисса должна быть меньше единицы и первая значащая цифра - не ноль. Следовательно, для рассмотренного числа нормализованным представлением будет: 0,13976х103.

В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим один из возможных.

В памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q=2) и значение типа float занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:


+/- порядок

МАН

ТИС

СА



1-й байт 2-й байт 3-й байт 4-й байт


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

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие:

 

Машинный

порядок

0

1

2

3



64

65



125

126

127

Математический

порядок

-64

-63

-62

-61



0

1



61

62

63

 

Если обозначить машинный порядок Мq, а математический q, то связь между ними выразится формулой:

Мq = q + 64

Итак, машинный порядок смещен относительно математического на 64 единицы и имеет только положительные значения. Полученная формула записана в десятичной системе счисления. В двоичной системе счисления формула имеет вид:

Мq = q + 10000002

 

При выполнении вычислений с плавающей точкой процессор это смещение учитывает.

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

  1. перевести модуль данного числа в двоичную систему счисления;

  2. записать полученное двоичное число в нормализованном виде;

  3. определить машинный порядок с учетом смещения;

  4. учитывая знак заданного числа (0 – положительное; 1 – отрицательное), записать его представление в памяти ЭВМ.

Например, запишем внутреннее представление числа 139,76 в форме с плавающей точкой в 4-х байтовой ячейке:

    1. переведем десятичное 139,76 и запишем его 24-значащими цифрами, оставив 8 цифр из 32 для представления порядка и знака числа: 139,7610 = 10001011,11000010100011112

    2. запишем полученное двоичное число в форме нормализованного двоичного числа с плавающей точкой:

10001011,11000010100011112 = 0,1000101111000010100011112 х101000,

где 0,1000101111000010100011112 – мантисса;

10 – основание системы счисления (210=102);

1000 – порядок (810=10002).

    1. определим машинный порядок:

Mq2 = 1000 + 1000000 = 1001000

    1. запишем представление числа в ячейке памяти:


01001000

10001011

11000010

10001111



----------------------------всего 32 бита для типа float-------------------


Для того чтобы получить внутреннее представление отрицательного числа -139,7610 , достаточно в полученном выше представлении заменить в разряде знака числа 0 на 1. Никакого инвертирования, как для отрицательных целых чисел, здесь не происходит.

Каждый формат имеет свои достоинства.

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

В двоичном файле числа сохраняются более точно, поскольку он позволяет сохранить точное внутреннее представление числа, не происходит ошибок преобразования или округления чисел. Сохранение данных в бинарном файле происходит быстрее, поскольку при этом не происходит преобразования и данные можно сохранять крупными блоками. Кроме того, данные в двоичном формате часто занимают меньше места (что, конечно, зависит от природы данных). Однако при переносе данных в другую систему возможны проблемы, если в новой системе применяется другое внутреннее представление данных.

Рассмотрим текстовые и бинарные файлы еще с одной точки зрения.
  1   2   3   4

Похожие:

2. лабораторная работа №7 iconЛабораторная работа Установка и настройка 6 Лабораторная работа Демонстрационный проект 7 Упражнение 1: Работа с основной схемой проекта 7 Упражнение 2: Работа со схемой «Резервуарный парк»
Разработка систем диспетчерского контроля и управления с использованием Infinityscada 4
2. лабораторная работа №7 iconЛабораторная работа. Получение и свойства оксидов, гидроксидов и солей
Лабораторная работа. Ряд напряжений металлов. Гальванические элементы. Электролиз юююююю
2. лабораторная работа №7 iconТематическое планирование биология, 6 класс
Морфология листа (лабораторная работа) 12. Строение растительного организма. Клетки и ткани 13. Типы растительных тканей (Лабораторная...
2. лабораторная работа №7 iconЛабораторная работа №1 (одномерные массивы) 27
Лабораторная работа №6 (статические массивы, знакомство с графическим режимом. Возможно будет изменена) 49
2. лабораторная работа №7 iconЛабораторная работа №5. Эксперимент лабораторная работа №6 Раздел II. Эмпирические исследования познавательных процессов. Ощущения и восприятие лабораторные работы №7-9: Методика «Специфика восприятия»
Цель: Выявление типов поведения студентов (коллег) в дискуссии (наблюдение по схеме Р. Бейлза)
2. лабораторная работа №7 iconЛабораторная работа №1 Изучение автоматической телеграфной станции ат-пс-пд лабораторная работа №2 Изучение телеграфного коммутационного сервера «Вектор-2000»
Рецензент – зам начальника Гомельской дистанции сигнализации и связи Белорусской железной дороги В. И. Прокопюк
2. лабораторная работа №7 iconЛабораторная работа Правила работы с вычислительной установки Лабораторная работа Работа с клавиатурой
Лабораторный практикум по информатике представляет собой учебно-практическое издание для студентов педагогического вуза непрофильных...
2. лабораторная работа №7 iconЛабораторная работа по курсу «Физические основы микроэлектроники» Нижний Новгород, 2005
Операционный усилитель: Лабораторная работа по курсу «Микроэлектроника» / Сост. Н. В. Федосеева, С. М. Планкина. – Н. Новгород, ннгу,...
2. лабораторная работа №7 iconЛабораторная работа №1 Лабораторная работа №1 1
В качестве примера рассматривается деятельность вымышленной компании «Computer Word». Компания занимается в основном сборкой и продажей...
2. лабораторная работа №7 iconЛабораторная работа выполняется в дисплейном классе. Результат представляет собой работающую программу, которая может анализировать любые тексты и сообщать об ошибках программирования
Данная лабораторная работа рассчитана на 4 аудиторных часа и ещё 4 часа самостоятельной работы для изучения литературы и оформление...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница