Lógica de Programação Introdução

Propaganda
Lógica de Programação
Introdução
Introdução
Neste capítulo
Introdução à Lógica de Programação
Algoritmizando a Lógica
Conceitos e Exemplos de Algoritmos
Noções de Fluxo de Controle
Lógica de Programação
Lógica:
A palavra lógica vem do grego Logos e significa razão, pensamento. O pai da
lógica é o filósofo Aristóteles, ele chamou sua lógica de “silogismo”, que significa
ligação. Ele deu esse nome porque a lógica trata da ligação formal dos juízos feito
pelo pensamento. Seus textos sobre lógica foram escritos em sua obra “Primeiros
Analíticos”. O silogismo é uma forma de análise que procura decompor em partes
os argumentos e as proposições de um argumento e seus termos. Mais tarde o
conjunto de seus escritos silogísticos foi chamado de Organon, palavra grega que
significa “instrumento”. A lógica, portanto, é um instrumento para se pensar
corretamente.
Ciência que estuda as formas do pensamento,
Correção do pensamento ou correção do raciocínio,
Arte do bem pensar,
Ordem no pensamento.
Lógica de Programação
Sempre que pensamos a lógica nos acompanha
Um bebê sabe que precisa chorar para receber atenção
Um casal com 3 filhos notou que um vaso estava quebrado, enquanto 2 das
crianças estavam na escola. Quem é o culpado?
A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro
abrir a gaveta para depois pegar a caneta.
O pensamento (e a lógica) pode ser expresso através da palavra falada ou da
palavra escrita
Um mesmo pensamento pode ser expresso em inúmeros idiomas, tanto
oralmente quanto por escrito
Vamos estudar uma forma única de representação
Exercício
Em um torneio de atletismo, Barnabé, Gumercindo e Teodoro
participaram das provas de 100 metros rasos, salto em
distância e arremesso de dardo. Cada um deles conseguiu um
primeiro lugar, um segundo lugar e um terceiro. Descubra o
que cada um conquistou, sabendo que:
Gumercindo venceu Barnabé no salto em distância;
Teodoro chegou atrás de Gumercindo no arremesso de dardo;
Barnabé não chegou em primeiro nos 100 metros rasos.
ALGORITMO
É o pensamento descrito como uma sequência de passos
que visam atingir um objetivo
Algoritmos no dia-a-dia: Receita de bolo, orientação para se chegar em algum
endereço
Qual sua importância na programação?
Representar o raciocínio, independentemente de detalhes computacionais, que
podem ser acrescentados mais tarde
Focalizar primeiro na resolução algorítmica do problema, possibilitando depois
codificá-la em qualquer linguagem
Importância dos Algoritmos
Fase de resolução
do problema
Problema
Solução em forma
de algoritmo
Passo difícil
Solução como
programa de
computador
Fase de resolução
do problema
Descrição Narrativa
Um método direto, simplesmente especificar
seus passos verbalmente. Porém a linguagem
natural é prolixa, imprecisa, pouco confiável. Por
isso não é adequada.
Diagrama de bloco
Nome
Símbolo
Descrição
Fluxo
Indica o sentido do fluxo de
operações
Terminal
Indica início, fim ou ponto de
parada de um programa
Entrada
x,y
Início do algoritmo
Início
O valor de cada nota é armazenado
nas variáveis n1,n2 e n3
n1,n2,n3
Indica operação de entrada de
dados para os locais chamados
de x e y na memória
O valor da média é calculado e
armazenado na variável M
M=(n1,n2,n3)/3
Saída
x,y
Indica a possibilidade de desvio
para mais de um ponto do
programa
Decisão
Cálculo
Indica operação de saída ou de
impressão dos valores x e y
x=y+z
M>=60?
N
S
Indica operação aritmética
Conector
Indica conexão entre dois
pontos de um algoritmo que
estejam na mesma página
Conector
Indica conexão entre dois
pontos de um algoritmo que
estejam em página diferentes
Você foi
aprovado
Fim
Você foi
reprovado
É verificado se o valor
de M é maior ou igual a
60. Se sim(S), é exibida
a mensagem Você foi
aprovado. Caso
Contrário (N), é exibida
a mensagem Você foi
reprovado
Fim do algoritmo
Pseudo Linguagem
Consiste em representar textualmente os
passos envolvidos na resolução do problema.
Para evitar ambiguidade, utiliza-se de um
conjunto de regras que visam restringir e
estruturar o uso do português na representação
dos algoritmos. Aproxima-se muito do código
fonte de linguagens de programação reais.
Exemplo de um Algoritmo
Início
fim.
// Início do algoritmo
caracter: nome;
// Declaração das variáveis
escreva(“Digite o seu nome”);
// Mensagem para o usuário
leia(nome);
// Leitura do nome
escreva(“O seu nome é”,nome);
// Exibe a mensagem e o nome digitado
// Fim do algoritmo
Tipos de Dados
Existem quatro tipos de dados utilizados na construção de algoritmos.
Inteiro: informação numérica que pertença ao conjunto dos números inteiros
Exemplo: 8, -5, 10, 0, 1, etc.
Real: Informação numérica que pertença ao conjunto dos números reais
Exemplo: 0.15, -5.14, 10. 2, 2E23, etc.
Caracter: Informação composta por um caracter, ou conjunto de caracteres
Exemplo: “Ciência da Computação”, “A”, “US$”, etc
Lógico: Informação que possa assumir apenas duas situações.
Exemplo: V ou F
Identificadores
Um identificador é o nome dado às informações de caráter variável. Existem
algumas regras de formação de identificadores que devem ser obedecidas.
1.
Devem começar com um caracter alfabético
2.
Podem ser seguidos por mais caracteres alfabéticos ou numéricos
3.
Não devem ser usados caracteres especiais ou símbolos de
operadores aritméticas
4.
Não podem ser palavras reservadas.
Identificadores válido: ano, idade, U2, nota1, nota_2
Identificadores inválidos: C&A, 4x, nota 1, nota 2, a/b, a#b, A+B
Declaração de variáveis
No ambiente computacional, as informações variáveis são guardadas em
dispositivos eletrônicos denominados memória. Para diferenciar cada uma destas
variáveis utilizamos os identificadores.
Exemplo:
Inteiro: x;
real: salario;
logico: resposta;
caracter: endereco;
Comandos Básicos
Declaração de Variáveis
Comandos de entrada de dados
Ex.
Ex.
caracter: nome;
leia (nome);
inteiro: x,idade,soma;
leia (x,idade);
real: y,salario;
leia (y,salario);
logico: val1;
Comando de saída de dados
Comandos de atribuição
Ex.
Ex.
escreva(“Hello Word!”);
soma  y * salario;
escreva(nome);
val1  1 > 4+3;
escreva(“Seu nome e”,nome);
escreva(“Seu salario e: ”,salario);
Exemplo de um Algoritmo
Início
fim.
// Início do algoritmo
inteiro: val1, val2, soma;
// Declaração das variáveis
escreva(“Digite o 1 números a ser somado”);
// Mensagem para o usuário
leia(val1);
// Leitura da variáveis val1
escreva(“Digite o 2 números a ser somado”);
// Mensagem para o usuário
leia(val2);
// Leitura da variáveis val2
soma (val1+val2);
// Calculo da soma
escreva(“O valor total é:”,soma);
// Mensagem com valor da soma
// Fim do algoritmo
Operadores
Operador
aritmético
Função
Exemplos
+
soma
2+3; x+y; z+2
-
Subtração
4-6; g-k; u-4
*
Multiplicação
8*6; x*y; 2*x
/
Divisão
2/7; x/z; z/2
pot(x,y)
Potenciação (xy)
pot(2,4); pot(z,3)
rad(x)
Radiciação ( x )
rad(4); rad(x)
mod
Resto da divisão
13 mod 2(resulta em 1)
Quociente da divisão
9 div 4(resulta em 2)
div
Hierarquia
Parênteses mais internos
pot
rad
*
/
+
-
div
mod
Para operações de mesma prioridade, resolvemos os operadores
da esquerda para a direita. A prioridade pode ser alterada com o
uso de parêntese
Operadores
Operador
relacional
Função
Exemplos
=
Igual
x=y; x=z
>
Maior que
3>2; x>y
<
Menor que
x<y; 2<x
>=
Maior ou igual a
8>=7; x>=z; z>=2
<=
Menor ou igual a
5<=6; x<=6
<>
Diferente de
4<>3; x<>z
Operadores
Operador lógico
Função
não
Negação
e
Conjunção
ou
Disjunção
não
e ou
O resultado obtido de uma expressão envolvendo operadores relacionais
e/ou lógicos relação é sempre um valor lógico. As expressões lógicas
devem ser solucionadas respeitando a seguinte procedência
Prioridade
As expressões envolvendo os operadores aritméticos, relacionais e lógicos,
devem ser solucionadas respeitando a seguinte ordem de prioridade.
1. Parênteses mais internos
2. Operadores aritméticos
3. Operadores relacionais
4. Operadores lógicos
Estrutura de seleção
se (expressão logica)
entao
acao
fimse;
Início
inteiro: val1;
escreva(“Digite um número”);
leia(val1);
se (val1<100)
entao
escreva(“O numero digitado e menor que 100”);
fimse;
fim.
Estrutura de seleção
Início
inteiro: val1;
escreva(“Digite um número”);
leia(val1);
se (val1<100)
entao
inicio
escreva(“Atencao”);
escreva(“O numero digitado e menor que 100”);
fim;
senao
inicio
escreva(“Atencao”);
escreva(“O numero digitado e igual ou maior que 100”);
fim;
fimse;
se (expressão logica)
entao
acao 1;
senao
acao 2;
fimse;
fim.
Estrutura de seleção – Exercício, exemplo I
Início
inteiro: idade;
caracter: nome;
escreva(“Digite seu nome:”);
leia(nome);
escreva(“Informe sua idade:”);
leia(idade);
se (idade<13)
entao
escreva(nome,“Você é uma criança”);
senao
Errado
se (idade > 12 e idade<20)
se (12<idade<20)
entao
escreva(nome,“Você é um adolescente”);
senao
escreva(nome,“Você é um adulto”);
fimse;
fimse;
fim.
Estrutura de seleção – Exercício, exemplo II
Início
inteiro: idade;
caracter: nome;
escreva(“Digite seu nome:”);
leia(nome);
escreva(“Informe sua idade:”);
leia(idade);
se (idade<13)
entao
escreva(nome,“Você é uma criança”);
senao
se (idade >12 e idade<20)
entao
escreva(nome,“Você é um adolescente”);
senao
se (idade>19)
entao
escreva(nome,“Você é um adulto”);
fimse;
fimse;
fimse;
fim.
Errado
se (12<idade<20)
Estrutura de seleção – Exercício, exemplo III
Início
inteiro: idade;
caracter: nome;
escreva(“Digite seu nome:”);
leia(nome);
escreva(“Informe sua idade:”);
leia(idade);
se (idade<13)
entao
escreva(nome,“Você é uma criança”);
fimse;
se (idade >12 e idade<20)
entao
escreva(nome,“Você é um adolescente”);
fimse;
se (idade>19)
entao
escreva(nome,“Você é um adulto”);
fimse;
fim.
Errado
se (12<idade<20)
Estrutura de seleção de múltipla escolha
escolha(x)
caso v1: acao1;
caso vn: acaon;
caso contrario: acaopadrao;
fim escolha
Estrutura de seleção de múltipla escolha
escolha(x)
caso v1: acao1;
caso vn: acaon;
caso contrario: acaopadrao;
fim escolha
inicio
caracter:tipo;
escreva(“Selecione o sabor de pizza Muzzarela(M), Quatro queijos (Q), ou Presunto(P). ”);
leia (tipo);
escolha(tipo)
caso ‘M’:
escreva(“A sua pizza de muzzarela esta sendo preparada... ”);
escreva(“Aguarde...”);
caso ‘Q’:
escreva(“A sua pizza de quatro queijos esta sendo preparada... ”);
escreva(“Aguarde...”);
caso ‘P’:
escreva(“A sua pizza de presunto esta sendo preparada... ”);
escreva(“Aguarde...”);
caso contrario:
escreva(“Opcao não disponivel ”);
fimescolha;
Fim.
Estrutura de repetição - com teste no início
enquanto(expressao logica) faça
acao1;
acao2;
acao3;
fimenquanto;
inicio
caracter:nome;
inteiro: contador;
contador 1;
escreva(“Informe o seu nome”);
leia(nome);
enquanto (contador<=3) faça
escreva(nome);
contadorcontador + 1;
fimenquanto;
fim;
// Início do algoritmo
// Declaração de variável nome
// Declaração de variável contador
// Inicializando a variável contador
// Exibindo a mensagem na tela
// Armazena o nome informado na variável nome
// Início do laço
// Imprimindo o conteúdo da variável nome na tela
// Incrementando o contador em uma unidade
// Fim do laço
// Fim do algoritmo
Estrutura de repetição - com teste no início
inicio
real: num,soma;
soma 0;
escreva(“Informe o numero a ser somado”);
leia(num);
enquanto (num<>0) faça
soma  soma+num;
escreva(“Informe o número a ser somado”);
leia(num);
fimenquanto;
escreva(“A soma vale;”soma);
fim;
Estrutura de repetição - com teste no fim
repita
acao1;
acao2;
acao3;
ate(expressão lógica)
inicio
inteiro: num;
real: soma;
soma 0;
repita
escreva(“Informe o numero a ser somado: ”);
leia(num);
soma  soma+num;
ate(num=0);
escreva(“A soma vale;”soma);
fim;
Estrutura de repetição – com variável de controle
Para v de vi até vf passo p faça
ação 1;
ação 2;
ação n;
fimpara
inicio
inteiro: controle;
para controle de 0 até 10 passo 1 faça
escreva(“Este e o numero: ”, controle);
fim para;
fim;
// Início do laço
// Fim do laço
Download