43
Aula 3: Algoritmos: Formalizac¸˜ ao e Construc¸˜ ao Fernanda Passos Universidade Federal Fluminense Programac¸˜ ao de Computadores IV Fernanda Passos (UFF) Algoritmos: Formaliza¸ ao e Pseudo-C´ odigo Programa¸ ao de Computadores IV 1 / 33

Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Aula 3: Algoritmos: Formalizacao e Construcao

Fernanda Passos

Universidade Federal Fluminense

Programacao de Computadores IV

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 1 / 33

Page 2: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 2 / 33

Page 3: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 3 / 33

Page 4: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Intuicao de Algoritmos

Algoritmo: sequencia de passos.Algoritmos ja conhecidos:

I Soma.I Busca de pagina em livro.I Teste de primalidade.

Algoritmos possivelmente nao conhecidos:I Crivo de Eratostenes: numeros primos ate n.I Metodo babilonico: calculo da raiz quadrada de um numero por aproximacao.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 4 / 33

Page 5: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Foco da Aula de Hoje

Definicao FormalDefinir formalmente conceitos de algoritmos.Representacao de algoritmos.

Construcao de PseudocodigosDefinir a linguagem basica de pseudocodigo.Criar algoritmos usando pseudocodigo.

ObjetivoConhecer os conceitos formais de algoritmos e a construcao de pseudocodigos.

I Pseudocodigos sao mais proximos de linguagens de programacao, como C.I Base fundamental para a programacao.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 5 / 33

Page 6: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 6 / 33

Page 7: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Definicoes de Algoritmos

Uma Definicao:”Um algoritmo e a descricao de um padrao de comportamento, expressado em termos deum repertorio bem definido e finito de acoes primitivas, as quais damos por certo quepodem ser executadas.“ (Guimaraes e Lages, Algoritmo e Estrutura de Dados, 1994)

Outra Definicao:”Um algoritmo e uma sequencia de passos computacionais que transformam a entrada nasaıda.” (Cormen et.al., Introducao a Algoritmos: Teoria e Pratica, 3a ed., 2009)

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 7 / 33

Page 8: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Definicoes de Algoritmos (II)

Segundo as definicoes, um algoritmo deve:I ter inıcio e fim;I ser descrito em termos de acoes nao ambıguas e bem definidas;I seguir uma sequencia ordenada.

Alem disso, um algoritmo deve ter:I entrada (ou varias entradas) eI saıda (ou varias saıdas).I A entrada deve ser transformada (processada) na saıda.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 8 / 33

Page 9: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Correcao

Correcao:Um algoritmo e dito correto se, para todas as entradas possıveis, a saıda e correta.

Exemplo: um algoritmo que, dado dois numeros inteiros, calcula a razao entre eles.1 Obtem os dois numeros inteiros n1 e n2.2 Calcula a divisao entre n1 e n2.3 Exibe o resultado da divisao.

Como verificar se um algoritmo e correto?I Testando todas as possıveis entradas!I Por muitas vezes ser inviavel, usa-se tecnicas matematicas.I Testar alguns casos ajuda apenas a encontrar erros, mas nao podemos afirmar que ele esta

correto.Em aulas futuras, veremos metodos para verificar a correcao de algoritmos para entradasespecıficas.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 9 / 33

Page 10: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo

Custo de processamento: quanto tempo demora para processar cada passo.Custo de espaco: quanto de memoria sera usada para armazenar os dados.Tais custos sao medidos de acordo com o tamanho da entrada.Um passo e considerado como uma operacao elementar (por exemplo: soma, divisao,comparacao, . . . ).Analise de custo:

I Melhor caso: menor valor de custo sobre todas as entradas.I Pior caso: maior valor de custo sobre todas as entradas.I Caso medio (esperado): media dos tempos de execucao de todas as entradas.

F Valor mais difıcil de ser calculado.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 10 / 33

Page 11: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo de Processamento

