Редакционно-издательским советом Томского политехнического университета Издательство Томского политехнического университета 2011 681. 3 icon

Редакционно-издательским советом Томского политехнического университета Издательство Томского политехнического университета 2011 681. 3


1 чел. помогло.
Смотрите также:
Редакционно-издательским советом Томского политехнического университета Издательство Томского...
Редакционно-издательским советом Томского политехнического университета Издательство Томского...
Редакционно-издательским советом Томского политехнического университета Издательство Томского...
Конспект лекций Рекомендовано в качестве учебного пособия Редакционно-издательским советом...
Конспект лекций Рекомендовано в качестве учебного пособия Редакционно-издательским советом...
Конспект лекций Рекомендовано в качестве учебного пособия Редакционно-издательским советом...
Томского политехнического университета Издательство Томского политехнического университета 2009...
Учебное пособие Рекомендовано в качестве учебного пособия Редакционно-издательским советом...
Учебное пособие Издательство Томского политехнического университета 2009...
Учебное пособие Издательство Томского политехнического университета Томск 2007...
Учебное пособие Издательство Томского политехнического университета Томск 2007...
Учебное пособие Издательство Томского политехнического университета Томск 2010...



Загрузка...
страницы: 1   2   3   4   5   6   7   8   9   ...   12
вернуться в начало
скачать




Рис. 1. Схема подготовки exe-файла
^

2.1.3. Типы данных C++

2.1.3.1. Концепция типа данных


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

Тип данных определяет:

  • внутреннее представление данных в памяти компьютера;

  • множество значений, которые могут принимать величины этого типа;

  • операции и функции, которые можно применять к величинам этого типа.

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

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

В языке C++ определено шесть стандартных простых типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов, а также массивов и указателей (указатель не является самостоятельным типом, он всегда связан с каким-либо другим конкретным типом), программист может вводить описание собственных простых или структурированных типов. К структурированным типам относятся перечисления, функции, структуры, объединения и классы.
^

2.1.3.2. Простые типы данных


Простые типы делятся на целочисленные типы и типы с плавающей точкой. Для описания стандартных типов определены следующие ключевые слова:

  • int (целый);

  • char (символьный);

  • wchar_t (расширенный символьный);

  • bool (логический);

  • float (вещественный);

  • double (вещественный с двойной точностью).

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

  • short (короткий);

  • long (длинный);

  • signed (со знаком);

  • unsigned (без знака).

Каждый представленный тип подробно рассматривается в [3]. Для выполнения лабораторной работы необходимо иметь информацию об интервалах значений простых типов языка C++, представленных в табл. 2.


Таблица 2

Диапазоны значений простых типов данных для IBM PC

Тип

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

Размер (байт)

bool

true и false

1

signed char

–128 … 127

1

unsigned char

0 … 255

1

signed short int

–32 768 … 32 767

2

unsigned short int

0 … 65 535

2

signed long int

–2 147 483 648 … 2 147 483 647

4

unsigned long int

0 … 4 294 967 295

4

float

3.4e–38 … 3.4e+38

4

double

1.7e–308 … 1.7e+308

8

long double

3.4e–4932 … 3.4e+4932

10


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

2.1.4. Структура программы на языке C++


Программа на языке C++ состоит из функций, описаний и директив. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий формат:

тип_возвращаемого_значения имя ( [ параметры ] )

{операторы, составляющие тело функции}

Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. О функциях рассказывается в разделе «Функции». В данном пункте приведены лишь самые необходимые сведения:

  • Если функция не должна возвращать значение, указывается тип void.

  • Тело функции заключается в фигурные скобки.

  • Функции не могут быть вложенными.

  • Каждый оператор заканчивается точкой с запятой (кроме составного оператора).

Программа может состоять из нескольких модулей (исходных файлов) и, как правило, содержит директивы препроцессора. Пример структуры программы, содержащей функции main, f1 и f2 [4]:

директивы препроцессора

описания

void main()

{ операторы главной функции }

int f1()

{ операторы функции f1 }

int f2()

{ операторы функции f2 }
^

2.1.5. Директивы препроцессора


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

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

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

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

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

2.1.5.1. Директива #include


