Upload
jocelma-rios
View
2.015
Download
3
Embed Size (px)
DESCRIPTION
Aulas 13 e 14 da disciplina Computação Aplicada, Unijorge, 2012.2
Citation preview
AlgoritmosAlgoritmos
ProfProfªª Jocelma Rios Jocelma RiosOut/2012
• 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:
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
São passos executados até atingir um objetivo ou solução
de um problema.
Sequência lógicaSequência lógica
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
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
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
É 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
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
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?
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?
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
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
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
• 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
Início do algoritmo
Entrada do número
Cálculo do dobro do número
Apresentação do resultado
Fim do algoritmo
FluxogramaFluxograma
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
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
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
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
CabeçalhoDeclaração de variáveisDeclaração de constantesInício
Bloco de comandosFim
Estrutura de um AlgoritmoEstrutura de um Algoritmo
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
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
• 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
• 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
• 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
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
• 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
Descrição Símbolo• Igual a =• Diferente de <>• Maior que >• Menor que <• Maior ou igual a >=• Menor ou igual a <=
Operadores relacionaisOperadores relacionais
• 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
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
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
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
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
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
Bloco de comandosBloco de comandos
Compreende:
* Comandos de atribuição* Estruturas de controle
- Estruturas de decisão- Estruturas de repetição
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
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”
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
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.
É 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
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
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
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
• 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...
Um pouco de humor sempre cai bem...
Um pouco de humor sempre cai bem...
Talvez se tivesse casado com uma programadora o diálogo seria melhor…Talvez se tivesse casado com uma programadora o diálogo seria melhor…
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
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
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
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