ОТЧЕТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ №2




Основы программирования

наименование дисциплины

 

 

Вариант №13

тема (вариант)

 

 

Преподаватель __________ В.В. Тынченко

подпись, дата инициалы, фамилия

 

Студент ЗКИ20-05б032053367 __________ В.В. Ушаков

номер группы номер зачетной книжки подпись, дата инициалы, фамилия

 

Красноярск 2020

1. Цель практической работы:

Получение начальных знаний и практических навыков по разработке программ на языках С и С++.

 

2. Условия поставленной задачи:

 

2.1. Напишите программу вычисления периметра и площади прямоугольника. Длины сторон прямоугольника должны вводиться пользователем с клавиатуры, а результаты с соответствующими комментариями выводиться на экран.

2.1.1. Программный код поставленной задачи на С++ в Visual Studio 2019:

// Практическая работа №2_Упражнение 2.1_Ушаков В.В._группа ЗКИ20-05Б.cpp

//Программа "Вычисление периметра и площади прямоугольника"

 

#include<iostream>

#include<conio.h>

 

using namespace std;

int main ()

{

setlocale(LC_ALL, "Rus"); //Распознавание и вывод на экран текста в кириллице

 

//Объявление переменных

long float AB; //объявление переменной вещественного типа

long float BC; //объявление переменной вещественного типа

 

/*Ввод данных различных типов.

Проверка, что данные больше нуля*/

 

while (true)

{

cout << "Введите длину прямоугольника: ";

cin >> AB; //ввод вещественного числа

 

if (AB <= 0)

{

cout << endl;

cout << "ОШИБКА!" << endl;

cout << "Вы ввели не допустимое значение длины. Попробуйте еще раз" << endl;

cout << "Обратите внимание, что:" << endl;

cout << "- длина прямоугольника не может быть буквой или символом." << endl;

cout << "- длина прямоугольника не может отрицательным значением или равняться нулю." << endl;

cout << endl;

cout << endl;

}

else break;

}

 

while (true)

{

//cout << "Введите длину прямоугольника: ";

//cout << AB << endl; //вывод ранее введенного вещественного числа

cout << "Введите ширину прямоугольника: ";

cin >> BC; //ввод вещественного числа

 

if (BC <= 0)

{

cout << endl;

cout << "ОШИБКА!" << endl;

cout << "Вы ввели не допустимое значение ширины. Попробуйте еще раз" << endl;

cout << "Обратите внимание, что:" << endl;

cout << "- ширина прямоугольника не может быть буквой или символом." << endl;

cout << "- ширина прямоугольника не может отрицательным значением или равняться нулю." << endl;

cout << endl;

cout << endl;

}

else break;

}

 

//Вывод на экран полученных данных

cout << endl;

cout << endl;

cout << "ОТВЕТ: " << endl;

cout << "Периметр прямоугольника со сторонами " << AB << " и " << BC << " равен = " << (AB + BC) * 2 << endl;

cout << "Площадь прямоугольника со сторонами " << AB << " и " << BC << " равен = " << AB * BC << endl;

cout << endl;

cout << endl;

cout << "Нажмите любую клавишу для выхода из программы..." << endl;

cout << endl;

cout << endl;

}

 

2.2. Напишите программу, которая выводит в левом верхнем углу экрана квадрат, изображенный с использованием символа, который пользователь введет с клавиатуры (размер квадрата 3x3 символа). По нажатию любой клавиши предыдущий квадрат стирается с экрана и выводится еще один такой же квадрат со смещением на 5 позиций вправо. При следующем нажатии любой клавиши экран очищается и выводится такой же квадрат на 5 строк ниже, чем первый квадрат.

 

2.2.1. Программный код поставленной задачи на С++ в Visual Studio 2019:

 

// Практическая работа №2_Упражнение 2.2_Ушаков В.В._группа ZKI20-05Б.cpp

//Программа "Рисование квадрата 3*3 символом из вводимой переменной"

 

#include <conio.h>

#include <iostream>

#include <windows.h>

 

using namespace std;

 

int main ()

