Algoritmos e Técnicas - Lógica - Algoritmo textual informal Modo de preparo: Quão cremoso?!? – Bata a margarina, as gemas e o açúcar até ficar Quanto tempo?!? cremoso – Junte o leite, o coco e a farinha e continue batendo De uma vez só?!? – Acrescente o fermento e, por último, as claras em neve Quanto tempo?!? – Unte uma forma com manteiga e leve ao forno para assar 1 Algoritmo textual informal 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: Problemas Complexos 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 2 Algoritmo: Problemas Complexos Passo 1: mova disco menor para terceiro eixo Algoritmo: Problemas Complexos Passo 2: mova disco médio para segundo eixo 3 Algoritmo: Problemas Complexos Passo 3: mova disco menor para segundo eixo Algoritmo: Problemas Complexos Passo 4: mova disco maior para terceiro eixo 4 Algoritmo: Problemas Complexos Passo 5: mova disco menor para primeiro eixo Algoritmo: Problemas Complexos Passo 6: mova disco médio para terceiro eixo 5 Algoritmo: Problemas Complexos 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 eixo Passo 3: mova disco menor para segundo eixo Passo 4: mova disco maior para terceiro eixo Passo 5: mova disco menor para primeiro eixo Passo 6: mova disco médio para terceiro eixo Passo 7: mova disco menor para terceiro eixo 6 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! 7 Abstração Realidade O que você abstrai dessa realidade? Abstração O que é abstração? 8 Abstração Abstração = Operação mental que observa a realidade e captura apenas os aspectos relevantes para um contexto 9 10 Abstração A tarefa de programar sistemas computacionais envolve o exercício constante da R ealidade abstração da realidade e sua Abstração codificação em uma + Programação linguagem de programação Sistema de Locadora de Veículo Sistema Computacional O que é um Sistema Computacional? 11 Sistema Computacional Software Sistema Computacional Hardware Peopleware Sistema Computacional A programação de um sistema computacional pode ser resumida em 3 passos básicos Entrada Processamento Saída Dispositivo de Entrada UCP Dispositivo de Saída Memória 12 Sistema Computacional Exemplo 1 – Exibir a média de dois números Entrada Processamento Saída Dispositivo de Entrada UCP Dispositivo de Saída Memória 6,8 (6 + 8) / 2 7 Sistema Computacional Exemplo 2 – Exibir se o aluno está aprovado ou reprovado Entrada Processamento Saída Dispositivo de Entrada UCP Dispositivo de Saída Memória Ana, 5, 3 Se (5+3)/2>=7 aprovado Senão reprovado Ana, reprovado 13 Sistema Computacional Unidade Central de Processamento (2) Unidade Lógica e Aritmética (3) Unidade de Controle (1) Dispositivo de Entrada (5) Dispositivo de Saída (4) Memória Principal Trajeto de dados Trajeto de sinais de controle Arquitetura de um computador hipotético – Modelo de Von Neuman 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 Baixo Nível Linguagem de Máquina Linguagem Assembly (Mnemônica) 0010 0001 1110 LOAD R1, val1 Alto Nível Linguagem de Alto N ível val2 = val1+val2 0010 0010 1111 LOAD R2, val2 0001 0001 0010 ADD R1, R2 0011 0001 1111 STORE R1, val2 (1) (2) (3) 14 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) 15 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? 16 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 é uma PROPOSIÇÃO? 17 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 Operação Símbolo Negação ~ Conjunção ^ Disjunção v Significado Não E OU – Definindo a prioridade: Usar parênteses Ex:((p v q)^(~q)) ou Obedecer (~) > (^) > (v) 18 Noções de Lógica Tabela ^ (e) Tabela v (ou) Tabela ~ (Não) V^V=V VvV=V ~V=F V^F=F VvF=V ~F=V F^V=F FvV=V F^F=F FvF=F Tabela Verdade Noções de Lógica 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) 19 Noções de Lógica 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: p V V F F q V F V F ~p F F V V p^q V F F F pvq V V V F – Ou seja: Não (~) troca o valor lógico. Se é F passa a ser V e viceversa 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 20 Atividade 2 Considerando p = V e q = F, resolva as seguintes expressões lógicas – ~p – ~q – p^q – pvq – (~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 – pvq=V – (~p) ^ q = F – (~p) v q = F – p ^ (~q) = V – p v (~q) = V – (~p) ^ (~q) = F – (~p) v (~q) = V 21 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 22 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; 23 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. 24 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. 25 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. 26 Instrução de Atribuição Exemplos D B^2-4*A*C; nome “Paulo”; Pratica_Esporte Sexo ‘M’; TRUE; 27