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

Лабораторный практикум

.pdf
Скачиваний:
47
Добавлен:
15.06.2021
Размер:
3 Mб
Скачать

Министерство образования и науки Российской Федерации

Национальный исследовательский университет «МИЭТ»

_____________________________________________________

Н.Ю. Соколова

Практикум по программированию на языке С++ в среде разработки программ

MS Visual Studio 2015

Часть 1

Утверждено редакционно-издательским советом университета

Москва 2017

3

Лабораторная работа № 1

Знакомство со средой разработки программ

MS Visual Studio 2015.

Программирование линейных алгоритмов

Цель работы: изучение возможности программирования линейных алгоритмов; получение практических навыков программирования линейных алгоритмов в среде MS Visual Studio 2015.

Теоретические сведения

Структура программы. Программа, написанная на языке С++, представляет собой набор программных блоков - функций. Обязательно наличие хотя бы одной функции, называемой основной, имеющей имя main. В общем виде программу на языке С++ можно представить из двух частей. В первой части программы содержатся директивы препроцессору (указания препроцессору), одна из которых представлена ниже. Использование директивы #include означает, что необходимо подключить заголовочный файл (header), в котором содержатся прототипы функций, применяемые в программе. В примере, рассмотренном ниже, заголовочный файл <iostream> содержит прототипы функций, обеспечивающие ввод и вывод данных из стандартного потока вводавывода. Вторая часть программы представляет собой основную функцию main. Перед именем main указывается тип возвращаемого функцией значения, в данном примере это 0. В круглых скобках могут быть указаны параметры командной строки (здесь функция не имеет параметров). Каждая программа или функция содержит набор данных и инструкций, которые выполняют определенные действия над этими данными. Все это вместе называется телом программы, которое заключается в фигурные скобки { }.

Например:

//Раздел директив препроцессору: #include <iostream>

int main( )// заголовок основной функции

4

{

// Тело программы

return 0;// возврат значения основной функции

}

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

 

 

 

Таблица 1

 

Стандартные типы данных

 

 

 

 

Тип

Обозначение

Раз-

Диапазон значений

 

в языке С++

мер,

 

 

 

биты

 

Целый

int

16

–32768...32767

long int

32

–2147483648...2147483647

 

Вещественный

float

32

3,4Е-38...3,4Е+38

double

64

1,7Е-308...1,7Е +308

 

Символьный

char

8

–127...127 или 0...255

wchar_t

16

065535

 

Логический

bool

-

true или false

Бестиповый

void

-

-

Используемые в программе имена называют идентификаторами. Имя - идентификатор представляет собой набор латинских символов, цифр и знака подчеркивания, причем первым символом имени должна быть латинская буква или знак подчеркивания «_». Например, имена r, gamma, v4_0 являются идентификаторами языка С++. Длина имени не ограничена.

Константы в языке С++ описываются с помощью ключевого слова const:

const тип идентификатор=значение или вычисляемое выражение;

5

Например:

const double pi=3.14;// константа вещественного типа const int n=5; // константа целого типа

Объявить переменную можно в любом месте программы:

тип идентификатор;

Например:

int a,gamma;

или

double s=0.0,f;

В последнем примере при объявлении переменных s присвоено начальное значение 0.0.

Ввод данных с клавиатуры. Ввод данных с клавиатуры осуществляется с помощью оператора потокового ввода:

сin>>переменная;

Знак >> указывает направление потока. В данном случае в переменную будет занесено значение, вводимое с клавиатуры. Например, cin>>gamma;

Прототип функции cin находится в заголовочном файле iostream, поэтому необходимо использовать директиву препроцессора #include <iostream>. Кроме того, если в среде разработки программ Visual Studio 2015 вы хотите использовать сокращенное имя cin, а не полное std::cin (в среде разработки программ Visual Studio 2015 необходимо использовать полное имя), то после директив препроцессору следует написать: using namespace std; (использование стандартного пространства имен).