Директива #include <имя_файла> вставляет содержимое указанного файла в ту точку исходного файла, где она записана. Включаемый файл также может содержать директивы #include.

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

Директива #include является простейшим средством обеспечения согласованности объявлений в различных файлах, включая в них информацию об интерфейсе из заголовочных файлов. Заголовочные файлы обычно имеют расширение .h и могут содержать:

  • определения типов, констант, встроенных функций, шаблонов, перечислений;

  • объявления функций, данных, имен, шаблонов;

  • пространства имен;

  • директивы препроцессора;

  • комментарии.

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

При указании заголовочных файлов стандартной библиотеки расширение .h можно опускать. Для каждого файла библиотеки С с именем <name.h> имеется соответствующий файл библиотеки С++ .
^

2.1.5.2. Директива #define


Директива #define определяет подстановку в тексте программы. Она используется для определения:

  • символических констант. Формат определения символической константы:

#define имя текст_подстановки /* Все вхождения имени заменяются на текст подстановки */

  • макросов, которые выглядят как функции, но реализуются подстановкой их текста в текст программы. Формат определения макроса [4]:

#define имя( параметры ) текст_подстановки

  • символов, управляющих условной компиляцией. Они используются вместе с директивами #ifdef и #ifndef.

Формат: #define имя


Пример. 1

#define M 1000

#define Vasia “Василий Иванович”

#define MAX(a,b) ((x)>(y)?(x):(y))

#define __cplusplus


Параметры используются при макроподстановке, например, если в тексте программы используется вызов макроса y=MAX(sum1, sum2);, он будет заменен на y=((sum1)>(sum2)?(sum1):(sum2));

Использования макросов и символических констант в программах следует избегать.

Далее в рамках изучения курса «Информатика» с целью упрощения понимания программ будут приводиться примеры лишь такой директивой препроцессора, как #include.
^

2.1.6. Предварительные замечания о функциях ввода/вывода


В языке нет встроенных средств ввода/вывода. Он осуществляется с помощью подпрограмм, типов и объектов, содержащихся в стандартных библиотеках ANSI C <stdio.h> и C++ <iostream.h>.

Основные функции ввода/вывода в стиле языка C:

int scanf (const char* format...)// ввод

int printf(const char* format...)// вывод

Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата format. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе,
и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами. Типы спецификаторов представлены в табл. 3.

Таблица 3

Спецификаторы формата для функции printf()



символ

%d

целое десятичное число

%i

целое десятичное число

%e

десятичное число в виде x.xx e+xx

%E

десятичное число в виде x.xx E+xx

%f

десятичное число с плавающей запятой xx.xxxx

%F

десятичное число с плавающей запятой xx.xxxx

%g

%f или %e, что короче

%G

%F или %E, что короче

%o

восьмеричное число

%s

строка символов

%u

беззнаковое десятичное число

%x

шестнадцатеричное число

%X

шестнадцатеричное число

%%

символ %

%p

указатель

%n

указатель


Кроме того, к командам формата могут быть применены модификаторы l и h (табл. 4).


Таблица 4

Модификаторы формата

%ld

печать long int

%hu

печать short unsigned

%Lf

печать long double


В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаётся следующим образом: %.n<код формата>. Где n – число цифр после запятой, а <код формата> – один из кодов приведённых выше.

Например, если имеется переменная x=10.3563 типа float и необходимо вывести её значение с точностью до 3-х цифр после запятой, то надо написать:

printf(«Переменная x = %.3f»,x);

В результате получится:
Переменная x = 10.356

Можете также указать минимальную ширину поля отводимого для печати. Если строка или число больше указанной ширины поля, то строка или число печатается полностью.

Например, если написано:

printf("%5d",20);

то результат будет следующим:

20

Следует обратить внимание на то, что число 20 напечаталось не с самого начала строки. Если вы надо, чтобы неиспользованные места поля заполнялись нулями, то нужно поставить перед шириной поля символ 0:

printf("%05d",20);

Результат:

00020

Кроме спецификаторов формата данных в управляющей строке могут находиться управляющие символы (табл. 5).

Таблица 5

Управляющие символы

\f

Новая страница, перевод страницы

\n