Exemplo 1: dado um numero inteiro n, variando de 1 a 100, indique se n e primo.I Solucao 1: dividir n por todos os numeros de 1 a 100 e verificar se foi dividido apenas por 1 e

ele mesmo.

I Solucao 2: dividir n por todos os numero de 2 a n e verificar se foi dividido apenas por 1 e elemesmo.

I Solucao 3: dividir n por todos os numero de 2 a b√

nc e verificar se foi dividido apenas por 1 eele mesmo.

Exemplo 2: em um livro de P paginas, deseja-se verificar se uma pagina x esta faltando.I Solucao 1: folhear o livro, pagina por pagina, de 1 ate P e verificar se x apareceu.I Solucao 2: folhear o livro, pagina por pagina, de 1 ate encontrar x ou uma pagina de valor

maior que x .

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 11 / 33

Page 12: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo de Processamento

Exemplo 1: dado um numero inteiro n, variando de 1 a 100, indique se n e primo.I Solucao 1: dividir n por todos os numeros de 1 a 100 e verificar se foi dividido apenas por 1 e

ele mesmo.I Solucao 2: dividir n por todos os numero de 2 a n e verificar se foi dividido apenas por 1 e ele

mesmo.

I Solucao 3: dividir n por todos os numero de 2 a b√

nc e verificar se foi dividido apenas por 1 eele mesmo.

Exemplo 2: em um livro de P paginas, deseja-se verificar se uma pagina x esta faltando.I Solucao 1: folhear o livro, pagina por pagina, de 1 ate P e verificar se x apareceu.I Solucao 2: folhear o livro, pagina por pagina, de 1 ate encontrar x ou uma pagina de valor

maior que x .

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 11 / 33

Page 13: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo de Processamento

Exemplo 1: dado um numero inteiro n, variando de 1 a 100, indique se n e primo.I Solucao 1: dividir n por todos os numeros de 1 a 100 e verificar se foi dividido apenas por 1 e

ele mesmo.I Solucao 2: dividir n por todos os numero de 2 a n e verificar se foi dividido apenas por 1 e ele

mesmo.I Solucao 3: dividir n por todos os numero de 2 a b

√nc e verificar se foi dividido apenas por 1 e

ele mesmo.

Exemplo 2: em um livro de P paginas, deseja-se verificar se uma pagina x esta faltando.I Solucao 1: folhear o livro, pagina por pagina, de 1 ate P e verificar se x apareceu.I Solucao 2: folhear o livro, pagina por pagina, de 1 ate encontrar x ou uma pagina de valor

maior que x .

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 11 / 33

Page 14: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo de Processamento

Exemplo 1: dado um numero inteiro n, variando de 1 a 100, indique se n e primo.I Solucao 1: dividir n por todos os numeros de 1 a 100 e verificar se foi dividido apenas por 1 e

ele mesmo.I Solucao 2: dividir n por todos os numero de 2 a n e verificar se foi dividido apenas por 1 e ele

mesmo.I Solucao 3: dividir n por todos os numero de 2 a b

√nc e verificar se foi dividido apenas por 1 e

ele mesmo.Exemplo 2: em um livro de P paginas, deseja-se verificar se uma pagina x esta faltando.

I Solucao 1: folhear o livro, pagina por pagina, de 1 ate P e verificar se x apareceu.

I Solucao 2: folhear o livro, pagina por pagina, de 1 ate encontrar x ou uma pagina de valormaior que x .

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 11 / 33

Page 15: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Caracterısticas de Algoritmos: Custo de Processamento

Exemplo 1: dado um numero inteiro n, variando de 1 a 100, indique se n e primo.I Solucao 1: dividir n por todos os numeros de 1 a 100 e verificar se foi dividido apenas por 1 e

ele mesmo.I Solucao 2: dividir n por todos os numero de 2 a n e verificar se foi dividido apenas por 1 e ele

