Лабораторный практикум
.pdfНиже приведена краткая запись последовательности действий при создании консольного приложения.
1.Запуск Visual Studio 2015: «Пуск->Программы->Visual Studio
2015».
2.Создание проекта: «Файл->Создать проект->Project->Win32->
Консольное приложение Win32->Имя: имя файла-> OK».
3.Установка опции простого проекта: «Далее->Пустой проект-
>Готово».
4.Создание файла с кодом программы: «Обозреватель решений->
правая кнопка мыши->Добавить->Создать элемент->Файл С++-> Имя: имя файла -> Добавить».
5.Ввод текста программы.
6.Построение проекта: «Сборка->Собрать решение или нажатием клавиши F7».
7.Выполнение приложения «Отладка->Запуск без отладки или нажатием комбинации клавиш Ctrl+F5».
Порядок выполнения работы
1.Разработать и выполнить программу в соответствии с вариантом задания.
2.Показать результаты работы преподавателю.
3.Защитить выполненную работу, объяснив назначение каждой строки программы.
4.Подготовить отчет.
Требования к отчету
Отчет должен содержать:
1)наименование лабораторной работы;
2)формулировку задания;
3)текст программы для варианта задания;
4)результат выполнения программы (скриншот).
23
Варианты заданий
Номер варианта задания соответствует номеру компьютера в компьютерном классе, на котором выполняется лабораторная работа.
№  | 
	Задание  | 
п/п  | 
	
  | 
1Разработать программу для вычисления площади треугольника по введенным сторонам a и b и углу С между ними.
S = 12 absinC
2Разработать программу для вычисления расстояния от точки
М (x1 ,y1) до прямой ax + by + c = 0.
L | ax1 by1 c | 
a2 b2
3Разработать программу для вычисления объема пирамиды по введенным площади основания S0 и высоте H.
  | 
	V  | 
	1  | 
	HS0  | 
||||
  | 
	3  | 
||||||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
|
4  | 
	Разработать программу для вычисления полной энергии реляти-  | 
||||||
  | 
	вистской частицы:  | 
	
  | 
	
  | 
	
  | 
	
  | 
||
  | 
	E  | 
	
  | 
	
  | 
	mc2  | 
|||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	,  | 
||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
||
  | 
	
  | 
	
  | 
|||||
  | 
	
  | 
	1 (v / c)2  | 
|||||
где m - масса покоя частицы; c - скорость света в вакууме; v - скорость движения
5Разработать программу для вычисления площади треугольника по введенным длине стороны a и высоте ha.
S 12 aha
6Разработать программу для вычисления объема правильного тетраэдра по введенной длине грани a.
V a3 
2 12
24
Продолжение
№  | 
	Задание  | 
п/п  | 
	
  | 
7Разработать программу для вычисления площади треугольника по введенным длинам сторон a, b, c (формула Герона).
  | 
	
  | 
	
  | 
	
  | 
	1  | 
	
  | 
|
S  | 
	p( p a)( p b)( p c) ,  | 
	p  | 
	(a b c)  | 
|||
2  | 
||||||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
||
8Разработать программу для вычисления объема усеченной пирамиды по введенным площадям оснований S, s и высоте H.
V 13 H (S 
S s s)
9Разработать программу для вычисления площади прямоугольного треугольника по введенным длинам катетов a и b .
S 12 ab
10Разработать программу для вычисления объема октаэдра по введенной длине грани a.
V a3 
2 3
11Разработать программу для вычисления кинетической энергии релятивистской частицы.
T mc 2 (  | 
	
  | 
	1  | 
	
  | 
	1) ,  | 
  | 
	
  | 
	
  | 
||
  | 
	
  | 
	
  | 
1 (v / c)2
где m - масса покоя частицы; c - скорость света в вакууме; v - скорость движения
12Разработать программу для вычисления площади правильного треугольника.
S a2 
3 4
13Разработать программу для вычисления объема икосаэдра по введенной длине грани a.
V 125 a3 (3 
5)
25
Продолжение
№  | 
	Задание  | 
п/п  | 
	
  | 
