LAB1PPPO (Лабораторная работа №1)
Описание файла
Файл "LAB1PPPO" внутри архива находится в следующих папках: Лабораторная работа №1, [ООП - 2 курс] Лабораторная работа №1. Документ из архива "Лабораторная работа №1", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "LAB1PPPO"
Текст из документа "LAB1PPPO"
4
ООП – Большаков С.А. 2009/2010Требования к ЛР № 1 по курсу ООП
(2 курс ИУ5 - 3 семестр)
“ Изучение классов потокового ввода вывода и стандартных объектов CIN и COUT”
-
Цель работы
Целью лабораторной работы является детальное изучение системы программирования BC 3.1 C++ и классов для работы с потоковым вводом выводом С++ (системные объекты: CIN и COUT). В результате студенты должны приобрести навыки работы в среде С++ и уметь выполнять операции потокового ввода вывода текстовой информации при программировании на С++.
-
Изучаемые вопросы и задачи выполнения ЛР:
В процессе лабораторной работы (она рассчитана на 6 часов) студентам необходимо:
-
Изучить порядок и особенности работы с оболочкой: подготовка и редактирование текста программы; создание проектов (в программе должно быть минимально 2 исходных файла - *.CPP); процессы трансляции и редактирования; порядок отладки программ; настройка оболочки, задание параметров командной строки и задание необходимых переменных окружения. Для отладки программ используется TD под ДОС или TDW. При использовании TD под ДОС целесообразно использовать программу перекодировки trans.exe (см. 5-й семестр) для подготовки отчета на русском языке.
-
Изучить перегруженные операции для классов ввода/вывода – ">>" и "<<" (и их использование для выполнения операций потокового ввода/вывода информации и реализацию в виде описаний классов и методов)
-
Освоить ввод данных с помощью объектов CIN (изучить файл - fstream.h)
-
Освоить вывод данных с помощью объектов COUT (изучить файл - iostream.h)
-
Применить вызов функции в потоке вывода объект COUT (изучить файл - iostream.h)
-
Выполнить форматирование вывода данных в COUT и освоить использование манипуляторов (изучить дополнительно файлы - iomanip.h, iostream.h)
-
Освоить порядок применения операторов, функций форматирования в потоковом вводе выводе.
-
Найти в файлах каталогов (…\BC31\Include и …\BC31\crtl\Iostream) два различных определения для элементов языка: dec, hex, oct. Разобраться в том, чем они отличаются и где описываются, что означают с точки зрения языка программирования С++ и как используются в программах.
Примечание: Файлы для изучения располагаются в каталогах:
-
Iostream.h, fstream.h и Iomanip.h в каталоге <путь к BC>\INCLUDE,
-
Sthex.cpp и др. в каталоге <путь к BC>crtl\Iostream
-
Кроме того, я их разместил на сайте, для тех, кто инсталлировал BC не полном комплекте!
-
Содержание работы:
В ЛР нужно выполнить следующее:
-
Изучение оболочки BC 3.1 C++ в интерактивном режиме (всех пунктов меню и окон настройки работы оболочки).
-
Изучение редактирования и сохранения текстов в среде оболочки (подготовка двух файлов: основного и вспомогательного, содержащего функцию, вызываемую из потока вывода)
-
Описание модульной структуры программы и написание программы, состоящей из двух исходных файлов (диаграмма структуры должна иметь вид функциональной декомпозиционной диаграммы - FDD).
-
Получить диаграмму наследования классов потокового ввода вывода автоматически в броузере классов оболочки BC++ (browse->classes) и построить ее на основе файлов описаний классов (iostream.h). Отобразить диаграмму в отчете по ЛР (нужно уметь пояснять назначение всех классов составляющих данную диаграмму, их связи и типы связей).
-
Создать проектный файл для объединения двух исходных программ лабораторной работы (Project-> Open Project -> <новое имя>, Project-> Add Item -> <выбор модуля> и кнопка Add), настроить параметры проектного файла (option -> directories, option ->compilers->Code generation <small>).
-
Изучить работу в отладчике С++ и отладить программы с его помощью (пошаговая отладка, просмотр переменных программы, просмотр стека вызываемых функций).
-
Сформировать листинг программы и листинг результатов ее работы.
-
Оформить отчет в соответствии с требованиями к лабораторной работы и общими требованиями.
-
Требования к работе
В лабораторной работе № 1, с учетом общих требований, изложенных выше, должны быть отражены следующие программные действия в заданном порядке:
-
Ввод данных с консоли с запросом в виде текста "Введите …"(ввод с клавиатуры): ввод числа целого типа; ввод числа действительного типа; ввод строки текста (ввод выполняется посредством объекта CIN). Строка определяется в виде массива типа char или указателя char * с последующим динамическим распределением памяти new. Размер массива должен быть достаточным для ввода строки.
-
Вывод всех введенных чисел и строки в соответствующих форматах с пояснительным текстом "Вы ввели …" (посредством объекта COUT).
-
Вывод строки или целого числа посредством двух собственных пользовательских функций, определенных в другом исходном файле проекта и вызываемой непосредственно из оператора потока COUT (а не отдельной функцией в строке, а между операциями "<<"). Функции должны возвращать типы строка (char * - функцию нужно назвать strPrint) и целого числа (int – функцию нужно назвать iPrint). Эти обе функции размещаются во втором исходном модуле. Не забудьте в первом исходном модуле правильно описать прототипы этих функций.
-
Выполнить форматирование для введенного целого числа и вывод данных с помощью методов настройки (метод – setf вызываемый в отдельной строке программы) и манипуляторов (dec, hex, oct, endl размещаемых в потоке).
-
Продемонстрировать, в проихвольной форме, использование всех методов классов для объектов CIN и COUT: setf (для целого числа при выводе в шестнадцатеричном виде), width (для строки), fill (для строки) и precision (для действительного числа).
-
Оформление отчета и защита
В отчет по ЛР должно быть включено:
-
Титульный лист с номером ЛР (форма титульного листа дана в документе описания требований к документации по ДЗ - см. на сайте)
-
Цель работы и порядок выполнения работы по шагам.
-
Перечень ошибок исправленных при отладке программы (обязательно).
-
Полная диаграмма классов потокового ввода вывода с пояснениями отличий классов при наследовании и других связей. Отметить галочкой классы, на основе которых создаются объекты CIN и COUT.
-
Листинги программ (два файла программы и листинг проекта).
-
Листинг результатов работы программы (пояснить метод его получения).
-
Контрольные вопросы к ЛР №1
-
Что такое проект в BC++? Для чего нужны проекты и в чем из преимущество?
-
Что такое CIN и COUT?
-
В каких файлах, и как описаны CIN и COUT?
-
Что такое манипуляторы как элементы программы?
-
Что нужно сделать для вызова функции, расположенной в другом объектном модуле?
-
Какие основные действия можно предпринять в процессе отладки программы на TD? Перечислите основные операции и возможности, которые можно использовать при отладке программных проектов.
-
Каково назначение функций (методов): setf, width, fill и precision ?
-
Для чего нужны элементы программы dec, hex, oct? Где и как описаны? Что они представляют с точки зрения языка программирования СИ++?
-
Что такое endl и где этот элемент описан?
-
В каких файлах дано определение элемента языка hex ? Нужно указать два определения и два файла.
-
В чем заключаются требования к функциям, вызываемым из потока COUT? Где можно уточнить эти требования (файл и место - класс);
-
Для чего нужны в СП проекты? Как создать новый проект в BC 3.1?
-
Что включается в проекты для DOS и WINDOWS приложений и чем они отличаются?
-
Какие стандартные объекты классов потокового ввода вывода Вы знаете (четыре объекта)?
-
Поясните полную диаграмму классов потокового ввода вывода (наследование и разновидности классов и связей), показанную в броузере классов. Какие связи отражены в этой диаграмме, а какие нет.
-
Объясните назначение и отличие классов, входящих в диаграмму классов потокового ввода вывода.
-
Поясните следующую запись на языке СИ++: cout.setf(ios::showpoint);
-
В каком классе описаны следующие методы: setf, width, fill и precision.
-
В каких классах потокового ввода вывода перегружены операции: “<<” и “>>”.
-
Примеры операторов ввода и вывода
Ниже приведены только фрагменты программы и использования объектов и их методов потокового ввода и вывода в СИ++.
…
#include <iostream.h>
…
int iVal;
…
/* Вывод подзаголовка и ввод целой переменной */
cout << " Введите число : ";
cin >> iVal;
…
/* Вывод подзаголовка и вывод целой переменной */
cout << " Вы ввели число = " << iVal <<endl;
…
/* Использование манипулятора и вывод переменной в шестн. виде */
cout << " Число в шестн. виде = " << hex << iVal <<endl;
…
/* Вызов функции из потока вывода */
cout << " Число из функции = " << IntFunc() <<endl;
…
/* Использование функций форматирования: ширина, заполнение, точность и установка форматирования целых в шестн. Форме */
cout.width(50);
cout.fill('*');
cout.precision(3);
cout.setf(hex);
…
-
Литература (из списка литературы к курсу)
Д. Рассохин стр. 88-92
Е.Козелл и др. стр. 173-191
-
Консультации:
Консультации по ЛР и прием ЛР выполняется преподавателем. Большаковым С.А. Время консультаций согласовывается со старостами групп. Консультироваться можно также на сайте в онлайн режиме
-
Примечание
Все пояснения для вызова пунктов меню даны для системы программирования BC++ 3.1. Данную систему необходимо использовать во всех лабораторных работах и для выполнения домашнего задания.
Срок сдачи ЛР № 1 - 4-я неделя семестра.