Новая строка, перевод строки

\r

Возврат каретки

\t

Горизонтальная табуляция

\v

Вертикальная табуляция

\"

Двойная кавычка

\'

Апостроф

\\

Обратная косая черта

\0

Нулевой символ, нулевой байт

\a

Сигнал

\N

Восьмеричная константа

\xN

Шестнадцатеричная константа

\?

Знак вопроса


Чаще всего используется символ \n. С помощью этого управляющего символа можно переходить на новую строку.


Пример 2

#include

int main(

{

int i;

printf("Введите целое число\n");

scanf("%d", &i);

printf("Вы ввели число %d, спасибо!", i);

}

Первая строка программы, приведённой в примере 1, – директива препроцессора, по которой в текст программы вставляется заголовочный файл <stdio.h>, содержащий описание использованных в программе функций ввода/вывод. Все директивы препроцессора начинаются со знака #.

Третья строка – описание переменной целого типа с именем i.

Функция printf в четвертой строке выводит приглашение «Введите целое число» и переходит на новую строку в соответствии с управляющей последовательностью \n. Функция scanf заносит введенное с клавиатуры целое число в переменную i, а следующий оператор выводит на экран указанную в нем строку, заменив спецификацию преобразования на значение этого числа. Ввод/вывод в стиле языка C рассмотрен в разделе «Функции ввода/вывода».


Пример 3. Вывести на экран:

a=5, b=6, c=9


Код программы:

#include

#include

void main()

{

 int a,b,c; // Объявление переменных a,b,c

 a=5;    b=6;    c=9;

 printf("a=%d, b=%d, c=%d",a,b,c);

getch();

}


Блок-схема программы:




В примере 3 отражены основные особенности структуры программ на C++, а так же синтаксис и структура. Первые две строки отражают директивы препроцессора, в заголовочных файлах которого подключаются библиотеки. Далее показано объявление основной функции main и её тело, заключённое в фигурные скобки. Тип результата данной функции безличный, обозначенный зарезервированным словом void и пустой список аргументов, обозначенный пустыми круглыми скобками после названия функции: «()». Следует отметить, что главная функция в C++ всегда носит название main. После открытой фигурной скобки расположено объявление переменных. При этом сначала записан тип переменных (int), а далее через запятую перечислены все переменные, относящиеся к данному типу. Запись оператора завершается символом «;» , который считается составной частью оператора. Для вывода результата на экран используется функция printf. При этом записан спецификатор %d для вывода на экран целого десятичного числа. Функция getch используется для того, чтобы результат работы программы оставался на экране до нажатия любой клавиши. Программа завершается знаком «}».

Как выглядит программа, представленная в примере 2, с использованием библиотеки классов C++ <iostream.h>имеет вид, показанный в примере 4.


Пример 4

#include

int main()

{

int i;

cout << "Введите целое число\n";

cin >> i;

cout << "Вы ввели число << i << ", спасибо!";

}
^

2.1.7. Переменные и выражения


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

Операнды задают данные для вычислений.

Операции задают действия, которые необходимо выполнить.

Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки [2].

2.1.7.1. Переменные


Переменная – это именованная область памяти, в которой хранятся данные определенного типа. Во время выполнения программы значение переменной может быть изменено. Перед использованием любую переменную необходимо объявить и определить.

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

Переменная может быть объявлена многократно, но определена только в одном месте программы.

Для определения переменных применяется оператор описания следующего формата [4]:

[класс памяти] [const] тип имя [инициализатор];

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

Модификатор const показывает, что значение переменной нельзя изменять во время выполнения программы. Такую переменную называют типизированной константой. Она должна быть инициализирована при объявлении. Инициализатор можно записывать в двух формах – со знаком равенства или в круглых скобках:

= значение

(значение)


Пример 5. Описания переменных

short int a = 1;

char s, symbol = 'f'; /* инициализация относится только к symbol */

char t = 54;

float c = 0.22, x, sum;

const char C = 'C';

Если тип инициализирующего значения не совпадает с типом переменной, выполняются преобразования типа.

Определение переменной, кроме ее типа, явно или по умолчанию задает область действия и класс памяти переменной.

