Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Сpp 25.09.11 (2).doc
Скачиваний:
16
Добавлен:
19.08.2019
Размер:
10.09 Mб
Скачать

2.2. Библиотечные функции

Приводя различные примеры, мы старались избегать использования выражений, которые содержали бы математические функции, например возведение в степень, или взятие логарифма. В языке С++ таких операторов просто нет, но есть функции, которые содержатся в библиотеке компилятора. Эти функции написаны лучшими программистами мирового уровня, протестированы на предмет ошибок и, поэтому, вполне могут применяться в наших программах. Вот некоторые библиотечные функции.

Арифметические функции.

Прототип

Описание

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

int abs(int);

Абсолютное значение

cstdlib

long labs(long);

Абсолютное значение

cstdlib

double fabs(double);

Абсолютное значение

cmath

double sqrt(double);

Квадратный корень

cmath

double pow(double,double);

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

cmath

double exp(double);

e возводится в степень аргумента

cmath

double log(double);

Натуральные логарифм ln

cmath

double log 10(double);

Десятичный логарифм lg

cmath

double ceil(double);

Округление аргумента в меньшую сторону

cmath

double floor(double);

Округление аргумента в большую сторону

cmath

Тригонометрические функции

Прототип

Орисание

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

double cos(double);

Косинус

cmath

double cosh(double);

Косинус гиперболический

cmath

double sin(double);

Синус

cmath

double sinh(double);

Синус гиперболический

cmath

double tan(double);

Тангенс

cmath

double tanh(double);

Тангенс гиперболический

cmath

double acos(double);

Арккосинус

cmath

double asin(double);

Арксинус

cmath

double atan(double);

Арктангенс

cmath

Генератор случайных чисел

Прототип

Орисание

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

int random(int n);

random(n) возвращает псевдослучайное целое число большее или равное 0 и меньшее или равное n

cstdlib

int rand();

Возвращает псевдослучайное целое число от 0 до константы определенной в конкретной реализации компилятора, но не меньшей 32767

cstdlib

Функции работы с символами

Прототип

Описание

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

bool isalnum(char)

Возвращает true если аргумент буква или цифра, в противном случае false.

cctype

bool isalpha(char)

Возвращает true если аргумент буква, в противном случае false.

cctype

bool isdigit(char)

Возвращает true если аргумент цифра, в противном случае false.

cctype

bool ispunct(char)

Возвращает true если аргумент не буква, не цифра и не пробел, в противном случае false.

cctype

bool isspace(char)

Возвращает true если аргумент прбел, табуляция или возврат каретки, в противном случае false.

cctype

bool isстек(char)

Возвращает true если управляющий символ, в противном случае false.

cctype

bool islower(char)

Возвращает true если аргумент строчная буква, в противном случае false.

cctype

bool isupper(char)

Возвращает true если аргумент прописная буква, в противном случае false.

cctype

int tolower(char)

Возвращает код строчной версии символа-аргумента. При ее отсутствии возвращает значение аргумента.

cctype

int toupper(char)

Возвращает код прописной версии символа-аргумента. При ее отсутствии возвращает значение аргумента.

cctype

Конечно, здесь приведена лишь малая часть библиотечных функций. Для того, чтобы воспользоваться этими функциями нужно создать соответствующую директиву препроцессору в которой указать название библиотеки, в которой находится вызываемая программой функция. Впрочем, мы уже знакомы с библиотечными функциями cin и cout, которые предназначены для обеспечения ввода и вывода. Напомним, что для включения их в программу нужно дать директиву препроцессору в виде #include <iostream>, или #include <iostream.h>. Каждая директива должна начинаться с новой строки. В этих директивах в угловых скобках указывается название библиотеки функции, которой потребуются в программе.

Как и всегда рассмотрим пример программы. В данном случае это будет программа для перевода вводимых строчных символов в заглавные.

//Преобразование строчных символов в заглавные

#include <iostream.h> //подключение библиотек

#include <cctype>

void main(){

char ch;

while(true){

cin >> ch;

ch= toupper(ch);/*определение кода и преобразование кода

в символ с помощью оператора присваивания*/

cout << ch;

}

}

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

Среди большого числа библиотек с которыми работает С++ есть библиотека функций предназначенных для работы с операционной системой Windows. В эту библиотеку входит функция, которая позволяет сменить кодировку консоли. Дело в том, что консоль использует, так называемую кодировку “OEM”. В то время как windows работает в кодировке " Windows 3.1 Cyrillic ", или иначе 1251. Коды символов национальных алфавитов в этих кодировках различные. Поэтому на экране вместо русских букв появляются всякие крючки.

Для вывода кириллицы, нужно выполнить два условия:

- сменить кодировку консоли;

- использовать на консоле приемлемый шрифт, т.е. графическое начертание символов в котором предусмотрены требуемые буквы.

В приведенной ниже программе используются функции GetConsoleOutputCP()и SetConsoleOutputCP(номер_кодировки). Первая функция позволяет определить тип применяемой кодировки, в данном случае это будет 866 (т.е. DOS 866) это и есть “OEM”. Вторая назначить кодировку, в данном случае это будет " Windows 3.1 Cyrillic ". Аргументом функции в этом случае будет идентификатор соответствующий данному названию – 1251 (см. приложение).

//Пример программы с печатью русским шрифтом Windows

#include <iostream>

#include <windows>

using namespace std;

int main()

{

cout << GetConsoleOutputCP()<<endl;

SetConsoleOutputCP(1251);

cout << GetConsoleOutputCP()<<endl;

cout<<"Привет!"<<endl<<endl;

return 0;

}

Если вы запустите выполнение программы, то вновь не увидите желаемых русских букв. Чтобы их получить необходимо выполнить второе условие – применить специальный шрифт. Выбор шрифтов у консоли невелик. Нам подойдет "Lucida Console". Для того чтобы его установить щелкните по левому верхнему углу окна консоли. В появившемся меню выберите пункт "Свойства". На вкладке "Шрифт" выберете "Lucida Console". Если компилятор говорит о том, что не может найти файл windows попробуйте присоединить windows.h.

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

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

В качестве примера попробуйте создать следующую программу и объяснить результаты ее работы

#include<iostream>

#include<windows.h>

using namespace std;

main(){

for(int i=0;i<20;i++){

SetCursorPos(rand()%640,rand()%480); /*установка курсора в точку

со случайными координатами */

Sleep(100); //пауза 100 миллисекунд } }

}

}

Заканчивая разговор о функциях, сделаем еще одно замечание.

Если функция не объявлена со спецификатором void, то её можно использовать в качестве операнда в любом выражении. Например,

//Программа для нахождения наибольшего из двух целых меньших 100

#include <iostream>

#include <windows>

using namespace std;

int max(int x, int y){return x>y?x:y;} /*Определяет максимальное

из двух целых x и y*/

void main(){

SetConsoleOutputCP(1251);

int i,j;

do {

cout<<"i=";

cin>>i;

cout<<"j=";

cin>>j;

if(max(i,j)<0) //

cout<<"введите числа еще раз\n";

else cout<<"max="<<max(i,j)<<endl;

}

while(max(i,j)<100);

}