14Разработать программу для вычисления площади параллелограмма по сторонам a и b и углу α между ними.
S = ab sin
15Разработать программу для вычисления объема додекаэдра по введенной длине грани a.
  | 
	a3  | 
	
  | 
	
  | 
	
  | 
|
V  | 
	(15 7 5)  | 
||||
  | 
|||||
4  | 
	
  | 
	
  | 
	
  | 
||
16Разработать программу для вычисления площади ромба по введенным длинам диагоналей d1 и d2.
S 12 d1d2
17Разработать программу для вычисления объема цилиндра по введенным радиусу основания R и высоте Н.
V πR2 H
18Разработать программу вычисления объема конуса по введенным радиусу основания R и высоте Н.
V 13 πR2 H
19Разработать программу для вычисления площади поверхности сферы и объема шара радиусом R.
S 4πR2 , V 4πR3
3
20Разработать программу для вычисления объема шарового сектора по введенным радиусу R и высоте H.
V 23 πR2 H
21Разработать программу для вычисления площади полной поверхности шарового сектора по введенным радиусу R и высоте
H.
S πR(2H 
2RH H 2 )
26
Окончание
№  | 
	Задание  | 
п/п  | 
	
  | 
22Разработать программу для вычисления расстояния между двумя точками: (x1, y1) и (x2, y2).
L 
(x2 x1)2 ( y2 y1)2
23Разработать программу для вычисления объема усеченного конуса по введенным высоте H и радиусам оснований R и r .
V 13 πH (R2 rR r 2 )
24Разработать программу для вычисления площади правильного шестиугольника по введенному значению радиуса описанной окружности R.
S 6R2 2 sin 26π
25 Разработать программу для вычисления силы притяжения F между телами массы M1 и M2, находящимися на расстоянии R
друг от друга, если F β M1 M 2 , где гравитационная посто-
R2
янная
β = 6,673·10-8 см2/(г с2)
27
Лабораторная работа № 2
Программирование ветвящихся алгоритмов
Цель работы: изучение работы операторов ветвления при программировании ветвящихся алгоритмов; получение практических навыков программирования ветвящихся алгоритмов.
Теоретические сведения
Ветвящийся алгоритм характеризуется необходимостью выбора пути дальнейших вычислений в зависимости от некоторого условия.
Операторы ветвления. Оператор ветвления if. Реализовать ветвление на языке С++ можно с использованием оператора if.
Общий вид оператора:
if (логическое выражение) оператор1; else оператор2;
Можно использовать сокращенную форму записи:
if (логическое выражение) оператор1;
Работает оператор следующим образом. Если логическое выражение истинно, то будет выполнен оператор1, в противном случае, т.е. если логическое выражение ложно, выполнится оператор2, стоящий после ключевого слова else.
При использовании в программе сокращенной формы оператор1 выполнится, если логическое выражение истинно, если оно ложно, то управление перейдет к следующему за if оператору.
Если необходимо выполнение нескольких операторов при истинном или ложном значении логического выражения, то эти операторы заключаются в операторные скобки { } или между ними ставится запятая.
Например:
{ cout << "Верхняя формула" << endl;
28
y = sqrt(pow(tan(log(a*b*b)), 2) + a*a*pow(sin(exp(2 * x + 5)), 2));}
или
cout << "Верхняя формула" << endl,
y = sqrt(pow(tan(log(a*b*b)), 2) + a*a*pow(sin(exp(2 * x + 5)), 2));
Примеры программирования с использованием оператора if
Пример 1. Рассчитать заработную плату рабочего. Если он отработал более 40 ч., то увеличить в 1,5 раза оплату за каждый час перевыполнения.
Решение. Условие задачи можно записать следующим образом:
ЗП почасоваяоплата * количество часов,  | 
	если количество часов 40  | 
|
  | 
	1,5* (почасоваяоплата *  | 
|
ЗП почасоваяоплата * 40  | 
||
  | 
	
  | 
	
  | 
  | 
	(количество часов 40)), иначе  | 
  | 
