Lógica de Programação - adrianobenigno.com.br 3 Algoritmo.pdf · Conceitos e Exemplos de...

Post on 10-Nov-2018

249 views 0 download

Transcript of Lógica de Programação - adrianobenigno.com.br 3 Algoritmo.pdf · Conceitos e Exemplos de...

Lógica de Programação

Introdução

Neste capítulo

Introdução à Lógica de ProgramaçãoAlgoritmizando a LógicaConceitos e Exemplos de AlgoritmosNoções de Fluxo de Controle

Introdução

Lógica de ProgramaçãoLó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çãoSempre que pensamos a lógica nos acompanha

Um bebê sabe que precisa chorar para receber atençãoUm 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ícioEm um torneio de atletismo, Barnabé, Gumercindo e Teodoroparticiparam das provas de 100 metros rasos, salto emdistância e arremesso de dardo. Cada um deles conseguiu umprimeiro lugar, um segundo lugar e um terceiro. Descubra o quecada 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 tardeFocalizar primeiro na resolução algorítmica do problema, possibilitando depois codificá-la em qualquer linguagem

Importância dos Algoritmos

Problema

Solução como programa de computador

Solução em forma de algoritmoPasso difícil

Fase de resolução do problema

Fase de resolução do problema

Descrição Narrativa

Um método direto, simplesmente especificarseus passos verbalmente. Porém a linguagemnatural é prolixa, imprecisa, pouco confiável. Porisso não é adequada.

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,yIndica operação de entrada de dados para os locais chamados de x e y na memória

Saída x,y Indica operação de saída ou de impressão dos valores x e y

DecisãoIndica a possibilidade de desvio para mais de um ponto do programa

Cálculo x=y+z Indica operação aritmética

ConectorIndica conexão entre dois pontos de um algoritmo que estejam na mesma página

ConectorIndica conexão entre dois pontos de um algoritmo que estejam em página diferentes

Diagrama de bloco

Início

n1,n2,n3

M=(n1,n2,n3)/3

M>=60?

Você foi aprovado

Você foi reprovado

Fim

N

S

Início do algoritmo

O valor de cada nota é armazenado nas variáveis n1,n2 e n3

O valor da média é calculado e armazenado na variável M

É 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 ospassos envolvidos na resolução do problema.Para evitar ambiguidade, utiliza-se de umconjunto de regras que visam restringir eestruturar o uso do português na representaçãodos algoritmos. Aproxima-se muito do códigofonte de linguagens de programação reais.

Exemplo de um AlgoritmoInício

inteiro: n1,n2,n3,m;escreva(“Informe a primeira nota”);leia(n1);escreva(“Informe a segunda nota”);leia(n2);escreva(“Informe a segunda nota”);leia(n3);m (n1 + n2 + n3)/3;se(m>=60)

entãoescreva(“Você foi Aprovado”);

senãoescreva(“Você foi Reprovado”);

fimse;Fim.

// Início do algoritmo// Declaração das variáveis// Mensagem para o usuário// Leitura da primeira nota// Mensagem para o usuário// Leitura da segunda nota// Mensagem para o usuário// Leitura da terceira nota// Atribuição de valor através de operação// Teste de seleção// Se a condição for verdadeira// Mensagem para o usuário “Aprovado”// caso contrario, (se condição falsa).// Mensagem para o usuário// Final do teste de seleção// Fim do algoritmo

Tipos de DadosExistem 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

IdentificadoresUm 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 deoperadores 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áveisNo ambiente computacional, as informações variáveis são guardadas em

dispositivos eletrônicos denominados memória. Para diferenciar cada uma destasvariáveis utilizamos os identificadores.

Exemplo:

Inteiro: x;

real: salario;

logico: resposta;

caracter: endereco;

Comandos BásicosDeclaração de Variáveis

Ex.

caracter: nome;

inteiro: x,idade,soma;

real: y,salario;

logico: val1;