Вывод данных. Вывести данные можно, используя оператор потокового вывода cout:

cout<< ”строка символов или переменная”;

Например:

cout<<”результат=”<<gamma<<endl;

6

Такая запись означает, что на экран будет выведена строка символов ”результат=”, далее - значение переменной gamma, и курсор перейдет на новую строку, поскольку используется оператор endl.

Как и для оператора cin, при использовании cout необходимо включить директиву препроцессору #include <iostream> и using namespace std;

Оператор присваивания. Как правило, линейный алгоритм представляет собой инструкции, обеспечивающие ввод данных, вычисление значений и вывод этих значений на экран. Для присваивания вычисляемых значений переменной служит оператор присваивания «=». Напри-

мер: gamma=3–4+a;

В данном примере сначала будет вычислено значение арифметического выражения 3–4+a, а затем полученный результат будет занесен в ячейку памяти, связанную с переменной gamma.

Для вычисления арифметических значений в языке С++ используются следующие операции.

Арифметическая операция

Обозначение в языке С++

Сложение

+

Вычитание

Умножение

*

Деление

/

Вычисление остатка от деления од-

%

ного целого на другое

 

Компилятор вычисляет выражение последовательно слева направо. Операции *, /, % имеют более высокий приоритет вычислений, чем операции + и – . Это означает, что сначала будут получены результаты операций умножения или деления, а затем найдена сумма и разность. Для изменения последовательности вычислений используются скобки

( ). Например, арифметическое выражение

a 4

на языке С++ должно

b 5

быть записано так: (a + 4)/(b – 5). Если бы не использовались скобки, т.е. если записать a + 4/b – 5, то сначала выполнится деление 4 на b, затем к а прибавится результат деления и после этого из полученной суммы отнимется 5, что соответствует следующему арифметическому вы-

ражению: a b4 5 , которое отличается от исходного.

7

Кроме арифметических операций, в записи выражений могут применяться стандартные математические функции языка С++. Для их использования необходимо применить директиву препроцессору #include <math.h>. Некоторые из математических функций приведены в табл.2. Вычисление математической функции имеет наивысший приоритет. Полный список приоритетов операций в языке С++ приведен в приложении 1.

Таблица 2

Математические функции языка С++

Математическая функция

С++

sin a

sin(a)

cos a

cos(a)

tg a

tan(a)

arctg a

atan(a)

ln a

log(a)

ex

exp(a)

xp

pow(x, p)

|x|

fabs(x)

abs(x)

 

 

 

 

 

 

sqrt(x)

 

x

 

 

Программирование линейных алгоритмов. Все действия в ли-

нейном алгоритме выполняются последовательно одно за другим.

Примеры программирования линейных алгоритмов

Пример 1. Разработать программу вычисления площади круга и длины окружности радиусом R.

Алгоритм решения данной задачи представлен на рис.1.

Решение. Введем значение радиуса с клавиатуры, вычислим площадь круга S и длину окружности L. Полученные значения выведем на экран.

8

Пуск

Ввод R

S = πR2

L= 2 πR

S, L

Останов

Рис.1. Схема алгоритма нахождения длины окружности и площади круга

