27
1 Algoritmos e TØcnicas -Lgica - Algoritmo textual informal Modo de preparo: Bata a margarina, as gemas e o aœcar atØ ficar cremoso Junte o leite, o coco e a farinha e continue batendo Acrescente o fermento e, por œltimo, as claras em neve Unte uma forma com manteiga e leve ao forno para assar Quªo cremoso?!? De uma vez s?!? Quanto tempo?!? Quanto tempo?!?

Algoritmos e TØcnicas -Lógica · Œa criaçªo de um algoritmo Ø um exercício de criatividade (conhecimento)e experiŒncia (tØcnica e prÆtica) O que Ø Programaçªo? = ABSTRA˙ˆO!

Embed Size (px)

Citation preview

1

Algoritmos e Técnicas- Lógica -

Algoritmo textual informal

Modo de preparo:� Bata a margarina, as gemas e o açúcar até ficar

cremoso� Junte o leite, o coco e a farinha e continue

batendo� Acrescente o fermento e, por último, as claras em

neve� Unte uma forma com manteiga e leve ao forno

para assar

Quão cremoso?!?

De uma vez só?!?

Quanto tempo?!?

Quanto tempo?!?

id93996970 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com

2

Modo de preparo (refinado):� Bata a margarina, as gemas e o açúcar por 15

minutos� Junte o leite, o coco e a farinha e continue

batendo por mais 15 minutos� Acrescente 20 g de fermento e, por último, as

claras em neve� Unte uma forma com manteiga e leve ao forno

para assar por 30 minutos

Algoritmo textual informal

Problema da Torre de Hanói� Seja a seguinte situação:

deve-se mover todos os discos do primeiro eixo para o terceiro mantendo-se a ordem original

em cada movimento, pode-se mover apenas um disco

um disco nunca poderá ser sobreposto por outro maior

Algoritmo: Problemas Complexos

3

Passo 1:mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

Passo 2:mova disco médio para segundo eixo

Algoritmo: Problemas Complexos

4

Passo 3:mova disco menor para segundo eixo

Algoritmo: Problemas Complexos

Passo 4:mova disco maior para terceiro eixo

Algoritmo: Problemas Complexos

5

Passo 5:mova disco menor para primeiro eixo

Algoritmo: Problemas Complexos

Passo 6:mova disco médio para terceiro eixo

Algoritmo: Problemas Complexos

6

Passo 7:mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

Seqüência de passos completa:Passo 1: mova disco menor para terceiro eixo

Passo 2: mova disco médio para segundo eixoPasso 3: mova disco menor para segundo eixoPasso 4: mova disco maior para terceiro eixoPasso 5: mova disco menor para primeiro eixoPasso 6: mova disco médio para terceiro eixoPasso 7: mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

7

Lembre-se

Não existe um algoritmo para construir algoritmos

� a criação de um algoritmo é um exercício de criatividade (conhecimento) e experiência (técnica e prática)

O que é Programação?

= ABSTRAÇÃO!

A realidade é complexa e rica em detalhes!

8

Abstração

RealidadeRealidade

O que você O que você abstraiabstrai dessa realidade?dessa realidade?

Abstração

O que é abstração?

9

Abstração

Abstração=

Operação mental que observa a realidade e

captura apenas os aspectos relevantes para um contexto

10

11

Abstração

RealidadeRealidade

Sistema de Locadora de VeículoSistema de Locadora de Veículo

AbstraçãoAbstração++

ProgramaçãoProgramação

A tarefa de programar sistemas computacionais envolve o exercício constante da abstração da realidade e sua codificação em uma linguagem de programação

Sistema Computacional

O que é um Sistema Computacional?

12

Sistema Computacional

SoftwareHardware

Peopleware

Sistema Computacional

A programação de um sistema computacional pode ser resumida em 3 passos básicos

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

Sistema Computacional

13

Exemplo 1 � Exibir a média de dois números

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

6 , 8 (6 + 8) / 2 7

Sistema Computacional

Exemplo 2 � Exibir se o aluno está aprovado ou reprovado

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

Ana, 5, 3 Se (5+3)/2>=7aprovado

Senãoreprovado

Ana, reprovado

Sistema Computacional

14

Sistema Computacional

Arquitetura de um computador hipotético � Modelo de Von Neuman

Unidade Central de Processamento

(1)Dispositivode Entrada

(3)Unidade de Controle

(2)Unidade Lógica

e Aritmética

(4)Memória Principal

(5)Dispositivo

de Saída

Trajeto de dados

Trajeto de sinais de controle

Programação de Sistema Computacional

Tipos de Linguagens de Programação� 1 - Totalmente codificadas em binário (0´s e 1´s)� 2 - Usa instruções simbólicas para representar os 0´s e 1´s� 3 - Voltadas para facilitar o raciocínio humano

Linguagem Assembly

( Mnem ô nica )

LOAD R1, val1

LOAD R2, val2

ADD R1, R2

STORE R1, val2

Linguagem de

M á quina

0010 0001 1110

0010 0010 1111

0001 0001 0010

0011 0001 1111

Linguagem

de Alto N í vel

val2 = val1+val2

Baixo Nível Alto Nível

(1) (2) (3)

15

Noções de Lógica

A lógica é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.

É também a designação para o estudo de sistemas prescritivos de raciocínio, ou seja, sistemas que definem como se "deveria" realmente pensar para não errar, usando a razão, dedutivamente e indutivamente.

Noções de Lógica

Exemplos de aplicação da lógica

� O quarto está fechado e meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

� Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

� Todo mamífero é animal e todo cavalo é mamífero. Então, todo cavalo é animal

� Todo mamífero bebe leite e o homem bebe leite. Então, todo homem é mamífero e animal (mas não é um cavalo)

16

Atividade 1 (10min)

Resolva os seguintes problemas de lógica� P1 � Uma lesma deve subir um poste de 10m de

altura. De dia sobe 2m e à noite desce 1m. Em quantos dias atingirá o topo do poste?

� P2 - Três gatos comem três ratos em três minutos. Cem gatos comem cem ratos em quantos minutos?

� P3 - O pai do padre é filho do meu pai. O que eu sou do Padre?

� P4 - Se um bezerro pesa 75 kg mais meio bezerro, quanto pesa um bezerro inteiro?

Atividade 1 (10min)

� P5 � Qual o próximo número da seqüência 7,8,10,13,17,?

� P6 � Um pai de 80kg e suas 2 filhas (40kg cada), precisam sair de uma ilha com um barco. Porém a capacidade do barco é de 80kg. Como farão para sair da ilha?

� P7 � Usando uma jangada, um camponês precisa atravessar uma cabra, um leão e um fardo de capim para a outra margem do rio. A jangada sótem lugar para ele e mais outra coisa. O que ele deve fazer para atravessar o rio com seus pertences intactos?

17

RESPOSTAS - Atividade 1

� R1 - 9(nove) dias. No nono dia a lesma sobe 2(dois) metros, atinge o topo e evidentemente não desce 1 metro

� R2 � 3 (três) minutos� R3 � Tio

� R4 � 150 (cento e cinqüenta) kg

� R5 � 22

� R6 � Vão as duas filhas. Uma delas volta. O pai sai. A outra filha volta. As duas filhas saem juntas.

� R7 - Primeiro leve a cabra, volte e pegue o capim; deixe o capim e leve a cabra de volta; deixe a cabra e leve o leão, depois é sóvoltar e pegar a cabra.

Noções de Lógica

Em Lógica um conceito importanteé o de �Proposição�

Você sabe o que é umaPROPOSIÇÃO?

18

Noções de Lógica

Proposição: é um enunciado verbal, ao qual deve ser atribuído, sem ambigüidade, um valor lógico verdadeiro (V) ou falso (F).

� Exemplos de proposições: Robson Fidalgo é Professor (V)

3 + 5 = 10 (F)

5 < 8 (V)

� Contra-exemplos de Proposições: Onde você vai ? 3 + 5

Os estudantes jogam vôlei. (quais ?)

Noções de Lógica

Operações Lógicas: são usadas para formar novas proposições a partir de proposições existentes. � Considerando p e q duas proposições genéricas, pode-se

aplicar as seguintes operações lógicas básicas sobre elas

� Definindo a prioridade: Usar parênteses Ex:((p v q)^(~q)) ou Obedecer (~) > (^) > (v)

Operação Símbolo SignificadoNegação ~ Não

Conjunção ^ EDisjunção v OU

19

Noções de Lógica

F v F = FF ^ F = F

F v V = V F ^ V = F

~ F = V V v F = V V ^ F = F

~ V = F V v V = V V ^ V = V

Tabela ~ (Não)Tabela v (ou)Tabela ^ (e)

Tabela Verdade

Exemplos de aplicação das operações lógica� Considere:

p = 7 é primo = (V) q = 4 é impar = (F)

� Então: 4 NÃO é impar = ~q = (~F) = (V) 7 NÃO é primo = ~p = (~V) = (F) 7 é primo E 4 NÃO é impar = p ^ ~q = (V ^ (~F)) =

(V ^ V) = (V) 7 é primo E 4 é impar = p ^ q = (V ^ F) = (F) 4 é impar E 7 é primo = q ^ p = (F ^ V) = (F) 4 é impar E 7 NÃO é primo = q ^ ~p = (F ^ (~V)) =

(F ^ F) = (F)

Noções de Lógica

20

Exemplos de aplicação das operações lógica (Cont.)

� Considere:

p = 7 é primo = (V) q = 4 é impar = (F)

� Então: 7 é primo OU 4 NÃO é impar = p v ~q = (V v (~F)) =

(V v V) = (V) 7 é primo OU 4 é impar = p v q = (V v F) = (V) 4 é impar OU 7 é primo = q v p = (F v V) = (V) 4 é impar OU 7 NÃO é primo = q v ~p = (F v (~V)) =

(F v F ) = (F)

Noções de Lógica

Exemplos de aplicação das operações lógica

� Resumindo:

� Ou seja:

Não (~) troca o valor lógico. Se é F passa a ser V e vice-versa

E (^) só tem valor V quando as duas proposições forem V, basta uma proposição ser F para o resultado ser F

OU (v) só tem valor F quando as duas proposições forem F, basta uma proposição ser V para o resultado ser V

p q p ^ q p v qV V V V

V F F V

F V F V

F F F F

~pF

F

V

V

pp qq p ^ qp ^ q p v qp v qVV VV VV VV

VV FF FF VV

FF VV FF VV

FF FF FF FF

~p~pFF

FF

VV

VV

Noções de Lógica

21

Atividade 2

Considerando p = V e q = F, resolva as seguintes expressões lógicas

� ~p

� ~q� p ^ q

� p v q

� (~p) ^ q

� (~p) v q

� p ^ (~q)� p v (~q)

� (~p) ^ (~q)

� (~p) v (~q)

RESPOSTAS - Atividade 2

Considerando p = V e q = F, resolva as seguintes expressões lógicas

� ~p = F� ~q = V

� p ^ q = F

� p v q = V

� (~p) ^ q = F� (~p) v q = F

� p ^ (~q) = V

� p v (~q) = V

� (~p) ^ (~q) = F

� (~p) v (~q) = V

22

Lógica de Programação & Algoritmo

O que éProgramação

de computadores?

INSTRUÇÕES

Instruções Delimitadoras

Servem para especificar o início e o fim do algoritmo.

início...

fim

23

Declaração de Variáveis

Utilizado para especificar os nomes e os respectivos tipos das variáveis necessárias no algoritmo

declare <variáveis>: <tipo>;onde:<variáveis> - lista de nomes de variáveis

separados por vírgula<tipo> - inteiro, real, caracter, string, lógico

Declaração de Variáveis

Exemplos:

declare a,b,c: real;declare nome: string;declare sexo: caracter;declare pratica_esporte: lógico;

24

Bloco de Comentário

Serve para explicar um determinado trecho do algoritmo, para torna-lo mais claro, facilitando seu entendimento por outras pessoas ou posteriormente.

{ <comentário> }Exemplo:{ Isto é um exemplo de comentário }

Instrução de Entrada

Usada para ler dados de entrada do algoritmo.

leia(<variáveis>);

onde:<variáveis> - conterão os dados lidos.

25

Instrução de Entrada

Exemplos:

leia(a,b,c);leia(nome);leia(sexo);leia(pratica_esporte);

Instrução de Saída

Usada para mostrar os resultados do processamento dos dados de entrada.

escreva(<resultados>);

onde:<resultados> - geralmente é o conteúdo de

uma ou mais variáveis com a resposta do problema.

26

Instrução de Saída

Exemplos:

escreva(�O valor de D é: �, D);escreva(nome, sexo);escreva(�Pratica esporte.�);

Instrução de Atribuição

Utilizado para atribuir um determinado valor a uma variável.

<variável> <expressão>;onde:<variável> - nome de uma variável<expressão> - um valor do mesmo tipo da

variável ou uma expressão lógica ou aritmética.

27

Instrução de Atribuição

Exemplos

D B^2-4*A*C;nome �Paulo�;Pratica_Esporte TRUE; Sexo �M�;