Най-четените учебни материали
Най-новите учебни материали
***ДОСТЪП ДО САЙТА***
ДО МОМЕНТА НИ ПОСЕТИХА НАД 2 500 000 ПОТРЕБИТЕЛИ
БЕЗПЛАТНИТЕ УЧЕБНИ МАТЕРИАЛИ ПРИ НАС СА НАД 7 700
Ако сме Ви били полезни, моля да изпратите SMS с текст STG на номер 1092. Цената на SMS е 2,40 лв. с ДДС.
Вашият СМС ще допринесе за обогатяване съдържанието на сайта.
SMS Login
За да използвате ПЪЛНОТО съдържание на сайта изпратете SMS с текст STG на номер 1092 (обща стойност 2.40лв.)Функции 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 В следващата таблица са дадени някои библиотечни математически функции и библиотеките, в които са описани.
Забележки: 1. Ако на функция от тип double, се подаде аргумент от тип int, произтича неявно преобразуване на типа int в double. 2. Ако като първи аргумент на pow(double, double) се подаде отрицателно число, вторият аргумент трябва задължително да е цял. Следващите функции са предназначени за работа със символи. Описани са в библиотеката със заглавен файл ctype.h. Всяка от посочените функции изисква един аргумент от тип char.
Забележка: Функциите 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) Да се напише програма, която въвежда последователност от символи, завършваща с ‘.’, и извежда същата последователност, но с инвертирани главни и малки букви (главните се заменят със съответните малки, а малките – с главни).
|