Webly: [Aula 14] Análise de Algoritmos - Webly

Ir para

Página 1 de 1

[Aula 14] Análise de Algoritmos última aula de algoritmo

#1 Membro offline   shumi Ícone

  • Shumi
  • Grupo: Banidos
  • Posts: 1511
  • Cadastrado: 05-julho 06
  • Localização:São Paulo - SP
  • Interesses:TI em geral, publicidade e propaganda e crescimento

Postou 05 março 2007 - 01:05

Análise de Algoritmos

O conteúdo dessa aula também é de suma importância (eu falo isso em todas, né?) para termos facilidade em nossas futuras programações.

Analisar um algoritmo significa entender o funcionamento do mesmo e o seu entendimento facilita quando vamos agregar funcionalidades ao algoritmo ou encontrar erros.

Vejo que muitos programadores têm muita dificuldade de achar os erros em códigos. Isso se deve à falta de uma boa base de aprendizado de algoritmos e análise dos mesmos.

Chega de blá-blá-blá! :)

Primeiramente, é necessário seguir as premissas de construção de bons algoritmos, como identação. A identação é de suma importância para facilitar a análise.
Quando um algoritmo tem muitas estruturas aninhadas (umas dentro das outras) e não está identado, fica muito difícil verificar a origem de erros.

Exemplo de código sem identação:
SE (a < b) ENTÃO
REPITA
SE (a < 0.5) ENTÃO
SE (a > 0) ENTÃO
ESCREVA(a);
FIM SE
FIM SE
ATÉ (b > 10)
FIM SE

O mesmo código, identado:
SE (a < b) ENTÃO
	REPITA
		SE (a < 0.5) ENTÃO
			SE (a > 0) ENTÃO
				ESCREVA(a);
			FIM SE
		FIM SE
	ATÉ (b > 10)
FIM SE

Claro que identado fica muito mais fácil, não é mesmo?

Muitas linguagens de programação têm debuggers, ou seja, analisam e mostram o resultado do código, passo-a-passo.

Em algoritmos, a menos que utilizemos softwares para a construção dos mesmos, como o VisuAlg, não temos esse recurso e precisamos “executar mentalmente” o algoritmo, passo-a-passo.

Nada melhor do que um exemplo, certo?
INICIO
	a, b, x : inteiro;
	resultado : real;
	a := 10;
	PARA x DE 1 ATÉ 6 PASSO 1 FAÇA
		a := a + x;
	FIM PARA
	b := 200;
	b := b + a;
	resultado := b / a;
	ESCREVA(resultado);
FIM

Execução passo-a-passo:
Primeiro passo: declaração de variáveis inteiras. Após a “execução dessa linha”, criaremos os espaços que armazenarão os valores de cada uma, como se fosse a separação de espaços de memória, que acontecem na realidade.
a, b, x : inteiro;

Resultados:
a =
b =
x =

Segundo passo: declaração da variável real (que possibilita armazenar números com casas decimais).
resultado : real;

Resultados:
a =
b =
x =
resultado =

Terceiro passo: atribuição de valor à variável a.
a := 10;

Resultados:
a = 10
b =
x =
resultado =

Quarto passo: início da estrutura de repetição PARA. Nessa linha, ocorre a atribuição do primeiro valor da repetição à variável x.
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 10
b =
x = 1
resultado =

Quinto passo: incremento de valor à variável a.
a := a + x;

Resultados:
a = 11
b =
x = 1
resultado =

Sexto passo: como a condição de parada do PARA não foi atingida, a variável x é incrementada de acordo com o valor do PASSO, ou seja, x := x + 1
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 11
b =
x = 2
resultado =

Sétimo passo: incremento de valor à variável a.
a := a + x;

Resultados:
a = 13
b =
x = 2
resultado =

Oitavo passo: como a condição de parada do PARA não foi atingida, a variável x é incrementada de acordo com o valor do PASSO, ou seja, x := x + 1
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 13
b =
x = 3
resultado =

Nono passo: incremento de valor à variável a.
a := a + x;

Resultados:
a = 16
b =
x = 3
resultado =

Décimo passo: como a condição de parada do PARA não foi atingida, a variável x é incrementada de acordo com o valor do PASSO, ou seja, x := x + 1
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 16
b =
x = 4
resultado =

