Post on 08-Apr-2016
description
Lógica Computacional
Prof. Cláudio da Silva
Fluxograma
É o gráfico que representa a seqüência de um trabalho,
produto ou documento, de forma analítica, caracterizando
as operações e os agentes executores.
Vantagens e Desvantagens
Possibilita a:
• simplificar o trabalho pela eliminação, combinação e redefinição de fases ou passos;
• visualizar, localizar, corrigir e eliminar os movimentos desnecessários;
• estudar, corrigir e obter a melhor seqüência
das fases necessárias;
• a chefia aplicar, de forma mais eficiente, as normas e as instruções traçadas.
Tipos de fluxogramas
Fluxograma sintético
Fluxograma de blocos
Fluxograma esqueleto
Fluxograma de
procedimentos
Fluxograma vertical e
horizontal
Não
Sim
INÍCIO
DEFINIR O
PROBLEMA
ANALISAR O
PROBLEMA
DÁ
PARA
RESOL-
VER
ACHAR
SOLUÇÃO
POSSÍVEL
RESOLVE
PLANEJAR
SOLUÇÃO
IMPLANTAR
AVALIAR
FIM
REUNIR
MAIS
DADOS
GERAR
ALTERNATIVA
Não
Sim
1
1
Prof. Virginia PO04 6
Símbolos de Diagramas de Blocos e
Fluxogramas
Processamento
entrada /saída
decisão
Terminal
conexão
conexão de página
Fluxograma para Problemas Matemáticos
Fluxograma de Processos
Algoritmo e Português
Estruturado
IIa Parte
História
A palavra algoritmo origina-se no nome: Muhammad
ibn Musa al-Jwarizmi, que viveu no século IX.
Tentou preservar o conhecimento da antiga
Grécia
Seus livros eram de fácil compreensão, baseavam-
se na criação de novos teoremas com o objetivo
de simplificar a matemática.
Estudou a maneira de reduzir as operações que
formavam o cálculo.
A palavra ALGORITMO fazia referência as regras
de uso da aritmética utilizando dígitos árabes,
sendo uma derivação de al-Khwarizmi,
algobarismus, que mais tarde mudaria para a
palabra algoritmo en el siglo XVIII.
O que é Problema Computacional
Consiste em computar o valor de uma função para uma entrada
que satisfaça as especificações.
Ou seja, dada uma função f : A → B e uma entrada x que
pertence a A, computar y = f (x).
Definir um problema computacional é especificar a relação
entre entrada e saída.
Exemplo: x codifica um grafo direcionado G = (V , E), uma
função w : E → R com os pesos dos arcos, e dois vértices s e t. f
(x) é o caminho mais curto de s a t.
Necessidade de algoritmo para resolvê-lo
O que é um Algoritmo ?
Informalmente, um algoritmo é um procedimento
computacional bem-definido que toma como entrada um
valor (ou conjunto de valores) e produz como saída um valor
(ou conjunto de valores) com a solução de um problema
computacional.
Um algoritmo é uma seqüência de passos computacionais que
transforma entrada em saída.
Podemos ver um algoritmo como uma ferramenta para
resolver um problema computacional bem definido.
O que é um Algoritmo ?
Resolução de Problemas por
Computador
Resumindo, um algoritmo A resolve um problema P se, ao
receber qualquer instância I de P, sempre produzir uma
solução S para I.
A – algoritmo.
I – entrada (instância).
S – saída (resultado).
I S Para qualquer entrada I, o algoritmo deve ser executável em
tempo finito e, além disso, gerar uma solução correta de P.
Algoritmos
Resolução de Problemas por
Computador
ESTRUTURA GERAL DE UM ALGORITMO
Algoritmo (Nome-do-Algoritmo);
Declaração de constantes, tipos e variáveis;
Início
Seqüências de Comandos;
Fim.
Algoritmos
Resolução de Problemas por
Computador
ESTRUTURA GERAL DE UM ALGORITMO
Algoritmo (Nome-do-Algoritmo);
Declaração de constantes, tipos e variáveis;
Início
Atribuições
Comandos de E/S
Estruturas de controle
Seleção
Repetição Fim.
Algoritmos
Resolução de Problemas por
Computador
Constantes
Informação que não sofre variação no decorrer do tempo.
Ex: 5, “Não Fume”, 2548, -0,62, “R$10,00”, Falso.
Variáveis
Informação que tem a possibilidade de ser alterada em algum
instante no decorrer do tempo.
Ex: Cotação do dólar, peso de uma pessoa, salário.
Algoritmos
Resolução de Problemas por
Computador
Declaração de Variáveis e Constantes
Alocar espaço de memória do tamanho do tipo-de-dado e
dar um nome a este espaço;
Ao longo do programa, usa-se o nome dado ao invés do
valor.
CONST n=50;
VAR a, b, c, soma : TIPO;
Algoritmos
Resolução de Problemas por
Computador
Declaração de Variáveis e Constantes
Quando definir variáveis ?
Quando um elemento da lógica para a resolução do problema sofrer alterações de valor ao longo desta resolução.
Quando definir constantes ?
Quando uma valor fixo for utilizado várias vezes na lógica para a resolução do problema.
Algoritmos
Resolução de Problemas por
Computador
Tipos de Dados
Primitivos
INTEIRO
REAL
LÓGICO
CARACTERE
STRING
Definidos pelo programador
DISCIPLINA
FILA
PILHA
Algoritmos
Resolução de Problemas por
Computador
Expressões Aritméticas
Aquelas cujos operadores são aritméticos e cujos operandos são
constantes e/ou variáveis do tipo numérico (inteiro e/ou real).
Operadores Aritméticos
+ Adição * Multiplicação / Divisão
- Subtração ** Potenciação // Radiciação
mod ou % resto da divisão.
Algoritmos
Resolução de Problemas por
Computador
Funções Matemáticas
sen (x) - seno de x
cos(x) - cosseno de x
tg(x) - tangente de x
abs (x) - valor absoluto (módulo) de x
int (x) - parte inteira de um número real
Algoritmos
Resolução de Problemas por
Computador
Prioridades
parênteses mais internos
funções matemáticas
** //
* /
+ -
Algoritmos
Resolução de Problemas por
Computador
Expressões Relacionais
Comparação entre dois valores de um mesmo tipo primitivo.
Estes valores podem ser constantes, variáveis ou expressões
aritméticas.
O resultado obtido de uma relação é sempre um valor
lógico.
Operadores Relacionais
= igual a <> diferente de
> maior que >= maior igual a
< menor que <= menor igual a
Algoritmos
Resolução de Problemas por
Computador
Expressões Lógicas
Aquelas cujos operadores são lógicos e/ou relacionais e cujos
operandos são relações e/ou variáveis e/ou constantes do tipo
lógico.
Operadores Lógicos
e - Conjunção
ou - Disjunção (não-exclusiva)
xou - Disjunção (exclusiva)
não - negação
Algoritmos
Resolução de Problemas por
Computador
Prioridades entre todos os Operadores
parênteses mais internos
funções aritméticas
operadores aritméticos
operadores relacionais
operadores lógicos
Algoritmos
Resolução de Problemas por
Computador
ESTRUTURA GERAL DE UM ALGORITMO
Algoritmo (Nome-do-Algoritmo);
Declaração de constantes, tipos e variáveis;
Início
Atribuições
Comandos de E/S
Estruturas de controle
Seleção
Repetição Fim.
Algoritmos
Resolução de Problemas por
Computador
Atribuição
Fornece um valor a uma variável.
Ex: a 1;
sexo “FEMININO”;
salário 128,00;
Algoritmos
Resolução de Problemas por
Computador
ESTRUTURA GERAL DE UM ALGORITMO
Algoritmo (Nome-do-Algoritmo);
Declaração de constantes, tipos e variáveis;
Início
Atribuições
Comandos de E/S
Estruturas de controle
Seleção
Repetição Fim.
Algoritmos
Resolução de Problemas por
Computador
Comandos de Entrada e Saída
Exemplos do comando de entrada leia:
leia (x);
leia (a, nota, faltas);
Exemplos do comando de saída escreva:
escreva (x);
escreva (a, nota, faltas);
escreva („Bom Dia „, nome);
escreva („Você pesa „, x * 2, „quilos.‟);
Algoritmos
Resolução de Problemas por
Computador
ESTRUTURA GERAL DE UM ALGORITMO
Algoritmo (Nome-do-Algoritmo);
Declaração de constantes, tipos e variáveis;
Início
Atribuições
Comandos de E/S
Estruturas de controle
Seleção
Repetição Fim.
Algoritmos
Resolução de Problemas por
Computador
Estruturas de Controle de Fluxo
Seqüência
Seleção
simples
composta
encadeada
múltipla escolha
Repetição
Teste condicional no início
Número de repetições conhecido
Número de repetições desconhecido
Teste condicional no fim
Algoritmos
Resolução de Problemas por
Computador
Estruturas de Controle de Fluxo
Seqüência
início
<comando 1>;
<comando 2>;
<comando N>;
fim
Algoritmos
Resolução de Problemas por
Computador
Estruturas de Controle de Fluxo
Seleção simples início se <condição 1> então <comando 1>; <comando 2>; <comando N>; fim se fim
Algoritmos
Resolução de Problemas por
Computador
Estruturas de Controle de Fluxo
Seleção composta início se <condição 1> então <comando 1>; <comando 2>; <comando N>; senão <comando 1>; <comando 2>; <comando N>; fim se fim
Algoritmos
BLOCO
VERDADE
BLOCO FALSO
Resolução de Problemas por
Computador
Seleção composta início se <condição 1> então se <condição 2> então
<comando 1>; <comando N>; fim se senão se <condição 3> então
<comando 1>; <comando N>; senão
se <condição 4> então <comando 1>;
<comando N>; senão
<comando 1>; fim se <comando 1>; fim se fim se fim
Algoritmos
Resolução de Problemas por
Computador
Seleção de múltipla escolha
início
escolha (x)
caso VALOR1 : <comando 1>;
caso VALOR2 : <comando 2>;
caso VALOR3 : <comando N>;
fim escolha fim
Algoritmos
Resolução de Problemas por
Computador
Seleção de múltipla escolha
início
se <x = VALOR1> então <comando 1>; senão se <x = VALOR2> então
<comando 2>; senão
se <x = VALOR3> então <comando 3>;
fim se fim se fim se fim
Algoritmos
Resolução de Problemas por
Computador
Repetição
Usada em trechos do algoritmo em que há a
necessidade de se realizar um bloco de comando
um número determinado de vezes.
Algoritmos
Resolução de Problemas por
Computador
Repetição com teste no início (ENQUANTO-FAÇA)
Permite executar diversas vezes um trecho do algoritmo, porém, sempre verificando antes de cada execução se é “permitido” executar algum trecho.
enquanto (<condição1>) faça
<comando1>;
<comando2>;
<comandoN>;
fim enquanto
Quando o resultado da <condição1> for falso, o comando é abandonado.
Se já da primeira vez o resultado for falso, os comandos não são executados nem uma vez.
Algoritmos
Resolução de Problemas por
Computador
Repetição com teste no FINAL (REPITA-ATÉ)
repita
<comando1>;
<comando2>;
<comandoN>;
até (<condição1>)
O bloco de comandos é executado pelo menos uma vez, independente da
validade da <condição1>. Isto ocorre porque a inspeção da <condição1> é feita após a execução do bloco.
Algoritmos
Resolução de Problemas por
Computador
Repetição com variável de controle
(PARA)
para (V = vi; V <= vf; passo p) faça
<comando1>;
<comando2>;
<comandoN>;
fim para
Algoritmos
onde:
• V é a variável de controle;
• vi é o valor inicial de V;
• vf é o valor final de V, ou seja, o
valor até o qual ela pode chegar e;
• p é o valor do incremento dado a V.
Resolução de Problemas por
Computador
Comparação entre as estruturas de Repetição
Toda estrutura ENQUANTO pode ser convertida para REPITA e vice-e-
versa;
Toda estrutura PARA pode ser convertida em ENQUANTO, mas nem
toda estrutura ENQUANTO pode ser convertida em PARA.
Estrutura Condição Qtde de execuções Cond. de existência
Enquanto início ? condição verdadeira
Repita fim mínimo 1 condição falsa
Para implícita início (vf - vi) div p vi vf
Algoritmos
ALGUNS PROBLEMAS
PROBLEMA DE ACHAR O MENOR
Encontrar o menor dentre um conjunto de números.
PROBLEMA DE ACHAR O MENOR
ALGORITMO EncontraMenor;
VAR n, qtde-num, num, menor: INTEIRO;
INICIO
LER (n);
LER (num);
menor num;
qtde-num 1;
ENQUANTO (qtde-num < n)
LER (num);
SE num < menor
menor num;
FIM-SE;
qtde-num qtde-num +1;
FIM-ENQUANTO;
ESCREVER (menor);
FIM.
PROBLEMA DE ACHAR O MENOR E O MAIOR
Encontrar o menor e o maior dentre um conjunto de números.
ALGORITMO EncontraMenorMaior;
VAR n, qtde-num, num, menor, maior: INTEIRO;
INICIO
LER (n);
LER (num);
menor num;
maior num;
qtde-num 1;
ENQUANTO (qtde-num < n)
LER (num);
SE num < menor
menor num;
SENAO SE num > maior
maior num;
FIM-SE;
qtde-num qtde-num +1;
FIM-ENQUANTO;
ESCREVER (menor, maior);
FIM.
PROBLEMA DE ACHAR O MENOR E O MAIOR
PROBLEMA DO AZARÃO
Fazer um programa que escreva os 100 primeiros múltiplos de 13.
ALGORITMO Azarao;
CONST n = 100;
VAR num, cont: INTEIRO;
INICIO
num 13;
cont 1;
ENQUANTO cont < 100
ESCREVA (num);
num num +13;
cont cont +1;
FIM-ENQUANTO;
FIM.
PROBLEMA DO AZARÃO
ALGORITMO Azarao;
CONST n = 100;
VAR num, cont: INTEIRO;
INICIO
num 13;
cont 1;
REPITA
ESCREVA (num);
num num +13;
cont cont +1;
ATE cont > 100;
FIM.
PROBLEMA DO AZARÃO
PROBLEMA DO VÍCIO
Calcule e mostre a despesa diária, semanal e mensal de uma pessoa com cigarros, dados o número de cigarros que ela fuma por dia e o
preço do maço de cigarros que ela fuma.
ALGORITMO Vicio;
VAR num-c-dia : INTEIRO;
preco-m, preco-c,
despesa-d, despesa-s, despesa-m: REAL;
INICIO
ESCREVA (‘Quantos cigarros vc fuma por dia?’);
LER (num-c-dia);
ESCREVA (‘Quanto custa o maco de cigarros que vc fuma?’);
LER (preco-m);
preco-c preco-m/20;
despesa-d preco-c * num-c-dia;
despesa-s despesa-d * 7;
despesa-m despesa-d * 30;
ESCREVA (‘Sua despesa com cigarros diária, semanal e mensal eh: ‘
despesa-d, despesa-s, despesa-m);
FIM.
PROBLEMA DO VÍCIO
PROBLEMA DO FATORIAL DE UM NÚMERO
Calcule o fatorial de 5.
E para um n qualquer ?
ENUNCIADO DO PROBLEMA: Calcular o fatorial de 5.
PARÂMETROS: n
RESTRIÇÕES: n Z+
SOLUÇÃO: result = n.(n-1).(n-2). ... .2.1
INSTÂNCIA: n=5
SOLUÇÃO_DA_INSTÂNCIA: result=5.4.3.2.1=120
PROBLEMA DO FATORIAL DE UM NÚMERO
ALGORITMO Fatorial;
VAR fat, i : INTEIROS;
INICIO
fat = 1;
PARA i := 2 a n FAÇA
fat := fat * i;
END;
MOSTRE fat;
FIM.
PROBLEMA DO FATORIAL DE UM NÚMERO
PROBLEMA SOBRE A SÉRIE DE FIBONACCI
Calcule o n-ésimo termos da série de Fibonacci.
ENUNCIADO DO PROBLEMA: Mostrar o n-ésimo termo da Série de Fibonacci.
PARÂMETROS: n
RESTRIÇÕES: n Z+
SOLUÇÃO: result = n-ésimo termo
INSTÂNCIA: n=5
SOLUÇÃO_DA_INSTÂNCIA: result=3
PROBLEMA SOBRE A SÉRIE DE FIBONACCI
ALGORITMO Fibonacci;
VAR i, fib,fib1,fib2,n : INTEIRO;
INICIO
SE n = 1 RETURN 0; SENAO SE n = 2 RETURN 1; fib1 := 1; fib2 := 0; PARA i := 3 a N FAÇA fib := fib1 + fib2; fib2 := fib1; fib1 := fib; FIM-PARA; MOSTRE fib;
FIM.
PROBLEMA SOBRE A SÉRIE DE FIBONACCI
ALGORITMO Fibonacci-v2;
VAR i, fib,fib1,fib2,n : INTEIRO;
INICIO
SE n <= 2 RETURN n; fib1 := 1; fib2 := 0; PARA i := 3 a N FAÇA fib := fib1 + fib2; fib2 := fib1; fib1 := fib; FIM-PARA; MOSTRE fib;
FIM.
PROBLEMA SOBRE A SÉRIE DE FIBONACCI
PROBLEMA DOS APROVADOS
Dado um conjunto de n notas de alunos, contar o número de alunos que foram aprovados.
Considera-se aprovado o aluno que obteve nota igual ou maior que 5.0.
Solução
PROBLEMA DA AVALIAÇÃO
Fornecer a média aritmética simples das n notas de um aluno, indicando também sua
situação final (média>=9 excelente, média>=7 bom, média>=5 regular, média<5 insuficiente).
FIM
Ia Parte de Lógica Computacional