***ДОСТЪП ДО САЙТА***

ДО МОМЕНТА НИ ПОСЕТИХА НАД 2 500 000 ПОТРЕБИТЕЛИ

БЕЗПЛАТНИТЕ УЧЕБНИ МАТЕРИАЛИ ПРИ НАС СА НАД 7 700


Ако сме Ви били полезни, моля да изпратите SMS с текст STG на номер 1092. Цената на SMS е 2,40 лв. с ДДС.

Вашият СМС ще допринесе за обогатяване съдържанието на сайта.

SMS Login

За да използвате ПЪЛНОТО съдържание на сайта изпратете SMS с текст STG на номер 1092 (обща стойност 2.40лв.)


SMS e валиден 1 час
Функции 3 ПДФ Печат Е-мейл

I. Функции

Първият етап от създаването на всяка програма е съставянето на алгоритъм. При решаването на по-сложни проблеми, се налага задачата да се разбие на по-прости подзадачи. За всяка от тях може да се опише отделен алгоритъм, който да се реализира чрез своя подпрограма. Този метод на работа е известен под името “разделяй и владей”.  Той не само улеснява решаването на даден проблем, но и дава възможност върху дадена програма да работят едновременно няколко програмиста – всеки върху отделна част от програмата, наречена функция.

Функция – именувана подпрограма, реализираща даден подалгоритъм.

1. Предопределени (библиотечни) функции

Програмистите, работещи върху създаването и усъвършенстването на езика С++, забелязват, че някои подалгоритми се явяват съставна част на множество други алгоритми. Честата им употреба налага създаването на реализиращи ги функции, които могат да се използват от всеки програмист на С++. За удобство са организирани в библиотеки според предназначението им. Тъй като тези функции са предварително определени (дефинирани) и са неразделна част от езика, те носят името предопределен (библиотечни) функции.

1.1. Обръщение към функция

Да предположим, че по някаква причина, се налага да пресметнем стойността на 25. Бихме могли да опишем алгоритъм за намирането на тази стойност, но тъй като повдигането на число на дадена степен е достатъчно популярен проблем, за решаването му е създадена вградена функция – pow(double, double). За да пресметнем 25 и присвоим резултата на променливата power, е достатъчно да вмъкнем в програмата редовете

double power;

power = pow(2,5);

Изразът pow(2,5); се нарича обръщение към функция или още извикване на функция. Всяка функция се характеризира с тип на връщаната стойност (тип на функцията). Тъй като pow(double,double) връща стойност от тип double, то променливата, която приема тази стойност (power) трябва да бъде от същия тип. Разбира се, преди да извикаме дадена функция, трябва да присъединим към програмата библиотеката, в която е описана тази функция. В случая това е библиотеката math. Присъединяването й към програмата, както вече знаем, става чрез инструкцията

#include

Редът #include се нарича включваща директива и означава, че към обектния код на програмата трябва да се добави кода на библиотеката math. Файлът math.h се нарича заглавен (header) файл. Такива са всички файлове с разширение .h.

Обръщение към функция

Синтаксис:

Име_на_функция (списък_от_аргументи),

където списък_от_аргументи има вида

Аргумент_1, Аргумент_2, ...  Аргумент_N

В следващата таблица са дадени някои библиотечни математически функции и библиотеките, в които са описани.

Име

Предна-значение

Тип на аргумента

и тип на стойността

на функцията

Пример

Стойност

Заглавен файл

sqrt(x)

 

double

sqrt(4.0)

2.0

math.h

pow(x,y)

xy

double

pow(5.0,3.0)

125.0

math.h

abs(x)

| x |

int

abs(-7)

abs(7)

7

7

stdlib.h

labs(x)

| x |

long

labs(-98.534)

labs(98.534)

98534

98534

stdlib.h

fabs(x)

| x |

double

fabs(-98.534)

fabs(98.534)

98.534

98.534

math.h

ceil(x)

закръгляване нагоре

double

ceil(3.2)

ceil(3.9)

4.0

4.0

math.h

floor(x)

закръгляване нaдолу

double

floor(3.2)

floor(3.9)

3.0

3.0

math.h

sin(x)

sin x

double

sin(M_PI/6)

0.5

math.h

cos(x)

cos x

double

cos(M_PI/3)

0.5

math.h

tan(x)

tg x

double

