ЖУРНАЛ
Дисциплина: «Специальный раздел информатики»
Студент: Никонов А.А.
Группа: БТК15
Преподаватель: Шакурский М. В.
г.о. Тольятти
Лабораторная работа №1. Установка и разбор среды разработки NetBeans
Цель работы: подробно разобрать принцип установки среды разработки NetBeans, разобрать принципиальные проблемы настройки среды программирования и их решения.
Выполнение:
Установка вспомогательных средств Java:
Первых делом, прежде чем приступать к установке самого программного продукта NetBeans, необходимо установить некоторое программное обеспечение. Из программного обеспечения необходимым и единственным дополнительным программным обеспечением является комплект разработчика Java (JDK). Программное обеспечение находится в свободном доступе, поэтому его можно загрузить напрямую с веб-сайта разработчика https://www.oracle.com/. (см. рис. 1).
Рисунок 1. Получение пакета JDK
Дистрибьюция продукта не вызываем множество проблем, поэтому не стоит акцентировать внимание на ней. Стоит отметить, что если целевой изучаемый язык является PHP/C++/C, то так же необходимым программным обеспечением является MinGW (minimalist GNU for Windows). Задача этого коплекса программных средств – адаптировать разработку для операционной системы Windows. Программное обеспечение так же в бесплатном доступе, поэтому свободно переходим на веб-сайт разработчика https://sourceforge.net/ (см. рис. 2) и скачивает утилиту автоматического скачивания программы. Да, разработчик позаботился о том, что бы количество проблем при установке свелось к минимумом и предоставил возможность установить только интеллектуальную утилиту, которая, в свою очередь, самостоятельно скачает актуальную версию программного обеспечения и установить ее на наш персональный компьютер.
|
Рисунок 2. Веб сайт разработчика MinGW
После активации скаченного исполнительного файла программа исключительно спросит, какие пакеты (см. рис. 3) и куда их устанавливать (см рис. 4).
Рисунок 3. Процесс распаковки основных файлов лаунчера.
Рисунок 4. Процесс установки плагинов для разработки под PHP/C++/C
Тем временем, пока скачиваются дополнительные пакеты необходимо проверить, готов ли персональный компьютер работать с MinGW. В свойствах компьютера на вкладке "Дополнительно" кликните по кнопке "Переменные среды" (см. рис. 5).
Рисунок 5. Свойства системы по переменным средам
Нам потребуется значение переменной PATH, там должны быть прописаны пути к папкам с исполняемыми файлами MinGW и MSYS, в данном случае это директории "C:\MinGW\bin" и "C:\MinGW\msys\1.0\bin".
Если эти значения не были автоматически добавлены в переменную в процессе установки, допишите их вручную, добавьте в начало строку "C:\MinGW\bin;C:\MinGW\msys\1.0\bin;", только без кавычек.
На этом установка дополнительного программного обеспечения завершена. Перейдем, непосредственно, к установке среды разработки.
Установка среды разработки NetBeans:
Сама среда разработки распространяется бесплатно и вы можете скачать ее с официального веб-сайта разработчика https://netbeans.org/. Установка не занимает много времени и не вызывает трудностей у среднестатистического пользователя, поэтому не будем акцентировать внимание на этом, а перейдем непосредственно к настройке самой среды разработки. Запускаем среду разработки и в главном меню переходим в пункт Сервис, далее Подключаемые модули. В открывшемся окне (см. рис. 6) переходим во вкладку доступные модули. Так как целевым для изучения языком программирования является C++, то нам необходимы библиотеки для работы с C++. Устанавливаем все плагины с пометкой C++.
|
Рисунок 6. Окно установки дополнительных плагинов
Настройка компилятора и консоли вывода:
Дополнительные настройки для компилятора вы можете задать, если в корне программы (см. рис. 7) правой кнопкой нажмете на имени проекта. Отроется окно настройки приложения (см. рис. 8). Здесь вы можете задавать уникальные настройки для каждого отдельно взятого приложения.
Рисунок 7. Файловый каталог приложения
Рисунок 8. Дополнительные настройки для индивидуального приложения.
В целом мы разобрали все, что необходимо знать об установке среды разработки. Если вы неукоснительного двигались по всем вышеперечисленным этапам, то у вас не должно возникнуть каких либо проблем с установкой как дополнительного программного обеспечения, такой и самой среды разработки.
Вывод: Установили среды программирования NetBeans, настроили компилятор и консоль вывода, а так же разобрали часто встречаемые проблемы при дистрибьюции среды разработки.
Лабораторная работа №2. Разработка приложений на базе языка программирования C++
Цель работы: Получить навыки создание простого приложения на базе языка программирования C++
Задача № 2.1: Создать приложение с выводом строки «Hello wold». Закрепить листинг программы и пояснение к коду. Предоставить отчет по работе приложения.
|
К нашей радости создавать приложение целиком и полностью нам не придется, поскольку среда разработки NetBeans предоставляет нам пример приложение на базе языка C++ с названием «Приветствие» (см. рис. 9)
Рисунок 9. Окно создания приложения
Приведу листинг программы (см. таб. 1) и отчет выполнения (см. рис. 10):
Таблица 1. – листинг программы «Hello world»
#include <iostream> int main() { std::cout << "Hello World" << std::endl; return 0; } | Подключение основной библиотеки |
Создание базовой функции без аргументов | |
Начало описания функции | |
Вывод строки приветствия | |
Проверка на завершенности описания | |
Завершения описания функции |
Рисунок 10. Принцип применения листинга программы «Hello world!»
Задача № 2.2: Создать приложение по выводу стихотворения на экран. Закрепить листинг программы и пояснение к коду. Предоставить отчет по работе приложения.
За базу возьмем приложение из предыдущей задачи, но теперь заменим текст на строки Александра Пушкина из стихотворения «Желание». Если просто добавить строки друг за другом, то мы получим слитный текст. Что бы избежать подобного, можно поступить несколькими путями. Первый, самый неоптимальный вариант – перечислять строки подряд (см. рис. 11)
Рисунок 11. Пример неоптимального листинга программы по выводу большого количества строк
Второй метод (который выглядит более оптимальным в пользу простоты кода) - после каждой строчки добавлять универсальный языковой слоган «\n» (см. рис. 12). Компилятор, каждый раз доходя до этого знака, будет сносить последующие за ним символы с новой строки.
Рис. 12. Листинг оптимального кода приложения по выводу стихотворного текста на экран
Приведу пример работы компилятора в обоих случаях (см. рис. 13)
Рис. 13. Результат работы приложения по стихотворного текста
Вывод: Получили базовый навык создания приложений на базе языка C++. Создали несколько программ, работающих как вывод текстовой информации.
Лабораторная работа №3. Переменная. Виды переменных. Простые программы
Цель работы: изучить типы переменных, с которыми работает язык программирования C++. Реализовать программу простого вычисления.
В языке С++ все переменные имеют определенный тип данных. Например, переменная, имеющая целочисленный тип не может содержать ничего кроме целых чисел, а переменная с плавающей точкой — только дробные числа.
Тип данных присваивается переменной при ее объявлении или инициализации. Ниже приведены основные типы данных языка C++, которые нам понадобятся (см. таб. 2).
Таблица 2. Типы данных
Обозначение переменное | Обрабатываемые данные | Границы переменной |
Int | Целочисленный тип данных | -2 147 483 648 2 147 483 647 |
Float | Тип данных с плавающей запятой | -2 147 483 648.0 2 147 483 647.0 |
Double | Тип данных с плавающей запятой повышенной точности | -9 223 372 036 854 775 808.0 9 223 372 036 854 775 807.0 |
Char | Символьный тип данных | 0 / 255 |
Bool | Логический тип данных | 0 / 255 |
Объявление переменной в C++ происходит таким образом: сначала указывается тип данных для этой переменной а затем название этой переменной.
Реализуем работу простого калькулятора, выполняющего функцию сложения.
Приведу листинг программы с пояснением (см. рис. 14) и результат работы компилятора (см. рис. 15).
Это была простая программа. Однако, зачастую встречаются случае, когда калькулятор необходимо расширить до выполнения сложных операций, такие как вычисление косинуса или синуса. Если мы попытаемся просчитать все это программно, компилятор, несомненно, выдаст ошибки. Для выполнения сложных операций существует специально отведенная библиотека «math.h». Рассмотрим эту библиотеку, преобразую предыдущую программу от сложения к вычислению степени (см. рис. 16) и рассмотрим ее работу (см. рис. 16)
Рисунок 14. Листинг программы простого калькулятора
Рисунок 15. Пример выполнения программы простого калькулятора
Рисунок 16. Листинг и пример работы программы сложной функции
Вывод: Получили навыки работы с математическими операциями над разными типами переменных, а так же навык использования разных библиотек.
Лабораторная работа №4. Условие. Использование условных операторов
Цель работы: Изучить структуру построения условных операторов. Приобрести навыки решения задач с помощью условного оператора.
Задача № 4.1: Написать программу ветвления на основе оператора if, определяющую корректное слово – приставку к возрасту человека (год / лет) до 99 лет.
Прежде чем приступить к работе над программой уделим пару минут на осмотр задачи и возможных вариаций (см. таб. 3) Из вышеупомянутой таблицы видно, что все приставки идут поочередно, однако, если перечислять все это, то программа будет работать медленно. Задумаемся об оптимизации кода.
Таблица 3. Условия использования приставок
Интервалы | Приставка |
Все значения, в составе которых число единиц в интервале от 2 до 4 включительно (2,3,4,22,23,24 и т.д.) | «Года» |
Все значения, в составе которых число едениц равно 0 или в интервале от 25 до 29 включительно | «Лет» |
Оптимизация будет достигнута подключением библиотеки из предыдущей лабораторной работы «math.h». Среди ее операций есть функция «остаток отделения». Приведу листинг программы (см. рис. 17) и принцип ее работы (см. рис. 18).
Так же существует еще один условный оператор. Обычно его называют «переключатель», или с английского «switch». Что бы не вдаваться в теоретические особенности работы этого условного оператора, давайте лучше решим простую задачу.
Задача № 4.2: Написать программу простого калькулятора с возможностью выбора действий над двумя числами.
Рисунок 17. Листинг программы определения приставки возраста
Рисунок 18. Пример работы программы добавления приставки возрасту
Для выполнения этой задачи заранее оговорю, что выполняемое действие мы будет считывать как кодировку. В данном случае 1 – сложение, 2 – вычитание, 3 – умножение. Приведу листинг (см. рис. 19) и пример работы программы(см. рис. 20):
Рисунок 19. Листинг многозадачного калькулятора
Рисунок 20. Пример работы программы многозадачного калькулятора
Вывод: Изучили структуру построения условных операторов. Приобрели навыки решения задач с помощью условного оператора.
Лабораторная работа №5. Написание сложных программ
Цель работы: на основе полученных ранее знаниях выполнить предложенные задачи по построению сложных приложений на базе языка C++.
Задача №5.1.: Написание строкового калькулятора(см. рис.), реализующего распознавание математического выражения вида (см. рис.):
_ _ + _ _ =
Приведу листинг и пример работы программы (см. рис. 21).
Рис. 21. Процесс выполнения и листинг задание один
Задача №5.2.: Реализовать программу подсчитывающую количество ударов мячика о стенки прямоугольного поля, до его попадания в угол. Мячик вылетает из левого нижнего угла поля, под углом 45 градусов. Размеры поля задаются пользователем в виде двух целочисленных величин
Приведу листинг (см. рис. 22). и пример работы программы (см. рис. 23).
Рис. 22. Листинг программы для задания номер два
Рис. 23. Пример выполнения задания номер два.
Вывод: Закрепил полученные ранее знания и выполнил задачи по построению сложных приложений на языке C++.
Лабораторная работа №6. Матрицы
Цель работы: получить знания по созданию и работе с матрицами на базе языка программирования С++.
Задача №6.1.: Написать программу реализующую транспонирование матрицы.
Приведу листинг (см. рис. 24) и пример (см. рис. 25) работы программы.
Рис. 24. Листинг программы номер один
Рис. 25. Пример выполнения задания номер один
Задача №6.2.: Написать программу выводящую на экран наибольшее и наименьшее значение массива.
Рис. 26. Листинг программы для задания два
Рис 27. Пример выполнения задания номер два
Вывод: получил знания по созданию и работе с матрицами на базе языка программирования С++.
Лабораторная работа №7. Функции и процедуры
Цель работы: получить навыки по работе с процедурами и функциями на базе языка С++.
Задача №7.1.: Переписать работу № 5 (строковой калькулятор), с применением функций и процедур для минимизации кода процедуры main (см. рис. 28).
Рис. 28. Пример и листинг задания для седьмой работы.
Вывод: получил навыки по работе с процедурами и функциями на базе языка С++.
Лабораторная работа №8. Структуры
Цель работы: получить навыки по созданию и работе с собственным видом данных на базе языка программирования С++.
Задача №7.1.: Создать собственный тип данных и организовать ввод/вывод данных.
Структура
Код | Пояснения |
struct Base{ | Объявление структуры и начало ее описания |
char Name[15]; | Текстовая переменная для «Наименования» |
float kol; | Переменная для «Количество» |
float money; | Переменная для «Цена» |
float smoney; | Переменная для «Суммарная стоимость» |
int smnp; | Переменная для «Среднемесячная норма» |
}mbase[cl]; | Завершение описания и создание массива на базе переменных |
Основная программа
Код | Пояснения |
void main() { | Обозначение новой функции и начало ее описания |
setlocale(LC_ALL, "Russian"); | Задание языка ввода/вывода информации |
int k; | Объявление переменных |
do{ | Начало цикла с постусловием |
cout<<"\n"; | Снос на следующую строку |
cout<<"0 - добавить изделия в реестр склада"<<"\n"; | Создание консольного меню для выбора необходимой задачи в соответствии с введенным целочисленным кодом в переменную k. |
cout<<"1 - сведений о деталях, суммарная стоимость которых наибольшая"<<"\n"; | |
cout<<"2 - информация об общем содержании склада"<<"\n"; | |
cout<<"3 - закрыть приложение"<<"\n"; | |
cout<<"Пожалуйста, выбирите код нужной операции: "; | |
cin>>k; | |
switch (k) { | Ветвление в соответствии с выбранным кодом. В соответствии с кодом запускается та или иная функция. |
case 0: AddItem(); break; | |
case 1: Func1(); break; | |
case 2: Func2(); break; | |
case 3: exit(0); break; | |
default:break; }} | Завершение ветвления |
while (k!=3); } | Проверка, что программа завершится только при условии, что выбран пункт и кодом «3» |
Функция добавления элементов
Код | Пояснение |
void AddItem(){ | Обозначение новой функции и начало ее описания |
setlocale(LC_ALL, "Russian"); | Разрешение консоли использовать кириллицу для ввода/вывода |
int k; | Объявление переменных |
cout<<"Введите количество добавляемых наименований: "; | Обозначение, сколько наименований планируется добавить |
cin>>k; | Запись в переменную количества |
cout<<"\n"; | Снос на новую строку |
for (int i=0;i<k;i++){ | Начало перебирания позиций в массиве mbase[] в соответствии с структурой |
cout<<"Наименование изделия: "; cin>>mbase[k].Name; | Запись в «Наименование» |
cout<<"Количество изделий: "; cin>>mbase[k].kol; | Запись в «Количество» |
cout<<"Цена одного изделия: "; cin>>mbase[k].money; | Запись в «Цена» |
cin>>mbase[k].money; mbase[k].smoney=mbase[k]. kol*mbase[k].money; cout<<"Среднемесячный оборот: "; cin>>mbase[k].smnp; | Нет смысла отдельно указывать общую стоимость, поэтому внесем только «Среднемесячный оборот», а общую сумму будем подсчитывать по произведению «Количество» на «Цена» |
cout<<"\n";}} | Снос на новую строчку, что бы избежать слитности при вводе большого количества наименований и завершение описания функции |
Информация об общем количестве всех деталей на складе
Код | Пояснение |
void Func2(){ | Обозначение новой функции и начало ее описания |
setlocale(LC_ALL, "Russian"); | Разрешение консоли использовать кириллицу для ввода/вывода |
float kkol, kssumm; | Объявление переменных |
kkol=0; | Обнуление новых переменных |
kssumm=0; | |
for (int z=0;z<cl;z++){ | Начало перебирания позиций в массиве mbase[] в соответствии с структурой. |
if (mbase[z].money!=0){ | Выводить только не пустые строки |
cout<<z<<": "<<mbase[z].Name<<" "<<mbase[z].kol<<" шт."<<" "<<mbase[z].money<<" руб./шт."; cout<<" "<<"итого: "<<mbase[z].smoney<<" руб."<<" "<<"Оборот: "; cout<<mbase[z].smnp<<"\n"; cout<<"___________________________________________\n"; | Вывод информации по каждой позиции в массиве mbase[] в привлекательном для глаза виде. |
kkol=kkol+mbase[z].kol; kssumm=kssumm+mbase[z].smoney;}} | Запись общего количества товаров и сумм |
cout<<"Общее количество изделий: "<<kkol<<"шт."<<endl; cout<<"Сумма всех изделий на складе: "<<kssumm<<" руб."<<endl;} | Отдельный вывод общей суммы и общего количества товаров |
Рис. 29. Работа главной функции
Рис.30. Функция добавления элементов
Рис. 31. Информация об общем количестве всех деталей на складе
Вывод: получил навыки по созданию и работе с собственным видом данных на базе языка программирования С++.