# Programació procedimental

La programació procedimental és un paradigma de programació, classificat com a programació imperativa, que implica implementar el comportament d'un programa d'ordinador com a procediments (també coneguts com funcions, subrutines) que s'anomenen entre si. El programa resultant és una sèrie de passos que forma una jerarquia de trucades als seus procediments constitutius.
Van aparèixer els primers llenguatges de programació procedimentals c. 1957 –1964, incloent Fortran, ALGOL, COBOL, PL/I i BASIC. Pascal i C es van publicar c. 1970 –1972.
Els processadors informàtics proporcionen suport de maquinari per a la programació de procediments mitjançant un registre de pila i instruccions per cridar procediments i tornar-ne. El suport de maquinari per a altres tipus de programació és possible, com ara màquines Lisp o processadors Java.

## Pràctiques de desenvolupament

Sovint s'utilitzen determinades pràctiques de desenvolupament de programari amb programació de procediments per millorar la qualitat i reduir els costos de desenvolupament i manteniment.
La modularitat consisteix a organitzar els procediments d'un programa en mòduls separats, cadascun dels quals té un propòsit específic i comprensible.
Minimitzar l'abast de variables i procediments pot millorar la qualitat del programari reduint la càrrega cognitiva dels procediments i mòduls.
Un programa que no té modularitat o abast ampli tendeix a tenir procediments que consumeixen moltes variables que altres procediments també consumeixen. El codi resultant és relativament difícil d'entendre i de mantenir.
Com que un procediment pot especificar una interfície ben definida i ser autònom, admet la reutilització de codi, en particular mitjançant la biblioteca de programari.

## Comparació amb altres paradigmes de programació
### Programació imperativa

La programació procedimental es classifica com una programació imperativa, perquè implica un comandament directe de l'execució.
El procediment és una subclasse d'imperatiu ja que el procediment inclou conceptes de bloc i abast, mentre que l'imperatiu descriu un concepte més general que no requereix aquestes característiques. Els llenguatges procedimentals generalment utilitzen paraules reservades que defineixen blocs, com ara if, while, i for, per implementar el flux de control, mentre que els llenguatges imperatius no estructurats (és a dir, llenguatge ensamblador) utilitzen taules goto i branca per a aquest propòsit.

### Programació orientada a objectes

També classificada com a imperativa, la programació orientada a objectes (OOP) implica dividir la implementació d'un programa en objectes que exposen el comportament (mètodes) i les dades (membres) mitjançant una interfície ben definida. En canvi, la programació procedimental consisteix a dividir la implementació del programa en variables, estructures de dades i subrutines. Una distinció important és que, mentre que els procediments inclouen procediments per operar en estructures de dades, OOP agrupa els dos. Un objecte és una estructura de dades i el comportament associat amb aquesta estructura de dades.

### Programació funcional

Els principis de modularitat i reutilització de codi en llenguatges funcionals són fonamentalment els mateixos que en llenguatges procedimentals, ja que tots dos deriven de la programació estructurada.

### Programació lògica

En programació lògica, un programa és un conjunt de premisses, i el càlcul es realitza intentant demostrar teoremes candidats. Des d'aquest punt de vista, els programes lògics són declaratius, centrant-se en quin és el problema, més que en com resoldre'l.

## Referències

* ↑ «Programming Paradigms» (en anglès).
* ↑ «What is Procedural Programming? A Beginner's Guide» (en anglès). [Consulta: 14 abril 2024].
* ↑ «What is Procedural Programming? [Definition - Key Features]» (en anglès). [Consulta: 14 abril 2024].
* ↑ «Differences between Procedural and Object Oriented Programming» (en anglès americà), 12-04-2019. [Consulta: 14 abril 2024].
* ↑ Stevenson, Joseph. «Procedural programming vs object-oriented programming» (en anglès). neonbrand.com, 01-08-2013. [Consulta: 19 agost 2013].