где ЗП – заработная плата. Текст программы:
#include <iostream> #include <math.h> using namespace std; int main()
{
setlocale(LC_CTYPE,"Russian");
float  | 
	zp,  | 
	//заработная  | 
	плата  | 
  | 
	hp;  | 
	// почасовая  | 
	оплата  | 
int  | 
	kh;  | 
	// количество часов  | 
|
cout<<"Почасовая оплата>";cin>>hp; cout<<"Количество часов>";cin>>kh;
if(kh>40) zp=hp*40+1.5*hp*(kh-40); else zp=hp*kh; cout<<"Зарплата="<<zp<<endl; return 0;
}
По я сн е н ия к пр о гр ам м е . В программе использована полная форма записи оператора if. Если количество часов kh больше 40, то заработная плата zp будет вычислена по нижней формуле, в противном случае - по верхней формуле.
29
Результаты выполнения программы при различных данных представлены на рис. 1, а, б.
а
б
Рис.1. Результат выполнения программы при вычислении по нижней формуле (а) и по верхней формуле (б)
Пример 2. Определить состояние здоровья. Если температура тела < 37,1 - нормальная, если температура > 38 - жар, в других случаях - повышенная.
Решение. Запишем условие задачи в виде системы неравенств.
t 37,1  | 
	нормальная ,  | 
  | 
	38 повышенная,  | 
37,1 t  | 
|
t 38  | 
	жар.  | 
  | 
	
  | 
Схема алгоритма решения данной задачи представлена на рис.2.
30
Пуск  | 
	
  | 
	
  | 
Ввод t  | 
	
  | 
	
  | 
  | 
	Нет  | 
	
  | 
t < 37,1  | 
	
  | 
	
  | 
Да  | 
	
  | 
	
  | 
Нормальная  | 
	
  | 
	Нет  | 
  | 
	t ≥ 38  | 
|
  | 
	
  | 
Да
Жар
Повышенная
Останов
Рис.2. Схема алгоритма к примеру 2
Текст программы:
#include <iostream> #include <math.h>
using namespace std; int main()
{
setlocale(LC_CTYPE,"Russian"); double t;
cout<<"Температура>"; cin>>t;
if(t<37.1) cout<<"Нормальная"; else if(t>=38) cout<<"Жар";
else cout<<"Повышенная"; cout<<endl;
return 0;
}
31
По я сн е н ия к пр о гр ам м е . Здесь использовано два оператора if, причем один «вложен» в другой. Если значение переменной t меньше, чем 37,1, то на экран будет выведено сообщение «Нормальная» (рис.3). Если значение t больше или равно 37,1, то будет проведено еще одно сравнение, и если значение t окажется больше 38, то на экране появится сообщение «Жар», в противном случае, т.е. если значение t находится в интервале от 37,1 до 38, то будет выведено сообщение «Повышенная».
Рис.3. Результат выполнения программы при значении t < 37,1
Пример 3. Вычислить значение
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
  | 
	tg  | 
	2  | 
	ln ab  | 
	2  | 
	a  | 
	2  | 
	sin  | 
	2  | 
	e  | 
	2x 5  | 
	, при x ab,  | 
||||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
||||||||
  | 
	Y  | 
	
  | 
	
  | 
	
  | 
	ax2  | 
	b4  | 
	
  | 
	arctg a b  | 
	
  | 
||||||
  | 
	tg2 ln  | 
	
  | 
	, при x ab.  | 
||||||||||||
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
|
Здесь условие задачи уже формализовано.  | 
|||||||||||||||
Текст программы:  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
|||
#include <iostream>  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
||||||
#include <math.h>  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
|||||
using  | 
	namespace std;  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
	
  | 
||||||||
int main()
{
setlocale(LC_CTYPE,"Russian"); doublea,b,x,y;
cout<<"a>";cin>>a; cout<<"b>";cin>>b; cout<<"x>"; cin>>x;
if(x<a*b) y = sqrt(pow(tan(log(a*b*b)),2) + a* a* pow(sin(exp(2*x+5)),2));
else y=pow(tan(log(fabs(a*x*x+pow(b,4)))),2) + atan(a+b);
32