mesmo.I Solucao 3: dividir n por todos os numero de 2 a b

√nc e verificar se foi dividido apenas por 1 e

ele mesmo.Exemplo 2: em um livro de P paginas, deseja-se verificar se uma pagina x esta faltando.

I Solucao 1: folhear o livro, pagina por pagina, de 1 ate P e verificar se x apareceu.I Solucao 2: folhear o livro, pagina por pagina, de 1 ate encontrar x ou uma pagina de valor

maior que x .

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 11 / 33

Page 16: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 12 / 33

Page 17: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Representacao de Algoritmos

Problema Programa

Fase de resolução do problema Fase de Implementação

2 fases de representacao:1 resolucao de problema;2 implementacao por alguma linguagem de programacao.

algoritmo + linguagem de programacao = programa.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 13 / 33

Page 18: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Representacao de Algoritmos (II)

1 Resolucao de problemas:I uso de linguagem natural, pseudolinguagem ou representacao grafica.I Pseudolinguagem: para computacao, uma linguagem mais proxima de uma linguagem de

programacao.I Representacao grafica:

F fluxogramas;F diagramas de Nassi-Shneiderman ou Chapin;F diagramas de Warnier-Or.

I Vantagens: facil entendimento pelo ser humano.I Desvantagens: geralmente apresentam ambiguidades.

2 Implementacao:I uso de linguagens de programacao: C, Java, Fortran, . . . .I Vantagens: capaz de ser entendido por uma maquina e ao mesmo tempo pelo programador.I Desvantagens: e necessario conhecer a lexicografia, sintaxe e semantica da linguagem.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 14 / 33

Page 19: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Fase de Resolucao de Problemas: Linguagem Natural

Linguagem natural: lıngua portuguesa, inglesa . . . .Problema: calcular a media de 2 notas de um aluno onde a nota para aprovacao e 7,0:

1 Adquirir as duas notas do aluno.2 Calcular a media aritmetica entre as duas notas.3 Se a media for menor que 7,0, entao o aluno foi reprovado.4 Caso contrario, o aluno foi aprovado.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 15 / 33

Page 20: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Fase de Resolucao de Problemas: Representacao Grafica

Fluxograma:

Diagramas de Chapin:

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 16 / 33

Page 21: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Fase de Resolucao de Problemas: Pseudocodigo

Algoritmo 1: Exemplo de um algoritmo em pseudocodigoinıcio

real: N1, N2, media;leia N1, N2;media ← (N1 + N2)/2;se media ≥ 7,0 entao

escreva “Aprovado”;senao

escreva “Reprovado”;fim

fim

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 17 / 33

Page 22: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Fase de Implementacao: Linguagem C1 #include <stdio.h>23 /* Descricao: Este programa calcula o4 * valor da media entre dois numeros. */5 int main(void){6 double N1 , N2 , media;78 scanf("%lf␣%lf", &N1, &N2);9 media = (N1 + N2)/2;

10 if(media >= 7.0){11 printf("Aprovado\n");12 }13 else{14 printf("Reprovado\n");15 }16 return 0;17 }

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 18 / 33

Page 23: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 19 / 33

Page 24: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos

Etapas de construcao de algoritmos:1 Compreender o problema.2 Identificar os dados de entrada.3 Identificar os dados de saıda.4 Determinar o que e preciso para transformar dados de entrada em dados de saıda:

1 observar regras e limitacoes do problema sobre a entrada;2 identificar todas as acoes a realizar sobre a entrada para transforma-la em saıda;3 eliminar ambiguidades.

5 Construir o algoritmo em pseudocodigo.6 Testar (manualmente) o algoritmo.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 20 / 33

Page 25: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 1

Etapa 1: compreender o problema:I Parte fundamental da construcao do algoritmo.I Sem entender o problema, nao sabemos o que devemos fazer.