tan(3*M_PI/4)

-1

math.h

asin(x)

arcsin x

double

asin(1)

1.570796

math.h

acos(x)

arcos x

double

acos(1)

0

math.h

atan(x)

arctg x

double

atan(1)

0.785398

math.h

Забележки:

1. Ако на функция от тип double, се подаде аргумент от тип int, произтича неявно преобразуване на типа int в double.

2. Ако като първи аргумент на pow(double, double) се подаде отрицателно число, вторият аргумент трябва задължително да е цял.

Следващите функции са предназначени за работа със символи. Описани са в библиотеката със заглавен файл ctype.h. Всяка от посочените функции изисква един аргумент от тип char.

Име

Предназначение

Тип на върнатата стойност

isalnum(ch)

истина (1) – ако ch е буква или цифра;

лъжа (0) – в противен случай

int

isalpha(ch)

истина (1) – ако ch е буква;

лъжа (0) – в противен случай

int

isdigit(ch)

истина (1) – ако ch е цифра;

лъжа (0) – в противен случай

int

isspace(ch)

истина (1) – ако ch е интервал;

лъжа (0) – в противен случай

int

islower(ch)

истина (1) – ако ch е малка латинска буква;

лъжа (0) – в противен случай

int

isupper(ch)

истина (1) –ако ch е главна латинска буква;

лъжа (0) – в противен случай

int

tolower(ch)

- ако ch е главна латинска буква, връща съответната малка латинска буква;

- в противен случай връща аргумента без промяна

int

toupper(ch)

- ако ch е малка латинска буква, връща съответната главна латинска буква;

- в противен случай връща аргумента без промяна

int

Забележка: Функциите tolower и toupper връщат стойност от тип int – кода на съответните символи. За да се използват самите символи трябва да се направи явно или неявно преобразуване на типа.

Неявно преобразуване на типа настъпва, когато на израз от един тип се присвои стойност от друг тип, например

char sym;

sym = toupper(‘a’);

В резултат на присвояването символа sym ще получи стойност ‘А’, тъй като е обявен от тип char.

Явно преобразуване на типа се постига чрез функциите за преобразуване на тип.

1.2. Функции за преобразуване на типа

Да припомним, че изразът 7/2 означава целочислено деление и резултатът е 3, а не 3.5. Ако искаме да се получи реален резултат, трябва поне единият от двата операнда да е от тип double. Например 7.0/3.

Ако обаче, и двата операнда са променливи от тип int, преобразуването не може да стане по този начин. В такъв случай се използва функцията  double(int).

Пример:

int apples, guys;

double apples_per_guy;

apples_per_guy = double ( apples ) / guys;

В горния пример първо се извършва преобразуване на стойността на променливата apples от тип int в тип double чрез функцията double(int), след това се извършва делението.

В С++ е възможно и обратното преобразуване – на променлива от тип double в тип int. Аналогичната функция е int(double). При изпълнението й дробната част на аргумента се отрязва.

Пример:

double salary = 250.87;

real_pay = int (salary);

След изпълнението на фрагмента променливата real_pay ще има стойност 250.

По подобен начин израз от тип int може да се преобразува в char и обратно.

Преобразуване на тип int в double

Синтаксис:

double ( Израз_от_тип_int );

Преобразуване на тип double в int

Синтаксис:

int ( Израз_от_тип_double );

Преобразуване на тип int в char

Синтаксис:

char ( Израз_от_тип_int );

Преобразуване на тип char в int

Синтаксис:

int ( Израз_от_тип_char );

Въпроси и задачи:

1. Запишете следните изрази на С++:

;                 ;              | x – y | ;                         ;

(i)                                                                                                                                                                                                       Напишете програма, намираща страната на квадрат с лице S.

(ii)                                                                                                                                                                                                     Да се напише програма, която пресмята лицето на:

-                                                            квадрат със страна а;

-                                                            равностранен триъгълник със страна а;

-                                                            кръг с радиус r.

Потребителят трябва да има възможност да избира някой измежду предложените варианти, докато желае.

(iii)                                                                                                                                                                                                    Да се напише програма, която въвежда последователност от символи, завършваща с ‘.’, и извежда същата последователност, но с инвертирани главни и малки букви (главните се заменят със съответните малки, а малките – с главни).

 

 

WWW.POCHIVKA.ORG