^ Область действия идентификатора – это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. Область действия зависит от того, в каком месте программы описана переменная.

Если переменная определена внутри блока, она называется локальной, область ее действия – от точки описания до конца блока, включая все вложенные блоки.

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

Класс памяти определяет время жизни и область видимости программного объекта.

^ Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. Чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем.

Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).

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

autoавтоматическая переменная. Память под нее в стеке выделяется и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение, и освобождается при выходе из блока, в котором она описана. Время ее жизни – локальное.

extern – переменная определяется в другом месте программы. Используется для создания переменных, доступных во всех модулях программы, где они объявлены. Если переменная в том же операторе инициализируется, спецификатор extern игнорируется.

staticстатическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.

register – аналогично auto, но память выделяется по возможности в регистрах процессора [3].


Пример 6. Описания переменных с применением спецификаторов

int a;//1 глобальная переменная a main()

{ int b;//2 локальная переменная b

extern int x;//3 переменная х определена позже

static int c;//4 локальная статическая

//переменная c

a = 1;//5 присваивание глобальной переменной

int a;//6 локальная переменная a

a = 2;//7 присваивание локальной переменной

::a = 3;//8 присваивание глобальной

//переменной

}

int x = 4;//9 определение и инициализация x

Если при определении начальное значение переменным явным образом не задается, компилятор присваивает глобальным и статическим переменным нулевое значение соответствующего типа. Автоматические переменные не инициализируются.

Имя переменной должно быть уникальным в своей области действия.

2.1.7.2. Операции


В табл. 6 приведено большинство операций, определенных в языке C++, в соответствии с их приоритетами (по убыванию приоритетов, операции с разными приоритетами разделены чертой) [4].


Таблица 6

Основные операции языка C++

Операция

Краткое описание

Унарные операции




++

увеличение на 1

Унарные операции




++

увеличение на 1

– –

уменьшение на 1 (пробелы между символами не допускаются)

sizeof

размер

~

поразрядное отрицание

!

логическое отрицание



арифметическое отрицание (унарный минус)

+

унарный плюс

&

взятие адреса

*

разадресация

new

выделение памяти

delete

освобождение памяти

(type)

преобразование типа

Бинарные операции




*

умножение

/

деление

%

остаток от деления

+

сложение



вычитание

<<

сдвиг влево

>>

сдвиг вправо

<

меньше

<=

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

>

больше

>=

больше или равно

==

равно

!=

не равно

&

поразрядная конъюнкция (И)

^

поразрядное исключающее ИЛИ

|

поразрядная дизъюнкция (ИЛИ)

&&

логическое И

||

логическое ИЛИ

? :

условная операция

=

присваивание

*=

умножение с присваиванием

/=

деление с присваиванием

%=

остаток отделения с присваиванием

+=

сложение с присваиванием


Окончание табл. 6


Операция

Краткое описание

–=

вычитание с присваиванием

<<=

сдвиг влево с присваиванием

>>=

сдвиг вправо с присваиванием

&=

поразрядное И с присваиванием

|=

поразрядное ИЛИ с присваиванием

^=

поразрядное исключающее ИЛИ с присваиванием

,

последовательное вычисление


Операции увеличения и уменьшения на 1 (++ и --). Эти операции, называемые также инкрементом и декрементом, имеют две формы записи – префиксную, когда операция записывается перед операндом, и постфиксную. В префиксной форме сначала изменяется операнд, а затем его значение становится результирующим значением выражения, а в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется.

Операндом операции инкремента в общем случае является так называемое L-значение (L-value). Так обозначается любое выражение, адресующее некоторый участок памяти, в который можно занести значение. Переменная является частным случаем L-значения.

Операции отрицания (–, ! и ~). Арифметическое отрицание (унарный минус –) изменяет знак операнда целого или вещественного типа на противоположный.

Логическое отрицание (!) дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю. Операнд должен быть целого или вещественного типа или типа указатель.

Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении целочисленного операнда.

Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется до целого числа, в противном случае тип результата определяется правилами преобразования.

Операция остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.

Операции отношения ( <, <=, >, >=, = =, != ) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false. Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.

Поразрядные операции (&, |, ^) применяются только к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитово (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т.д.).

