Programação procedural
Programação procedural ou programação procedimental é um paradigma de programação que se baseia em procedimentos, que são executados numa sequência.[1] Ela é derivada da programação imperativa, mas acrescentando procedimentos (em inglês, procedure calls), de forma a organizar o código em blocos que possam ser reutilizados.[2]
Os procedimentos, também conhecidos como rotinas,[3] sub-rotinas,[4] métodos,[5] ou funções[4] simplesmente contêm um conjunto de passos computacionais a serem executados. Um dado procedimento pode ser chamado a qualquer hora durante a execução de um programa, inclusive por outros procedimentos ou por si mesmo.
A programação procedural é geralmente uma escolha melhor que a programação sequencial e não estruturada em muitas situações que envolvem uma complexidade média e requerem facilidade de manutenção. Possíveis benefícios são a habilidade de reutilizar o mesmo código em diferentes lugares no programa sem copiá-lo, ser uma forma mais fácil de organizar o fluxo do programa que uma coleção de comandos "goto" ou "jump" (que podem transformar um programa extenso e complexo num código espaguete), e a habilidade de ser fortemente modular e estruturado.
Procedimentos e modularidade
[editar | editar código-fonte]A modularidade é uma característica geralmente desejável, especialmente em programas grandes e complicados. Ela pode ser alcançada com a utilização de procedimentos com canais de entrada e saída estritamente definidos, usualmente acompanhados de regras claras sobre quais tipos de entrada e saída são permitidos ou esperados. As entradas costumam ser especificadas sintaticamente na forma de argumentos, e as saídas entregues na forma de valores de retorno.
O gerenciamento de escopo é outra técnica que ajuda a manter procedimentos fortemente modulares. Ela impede que o procedimento acesse variáveis de outros procedimentos (e vice-versa), incluindo instâncias anteriores de si mesmo, sem autorização explícita. Isto ajuda a impedir confusões entre variáveis com o mesmo nome sendo utilizadas em locais diferentes, e também que os procedimentos atrapalhem a execução um do outro.
Procedimentos menos modulares, frequentemente utilizados em programas pequenos ou escritos rapidamente, tendem a interagir com um grande número de variáveis no ambiente de execução, que também podem ser modificadas por outros procedimentos. O fato de que muitas variáveis agem como pontos de contato entre as várias partes do programa é o que o torna menos modular.
Por causa da habilidade de especificar uma interface simples, de serem auto-contidos, e de serem reutilizados, procedimentos facilitam a criação de programas ou bibliotecas de programação por várias pessoas ou grupos diferentes.
Comparação com a programação imperativa
[editar | editar código-fonte]A maioria das linguagens procedurais também são linguagens imperativas,[carece de fontes] pois fazem referências explícitas ao estado do ambiente de execução. Isto pode significar desde variáveis (que podem corresponder aos registradores do processador) a algo como a posição da "tartaruga" na linguagem de programação Logo (que por sua vez pode ser desde um cursor na tela a um dispositivo físico que se move no chão de uma sala).
Algumas formas de programação imperativa, como a programação orientada a objetos não são necessariamente procedurais.
Linguagens de programação procedural
[editar | editar código-fonte]Para ser considerada procedural, uma linguagem de programação deve suportar o conceito de procedimentos, e possuir uma sintaxe para defini-los. Idealmente, ela deve suportar a especificação de tipos de argumentos, variáveis locais, chamadas recursivas e o uso de procedimentos em módulos distintos de um programa. Ela também pode suportar a distinção entre argumentos de entrada e de saída.
O exemplo canônico de uma linguagem de programação procedural é ALGOL. Uma linguagem em que a única forma de procedimento é um método é geralmente considerada orientada a objetos ao invés de procedural, e não será incluída nesta lista. Isto se aplica a C# e Java, mas não a C++.
- Ada
- ALGOL
- BASIC
- C
- ColdFusion
- COBOL
- Component Pascal
- D
- Delphi
- ECMAScript (e.g., ActionScript, DMDScript, JavaScript, JScript)
- Forth
- Fortran
- F
- Go (Golang)
- Lasso
- Linoleum
- Lua
- Maple
- Mathematica
- MATLAB
- Modula-2
- Oberon (Oberon-1 e Oberon-2)
- occam
- M
- Pascal
- Perl
- PHP
- PL/C
- Python
- PL/I
- Rapira
- VBScript
- Visual Basic
Ver também
[editar | editar código-fonte]- Módulo (programação)
- Linguagem de programação
- Paradigma de programação
- Programação estruturada
- Programação funcional
- Programação imperativa
- Programação orientada a objetos
Referências
- ↑ «Procedural programming - Contemporary trends in software development - CCEA - GCSE Digital Technology (CCEA) Revision». BBC Bitesize (em inglês). Consultado em 14 de dezembro de 2022
- ↑ Mueller, John Paul (29 de outubro de 2019). Programação Funcional Para Leigos. [S.l.]: Alta Books. p. 13. ISBN 9788550813509
- ↑ Rohit, Khurana. Object Oriented Programming with C++, 2nd Edition (em inglês). [S.l.]: Vikas Publishing House. p. 2. ISBN 9789325975644
- ↑ a b «Procedural programming». Isaac Computer Science (em inglês). Consultado em 14 de dezembro de 2022
- ↑ Rai, Laxmisha (20 de maio de 2019). Programming in C++: Object Oriented Features (em inglês). [S.l.]: Walter de Gruyter GmbH & Co KG. ISBN 9783110593846