{

SetConsoleOutputCP (1251); //распознавание кириллицы при выводе...

SetConsoleCP (1251); //... и вводе данных

char a;

cout << "Введите символ: ";

cin >> a;

system ("cls"); //очистить экран

cout << a << a << a << "\n"; //перенос курсора на строку ниже...

cout << a << a << a << "\n"; //... после вывода символов

cout << a << a << a;

_getch (); //ожидание нажатия клавиши

system ("cls"); //очистить экран

cout << "\t" << a << a << a << "\n"; //табуляция до вывода символов и перенос...

cout << "\t" << a << a << a << "\n"; //... курсора на строку ниже после вывода символов

cout << "\t" << a << a << a; //табуляция курсора до вывода символов

_getch (); //ожидание нажатия клавиши

system ("cls"); //очистить экран

cout << "\n\n\n\n\n\t" << a << a << a; //перенос курсора на 5 строчек ниже и табуляция до вывода символов

cout << "\n\t" << a << a << a << "\n"; /*перенос курсора на строчку ниже и табуляция до вывода символов, а также перенос курсора на строку ниже после вывода символов*/

cout << "\t" << a << a << a; //табуляция курсора до вывода символов

_getch (); //ожидание нажатия клавиши

}

 

2.3 Составьте программу расчета и отображения накладной. Входные данные для работы программы вводятся с клавиатуры: – фамилия, имя, отчество покупателя на русском языке, разделяются пробелами и вводятся в одну строку; – сумма заказа. Программа должна запрашивать входные данные, рассчитывать сумму налога на покупку (6% от суммы заказа), стоимость транспортировки (10% суммы заказа) и общую стоимость покупки как сумму заказа, налога и транспортировки. Результаты работы программы представьте в следующем виде:

 

НАКЛАДНАЯ

__________________________________________________________________________________________________________________________________________________

 

ПОКУПАТЕЛЬ Сидоров Тимофей Андреевич

Сумма заказа 5678.78

Налог 340.73

Транспортировка 567.88

__________________________________________________________________________________________________________________________________________________

Стоимость всего 6587.38

 

2.3.1. Программный код поставленной задачи на С++ в Visual Studio 2019:

 

// Практическая работа №2_Упражнение 2.3_Ушаков В.В._группа ЗКИ20-05Б.cpp

//Программа "Программа расчета и отображения накладной"

 

#include <iostream>

#include <conio.h>

#include <windows.h>

 

using namespace std;

 

int main ()

{

SetConsoleOutputCP (1251);

SetConsoleCP (1251);

char fio [50];

long float sum;

cout << "Введите" << endl;

cout << "Фамилия Имя Отчество: " << endl;

cin.getline(fio, 50); "\n"; //Вводит переменную из нескольких слов с пробелами до конца строчки

cout << "Введите сумму заказа: ";

cin >> sum;

system("cls"); //очистить экран

 

cout << " НАКЛАДНАЯ" << endl;

cout << "----------------------------------------------------------------------------" << endl;

cout << "ПОКУПАТЕЛЬ " << fio << endl;

cout << "Сумма заказа " << sum << " рублей" << endl;

cout << "Налог " << sum * 0.06 << " рублей" << endl;

cout << "Траспортировка " << sum * 0.1 << " рублей" << endl;

cout << "----------------------------------------------------------------------------" << endl;

cout << "Стоимость всего " << sum + sum * 0.06 + sum * 0.1 << " рублей" << endl;

_getch(); //ожидание нажатия клавиши

}

 

4. Ответы на контрольные вопросы:

4.1. Дайте определение системе программирования. Какие системы программирования на языке С++ вы знаете?

 

Система программирования(СП) – это совокупность программных средств, обеспечивающих автоматизацию разработки и отладки пользовательских программ.

В настоящее время широко используются такие среды разработки программ на С++ как Microsoft Visual Studio, Embarcadero C++ Builder, Qt Creator, NetBeans, Eclipse, Xcod, Codeblocks, Dev-C++, CLion, Geany.

 

4.2. Перечислите, какие системные программы входят в состав современных систем программирования.

 

Современная СП – это довольно большой программный продукт, в котором объединяются такие системные программы как текстовый редактор (для подготовки и редактирования исходного теста программы на языке высокого уровня), интерпретатор (отладчик), компилятор, компоновщик (редактор связей, линкер), загрузчик, подсистема управления файлами и справочная система.

 

4.3. Что такое трансляция программы? В чем отличие компиляторов и интерпретаторов?

 

Трансляция — это перевод программ, записанных в терминах входного языка, на внутренний язык вычислительной машины.

