You are on page 1of 32

Algoritmo Reviso

Prof. Esp. Erivelton da Silva Rocha

Definies

a descrio dos passos necessrios para a resoluo de um problema.

uma receita que qualquer um entenda.


Sequncia finita de passos que se corretamente seguidos, nos levam a resultados previsveis. Encadeamento/ordem de ideias. Arte de bem pensar.

ALGORITMO para Lavar a Cabea


1 Incio 2 Molhe o cabelo

1) a descrio de um procedimento rotineiro;

3 Coloque Shampoo
4 Faa Massagem 5 Enxge 6 Repita o Processo

2) Tem um INCIO e um FIM claros;


3) A descrio feita passo a passo, de maneira bem definida; 4) H imperfeies: 4.1) No especifica a quantidade de shampoo;
4.2) No especifica quantas vezes o processo deve ser repetido; 4.3) No especifica qual o processo ou qual passo que deve ser repetido.

7 Fim

ALGORITMO para Lavar a Cabea

1 Incio 2 Molhe o Cabelo 3 Repita 2 (duas) vezes:


3.1 Coloque a quantidade correspondente a uma tampa de shampoo 3.2 Faa massagem durante 1 minuto 3.3 Enxge

4 Fim

Para que serve?


Elaborao do Programa Fonte

Implementao do Processo Elaborao do Algoritmo

Fase de Resoluo

Problema

Programa Fonte

Compilao

Cdigo Objeto

Execuo

Resultados

Qualidades de um bom Algoritmo

Definio Perfeita

Deve descrever exatamente quais so as instrues que devem ser executadas e em que sequncia. Deve ser tornado explcito o maior nmero possvel de informaes, pois a falta de alguma informao pode levar a uma interpretao errada do algoritmo;

Ausncia de Ambiguidade

No deve deixar dvidas sobre o que deve ser feito. A ambiguidade acerca do que deve ser feito tambm pode levar a uma interpretao errada do algoritmo;

Eficcia Conseguir resolver o problema em qualquer situao. Todas as situaes de exceo que possam alterar o comportamento do algoritmo devem ser especificadas e tratadas; Eficincia

Resolver o problema com o mnimo de recursos. Sempre se deve buscar aquele algoritmo que, dentre os diversos algoritmos que resolvam um mesmo problema, utilize a menor quantidade de recursos.

Caractersticas do Algoritmo

Algoritmo um conjunto finito de regras, bem definidas, para a soluo de um problema em um tempo finito e com um nmero finito de passos. uma sequncia de aes finitas que descrevem como um problema deve ser resolvido. um conjunto de regras formais para a obteno de um resultado ou da soluo de um problema. Sequncia ordenada de passos a ser seguida para a realizao de uma determinada tarefa.

Estratgias na Construo de Algoritmos


Especifique o problema claramente e entenda-o completamente; Explicite todos os detalhes suprfluos; Entre no problema (envolva-se totalmente com o problema); Use todas as informaes disponveis; Decomponha o problema (Top-Down); Use o sentido inverso, se necessrio (Bottom-Up).

Como Construir Algoritmos


Problema

Anlise Preliminar

Soluo

Teste de Qualidade

Alterao

Produto Final

Como Construir Algoritmos

Anlise Preliminar

Entenda o problema com a maior preciso possvel, identifique os dados; identifique os resultados desejados.

Soluo

Desenvolva um algoritmo para resolver o problema.

Teste de Qualidade

Execute o algoritmo desenvolvido com dados para os quais o resultado seja conhecido. O ideal que o universo dos dados tenha todas as combinaes possveis. Note que a qualidade de um algoritmo pode ser limitada por fatores como tempo para a sua confeco e recursos disponveis.

Alterao

Se o resultado do teste de qualidade no for satisfatrio, altere o algoritmo e submeta-o a um novo teste de qualidade.

Produto Final

O algoritmo concludo e testado, pronto para ser aplicado.

Portugol Pseudo-Cdigo
A Linguagem Estruturada a forma que tem sido mais

utilizada para a elaborao de algoritmos. a forma


que mais se assemelha com a forma em que os programas so escritos nas linguagens de programao.

Operadores Aritmticos
Operao Soma Subtrao Multiplicao Diviso Real Diviso de Inteiros Resto da Diviso Inteira Potenciao Operador + * / \ % ^ Exemplo 1+1=2 1-1=0 2*2=4 7/2=3.5 7\2=3 7%2=1 22 = 2^2.

Operadores Relacionais
Operador Menor Menor ou Igual Maior Maior ou Igual Diferente Igual Smbolo < <= > >= <> = Os operadores relacionais retornam valores lgicos (Verdadeiro ou Falso)