Логические операции (&& и ||). Операнды логических операций И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов.

Преобразования типов не производятся, каждый операнд оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как false, не равный нулю – как true). Результатом логической операции является true или false.

Логические операции выполняются слева направо.

Операции присваивания (=, +=, -=, *= и т.д.). Операции присваивания могут использоваться в программе как законченные операторы. К операциям они относятся потому, что могут использоваться в выражениях и формируют результат своего выполнения.

Формат операции простого присваивания (=):

операнд_1 = операнд_2

Первый операнд должен быть L-значением, второй – выражением. Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части.

В сложных операциях присваивания ( +=, *=, /= и т.п.) при вычислении выражения, стоящего в правой части, используется и L-значение из левой части, например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд.

Приоритеты операций представлены в табл. 7.

Таблица 7

Приоритеты операций

Ранг

Операции

1

( ) [ ] -> .

2

! ~ – ++ -- & * (тип) sizeof тип ( )

3

* / % (мультипликативные бинарные)

4

+ – (аддитивные бинарные)

5

< > <= >= (отношения)

Окончание таблицы 7

Ранг

Операции

6

== != (отношения)

7

&& (конъюнкция «И»)

8

|| (дизъюнкция «ИЛИ»)

9

?: (условная операция)


Условная операция (?:). Эта операция тернарная, то есть имеет три операнда. Ее формат:

операнд_1?операнд_2:операнд_3

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

Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго операнда, иначе – третьего операнда.

2.1.7.3. Выражения


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


Пример 7. Выражения

(a + 0.12)/6

x && y || !z

(t * sin(x)-1.05e4)/((2 * k + 2) * (2 * k + 3))

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

Если в одном выражении записано несколько операций одного приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные – слева направо.

Порядок вычисления подвыражений внутри выражений не определен.

Результат вычисления выражения характеризуется значением и типом.

В выражение могут входить операнды различных типов. Если операнды имеют одинаковый тип, то результат операции будет иметь тот же тип.

Если операнды разного типа, перед вычислениями выполняются преобразования типов по правилам, обеспечивающим преобразование более коротких типов в более длинные для сохранения значимости и точности.
^

2.1.8. Основные функции


Основными функциями, которыми можно пользоваться, подключив определённую библиотеку, являются математические функции, функции обработки сигналов, ввода/вывода, функция работы с датой и временем, обработки сигналов, функции локализации, классификации
и преобразования символов, функции управления программой и др.

Ниже представлено краткое описание перечисленных функций. Их применение показано в разделе «Примеры программ для лабораторной работы №1» [5].
^

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


Функция acos

Прототип:

double acos(double x);

Заголовочный файл:

(<сmath>)

Описание: возвращает значение арккосинуса x (arccos x) в радианах и является функцией. обратной функции косинус. Параметр х может изменяться от –1 до 1. В примере 7 вычисляется значение арккосинуса 0.

Пример 8.

#include

#include

//…

cout << "acos(0)=" << acos(0) << '\n';

Функция asin

Прототип:

double asin(double x);

Заголовочный файл:

()

Описание: возвращает значение арксинуса параметра x (arcsin x) в радианах и является функцией.

^ Функция atan

Прототип:

double atan(double x);

Заголовочный файл:

()

Описание: возвращает значение арктангенса x (arctg x) в радианах и является функцией и является функцией.


^ Функция atan2

Прототип:

double atan2(double у, double x);

Заголовочный файл:

()

Описание: возвращает значение арктангенса отношения параметров у/х (arctg (у/х)) в радианах и является функцией.

Функция ceil

Прототип:

double ceil(double x);

Заголовочный файл:

()

Описание: округляет вещественное значение x до ближайшего большего целого и возвращает его как вещественное.


^ Функция cos

Прототип:

double cos(double x);

Заголовочный файл:

()

Описание: возвращает значение косинуса угла, равного х радиан.


^ Функция cosh

Прототип:

double cosh(double x);

Заголовочный файл:

()

Описание: возвращает значение гиперболического косинуса угла, равного х радиан.

^ Функция exp

Прототип:

double exp(double x);

Заголовочный файл:

()

