Aulas 13 e 14 - Algoritmos

53
Algoritmos Algoritmos Prof Prof ª ª Jocelma Rios Jocelma Rios Out/2012

description

Aulas 13 e 14 da disciplina Computação Aplicada, Unijorge, 2012.2

Transcript of Aulas 13 e 14 - Algoritmos

Page 1: Aulas 13 e 14 - Algoritmos

AlgoritmosAlgoritmos

ProfProfªª Jocelma Rios Jocelma RiosOut/2012

Page 2: Aulas 13 e 14 - Algoritmos

• Revisar conceitos de lógica na perspectiva da filosofia

• Apresentar os conceitos de algoritmos e suas estruturas

• Orientar quanto à construção de algoritmos

• Exercitar o raciocínio lógico formal, através da elaboração de algoritmos

O que pretendemos:O que pretendemos:

Page 3: Aulas 13 e 14 - Algoritmos

Para a filosofia: área que trata das formas do pensamentoformas do pensamento em geral (dedução, indução, hipótese, inferência etc.) e das operações intelectuais que visam à determinação do que é verdadeiro ou não.

LógicaLógica

Para a computaçãoPara a computação: organização e : organização e planejamento das instruções, planejamento das instruções, assertivas etc. em um algoritmo, assertivas etc. em um algoritmo, a fim de viabilizar a a fim de viabilizar a implantação de um programa.implantação de um programa.

Fonte: Fonte: HouaissHouaiss

Page 4: Aulas 13 e 14 - Algoritmos

São passos executados até atingir um objetivo ou solução

de um problema.

Sequência lógicaSequência lógica

Page 5: Aulas 13 e 14 - Algoritmos

São um conjunto de regras ou normas definidas para a

realização ou emprego de algo.

Em computação, é o que indica a um computador uma ação elementar a executar.

InstruçõesInstruções

Page 6: Aulas 13 e 14 - Algoritmos

Significa o uso correto das leis de pensamento, da 'ordem da razão1 e de

processos de raciocínio e simbolização formais na programação de computadores,

objetivando a racionalidade e o desenvolvimento de técnicas que

cooperem para a produção de soluções logicamente válidas e coerentes, que

resolvam com qualidade os problemas que se deseja programar.

Lógica de programaçãoLógica de programação

Page 7: Aulas 13 e 14 - Algoritmos

Um mesmo raciocínio pode ser expresso em qualquer um dos inúmeros idiomas

existentes, mas continuará representando o mesmo raciocínio.

O mesmo ocorre com a Lógica de Programação, que uma vez concebida, pode ser representada em qualquer das

inúmeras linguagens de programação. Sua concepção se dá através dos Algoritmos.

Lógica de programaçãoLógica de programação

Page 8: Aulas 13 e 14 - Algoritmos

É formalmente uma sequência finita e bem definida de passos, não

ambígua, que levam a execução de uma tarefa.

ou É um conjunto de passos lógicos, É um conjunto de passos lógicos,

bem definidos, que descreve a bem definidos, que descreve a solução de um problema.solução de um problema.

AlgoritmosAlgoritmos

Page 9: Aulas 13 e 14 - Algoritmos

São algoritmos escritos numa linguagem de computador

(Pascal, C, Cobol, Fortran, Visual Basic, Java, PHP, dentre outras) e

que são interpretados e executados por uma máquina

computacional.

SoftwareSoftware

Page 10: Aulas 13 e 14 - Algoritmos

Algoritmo “Trocar lâmpada”InícioPegar uma escada;Posicionar a escada embaixo da lâmpada;Buscar uma lâmpada nova;Subir na escada;Retirar a lâmpada velha;Colocar a lâmpada nova.

Fim

Algoritmos - exemploAlgoritmos - exemploConsidera este

algoritmo suficientemente

detalhado?

Page 11: Aulas 13 e 14 - Algoritmos

Algoritmo “Trocar lâmpada”Início

Pegar uma escada;Posicionar a escada embaixo da lâmpada;Buscar uma lâmpada nova;Acionar o interruptor;Se a lâmpada não acender, então

