Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_3.doc
Скачиваний:
7
Добавлен:
16.11.2019
Размер:
521.22 Кб
Скачать

Вопрос 2

Особенности подготовки к разработке консольного приложения Си++ в среде Borland Developer Studio 2005/6 (версия 10)

  1. Для запуска на выполнение интегрированной среды Си++ версии 10 (2006 г.) дается команда Пуск►Программы►Borland Developer Studio 2006► и повторно Borland Developer Studio 2006 или, что лучше, Си++ Builder.

  2. Для создания исходного файла программы с помощью интегрированной среды дается команда FileClose All FileNewOtherи в окне New Items, в подокне Items Categories выбирается папка Си++ Builder Projects, а в ней - значок Console Application.

  3. При создании нового проекта в окне New Console Application убрать опции: Use VCL, Use CLX, Multi Treaded (Многопоточный), оставив опции: С++, Console Application. При создании проекта, на основе существующего, следует установить опцию Specify project source, нажать на кнопку ... и указать папку, содержащую существующий проект.

  4. До момента сохранения, проект и его файлы получают имена по умолчанию. Например, имя Проекта - Ргоject1. Файла с проектируемой программой - Unit1.cpp (расширение: Си++). Главного файла проекта - Project1.bdsproj (расширение: Borland Developer Studio Project). Имя проектируемого файла (Unit1.cpp) и сокращенное (без расширения и пути к файлу) имя главного файла проекта (Project1) размещаются на закладках заголовка окна редактора. Необходимо выбрать закладку Unit1.cpp. В окне редактора исходного кода проектируемой программы будет автоматически набрана заготовка стандартной части текста будущей программы, в который программистом вносятся изменения.

  5. Затем программа запускается в интегрированной среде с помощью команды Run/Run. При попытке запуска автоматически начинает выполняться команда Save Unit1 As. При этом предлагается сохранить проектируемый файл под именем по умолчанию (Unit1.cpp) в автоматически выбранной папке. Программист может выбрать для хранения проектируемого файла другую папку, например, в соответствие со строкой 1 программы, рассматриваемой в вопросе 4 настоящей лекции, j:\vtp\с\lec2_1\, а также дать другое имя этому файлу, например, - lec2_1.cpp. Затем выполняется команда Save Project As, при исполнении которой предлагается сохранение главного файла проекта под именем по умолчанию (Project1.bdsproj), с чем рекомендуется согласиться.

Вопрос 3

Программирование схемы алгоритма (п. 3.4 вопрос 2 лекции 1))на языке Си++ (консольный режим)

//Иванов Иван Иванович АТС-151 j:\vtp\С++\lec2_2\Unit1.cpp 20.01.09

#include <iostream.h> //в файле iostream.h дано описание cout, cin, endl

void main()

{char ch;

float u,i,r;

cout<<"u(Volt)="; cin>>u;

cout<<"i(Amper)="; cin>>i;

r=u/i;

cout<<"Input data:"<<" u(Volt)="<<u<<" i(Amper)="<<i<<endl;

cout<<"Output data:"<<" r(Om)="<<r<<endl;

cout<<"Press any key and then Press Enter to stop the program.";

cin>>ch;

}

Вопрос 4

Форматированный вывод в языке Си++

//Иванов Ив. Ив.АТС-151 j:\vtp\С++\lec2 Форматир. вывод\Unit1.cpp 20.01.09

#include <iostream.h> //в файле iostream.h дано опис. cout, cin, endl, fixed 1 #include <iomanip.h> //описание: setw, setprecision, fixed 2

void main() // 3

