Стандартни функции в програмирането
Не е необходимо да се пишат програмите с всичките им подроб-ности. С++ предлага множество стандартни функции. Тяхното из-ползване повишава продуктивността и пести програмистко време. Не е необходимо да се пише кода на програмата в подробности, тъй като стандартните функции поддържат множество полезни при-ложни изчисления.
Достъпни са функции за преобразуване на символи, проверка на символи и низове, обработка на низове, математически опера-ции и генериране на случайни числа.
Функции за проверка на символи
Няколко функции проверяват характеристиките на символните данни. Може да се провери дали символите са букви, цифри, малки букви, големи букви и др. Към функцията трябва да се по-даде като аргумент символна променлива или константа поста-вяйки я в скоби. Тези функции връщат стойност True (истина) или False (неистина), която може да се провери в оператор if или в цикъл while.
Проверки за букви и цифри
Следните функции проверяват характеристиките на букви:
- isalpha(c): връща стойност True ,ако с е малка буква или главна буква и False, ако с не е буква;
- islower(c): връща стойност True, ако с е малка буква и False в противен случай;
- isupper(c): връща стойност True, ако с е главна буква и False в противен случай;
Следващите функции проверяват цифри:
- isdigit(c): връща стойност True, ако с е цифра от 0 до 9 и False в противен случай;
- isxdigit(c): връща стойност True, ако с е шестнадесетична цифра от 0 до 9 или A, B, C, D, E, F, a, b, c, d, e, f и стойност False ако с е нещо друго.
Следващата функция проверява дали аргументите са букви или цифри:
- isalnum(c): връща стойност True, ако с е цифра от 0 до 9 или буква и False в противен случай;
Функции за проверка на специални символи
Има няколко полезни символни функции за четене от дисков фаил, модем или друго устройство в операционната система. Тези функции не се използват толкова често, но са много полезни за проверка на специалните символи. Функциите за проверка на сим-волите не променят стойността им.
- iscntrl(c): връща стойност True, ако с е управляващ символ (произволен символ от ASCII таблицата със стойност от 0 до 31) и False в противен случай;
- isgraph(c): връща стойност True, ако с е символ с графично пред-ставяне (неуправляващ символ, с изключение на интервала) и False в противен случай;
- isprint(c): връща стойност True, ако с е символ с графично пред-ставяне (неуправляващ символ) с ASCII стойност от 32 до 127 (включително интервала) и False в противния случай;
- ispunct(c): връща стойност True, ако с е произволен препина-телен знаk (символ, различен от интервал, буква или цифра) и False в противен случай;
- isspace(c): връща стойност True, ако с е интервал, символ за нов ред (\n), символ за връщане на каретката(\r),символ за табулация (\t) и за вертикална табулация(\v) и False в противен случай.
Функции за преобразуване на символи
Следващите две символни функции вместо да проверяват символи, променят малки букви в главни и онратно:
- tolower(c): преобразува символа с в малка буква. Ако се подаде малка буква или символ, нищо не се променя;
- toupper(c): преобразува символа с в голяма буква. Ако се подаде голяма буква или символ, нищо не се променя.
Функции за работа с низове
Функциите за работа с низове са едни от най-мощните стан-дартни функции на С++. Съществуват множество полезни функции за проверка и преобразуване на низове. Функциите за работа с низове обработват константни низове или масиви от символи, съдържащи низове.
Следващите функции проверяват и обработват низове:
- stracat(s1,s2): обединява низа s2 к1м края на масива от символи s1. Масивът s1 трябва да има достатъчно елементи за съхраняване на двата низа.
- strcmp(s1,s2): сравнява низа s1 с низа s2 елемент по елемент в азбучен ред. Ако s1 предхожда в азбучен ред s2 (т.е s1<s2), strcmp() връща отрицателна стойност. Ако s1 и s2 са еднакви низове (s1==s2), strcmp() връща стойност нула. Ако s1 следва в азбучен ред s2 (s1>s2), strcmp() връща положителна стойност.
- strlen(s1): втъща дължината на низа s1.
Преобразуване на низове в числа
Понякога се налага да се преобразуват числа, запазени в низове от символи, в данни от числен тип.
- atoi(s): преобразува низа s в цяло число. Името на функцията е съкращение от alphabetic to integer
- atol(s): преобразува низа s в дълго цяло число. Името на функцията е съкращение от alphabetic to long integer
- atof(s): преобразува низа s в число с плаваща запетая. Името на функцията е съкращение от alphabetic to floating point
Числени функции
Няколко стандартни числови функции връщат резултати, изчислени въз основа не числени променливи и константи, подадени им като параметри. Тези функции получават като параметри реални числа с двойна стойност.
- ceil(x): функцията закръглява стойността на аргумента до най-близкото по-голямо цяло число;
- fabs(x): връща абсолютната стойност на x (положителният екви-валент на числото);
- floor(x): закръглява стойността на аргумента до най-близкото по-малко цяло число;
- fmod(x,y): връща остатъка от делението x/y като цяло число с пла-ваща запетая със същия знак, като този на x; стойността на y не може да бъде 0. Тъй като операцията за изчисляване на остатък (%) работи само с цели числа, тази функция е полезна за намиране на остатъка от делението на числа с плаваща запетая;
- pow(x,y): връща стойността на x, повдигната на степен y. Ако стойността на x е по-малка или равна на 0, y трябва да бъде цяло число. Ако стойността на x е равна на 0, y не може да бъде отри-цателно число.
- sqrt(x): връща квадратния корен на x. Стойността на x трябва да бъде по-голяма или равна на 0.
Задача: Да се напише програма, която сравнява въведените числа или символи низове, използвайки функции с еднакви имена.
#include<iostream.h>
#include<string.h>
using namespace std;
int Max (int, int);
//списък с прототипи на функции с едно и също име
double Max (double, double);
char Max (char, char);
bool Max (bool, bool);
string Max (string, string);
int Max (int, int, int);
int main()
{
int n1 = 11, n2 = 99, n3 = 33;
double d1 = 11.1, d2 = 99.9;
char c1 = ‘a’, c2 = ‘A’;
bool b1 = false, b2 = true;
string s1(“map”), s2 (“Map”);
// обръщение към функциите с едно и също име
cout<<”max(“<<n1<<”, “<<n2<<”) = “<<Max (n1, n2)<<endl;
cout<<”max(“<<d1<<”, “<<d2<<”) = “<<Max (d1, d2)<<endl;
cout<<”max(“<<c1<<”, “<<c2<<”) = “<<Max (c1, c2)<<endl;
cout<<”max(“<<b1<<”, “<<b2<<”) = “<<Max (b1, b2)<<endl;
cout<<”max(“<<s1<<”, “<<s2<<”) = “<<Max (s1, s2)<<endl;
cout<<”max(“<<n1<<”, “<<n2<<”, “<<n3<<”) = “<<Max (n1, n2,n3)<<endl;
}
//дефиниции на функциите с едно и също име
int Max2 (int n1, int n2)
{
return (n1 > n2) ? n1:n2;
}
double Max (double d1, double d2)
{
return (d1 > d2) ? d1 : d2;
}
char Max (char c1, char c2)
{
return (c1 > c2) ? c1 : c2;
}
bool Max (bool b1, bool b2)
{
return (b1 > b2) ? b1 : b2;
}
string Max (string s1, string s2)
{
return (s1 > s2) ? s1 : s2;
}
int Max (int n1, int n2, int n3)
{
return Max (n1, Max(n2, n3));
}
Изпълнение на програмата
- max(11, 99) = 99 //сравнява цели числа
- max(11.1, 99.9) = 99.9 //сравнява реални числа
- max(a, A) = a //сравнява знаци
- max(0, 1) = 1 //сравнява логически сойности
- max (map, Map) = map //сравнява низове
- max (11, 99, 33) = 99 //сравнява цели числа
В програмата са дефинирани шест различни функции с едно и също име. Те обаче са с различни сигнатури, тъй като списъците от типове данни на техните параметри са различни. В зависимост от типа на аргументите компилаторът еднозначно ще определи към коя от функциите да се обърне. За намиране на максималното от 3 числа последната функция извърщшва двукратно обръщение към функция със същото име, но с 2 целочислени аргумента.
Сходни статии:
- Програмиране в C и C++ Кодирането или съставянето на програмата е реализация на алгоритмите чрез език за програмиране. Езиците за програмиране от високо ниво, какъвто е и програмният език C, се характеризират със задължителни синтактични...
- Търсене на числа от поредица автор: Веселин Димитров Програмата е създадена с цел намирането на числа от поредица такива, които са по-големи от сбора на всички предхождащи го числа. Програмата позволява да се четат числа...
- Програми за управление Осъществяване на закъснение Едночиповите микрокомпютри се използват обикновено за управление на някакви обекти. Аритметичните действия, които могат да извършват , се използват именно за целите на управлението, а не за...
- Пример за обектно ориентирана реализация на свързан стек Ще се възползваме от тясната връзка между св. списъци и стекове чрез повторно използване на класа на списъците. Ще приложим 2 разновидности на повторното използване. Отначало ще реализираме класа на...
- Интернет протокол. Time-to-Live, Tos функции Битовете за тип на услугата (Type of Service –ToS), които са общо 8, могат да влияят върху пътя, по който преминават дейтаграмите, докато маршрутизаторите ги препращат от източника до местоназначението....