Subir na escada;Retirar a lâmpada queimada;Colocar a lâmpada nova.

Fim

Algoritmos – outro exemploAlgoritmos – outro exemploE agora, Melhorou?

Você poderiaelaborar outra sequência?

Page 12: Aulas 13 e 14 - Algoritmos

Essencialmente, os algoritmos orientam sobre o modo de processar

os dados de entrada, gerando outros dados como saída.

AlgoritmosAlgoritmos

Dados de entrada

Dados de entrada

Dados de entrada

Dados de entradaProcessamentoProcessamento

Page 13: Aulas 13 e 14 - Algoritmos

Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido, especificando a maneira que

ele se comportará em todas as circunstâncias.

A corretude do algoritmo pode ser provada matematicamente, bem como a quantidade

de tempo e espaço (complexidade) necessários para a sua execução → estes

aspectos são alvo da análise de algoritmos.

AlgoritmosAlgoritmos

Page 14: Aulas 13 e 14 - Algoritmos

Os algoritmos são construídos utilizando-se:Linguagem natural, através de uma lista de procedimentos bem definida, na qual as instruções são executadas passo a passo a partir do começo da lista

Fluxograma: uma ideia que pode ser facilmente visualizada através de uma notação gráfica

Linguagem de programação, tal como o Pascal.

AlgoritmosAlgoritmos

Page 15: Aulas 13 e 14 - Algoritmos

• 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 etc.

FluxogramaFluxograma

Comando Decisão SaídaEntradaInício/Fim

Page 16: Aulas 13 e 14 - Algoritmos

Início do algoritmo

Entrada do número

Cálculo do dobro do número

Apresentação do resultado

Fim do algoritmo

FluxogramaFluxograma

Page 17: Aulas 13 e 14 - Algoritmos

1.Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o problema e faça anotações sobre os pontos principais

2.Verifique se o problema foi bem entendido, se preciso releia o problema quantas vezes for preciso para tentar entendê-lo

3.Extraia do problema todas as suas saídas4.Extraia do problema todas as suas entradas5.Identifique qual é o processamento principal

AlgoritmosAlgoritmos – – dicas de construçãodicas de construção

Page 18: Aulas 13 e 14 - Algoritmos

6. Verifique se será necessário algum valor intermediário que auxilie a transformação das entradas em saídas. Esta etapa pode parecer obscura no início, mas com certeza no desenrolar do algoritmo, estes valores aparecerão naturalmente.7.Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados.8.Crie valores de teste para submeter ao algoritmo9.Reveja o algoritmo, checando as boas normas de criação.

AlgoritmosAlgoritmos – – dicas de construçãodicas de construção

Page 19: Aulas 13 e 14 - Algoritmos

Portabilidade:Portabilidade: programas que podem ser executados em uma variedade de máquinas com pouca ou nenhuma alteração de código. A linguagem Java é o exemplo mais conhecido

Prevenção de erros:Prevenção de erros: Primeiramente, escrever programas livres de erros. Como isso não existe, usar técnicas de depuração e eliminação de erros

Aparência e Comportamento:Aparência e Comportamento: Uso de técnicas de projeto de interfaces com o usuário e facilidade de uso

Engenharia de softwareEngenharia de software– algumas observações– algumas observações

Page 20: Aulas 13 e 14 - Algoritmos

Boas Práticas de programação:Boas Práticas de programação: escrever programas claros, mais compreensíveis, mais sustentáveis e mais fáceis de testar e depurar

Uso de comentários:Uso de comentários: usar sempre que possível para ilustrar os passos ao longo do algoritmo

Erros comuns de programação:Erros comuns de programação: problemas que devem ser observados para serem evitados

Desempenho: Desempenho: programas de rápida execução e que ocupam pouco espaço de memória

Engenharia de Engenharia de softwaresoftware– algumas observações– algumas observações

Page 21: Aulas 13 e 14 - Algoritmos

CabeçalhoDeclaração de variáveisDeclaração de constantesInício

Bloco de comandosFim

Estrutura de um AlgoritmoEstrutura de um Algoritmo

Page 22: Aulas 13 e 14 - Algoritmos

ConstanteConstante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa.

Conforme o seu tipo, a constante é classificada como sendo numérica, lógica

e literal.

3 =CONSTANTEPi := 3,141516

ConstantesConstantes

Page 23: Aulas 13 e 14 - Algoritmos

VariávelVariável é a representação simbólica dos é a representação simbólica dos elementos de um certo conjunto. elementos de um certo conjunto.

Cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado ao

longo do tempo durante a execução de um programa.

Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a

cada instante.

Variável Conteúdo NOME := "JOSE"

IDADE := 50

VariáveisVariáveis

Page 24: Aulas 13 e 14 - Algoritmos

• As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais

• Precisam ser declaradas no início (cabeçalho) de cada algoritmo, indicando o nome e o tipo

VariáveisVariáveis – declaração – declaração

Page 25: Aulas 13 e 14 - Algoritmos

• Numéricas: – Específicas para armazenamento de números, que poderão ser utilizados para cálculos. Podem ser ainda classificadas como Inteiras (integer) ou Reais (real)

– As variáveis do tipo inteiro são para armazenamento de números inteiros e as reais são para o armazenamento de números que possuam casas decimais

• Caracteres:– Específicas para armazenamento de conjunto de caracteres que não contenham números (literais) → Ex: nome

VariáveisVariáveis – tipos – tipos

Page 26: Aulas 13 e 14 - Algoritmos

• Alfanuméricas: – Específicas para dados que contenham letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente literais. Se usado somente para armazenamento de números, não poderá ser utilizada para operações matemáticas.

• Lógicas:– Armazenam somente dados lógicos que podem ser VerdadeiroVerdadeiro ou FalsoFalso.

VariáveisVariáveis – tipos – tipos

Page 27: Aulas 13 e 14 - Algoritmos

Os operadores são meios pelo quais incrementamos, decrementamos, comparamos e avaliamos dados em um algoritmo.

Temos três tipos de operadores:

– Operadores Aritméticos– Operadores Relacionais– Operadores Lógicos

OperadoresOperadores

Page 28: Aulas 13 e 14 - Algoritmos

• Adição +• Subtração -

• Multiplicação *• Divisão /

OBS: A linguagem Pascal não possui um operador para potenciação; a mesma é calculada a partir de cálculos de produto ou através de uma função exponencial (ex) e função logarítmica (LN(X)).

Sintaxe: XY := EXP(Y*LN(X))EX.  X0.5 = EXP(0.5 * LN(X))

Operadores aritméticosOperadores aritméticos

Page 29: Aulas 13 e 14 - Algoritmos

Descrição Símbolo• Igual a =• Diferente de <>• Maior que >• Menor que <• Maior ou igual a >=• Menor ou igual a <=

Operadores relacionaisOperadores relacionais

Page 30: Aulas 13 e 14 - Algoritmos

• E – AND – ^ (conjunção)E – AND – ^ (conjunção)• OU – OR – v (disjunção)• NÃO – NOT - ~ (negação)

Exemplos de uso:'A terra é redonda' E 'A terra é um planeta''O artista é famoso', logo OU 'ele é rico' OU 'ele é talentoso'

Operadores lógicosOperadores lógicos

Page 31: Aulas 13 e 14 - Algoritmos

Tabela-verdade é o conjunto de todas as possibilidades combinatórias entre os

valores de diversas variáveis lógicas, as quais se encontram em apenas duas

situações (V ou F), e um conjunto de operadores lógicos.

Tabela-verdade Tabela-verdade

Page 32: Aulas 13 e 14 - Algoritmos

Operação de negação

Ex:(A) A menina é obediente → V(Não A) A menina é desobediente → F

Tabela-verdade Tabela-verdade

A Não AF VV F

A Não AF VV F

Page 33: Aulas 13 e 14 - Algoritmos

Operação de conjunção

Ex:(A) A menina é obediente(B) A menina é estudiosa(A e B) A menina é obediente e estudiosa.

