Московский государственный технический университет
им. Н. Э.
Баумана
Утверждаю:
___________________
«___»__________2005 г.
___________________
по курсу ПППО
«Изучение
классов потокового ввода/вывода CIN и COUT»
4
(количество листов)
ИСПОЛНИТЕЛЬ:
студент группы ИУ5-63
Тесленко М.В.
______________
«___»__________2005 г.
МОСКВА 2005
1. Цель работы.
Целью лабораторной работы является изучение оболочки
(IDE) системы программирования BC 3.1 C++ и классов для работы с потоковым
вводом выводом С++ (системные объекты: CIN и COUT). В результате должны
приобрести навыки работы в среде С++ и выполнять операции потокового ввода
вывода текстовой информации.
1. Изучение оболочки BC 3.1 C++ в интерактивном
режиме( всех пунктов меню и окон настройки работы оболочки).
2. Составление блок-схемы и написание программы,
состоящей из двух исходных файлов.
3. Получение диаграммы классов потокового ввода вывода
в броузере классов оболочки BC++ и отображение ее в отчете (нужно пояснить
назначение составляющих классов).
4. Редактирование текстов в среде оболочки (подготовка
двух файлов: основного и вспомогательного, содержащего функцию, вызываемую из
потока вывода).
5.
Создание проектного файла для объединения двух исходных программ лабораторной
работы.
6. Изучение отладчика и отладка программы с его
помощью (пошаговая отладка, просмотр переменных программы, просмотр стека
вызываемых функций)
7. Формирование листинга программы и листинга
результатов ее работы.
8.
Оформление отчета
3. Перечень ошибок.
При
разработке и отладке программы были обнаружены и исправлены различные
синтаксические ошибки.
4. Диаграмма классов.
Объекты
cin и cout являются
экземплярами классов iostream_withassign и ostream_withassign соответственно:
/*
* The
predefined streams
*/
extern istream_withassign _Cdecl cin;
extern ostream_withassign _Cdecl cout;
Классы
istream_withassign и ostream_withassign
добавляют лишь способность присваивания потоковых классов. Большая часть функциональности
заложена в родительских классах.
§ Класс streambuf обеспечивает
общие правила буферизации и обработки потоков в тех
случаях, когда не требуется
значительного форматирования этих
потоков.
§ Класс ios содержит переменные состояния для
интерфейса с streambuf и
обработки ошибок.
§ Класс istream поддерживает как
форматированные, так и неформатированные преобразования потоков символов,
извлекаемых из streambuf.
§ Класс ostream поддерживает как
форматированные, так и неформатированные преобразования потоков символов,
помещаемых в streambuf.
§ Класс iostream объединяет классы istream и ostream для двунаправленных операций, в которых один поток
действует и как источник, и как приемник.
§ Производные
классы withassign обеспечивают четыре предопределенных "стандартных" потока: cin, cout, cerr и clog.
4. Листинг программы.
Laba1.cpp
//Teslenko Maxim
//IU5-63
#include<stdio.h>
#include<fstream.h>
#include<iostream.h>
#include<conio.h>
extern char *strPrint();
extern int
iPrint(int);
void main()
{
clrscr ();
int iNum;
float
fNum;
char str [31];
cout <<
"Please, input an integer:
"; //vvod celogo
cin >>
iNum;
cout <<
"...a float: "; //vvod veshestvennogo
cin >>
fNum;
cout <<
"...and a string [30 simbols]:
"; //vvod stroki
cin >>
str;
cout <<
endl << "Simple output without formatting" << endl //vivod bez formatirovaniya
<<
"Integer: " << iNum << endl
<<
"Float: " << fNum << endl
<< "String: " << str
<< endl;
cout <<
endl << "Output with formatting"<< endl ; //vivod s formatirovaniem
//razdelitel'
cout.width(10);
cout.fill('*');
cout.precision(9);
cout.setf(ios::left);
cout<<"Str:"<<str;
cout <<
endl;
cout <<
"HEX: " << hex << iNum << endl
<<
"OCT: " << oct << iNum << endl
<<
"DEC: " << dec << iNum << endl;
cout.setf(ios::hex);
cout<<"HEX: "<< iNum<< endl;
cout <<
"\nOutput from file 1_2: integer
" << iPrint(iNum) << endl
<<
strPrint() << endl;
getch();
}
1_2.cpp
//the second file
char
*strPrint()
{
return
("Teslenko Max IU5-63 18-i variant"); //soobshenie
}
int iPrint(int
iNum)
{
return (iNum);
}
5. Листинг результатов работы.