Décimo primeiro passo: incremento de valor à variável a.
a := a + x;

Resultados:
a = 20
b =
x = 4
resultado =

Décimo segundo passo: como a condição de parada do PARA não foi atingida, a variável x é incrementada de acordo com o valor do PASSO, ou seja, x := x + 1
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 20
b =
x = 5
resultado =

Décimo terceiro passo: incremento de valor à variável a.
a := a + x;

Resultados:
a = 25
b =
x = 5
resultado =

Décimo quarto passo: como a condição de parada do PARA não foi atingida, a variável x é incrementada de acordo com o valor do PASSO, ou seja, x := x + 1
PARA x DE 1 ATÉ 6 PASSO 1 FAÇA

Resultados:
a = 25
b =
x = 6
resultado =

Décimo quinto passo: nesse momento, x = 6, o que quer dizer que atingimos a condição de parada do PARA e que seu conteúdo não deve ser executado novamente. Assim, a execução passa à linha após o FIM PARA.
b := 200;

Resultados:
a = 25
b = 200
x = 6
resultado =

Décimo sexto passo: Soma do valor de b e a e atribuição à variável b.
b := b + a;

Resultados:
a = 25
b = 225
x = 6
resultado =

Décimo sétimo passo: Divisão do valor de b pelo valor de a e atribuição do valor em resultado.
resultado := b / a;

Resultados:
a = 25
b = 225
x = 6
resultado = 9

Décimo oitavo passo: exibição do valor da variável resultado.
ESCREVA(resultado);

Resultado:
9


Claro que este foi um exemplo didático e que não precisaria de grandes análises para nada, mas quando o algoritmo (ou programa) torna-se grande e complexo, com uso de procedimentos, funções, recursividade, etc, a análise e o debugger tornam-se essenciais.

O nosso conteúdo de algoritmo está chegando ao fim.

Espero que tenham gostado e que nos passem sugestões de melhorias, novas aulas, etc.
Estou totalmente aberto às críticas, sugestões, elogios, etc.

Exercícios

1. Utilizando o algoritmo abaixo, faça um debug e mostre o resultado (que sairá na tela), utilizando 67 como entrada pelo teclado.
INICIO
	num : inteiro;
	ESCREVA("Digite um número inteiro: ");
	LEIA(num);
	REPITA
		SE (num mod 7 = 0) ENTÃO
			ESCREVA(num + ", ");
		FIM SE
		num := num – 1;
	ATÉ (num < 7)
FIM



Autor: Mestre tmferreira
VALEU A TODOS!!!
0

#2 Membro offline   dupa31 Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 65
  • Cadastrado: 03-dezembro 06

Postou 07 março 2007 - 03:48

:seta: Confesso que nem sei por onde começar esse trem, cara está ficando cada vez mais estreito !
Eduardo Virginio - Desenvolvedor Web
http://www.tag-designer.com
Desenvolvimento e Hospedagem
0

#3 Membro offline   shumi Ícone

  • Shumi
  • Grupo: Banidos
  • Posts: 1511
  • Cadastrado: 05-julho 06
  • Localização:São Paulo - SP
  • Interesses:TI em geral, publicidade e propaganda e crescimento

Postou 07 março 2007 - 03:50

Vai dupa!
Força é a última aula de algoritimo!!!!


\\ o tmferreira está viajando a trabalho e só acessara o fórum sexta-feira agora!

Abraços
VALEU A TODOS!!!
0

#4 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 08 março 2007 - 09:36

Qual a dúvida, dupa?

PS: ainda estou em curso. rsrsrs
.:. Thiago Ferreira .:.
0

#5 Membro offline   dupa31 Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 65
  • Cadastrado: 03-dezembro 06

Postou 16 março 2007 - 09:14

Só uma perguntinha, não está tendo mais aula ? :cap:
Eduardo Virginio - Desenvolvedor Web
http://www.tag-designer.com
Desenvolvimento e Hospedagem
0

#6 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 17 março 2007 - 04:45

Ver postdupa31, em 16/03/2007 - 09:14, disse:

Só uma perguntinha, não está tendo mais aula ? :cap:

Não. Acabou o conteúdo! Infelizmente não sei mais o que mostrar. heheheh
.:. Thiago Ferreira .:.
0

Página 1 de 1


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)