Метода(c++)
.pdfМИНОБРНАУКИ РОССИИ
______________________________________
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
______________________________________
Лабораторные работы по программированию в среде С++ Builder 6.0
Санкт-Петербург
2017
1
Авторы: Андреева О. М., Григорьев Е. Б., Маркелов О. А., Хачатурян А. Б. Лабораторные работы по программированию в среде С++ Builder 6.0: учебнометодическое пособие. СПбГЭТУ «ЛЭТИ», 2017. 77 с.
Лабораторные работы, включенные в состав лабораторного практикума, соответствуют рабочей программе дисциплины «Информатика». Позволяют изучить создание приложений с консольным и оконными приложениями на языке программирования С++.
Предназначены для студентов бакалавриата, обучающихся по направлениям 11.03.01 "Радиотехника" и 11.03.02 "Инфокоммуникационные технологии и системы связи", а также студентов специалитета, обучающихся по специальности 11.05.01 "Радиоэлектронные системы и комплексы".
Одобрено Методической комиссией факультета радиотехники и телекоммуникаций
в качестве учебно-методического пособия
©СПбГЭТУ «ЛЭТИ», 2017
2
Введение
Лабораторные работы, включенные в состав предлагаемого пособия, выполняются в рамках аудиторных занятий на дисциплине «Информатика» и служат для освоения языка программирования С++, проектирования консольных и оконных приложений.
Материал методических указаний к лабораторным работам строится по следующему принципу: рассматриваемая тема разбивается на несколько частей. Каждая часть состоит из раздела теоретических сведений и одного или нескольких упражнений. Теоретические сведения содержат необходимый объем информации, который знакомит обучающегося с новым материалом и на основании которой далее будет необходимо выполнить предлагаемые упражнения.
Каждое последующее упражнение или пример предполагает, что учащийся использует знания, полученные при выполнении предыдущих лабораторных работ или упражнений. В некоторых примерах и упражнениях авторами сознательно внесены ошибки в указаниях к выполняемым действиям. Нахождение подобных ошибок и самостоятельное их исправление является признаком достойной проработки излагаемого материла и приветствуется. В связи с этим крайне не рекомендуется пропускать теоретический материал: учащемуся следует сначала изучить теоретический фрагмент, и лишь после этого переходить к выполнению практической части.
Результат практически каждой лабораторной работы предлагается сохранить, при этом, как правило, указывается имя, а иногда – и местоположение для сохраняемого файла. Рекомендуется не нарушать заданные параметры сохранения, поскольку некоторые упражнения базируются на ранее выполненных с использованием сохраненных в них результатов.
Ряд лабораторных работ предполагает использование заранее подготовленных электронных материалов (файлов). В случае самостоятельного выполнения лабораторных работ вне учебной лаборатории для получения материалов-заготовок следует обратиться к преподавателю.
3
ЛАБОРАТОРНАЯ РАБОТА №1. ЗНАКОМСТВО СО СРЕДОЙ ПРОГРАММИРОВАНИЯ,
СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ, ОРГАНИЗАЦИЯ ПРОСТЕЙШЕГО ВВОДА/ВЫВОДА, ЛИНЕЙНЫЙ ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС.
Цель работы: знакомство с интерфейсом среды программирования, составом проекта, этапами создания приложения. Освоение принципа создания консольного приложения; знакомство с операторами консольного ввода/вывода; программирование линейного вычислительного процесса.
Краткие теоретические сведения:
I. Для создания консольного приложения в среде C++ Builder необходимо:
1.Запустить среду программирования или через главное меню
системы |
(кнопка «Пуск») или двойным щелчком по ярлычку |
на |
рабочем |
столе (если ярлычок есть). |
|
2.Выполнить команды меню File New Other…
3.В появившемся окне выбрать значок (двойной щелчок или выделить и нажать кнопку ОК).
4.В появившемся окне, ничего не меняя, нажать кнопку ОК. Стандартный вид среды программирования C++ Builder 6.0 в этом
случае представлен на рис. 1. Часть возможностей среды при создании консольного приложения не используется, поэтому некоторые неиспользуемые в работе окна (например, Object TreeView на рис. 1) можно будет закрыть вручную.
II. Состав проекта.
Каждая программа в С++ Builder представляет собой так называемый проект.
Для каждого консольного проекта C++ Builder автоматически создает следующие файлы:
•головной файл проекта (*.bpr)
•текстовый файл проекта (*.cpp)
•файл модуля проекта (*.cpp). ЕГО ИМЯ ДОЛЖНО ОТЛИЧАТЬСЯ ОТ ИМЕНИ ФАЙЛА ПРОЕКТА!!!!
•двоичный файл ресурсов *.res.
4
Панель инструментов |
|
|
Палитра компонентов |
|||
|
|
|
|
|
||
|
|
|
|
Редактор кода |
||
Рис. 1. Возможный вид интерфейса среды программирования |
||||||
В 99% случаев эти файлы не подлежат коррекции пользователем. |
||||||
Однако, можно просмотреть головной |
файл |
проекта, |
выполнив |
|||
Project View Source. |
|
|
|
|
|
|
Каждый проект состоит из модулей. Каждый модуль содержит |
||||||
исходный текст логического блока программы на языке C++ и |
||||||
представляет собой файл с расширением *.срр. Для каждого модуля |
||||||
среда C++ Builder автоматически создают еще |
один |
отдельный файл |
||||
с расширением *.h. Это так называемый |
заголовочный файл модуля. |
|||||
Как правило, все изменения в заголовочный файл и файл проекта |
||||||
вносятся средой C++ Builder автоматически. |
|
|
|
|||
При создании нового консольного проекта один модуль создается |
||||||
автоматически. |
Остальные |
модули |
добавляются |
по |
желанию |
|
пользователя в процессе работы над проектом. |
|
|
|
|||
Для создания нового проекта: File New Application. |
||||||
Для открытия существующего проекта: File Open Project. |
||||||
Для открытия существующего модуля: File Open…. |
|
|||||
Для сохранения файла модуля: File Save. |
|
|
||||
|
|
5 |
|
|
|
|
Для сохранения файла модуля с другим именем: File Save Аs….
Для сохранения головного файла проекта с другим именем или для сохранения вновь созданного головного файла проекта: File
Save Project As….
III. При создании нового консольного приложения в файле модуля находится минимальная программа, созданная мастером консольного приложения. Пользовательский код программы вводится как дополнение к этому минимальному коду.
Программа на С++ всегда состоит из набора функций. В консольном приложении начальной точкой выполнения программы является функция main, заголовок и тело которой генерируется средой программирования автоматически при создании нового консольного приложения.
Для консольного приложения выполнение программы начинается с первого оператора, находящегося в теле функции main. Из этой функции могут вызываться другие функции программы, которые могут находиться как в этом же, так и в других модулях. Завершается выполнение программы, как правило, в конце функции main по оператору return, хотя по разным причинам оно может завершаться и в других местах программы.
IV. Если функция описана в другом модуле, то, для ее использования модуль должен быть подключен к текущему модулю. Для подключения модуля используемся директива #include. Формат директивы:
#include <ИмяФАйла>
V. Для организации ввода/вывода информациии при работе с консольным приложением на лабораторных занятиях будут использоваться встроенные объекты ввода/вывода, описанные в модуле iostream.h (поставляется вместе со средой программирования). Соответственно, этот файл будет необходимо подключать к каждому создаваемому консольному приложению (см. п.
IV).
При подключении этого файла в программе автоматически создаются виртуальные каналы связи cin (читается как «си-ин») – для ввода с клавиатуры и cout (читается как «си-аут») - для вывода на экран, а также операции помещения в поток << и чтения из потока >>.
Формат команды для ввода значения переменной с клавиатуры:
6
cin >> ИмяПеременной;
Если необходимо ввести значения несколько переменных, допустимо многократно повторять вышеприведенную команду, или спользовать следующий формат команды ввода:
cin >> ИмяПеременной1> >> ИмяПеременной2 >> … >> ИмяПеременнойk; Формат команды для вывода текстовой информации на экран:
сout << «выводимая информация»;
выводимый текст должен быть заключен в кавычки!!!
Формат команды для вывода значения переменной на экран: cout << ИмяПеременной;
VI. Перед запуском приложения на исполнение автоматически производится его компиляция. Если процесс компиляции окончился благополучно, на диске появляется файл с расширением *.exe и именем, совпадающим с именем файла проекта, кроме того, автоматически управление передается на первый оператор в теле функции main и начинается выполнение программы. Для запуска
приложения используется кнопка или клавиша F9.
VII. Как правило, перед первым запуском на исполнение нового проекта необходимо сохранять как все его модули, так и сам проект. При последующих запусках сохранения не требуется, даже если в модулях были проведены какие-либо изменения. Напоминания о необходимости сохранить модуль в силу его изменений тоже отсутствуют, поэтому следует обязательно сохранять измененные модули самостоятельно.
Упражнение 1. Создание простейшего консольного приложения
1.Запустить среду Borland C++ Builder 6.0 и создать новый консольный проект
2.Открыть менеджер проекта, выполнив View Project Manager и просмотреть состав проекта.
3.Попереключаться между файлами проекта, используя менеджер проекта.
4.Переключиться в файл модуля и просмотреть автоматически сгенерированные строки.
5.Переключиться в файл модуля и ввести код, представленный на рис. 2 (следите за тем, чтобы автоматически сгенерированные строки не
дублировались!): Сохранить модуль в папке своей группы с именем
UnitLab1.
7
//программа простейших вычислений
//служебные команды с++
#include <vcl.h> #pragma hdrstop #pragma argsused
//подключение библиотек
#include <iostreаm.h>
int main(int argc, char* argv[])
{
//объявление переменных
float a, b;// исходные данные float t; //рабочая переменная
//ввод исходных данных
cout << “Vvedite dannye dla arifmeti4eskih deystvij\n”; cout << “а=”; cin >> a;
cout << “b=”; cin >> b;
//расчет и вывод результата t=a+b;
cout << “a+b=” << t << endl;
t=a-b;
cout << “a−b=”; cout << t; cout “\n”;
t=a*b;
cout << “a*b=” << t << endl;
t=a/b;
cout << “a:b=” << t << endl;
cout << “Nagmite 0 dla vyhoda”; cin >> a;
return 0;
}
Рис. 2. Код модуля
8
6.Переключится в «Проводник» (или запустить его при необходимости), и открыв содержимое папки своей группы убедиться в появлении файла
UnitLab1.cpp.
7.Переключиться в среду С++ Builder 6.0 и просмотреть изменения в окне менеджера проекта.
8.Сохранить проект с именем ProjectLab1 в папке своей группы.
9.Просмотреть изменения в окне менеджера проекта.
10.Переключится в «Проводник» (или запустить его при необходимости) и
убедиться в появлении файлов ProjectLab1.bpr, ProjectLab1.bpf, ProjectLab1.res.
11.Вернуться в среду С++ Builder 6.0 и запустить проект (Run Run или клавиша F9 или кнопка на панели инструментов). Если ошибок нет, программа запуститься на выполнение. При наличии ошибок в наборе – устранить их и вновь выполнить п. 11.
12.Пронаблюдать выполнение программы, вводя различные исходные данные (для каждых новых исходных данных выполнять п. 11).
13.В блоке расчета и вывода результата убрать все символы «<< endl», запустить программу, просмотреть результат, сделать вывод о цели этих символов. Вернуть строки блока вывода результат в исходное состояние.
14.В блоке ввода исходных данных в строке cout << “Vvedite dannye dla arifmeti4eskih deystvij\n”; убрать символы «\n», запустить программу, просмотреть результат, сделать вывод о цели этих символов. Вернуть строку cout << “Vvedite dannye dla arifmeti4eskih deystvij\n”.
15.Сравнить способ вывода суммы и разности, выбрать наиболее удобный для себя.
16.Сохранить файл модуля.
Упражнение 2. Второе консольное приложение
1.Создать новый консольный проект.
2.В файле модуля набрать код, представленный на рис. 3 (следите за тем, чтобы автоматически сгенерированные строки не дублировались!).
3.Нарисовать схему алгоритма программы.
4.Сохранить проект с именем ProjectUpr2, а файл модуля с именем
UnitUpr2.
9
//программа вычисления высот треугольника со сторонами a, b, c //служебные команды с++
#include <vcl.h> #pragma hdrstop #pragma argsused
//подключение библиотек
#include <iostraem.h>
#include <math.h> //необходим для вычисления квадратного корня
int main(int argc, char* argv[])
{
//объявление переменных
float a, b, c;// исходные данные - стороны треугольника float p; // периметр треугольника
float t; //рабочая переменная
float ha, hb, hc //искомые высоты треугольника
//ввод исходных данных
cout << “Vvedite storony treugolnika\n”; cout << “а=”; cin >> a;
cout << “b=”; cin >> b; cout << “c=”; cin >> c;
//расчет p=(a+b+c)/2;
t=2*sqrt(p*(p-a)*(p-b)*(p-c))) ha=t/a; hb=t/b;
//вывод результатов
cout << “Resultat rasheta:”; cout << “hа=” << ha << endl; cout << “hb=” << hb << endl; cout << “hc=” << ha << endl; cout << “Nagmite 0 dla vyhoda” cin >> a;
return 0;
}
Рис. 3. Код модуля
10