Описание: возвращает значение экспоненты параметра х, то есть возводит число e в указанную степень.

Функция fabs

Прототип:

double fabs(double x);

Заголовочный файл:

()

Описание: возвращает абсолютное значение х.


^ Функция floor

Прототип:

double floor(double x);

Заголовочный файл:

()

Описание: округляет x до ближайшего меньшего целого.


^ Функция fmod

Прототип:

double fmod(double x, double y);

Заголовочный файл:

()

Описание: возвращает остаток от деления х на у.


^ Функция frexp

Прототип:

double frexp(double x, int *expptr);

Заголовочный файл:

()

Описание: выделяет мантиссу и показатель степени числа х.


^ Функция ldexp

Прототип:

double ldexp(double x, int exp);

Заголовочный файл:

()

Описание: получает мантиссу и показатель степени и возвращает число, равное произведению мантиссы на 2 в степени показатель степени.


^ Функция log

Прототип:

double log(double x);

Заголовочный файл:

()

Описание: возвращает значение натурального логарифма х (ln x, логарифм по основанию числа «е») и является обратной к функции exp.

Функция log10

Прототип:

double log10(double x);

Заголовочный файл:

()

Описание: возвращает значение десятичного логарифма х (lg х, логарифм по основанию 10).


^ Функция modf

Прототип:

double modf(double x, double *intptr);

Заголовочный файл:

()

Описание: разбивает х на целую и дробную части.


^ Функция pow

Прототип:

double pow(double x, double y);

Заголовочный файл:

()

Описание: вычисляет значение числа х в степени у.


^ Функция sin

Прототип:

double sin(double x);

Заголовочный файл:

()

Описание: возвращает значение синуса х (sin x), получая значение угла в радианах. Возвращаемое значение находится в диапазоне от -1 до 1.

^ Функция sinh

Прототип:

double sinh(double x);

Заголовочный файл:

()

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

^ Функция sqrt

Прототип:

double sqrt(double х);

Заголовочный файл:

()

Описание: возвращает значение квадратного корня х.

^ Функция tan

Прототип:

double tan(double x);

Заголовочный файл:

()

Описание: возвращает значение тангенса х (tg x), где х задается в радианах, и возвращает отношение двух сторон треугольника.

Функция tanh

Прототип:

double tanh(double x);

Заголовочный файл:

()

Описание: возвращает значение гиперболического тангенса х.
^

2.1.8.2. Функции обработки сигналов


Функция raise

Прототип:

int raise(int signal);

Заголовочный файл:

()

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

Функция signal

Прототип:

void (*signal(int signum,void(*func)(int)))(int);

Заголовочный файл:

()

Описание: регистрирует обработчик сигналов.
^

2.1.8.3. Функции ввода-вывода в стиле C


Функция fopen

Прототип:

FILE *fopen(const char *filename, const char *mode);

Заголовочный файл:

()

Описание: функция fopen (file open) открывает файл для чтения или записи либо того и другого вместе, и возвращает указатель на поток

^ Функция getc

Прототип:

int getc(FILE *stream);

Заголовочный файл:

()

Описание: считывает следующий символ из указанного потока ввода.

^ Функция getchar

Прототип:

int getchar(void);

Заголовочный файл:

()

Описание: считывает очередной символ со стандартного потока ввода.

^ Функция gets

Прототип:

char *gets(char *str);

Заголовочный файл:

()

Описание: считывает строку до появления символа новой строки и помещает считанную строку по адресу, заданному указателем str.

^ Функция perror

Прототип:

void perror(const char *string);

Заголовочный файл:

()

Описание: выводит сообщение об ошибке вида: «строка: сообщение», в котором «строка» определяется параметром string, a «сообщение» – кодом ошибки (код ошибки берется из глобальной переменной errno).

^ Функция printf

Прототип:

int printf(const char "format,...);

Заголовочный файл:

()

Описание: выводит на стандартное устройство вывода значения переменных, перечисленных в списке, обозначенном многоточием (...), в формате, определенном строкой format.

^ Функция putc

Прототип:

int putc(int ch, FILE *stream);

Заголовочный файл:

()

Описание: выводит символ, размещенный в младшем байте аргумента ch, в поток указанного файла.

^ Функция putchar

Прототип:

int putchar(int ch);

Заголовочный файл:

()

Описание: выводит символ, размещенный в младшем байте аргумента ch, в стандартный поток вывода.

^ Функция puts

Прототип:

int puts(char *string);

Заголовочный файл:

()

Описание: выводит строку в стандартный поток вывода с добавлением символа новой строки.

^ Функция remove

Прототип:

int remove(const char *filename);

Заголовочный файл:

()

Описание: удаляет существующий файл. В случае успеха возвращает нулевое значение, иначе – ненулевое.


^ Функция rename

Прототип:

int rename(const char *oldname, const char *newname);

Заголовочный файл:

()

Описание: переименовывает существующий файл или папку.

^ Функция scanf

Прототип:

int scanf(const char "format,..);

Заголовочный файл:

()

Описание: вводит данные (строки, целые числа, числа с плавающей точкой и т. д.)

Спецификаторы формата для функции scanf представлены в табл. 8

Таблица 8

Спецификаторы формата для функции scanf()

Вид

Описание

%c

чтение символа

%d

чтение десятичного целого

%i

чтение десятичного целого

Окончание таблицы 8

Вид

Описание

%e

чтение числа типа float (плавающая запятая)

%h

чтение short int

%o

чтение восьмеричного числа

%s

чтение строки

%x

чтение шестнадцатеричного числа

%p

чтение указателя

%n

чтение указателя в увеличенном формате

^ Функция sprintf

Прототип:

int sprintf(char *buffer, const char * format,...);

Заголовочный файл:

()

Описание: аналогично функции printf выводит отформатированные данные, но не на консоль, а в текстовую строку (которую впоследствии можно использовать для вывода на консоль).

^ Функция sscanf

Прототип:

int sscanf(const char *buf, const char * format,...);

Заголовочный файл:

()

Описание: аналогично функции вводит данные, но не с клавиатуры, а из строки символов, переданной ей первым параметром.

Функция tmpfile

Прототип:

FILE *tmpfile(void);

Заголовочный файл:

()

Описание: открывает временный файл в режиме двоичного ввода/ вывода.
^

2.1.8.4. Функция работы с датой и временем


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

Прототип:

size_t *strftime(char *str, size_t max_size,const char *fmt, const struct tm *time);

Заголовочный файл:

()

Описание: формирует строку str, содержащую дату и время в соответствии со строкой формата fmt.
^

2.1.8.5. Функции локализации


Функциями локализации служат такие функции как localeconv и setlocale.

Функция localeconv

Прототип:

struct Iconv *localeconv(void);

Заголовочный файл:

()

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

^ Функция setlocale

Прототип:

char *setlocale(int type, const char *locale);

Заголовочный файл:

()

Описание: устанавливает новую локализацию программы, которая подразумевает набор символов, форматы представления чисел, денежных единиц и т. п., для конкретной страны/ местности.
^

2.1.8.6. Функции классификации и преобразования символов


В языке программирования C++ существует две функции классификации и преобразования символов: tolower и toupper.

Функция tolower

Прототип:

int tolower(int ch);

Заголовочный файл:

()

Описание: получает параметр ch и возвращает его в нижнем регистре (если он является символом буквы верхнего регистра) или сам символ.

^ Функция toupper

Прототип:

int toupper(int ch);

Заголовочный файл:

()

Описание: получает параметр ch и возвращает его в верхнем регистре (если он является символом буквы нижнего регистра) или сам символ.
^

2.1.8.7. Функции управления программой


Основными функциями управления программой являются функции longjmp и setjmp.

Функция longjmp

Прототип:

void longjmp(jmp_buf envbuf, int status);

Заголовочный файл:

()

Описание: выполняет переход по адресу envbuf, ранее определенному с помощью функции setjmp.

Функция setjmp

Прототип:

int setjmp(jmp_buf envbuf);

Заголовочный файл:

()

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

2.1.8.8. Различные функции в стиле C


Функция abort

Прототип:

void abort(void);

Заголовочный файл:

(<сstdlib>)

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

Функция abs

Прототип:

int abs(int num);

Заголовочный файл:

(<сstdlib>)

Описание: возвращает абсолютное значение целого числа num.


^ Функция atexit

Прототип:

void atexit(void (*func)(void));

Заголовочный файл:

()

Описание: регистрирует функцию func, которая будет вызываться при завершении программы.

^ Функция atof

Прототип:

double atof(const char *str);

Заголовочный файл:

()

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

^ Функция atoi

Прототип:

int atoi(const char *str);

Заголовочный файл:

()

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

^ Функция atol

Прототип:

long atol(const char *str);

Заголовочный файл:

()

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

^ Функция bsearch

Прототип:

void bsearch(const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

Заголовочный файл:

()

Описание: производит поиск в массиве buf элемента, совпадающего с тем, на который указывает key, и возвращает указатель на найденный элемент. num – количество элементов в массиве buf, size – размер элемента массива в байтах.

Функция calloc

Прототип:

void *calloc(size_t num, size_t size);

Заголовочный файл:

()

Описание: выделяет блок памяти (num элементов по size байт) и возвращает указатель на него.

^ Функция div

Прототип:

div_t div(int numerator, int denominator);

Заголовочный файл:

()

Описание: функция div производит деление целого numerator на целое denominator, возвращая результат в структуре, содержащей частное и остаток.

^ Функция exit

Прототип:

void exit(int exit_code);

Заголовочный файл:

()

Описание: функция exit выполняет нормальное завершение программы.

^ Функция free

Прототип:

void free(void *pointer);

Заголовочный файл:

()

Описание: освобождает блок памяти, полученный ранее одной из функций malloc, calloc, realloc. malloc, calloc или realloc.


^ Функция getenv

Прототип:

int getenv(const char *var_name);

Заголовочный файл:

()

Описание: возвращает указатель на строку, которая содержит описание указанной переменной окружения (среды).

^ Функция labs

Прототип:

long int labs(long int num);

Заголовочный файл:

()

Описание: возвращает абсолютное значение num.

Функция ldiv

Прототип:

ldiv_t ldiv(long numerator, long denominator);

Заголовочный файл:

()

Описание: выполняет деление numerator на denominator, возвращая результат в структуре типа ldiv_t, содержащей частное и остаток. результат в структуре типа ldiv_t, содержащей частное и остаток.

^ Функция malloc

Прототип:

void *malloc(size_t size);

Заголовочный файл:

()

Описание: выделяет блок памяти размером size байт и возвращает указатель на него.

^ Функция qsort

Прототип:

void qsort(void *buf,size_t num,size_t size, int (compare)(const void *, const void *));

Заголовочный файл:

()

Описание: выполняет сортировку массивов любых размеров и типов.


^ Функция rand

Прототип:

int rand(void);

Заголовочный файл:

()

Описание: возвращает очередное псевдослучайное число в диапазоне от 0 до RAND_MAX.

^ Функция realloc

Прототип:

void *realloc(void *memblock, size_t size);

Заголовочный файл:

()

Описание: получает блок памяти (выделенный ранее одной из функций malloc, calloc, realloc). malloc, calloc или realloc).

Функция srand

Прототип:

vid srand(unsigned i.nt seed);

Заголовочный файл:

()

Описание: устанавливает начальное значение последовательности псевдослучайных чисел.

^ Функция strtod

Прототип:

double strtod(const char *str, char **end);

Заголовочный файл:

()

Описание: преобразует строку символов в числовое значение и возвращает его.

^ Функция strtol

Прототип:

double strtol(const char *str, char **end, int radix);

Заголовочный файл:

()

Описание: преобразует строку символов в числовое значение с учетом указанной системы счисления radix и возвращает полученное число.

^ Функция strtoul

Прототип:

double strtoul(const char *str, char **end, int radix);

Заголовочный файл:

()

Описание: преобразует строку символов в числовое значение с учетом системы счисления.

^ Функция system

Прототип:

int system(const char *command);

Заголовочный файл:

()

Описание: передает строку командному процессору операционной системы.




оставить комментарий
страница3/12
Дата05.07.2012
Размер1,21 Mb.
ТипДокументы, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   2   3   4   5   6   7   8   9   ...   12
плохо
  1
средне
  1
хорошо
  1
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

наверх