Operadores Lgicos
Operador Smbolo Significado Resulta VERDADEIRO se ambas as partes forem verdadeiras. Resulta VERDADEIRO se uma das partes verdadeira. Multiplicao lgica E Adio lgica OU

Negao

NO

Nega uma afirmao, invertendo o seu valor lgico: se for VERDADEIRO torna-se FALSO, se for FALSO torna-se VERDADEIRO.

Tabela Verdade
A V V F F B V F V F AEB V F F F A OU B V V V F NO A F F V V NO B F V F V

Prioridades de Operadores
Operador Aritmtico Exponenciao Multiplicao Diviso Adio Subtrao Operador Lgico E OU Prioridade 3 2 2 1 1 Prioridade 3 2

NO
Operador Aritmticos Relacionais Lgicos

1
Prioridade 3 2 1

Variveis

Contedo

Varivel
Tipo Nome

Regras no nome das variveis


1. 2.

nomes de variveis no podem ser iguais a palavras reservadas; nomes de variveis devem possuir como primeiro caractere uma letra ou sublinhado '_' (os outros caracteres podem ser letras, nmeros e sublinhado); nomes de variveis devem ter no mximo 127 caracteres; Nomes de variveis no podem conter espaos em branco; na sintaxe do Portugus Estruturado, no h diferena entre letras maisculas de minsculas (NOME o mesmo que noMe).

3. 4. 5.

Tipos de Dados
Os computadores trabalham com dados Os dados precisam ser de um determinado tipo Existem duas categorias de tipos de dados Tipos primitivos Tipos bsicos utilizados na construo de algoritmos

Tipos customizados
Tipos que no existem nativamente, mas que so criados pelo programador por alguma necessidade Podem agrupar um ou mais tipos primitivos

Comando se
se <condicao> entao <bloco de comandos 1> senao <bloco de comandos 2> fim se

Comandos se aninhados

As duas formas do comando se podem aparecer dentro de outros comando se. se estiver fazendo sol entao se eu tiver dinheiro entao vou a Portugal fimse fimse

Estruturas de Deciso Mltipla do Tipo Caso

Na estrutura de deciso do tipo Caso pode haver uma ou mais condies a serem testadas e um comando diferente associado a cada uma destas.
A sintaxe da construo de Caso :

escolha <expressao> caso <exp_1>,<exp_2>,...,<exp_n> <bloco_de_comandos_1> caso <exp_1>,<exp_2>,...,<exp_n> <bloco_de_comandos_2> ... caso <exp_1>,<exp_2>,...,<exp_n> <bloco_de_comandos_n> outrocaso <bloco_de_comandos_s> fimescolha

Estruturas de Repetio

So muito comuns as situaes em que se deseja repetir um determinado trecho de um programa um certo nmero de vezes. As estruturas de repetio so muitas vezes chamadas de Laos ou tambm de Loops. Classificao:

Laos Contados

Conhecimento prvio de quantas vezes o comando no interior da construo ser executado;

Laos Condicionais

No se conhece de antemo o nmero de vezes que o conjunto de comandos no interior do lao ser repetido. Amarrado a uma condio sujeita modificao pelas instrues do interior do lao.

Laos condicionais

O conjunto de comandos em seu interior executado at que uma determinada condio seja satisfeita. Laos condicionais mais comuns nas linguagens de programao modernas:

Enquanto - lao condicional com teste no incio Repita - lao condicional com teste no final

A varivel que testada dever sempre estar associada a um comando que a atualize no interior do lao.

Caso isso no ocorra, o programa ficar repetindo indefinidamente este lao, gerando um lao infinito.

Laos Condicionais com Teste no Incio (enquanto ... faca)

Caracteriza-se por uma estrutura que efetua um teste lgico no incio de um lao, verificando se permitido ou no executar o conjunto de comandos no interior do lao.
enquanto <condio> faca <comando_composto> fimenquanto

Laos Condicionais com Teste no Final ( repita ... ate )

Efetua um teste lgico no final de um lao, verificando se permitido ou no executar novamente o conjunto de comandos no interior do mesmo.
Na construo Repita o comando executado uma ou mais vezes (pelo menos uma vez). Alm disso, a varivel pode ser inicializada ou lida dentro do lao.

Na construo Enquanto o comando executado zero ou mais vezes.

repita

<comando_composto>
ate <condio>

Laos contados (para ... de ... ate ... faca)


algoritmo "numeros" var num_inicial, num_final, i : inteiro inicio escreva("Digite o nmero inicial: ") leia(num_inicial) escreva("Digite o nmero final: ") leia(num_final) para i de num_inicial ate num_final faca escreval(i) fimpara escreva("fim") fimalgoritmo

O Diagrama de Blocos

You might also like