Компиляторы преобразуют операторы языка в машинные коды целиком для всей программы. В результате 3 обработки исходного текста программы формируется объектный модуль, который затем может многократно выполняться после его загрузки в оперативную память. Использование компиляторов эффективно при регулярной эксплуатации уже готовых отлаженных программ, так как имеется готовый к выполнению объектный модуль, что экономит время, затрачиваемое на трансляцию, и место в оперативной памяти.

Интерпретаторы осуществляют преобразование операторов в машинные коды во время выполнения программы. После запуска программы в оперативную память одновременно загружаются исходный текст программы, написанный на языке высокого уровня, и интерпретатор, который последовательно транслирует операторы программы и сразу же их выполняет. Интерпретаторы эффективны на этапе разработки программ, так как минимизируют время на отладку.

 

4.4. Изобразите и прокомментируйте схему формирования исполняемого файла программы на языке С++.

 

Основная программная единица на языке С++ - это текстовый файл с расширением.сpp. Процесс перевода программы в машинные коды состоит из следующих этапов. Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочный файлов, в который содержатся описания используемых в программе элементов). Например, #include <iostream.h> вставляет в текст программы текст из заголовочного файла iostream.h.

В результате препроцессор изменяет исходный текст программы. Сформированный таким образом текст программы (полный текст программы) поступает на компиляцию. Компилятор, во-первых, выделяет из поступившего текста программы лексемы, а затем на основе грамматики языка распознают смысловые конструкции языка, такие как выражения, операторы, блоки операторов. В результате работы компилятора либо выдается сообщение о синтаксических ошибках, либо в случае их отсутствия формируется объектный модуль программы с расширением.obj. Объектный модуль отправляется на компоновку. Компоновщик (или редактор связей) дополняет объектный модуль нужными библиотечными функциями, обращение к которым содержится в любой программе и, если необходимо, объединяет с другими объектными модулями и формирует исполняемый модуль программы с расширением.exe.

 

 

 

4.5. Что такое директива препроцессора? Какие препроцессорные директивы использованы вами в разработанных программах? Какие действия производятся системой при выполнении этих директив?

 

Директивами препроцессора – называются команды, начинающиеся со знака # и адресованные препроцессору, которые он выполняет. В соответствии с такими командами, имеющимися в исходном тексте программы, препроцессор определенным образом изменяет этот исходный текст.

В разделе 2.1-2.3 данной практической работы использованы следующие директивы препроцессору:

#include <iostream>

#include <conio.h>

#include <windows.h>

 

4.6. Опишите общую структуру программы на языке С++.

 

Структура программ - это разметка рабочей области (области кода) с целью чёткого определения основных блоков программ и синтаксиса. Структура программ несколько отличается в зависимости от среды программирования. Разберемся на примере Microsoft Visual Studio.

 

1. //struct_program.сpp: определяет точку входа для консольного приложения (комментарий)

2. #include <stdafx.h> //здесь подключаем все необходимые препроцессорные директивы

3. int main ()

4. {

5. //здесь будет находиться наш программный код

6. }

 

В строке 1 говорится о точке входа для консольного приложения, это значит, что данную программу можно запустить через командную строку Windows указав имя программы, к примеру, такое struct_program.cpp. Строка 1 является однострочным комментарием, так как начинается с символов //. В строке 2 подключен заголовочный файл "stdafx.h". Данный файл похож на контейнер, так как в нем подключены основные препроцессорные директивы (те, что подключил компилятор, при создании консольного приложения), тут же могут быть подключены и вспомогательные (подключенные программистом).

include — директива препроцессора, т. е. сообщение препроцессору. Строки, начинающиеся с символа # обрабатываются препроцессором до компиляции программы.

Препроцессорные директивы также можно подключать и в строках, начиная после записи #include "stdafx.h" до начала главной функции. Причём такой способ подключения библиотек является основным, а использование "stdafx.h" — это дополнительная возможность подключения заголовочных файлов, которая есть только в MVS. С 4-й по 6-ю строки объявлена функция main. Строка 4 – это заголовок функции, который состоит из типа возвращаемых данных (в данном случае int), этой функцией, и имени функции, а также круглых скобок, в которых объявляются параметры функции.

int — целочисленный тип данных

Между фигурными скобочками размещается основной программный код, называемый еще телом функции. Это самая простая структура программы. Данная структура написана в Microsoft Visual Studio. Все выше сказанное остается справедливым и для других компиляторов, кроме строки 2. Контейнера "stdafx.h" нигде кроме MVS нет.

 

4.7. Каково назначение функции getch ()? В какой библиотеке она содержится?

 

