Algoritmos e programação - Aula 2

6,669 views
6,439 views

Published on

Slides referentes a 2ª aula da disciplina de Algoritmos e programação, realizada no dia 05/02/2011

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,669
On SlideShare
0
From Embeds
0
Number of Embeds
56
Actions
Shares
0
Downloads
269
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Algoritmos e programação - Aula 2

  1. 1. Algoritmos e Programação Thyago Maia Tavares de Farias Aula 2
  2. 2. Sumário <ul><li>Por que criamos algoritmos? </li></ul><ul><li>Representações de um algoritmo </li></ul><ul><li>Regras básicas para Português Estruturado </li></ul><ul><ul><li>Linearização de expressões </li></ul></ul><ul><ul><li>Modularização de expressões </li></ul></ul>
  3. 3. Por que criamos algoritmos? <ul><li>Linguagem natural não pode ser interpretada por um computador; </li></ul><ul><li>Computadores são projetados para executar tarefas bem determinadas a partir de determinadas instruções; </li></ul><ul><li>Para desenvolver software, utilizamos linguagens de programação; </li></ul><ul><li>A linguagem algorítmica é similar a uma linguagem de programação; </li></ul><ul><li>Logo, aprendendo a criar algoritmos, estamos aptos a programar em qualquer linguagem de programação; </li></ul>
  4. 4. Por que criamos algoritmos? ALGORITMO CÓDIGO-FONTE EM LINGUAGEM DE PROGRAMAÇÃO ADAPTAÇÃO LINGUAGEM NATURAL INSTRUÇÕES COMPILAÇÃO LINGUAGEM DE MÁQUINA TRADUÇÃO 01000101001.... PORTUGUÊS, INGLÊS... ALTO NÍVEL BAIXO NÍVEL
  5. 5. Representações de um Algoritmo <ul><li>Descrição narrativa; </li></ul><ul><li>Fluxograma </li></ul><ul><li>Pseudocódigo, Português Estruturado ou Portugol; </li></ul>SUBJETIVIDADE PRECISÃO
  6. 6. Representações de um Algoritmo <ul><li>Descrição Narrativa: </li></ul><ul><ul><li>Preferencialmente um verbo por frase; </li></ul></ul><ul><ul><li>Frases curtas e simples; </li></ul></ul><ul><ul><li>Objetividade; </li></ul></ul><ul><ul><li>Evitar palavras com sentido dúbio; </li></ul></ul>
  7. 7. Exemplo <ul><li>Descrição Narrativa: </li></ul><ul><ul><li>Dobro de um número (Dobro = Número x 2): </li></ul></ul><ul><ul><ul><li>Digitar um número; </li></ul></ul></ul><ul><ul><ul><li>Gravar em uma variável; </li></ul></ul></ul><ul><ul><ul><li>Multiplicar o número digitado por 2; </li></ul></ul></ul><ul><ul><ul><li>Gravar o resultado em outra variável; </li></ul></ul></ul><ul><ul><ul><li>Mostrar o resultado da operação. </li></ul></ul></ul>
  8. 8. Representações de um algoritmo <ul><li>Fluxogramas </li></ul><ul><ul><li>Descrevem o fluxo de ação de um determinado trabalho lógico, seja manual ou mecânico; </li></ul></ul><ul><ul><li>Usa símbolos convencionais, permitindo poucas variações; </li></ul></ul><ul><ul><li>Representado por símbolos geométricos; </li></ul></ul>
  9. 9. Exemplo <ul><li>Fluxograma para lidar com uma lâmpada que não funciona </li></ul>LÂMPADA NÃO FUNCIONA A LÂMPADA ESTÁ PLUGADA ? PLUGUE A LÂMPADA NÃO A LÂMPADA ESTÁ QUEIMADA ? SIM TROQUE A LÂMPADA SIM VERIFIQUE O BOCAL NÃO
  10. 10. Representações de um algoritmo <ul><li>Português estruturado (Portugol) </li></ul><ul><ul><li>Linguagem mais restrita que o português em linguagem natural; </li></ul></ul><ul><ul><li>Simplificação extrema do português; </li></ul></ul><ul><ul><li>Significados bem definidos para todos os termos utilizados nas instruções; </li></ul></ul><ul><ul><li>Possui um conjunto de palavras e regras específicas (sintaxe da linguagem); </li></ul></ul><ul><ul><li>Representação utilizada no curso; </li></ul></ul>
  11. 11. Representações de um algoritmo <ul><li>Português estruturado (Portugol) </li></ul><ul><ul><li>Normalmente as implementações são feitas em papel, escritos a mão; </li></ul></ul><ul><ul><li>Atualmente também são utilizados programas que interpretam, testam e executam algoritmos; </li></ul></ul>
  12. 12. Desafio <ul><li>Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha e a caixa de verduras para o outro lado do lago. Utilize a descrição narrativa para representar o algoritmo. </li></ul><ul><li>Lembrando que lobos comem ovelhas e ovelhas comem as verduras da caixa quando o homem está na outra margem! </li></ul>
  13. 13. Resposta do desafio <ul><li>Pega a ovelha </li></ul><ul><li>Vai para a outra margem </li></ul><ul><li>Deixa a ovelha </li></ul><ul><li>Volta a margem inicial </li></ul><ul><li>Pega a caixa de verduras </li></ul><ul><li>Vai para a outra margem </li></ul><ul><li>Deixa a caixa de verduras e pega a ovelha </li></ul><ul><li>Volta a margem inicial </li></ul><ul><li>Deixa a ovelha e pega o lobo </li></ul><ul><li>Vai para a outra margem </li></ul><ul><li>Deixa o lobo </li></ul><ul><li>Volta a margem inicial </li></ul><ul><li>Pega a ovelha </li></ul><ul><li>Vai para a outra margem </li></ul><ul><li>Deixa a ovelha </li></ul>
  14. 14. Linearização de expressões <ul><li>Para contrução de algoritmos que realizam cálculos matemáticos, TODAS expressões aritméticas devem ser linearizadas; </li></ul><ul><li>Linearizadas = Colocadas em linha; </li></ul>
  15. 15. Linearização de expressões <ul><li>Operadores aritméticos disponíveis para o português estruturado: </li></ul><ul><ul><li>Adição (+) </li></ul></ul><ul><ul><li>Subtração (-) </li></ul></ul><ul><ul><li>Multiplicação (*) </li></ul></ul><ul><ul><li>Divisão (/) </li></ul></ul><ul><ul><li>Divisão inteira () </li></ul></ul><ul><ul><li>Exponenciação (^ ou Exp) </li></ul></ul><ul><ul><li>Módulo, ou resto da divisão (%) </li></ul></ul>
  16. 16. Linearização de expressões <ul><li>Operadores relacionais </li></ul><ul><ul><li>Realizam a comparação entre dois operandos ou duas expressões e resultam em valores lógicos (verdadeiro ou falso) </li></ul></ul><ul><ul><ul><li>Ex.: 2+5 > 4 resultaria VERDADEIRO; </li></ul></ul></ul><ul><ul><ul><li>Ex.: 2 = 7 resultaria FALSO; </li></ul></ul></ul>
  17. 17. Linearização de expressões <ul><li>Operadores relacionais disponíveis no Português estruturado: </li></ul><ul><ul><li>Maior (>) </li></ul></ul><ul><ul><li>Menor (<) </li></ul></ul><ul><ul><li>Maior ou igual (>=) </li></ul></ul><ul><ul><li>Menor ou igual (<=) </li></ul></ul><ul><ul><li>Igual (=) </li></ul></ul><ul><ul><li>Diferente (<>) </li></ul></ul>
  18. 18. Linearização de expressões <ul><li>Operadores lógicos </li></ul><ul><ul><li>Atuam em expressões, também resultando em valores lógicos VERDADEIRO ou FALSO; </li></ul></ul><ul><ul><li>Tipos de operadores: </li></ul></ul><ul><ul><ul><li>E: Resulta verdadeiro se AMBAS AS PARTES forem verdadeiras; </li></ul></ul></ul><ul><ul><ul><li>OU: Resulta verdadeiro se UMA DAS PARTES é verdadeira; </li></ul></ul></ul><ul><ul><ul><li>NÃO: Nega uma afirmação. Se verdadeiro, torna-se falso; Se falso, torna-se verdadeiro; </li></ul></ul></ul>
  19. 19. Linearização de expressões <ul><li>Exemplos: </li></ul><ul><ul><li>(2+5 > 4) e (3 <> 3) resulta FALSO </li></ul></ul><ul><ul><ul><li>Pois VERDADEIRO e FALSO resulta FALSO; </li></ul></ul></ul><ul><ul><li>(2=2) ou (3<1) resulta VERDADEIRO </li></ul></ul><ul><ul><ul><li>Pois VERDADEIRO ou FALSO resulta VERDADEIRO; </li></ul></ul></ul><ul><ul><li>NAO (3<1) resulta VERDADEIRO </li></ul></ul><ul><ul><ul><li>Pois FALSO resulta VERDADEIRO devido a inversão de valores definido por NÃO; </li></ul></ul></ul>
  20. 20. Linearização de expressões <ul><li>Tabelas-Verdade </li></ul><ul><ul><li>Mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operandos envolvidos: </li></ul></ul>V V F F F F F V V F V F F V V F F V F F V V V V NÃO B NAO A A OU B A E B B A
  21. 21. Modularização de expressões <ul><li>É a divisão de uma expressão por partes; </li></ul><ul><li>Proporciona maior compreensão; </li></ul><ul><li>Define prioridades na resolução das mesmas; </li></ul><ul><li>Modularizamos expressões através dos parênteses ( ); </li></ul><ul><li>Podemos utilizar parênteses dentro de parênteses (( )); </li></ul><ul><li>Indicam quais sub-expressões serão executados primeiro; </li></ul>
  22. 22. Modularização de expressões <ul><li>Exemplo: </li></ul><ul><ul><li>(2+2)/2 resulta 2; </li></ul></ul><ul><ul><li>Mas 2+2/2 resulta 3; </li></ul></ul><ul><li>Ordem de prioridade dos operadores aritméticos: </li></ul><ul><ul><li>Exponenciação </li></ul></ul><ul><ul><li>Multiplicação </li></ul></ul><ul><ul><li>Divisão </li></ul></ul><ul><ul><li>Adição </li></ul></ul><ul><ul><li>Subtração </li></ul></ul>
  23. 23. Modularização de expressões <ul><li>Ordem de prioridade dos operadores lógicos: </li></ul><ul><ul><li>E </li></ul></ul><ul><ul><li>OU </li></ul></ul><ul><ul><li>NÃO </li></ul></ul><ul><li>Exemplo: </li></ul><ul><ul><li>(2>3) ou (3<2) e (2<3) resultaria FALSO </li></ul></ul><ul><ul><li>(2>3) e (3<2) ou (2<3) resultaria VERDADEIRO </li></ul></ul>
  24. 24. Modularização de Expressões <ul><li>Ordem de prioridade dos operadores disponíveis no Português estruturado: </li></ul><ul><ul><li>Operadores aritméticos </li></ul></ul><ul><ul><li>Operadores relacionais </li></ul></ul><ul><ul><li>Operadores lógicos </li></ul></ul>
  25. 25. Exercícios <ul><li>Escreva as expressões abaixo na forma linearizada: </li></ul>
  26. 26. Respostas <ul><li>1ª expressão: a + b/c </li></ul><ul><li>2ª expressão: ((2/3 – (5-3)) + 1) * 5 </li></ul>
  27. 27. Exercícios <ul><li>Escreva as seguintes expressões linearizadas na forma matemática convencional: </li></ul><ul><ul><li>4 + (5/3) * 8 – 4/2 – 5 </li></ul></ul><ul><ul><li>8/4 – 2 + (5 + 4) / (3 – 1) </li></ul></ul>
  28. 28. Exercícios <ul><li>Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: </li></ul><ul><ul><li>2 > 3 </li></ul></ul><ul><ul><li>(6 < 8) OU (3 > 7) </li></ul></ul><ul><ul><li>NÃO (2 < 3) </li></ul></ul><ul><ul><li>(2=2) E (1 > 10) OU (5<4) </li></ul></ul>
  29. 29. Respostas <ul><li>Resolva as expressões lógicas, determinando se a expressão é VERDADEIRA ou FALSA: </li></ul><ul><ul><li>2 > 3 = FALSO </li></ul></ul><ul><ul><li>(6 < 8) OU (3 > 7) = VERDADEIRO </li></ul></ul><ul><ul><li>NÃO (2 < 3) = FALSO </li></ul></ul><ul><ul><li>(2=2) E (1 > 10) OU (5<4) = FALSO </li></ul></ul>
  30. 30. Forma geral de um algoritmo <ul><li>Algoritmo “ nome do algoritmo ” </li></ul><ul><li>Var </li></ul><ul><li>Aqui declaramos as variáveis dos algoritmo </li></ul><ul><li>Inicio </li></ul><ul><li>Aqui declaramos as instruções do algoritmo </li></ul><ul><li>fimalgoritmo </li></ul>

×