Minhas resposta no moddle sobre subprograma - Pré P2 - Schneider
2 pág.

Minhas resposta no moddle sobre subprograma - Pré P2 - Schneider

Disciplina:Linguagens de Programação I260 materiais733 seguidores
Pré-visualização1 página
Um subprograma é...
por João Vitor Squillace Teixeira - Monday, 23 April 2012, 09:02
 
Bom,vamos por partes, primeiramente para podermos entender o que é um subprograma precisamos entender a sua necessidade, a sua necessidade se dá devido à complexidade dos problemas e a capacidade dos programas em resolvê-los. Os subprogramas vêm com o objetivo de facilitar essa solução de problemas complexos.
Utilizamos de repetições de partes do código para resolver grandes partes dos problemas e essas repetições de trechos em um código costumam ser feitas de forma simples, mas a partir do momento em que é utilizada com mais frequência sua legibilidade cai podendo gerar muitos erros, tanto a manutenção quanto alteração desses trechos costumam ser complicados e trabalhosos de se mexer.
Ou seja, baseado nessa ideia criou-se os subprogramas, que são partes de códigos independentes, com estruturas semelhantes à de um programa, entretanto executados conforme são chamados. Quando um subprograma é ativado o fluxo principal do desvia-se para o subprograma, e depois de executado volta ao ponto logo após onde foi chamado.
Eles possuem um ponto de entrada simples, o controle sempre retorna a quem o chamou quando terminada a execução e seu chamador é suspenso durante a execução do subprograma.
Def.1. Um programa separado a partir do programa principal, que executa uma série de operações que ocorre várias vezes durante o ciclo de execução. Subprogramas encurtam e simplificam a programação manual.
Def. 2. Um programa de computador contido dentro de outro programa que funciona de forma semi-independentemente do programa que encerra.
Cinco dentre suas vantagens são:
- Um controle maior da complexidade;
- Pensa-se na solução do problema por partes;
- Uma estrutura lógica mais clara e legível;
- Como os subprogramas podem ser testados separadamente, temos a facilidade na sua depuração;
- Reduzem o tamanho do código-fonte de programas.
Re: Um subprograma é...
por João Vitor Squillace Teixeira - Monday, 30 April 2012, 23:17
 
[1] Quando eu disse controle da complexidade quis dizer que podemos usar de técnicas onde podemos dividir os problemas originais (complexos) em subproblemas mais fáceis de resolver e os transforma-los em problemas mais simples e menores tendo assim maior controle na resolução dos mesmos.
Uma informação interessante que eu encontrei é que foi utilizada por Anatolii Karatsuba uma  técnica chamada de “Dividir e Conquista” onde se utiliza da mesma ideia para resolver outros tipos problemas usando recursividade.

[2] Bom, boa pergunta, eu acho até que poucos se questionaram sobre isso. Não encontrei nada que pudesse indicar desvantagens no quesito de pensar na solução de problemas por partes, nem especificamente quanto de um modo geral, mas acredito que o aumento no tempo de execução do programa deve ser uma delas, devido a quantidade de desvio que é feito, isso levando em consideração subprogramas de um modo geral.
Agora levanto em conta as diferentes formas de que é feita a criação dessa divisão em partes, existem varias desvantagens considerando cada tipo de técnica que foi utilizada, e também o intuito do programador  em usa-las.
 [3] Quando pensamos na solução de problemas complexos, utilizamos geralmente então os subprogramas, estes na maioria das vezes precisarão ser repetidos diversas vezes durante a execução do programa e nesse caso sim, eles reduziriam e muito. Mas agora para problemas simples onde não é necessária a repetição de partes de códigos, nesse caso então não reduzem o código fonte.