{ char ch; // 4

float r; // 5

cout<<"r(Om)="; cin>>r;//реком-ся. для теста 10.98765432 и 12345678 // 6

//вывод по умолч.: не более 6знач. цифр, мин. шир. поля вывода 0 позиций

cout<<"Output data 1: r(Om)="<<r<<endl; // 7

cout.precision(5);//задается вывод не более 5знач. цифр // 8

cout<<"Output data 2: r(Om)="<<r<<endl; / // 9

//мин. поле вывода - 7символов, вывод не более 2знач. цифр, недостающие //пробелы слева

cout<<"Output data 3: r(Om)="<<setw(7)<<setprecision(2)<<r<<endl; //10

//мин. поле вывода 7сим., две знач. цифры после дес. точки, недостающие //пробелы слева

cout<<"Output data 4: r(Om)="<<setw(7)<<fixed<<r<< endl; ; // 11

//поле вывода 0сим., две знач цифры после дес. точки, нет пробелов слева

cout<<"Output data 5: r(Om)="<<r<<endl; //формат уже без пробелов // 12

//восстановление вывода по умолчанию

cout.precision(6); // 13

cout.unsetf(ios::fixed);//отмена вывода с заданным кол. символов // 14

//после дес.точки

cout<<"Output data 6(1): r(Om)="<<r<<endl; //формат уже без пробел. //15

cout<<"Press any key and then Press Enter to stop the program.";

cin>>ch;

}

Результаты работы программы (для наглядности пробелы заменены зведочками):

r(Om)=10.987654321

Output data 1: r(Om)=10.9877

Output data 2: r(Om)=10.988

Output data 3: r(Om)=*****11

Output data 4: r(Om)=**10.99

Output data 5: r(Om)=10.99

Output data 6(1): r(Om)=10.9877

r(Om)=1234567890

Output data 1: r(Om)=1.23457e+09

Output data 2: r(Om)=1.2346e+09

Output data 3: r(Om)=1.2e+09

Output data 4: r(Om)=1234567890.00

Output data 5: r(Om)=1234567890.00

Output data 6(1): r(Om)=1.23457e+09

В строке 2 программы для возможности работы с манипуляторами setw и setprecision в тест программы включается файл iomanip.h, в котором они описываются. Манипуляторами называются функции, имена которых можно включать в конструкции вывода и ввода на базе объектов cin и cout, для целей изменения формы или способа вывода данных.

В начале работы программы используются параметры вывода по умолчанию. Выводится максимально 6 значащих цифр (точность (precision) вывода равна 6) , минимальная ширина поля вывода составляет 0 позиций. Эти параметры были использованы в строке 7.

В строке 8 задается точность вывода равная пяти. Для этого вызывается метод precision объекта cout. Функция получает в качестве фактического параметра значение 5. Метод precision описан в том же файле (iostream.h), как и сам объект cout. Эта точность будет использоваться при выводе до тех пор пока не встретится оператор, который ее изменит.

В строке 10 устанавливается уже с помощью манипулятора setprecision точность вывода равная двум. Минимальная ширина поля вывода увеличивается до 7 позиций. Поэтому, если значение занимает количество позиций менее семи (первый случай), то остальные позиции заполняются слева пробелами. Имеется особенность в работе манипулятора setw по сравнению с setprecision, которая заключается в том, что его действие не будет распространяться на следующий оператор.

Поэтому для сохранения поля вывода (7сим) в строке 11 повторно вызван манипулятор setw с тем же самым фактическим параметром. Вызов манипулятора fixed будет обеспечивать дальнейший вывод значений в виде с фиксированной точкой с количеством символов после десятичной точки равной заданной точности вывода. Отметим, что она была установлена в строке 9 с помощью манипулятора setprecision равной двум, что после вызова манипулятора fixed будет обеспечивать вывод после десятиной точки двух цифр (слева в незаполненных позициях размещаются пробелы).

В строке 12 манипулятор setw(7) не вызывается, поэтому ширина поля вывода опять становится равной по умолчанию, т.е. нулю. В результате заполнения незанятых позиций пробелами уже не будет. Сохранение формата вывода с фиксированной точкой с заданным количеством цифр после запятой сохраняется, несмотря на то, что манипулятор fixed не вызывается.

В строках 13 и 14 осуществляется восстановление параметров вывода по умолчанию. В строке 14 вызывается метод unsetf объекта cout. В качестве фактического параметра этого метода указывается флаг fixed класса ios, который описан в файле iostream.h . Таким образом в 15 строке вывод осуществляется с параметрами по умолчанию, так же как это осуществлялось в строке 7.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]