Московский государственный технический университет

им.   Н. Э. Баумана

 

 

 

 

 

 

Утверждаю:

 

___________________

 

«___»__________2005 г.

___________________

 

 

 

 

 

Лабораторная работа №1

по курсу ПППО

 «Изучение классов потокового ввода/вывода CIN и COUT»

           

Вариант №18

 

4

(количество листов)

 

 

 

 

 

 

ИСПОЛНИТЕЛЬ:

студент группы ИУ5-63

Тесленко М.В.

______________

 

 «___»__________2005 г.

 

 

 

МОСКВА 2005

 

 

 

 

1. Цель работы.

Целью лабораторной работы является изучение оболочки (IDE) системы программирования BC 3.1 C++ и классов для работы с потоковым вводом выводом С++ (системные объекты: CIN и COUT). В результате должны приобрести навыки работы в среде С++ и выполнять операции потокового ввода вывода текстовой информации.

 

2. Порядок работы.

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. Листинг результатов работы.

 




Hosted by uCoz