Tabela-verdade Tabela-verdade

A B A e BV V VV F FF V FF F F

A B A e BV V VV F FF V FF F F

Page 34: Aulas 13 e 14 - Algoritmos

Operação de disjunção não exclusiva

Ex:(A) A menina é obediente(B) A menina é estudiosa(A ou B) A menina é obediente ou estudiosa.

Tabela-verdade Tabela-verdade

A B A ou BV V VV F VF V VF F F

A B A ou BV V VV F VF V VF F F

Page 35: Aulas 13 e 14 - Algoritmos

Operação de disjunção exclusiva

Ex:(A) A menina é obediente(B) A menina é estudiosa(A ou B) A menina é obediente ou a menina é estudiosa.

Tabela-verdade Tabela-verdade

A B A ou BV V FV F VF V VF F F

A B A ou BV V FV F VF V VF F F

Page 36: Aulas 13 e 14 - Algoritmos

Bloco de comandosBloco de comandos

Compreende:

* Comandos de atribuição* Estruturas de controle

- Estruturas de decisão- Estruturas de repetição

Page 37: Aulas 13 e 14 - Algoritmos

Comandos de atribuiçãoComandos de atribuiçãoUm comando de atribuição permite-nos fornecer um valor a uma variável

Tipos– Comandos de entrada• Ex: leia (A)

– Comandos de saída• Ex: escreva (A)

O tipo do dado deve ser compatível com o tipo da variável, isto é:– Somente podemos atribuir um valor lógico

a uma variável capaz de comportá-lo, ou seja, um variável declarada como sendo do tipo lógicos

Page 38: Aulas 13 e 14 - Algoritmos

Estrutura de decisãoEstrutura de decisão

Os comandos de decisão ou desvio fazem parte das técnicas de programação que conduzem a estruturas de programas que não são totalmente sequenciais.

As principais estruturas de decisão são: “Se … Então”, “Se … então … Senão” e “Caso … Selecione”

Page 39: Aulas 13 e 14 - Algoritmos

Matricular na academia

Verificar o calendário“Iniciar regime”

• Verificar o calendário• É segunda-feira?• Se sim,– Iniciar regime– Matricular na academia

• Se não,– Aproveitar

INÍCIO

FIM

Aproveitar... Iniciar regime

É segunda-feiraNão Sim

Estrutura de decisãoEstrutura de decisão

Page 40: Aulas 13 e 14 - Algoritmos

Condicional (If ... Then ... Else ...)Condicional (If ... Then ... Else ...)

N1=N2

?N1=N2

S

N

N1>N2

N1>N2

?

S

NN1<N2

Algoritmo TesteDefinir variáveis;Início;

Ler N1;Ler N2;Se N1=N2 Então

Escrever (N1=N2)Senão {ELSE}

Se N1>N2 Então Escrever (N1>N2) Senão {ELSE} Escrever (N2>N1);Fim.

Page 41: Aulas 13 e 14 - Algoritmos

É uma estrutura de desvio do fluxo de controle que realiza e repete diferentes

comandos ou ações dependendo se uma condição é verdadeira ou falsa

Estão associados a uma estrutura de repetição, uma condição e um bloco de código

Enquanto ... faça <comando(s)>Repita <comando(s)> até que ...

Estruturas de repetiçãoEstruturas de repetição

Page 42: Aulas 13 e 14 - Algoritmos

Enquanto ... faça <comando(s)>A condição é verificada inicialmente, e caso seja verdadeira, o bloco de comandos é executado. Após o final da execução do bloco, a condição é verificada novamente, e caso ela ainda seja verdadeira, o código é executado novamente.

Repita <comando(s)> até que ...Primeiro, o bloco de comandos é executado, e depois que a condição é verificada. Caso seja verdadeira, o bloco de comandos é novamente executado.

Estruturas de repetiçãoEstruturas de repetição

Page 43: Aulas 13 e 14 - Algoritmos

Deve-se observar que, caso o bloco de comandos nunca modificar o estado da

condição, a estrutura será executada para sempre, uma situação chamada laço (loop)

