Оператори и библиотечни функции, деклариране на данни
Всеки език за програмиране включва специфични означение и служебни думи - те са част от синтаксиса на самия език. Под служебни, резервирани, ключови думи ще разбираме такава последователност от символи, която вече се ползва от компилатора или е записана в библиотечен файл като име. Тази страница постепенно ще се попълва основно с примерни програми - конкретна реализация на език за програмиране Dev C++. Всяка от тях ще включва описание на характерни алгоритми, както и илюстриране действието на вградените в езика библиотечни функции и оператори - служебните думи на езика. Библиотечни функции - наричат се така, т.к. тяхното описание се съдържа в определени файлове - библиотеки. Всички функции библиотечни или потребителски се състоят от четири обособени части: тип, уникално име на конкретната функция, списък от аргументи - параметри и тяло на същата функция. Прототип на функция - формира се от първите три елемента: тип, име и аргументи. В езика C++ неизменно присъства основната функция main. Описаните в нея фунции и оператори се изпълняват най-често последователно - в реда на изписването им. Всяка отделна функция трябва да притежава уникално име - обърнете внимание, че голяма и малка букви се възприемат като два различни знака. Списъкът от аргументи в дадена функция може да бъде и празен, или да съдържа аргументи от вече деклариран тип. Всеки аргумент, без последния, се отделя със запетая. Аналогията между празен списък с аргумент в дадена функция и празен съставен оператор е ясна. В тялото на всяка функция могат да се включва име на библиотечни или потребителски дефинирани функции, оператори от вида return, for, do, while, if, struct, case и др. декларации на използвани променливи, коментар и др. По-общо казано тялото на всяка функция съдържа последователност от оператори, променливи и/или вече декларирани функции. Тялото на всяка функция е затворено във фигурни скоби. Ако функцията връща стойност последният ред съдържа оператор return и стойност. Същото се отнася и за main - най-често последният ред има вида return 0;
оператор return Нека разгледаме следната задача: въведени са две естествени числа и трябва да се изведе числото с по-голяма стойност.
Ползват се три отделни функции. Двете функции са тип void – само извеждат резултата. Последната функция връща стойността на резултата на извикалата я функция – в случая главната функция в програмата.
escape - символни константи с обратна наклонена черта
Следващите комбинации от знаци се състоят от от 2 знака, като първият е \ - обратна наклонена черта.
\b Backspace (изтриване на предишния символ).
\f Нова страница.
\n Нов ред.
\г Връщане на каретката.
\t Хоризонтален табулатор.
\" Двойна кавичка.
\’ Единична кавичка.
\0 Празен (нулев) символ.
\\ Обратна наклонена черта.
\v Вертикален табулатор.
\а Звуков сигнал внимание.
\? Въпросителен знак.
модификатори и оператори в Dev C++ auto се използва за създаване на временни променливи, създавани при влизане в блок с код и разрушавани при излизане. Употребата на auto не е задължителна, защото по подразбиране всички локални променливи са auto.
break този оператор се използва за излизане от цикли do, while и for, като заобикаля нормалното условие на цикъла. Освен това тя се използва и за излизане от конструкции switch.
case Замества съставен оператор за проверка на условие - if. case се разглежда заедно със switch.
char е тип за данни, използван за деклариране на знакови променливи.
const модификатор const указва на компилатора, че съдържанието на дадена променлива не може да се променя. Освен това той се използва, за да предотврати промяната на някои от параметрите на дадена функция.
continue този оператор се използва, за пропускане на част от кода на даден цикъл и за предизвикване на пресмятането на израза с условието.
default този оператор се използва в конструкцията switch , за определяне на блока с код, който да се изпълни по подразбиране, ако не бъде намерено съвпадение в switch.
do оператор за цикъл do - един от трите видове цикли в С. Цикълът do винаги ще се изпълни поне веднъж, защото условието му се проверява накрая.
double модификатор за тип, използван за деклариране на променливи с плаваща запетая и с двойна точност.
else този оператор се прилага при проверка на логическо условие. else се разглежда заедно с if.
enum модификатор за тип и се използва за създаване на изброителни типове - списък от именувани целочислени константи.Пример: дните на седмицата.
extern модификаторът на тип extern указва не компилатора, че дадена променлива е дефинирана някъде (в друга част) в програмата.Това се прилага често в програми с отделно компилирани файлове, които поделят общи глобални данни и след това се свързват заедно, т.е. така се осведомява компилатора за дадена променлива без да се налага повторното й дефиниране.
float модификатор за тип - при деклариране на променливи с плаваща запетая.
for оператор за цикъл for - дава възможност за автоматично инициализиране и инкрементиране на променливата на цикъла.
goto този оператор води до безусловен преход на програмата към етикет, зададен в конструкцията goto.
if оператор за проверка на логическо условие. Ползва се съвместно с else, но не е задължително.
int модификатор за тип – при деклариране на целочислени променливи.
long е модификатор на тип - при деклариране на големи числа (цели или double променливи).
register модификатор register изисква дадена променлива да се съхранява но начин, позволяващ най-бързия възможен достъп до нея.
return оператор return предизвиква завършването на функцията и може да се използва за връщане на стойност на извикващата процедура.
short модификатор за тип, използван за деклариране на малки цели числа.
signed модификатор на тип данни.
sizeof Служебната дума sizeof е оператор по време на компилиране, връщащ дължината на дадена променлива.
static Служебната дума static е модификатор на тип за данни, каращ компилатора да създаде постоянно "хранилище" за дадена локална променлива.По този начин се дава възможност на тази променлива да запазва своята стойност между отделните извиквания на функцията.
struct оператор struct се използва за създаване на агрегатни типове данни, наречени структури, които се състоят от един или повече членове.
switch този оператор се ползва за разклонение на алгоритъм/програма - за насочване на изпълнението по един от няколко възможни пътя. Всеки набор от конструкции може да е с произволен брой конструкции. Частта default не е задължителна.Изразът, контролиращ switch, както и всички case константи трябва да са от тип int или char.
typedef Конструкцията typedef дава възможност за създаване на ново име на съществуващ тип за данни.
union Служебната дума union създава агрегатен тип, в който две или повече променливи споделят една и съща памет.Формата на декларацията и начините за достъп до членовете са същите, както при struct.
unsigned модификатор за тип - указва на компилатора да създаде променлива, която съдържа само положителни стойности - без знак.
void Спецификаторът на тип void се използва основно при деклариране на функции, които не връщат стойност, за създаване на общи указатели.
volatile този модификатор указва на компилатора, че дадена променлива може да променя своята стойност по начини, които не са изрично зададени в програмата.Променливи, променяни от хардуера, като например: таймери (часовници), прекъсвания и т.н. са пример за такива променливи.
while оператор за цикъл с предусловие. Ако обектът на while е една конструкция, скобите може да бъдат пропуснати. Цикълът ще се повтаря, докато условие е true.
специфични тригонометрични функции
Лудолфово число PI=3.141593
Logarithm to base B | LOGB(X)=LOG(X)/LOG(B) |
Secant | SEC(X)=1/COS(X) |
Cosecant | CSC(X)=1/SIN(X) |
Cotangent | COT(X)=1/TAN(X) |
Inverse sine | ARCSIN(X)=ATN(X/SQR(1-X*X)) |
Inverse cosine | ARCCOS(X)=0.5*PI-ATN(X/SQR(1-X*X)) |
Inverse secant | ARCSEC(X)=ATN(SQR(X*X-1))+(X"&"0)*PI |
Inverse cosecant | ARCCSC(X)=ATN(1/SQR(X*X-1))+(X"&"0)*PI |
Inverse cotangent | ARCCOT(X)=0.5*PI-ATN(X) |
Hyperbolic sine | SINH(X)=(EXP(X)-EXP(-X))/2 |
Hyperbolic cosine | COSH(X)=(EXP(X)+EXP(-X))/2 |
Hyperbolic tangent | TANH(X)=(EXP(X)-EXP(-X))/(EXP(X)+EXP(-X)) |
Hyperbolic secant | SECH(X)=2/(EXP(X)+EXP(-X)) |
Hyperbolic cosecant | CSCH(X)=2/(EXP(X)-EXP(-X)) |
Hyperbolic cotangent | COTH(X)=(EXP(X)+EXP(-X))/(EXP(X)-EXP(-X)) |
Inverse hyperbolic sine | ARCSINH(X)=LOG(X+SQR(X*X+1)) |
Inverse hyperbolic cosine | ARCCOSH(X)=LOG(X+SQR(X*X-1)) |
Inverse hyperbolic tangent | ARCTANH(X)=LOG((1+X)/(1-X))/2 |
Inverse hyperbolic secant | ARCSECH(X)=LOG((1+SQR(1-X*X))/X) |
Inverse hyperbolic cosecant | ARCCSCH(X)=LOG((1+SGN(X)*SQR(1+X*X))/X) |
Inverse hyperbolic cotangent | ARCCOTH(X)=LOG((X+1)/(X-1))/2 |