ТОП 10:

Лабораторная работа. Файлы и работа с ними



Цель:получить практические навыки работы с файлами в С++.

 

Общие сведения

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

Для того чтобы программа на языке C++ могла работать с файлами, необходимо в начало программы включить заголовоч­ный файл <fstream.h>. В языке С с этой целью используется библиотека <stdio.h>.

Запись данных в файл воз­можна в двух режимах:

1) создание нового файла (перезапись существующего, ранее созданного файла) с помощью оператора:

ofstream имя_потока ("имя_файла.расширение");

2) добавление данных в существующий файл:

ofstream имя_потока ("имя_файла.расширение", ios::app);

Вывод в файл осуществляется с помощью оператора вставки (<<).

Для закрытия файла используется функция close().

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

ifstream имя_потока ("имя_файла.расширение");

Ввод из файла осуществляется с помощью оператора извлече­ния (>>).

Иногда требуется записывать в файл и читать из файла не символьные строки, а сложные типы данных, такие, как массивы и структуры. Для этих целей в C++ использу­ются функции write (запись) и read (чтение).

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

7.2.1 Для задачи, решенной в лабораторной работе № 4 (таблица 4.1), организовать ввод элементов указанного массива из файла. Полученные результаты следует вывести в тот же файл.

7.2.2 Для задачи, решенной в лабораторной работе № 6 (таблица 6.1), организовать ввод данных из файла. Результаты выборки или вычислений (в зависимости от варианта) также следует вывести в отдельный файл.

 

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

7.3.1 Что представляет собой файл данных? Дайте определение.

7.3.2 Приведите пример стандартного потока ввода-вывода.

7.3.3 Какие возможности для работы с файлами предоставляют С и С++?

7.3.4 Что такое режим доступа?

7.3.5 Перечислите возможные режимы доступа при работе с текстовыми файлами.

7.3.6 Как организуется чтение файла?

7.3.7 Как организовать построчное считывание данных из файла? Приведите пример.

7.3.8 Как организуется вывод данных в файл?

7.3.9 Как организовать добавление данных в существующий файл?

7.3.10 Каков механизм действий, связанных с закрытием файла?

 

Лабораторная работа. Функции. Рекурсия

Цель:получить практические навыки использования функций в С++.

 

Общие сведения

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

Структура функции похожа на структуру программы main. Описание функции содержит заголовок функции, объявления пе­ременных и операторы:

тип_функции имя_функции (список_формальных_параметров)

{

объявления переменных;

оператор1;

…;

операторN;

}

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

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

имя_функции (список_фактических_параметров);

Для возвращения вычисленного значения в основную программу в функциях используется оператор:

return (результат);

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

Локальные переменные объявляются внутри функции точно так же, как и внутри главной функции main. Локальные переменные действуют только внутри функции, в которой они объявлены. Глобальные переменные объявляются в начале программы вне какой-либо функции. Глобальные переменные доступны для лю­бой функции в программе. Если локальная и глобальная переменные имеют одинаковое имя, то переменная в функции воспринимается компилятором C++ как локальная переменная. Если внутри функции нужно исполь­зовать глобальную переменную, совпадающую по имени с локаль­ной переменной, то в этом случае нужно воспользоваться гло­бальным оператором разрешения:

:: имя_переменной

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

 

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

Используя рекурсию, решить задачу, соответствующую варианту, выбранному по таблице 8.1.

Таблица 8.1 – Варианты заданий

Вариант Задание

 

Продолжение таблицы 8.1

Окончание таблицы 8.1

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

8.3.1 Дайте определение функции.

8.3.2 Что представляет собой описание функции?

8.3.3 С какой целью используются прототипы?

8.3.4 С какой целью в типе функции используется void?

8.3.5 Как осуществляется обращение к функции?

8.3.6 Что понимается под фактическими параметрами?

8.3.7 В чем заключается отличие формальных параметров функции от фактических?

8.3.8 Как осуществляется выход из функции?

8.3.9 В чем заключаются преимущества и недостатки рекурсивных функций?

8.3.10 С какой целью используются локальные и глобальные параметры?


Приложение А

Способы описания алгоритмов

 

Таблица А.1 – Соответствие различных способов описания алгоритмов

Струк-тура Псевдокоды Flow-формы Диаграммы Насси-Шнейдермана
Следо-вание <действие 1> <действие 2>
Ветвле-ние Если <условие> то <действие 1> иначе <действие 2> Все-если
Цикл-пока Цикл-пока<условие> <действие> Все-цикл
Выбор Выбор <код> <код 1>: <действие 1> <код 2>: <действие 2> иначе<действие 3> Все-выбор
Цикл с парамет-ром Для <индекс> = <n>,<m>,<h> <действие > Все-цикл
Цикл-до Выполнять <действие> До <условие>

 

Таблица А.2 – Характерные приемы программирования

Прием программирования Действия, выполняемые до цикла Действия, выполняемые в цикле
Накапливание суммы S = 0 S=S+элемент
Накапливание произведения P = 1 P=P*элемент
Накапливание количества K = 0 K=K+1
Поиск максимального значения max=предполаг_знач если (текущее_знач>max) тогда max= текущее_знач;
Поиск минимального значения min=предполаг_знач если (текущее_знач<min) тогда min= текущее_знач;

Список литературы

1. Ашарина И.В. Основы программирования на языках С и С++. - М.: Горячая линия - Телеком, 2002.

2. Марченко А.Л. С++. Бархатный путь. - М.: Горячая линия - Телеком, 2002.

3. Дейтел Х.М., Дейтел П.Дж. Как программировать на С++. – М.: БИНОМ, 1999.

4. Страуструп Б. Язык программирования С++. – М.: Радио и связь, 1991.

5. Культин Н.Б. Самоучитель С++Builder. – СПб.: БХВ-Петербург, 2004.

6. Архангельский А.Я. C++ Builder 6. Справочное пособие. Книга 1. Язык С++. – М.: Бином-Пресс, 2002.

7. Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989.

8. Культин Н. С/С++ в задачах и примерах. – СПб.: Питер, 2002.

9. Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

10. Липпман С., Лажойе Ж. Весь С++ от азов до совершенства. – СПб.: Невский диалект. - М.: ДМК Пресс, 2007.

11. Давыдов В.Г. Технологии программирования С++. - СПб., 2005.

12. Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. – Томск: МП «РАСКО», 1991.

13. Красикова И.Е. С++ просто как. - М., 2005.

14. Сябина Н.В. Технологии программирования. Конспект лекций (для студентов всех форм обучения спец. 050702, 050703). - Алматы: АИЭС, 2008.

15. Л.К.Ибраева, Н.В.Сябина. Информатика. Основы С++. Часть 5. Методические указания к выполнению лабораторных работ (для студентов всех специальностей). - Алматы: АИЭС, 2006.

 

 







Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.215.182.81 (0.007 с.)