
Лаба 1 / Лабораторная работа №1_Токарев_0421
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Электротехнологической и преобразовательной техники
отчет
по лабораторной работе № 1
по дисциплине «Информационные технологии»
Тема: Знакомство со средой программирования С++ Builder
Студент гр. 0421 |
|
Токарев А.А. |
Преподаватель |
|
Чмиленко Ф.В. |
Санкт-Петербург
2021
Цель работы: получение базовых навыков разработки программного обеспечения в среде программирования C++ Builder.
Задания:
Создание каталогов
Создание проекта
Написание кода программы в стиле языка С
Компиляция, построение и запуск программы
Доработка программы
Работа с кириллицей
Создание проектной группы
Написание кода программы в стиле языка С++
Поиск и исправление синтаксических ошибок в программе
Дополнительные задания:
Онлайн компиляторы
Другие среды разработки
Ход работы:
Задание 1.
Организуем структуру каталогов для сохранения проектов. Создадим папку Projects, а в ней подпапку Lab_1 для первой лабораторной работы:
Рисунок 1 – Создание каталогов для проектов
Задание 2.
Запустим C++ Builder. Создадим консольное приложение, выберем язык программирования С++, отключив при этом мультизадачность и не подключая элементы визуальных библиотек VCL и FireMonkey:
Рисунок 2 – Создание нового консольного приложения в C++ Builder
Удалим с помощью менеджера проектов вспомогательный файл Project1PCH1.h и сохраним проект в каталоге Lab_1:
Рисунок 3 – Сохранение проекта в папке с проектами
Задание 3.
Напишем код программы в стиле языка C:
#include <stdio.h>
int main()
{
printf("Hello world!");
return 0;
}
Задание 4.
Скомпилируем и запустим программу с помощью нажатия кнопки F9. Программа скомпилируется, выполнится и сразу закроется.
Задание 5.
Доработаем нашу программу, добавив функцию system с аргументом pause, а также подключив стандартную библиотеку:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!");
system("pause");
return 0;
}
Рисунок 4 – Работа программы после первой доработки
Чтобы разделить текст на экране на строки, добавим в текст программы управляющую последовательность \n:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
system("pause");
return 0;
}
Рисунок 5 – Работа программы после второй доработки
Задание 6.
Сделаем так, чтобы наша программа могла выводить кириллицу. Для этого воспользуемся функцией system с параметром кодировки chcp 1251:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("chcp 1251");
printf("Hello world!\n");
printf("Привет Мир!\n");
system("pause");
return 0;
}
Рисунок 6 – Вывод кириллицы
Задание 7.
Создадим еще один проект внутри этой же проектной группы и сохраним его под именем Lab1_2:
Рисунок 7 – Создание второго проекта в той же проектной группе
Задание 8.
Напишем код программы в стиле языка С++:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
system("chcp 1251");
cout << "Hello World!" << "\n";
cout << "Привет Мир!" << endl;
system("pause");
return 0;
}
Рисунок 8 – Работа программы в стиле С++
Задание 9.
Закомментируем первую строчку программы, внеся ошибку в текст программы. Компилятор выведет следующее сообщение об ошибке:
Рисунок 9 – Вывод сообщений об ошибках
Проанализировав сообщения об ошибках, можно сделать вывод, что компилятор жалуется на использование необъявленных идентификаторов cout и endl в соответствующих строках кода. Очевидно, что ошибки выводятся потому, что мы не подключили заголовочный файл iostream, в котором находятся нужные нам сведения.
Теперь вернем программу в исходное состояние и закомментируем строчку с инструкцией using namespace std. Компилятор выведет следующие сообщения об ошибках:
Рисунок 10 – Вывод сообщений об ошибках
Проанализировав сообщения об ошибках, можно сделать вывод, что компилятор жалуется на использование необъявленных идентификаторов cout и endl в соответствующих строках кода. В данном случае ошибки в программе возникают по причине того, что мы не используем стандартное пространство имен std, в котором как раз и содержатся сведения об этих идентификаторах.
Теперь вернем программу в исходное состояние и удалим строчку с запятой после следующей строки в программе, написанной на языке С:
printf("Привет Мир!\n")
Компилятор выведет следующее сообщение об ошибке:
Рисунок 11 – Вывод сообщения об ошибке
Проанализировав сообщение об ошибке, можно сделать вывод, что компилятор примерно понимает структуру кода и видит, в каком месте должна стоять точка с запятой, но не стоит.
Дополнительное задание 1.
Протестируем работу программ, написанных на языке С и С++ в двух онлайн компиляторах:
https://ideone.com/ и https://www.onlinegdb.com/online_c++_compiler:
Рисунок 12 – Результат работы программы на языке С в онлайн компиляторе https://ideone.com/
Рисунок 13 – Результат работы программы на языке С в онлайн компиляторе https://www.onlinegdb.com/online_c++_compilеr
Рисунок 14 – Результат работы программы на языке С++ в онлайн компиляторе https://ideone.com/
Рисунок 15 – Результат работы программы на языке С++ в онлайн компиляторе https://www.onlinegdb.com/online_c++_compilеr
Теперь проверим, как онлайн компиляторы выводят ошибки. Внесем ошибки в наши программы, закомментировав первую строчку в программе на языке С++ и убрав символ точки с запятой в конце одной из строчек кода в программе на языке С:
Рисунок 16 – Вывод сообщений об ошибках в работе программы на языке С++ в онлайн компиляторе https://ideone.com/
Как мы можем видеть, сам онлайн компилятор предполагает, что мы забыли включить в код программы заголовочный файл <iostream>, что является довольно удобным.
Рисунок 17 - Вывод сообщений об ошибках в работе программы на языке С в онлайн компиляторе https://www.onlinegdb.com/online_c++_compilеr
В данном случае, текст ошибки, выводимый в онлайн компиляторе, полностью соответствует тексту ошибки, выводимому в С++ Builder.
Дополнительное задание 2.
Создадим новый проект в среде разработки Dev C++, запишем в него текст программы, выводящей на экран две фразы: “Hello World!” и “Привет Мир!” и скомпилируем его и запустим:
Рисунок 18 – Выполнение программы в среде Dev C++
Выводы:
В данной лабораторной работе были изучены базовые возможности среды разработки C++ Builder. Был создан каталог для хранения проектов, созданных в результате работы по дисциплине «Информационные технологии», в этом каталоге была создана проектная группа, содержащая два проекта – один на языке С, второй – на языке С++, оба проекта были скомпилированы и запущены. В папке с проектами в итоге были созданы следующие файлы:
-Labs1.grouppro – файл, содержащий информацию о проектной группе;
-Lab1.cbpro, Lab1_2 .cbpro – файлы, содержащие информацию о проектах;
-Lab1.cpp, Lab1_2.cpp – файлы с текстом программ;
Помимо этих файлов, в каталоге с проектами были созданы следующие подкаталоги:
-_history, содержащий два файла: Lab1.cpp.~1~ и Lab1_2.cpp.~1~;
- пустой подкаталог _recovery;
- пустой подкаталог __astcache;
Оба проекта выводили надпись «Hello World!». В ходе выполнения лабораторной работы, оба проекта были дополнены так, чтобы выводить надпись «Привет Мир» на кириллице. Соответственно, в ходе работы над проектами были изучен общий вид программ на языках С и С++, вывод данных в консоли на языках С и С++, установка системной паузы, работа с кодировкой 1251, которая позволяет использовать кириллицу в выводе на консоль. Также были изучены некоторые сообщения об ошибках, возникающие при отсутствии подключения библиотеки ввода/вывода <iostream>, при отсутствии использования стандартного пространства имен std, а также при отсутствии в конце строки символа точки с запятой.
В ходе выполнения дополнительных заданий к данной лабораторной работе были изучены базовые возможности и проведено сравнение двух онлайн компиляторов - https://www.onlinegdb.com/online_c++_compilеr и https://ideone.com/. Оба компилятора являются универсальными, имеется возможность скомпилировать и запустить программу на большом количестве языков программирования, хотя в компиляторе Ideone количество языков программирования, среди которых можно выбрать, значительно больше. С другой стороны в компиляторе OnlineGDB больше возможностей в плане тестирования программы, есть режим отладки, есть возможность поставить точки разрыва в программе и тестировать её по частям. Также в компиляторе OnlineGDB есть функция beautify code, с помощью которой можно сделать свой код более кратким и удобочитаемым, если такая возможность есть. Компилятор Ideone, в свою очередь является более «легким» и занимает меньше места в оперативной памяти компьютера. Таким образом, сравнивая два компилятора можно сделать вывод о том, что онлайн компилятор Ideone больше подходит для простых программ, не требующих серьезной отладки, а компилятор OnlineGDB больше подходит для более громоздких программ, благодаря своим относительно широким(для онлайн компилятора) возможностям в плане отладки и тестирования программ.
Также, при выполнении дополнительных заданий в данной лабораторной работе, было проведено сравнение базовых возможностей при создании консольных приложений в двух средах разработки – C++ Buider и Dev C++. Программная среда разработки C++ Builder имеет возможность создания проектных групп, чего нет в Dev C++, что является достоинством при создании больших проектов. Помимо этого, C++ Builder имеет более развернутый интерфейс, сразу на главном окне можно увидеть, например, какие библиотеки подключены к тому или иному проекту, можно поменять статус проекта с отладки на выпуск, посмотреть, для какой платформы проект предназначается, и т.д. Таким образом, можно сделать вывод о том, что cреда разработки C++ Buider больше подходит для работы над большими проектами, тогда как Dev C++ не так хороша для этих задач. С другой стороны, при выполнении данной лабораторной работы, почти нет разницы между двумя этими приложениями, так как консольное приложение, которое мы пишем, является очень простым и не требует продвинутого функционала от компилятора.