Опубликован: 02.02.2011 | Доступ: свободный | Студентов: 3339 / 951 | Оценка: 4.43 / 3.57 | Длительность: 33:06:00
Специальности: Программист
Лекция 21:

Обработка файлов в потоковом режиме

< Лекция 20 || Лекция 21: 12 || Лекция 22 >

Лабораторная работа 20. Обработка файлов в потоковом режиме

Цель работы: изучить организацию потокового ввода-вывода в файлы, научиться решать задачи с использованием прямого доступа к данным файла на языке C++.

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

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

Ознакомьтесь с материалом лекции 20.

Задания к лабораторной работе.

При выполнении заданий используйте работу с файлами с помощью потоков.

  1. Определите, какая буква чаще всего встречается в заданном текстовом файле.
  2. Удвойте в текстовом файле каждый символ, кроме пробела.
  3. Подсчитайте число цифр в данном текстовом файле и их сумму.
  4. Найдите в файле все строки с максимальной длиной. Выведите их на экран и укажите длину. Выполните чтение их входного файла только один раз.
  5. Определите переменную "студент", содержащую следующие поля: имя, фамилия, отчество студента, название института, курс, номер группы, специальность. Данные считайте из текстового файла. Выведите данные о студентах, которые учатся на одинаковом курсе и по одной специальности. Курс и специальность задаются пользователем.

Указания к выполнению работы.

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

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

  1. изучить словесную постановку задачи, выделив при этом все виды данных;
  2. сформулировать математическую постановку задачи;
  3. выбрать метод решения задачи, если это необходимо;
  4. разработать графическую схему алгоритма;
  5. записать разработанный алгоритм на языке С++;
  6. разработать контрольный тест к программе;
  7. отладить программу;
  8. представить отчет по работе.

Требования к отчету.

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

Контрольные вопросы

  1. Почему ввод-вывод в файлы в потоковом режиме аналогичен работе с другими устройствами ввода-вывода?
  2. С какой целью предусмотрены режимы открытия файлов и почему их такое многообразие?
  3. Каковы могут быть причины ошибок при открытии файлов в потоковом режиме?
  4. Какие значения возвращает функция открытия файла в потоковом режиме в зависимости от результата?
  5. Каким образом в программе происходит проверка достижения конца файла?
  6. Может ли один и тот же файл одновременно быть открыт для чтения и для записи?
  7. Можно ли один и тот же файл открыть несколько раз, не закрывая после каждого открытия?
  8. Сохранится ли информация в файле, если его не закрыть в программе с помощью функции? Обоснуйте ответ.
  9. В чем принципиальное отличие ввода-вывода в файлы при потоковом и стандартном режимах?
< Лекция 20 || Лекция 21: 12 || Лекция 22 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!