Методические указания ЛР10_2014 (1079947)
Текст из файла
31
Методические указания к лабораторной работе № 10
(КЛР/ДЗ) по курсу
Основы программирования (СУЦ)
" Структуры, указатели, файлы, массивы, алгоритмы и списки"
Москва, МГТУ - 2014 год
_____________________________________________________________________________
СОДЕРЖАНИЕ
1. Цель ЛР №10 3
2. Требования к заданию на ЛР №10 3
3. Особенности описания разделения заданий по уровням ЛР №10 (КЛР/ДЗ) 3
4. Функции и структуры в домашнем задании 3
5. Варианты для выполнения ЛР 4
6. Порядок выполнения работы (Уровень А и В) 5
7. Дополнительные требования для сильных студентов (Уровень С): 7
8. Требование к отчету по ЛР 8
9. Контрольные вопросы к ДЗ/КЛР 8
10. Литература. 9
11. Приложения 11
11.1. Главный модуль File_P3.cpp 11
11.2. Заголовочный файл проекта File_P3.h 20
11.3. Результаты работы примера (текст) 28
11.4. Шаблон отчета по ЛР10 32
1 Цель ЛР №10
Комплексная лабораторная работа/Домашнее задание (КЛР/ДЗ) № 10 выполняется для получения навыков совместного использования знаний по отдельным приемам программирования, изучаемым в курсе основы программирования, после выполнения комплекса отдельных лабораторных работ дисциплины “Основы программирования”.
В предыдущих работах студенты изучают следующие темы: операторы, структуры, указатели, строки, файлы, массивы, алгоритмы и списки. Студенты создают файл своих структурных переменных (набор записей) и комплекс специальных функций-операций для работы с этим файлом и этими записями. Предусматриваются важные операции с файлом: запись файла, его распечатки, его сортировки, доступа к записям в файле, изменение записей, поиск записей и перезапись его в массив записей и обратно. Фактически, на уровне файлов, студенты осваивают работу с прообразом однотабличной базой данных (БД), что в дальнейшем поможет более глубоко понять функционирование сложных систем управления базами и банками данных (СУБД).
2 Требования к заданию на ЛР №10
Данное задание на ЛР может быть выполнено на трех уровнях сложности, в зависимости от выбора студента и его уровня подготовленности. Это следующие уровни:
- базовый уровень (уровень А),
- продвинутый уровень (уровень В),
- уровень для сильных студентов (уровень С).
Пункты задания выделены цветом, соответствующим выбранному уровню. В дальнейшем, конкретизирую требования на ЛР, мы будем использовать эти цвета для привязки к одному из уровней задания. Проще - цвет пункта задания определяет его уровень сложности. Студент может и частично использовать пункты задания из разных уровней, однако базовый уровень является обязательным.
Примечание 1. Данную лабораторную работу (№ 10) мы будем также именовать комплексной лабораторной работой (КЛР) либо домашним заданием (ДЗ), так как в отдельных учебных планах на семестр иногда появляется такая позиция. В общем возможен и комбинированный вариант КЛР/ДЗ.
3 Особенности описания разделения заданий по уровням ЛР №10 (КЛР/ДЗ)
Описание шагов выполнения КЛР/ДЗ и требований к ней намеренно предлагается в двух вариантах: вариант (№1), в котором примеры располагаются отдельно от текста и вариант (№2), в котором примеры и решения вставлены в текст методических указаний. На сайте для работы студентам доступны оба варианта. Если студент стремится и способен получить максимальный уровень знаний (даже более чем по плану) он должен попробовать использовать первый вариант методических указаний и обращаться к подсказкам во втором варианте только в крайнем случае. Если студенту пока трудно самостоятельно выполнить какой-то конкретный шаг задания, то он может использовать подсказку (извините, шпаргалку) и на основе ее сделать собственное задание.
4 Функции и структуры в домашнем задании
Как было отмечено выше, студенты в рамках ЛР разрабатывают программный комплекс, основанный на файловой системе, иллюстрирующий основные операции работы с базами данных (БД). Программный комплекс состоит из: набора специальных функций (фактически библиотеки), и фрагментов программ, для демонстрации работы этих функций. Например, должны быть разработаны функции заполнения файла записями, его распечатки, изменения записей и другие. Кроме этого, в главном модуле могут быть реализованы некоторые действия с файлом без оформления функций (в каждом пункте заданий указывается, когда нужно создавать функцию). Работа с файлами основывается на специальной структуре данных, которую студент самостоятельно разрабатывает в предложенной предметной области (см. варианты задания). Структура данных должна иметь осмысленные поля и представлять единое целое. Например, для описания студента можно выделить поля: фамилия студента, курс студента, размер стипендии и т.д. Часть названий полей предложены в варианте (см. ниже), хотя по согласованию с преподавателем их можно заменить. Неизменным должно оставаться только содержательное название структуры данных (студент, книга и т.д.).
5 Варианты для выполнения ЛР
Варианты для выполнения работы студентами представлены в таблице, в дополнение к трем указанным полям в структуре студент должен добавить еще любые два дополнительных поля, которые он придумает сам. Эти поля должны иметь смысл иметь смысл для собственного проекта. Например, для структуры типа студент можно добавить поля: курс обучения, год поступления, процент посещения занятий и т.д.
В таблице расположенной ниже приведены основные названия структурных переменных и обязательных полей по вариантам.
| № Вар. | Структура (имя структуры придумать самому) | Поля структуры и их тип | Примечание (интегральн. характеристика) | ||
| Поле-имя-тип | Поле-имя-тип | Поле-имя-тип | |||
| | Кафедра | Название (Name) –char[] | Число студентов (CountS) - int | Число преподавателей (CountP) - int | Среднее Число студентов на кафедре |
| | Книга | Название (Name) –char[] | Автор (Avtor) – char[] | Число страниц (nCountS) - int | Среднее Число страниц |
| | Файл | Имя файла (NameFile) –char[] | Дата создания (DateFile)– char[] | Размер файла (SizeFile) - int | Средний Размер файла |
| | Автомобиль | Марка автомобиля (Marka)–char[] | Стоимость (Cost) - double | Мощность (Kraft) - float | Средняя Мощность |
| | Компьютер | Владелец(Fam) –char[] | Размер ОП (SizeMem) - int | Объем HDD (SizeHDD) - int | Средний Объем |
| | Группа | Индекс группы (Name) –char[] | Число студентов (CountS) - int | Средняя оценка в группе в % -(AvExam) -float | Среднее число студентов в группе |
| | Человек | Фамилия (Fam) –char[] | Пол (Pol) - char | Возраст (Age) - int | Средний Возраст |
| | Стеллаж | Название (Namt) –char[] | Материал (Mat) - char | Число полок (nPol) - int | Среднее число полок |
| | Дом | Улица (Fam) –char[] | Число этажей (nStage) - int | Номер дома (Numb)- char[] | Среднее число этажей |
| Вариант представленный в примере выполнения ЛР № 10 | |||||
| Студент (Student) | Имя (Name) - char[20] | Номер (Num) - int | Стипендия (Oklad)-double | Задание моего примера | |
Примечание 2: Номер варианта студента уточняется по журналу группы. При желании студент может предложить свой вариант темы структурной переменной, но при этом он должен согласовать его с преподавателем.
6 Порядок выполнения работы (Уровень А и В)
1. Создать консольный проект (главная программа, вспомогательный модуль для функций и заголовочный файл для структур/констант)
2. Описать свою структуру, придумав ее название. Типы и названия полей взять из таблицы вариантов (см. ниже). Все данные структуры статические. Дополнить описание структуры двумя полями, придумав их по смыслу. Описание структуры выполнить в заголовочном файле проекта (<имя проекта>.h).
3. Описать и заполнить одну свою простую структурную переменную с помощью инициализации при ее описании.
4. Описать и заполнить еще одну свою структурную переменную вручную (с помощью операторов присваивания – числовые данные и функции копирования – строчные данные). Распечатать значения ее полей двух структурных переменных (Функция - printf).
5. Разработать функцию распечатки одной данной структурной переменной, передавая в качестве параметра ее адрес, и проверить ее на описанных ранее структурных переменных.
6. Создать динамическую структурную (функция – malloc, библиотека - <malloc.h>) заполнить ее динамически и распечатать значение через указатель и с помощью специальной функции печати. Удалить созданную динамическую переменную.
7. Описать и проинициализировать массив структурных переменных не менее 4-х. Распечатать этот массив с помощью функции п.5.
8. Разработать функцию распечатки массива с записями структурных переменных.
Формальные параметры этой функции: указатель на массив структурных переменных и его размер. Использовать свою функцию печати одной структурной переменной. Проверить работу этой функции.
9. Создать цикл для заполнения нового динамического массива записей полями со случайными значениями параметров (размер массива 5-6 элементов). Предусмотреть случайное заполнение одного числового значения (использовать функцию - rand) и одного символьного значения с номером (использовать функции: rand и atoi вместе с функциями копирования/слияния текстов - strcat, strcpy). Распечатать созданный массив в отдельном цикле.
10. Придумать название двоичному файлу для выполнения задания (в нашем примере -"BDStud.bin", например "BDBook.bin" – для книг ).
11. Создать цикл для заполнения файла записями (запись в файл) с разными значениями числовых параметров изменяемых в цикле (номер в журнале группы) или основанных на начальной инициализации своего массива структур.
11. Создать цикл чтения и распечатки сформированного двоичного файла. Данные из файла ввести в статический массив структур, задав его максимальный размер равным 100.
11. Создать цикл для заполнения файла записей полями со случайными значениями параметров. Предусмотреть случайное заполнение одного числового значения (использовать функцию - rand) и одного символьного значения (использовать функции: rand и atoi вместе с с функциями копирования/слияния текстов - strcat, strcpy). Распечатать созданный файл в цикле заполнения.
12. Разработать функцию заполнения динамического массива структурных переменных на основе двоичного файла с записями структурных переменных. Проверить ее работу. Массив распечатать специальной функцией (см. выше).
13. Разработать функцию заполнения двоичного файла на основе массива структурных переменных (описанных и проинициализированных выше). В функцию должны передаваться: имя заполняемого файла, адрес исходного массива, размер массива. Изменить некоторые значения записей в массиве структур перед использованием. Для этого в самом массиве, заполненном выше, сделать изменения (например, имя 2-й записи: имя и номер), используя фиксированное значение индекса элемента структурного массива. Проверить работу этой функции. Заполнение файла проверить в файл менеджере (far или total commander), с помощью операции просмотра файла в шестнадцатеричном формате.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.














