![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/LampFlowchart_mk.svg/langmk-640px-LampFlowchart_mk.svg.png&w=640&q=50)
Алгоритам
постапка за пресметка / From Wikipedia, the free encyclopedia
Алгоритам — определен број на јасно дефинирани кратки и прости инструкции за извршување на одредена задача, или решавање на зададен проблем. Пишувањето на програми може да биде тежок процес, посебно ако се прави без да се следаат добри препораки или упатства. Структурното програмирање е еден принцип за развој на програми кои го „разбива“ кодот на помали делови што соосдветствува на решавањето на сложен проблем со негово делење на поедноставни проблеми. Со овој процес се дава одредена структура на развојот на програми, од каде потекнува и името на овој пристап. Информациите кои треба да бидат обработени од страна на програмот се чуваат во податочни структури - Data structures (arrays, records, lists, stacks, trees, и files) поддржани од соодветниот програмски јазик. Податочните структури ги групираат податоците. Добар избор на податолни структури може да поедностави изработка на некоја програма и обратно. Изборот на податочната структура влијае на јасноста, проширливоста, брзината и мемориските побарувања за одредено програмско решение.
![Thumb image](http://upload.wikimedia.org/wikipedia/commons/thumb/9/99/LampFlowchart_mk.svg/320px-LampFlowchart_mk.svg.png)
![Thumb image](http://upload.wikimedia.org/wikipedia/commons/thumb/1/11/1983_CPA_5426_%281%29.png/640px-1983_CPA_5426_%281%29.png)
За изумител на првобитниот алгоритам се смета персискиот математичар и научник Мухамед ел-Хорезми (780-850), додека пак алгоритамот во денешна смисла прв го изложил Давид Хилберт во 1928 г.
Пример: Споредувањето на наоѓање на телефонски број за позната адреса или наоѓање на адреса за познат телефонски број искључиво со користење на хартиен телефонски именик. Податочните структури можат да бидат статични (да трпат промени само на вредностите како arrays или records) и динамични (да трпат промени и во изгледот, посебно големината – како stack, lists, trees, и files). Типични акции кои се извршуваат над податочните структури се: изнајдување, пребарување, пребројување, вметнување, сортирање и бришење. Ако не се знае како да се реши некој проблем, тогаш е сосема извесно дека нема да се знае ниту да се напише програм кој ќе го решава тој проблем.
H. L. Mencken: "Every complex problem has a simple easy-to-understand wrong answer." Пред да се започне со пишување на програм треба да се разбере проблемот и да се создава чекор по чекор решение или алгоритам. За да биде корисен, алгоритамот треба да нуди решение за генерален, добро специфициран проблем. Алгоритамски гледано еден проблем се специфицира со утврдување на сите можни влезни податоци со кои тој алгоритам ќе работи, поведениа или постапки за обработка на истите, како и сите можни излезни податоци кои алгоритмот ќе ги создава. Битно е да се направи разлика помеѓу правилно поведение за група влезни податоци и правилно поведение за сите можни влезни податоци. Според тоа алгоритам е процес кој прима било кој можен влез и го трансформира во посакуван излез. За да се опишат алгоритмите потребно е да се користи некаква нотација за опишување на последователните чекори кои треба да се извршат при реализација на алгоритамот. Такви нотации може да бидат: говорен јазик – македонски, англиски; псевдокод; програмски јазик. Псевдокод може да се дефинира како програмски јазик кој не води сметка за синтаксата. Тој е попрецизен од говорните јазици, но понепрецизен од програмските јазици. Еден можен пристап за опис на алгоритам би бил: опишување на идејата во говорен јазик, опишување на концептот на алгоритмот во псевдокод, детализирање на алгоритмот во конкретен програмски јазик.