Вызов функции getch() – осуществляет ввод символа с клавиатуры без эхо-отображения его на экране и возвращает числовой код введенного символа. Содержится в библиотеке #include <conio.h>.

 

4.8. Каков синтаксис определения и вызова функции в программе на языке С++?

 

Определение функции

Функция определяет действия, которые выполняет программа. Функции позволяют выделить набор инструкций и придать ему имя. А затем многократно по присвоенному имени вызывать в различных частях программы. По сути функция - это именованный блок кода.

Формальное определение функции выглядит следующим образом:

Тип имя_функции (параметры)

{

Инструкции

}

Первая строка представляет заголовок функции. Вначале указывается возвращаемый тип функции. Если функция не возвращает никакого значения, то используется тип void.

Затем идет имя функции, которое представляет произвольный идентификатор. К именованию функции применяются те же правила, что и к именованию переменных.

После имени функции в скобках идет перечисление параметров. Функция может не иметь параметров, в этом случае указываются пустые скобки.

После заголовка функции в фигурных скобках идет тело функции, которое содержит выполняемые инструкции.

Для возвращения результата функция применяет оператор return. Если функция имеет в качестве возвращаемого типа любой тип, кроме void, то она должна обязательно с помощью оператора return возвращать какое-либо значение.

Например, определение функции main, которая должна быть в любой программе на языке C++ и с которой начинается ее выполнение:

int main ()

{

return 0;

}

Возвращаемым типом функции является тип int, поэтому функция должна использовать оператор return и возвращать какое-либо значение, которое соответствует типу int. Возвращаемое значение ставится после оператора return.

Но если функция имеет тип void, то ей не надо ничего возвращать. Например, мы могли бы определить следующую функцию:

  void hello() { std::cout << "hello\n"; }

Выполнение функции

Для выполнения функции ее необходимо вызвать. Вызов функции осуществляется в форме:

  имя_функции(аргументы);

После имени функции указываются скобки, в которых перечисляются аргументы - значения для параметров функции.

Например, определим и выполним простейшую функцию:

#include <iostream>

void hello()

{

std::cout << "hello\n";

}

int main()

{

hello();

hello();

return 0;

}

Здесь определена функция hello, которая вызывается в функции main два раза. В этом и заключается преимущество функций: мы можем вынести некоторые общие действия в отдельную функцию и затем вызывать многократно в различных местах программы. В итоге программа два раза выведет строку "hello".

 

4.9. Каким образом выполняется ввод с клавиатуры и вывод на экран данных в языке С++ с использованием классов потоков ввода/вывода из библиотеки iostream?

 

Описание объектов для управления вводом-выводом содержится в файле “ iostream.h”. При подключении этого файла с помощью директивы #include <iostream.h> в программе автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока >>.

С помощью объекта cin и операции >> можно присвоить значение любой переменной. Например, если переменная x описана как целочисленная, то команда cin>>x; означает, что в переменную x будет записано некое целое число, введенное с клавиатуры. Если необходимо ввести несколько переменных, то следует написать cin>>x>>y>>z;.

Объект cout и операция << позволяет вывести на экран значение любой переменной или текст. Текст необходимо заключать в двойные кавычки. Запись cout<<x; означает вывод на экран значения переменной x.

 

4.10. Что такое идентификатор? Какие ограничения накладываются на идентификаторы в языке С++?

 

Идентификаторы- это имена переменных, функций и меток, используемых в программе. Идентификатор создается объявлением соответствующей ему переменной или функции. После этого его можно использовать в последующих операторах программы. Идентификатор- это последовательность из одной или более букв, цифр или подчерков (_), которая начинается с буквы или подчерка.

Язык C++ имеет зарезервированный набор из 84 слов для собственного использования. Эти слова называются ключевыми словами, каждое из которых имеет свое особое значение.

 

4.11. Что понимается под переменной в языке программирования?

 

Переменная в императивном программировании — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной.

 

4.12. Какие типы данных языка С++ вы знаете? Как объявить переменную в программе на языке С++?

 

Типы данных которые я знаю:

- целочисленный (логический) тип данных (bool);

- целочисленный (символьный) тип данных (char);

- целочисленные типы данных (short int, unsigned short int, int, unsigned int, long int, unsigned long int);

- типы данных с плавающей точкой (float, long float, double).

 

Объявление переменной в C++ происходит таким образом: сначала указывается тип данных для этой переменной а затем название этой переменной.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-12-05 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: