Учебное пособие 1450
.pdfМодификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют имено-
ванной константой, или просто константой.
При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах:
-со знаком равенства, например, = значение;
-в круглых скобках, например, (значение).
Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми.
Примеры описания типов переменных и констант приведены ниже:
short int а = 1; // целая переменная а со значением 1
const char С = ‘C’; |
// символьная константа С со зна- |
чением символа ‘С’ |
|
char s, sf = ‘f’; |
// символьные переменные s, sf; ини- |
циализация относится только к sf
float с = 0.22, x(3), sum; // переменные вещественного типа c, x, sum; переменная с получает значение 0.22; переменная х получает значение 3
Имя переменной должно быть уникальным в своей области действия (например, в одном блоке не может быть двух переменных с одинаковыми именами).
Выражения
Выражения используют для вычисления некоторого значения определенного типа. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд, в свою очередь, может быть выражением или его частью, например, константой или переменной.
Примеры выражений: (b + 0.15)/7
(r * sin(x)-1.05e4)/((3 * k + 5) * (2 * k + 4))
21
Основные операции языка С++ приведены в табл. 4. Таблица 4
|
Основные операции языка C++ |
|
|
Операция |
Краткое описание |
|
Унарные операции |
++ |
увеличение на 1 |
-- |
уменьшение на 1 |
! |
логическое отрицание |
- |
арифметическое отрицание (унарный минус) |
|
Бинарные операции |
* |
умножение |
/ |
деление |
% |
остаток от деления |
+ |
сложение |
- |
вычитание |
< |
меньше |
<= |
меньше или равно |
> |
больше |
>- |
больше или равно |
== |
Равно |
!= |
не равно |
&& |
логическое И |
||логическое ИЛИ
= |
присваивание |
*= |
умножение с присваиванием |
/* |
деление с присваиванием |
%= |
остаток отделения с присваиванием |
+= |
сложение с присваиванием |
-= |
вычитание с присваиванием |
В C++ существуют математические функции, приведенные в табл. 5 (их описание содержится в файле math.h).
22
Таблица 5 Основные математические функции C++
Функция |
Вид |
Назначение |
abs |
int abs(int num) |
Возвращает модуль числа |
acos |
double acos(double x) |
Возвращает арккосинус |
|
|
аргумента |
asin |
double asin(double x) |
Возвращает арксинус ар- |
|
|
гумента |
atan |
double atan(double x) |
Возвращает арктангенс |
|
|
аргумента |
cos |
double cos(double x) |
Возвращает косинус ар- |
|
|
гумента |
cosh |
double cosh(double x) |
Возвращает гиперболиче- |
|
|
ский косинус аргумента |
exp |
double exp(double x) |
Возвращает степень числа |
|
|
e |
log |
double log (double x) |
Возвращает значение на- |
|
|
турального логарифма x |
log10 |
double log10(double |
Возвращает значение ло- |
|
x) |
гарифма x по основанию |
|
|
10 |
pow |
double pow(double x, |
Функция вычисляет зна- |
|
double y) |
чение числа x в степени y |
sin |
double sin(double x) |
Возвращает синус аргу- |
|
|
мента |
sinh |
double sinh(double x) |
Возвращает гиперболиче- |
|
|
ский синус аргумента |
sqrt |
double sqrt(double x) |
Вычисляет квадратный |
|
|
корень |
tan |
double tan(double x) |
Возвращает значение тан- |
|
|
генса аргумента |
tanh |
double tanh(double x) |
Возвращает значение ги- |
|
|
перболического тангенса |
|
|
аргумента |
|
23 |
|
2.5. Основные операторы языка C++
Любые операторы выполняют типовые действия. Основные операторы языка С++ приведены в табл. 6 [1-3].
Таблица 6
Основные операторы
Оператор или пример |
Пояснение |
использования |
|
Оператор вычисления выражения |
|
i++; |
Выполняется операция инкремен- |
|
та (увеличения переменной на 1) |
а * = b + с; |
Выполняется умножение с при- |
|
сваиванием |
func(i, к); |
Выполняется вызов функции |
Операторы ветвления |
|
if ( выражение ) опера- |
Общий вид условного оператора. |
тор_1; [else опера- |
Если выражение истинно, то вы- |
тор_2;] |
полняется оператор1, иначе вы- |
|
полняется оператор 2. |
if (а<0) b = 1; |
Если а<0, то b присваивается зна- |
|
чение 1 и осуществляется переход |
|
на следующий оператор. В про- |
|
тивном случае сразу осуществля- |
|
ется переход на следующий опера- |
|
тор. |
if (a<b && (a>d || |
Выражение будет истинно в том |
a==0)) b++; else {b * = |
случае, если выполнится одновре- |
a; a = 0;} |
менно условие a<b и одно из ус- |
|
ловий в скобках. Если выражение |
|
истинно, то переменная b увели- |
|
чится на единицу. В противном |
|
случае b получит значение a*b и а |
|
будет присвоен 0. |
|
24 |
Продолжение табл. 6
Оператор или пример |
Пояснение |
|||
использования |
|
|
|
|
switch ( |
выраже- |
Оператор switch (переключатель) |
||
ние ){ |
|
|
предназначен для |
разветвления |
|
|
|
процесса вычислений на несколь- |
|
case |
констант- |
ко направлений. |
|
|
ное_выражение_1: |
|
Если выражение совпадает с кон- |
||
[список_операторов_1] |
стантным выражением 1, то вы- |
|||
case |
констант- |
полняется список |
операторов 1. |
|
ное_выражение_2: |
|
Если выражение совпадает с кон- |
||
[список_операторов_2] |
стантным выражением 2, то вы- |
|||
case |
констант- |
полняется список операторов 2 и |
||
ное_выражение |
n: |
т.д. |
|
|
[список_операторов_n] |
Если выражение не совпадает ни с |
|||
[default: |
операто- |
какими константными выраже- |
||
ры_n*1] |
|
|
ниями, то либо выполняются опе- |
}раторы_n*1 (если конструкция default присутствует), либо осуществляется переход на следующий после switch оператор.
Операторы цикла
while (выражение) Цикл с предусловием. Оператор оператор; может быть простым или состав-
ным.
Если выражение истинно, то выполняется оператор. Цикл перестает повторяться, если выражение становится ложным. Пример: x = 0;
while (x <= 10) {
x = x + 1;
}
25
|
|
|
Продолжение табл. 6 |
|
Оператор или пример |
|
Пояснение |
|
|
|
использования |
|
|
|
do оператор |
Цикл с постусловием. Оператор |
|
||
while выражение; |
может быть простым или состав- |
|
||
|
|
ным. |
|
|
|
|
Выполняется оператор, проверяет- |
|
|
|
|
ся выражение. Если выражение |
|
|
|
|
ложно, то выполняют повтор цик- |
|
|
|
|
ла. Если выражение истинно, то |
|
|
|
|
цикл заканчивают. |
|
|
|
|
Пример. |
|
|
|
|
x = 0; |
|
|
|
|
do { |
|
|
|
|
x = x + 1; |
|
|
|
|
} |
|
|
|
|
while (x <= 10); |
|
|
for |
(инициализация; |
Цикл с параметром. |
|
|
выражение; модифика- |
Инициализация используется для |
|
||
ции) |
объявления типа и присвоения на- |
|
||
оператор; |
чальных значений величинам, ис- |
|
||
|
|
пользуемым в цикле. Примеры: |
|
|
|
|
1) |
for (int i = 0, j = 2; ... |
|
|
|
2) |
int k, m; |
|
|
|
for (k = 1, m = 0; ... |
|
|
|
|
Выражение определяет условие |
|
|
|
|
выполнения цикла: если его ре- |
|
|
|
|
зультат, приведенный к типу bool, |
|
|
|
|
равен true, цикл выполняется. |
|
|
|
|
Модификации выполняются после |
|
|
|
|
каждой итерации цикла и служат |
|
|
|
|
обычно для изменения параметров |
|
|
|
|
цикла. |
|
|
|
|
26 |
|
|
|
Окончание табл. 6 |
||
for (int i = 1, s = 0; |
Пример выполнения цикла. Опе- |
|
|
i<=100; i++) |
ратор цикла вычисляет сумму чи- |
|
|
s += i; |
сел от 1 до 100. |
|
|
|
Первоначально i |
присваивается |
|
|
значение 1, сумма обнуляется. По- |
|
|
|
ка i меньше или равен 100, проис- |
|
|
|
ходит увеличение суммы на i. |
|
|
|
При каждом повторе цикла i уве- |
|
|
|
личивается на 1. |
|
|
|
Цикл завершит свою работу, когда |
|
|
|
i станет больше 100. |
|
|
Операторы передачи управления |
|
||
goto метка; |
Оператор безусловного перехода |
|
|
|
В тексте программы должна при- |
|
|
|
сутствовать ровно одна конструк- |
|
|
|
ция вида: метка: оператор; |
|
|
|
Метка – это обычный идентифи- |
|
|
|
катор. |
|
|
break; |
Оператор выхода из цикла до его |
|
|
|
окончания |
|
|
continue; |
Оператор перехода |
к следующей |
|
|
итерации цикла до окончания те- |
|
|
|
кущей итерации |
|
|
return [ выражение ]; |
Оператор возврата из функции и |
|
|
|
передачи управления в точку вы- |
|
|
|
зова функции. |
|
|
|
При возврате может передаваться |
|
|
|
значение выражения. |
|
27
3. ЛАБОРАТОРНАЯ РАБОТА № 1 ЛИНЕЙНЫЕ И РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛЕНИЯ
3.1. Программирование линейных вычислительных задач
Цель работы - приобретение практических навыков написания и отладки программ, реализующих линейные вычислительные задачи.
Общие рекомендации
Общие рекомендации содержат пример программы, реализующей линейную вычислительную задачу.
Впрограмме, реализующей линейную вычислительную задачу, операторы выполняются в той последовательности, в которой они записаны.
Вконсольном приложении можно вывести информацию на экран и получить данные с клавиатуры несколькими способами:
- при помощи функций printf (вывод) и scanf (ввод);
- вывести информацию в поток вывода (cout), прочитать данные из потока ввода (cin).
Впримере, приведенном ниже, использован потоковый ввод-вывод. Каждый элемент вывода начинается с признака вывода в поток <<.
Конструкция endl обеспечивает перевод курсора на следующую строку.
Пример. Составить программу для вычисления функции при произвольных значениях A, X.
y(x) a* x sin2 x ln x a eax
Листинг программы приведен ниже
#include "stdafx.h" // Добавлен в 2010 по умолчанию
28
#include <iostream> //Подключение заголовочного файла // с функциями ввода-вывода
using namespace std; // Определение пространства имен int _tmain(int argc, _TCHAR* argv[]) // По умолчанию
{
setlocale(LC_ALL, "Russian"); |
//Установка |
|
|
|
//соответствующей |
|
|
//кодовой страницы |
float a, x, y, y1, y2; |
//Объявление переменных |
|
cout << "Введите a" << endl; |
//Вывод фразы |
|
cin >> a; |
|
// Ввод а |
cout << "Введите x" << endl; |
//Вывод фразы |
|
cin >> x; |
|
// Ввод х |
y1 |
= sqrt(abs(a * x)) + sin(x) * sin(x);//1-я часть формулы |
|
y2 |
= -log(abs(x + a)) + exp(x * a); //2-я часть формулы |
|
y = y1 + y2; |
//формула целиком |
|
cout << "Результат = " << y << endl; //Вывод надписи |
||
|
|
// и результата (y) |
system("pause"); |
//Функция ожидания |
|
return 0; |
// нажатия клавиши |
|
|
}
Результат работы программы приведен на рис. 11.
Рис. 11. Результат вычисления линейной функции
29
Задание
При выполнении задания необходимо:
-составить структурную схему программы;
-написать и отладить программу в консольном режиме
всоответствии с вариантом задания;
-варианты задания приведены в табл. 7; номер варианта совпадает с порядковым номером студента в списке;
-проверить работу программы в консольном режиме.
Отчет
Отчет должен содержать титульный лист, вариант задания, структурную схему алгоритма, текст программы с комментариями, скриншот результатов работы программы.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 7 |
Варианты заданий для реализации линейных вычислений |
|||||||||||||||
Номер |
|
|
Математическое выражение |
||||||||||||
варианта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
y cos2 (x a)/ |
|
x a |
|
sin(x a)2 (x a) |
||||||||||
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
2 |
y (x a)2 ln |
|
x a |
|
cos(x a)2 |
||||||||||
|
|
||||||||||||||
|
|
|
|
|
|
|
|||||||||
3 |
y x |
|
|
|
|
|
cos(x a)2 sin2 (x a) |
||||||||
|
|
x a |
|
|
|||||||||||
|
|
4y cos(x b)/ln x b 1/sin(x b)
5y (x a)2 /ln x a 1/ (x a)
6 |
y (x2 |
b)/ |
|
|
x2 b |
|
|
|
|
|
x2 b |
|
|
/cos(x2 b) |
|||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
x a |
|
/(x a) |
|
x a |
|
/(x a) |
|||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
8 |
y (x2 |
(x a) a2 sin(x a))/ |
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
x a |
|
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||
9 |
y (ex a )/ln |
|
x a |
|
(x a)2 /sin2 (x a) |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|