Exemplo 1: Verificar, em um livro numerado de 1 a 1000, se a pagina x esta faltando.Exemplo 2: Dados 10 numeros reais, calcular a media aritmetica entre eles.

I No exemplo 1, devemos realizar uma busca pela pagina x em uma numeracao ordenada de 1 a1000.

I No exemplo 2, devemos somar todos os numeros e dividir por 10, para obter a media.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 21 / 33

Page 26: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 2 e 3

Etapa 2 e 3: identificados dados de entrada e saıda:I Entrada: aquilo que e dado pelo problema, mesmo que seja uma variavel.I Saıda: o resultado esperado do problema para a entrada dada.

No exemplo 1:I entrada: o livro e a pagina x .I saıda: verdadeiro, se a pagina falta ou falso, se a pagina encontra-se no livro.

No exemplo 2:I entrada: os 10 numeros reais.I saıda: um numero real que corresponde ao valor da media.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 22 / 33

Page 27: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Que acoes devem ser feitas para transformar os dados de entrada em dados de saıda?Existe alguma regra explicitada na descricao do problema ou regra de otimizacao?Existe alguma limitacao empregada na descricao do problema?Existe alguma ambiguidade nas acoes?

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 23 / 33

Page 28: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual?

Usar uma variavel para indica-la: y .F livro acabou? y e maior que 1000.F proxima pagina? y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 29: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual? Usar uma variavel para indica-la: y .

F livro acabou? y e maior que 1000.F proxima pagina? y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 30: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual? Usar uma variavel para indica-la: y .F livro acabou?

y e maior que 1000.F proxima pagina? y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 31: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual? Usar uma variavel para indica-la: y .F livro acabou? y e maior que 1000.

F proxima pagina? y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 32: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual? Usar uma variavel para indica-la: y .F livro acabou? y e maior que 1000.F proxima pagina?

y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 33: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4

Exemplo 1:I Acoes:

1 Obter o livro e valor da pagina x ;2 Abrir o livro na pagina 1;3 Verificar se x e igual a pagina atual;4 Se x e igual a pagina atual, entao a saıda e verdadeira e termina;5 Se x e maior que a pagina atual, entao a saıda e falsa e termina;6 Caso contrario, a saıda e falsa;7 Passar para a proxima pagina;8 Se acabou o livro, entao a saıda e falsa e termina.9 Caso contrario, retornar para o passo 3;

I Regras: por sabermos que o livro e ordenado por pagina, podemos otimizar a busca.I Limitacoes: observar se o livro acabou.I Eliminar ambiguidades:

F pagina atual? Usar uma variavel para indica-la: y .F livro acabou? y e maior que 1000.F proxima pagina? y passa a valer y + 1.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 24 / 33

Page 34: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Construindo Algoritmos: Etapa 4 (II)

Exemplo 2:I Acoes:

1 Obter os 10 numeros reais;2 Calcular a soma dos 10 numeros;3 Dividir o resultado da soma por 10;4 Retornar o resultado da divisao (a media).

I Regras: foram estabelecidos exatamente 10 numeros como entrada.I Limitacoes: -I Eliminar ambiguidades: -

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 25 / 33

Page 35: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Exercıcios: Construindo Algoritmos

1 Construa um algoritmo que indique se um numero inteiro x e divisıvel por outro y .2 Construa um algoritmo que, dado um numero inteiro positivo n, calcule o seu fatorial

(n! = n × (n − 1)× . . .× 2× 1).3 Construa um algoritmo para sair do labirinto abaixo, de A ate B.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 26 / 33

Page 36: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Exercıcios: Construindo Algoritmos (II)

4 Problema: construa um algoritmo para sair do labirinto abaixo, de A ate B.I Agora, use apenas comandos do tipo “va para casa (X , Y )”.

0 1 2 3 4 5 6 7 80123456789

10

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 27 / 33

Page 37: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 28 / 33

Page 38: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Introducao a Pseudocodigos

