Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 1 / Лабораторная работа №1_Токарев_0421

.docx
Скачиваний:
0
Добавлен:
26.06.2025
Размер:
297.36 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Электротехнологической и преобразовательной техники

отчет

по лабораторной работе № 1

по дисциплине «Информационные технологии»

Тема: Знакомство со средой программирования С++ Builder

Студент гр. 0421

Токарев А.А.

Преподаватель

Чмиленко Ф.В.

Санкт-Петербург

2021

Цель работы: получение базовых навыков разработки программного обеспечения в среде программирования C++ Builder.

Задания:

  1. Создание каталогов

  2. Создание проекта

  3. Написание кода программы в стиле языка С

  4. Компиляция, построение и запуск программы

  5. Доработка программы

  6. Работа с кириллицей

  7. Создание проектной группы

  8. Написание кода программы в стиле языка С++

  9. Поиск и исправление синтаксических ошибок в программе

Дополнительные задания:

  1. Онлайн компиляторы

  2. Другие среды разработки

Ход работы:

Задание 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++ не так хороша для этих задач. С другой стороны, при выполнении данной лабораторной работы, почти нет разницы между двумя этими приложениями, так как консольное приложение, которое мы пишем, является очень простым и не требует продвинутого функционала от компилятора.