As linguagens de programação modernas disponibilizam estruturas de repetição para o programador.
No entanto, é possível simular qualquer repetição com funções, procedimentos, ou métodos recursivos.
Por isso, esse artigo mostra um exemplo construido com recursividade, sem nenhum comando de repetição. As funções e procedimentos recursivos são chamadas dentro da própria função ou procedimento. Exemplo: O procedimento recursividade é chamado no corpo do próprio procedimento. No entanto, esse procedimento
recursivo gera um loop infinito. Isto é, leva o programa a travar. Por isso, normalmente, as funções ou
procedimentos recursivos têm uma condição de parada para evitar o loop infinito. Por exemplo: como criar um procedimento em pascal que imprime os números de um a um número informado pelo
usuário? Abaixo a solução com comando "for": Abaixo a solução com procedimento recursivo: Perceba que nas duas soluções são necessárias uma variável contador que foi nomeada "i" e uma
condição de parada que é quando o contador "i" torna-se igual ao número "n". Perceba
que na versão recursiva o contador é inicializado com 1 e passado como segundo parâmetro para o procedimento
"imprime_numeros", enquanto que, na versão não recursiva a variável contador é criada no próprio procedimento,
necessitando apenas de um número como parâmetro. A variável contador, nas duas soluções, tem seu valor
variado de 1 até o numero "n". Perceba também que o procedimento recursivo recebe um parâmetro
a mais no programa principal. Ou seja, a variavel contador "i" é inicializada com valor 1 no
programa principal. Na função recursiva, o contador "i" é incrementado em 1 quando a função imprime_numeros é chamada
de modo recursivo recebendo o parâmetro "i+1".
Abaixo um programa que fiz inteiramente com recursividade ( Sem nenhuma estrutura de repetição ):
Imagem capturada do programa:
O código fonte escrito em linguagem pascal:
program RECURSIVIDADE ;
uses crt;
type tvetor = array[ 1..100 ] of integer;
procedure imprime_numeros( n : word; i : byte );
begin
if ( i palavra[ length( palavra ) - i + 1 ] ) then
eh := false
else eh_palindromo( palavra, i+1, eh );
end;
end;
function fatorial( n : word ) : word;
begin
if ( n = 1 ) then
fatorial := 1
else fatorial := n * fatorial( n-1 );
end;
function fibo( n : word ) : word;
begin
if ( n = 0 ) or ( n = 1 ) then
fibo := 1
else fibo := fibo( n-1 ) + fibo( n-2 );
end;
procedure imprime_serie_fibo( n : word; i : byte );
begin
if ( i '0' ) and ( op #27 ) then
begin
case op of
'1': begin
write( 'Informe um numero: ' );
readln( num );
writeln;
write( 'Numeros: ' );
imprime_numeros( num, 1 );
readln;
end;
'2': begin
write( 'Informe um numero: ' );
readln( num );
writeln;
write( 'Primos: ' );
imprime_primos( num, 1 );
readln;
end;
'3': begin
write( 'Informe um numero: ' );
readln( num );
writeln;
write( 'Divisores de ',num,': ' );
imprime_divisores( num, 1 );
readln;
end;
'4': begin
write( 'Informe uma palavra: ' );
readln( palavra );
eh_p := true;
eh_palindromo( palavra, 1, eh_p );
writeln;
if ( eh_p ) then
writeln( 'A palavra ',palavra,' eh palindromo' )
else writeln( 'A palavra ',palavra,' nao eh palindromo' );
readln;
end;
'5': begin
write( 'Informe um numero: ' );
readln( num );
fat := fatorial( num );
writeln;
writeln( 'O fatorial de ',num,' eh: ', fat );
readln;
end;
'6': begin
write( 'Informe um número: ' );
readln( num );
writeln;
write( 'Serie fibbonacci: ' );
imprime_serie_fibo( num, 0 );
readln;
end;
'7': begin
sorteia_numeros( vet, VET_MAX, VET_QUANT, 1 );
writeln;
write( 'Numeros sorteados: ' );
imprime_vetor( vet, VET_QUANT, 1 );
ordena( vet, VET_QUANT, 1 );
writeln;
write( 'Numeros ordenados: ' );
imprime_vetor( vet, VET_QUANT, 1 );
readln;
end;
end;
prog_principal;
end;
End;
Begin
prog_principal;
End.
Baixe o código fonte aqui.
Finalizando...
É isso pessoal. Peço que quem tiver gostado, envie um comentário logo abaixo.
Até o próximo
1486
Escrito por:
Ítalo Herbert
Última alteração feita em:
29/10/2024 18:59:06
Tags relacionadas:
recursividade, linguagem, pascal, computador, função, procedimento, recursivo, recursiva, programação
Você também pode gostar:
Projeto ExpLabCurso gratuito de linguagem CProgramação em pascalFunçõesFunções recursivas
Deixe seu comentário
Nome:
E-Mail:
Comentario: obrigatório
Mostrar na lista de comentários
Código de verificação:
Digite o código: obrigatório
Enviar
Limpar
Comentários postados: Nenhum comentario visível postado até o momento, deixe o seu!
Política de privacidade
Produzido por Ítalo Herbert
0
singleton-exemplo.zip
Após baixar o projeto, você pode compilar se estiver com o JDK. Então, use a linha de
comandos para entrar na pasta base do projeto descompactado e utilize o seguinte comando
para compilar:
javac -d bin src/singleton/*.java src/singleton/audio/*.java
Agora para rodar, basta utilizar o seguinte comando:
java -cp bin singleton.Main oi-meu-chapa.wav
No comando acima, você pode passar qualquer arquivo de áudio em formato ".wav" no
lugar de "oi-meu-chapa.wav". Se não passar o arquivo, o "picapau.wav" é
executado por padrão, conforme o comando abaixo:
java -cp bin singleton.Main
Finalizando...
Esse é o final de mais um artigo sobre padrões de projeto. Desta vez, o
padrão singleton foi discutido aqui. Espero que tenham
gostado e, até o próximo!
1463
Escrito por:
Ítalo Herbert
Última alteração feita em:
25/10/2024 19:48:47
Tags relacionadas:
singleton, padrão, design, pattern, java, prog, programação, refactoring,
qualidade, código
Você também pode gostar:
Padrão DecoratorPadrão ObserverDesenho da bandeira do BrasilDesenhando em JavaPrincípios SOLID
Deixe seu comentário
Nome:
E-Mail:
Comentario: obrigatório
Mostrar na lista de comentários
Código de verificação:
Digite o código: obrigatório
Enviar
Limpar
Comentários postados: Nenhum comentario visível postado até o momento, deixe o seu!
Política de privacidade
Produzido por Ítalo Herbert
0
o( decorator, 75, Color.RED );
Decoradores de desenhos - Bandeira do Japão
Abaixo o link de download do código fonte do projeto que desenha uma bandeira.
Link de download:
decorator-exemplo.zip
Após baixar o projeto, você pode compilar se estiver com o JDK. Então, use a linha de comandos
para entrar na pasta base do projeto descompactado e utilize o seguinte comando para compilar:
javac -d bin src/bandeira/desenho/*.java src/bandeira/*.java
Agora para rodar, basta utilizar o seguinte comando:
java -cp bin bandeira.BandeiraMain
Baixe, compile e rode o projeto e experimente adicionar novos decoradores, ou remover
decoradores encadeados ou, mesmo, alterar a ordem das instâncias e teste novamente para
ver que gráfico é gerado!
Finalizando...
Esse é o final de mais um artigo sobre padrões de projeto. Desta vez, o
padrão decorator foi discutido aqui. Espero que tenham
gostado e, até o próximo!
1435
Escrito por:
Ítalo Herbert
Última alteração feita em:
25/10/2024 19:37:57
Tags relacionadas:
decorator, prog, programação, java, padrão, design, patterns,
qualidade, código
Você também pode gostar:
Desenhando em JavaPadrão SingletonDesenho da bandeira do BrasilPadrão ObserverPrincípios SOLID
Deixe seu comentário
Nome:
E-Mail:
Comentario: obrigatório
Mostrar na lista de comentários
Código de verificação:
Digite o código: obrigatório
Enviar
Limpar
Comentários postados: Nenhum comentario visível postado até o momento, deixe o seu!
Política de privacidade
Produzido por Ítalo Herbert
0