Como vimos, um algoritmo possui um bloco principal compreendido entre inıcio e fim.Como manipularemos dados, trabalharemos com variaveis.

I Variaveis representam uma informacao: um numero, uma letra, um texto . . .I Variaveis possuem tipos: inteiro, real, caractere, . . .I Declarar variavel: dizer qual e seu nome e seu tipo.

Um algoritmo e uma sequencia de passos, onde cada passo corresponde a uma das tresnaturezas seguintes:

1 uma operacao elementar;2 uma operacao de controle especificando uma selecao entre sequencias de passos;3 uma operacao de controle especificando a repeticao de uma sequencia de passos;

Operacoes de algoritmos apresentam sintaxe.I Sintaxe: forma como os elementos sao estruturados.I Veremos a sintaxe das operacoes nas proximas aulas.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 29 / 33

Page 39: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Introducao a Pseudocodigos

Como vimos, um algoritmo possui um bloco principal compreendido entre inıcio e fim.Como manipularemos dados, trabalharemos com variaveis.

I Variaveis representam uma informacao: um numero, uma letra, um texto . . .I Variaveis possuem tipos: inteiro, real, caractere, . . .I Declarar variavel: dizer qual e seu nome e seu tipo.

Um algoritmo e uma sequencia de passos, onde cada passo corresponde a uma das tresnaturezas seguintes:

1 uma operacao elementar;2 uma operacao de controle especificando uma selecao entre sequencias de passos;3 uma operacao de controle especificando a repeticao de uma sequencia de passos;

Operacoes de algoritmos apresentam sintaxe.I Sintaxe: forma como os elementos sao estruturados.I Veremos a sintaxe das operacoes nas proximas aulas.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 29 / 33

Page 40: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Elementos basicos de um Pseudocodigo

Algoritmo 2: Elementos basicos de um pseudocodigo.inıcio

/*Declaracao de variaveis. *///Sequencia de passos:passo 1;passo 2;...passo n;

fim

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 30 / 33

Page 41: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Elementos basicos de um Pseudocodigo (II)

Bloco delimitado por Inıcio e Fim do algoritmo;Dentro do bloco:

I declaracao de variaveis, se necessario;I n passos do algoritmo.

Comentario:I Apenas indica uma anotacao sobre o codigo.I E ignorado: nao representa nenhum passo do algoritmo.I E todo o texto compreendido entre /* e */.I Existe tambem o comentario de linha:

F // no inıcio da linha.F Apenas a linha e comentada.

Identacao:I E o afastamento realizado entre a margem e o bloco de texto escrito.I Indica que um bloco esta “dentro” de outro (efeito visual).I Pode-se usar uma linha vertical para ligar o inıcio e o fim do bloco.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 31 / 33

Page 42: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Agenda

1 Revisao e Contexto

2 Formalizacao

3 Representacao de Algoritmos

4 Construcao de Algoritmos

5 Introducao a Pseudocodigos

6 Revisao

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 32 / 33

Page 43: Aula 3: Algoritmos: Formalização e Construçãofernanda/2016-1/progIV/aulas/aula03.pdf · Aula 3: Algoritmos: Formalizac¸˜ao e Construc¸˜ao Fernanda Passos Universidade Federal

Revisao

Formalmente, um algoritmo e:I uma sequencia finita de passos ordenadas;I passos nao devem ser ambıguos.

E importante saber algumas propriedades dos algoritmos:I a correcao;I o custo de tempo e espaco.

Duas etapas de criacao de um programa:1 resolucao do problema para criar o algoritmo;2 implementacao do algoritmo atraves de uma linguagem de programacao.

Pseudocodigo:I composto por inıcio, declaracao de variaveis, sequencia de passos (ou comandos) e fim.

Fernanda Passos (UFF) Algoritmos: Formalizacao e Pseudo-Codigo Programacao de Computadores IV 33 / 33