Працэду́рнае праграмава́ньне — парадыгма праграмаваньня, аснаваная на канцэпцыі выкліку працэдуры.
Працэдуры, таксама вядомыя як падпраграмы, мэтады ці функцыі (нельга іх блытаць з матэматычнымі функцыямі, аднак падобныя на тыя, што выкарыстоўваюцца ў функцыянальным праграмаваньні) проста зьмяшчаюць крокі вылічэньня, якія трэба выканаць. Любую дадзеную працэдуру можна выклікаць зь любога месца ў праграме, у тым ліку зь іншых працэдур ці з кода самой гэтай працэдуры.
Працэдурнае праграмаваньне — гэта часта лепшы выбар, чым простае неструктурнае праграмаваньне ў шматлікіх сытуацыях, якія ацэньваюцца як сытуацыі сярэдняй складнасьці ці ў якіх патрэбныя прастата і магчымасьць падтрымкі. Мажлівыя выгады:
Асабліва ў вялікіх, складаных праграмах модульнасць — гэта часта патрэбная мажлівасьць. Яе можна рэалізаваць, выкарыстоўваючы працэдуры з строга ўстаноўленымі каналамі ўводу/вываду, і, звычайна, зь яснымі правіламі пра тое, якія тыпы ўводу дазволеныя ці чаканыя. Увод, як правіла, указваецца сынтаксычна ў форме аргумэнтаў і вывад вяртаецца як вяртаемае значэньне.
Вобласьці бачаньня — яшчэ адзін спосаб захаваць зьменныя строга модульнымі. Яна заключаецца ў тым, што працэдура ня можа мець доступ да зьменных іншых працэдураў (і наадварот), у тым ліку папярэдніх выклікаў той самай працэдуры, безь яўнага пазначэньня гэтага. Гэта не дазваляе пераблытаць зьменныя з адным іменем, выкарыстаныя ў розных месцах, таму працэдуры не заўважаюць выкананьня адна адной.
Меней модульныя працэдуры, часта ў маленькіх і хутка напісаных праграмах часта выкарыстоўваюць вялікую колькасьць зьменных акружэньня, якія таксама могуць зьмяніць іншыя праграмы. Тое, што шмат зьменных выкарыстоўваюцца як пункт кантакту паміж рознымі часткамі праграмы, робіць яе менш модульнай.
Дзякуючы мажлівасьці ўказаць просты інтэрфэйс, быць незалежнымі і выкарыстоўвацца паўторна, працэдуры — зручны спосаб стварэньня коду, які могуць пісаць розныя людзі і групы людзей, у тым ліку бібліятэкі.
Большасьць ці ўсе ўжываныя працэдурныя мовы праграмаваньня зьяўляюцца таксама імпэратыўнымі мовамі, бо яны робяць яўныя спасылкі на стан акружэньня. Яны могуць быць чым заўгодна, ад зьменных (якія могуць суадносіцца з рэгістрам працэсара) да нечага накшталт пазыцыі «чарапахі» ў мове праграмаваньня Logo (якая таксама можа быць чым заўгодна, ад курсора на экране да сапраўднай прылады, які рухаецца па падлозе пакою).
Частка формаў імпэратыўнага праграмаваньня, такія як аб’ектна-арыентаванае праграмаваньне, не абавязкова працэдурныя.
Болей пасьлядоўныя формы модульнасьці мажлівыя з аб’ектна-арыентаваным праграмаваньнем, якое было створана пазьней. Замест выкарыстаньня працэдураў, увода і вываду, ААП выкарыстоўвае аб’екты Пры вылічэньнях выкарыстоўваюцца ўнутраныя працэдуры аб’екта (ці працэдуры, якія ён атрымаў ад аб’ектаў-продкаў).
Звычайна працэдурныя праграмы болей эфэктыўныя пры вылічэньнях, бо трэба меней часу для ўпраўлення абстракцыямі і структурамі зьвестак, так як яны бліжэй да апаратнага забесьпячэньня, якое іх выконвае. Сапраўды, шмат апэрацыйных сыстэмаў і цэнтральных працэсараў створана з падтрымкай спэцыфічных мэханізмаў выкліка працэдураў.
Працэдурныя мовы праграмаваньня садзейнічаюць жаданьню праграміста выкарыстоўваць працэдурнае праграмаваньне. Кананічны прыклад працэдурнага праграмаваньня — мова Algol. Сярод іншых — Fortran, PL/I, Modula-2 і Ada. Заўважце, што гэты сьпіс зьмяшчае ня толькі выключна працэдурныя мовы, як, напрыклад, Java, якая была створана спэцыяльна для аб’ектна-арыентаванага праграмаваньня.