методичка с++. Лабораторные работы по программированию в среде С Builder 0
Скачать 1.64 Mb.
|
1 МИНОБРНАУКИ РОССИИ ______________________________________ Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» ______________________________________ Лабораторные работы по программированию в среде С++ Builder 6.0 Санкт-Петербург 2017 2 Авторы: Андреева О. М., Григорьев Е. Б., Маркелов О. А., Хачатурян А. Б. Лабораторные работы по программированию в среде С++ Builder 6.0: учебно- методическое пособие. СПбГЭТУ «ЛЭТИ», 2017. 77 с. Лабораторные работы, включенные в состав лабораторного практикума, соответствуют рабочей программе дисциплины «Информатика». Позволяют изучить создание приложений с консольным и оконными приложениями на языке программирования С++. Предназначены для студентов бакалавриата, обучающихся по направле- ниям 11.03.01 "Радиотехника" и 11.03.02 "Инфокоммуникационные техноло- гии и системы связи", а также студентов специалитета, обучающихся по спе- циальности 11.05.01 "Радиоэлектронные системы и комплексы". Одобрено Методической комиссией факультета радиотехники и телекоммуникаций в качестве учебно-методического пособия ©СПбГЭТУ «ЛЭТИ», 2017 3 Введение Лабораторные работы, включенные в состав предлагаемого пособия, выполняются в рамках аудиторных занятий на дисциплине «Информатика» и служат для освоения языка программирования С++, проектирования кон- сольных и оконных приложений. Материал методических указаний к лабораторным работам строится по следующему принципу: рассматриваемая тема разбивается на несколько час- тей. Каждая часть состоит из раздела теоретических сведений и одного или нескольких упражнений. Теоретические сведения содержат необходимый объем информации, который знакомит обучающегося с новым материалом и на основании которой далее будет необходимо выполнить предлагаемые уп- ражнения. Каждое последующее упражнение или пример предполагает, что уча- щийся использует знания, полученные при выполнении предыдущих лабора- торных работ или упражнений. В некоторых примерах и упражнениях авто- рами сознательно внесены ошибки в указаниях к выполняемым действиям. Нахождение подобных ошибок и самостоятельное их исправление является признаком достойной проработки излагаемого материла и приветствуется. В связи с этим крайне не рекомендуется пропускать теоретический материал: учащемуся следует сначала изучить теоретический фрагмент, и лишь после этого переходить к выполнению практической части. Результат практически каждой лабораторной работы предлагается со- хранить, при этом, как правило, указывается имя, а иногда – и местоположе- ние для сохраняемого файла. Рекомендуется не нарушать заданные парамет- ры сохранения, поскольку некоторые упражнения базируются на ранее вы- полненных с использованием сохраненных в них результатов. Ряд лабораторных работ предполагает использование заранее подготов- ленных электронных материалов (файлов). В случае самостоятельного вы- полнения лабораторных работ вне учебной лаборатории для получения мате- риалов-заготовок следует обратиться к преподавателю. 4 ЛАБОРАТОРНАЯ РАБОТА №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. 5 Рис. 1. Возможный вид интерфейса среды программирования В 99% случаев эти файлы не подлежат коррекции пользователем. Однако, можно просмотреть головной файл проекта, выполнив Project View Source. Каждый проект состоит из модулей. Каждый модуль содержит ис- ходный текст логического блока программы на языке C++ и пред- ставляет собой файл с расширением *.срр. Для каждого модуля сре- да C++ Builder автоматически создают еще один отдельный файл с расширением *.h. Это так называемый заголовочный файл модуля. Как правило, все изменения в заголовочный файл и файл проекта вносятся средой C++ Builder автоматически. При создании нового консольного проекта один модуль создается автоматически. Остальные модули добавляются по желанию пользова- теля в процессе работы над проектом. Для создания нового проекта: File New Application. Для открытия существующего проекта: File Open Project. Для открытия существующего модуля: File Open…. Для сохранения файла модуля: File Save. Палитра компонентов Редактор кода Панель инструментов 6 Для сохранения файла модуля с другим именем: File Save Аs…. Для сохранения головного файла проекта с другим именем или для сохранения вновь созданного головного файла проекта: File Save Project As…. III. При создании нового консольного приложения в файле моду- ля находится минимальная программа, созданная мастером консоль- ного приложения. Пользовательский код программы вводится как до- полнение к этому минимальному коду. Программа на С++ всегда состоит из набора функций. В консоль- ном приложении начальной точкой выполнения программы является функция main, заголовок и тело которой генерируется средой про- граммирования автоматически при создании нового консольного при- ложения. Для консольного приложения выполнение программы начинается с первого оператора, находящегося в теле функции main. Из этой функции могут вызываться другие функции программы, которые могут находиться как в этом же, так и в других модулях. Завершается выполнение программы, как правило, в конце функции main по опе- ратору return, хотя по разным причинам оно может завершаться и в других местах программы. IV. Если функция описана в другом модуле, то, для ее исполь- зования модуль должен быть подключен к текущему модулю. Для под- ключения модуля используемся директива #include. Формат директи- вы: #include <ИмяФАйла> V. Для организации ввода/вывода информациии при работе с кон- сольным приложением на лабораторных занятиях будут использовать- ся встроенные объекты ввода/вывода, описанные в модуле iostream.h (поставляется вместе со средой программирования). Со- ответственно, этот файл будет необходимо подключать к каждому создаваемому консольному приложению (см. п. IV). При подключении этого файла в программе автоматически созда- ются виртуальные каналы связи cin (читается как «си-ин») – для ввода с клавиатуры и cout (читается как «си-аут») - для вывода на экран, а также операции помещения в поток << и чтения из потока >>. Формат команды для ввода значения переменной с клавиатуры: cin >> ИмяПеременной; 7 Если необходимо ввести значения несколько переменных, допус- тимо многократно повторять вышеприведенную команду, или спользо- вать следующий формат команды ввода: 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. 8 //программа простейших вычислений //служебные команды с++ #include #pragma hdrstop #pragma argsused //подключение библиотек #include { //объявление переменных 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. Код модуля 9 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. 10 //программа вычисления высот треугольника со сторонами a, b, c //служебные команды с++ #include #pragma hdrstop #pragma argsused //подключение библиотек #include #include необходим для вычисления квадратного корня 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. Код модуля 11 5. Откомпилировать исходный текст программы. 6. Если появились сообщения об ошибках, проанализировать их, внося не- обходимые коррективы. 7. Запустить программу на исполнение, проверить правильность работы на тестовом примере. 8. Сохранить проект и модуль. Содержание отчета: 1. Титульный лист 2. Цель работы 3. Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.) 4. Коды модулей и проектов. 5. Копии экрана с примерами работы программ 6. Схемы алгоритмов программ. 6. Выводы по работе. Контрольные вопросы 1. Объясните термин «консольное приложение». 2. Перечислите порядок действий по созданию консольного приложения в С++ Builder. 3. Перечислите файлы, входящие в состав консольного проекта. Какие у них имена? Расширения? Какие ограничения на имена этих файлов существуют? 4. Как можно просмотреть головной файл проекта? 5. Как создать новый консольный проект в С++ Builder? 6. Как открыть файл существующего проекта в С++ Builder? 7. Как просмотреть состав открытого проекта? 8. Как отрыть существующий модуль? 9. Как сохранить существующий модуль? Существующий проект? 10. Как сохранить уже существующий проект без смены его имени или ме- стоположения? со сменой? 11. Поясните термин «заголовочный файл». 12. Что такое «мастер консольного приложения»? 13. Из каких «блоков» составляется программа на С++? 12 14. Что является начальной точкой выполнения программы в консольном приложении? 15. Поясните назначение функции main. 16. Для какой цели служит инструкция return в теле функции main? 17. Какие действия необходимо выполнить, чтобы использовать функцию, описанную в другом модуле? 18. Поясните цель директивы компилятора #include? Каков ее синтаксис? В каком месте программного кода она может находиться? 19. Поясните термин «встроенный модуль». 20. Какой встроенный модуль может использоваться при организации кон- сольного ввода/вывода? 21. Поясните цель и формат команды cin. 22. Поясните цель и формат команды cout. 23. Объясните термин «компиляция». 24. Какие части проекта подвергаются компиляции? 25. Какие дополнительные файлы появляются при условии успешного за- вершения процесса компиляции? 26. Перечислите способы запуска процесса компиляции. 27. Что происходит при запуске приложения на исполнение? 13 ЛАБОРАТОРНАЯ РАБОТА №2. ВОЗМОЖНОСТИ ВСТРОЕННОГО ОТЛАДЧИКА Цель работы: знакомство с понятием «отладка»; изучение возможно- стей встроенного отладчика и встроенной справки. Краткие теоретические сведения: I. Отладка – процесс поиска и устранения ошибок в программе. Встроенный отладчик – инструмент, который оказывает помощь пользователю в поиске и устранении программных ошибок. В ходе отладки программа может находиться в одном из трех со- стояний: проектирования (оформление формы и/или написание кода); вычисления (выполнения); прерывания. В этом состоянии можно проконтролировать значения переменных и свойств объектов в данной точке и, если требуется, изменить эти значения "вручную". При этом нельзя изменить поря- док выполняемых операторов, задать следующий исполняемый опера- тор, нельзя редактировать программный текст перед продолжением вычислений. |