Приведем текст программы с комментариями (//):

1#include <iostream>

2#include <math.h>

3

using namespace std;// использование

4

//пространства имен

std для cout, //cin,

5

endl

 

6

const double Pi=3.14;

// число пи

7int main()

8{

9setlocale(LC_CTYPE,"Russian");

10

double

R,

// радиус

11

S,

 

// площадь

12

L;

 

// длина

13// вывод на экран строки

14cout<<"Введите R>";

15cin>>R; // ввод значения радиуса

16// вычисление длины окружности

17L=2*Pi*R;

18// вычисление площади круга

19S=Pi*pow(R,2);

20// вывод результатов на экран

9

21cout<<"Длина окружности L="<<L<<"\nПлощадь

22круга S="<<S<<endl;

23return 0;

24}

По я сн е н ия к пр о гр ам м е . 1-я и 2-я строки - директивы препроцессору о необходимости подключения заголовочных файлов. В 6-й строке объявляется константа для числа π. 7-я строка - заголовок основной функции. 9-я строка - установка режима, чтобы при выводе данных на экран можно было использовать русские буквы.

Приведем другой вариант решения данной задачи:

#include <iostream> #include <math.h>

using namespace std; // использование

//пространства имен std для cout, cin, endl const double Pi=3.14; // число пи

int main()

{

setlocale(LC_CTYPE,"Russian");

double R;

// радиус

// вывод на экран строки

cout<<"Введите R>";

cin>>R;

// ввод значения радиуса

double L=2*Pi*R;// вычисление длины окружности //вычисление площади круга

double S=Pi*pow(R,2);

// вывод результатов:

cout<<"Длина окружности L="<<L<<"\nПлощадь круга S="<<S<<endl;

return 0;

}

В данном варианте при объявлении переменных S и L вычисляются их значения по соответствующим формулам.

Пример 2. Написать программу для вычисления

 

 

 

 

 

y

tg2 ln ab2 a2 sin2 e2x 5 .

Текст программы:

 

 

#include <iostream>

#include <math.h>

 

 

using

namespace std;

int main()

10

{

setlocale(LC_CTYPE,"Russian"); double a,b,x,y; cout<<"a>";cin>>a; // Ввод а cout<<"b>";cin>>b; // Ввод b cout<<"x>";cin>>x; // Ввод x

y=sqrt((pow(tan(log(a*b*b)),2))+a*a*

pow(sin(exp(2*x+5)),2));

cout<<"y="<<y<<endl; return 0;

}

По я сн е н ия к пр о гр ам м е . В данной программе сначала вводятся с клавиатуры значения переменных a, b, x, после чего по заданной в условии примера формуле вычисляется значение переменной y и выводится на экран.

Логические операции и операции отношений. Для вычисления значений переменных логического (булевского) типа используются операции отношений и логические операции. Операции отношений представлены в табл.3.

 

Таблица 3

Операции отношений

 

 

 

 

 

Операция отношения

Обозначение

 

 

в языке С++

 

Меньше чем

<

 

Меньше чем или равно

<=

 

Больше чем

>

 

Больше чем или равно

>=

 

Равно

= =

 

Не равно

!=

 

Следует обратить внимание, что операция отношения «равно» обозначается двумя знаками равенства. Если использовать один знак «=», то он будет обозначать операцию присваивания.

Логические операции представлены в табл.4.

11

 

 

 

 

 

Таблица 4

 

Логические операции

 

 

 

 

 

 

 

Логическая операция

 

Обозначение в языке С++

 

И

 

 

&&

 

 

ИЛИ

 

 

||

 

 

НЕ

 

 

!

 

 

Приведем примеры записи операций отношений и логических опе-

раций.

 

 

 

 

 

Математическое выражение

R2 (x x )2

( y y )2

на языке

 

 

0

0

 

С++ запишется так: R*R>=pow(x – x0,2)+pow(y – y0,2), а система урав-

 

 

 

 

 

 

y 3

 

 

 

 

 

 

нений

y 4 x

на языке С++ будет иметь вид

 

 

x

 

 

y

 

 

 

 

 

 

 

3

 

 

(y<=3)&&(y<=4 – x)&&(y>=x/3.0).

Пример 3. Имеется следующее утверждение: «точка с координатами (x, y) принадлежит заштрихованной области» (рис.2). Определить, истинно или ложно это утверждение. Если истинно, то вывести на экран 1, если ложно, то 0.

y

R = 4

3

0

x

5

Рис.2. Иллюстрация к примеру 3

Решение. Для того чтобы определить, попадает ли точка в заштрихованную область, используем уравнение окружности с центром в точке

(x0, y0): R2 = ( x x0)2 + (y y0)2 . Если точка попадает, то неравенство R2 ≥ (x x0)2 + (y y0)2 должно быть истинно.

12