31
1 - Algoritmos Prof. Dr. Adriano Mauro Cansian 1 ALGORITMOS Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto ______________________________ © Adriano Mauro Cansian 2 Introdução (1) Para desenvolver um software: – representar uma abstração da realidade. Abstração por quê ? Porque um software não é algo palpável, “real”. Ele simula uma realidade. Por exemplo: quando se usa o MSN, o software está criando uma realidade de que todas as pessoas estão se comunicando ali, ou seja, dentro do MSN.

ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

Embed Size (px)

Citation preview

Page 1: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 1

ALGORITMOS

Adriano Mauro Cansian

André Proto

UNESP - São José do Rio Preto

______________________________

© Adriano Mauro Cansian! 2

Introdução (1)

•! Para desenvolver um software: –!representar uma abstração da realidade.

•!Abstração por quê ? –!Porque um software não é algo palpável, “real”.

–!Ele simula uma realidade.

•!Por exemplo: quando se usa o MSN, o software está criando uma realidade de que todas as pessoas estão se comunicando ali, ou seja, dentro do MSN.

Page 2: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 2

© Adriano Mauro Cansian! 3

Introdução (2)

•! Então, tecnicamente, para fazer um software temos que: –!Representar uma realidade.

–!Selecionar de dados que estejam relacionados com o problema a ser resolvido

–!Processar os dados.

–!Obter os dos resultados esperados.

(Lembrar da figura do microondas)

O Que são “dados” afinal?

•! Tudo que o software vai processar e devolver. –!Exemplo: quando anexo uma foto a um Email,

o programa tem que saber como representar aqueles dados da foto dentro da mensagem de Email.

•!Depois, do outro lado, o software tem que saber representar novamente os dados, para mostrar a foto.

© Adriano Mauro Cansian! 4

Page 3: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 3

© Adriano Mauro Cansian! 5

Dados & Operações

•! Para resolução de um problema: –!escolher uma abstração da realidade.

•!Decidir o que é relevante para o problema.

–!informação: é um conjunto de dados. –!comportamento: é um conjunto de operações.

•! A forma como se representa informação e suas

operações estão ligadas

© Adriano Mauro Cansian! 6

Como representar dados

•! Como representar dados? –!depende do que se vai fazer.

•!não é uma tarefa muito trivial.

•!não existe uma única solução.

•!não existe receita.

–!a solução de um problema no computador é um modelo.

–!a construção do modelo pode ter muitos níveis de detalhe. Mais complexo = mais detalhes.

Page 4: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 4

© Adriano Mauro Cansian! 7

Como fazer as operações?

•! A decisão é influenciada pelo problema. •! Muitas questões dependentes da tecnologia que

vai usar. –!Por exemplo: Windows no PC ou Celular Iphone ?.

•! Programador ! focaliza o problema

–!Decisões de nível mais baixo: deixadas para os projetistas do equipamento computacional.

–!Programador usa linguagens que se concentrar nas características do problema: alto nível.

© Adriano Mauro Cansian! 8

Algoritmo (1)

•! É um processo sistemático para a resolução de problemas:

–!Dois aspectos básicos no estudo de algoritmos " ”correção” e ”análise”.

–!Correção: exatidão do método empregado.

–!Análise: verificar a eficiência do algoritmo (ver se a “coisa” realmente funciona).

Page 5: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 5

© Adriano Mauro Cansian! 9

Algoritmo (2)

•! O algoritmo tem que fornecer uma “saída” a partir de uma “entrada”. –!Ou seja, obter o resultado do problema.

–!Durante o processo, manipula dados gerados a partir de sua entrada.

Lembrar que não se deve pensar apenas em dados de entrada e saída matemáticos. Um movimento de mouse é um dado de entrada.

© Adriano Mauro Cansian! 10

Algoritmo (3)

•! Um algoritmo é projetado em termos de “Tipos de Dados”.

•! O que é um “tipo de dados” ?

•! É tudo que o computador vai “ler”, “escrever” e processar.

–!Pode ser um número digital no teclado, ou pode ser um sensor de infravermelho de um robô para detectar um obstáculo.

•! Veremos mais sobre ler e escrever mais adiante.

Page 6: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 6

Algoritmo (4)

•! Para implementar um algoritmo em uma Linguagem de programação?

•! Temos que saber: –!Como representá-lo nesta linguagem.

•! Quais são as regras e comandos.

•!Quais Tipos e Operações suportadas pelo computador.

–!Como representar os dados. •!Usando-se “Estruturas de Dados”.

© Adriano Mauro Cansian! 11

© Adriano Mauro Cansian! 12

Algoritmos & Estruturas de Dados

•! Resolução de um Problema –!Algoritmo

•!Representação dos passos para resolver um problema.

–!Estrutura de Dados •!Representação da informação, ou seja, dos dados

que serão tratados.

Page 7: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 7

Algoritmos

© Adriano Mauro Cansian! 14

Algoritmos - conceitos (1)

•! A palavra algoritmo, à primeira vista, parece-nos estranha.

•! Embora possua designação desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano

•! Algoritmos freqüentemente encontrados:

–! instruções para se utilizar um aparelho eletrodoméstico;

–! uma receita para preparo de algum prato;

–! guia de preenchimento para declaração do imposto de renda;

–! a regra para determinação de máximos e mínimos de funções por derivadas sucessivas;

–! a maneira como as contas de água, luz e telefone são calculadas mensalmente;

Page 8: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 8

© Adriano Mauro Cansian! 15

Algoritmos - conceitos (2)

–! “Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico.” [KNUTH]

–! “Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema.” [TREMBLAY]

–! “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema.” [AURÉLIO]

© Adriano Mauro Cansian! 16

Por que precisamos de algoritmos? (1)

–!“A noção de algoritmo é básica para toda a programação de computadores”.

•! [KNUTH - Professor da Universidade de Stanford, autor da coleção “The art of computer programming”]

Page 9: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 9

© Adriano Mauro Cansian! 17

Por que precisamos de algoritmos? (2)

•! A importância do algoritmo está no fato de termos que especificar uma seqüência de

passos lógicos, para que o computador possa executar uma tarefa qualquer.

•! O computador não tem vontade própria.

•! Faz apenas o que mandamos. –!Com um algoritmo, podemos conceber uma

solução para um dado problema, independente de uma linguagem computacional específica.

© Adriano Mauro Cansian! 18

Algoritmo (1) •! Um texto contendo comandos (instruções)

–!Devem ser executados na ordem especificada.

–!Corresponde a representação concreta.

–!Execução: o algoritmo é um evento dinâmico ! ele evolui no tempo.

–!Ele “roda”.

Page 10: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 10

© Adriano Mauro Cansian! 19

Algoritmo (2)

•! Uma dificuldade na concepção e no entendimento de algoritmos é o relacionamento dos aspectos estático e dinâmico.

–! como entender as estruturas dinâmicas das possíveis

execuções do algoritmo a partir da estrutura estática.

–!É o que veremos mais adiante como “rastreio”.

© Adriano Mauro Cansian! 20

Algoritmo (3)

•! Deve utilizar Estruturas Básicas de controle –!Formas naturais de pensar, e adequadas à

construção de algoritmos inteligíveis.

–!Sempre em “alto nível”.

–!Por exemplo:

SE ......... ENTÃO .......... SENÃO ........

Page 11: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 11

© Adriano Mauro Cansian! 21

Algoritmo (5)

•! Em todo evento deve haver um comportamento, com estados iniciais e efeitos resultantes. –!Cada vez que acontecer um padrão de

comportamento, o evento ocorre.

–!Exemplo: se digitar “1” então ligar o alarme.

© Adriano Mauro Cansian! 22

Algoritmo (6)

•! .Possui um caráter imperativo.

•! Deve-se dar “ordens” no algoritmo: –!Uma ação no algoritmo: um comando, ou ordem

(“faça” / “execute” / “some” / “imprima”).

–!É uma ordem executável para conseguir um certo efeito desejado.

Page 12: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 12

Características dos algoritmos

Características e formas de representação

© Adriano Mauro Cansian! 24

Características dos algoritmos

•! Todo algoritmo deve apresentar algumas características básicas: 1.! Não dar margem à dupla interpretação (não ser

ambíguo); 2.! Ter capacidade de receber dado(s) de entrada; 3.! Poder gerar informações de saída; 4.! Ser efetivo, ou seja todas as etapas

especificadas no algoritmo devem ser alcançáveis em um tempo finito;

5.! Ter fim.

Page 13: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 13

© Adriano Mauro Cansian! 25

Formas de apresentação

•! Algoritmos podem ser representados, dentre outras maneiras, por: –!DESCRIÇÃO NARRATIVA

–!FLUXOGRAMA

–!LINGUAGEM ALGORÍTMICA

(Pseudo-linguagem, parecida com a linguagem de programação que iremos usar)

© Adriano Mauro Cansian! 26

Descrição narrativa (1)

•! Faz-se uso da língua nativa para descrever algoritmos.

•! Exemplo: Receita de Bolo •! Providencie manteiga, ovos, 2 Kg de farinha, leite, etc. •! Misture os ingredientes; •! Despeje a mistura na fôrma de bolo;

•! Leve a fôrma ao forno; •! Espere 20 minutos; •! Retire a fôrma do forno;

•! Deixe esfriar; •! Prove.

Page 14: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 14

© Adriano Mauro Cansian! 27

Descrição narrativa (2)

•! Vantagens: •!A língua nativa é bastante conhecida por nós;

•!Desvantagens: –!Imprecisão;

–!Pouca confiabilidade •!Por causa da imprecisão;

–!Extenso •!Normalmente, escreve-se muito, para dizer

pouca coisa.

© Adriano Mauro Cansian! 28

Fluxograma (1)

•!Utilização de símbolos gráficos para representar algoritmos.

•!No fluxograma existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, fim, dentre outros.

Page 15: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 15

© Adriano Mauro Cansian! 29

Fluxograma (2)

Início

Leia NUM

DOBRO ! NUM*2

Escreva DOBRO

Fim

Início do algoritmo

Entrada do número

Cálculo do dobro do número

Apresentação do resultado

Fim do algoritmo

© Adriano Mauro Cansian! 30

Fluxograma (3)

•! Vantagens: –!Uma das ferramentas mais conhecidas; –!Figuras dizem muito mais que palavras; –!Padrão mundial (não depende da língua).

•! Desvantagens: –!Pouca atenção aos dados, não oferecendo

recursos para descrevê-los ou representá-los; –!Complica-se à medida que o algoritmo cresce.

Page 16: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 16

Linguagem algorítmica

© Adriano Mauro Cansian! 32

Linguagem Algorítmica (1)

•! Consiste na definição de uma pseudo-linguagem de programação para representar algoritmos;

•! Comandos e instruções são em português ou inglês. •! Exemplo:

Algoritmo CALCULA_DOBRO •! início

•! Leia NUM

•! DOBRO ! 2 * NUM

•! Escreva DOBRO

•! fim

Page 17: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 17

© Adriano Mauro Cansian! 33

Linguagem Algorítmica (2) •! Vantagens:

–! Independência da solução. •! Trata-se de solução lógica apenas.

•! Não interessa quem vai executar.

–! Usa o português como linguagem de base;

–! Pode-se definir quais e como os dados vão estar estruturados;

–! Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

•! Desvantagens: –! Exige a definição de uma linguagem não real para trabalho;

–! Não padronizado.

Um ambiente para escrever algoritmos

Funcionamento de nosso computador de processamento algorítmico

Page 18: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 18

© Adriano Mauro Cansian! 35

Um ambiente para escrever algoritmos Unidade Central de Processamento

(2) Unidade Lógica e Aritmética

(3) Unidade de Controle

(1) Dispositivo de entrada

(5) Dispositivo de saída

(4) Memória Principal

Trajeto de dados

Trajeto de sinais de controle

© Adriano Mauro Cansian! 36

Componentes (1)

•! (1) Dispositivo de entrada –! Na maioria das vezes o teclado, mas pode ser um mouse, disco,

scanner, leitor de código de barras, dentre outros:

–! É o meio pelo qual os dados serão introduzidos em nosso computador;

•! (2) Unidade Lógica e Aritmética (ULA): –! Parte responsável pelas operações matemáticas e avaliações

lógicas;

•! (3) Unidade de Controle (UC): –! Exerce controle sobre as demais partes do nosso computador;

–! É uma verdadeira gerente que distribui tarefas às outras unidades;

Page 19: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 19

© Adriano Mauro Cansian! 37

Componentes (2)

•! (4) Memória: –!Guarda o algoritmo a ser executado e os dados a

serem utilizados.

–!Todo dado fornecido ao computador, bem como o resultado de suas operações, ficam (temporariamente) guardados na memória;

•! (5) Dispositivo de Saída –!Vídeo, impressora, discos, CD, e outros: –!É o meio que se dispõe para apresentação dos

resultados obtidos.

© Adriano Mauro Cansian! 38

Funcionamento (1)

•! Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior –! Há algumas diferenças, mas não trataremos aqui.

•! Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer computador deve executar: –! operações de entrada e saída

–! operações aritméticas –! operações lógicas e relacionais

–! movimentação de dados entre os vários componentes

•! Vejamos cada uma delas…

Page 20: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 20

© Adriano Mauro Cansian! 39

Funcionamento (2)

•! Operações de entrada e saída: –!Ler dados do teclado e escrever dados na tela

são exemplos destas operações. –!Elas servem para introduzir dados na memória

do nosso computador, e exibir dados que já estejam lá armazenados;

•! Operações aritméticas: –!São utilizadas na realização de operações

matemáticas, tais como adição, subtração, multiplicação e divisão.

© Adriano Mauro Cansian! 40

Funcionamento (3)

•! Operações lógicas e relacionais: –! Têm aplicabilidade em comparações, testes de condições

lógicas –! Por exemplo: 2 > 6 ? X > Y ?

•! Movimentação de dados entre os vários componentes: –! As operações aritméticas são executadas na Unidade

Lógica e Aritmética, necessitando da transferência dos dados para essa unidade, e da volta do resultado final para ser guardado na memória.

Page 21: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 21

© Adriano Mauro Cansian! 41

Resolvendo um problema manualmente

•! Suponha que desejamos resolver o seguinte problema: –! A partir de dois números, que serão informados,

calcular a adição dos mesmos.

•! Seria bem provável que fosse utilizados os passos a seguir:

a.! saber quais são os números; b.! calcular a soma dos números; c.! responder à questão com o valor do resultado.

© Adriano Mauro Cansian! 42

Resolvendo o problema em nosso computador

•! Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: –! a) operação de entrada de dados dos números ;

–! b1) movimento do valor dos números entre a memória e a ULA;

–! b2) operação aritmética de somar os 2 números;

–! b3) movimentação do resultado da ULA para guardar na memória;

–! c) operação de saída do resultado, que está guardado na memória, para o dispositivo de saída desejado.

Page 22: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 22

Escrita de algoritmos

© Adriano Mauro Cansian! 44

Escrita de algoritmos

•!Resumidamente, pode-se dizer que escrever algoritmos ou, em última análise, programar, consiste em: –! “Dividir qualquer problema em muitos

pequenos passos, usando uma ou mais das operações básicas possíveis”.

Page 23: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 23

© Adriano Mauro Cansian! 45

Passos, comandos e linguagem (1)

•! Passos que compõem o algoritmo são denominados de comandos.

•! Lembrando: Os comandos de uma linguagem de programação podem ser: –!De “Linguagens de baixo nível”. –!De “Linguagens de alto nível”.

© Adriano Mauro Cansian! 46

Passos, comandos e linguagem (2)

•! A seqüência de operações básicas anteriores, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador “hipotético”.

•! Em uma linguagem de alto nível teríamos uma seqüência de comandos assim:

•!Leia X,Y

•!SOMA " X + Y

•!Escreva SOMA

Page 24: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 24

Estruturas Básicas da Construção de Algoritmos

© Adriano Mauro Cansian! 48

Estruturas básicas

•! Existem 3 estruturas básicas de controle, nas quais se baseiam os algoritmos: –!Sequenciação, decisão e repetição.

•!Detalharemos cada uma delas, a seguir:

Page 25: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 25

© Adriano Mauro Cansian! 49

Seqüenciação (1)

•! Os comandos do algoritmo fazem parte de uma seqüência, onde é importante a ordem na qual se encontram, pois serão executados um de cada vez, estritamente, de acordo com essa ordem.

•! De uma forma genérica, poderíamos expressar uma seqüência da seguinte maneira:

Comando-1 Comando-2 Comando-3

: Comando-n

© Adriano Mauro Cansian! 50

Seqüenciação (2)

•! Tem-se uma sequencia de comandos na qual os comandos serão executados na ordem em que aparecem.

•! O comando na posição (x) só será executado após a execução do de ordem (x-1), ou seja, o anterior.

•! Assim: o 3o só será executado após o 2o, e assim por diante.

•! Todo algoritmo é uma seqüência. •! A sequenciação é aplicada quando a solução do

problema pode ser decomposta em passos individuais.

Page 26: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 26

© Adriano Mauro Cansian! 51

Decisão ou seleção (1)

•! Essa estrutura também é conhecida por estrutura condicional. •! A execução de um ou mais comandos depende da veracidade de uma

condição ser verificada. •! Vejamos o funcionamento:

Se <condição> Então

<comando-1> Senão

<comando-2>

•! Ou seja, SE a <condição> for verdadeira (então) será executado o <comando-1> e, em caso contrário (senão), teremos a execução de <comando-2>.

© Adriano Mauro Cansian! 52

Decisão ou seleção (2)

•! A decisão deve ser sempre usada quando há a necessidade de testar alguma condição e, em função desta condição, tomar uma atitude (realizar uma ação).

•! Em nosso dia-a-dia, estamos sempre tomando decisões, vejamos um exemplo:

•! Se tiver dinheiro suficiente, então vou jantar no Sal e Brasa;

Caso contrário (senão), vou comer um sanduba no Chalé;

Page 27: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 27

© Adriano Mauro Cansian! 53

Repetição ou iteração (1)

•! Estrutura também é conhecida por “looping” ou laço.

•! A repetição permite que tarefas individuais sejam repetidas um número determinado de vezes, ou tantas vezes quanto uma condição lógica seja satisfeita.

•! Vejamos alguns exemplos: a)! Vou atirar pedras na vidraça até quebrá-la; b)! Baterei cinco pênaltis; c)! Enquanto tiver saúde e dinheiro, vou viajar de carro.

© Adriano Mauro Cansian! 54

Repetição ou iteração (2)

•! No exemplo (a), vai-se repetir a ação de atirar pedras na janela até que seja satisfeita a condição de quebrar a janela.

•! No exemplo (b), haverá a repetição da atitude de bater um pênalti um número determinado de vezes (condição = cinco).

•! No exemplo (c), a condição que me permitirá continuar viajando de carro é ter dinheiro e saúde.

Page 28: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 28

© Adriano Mauro Cansian! 55

Conclusão das estruturas básicas

•! A utilização combinada dessas 3

estruturas descritas vai permitir expressar, usando qualquer que seja a linguagem (ferramenta), a solução para uma gama muito grande de problemas.

•! Todas as linguagens de programação oferecem representantes dessas

estruturas.

© Adriano Mauro Cansian! 56

Refinamentos sucessivos (1)

•! Um algoritmo é considerado completo se todos os seus comandos forem do

entendimento do seu executor.

•! Um comando que não for do entendimento do executor terá que ser desdobrado em novos comandos, que constituirão um refinamento do comando inicial. –!E assim sucessivamente, até que os comandos

sejam entendidos pelo destinatário.

Page 29: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 29

© Adriano Mauro Cansian! 57

Refinamentos sucessivos (2)

•! Por exemplo, o algoritmo para calcular a média aritmética de dois números, pode ser escrito da seguinte forma:

Algoritmo CALCULA_MÉDIA Início

Receba os dois números Calcule a média dos dois números

Exiba o resultado

Fim

© Adriano Mauro Cansian! 58

Refinamentos sucessivos (3)

•! Podemos desdobrar o comando “Calcule a média dos dois números” em:

Soma os dois números

Divida o resultado por 2

•! Após esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatário não saiba fazer as operações de adição e divisão, ou não seja capaz de entender diretamente algum comando.

Page 30: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 30

© Adriano Mauro Cansian! 59

Refinamentos sucessivos (4)

•! O algoritmo estando completo, podemos reescrevê-lo, inserindo o refinamento na posição do comando que foi refinado.

Algoritmo CALCULA_MÉDIA

Início Avise o que o programa faz.

Solicite os números ao usuário. Receba (leia) os dois números.

Some os dois números.

Divida o resultado por 2. Exiba o resultado.

Fim

© Adriano Mauro Cansian! 60

Conclusão sobre refinamentos sucessivos

•! Reescrever um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma visão global de como o algoritmo deve ser executado.

•! À medida que o algoritmo passa a ser maior e mais complexo, esta visão global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entendê-lo.

Page 31: ALGORITMOS - Bem-vindo! « ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/lc/2009/4-algoritmos-LC-quimica... · •!Quais são as regras e comandos. •!Quais Tipos e

1 - Algoritmos

Prof. Dr. Adriano Mauro Cansian 31

© Adriano Mauro Cansian! 61

Resumo

•! Até aqui vimos:

–!Definições de algoritmos.

–!Características e modelos descritivos dos algoritmos.

–!Linguagem algorítmica.

–!Ambiente, funcionamento e escrita dos algoritmos.

–!Estruturas básicas: seqüenciação, decisão, seleção e repetição

–!Refinamentos sucessivos.