Компания ALT Linux
Опубликован: 07.03.2015 | Доступ: свободный | Студентов: 2137 / 487 | Длительность: 24:14:00
Лекция 2:

Общие сведения о языке С++

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

2.7 Стандартные функции

В C++ определены стандартные функции над арифметическими операндами7Работа с математическими функциями возможна только при подключении библиотеки math.h (п. 2.6)табл. 2.8 приведены некоторые из них.

Таблица 2.8. Стандартные математические функции
Обозначение Действие
abs(x) Модуль целого числа x
fabs(x) Модуль вещественного числа x
sin(x) Синус числа x
cos(x) Косинус числа x
tan(x) Тангенс числа x
atan(x) Арктангенс числа x,x\in(-\frac{\pi}{2};\frac{\pi}{2})
acos(x) Арккосинус числа x
asin(x) Арксинус числа x
exp(x) Экспонента, e^x
log(x) Натуральный логарифм, (x > 0)
log10(x) Десятичный логарифм, (x > 0)
sqrt(x) Корень квадратный, (x > 0)
pow(x,y) Возведение числа x в степень y
ceil(x) Округление числа x до ближайшего большего целого
floor(x) Округление числа x до ближайшего меньшего целого

Примеры записи математических выражений с использованием встроенных функций представлены в табл. 2.9.

Таблица 2.9. Примеры записи математических выражений
Математическая запись Запись на языке С++
\sqrt[3]{(a+b)^2} pow((a+b) *(a+b),1./3) или pow(pow(a+b,2),1./3)
\cos^4(x) pow(cos(x), 4)
e^{2x} exp(2*x)
e^{5\sin(\frac{x}{2})} exp(5*sin(x/2))
\sin^2(\sqrt{x}) pow(sin(sqrt(x)),2)
\ln(|x-2|) log(fabs(x -2))
\log_b a log(a)/log(b)
\frac{\lg(x^2+1)}{\lg(4)} log10(x*x+1)/log10(4)
\sin(x^2+y^2)+\cos\frac{(x^2+y^2)}{2\cdot y}+\sqrt{x^2+y^2} z=x*x+y*y; sin(z)+cos(z/(2*y))+sqrt(z);

Определённую проблему представляет применение функции pow(x,y).При программировании выражений, содержащих возведение в степень, надо внимательно проанализировать значения, которые могут принимать x и y, так как в некоторых случаях возведение x в степень y невыполнимо.

Так, ошибка возникает, если x — отрицательное число, а y — дробь. Предположим, что y — правильная дробь вида \frac{k}{m}. Если знаменатель m чётный, это означает вычисление корня чётной степени из отрицательного числа, а значит, операция не может быть выполнена. В противном случае, если знаменатель m нечётный, можно воспользоваться выражением z = –pow(fabs(x),y). Например, вычисление кубического корня из вещественного числа можно представить командой:

z=(x<0)? -pow(fabs(x),(double)1/3): pow(x,(double)1/3);
		

2.8 Структура программы

Программа на языке С++ состоит из функций, описаний и директив препроцессора.

Одна из функций должна обязательно носить имя main. Элементарное описание функции имеет вид:

тип_результата имя_функции (параметры)
{
	оператор1;
	оператор2;
	...
	операторN;
}
		

Здесь, тип_результата — это тип того значения, которое функция должна вычислить (если функция не должна возвращать значение, указывается тип void), имя_функции — имя, с которым можно обращаться к этой функции, параметрысписок аргументов функции (может отсутствовать), оператор1, оператор2,..., операторNоператоры, представляющие тело функции, они обязательно заключаются в фигурные скобки и каждый оператор заканчивается точкой с запятой. Как правило, программа на С++ состоит из одной или нескольких, не вложенных друг в друга, функций.

Основному тексту программы предшествуют директивы препроцессора, предназначенные для подключения библиотек, которые в общем виде выглядят так:

#include <имя_библиотеки>
		

Каждая такая строка даёт компилятору команду присоединить программный код, который хранится в отдельном файле с расширением .h. Такие файлы называют файлами заголовков. С их помощью можно выполнять ввод-вывод данных, работать с математическими функциями, преобразовывать данные, распределять память и многое другое. Например, описание стандартных математических функций находится в заголовочном файле math.h.

Общую структуру программы на языке С++ можно записать следующим образом:

директивы препроцессора
описание глобальных переменных
тип_результата имя1(параметры1)
{
	описание переменных функции имя1;
	операторы1;
}
тип_результата имя2(параметры2)
{
	описание переменных функции имя2;
	операторы2;
}
............................... .
тип_результата имяN(параметрыN)
{
	описание переменных функции имяN;
	операторыN;
}
тип_результата main(параметры)
{
	описание переменных главной функции;
	операторы главной функции;
}
		

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

Локальные переменные объявляются внутри функции и доступны только в ней. Например:

int f1 ( )
{
	//В функции f1 описана другая переменная s,
	int s;
	s =6; //ей присвоено значение 6 .
}
int f2 ( )
{
	//В функции f2 определена ещё одна переменная s,
	long int s;
	s =25; //ей присвоено значение 25.
}
int main ( )
{
	//В функции main определена вещественная переменная s,
	float s;
	s =4.5; //и ей присвоено значение 4.5.
}
		

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

float s; //Определена глобальная переменная s .
int f1 ( )
{
	//В функции f1 переменной s присваивается значение 6 .
	s =6;
}
int f2 ( )
{
	//В функции f2 переменной s присваивается значение 2.1.
	s =2.1;
}
int main ( )
{
	//В главной функции переменной s присваивается значение 4.5 .
	s =4.5;
}
		

Формальные параметры функций описываются в списке параметров функции. Работа с функциями подробно описана в главе 4.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?