infinito. Da mesma forma, é possível especificar uma estrutura em que o bloco de comandos modifica o estado da condição, mas

esta é sempre verdadeira.

Estruturas de repetiçãoEstruturas de repetição

Page 44: Aulas 13 e 14 - Algoritmos

Ler dois números e uma letra. Se a letra for a, adicionar, se for s, subtrair, se for m, multiplicar, se for d, dividir, senão, exibir “Operação inexistente”

InícioInício

Definir N1,N2,Resultado:Real;Definir Letra,Tecla: Char;

Definir N1,N2,Resultado:Real;Definir Letra,Tecla: Char;

Ler N1;Ler N1;

Ler N2;Ler N2;

Ler Letra;Ler Letra;

Letra=a?Letra=a? SS

Resultado:=N1+N2

Resultado:=N1+N2

Letra=s?Letra=s?S

SResultado:=N1-N2

Resultado:=N1-N2

nn

nn

11

Operação:Adiçao

Operação:Adiçao

Operação:Subtração

Operação:Subtração

11

Letra=m?Letra=m?S

SResultado:=N1*N2

Resultado:=N1*N2

nn

Operação:Multiplicação

Operação:Multiplicação

Letra=d?Letra=d? Resultado:=N1/N2

Resultado:=N1/N2 Operação:

Divisão

Operação:Divisão

FimFim

Operação:Inexistente

Operação:Inexistente

Page 45: Aulas 13 e 14 - Algoritmos

• A lógica se relaciona com a 'ordem da razão', com a 'correção do pensamento'

• É necessário utilizar processos lógicos de programação para construir algoritmos

Algumas pontuações...Algumas pontuações...

Page 46: Aulas 13 e 14 - Algoritmos

Um pouco de humor sempre cai bem...

Um pouco de humor sempre cai bem...

Page 47: Aulas 13 e 14 - Algoritmos

Talvez se tivesse casado com uma programadora o diálogo seria melhor…Talvez se tivesse casado com uma programadora o diálogo seria melhor…

Page 48: Aulas 13 e 14 - Algoritmos
Page 49: Aulas 13 e 14 - Algoritmos
Page 50: Aulas 13 e 14 - Algoritmos

1. Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.a) (A+C) > B b) B >= (A + 2) c) C = (B –A) d) (B + A) <= Ce) (C+A) > B2. Construa um algoritmo que avalie cada uma das

expressões acima, considerando que os valores de A, B e C são variáveis e são dados pelo usuário.

ExercíciosExercícios

Page 51: Aulas 13 e 14 - Algoritmos

3. Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias:

Infantil A = 5 a 7 anosInfantil B = 8 a 11 anosJuvenil A = 12 a 13 anosJuvenil B = 14 a 17 anosAdultos = Maiores de 18 anos

ExercíciosExercícios

Page 52: Aulas 13 e 14 - Algoritmos

3. A média parcial (MP) de uma disciplina semestral no Ifba é calculada com base na média aritmética não ponderada de 3 notas (Uni1, Uni2, Uni3). Caso o estudante alcance média parcial igual ou superior a 7,0, ele é aprovado sem precisar fazer prova final (PF). Caso ele alcance média parcial entre 3,0 e 6,9, ele precisará fazer prova final. Caso ele obtenha média inferior a 3,0, ele é reprovado. Utilizando uma pseudo linguagem (português estruturado), construa um algoritmo que leia o nome do estudante, suas notas nas 3 unidades, calcule sua média parcial e informe a situação de aprovação. Para os casos de ser necessário fazer prova final, deve também mostrar a nota mínima que ele precisa na prova final. O cálculo para a nota mínima necessária na prova final é =(7*MP)/3. (2,0)

MP < 3 reprovado→3,0 <= MP < 7,0 precisa fazer prova final→MP >= 7,0 aprovado→

ExercíciosExercícios

Page 53: Aulas 13 e 14 - Algoritmos

FORBELLONE, André Luiz Vilar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. São Paulo: Prentice Hall, 2005.

Cap. 1, 2 e 3.

ReferênciasReferências