Comandos de entrada de dados

Ex.

leia (nome);

leia (x,idade);

leia (y,salario);

Comando de saída de dados

Ex.

escreva(“Hello Word!”);

escreva(nome);

escreva(“Seu nome e”,nome);

escreva(“Seu salario e: ”,salario);

Comandos de atribuição

Ex.

soma y * salario;

val1 1 > 4+3;

Exemplo de um Algoritmo

Início

inteiro: val1, val2, soma;

escreva(“Digite o 1 números a ser somado”);

leia(val1);

escreva(“Digite o 2 números a ser somado”);

leia(val2);

soma (val1+val2);

escreva(“O valor total é:”,soma);

fim.

// Início do algoritmo

// Declaração das variáveis

// Mensagem para o usuário

// Leitura da variáveis val1

// Mensagem para o usuário

// Leitura da variáveis val2

// Calculo da 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 rad(4); rad(x)

mod Resto da divisão 13 mod 2(resulta em 1)

div Quociente da divisão 9 div 4(resulta em 2)

)( x

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

OperadoresOperador 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çãose (expressão logica)

entao

acao

fimse;

Iníciointeiro: val1;escreva(“Digite um número”);leia(val1);se (val1<100)

entaoescreva(“O numero digitado e menor que 100”);

fimse;fim.

Estrutura de seleção

se (expressão logica)

entao

acao 1;

senao

acao 2;

fimse;

Iníciointeiro: val1;escreva(“Digite um número”);leia(val1);se (val1<100)

entaoinicio

escreva(“Atencao”);escreva(“O numero digitado e menor que 100”);

fim;senao

inicioescreva(“Atencao”);escreva(“O numero digitado e igual ou maior que 100”);

fim;fimse;

fim.

Estrutura de seleção – Exercício, exemplo I

Iníciointeiro: idade;caracter: nome;escreva(“Digite seu nome:”);leia(nome);escreva(“Informe sua idade:”);leia(idade);se (idade<13)

entaoescreva(nome,“Você é uma criança”);

senaose (idade > 12 e idade<20)

entaoescreva(nome,“Você é um adolescente”);

senaoescreva(nome,“Você é um adulto”);

fimse;fimse;

fim.

Erradose (12<idade<20)

Estrutura de seleção – Exercício, exemplo II

Iníciointeiro: idade;caracter: nome;escreva(“Digite seu nome:”);leia(nome);escreva(“Informe sua idade:”);leia(idade);se (idade<13)

entaoescreva(nome,“Você é uma criança”);

senaose (idade >12 e idade<20)

entaoescreva(nome,“Você é um adolescente”);

senaose (idade>19)

entaoescreva(nome,“Você é um adulto”);

fimse;fimse;

fimse;fim.

Erradose (12<idade<20)

Estrutura de seleção – Exercício, exemplo III

Iníciointeiro: idade;caracter: nome;escreva(“Digite seu nome:”);leia(nome);escreva(“Informe sua idade:”);leia(idade);se (idade<13)

entaoescreva(nome,“Você é uma criança”);

fimse;se (idade >12 e idade<20)

entaoescreva(nome,“Você é um adolescente”);

fimse;se (idade>19)

entaoescreva(nome,“Você é um adulto”);

fimse;fim.

Erradose (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

iniciocaracter: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.

escolha(x)caso v1: acao1;caso vn: acaon;caso contrario: acaopadrao;

fim escolha

Estrutura de repetição - com teste no início

enquanto(expressao logica) façaacao1;acao2;acao3;

fimenquanto;

iniciocaracter:nome;inteiro: contador;contador 1;escreva(“Informe o seu nome”);leia(nome);enquanto (contador<=3) faça

escreva(nome);contadorcontador + 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

inicioreal: 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

repitaacao1;acao2;acao3;

ate(expressão lógica)

iniciointeiro: 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çaação 1;ação 2;ação n;

fimpara

iniciointeiro: 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