Material de Apoio de Algoritmo e Lógica de Programação

171,313 views

Published on

Material de Apoio de Algoritmo e Lógica de Programação - 1° Semestre

Published in: Education, Technology

Material de Apoio de Algoritmo e Lógica de Programação

  1. 1. Ciência da Computação Algoritmos e Lógica de Programação Ana Leda
  2. 2. Algoritmos - Introdução <ul><li>Lógica de Programação </li></ul><ul><ul><li>É a técnica de encadear pensamentos para atingir determinado objetivo. </li></ul></ul><ul><li>Seqüência Lógica </li></ul><ul><ul><li>São passos executados até atingir um objetivo ou solução de um problema. </li></ul></ul><ul><li>Instruções </li></ul><ul><ul><li>Um conjunto de regras ou normas definidas para realização de algo. </li></ul></ul>
  3. 3. Algoritmos - Introdução <ul><li>Algoritmo </li></ul><ul><ul><li>É uma seqüência finita de passos que levam a execução de uma tarefa. </li></ul></ul><ul><ul><li>Ex: Chupar uma bala (pegar um bala, retirar o papel, colocar a bala na boca, jogar papel no lixo). </li></ul></ul><ul><li>Programas </li></ul><ul><ul><li>São algoritmos escritos em uma linguagem de programação (C, Pascal, Java, etc) e que são interpretados e executados por uma máquina. </li></ul></ul><ul><li>OBS : Cuidados devem ser tomados no desenvolvimento de </li></ul><ul><li> algoritmos. </li></ul><ul><li> algoritmo errado resultado errado </li></ul>
  4. 4. Algoritmos - Representação <ul><li>Descrição Narrativa </li></ul><ul><ul><li>Pseudocódigo </li></ul></ul><ul><ul><li>Fluxograma </li></ul></ul><ul><ul><li>Diagrama de Chapin </li></ul></ul><ul><li>Pseudocódigo </li></ul><ul><ul><li>Utiliza-se de uma linguagem intermediária entre a linguagem falada e a linguagem de programação. </li></ul></ul><ul><ul><li>Devem ser independentes da linguagem de programação a ser posteriormente utilizada na codificação. </li></ul></ul><ul><li>Fluxograma </li></ul><ul><ul><li>Modelo que utiliza figuras para representar o fluxo dos dados e os comandos do algoritmo. Cada operação a ser executada é representada por um símbolo cuja forma identifica o tipo de processo envolvido. </li></ul></ul>
  5. 5. Algoritmos - Representação <ul><li>Pseudocódigo – estrutura: </li></ul><ul><li>Onde : </li></ul><ul><ul><li><identificador-do-algoritmo> </li></ul></ul><ul><ul><li>é o nome dado ao algoritmo pelo programador </li></ul></ul><ul><ul><li><declarações> </li></ul></ul><ul><ul><li>onde são informados os tipos de dados e informações que serão manipulados </li></ul></ul><ul><ul><li><comandos> </li></ul></ul><ul><ul><li>onde ocorrem as entradas de dados, os processamentos necessários e as saídas das informações desejadas. </li></ul></ul>Algoritmo <identificador-do-algoritmo> <declarações> Início <comandos> Fim
  6. 6. Fluxogramas – Símbolos Básicos Início ou término de um fluxograma Entrada de dados via teclado Procedimento interno e/ou Mudança de conteúdo Tomada de decisão Repetição Saída de dados para monitor
  7. 7. Algoritmo - Exemplo <ul><li>Elaborar o algoritmo que faça a soma de dois números inteiros quaisquer: </li></ul>Pseudocódigo algoritmo somadoisnum var n1, n2, result: inteiro início leia n1 leia n2 result  n1 + n2 escreva result fim Fluxograma início n1, n2 Result  n1 + n2 result fim Linguagem de Programação program somadoisnum; var n1, n2, result: integer; begin readln(n1); readln(n2); result := n1 + n2; writeln (result); end .
  8. 8. Algoritmos – Tipos de dados <ul><li>Devemos informar ao computador qual o tipo de dado que vamos armazenar e/ou manipular. </li></ul><ul><li>Definem o conjunto de operações para a manipulação dos dados. </li></ul><ul><ul><li>Exemplo : em um dado numérico pode-se aplicar uma operação aritmética </li></ul></ul><ul><li>As células de memória do computador armazenam os dados durante a execução do programa. </li></ul><ul><li>Determina quantas células de memória serão necessárias para armazenar o dado. </li></ul><ul><li>As células de memória serão classificadas segundo seu tipo. </li></ul>
  9. 9. Algoritmos – Tipos de dados <ul><li>Os tipos de dados podem variar de uma linguagem para outra. No entanto, existem dois tipos básicos: </li></ul><ul><ul><li>Tipos simples; </li></ul></ul><ul><ul><li>Tipos estruturados (vetor, registro, etc, estudados mais adiante) </li></ul></ul>Tipos de Dados Simples Numérico Caracter Lógico Inteiro Real
  10. 10. Algoritmos – Tipos de dados <ul><li>Numérico – são valores que representam números </li></ul><ul><li>Os dados numéricos são divididos em basicamente dois grandes conjuntos: Inteiros e Reais </li></ul><ul><ul><li>Inteiro : os inteiros podem ser positivos, negativos ou nulos, mas não possuem um componente decimal . </li></ul></ul><ul><ul><ul><ul><ul><li>Exemplos: 1 -3 0 234 </li></ul></ul></ul></ul></ul><ul><ul><li>Real : os reais podem ser positivos, negativos ou nulos, e possuem sempre um componente decimal. </li></ul></ul><ul><ul><ul><ul><ul><li>Exemplos: 1 1,45 -0,56 2322 </li></ul></ul></ul></ul></ul>
  11. 11. Algoritmos – Tipos de dados <ul><li>Numérico </li></ul><ul><ul><li>Os números inteiros consomem menos espaço de armazenamento em memória; </li></ul></ul><ul><ul><li>Os inteiros são compatíveis com os reais, mas os reais não são compatíveis com os inteiros, assim, um objeto real pode receber um valor inteiro, mas um objeto inteiro não pode receber um valor real. </li></ul></ul>Reais Inteiros
  12. 12. Algoritmos – Tipos de dados <ul><li>Caractere - são tipos de dados não numéricos, também chamados strings ou literal </li></ul><ul><ul><li>São representados por letras (A - Z, a – z), dígitos (0 a 9), espaço em branco ( ) e símbolos especiais (~, . , ?, >, <, etc.) </li></ul></ul><ul><ul><li>Devem sempre estar entre aspas (“). </li></ul></ul><ul><ul><li>Exemplos: “a” “ave” “7,89” “Atenas2004” </li></ul></ul><ul><ul><li>Diferenças entre dados caracteres e dados numéricos: forma de armazenamento e operações legais permitidas sobre os mesmos. </li></ul></ul><ul><ul><li>Exemplos: operações aritméticas sobre os dados numéricos </li></ul></ul><ul><ul><li>Para diferenciarmos um caractere de um nome de célula de memória ou de um dado numérico, utilizaremos aspas (“”). </li></ul></ul><ul><ul><li>Assim: 8 é um dado numérico “8” é um caractere </li></ul></ul><ul><ul><li> “ A” é um caractere A é um nome de célula de memória </li></ul></ul>
  13. 13. Algoritmos – Tipos de dados <ul><li>Lógico - também chamado de valores verdade ou booleanos </li></ul><ul><ul><li>São os valores que representam o conceito lógico de verdade e falsidade. </li></ul></ul><ul><ul><li>Os dados lógicos só podem assumir verdadeiro ou falso, armazenando apenas um desses dois valores. </li></ul></ul><ul><ul><li>Muito utilizados em controle do fluxo lógico do algoritmo. </li></ul></ul><ul><ul><li>Outras formas de representação: </li></ul></ul><ul><ul><li>Exemplos: 0 e 1 V e F True e False Sim e Não </li></ul></ul>
  14. 14. Algoritmos – Variáveis <ul><li>Como referenciar e recuperar os dados armazenados em um computador? </li></ul><ul><ul><li>os valores são armazenados na memória; </li></ul></ul><ul><ul><li>cada tipo de dados diferente ocupa um número específico de bytes de memória; </li></ul></ul><ul><ul><li>para recuperar um certo valor é necessário saber seu tipo e o endereço do byte inicial ocupado na memória. </li></ul></ul><ul><li>De forma geral, podemos dizer que a uma célula de memória está associado um identificador. </li></ul><ul><li>O termo variável é freqüentemente utilizado como sinônimo de identificador. </li></ul><ul><li>Variável é uma entidade que guarda valores que podem ser alterados no decorrer de um algoritmo. </li></ul><ul><li>Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. </li></ul><ul><li>Uma variável não pode armazenar um valor de tipo de dado diferente daquele para o qual foi criada. </li></ul>
  15. 15. Algoritmos – Variáveis <ul><li>Para indicar identificador e o tipo de uma variável, existe um lugar específico, tanto nos algoritmos quanto nos programas, normalmente no início dos mesmos. </li></ul><ul><li>Em geral, as linguagens de programação exigem nomes de identificadores com as seguintes características: </li></ul><ul><ul><li>use somente letras e números; </li></ul></ul><ul><ul><li>o primeiro caractere do nome deve ser uma letra; </li></ul></ul><ul><ul><li>não é permitido o uso de caracteres especiais, exceto o caractere “_” </li></ul></ul><ul><ul><ul><li>Exemplos válidos : </li></ul></ul></ul><ul><ul><ul><ul><li>Imposto_de_Renda, F1, Soma, desconto, SalarioHora </li></ul></ul></ul></ul><ul><ul><ul><li>Exemplos inválidos : </li></ul></ul></ul><ul><ul><ul><ul><li>Imposto-de-Renda, 1F, Salario Hora </li></ul></ul></ul></ul><ul><li>O identificador de uma variável e o tipo de dado que irá armazenar não se alteram, enquanto o valor a ela associado pode mudar. </li></ul>
  16. 16. Algoritmos – Variáveis <ul><li>Atributos (características) de uma variável </li></ul><ul><li>Célula de memória; </li></ul><ul><li>Nome; </li></ul><ul><li>Tipo; </li></ul><ul><li>Valor associado; </li></ul><ul><li>Os dados são valores que são armazenados em células de memória e que são acessados (ao longo do algoritmo) por referência às variáveis; </li></ul><ul><li>Exemplo: Identificadores i, r, c, h para objetos do tipo inteiro, real, caractere e lógico, respectivamente, atribuindo valores 100; 3,14; ‘Z’ e falso: </li></ul>Nome do identificador (variável) Tipo de dado que será armazenado (inteiro, real, caractere ou lógico) Valor associado (valor armazenado na célula de memória) Célula de memória 100 i 3,14 r Z c falso h
  17. 17. Algoritmos – Variáveis <ul><li>Para a escolha do tipo de um identificador, deve-se conhecer bem a solução do problema </li></ul><ul><li>Exemplos de inteiros : </li></ul><ul><ul><li>Número de pessoas; </li></ul></ul><ul><ul><li>Um número par ou ímpar; </li></ul></ul><ul><ul><li>Idade de uma pessoa; </li></ul></ul><ul><ul><li>Quantidade de objetos; </li></ul></ul><ul><li>Exemplos de reais : </li></ul><ul><ul><li>O peso de uma pessoa; </li></ul></ul><ul><ul><li>Um percentual; </li></ul></ul><ul><ul><li>Nota de uma avaliação; </li></ul></ul><ul><ul><li>Preço de uma produto; </li></ul></ul><ul><li>Exemplos de caracteres : </li></ul><ul><ul><li>Um nome de pessoa; </li></ul></ul><ul><ul><li>Um endereço; </li></ul></ul><ul><ul><li>Um número de CEP; </li></ul></ul><ul><ul><li>Um número de telefone; </li></ul></ul><ul><li>Exemplos de lógicos : </li></ul><ul><ul><li>Se o sexo é feminino; </li></ul></ul><ul><ul><li>Se a pessoa é maior de idade; </li></ul></ul>
  18. 18. Algoritmos – Constantes <ul><li>Constante é uma entidade que guarda valores que não podem ser alterados no decorrer de um algoritmo. </li></ul><ul><li>Podem ser vistas como uma variável cujo valor nunca pode ser alterado. </li></ul><ul><li>Possuem um nome único para sua identificação, chamado de identificador. </li></ul><ul><li>Recomenda-se sempre utilizar nomes que ajudem a entender o algoritmo. </li></ul><ul><ul><li>Exemplos : pi = 3,1415 sexo_m = “masculino” </li></ul></ul><ul><li>As regras para nomes de constantes são as mesmas para variáveis: </li></ul><ul><ul><li>Use somente letras e números; </li></ul></ul><ul><ul><li>O primeiro caractere do nome deve ser uma letra; </li></ul></ul><ul><ul><li>Não é permitido o uso de caracteres especiais, exceto o caractere “_” </li></ul></ul>
  19. 19. Algoritmos Declaração de Variáveis e Constantes <ul><li>Variável </li></ul><ul><li>Var </li></ul><ul><li>nome_da_variável: <tipo de dado> </li></ul><ul><li>Exemplo : </li></ul>Algoritmo variável var x, y, z : real nome : caractere ok : lógico Início <instruções> Fim Constante Const nome_da_constante: <valor> Exemplo: Algoritmo constante const pi = 3,1415 sexo_m =“masculino” Início <instruções> Fim
  20. 20. Algoritmos – Atribuição <ul><li>As variáveis podem ter seus valores modificados durante um algoritmo. Este processo é chamado de atribuição. </li></ul><ul><li>Dois elementos estão envolvidos: </li></ul><ul><ul><li>elemento para o qual realizamos a atribuição  variável </li></ul></ul><ul><ul><li>elemento que fornece o valor a ser atribuído  expressão </li></ul></ul><ul><ul><li>Atenção ! O valor a ser atribuído deve ser do mesmo tipo de dado da variável. </li></ul></ul>
  21. 21. Algoritmos – Atribuição <ul><li>Sintaxe : </li></ul><ul><li>variável  <valor> </li></ul><ul><li>variável  <expressão> </li></ul><ul><li>Exemplos: </li></ul><ul><li>x  34 sexo  “FEMININO” </li></ul><ul><li>y  x * 3 salário  128,00 </li></ul><ul><li>Considere as atribuições : a  5 b  2 c  10 </li></ul><ul><li>Se fizermos a  b e b  c teremos: </li></ul><ul><li>a = 2 b = 10 c = 10 </li></ul>
  22. 22. Algoritmos – Entrada e Saída de Dados <ul><li>Um algoritmo tem 3 passos principais : </li></ul><ul><ul><li>receber as informações </li></ul></ul><ul><ul><li>processar as informações </li></ul></ul><ul><ul><li>gerar um saída com os resultados: </li></ul></ul><ul><ul><ul><li>para o usuário </li></ul></ul></ul><ul><ul><ul><li>para um outro algoritmo (ex. funções) </li></ul></ul></ul>ALGORITMO Entrada Saída
  23. 23. Algoritmos – Entrada e Saída de Dados <ul><li>Entrada de Dados - As informações recebidas por um algoritmo são armazenadas em variáveis. </li></ul><ul><ul><li>Sintaxe : </li></ul></ul><ul><ul><li>Leia <lista de variáveis> </li></ul></ul><ul><ul><li>Exemplos : </li></ul></ul><ul><ul><li>Leia x, y </li></ul></ul><ul><ul><li>Leia nome_aluno </li></ul></ul><ul><li>Saída de Dados - As informações de saída geradas pelo algoritmo podem vir de variáveis, expressões ou constantes. </li></ul><ul><ul><li>Sintaxe : </li></ul></ul><ul><ul><li>Escreva <lista de expressões> </li></ul></ul><ul><ul><li>Exemplos : </li></ul></ul><ul><ul><li>Escreva x </li></ul></ul><ul><ul><li>Escreva “Você pesa “, x * 2, “quilos” </li></ul></ul><ul><ul><li>Escreva x + 10 </li></ul></ul>
  24. 24. Algoritmos – Entrada e Saída de Dados <ul><li>Exemplo : </li></ul><ul><li>Faça um algoritmo que transforme uma velocidade fornecida em m/s (metros por segundo) pelo usuário para km/h (quilômetros por hora). Para tal, multiplique o valor em m/s por 3,6. </li></ul>Algoritmo km_por_hora var velocidade : real Início escreva “Digite velocidade em m/s: ” leia velocidade escreva “Velocidade em km/h: “, velocidade * 3,6 Fim
  25. 25. Algoritmos – Operadores e Expressões <ul><li>Operadores – Designam uma operação exercida sobre operandos (variáveis ou constantes) para obter um valor. </li></ul><ul><li>Podem ser de 3 tipos: </li></ul><ul><ul><li>Aritméticos </li></ul></ul><ul><ul><li>Relacionais </li></ul></ul><ul><ul><li>Lógicos </li></ul></ul><ul><li>Expressões – Quando juntamos vários operadores e seus respectivos operandos temos uma expressão. O tipo da expressão relaciona com o valor resultante final da sua avaliação: </li></ul><ul><ul><li>Aritmética </li></ul></ul><ul><ul><li>Relacional </li></ul></ul><ul><ul><li>Lógica </li></ul></ul>
  26. 26. Algoritmos – Operadores e Expressões <ul><li>Operadores Aritméticos – Operam sobre tipos de dados numéricos </li></ul><ul><li>Expressões Aritméticas – Aquelas cujos operadores são aritméticos e cujos operandos são constantes e/ou variáveis do tipo numérico (inteiro e/ou real). </li></ul><ul><li>O resultado da avaliação é um valor do tipo de dado numérico. </li></ul>Expressão Matemática Expressão Algoritmica Soma Subtração Multiplicação Divisão + - * / Exponenciação Resto da divisão de inteiros Quociente da divisão de inteiros ** Mod Div a + b 2 a.x 2 2.a + b a/2+ b a*x**2 2*a + b
  27. 27. Algoritmos – Prioridades de Operadores <ul><li>As operações são realizadas em uma expressão de acordo com a ordem de prioridade. Quando houver empate entre operações, elas serão realizadas da esquerda para a direita. </li></ul><ul><li>Os parênteses quebram a ordem de prioridade natural. </li></ul>_a__ 2 + b a / 2 + b a / (2 + b) Errado Certo III Subtração - III Adição + II Divisão / II Multiplicação * I Exponenciação ** Prioridade Significado Operador
  28. 28. Algoritmos – Prioridades de Operadores <ul><li>O resultado da expressão do lado direito de um comando de atribuição deve ser coerente com o tipo declarado para a variável do lado esquerdo. </li></ul><ul><ul><li>a  b + c </li></ul></ul><ul><ul><li>se b e c são do tipo real, então a também deve ser real </li></ul></ul><ul><li>Quando houver parênteses aninhados, a prioridade será do mais interno. </li></ul>a / (a + b) – (2 * (b + c)) 1 3 2 4 5
  29. 29. Algoritmos –Operadores Relacionais <ul><li>Operadores Relacionais </li></ul><ul><ul><li>Comparação entre objetos (ou entre um objeto e um valor) do mesmo tipo. </li></ul></ul><ul><ul><li>O resultado será sempre do tipo lógico (V ou F) </li></ul></ul><ul><ul><li>O operador relacional perde em prioridade para os operadores aritméticos. </li></ul></ul><ul><ul><li>O operador relacional é binário, isto é, ele deve envolver um operando a sua esquerda e um a sua direita. </li></ul></ul>‘ a’ >= ‘b’ Maior ou igual a >= B*A <= 0 Menor ou igual a <= A = 0 Igual a = A + B <> C Diferente de <> 2*A < B**2 Menor que < A > B, 4 > 3, C > 3 Maior que > Exemplo de uso Significado Operador
  30. 30. Algoritmos – Operadores Lógicos <ul><li>Operadores Lógicos </li></ul><ul><ul><li>Utilizados no processo de tomada de decisão e em controles de repetição </li></ul></ul><ul><ul><li>O resultado da operação é sempre um valor lógico (V ou F) </li></ul></ul><ul><ul><li>A expressão A e B será verdadeira quando o operando A e o operando B produzirem resultados verdadeiros simultaneamente. Qualquer outra combinação de valores destes operandos produzirá resultado falso. </li></ul></ul><ul><ul><li>A expressão A ou B será verdadeira quando uma das proposições (operando A ou operando B ) produzir resultado verdadeiro. </li></ul></ul><ul><ul><li>Os operadores E e OU são binários e o operador NÃO é unário. </li></ul></ul>I Não A Negação Não II A e B Conjunção E III A ou B Disjunção OU Prioridade Exemplo de uso Significado Operador
  31. 31. Algoritmos – Expressões Lógicas <ul><li>Expressões Lógicas </li></ul><ul><ul><li>São expressões que resultam em valores lógicos. </li></ul></ul><ul><ul><li>Combinações de operandos relacionais e lógicos. </li></ul></ul><ul><ul><ul><li>Exemplos : </li></ul></ul></ul><ul><ul><ul><li>x >= 0 E x <= 1 </li></ul></ul></ul><ul><ul><ul><li>carro = “gol” OU carro = “corsa” </li></ul></ul></ul>
  32. 32. Algoritmos – Expressões Lógicas <ul><li>Tabela Verdade </li></ul><ul><ul><li>A “tabela-verdade” representa o funcionamento dos operadores lógicos. </li></ul></ul><ul><ul><li>Mostra os resultados das operações sobre todas as combinações de valores dos operandos. </li></ul></ul>V F F F F Exemplo 4 V F F NÃO T1 V F V F Exemplo 3 V F F V Exemplo 2 V V V V Exemplo 1 T1 OU T2 T1 E T2 T2 T1
  33. 33. Algoritmos – Estruturas de Seleção <ul><li>Uma estrutura de seleção permite a escolha de um grupo de ações (bloco) a ser executado quando determinadas condições, representadas por expressões lógicas ou relacionais, são ou não satisfeitas. </li></ul><ul><li>Seleção Simples </li></ul><ul><li>Quando é necessário testar uma certa condição antes de executar uma ação, usa-se uma seleção simples, que tem o seguinte modelo: </li></ul><ul><ul><li>Onde se a <condição> for verdadeira então executará as instruções, caso contrário, encerra-se a seleção (fim-se), neste caso, sem executar nenhuma instrução. </li></ul></ul>se <condição> então <instruções> fim-se
  34. 34. Algoritmos – Estruturas de Seleção <ul><li>Seleção Simples </li></ul><ul><ul><li>Exemplo : Cálculo da média de quatro números do tipo real. </li></ul></ul>Algoritmo selecao var n1, n2, n3, n4, media: real inicio leia n1, n2, n3, n4 media  (n1 + n2+ n3 + n4) / 4 se media >= 7 entao escreva (“Aprovado”) fim-se fim program selecao; var n1, n2, n3, n4, media: real; begin readln (n1, n2, n3, n4); media := (n1 + n2+ n3 + n4) / 4; if media >= 7 then writeln (‘Aprovado’); end. PSEUDOCÓDIGO CODIFICAÇÃO EM PASCAL
  35. 35. Algoritmos – Estruturas de Seleção <ul><li>Seleção Composta </li></ul><ul><li>Quando temos situações em que duas alternativas dependem de uma mesma condição, uma alternativa se a condição for verdadeira e outra se a condição for falsa, usamos a estrutura de seleção composta, que tem a seguinte estrutura: </li></ul><ul><ul><li>Onde se a <condição> for verdadeira então executará um determinado grupo de instruções, caso contrário, executará as instruções que seguem a cláusula senão . </li></ul></ul>se <condição> então <instruções> senão <instruções> fim-se
  36. 36. Algoritmos – Estruturas de Seleção <ul><li>Seleção Composta </li></ul>Algoritmo selecao var n1, n2, n3, n4, media: real inicio leia n1, n2, n3, n4 media  (n1 + n2+ n3 + n4) / 4 se media >= 7 entao escreva (“Aprovado”) escreva (“Parabéns!”) senão escreva (“Reprovado”) escreva (“Estude mais!”) fim-se Fim program selecao; var n1, n2, n3, n4, media: real; begin readln (n1, n2, n3, n4); media := (n1 + n2+ n3 + n4) / 4; if media >= 7 then begin writeln (‘Aprovado’); writeln(‘Parabéns!’); end else begin writeln (‘Reprovado’); writeln (‘Estude mais!’); end; end. PSEUDOCÓDIGO CODIFICAÇÃO EM PASCAL
  37. 37. Algoritmos – Estruturas de Seleção <ul><li>Exemplo – Idade para emissão da carteira de motorista </li></ul>Codificação em Pascal Fluxograma program idade; var idade, x: integer; begin readln (idade); if idade >= 18 then writeln(‘Você pode tirar a carteira’) else begin writeln (‘Você não pode tirar carteira’); x := 18 – idade; writeln (‘Ainda faltam’, x, ‘ anos’); end; end. início idade ‘ Você pode tirar a carteira’ fim Idade>=18 V ‘ Você não pode tirar carteira’ F x  18 - idade ‘ Ainda faltam´, x, ‘ anos’
  38. 38. Algoritmos - Seleção Encadeada <ul><li>Em algumas situações temos necessidade de agruparmos várias seleções que recebe o nome de seleção encadeada ou seleção aninhada </li></ul><ul><ul><li>Exemplo : Verificar qual é o maior de três números digitados </li></ul></ul>Codificação em Pascal program maior; var a, b, c : real; begin readln (a, b, c); if (a >= b) and (a >= c) then writeln(a, ‘ é o maior número’) else if (b >= a) and (b >= c) then writeln(b, ‘ é o maior número’) else writeln(c, ‘ é o maior número’) end.
  39. 39. Algoritmos - Seleção Encadeada <ul><li>Fluxograma do exemplo anterior </li></ul>início a, b, c a, ‘ é o maior’ fim V F b>= a e b>= c F b, ‘ é o maior’ V c, ‘ é o maior’ a>= b e a>= c
  40. 40. Algoritmos – Seleção Múltipla <ul><li>Esta é uma estrutura que permite que seja executado um único conjunto de instruções, entre vários, de acordo com o valor de um objeto; </li></ul><ul><li>Esta estrutura pode substituir a ocorrência de várias estruturas SE-ENTÃO ou SE-ENTÃO-SENÃO; </li></ul><ul><li>A desvantagem em relação ao comando SE é que esta estrutura não analisa condição composta (com mais de um operador). </li></ul>
  41. 41. Algoritmos – Seleção Múltipla <ul><ul><li>Pseudocódigo </li></ul></ul><ul><ul><li>caso <expressão> faça </li></ul></ul><ul><ul><li><valor1>: <comandos 1> </li></ul></ul><ul><ul><li><valor2>: <comandos 2> </li></ul></ul><ul><ul><li><valorn>: <comandos n> </li></ul></ul><ul><ul><li>senão <comandos4> </li></ul></ul><ul><ul><li>fim_caso; </li></ul></ul>Pascal case <expressão> of <valor1>: <comandos 1> <valor2>: <comandos 2> <valorn>: <comandos n> else <comandos 4> end; <cond_1> <cond_2> <cond_n> <comandos_senão> <comandos 1> <comandos 2> <comandos n> <ul><li>Onde : </li></ul><ul><li><expressão> é uma variável ou uma constante do tipo inteiro ou caractere; </li></ul><ul><li><comandos 1> é o bloco de instruções que será executado se o valor for igual a valor1; </li></ul><ul><li><comandos 2> é o bloco de instruções que será executado se o valor for igual a valor2, e assim, sucessivamente; </li></ul><ul><li><comandos 4> é o bloco de instruções que será executado caso valor não seja igual a nenhum dos outros valores especificados anteriormente a senão. </li></ul>
  42. 42. Algoritmos – Seleção Múltipla <ul><li>O algoritmo abaixo pede a digitação de um número que represente o dia da semana, exibindo-o por extenso. </li></ul>Algoritmo dia_semana Var dia : inteiro r : caractere inicio leia dia caso dia faça 1 : r:= ‘DOM’ 2 : r:=‘SEG’ 7 : r:=‘SAB’ senão escreva ‘Dia inválido’ fim-caso Escreva r Fim Pseudocódigo Codificação em Pascal Program dia_semana; Var dia : integer; r : string; begin read (dia); case dia of 1 : r:= ‘DOM’; 2 : r:=‘SEG’; 7 : r:=‘SAB’; else write (‘Dia inválido’); end; write (r); repeat until keypressed; End.
  43. 43. Algoritmos – Estruturas de Repetições <ul><li>São necessárias quando se tem que repetir uma determinada instrução, que represente um comportamento padrão, várias vezes; </li></ul><ul><li>Com estas estruturas, escreve-se a instrução uma única vez e ela pode ser executada várias vezes; </li></ul><ul><li>Repetições podem ser controladas por: </li></ul><ul><ul><li>Condição </li></ul></ul><ul><ul><li>Contador </li></ul></ul><ul><li>Sintaxe e semântica idênticas; </li></ul><ul><li>Quando o controle é por contador, a interrupção é prevista no instante em que é iniciada a execução da estrutura de controle de repetições; </li></ul><ul><li>É imprescindível que haja uma instrução dentro do bloco de instruções que permita a alteração do valor lógico da condição; </li></ul>
  44. 44. Algoritmos – Estruturas de Repetições <ul><li>Como fazer quando o número de repetições não é previamente conhecido? </li></ul><ul><ul><li>Escrever condições especiais para os comandos ‘Enquanto’ e ‘Faça’ para que terminem o algoritmo. </li></ul></ul><ul><li>Quando utilizar? </li></ul><ul><ul><li>Nas situações onde necessitamos repetir mais de uma vez um bloco de instruções específicas. </li></ul></ul><ul><ul><li>Exemplo : quando um mesmo bloco de instruções deve ser aplicado a um conjunto de dados (geralmente em grande quantidade). </li></ul></ul>
  45. 45. Algoritmos – Estruturas de Repetições <ul><li>ENQUANTO </li></ul><ul><li>Permite executar diversas vezes um trecho do algoritmo, porém, sempre verificando antes de cada execução se é “permitido” executar algum trecho. </li></ul><ul><li><condição> é uma expressão lógica, ou seja, o resultado deve ser verdadeiro ou falso; </li></ul><ul><li>O bloco será executado enquanto o resultado da condição for verdadeiro. Se já da primeira vez o resultado for falso, os comandos não são executados nenhuma vez. </li></ul><ul><li>O fluxo neste comando é o seguinte: a primeira vez que se chega ao comando de repetição, é feito o teste da condição, que determina se deve ou não entrar no bloco. Se entrar, ao final do bloco volta-se para a primeira linha do bloco e então testa-se novamente a condição. </li></ul>enquanto <condição> faça <sequência de comandos> fim_enquanto
  46. 46. Algoritmos – Estruturas de Repetições <ul><li>ENQUANTO </li></ul><ul><ul><li>Exemplo : Calcular a média aritmética de 3 notas de 30 alunos. </li></ul></ul>Algoritmo Media_30 var cont : inteiro n1, n2, n3, media : real inicio cont  0 enquanto cont < 30 faça leia (n1, n2, n3) media  (n1+n2+n3) / 3 cont  cont + 1 fim-enquanto escreva (media) fim Program Media_30; var cont : integer; n1, n2, n3, media: real; begin cont := 0; while cont < 30 do begin readln (n1, n2, n3); media := (n1+n2+n3) / 3; cont := cont + 1; end; writeln (media); end. Pseudocódigo Codificação em Pascal
  47. 47. Algoritmos – Estruturas de Repetições <ul><li>PARA - FAÇA </li></ul><ul><li>É uma estrutura de repetição com contador que permite executar uma ou mais instruções um determinado número de vezes. </li></ul><ul><li>Para controlar o número de repetições, empregamos uma variável denominada contador. </li></ul><ul><li><variável> um identificador para uma variável do tipo inteiro. </li></ul><ul><li>Ao encontrar a instrução “para” é atribuída à variável o valor_inicial declarado. A partir daí, a seqüência de comandos é executada repetidamente, até que a variável atinja o valor_final. </li></ul><ul><li>A cada vez que a seqüência de comandos é executada, a variável é incrementada automaticamente. </li></ul><ul><li>Esta estrutura só pode ser utilizada em repetições controladas por um contador. Isto é, aquelas repetições que sabemos o número de vezes que acontecerá quando iniciamos sua execução. </li></ul>para <variável>  <valor_inicial> até <valor_final> faça <sequência de comandos> fim_para
  48. 48. Algoritmos – Estruturas de Repetições <ul><li>PARA - FAÇA </li></ul><ul><ul><li>Exemplo : Calcular a média aritmética de 3 notas de 30 alunos . </li></ul></ul>Algoritmo Media_30 var cont : inteiro n1, n2, n3, media : real inicio para cont  1 até 30 faça leia (n1, n2, n3) media  (n1+n2+n3) / 3 escreva (media) fim-para fim Program Media_30; uses crt; var cont : integer; n1, n2, n3, media: real; begin clrscr; for cont := 1 to 30 do begin clrscr; writeln (‘Digite as 3 notas:’); readln (n1, n2, n3); media := (n1+n2+n3) / 3; writeln (media:0:2); end; end.
  49. 49. Algoritmos – Estruturas de Repetições <ul><li>REPITA </li></ul><ul><li>Esta estrutura permite que uma seqüência de comandos seja executada até que uma determinada condição seja satisfeita. </li></ul><ul><li>Este tipo de repetição garante que o comando seja executado pelo menos uma vez antes que a repetição termine. </li></ul><ul><li><condição> é uma expressão lógica, ou seja, o resultado deve ser verdadeiro ou falso. </li></ul><ul><li>O bloco será executado sempre que o resultado da expressão for falso, no momento em que se tornar verdadeiro a ação subseqüente ao comando ‘até que’ será executada. </li></ul><ul><li>O fluxo neste comando é o seguinte: a primeira vez que se chega ao comando de repetição, entra-se no bloco. Ao final do bloco, testa-se a condição e, volta para a primeira linha do bloco, se a condição for falsa. </li></ul>repita <seqüência de comandos> até que <condição>
  50. 50. Algoritmos – Estruturas de Repetições <ul><li>REPITA </li></ul><ul><ul><li>Exemplo : Calcular a média aritmética de 3 notas de 30 alunos . </li></ul></ul>Algoritmo Media_30 var cont : inteiro n1, n2, n3, media : real inicio cont  1 repita leia (n1, n2, n3) media  (n1+n2+n3) / 3 cont  cont + 1 escreva (media) até que cont > 30 fim Program Media_30; uses crt; var cont : integer; n1, n2, n3, media: real; begin cont := 1 clrscr; repeat clrscr; writeln (‘Digite as 3 notas:’); readln (n1, n2, n3); media := (n1+n2+n3) / 3; writeln (media:0:2); cont := cont + 1; until cont > 30; end.
  51. 51. Algoritmos e Lógica de Programação <ul><li>RESUMO </li></ul>
  52. 52. Conceitos Básicos <ul><li>Algoritmos – são formas de resolução de um problema, através da especificação passo-a-passo de como resolvê-lo. </li></ul><ul><li>A noção de algoritmo é básica em Computação: </li></ul><ul><li>Dar uma solução para um problema computacional significa elaborar um ALGORITMO em PSEUDO-CÓDIGO (linguagem intermediária entre a linguagem natural e a linguagem de programação) e implementá-lo numa linguagem de programação, gerando um PROGRAMA. </li></ul>Resolução de Problemas por Computador
  53. 53. Conceitos Básicos <ul><li>Um algoritmo é uma seqüência de passos bem definida que resolve determinado problema, através da transformação de dados iniciais na resposta desejada, tendo cinco importantes características: </li></ul><ul><ul><li>Deve ser finito; </li></ul></ul><ul><ul><li>Os passos devem ser bem definidos, sem ambigüidades; </li></ul></ul><ul><ul><li>Deve ser eficaz; </li></ul></ul><ul><ul><li>Deve possuir uma entrada; </li></ul></ul><ul><ul><li>Deve produzir uma saída ou resultado. </li></ul></ul>
  54. 54. Resolução de Problemas por Computador <ul><li>ESTRUTURA GERAL DE UM ALGORITMO </li></ul>Algoritmo Nome-do-Algoritmo Declaração de constantes e variáveis Início Atribuições Comandos de Entrada/Saída Estruturas de controle de fluxo Seleção Repetição Fim.
  55. 55. Resolução de Problemas por Computador <ul><li>Constantes </li></ul><ul><ul><li>Informação que não sofre variação no decorrer do tempo: </li></ul></ul><ul><ul><li>Ex: 5, “Não fume”, 2548, -0,62, “R$ 10,00”, falso </li></ul></ul><ul><li>Variáveis </li></ul><ul><ul><li>Informação que tem a possibilidade de ser alterada em algum instante no decorrer do tempo: </li></ul></ul><ul><ul><li>Ex: Cotação do dólar, peso de uma pessoa, salário </li></ul></ul><ul><li>Declaração de Variáveis e Constantes </li></ul><ul><ul><li>Alocar espaço de memória do tamanho do tipo-de-dado e dar um nome a este espaço; </li></ul></ul><ul><ul><li>Ao longo do programa, usa-se o nome dado ao invés do valor </li></ul></ul><ul><ul><li>CONST n = 50 </li></ul></ul><ul><ul><li>VAR a, b, c, soma: real </li></ul></ul>
  56. 56. Resolução de Problemas por Computador <ul><li>Declaração de Variáveis e Constantes </li></ul><ul><ul><li>Quando definir variáveis? </li></ul></ul><ul><ul><li>Quando um elemento da lógica para a resolução do problema sofrer alterações de valor ao longo desta resolução. </li></ul></ul><ul><ul><li>Quando definir constantes? </li></ul></ul><ul><ul><li>Quando um valor fixo for utilizado várias vezes na lógica para a resolução do problema. </li></ul></ul><ul><li>Tipo de Dados </li></ul><ul><li> INTEIRO REAL LÓGICO CARACTERE </li></ul><ul><li>Atribuição </li></ul><ul><ul><li>Fornece um valor a uma variável. </li></ul></ul><ul><ul><li>Ex: a  1; sexo  “Feminino”; salario  128,00 </li></ul></ul><ul><li>Comandos de Entrada e Saída </li></ul><ul><ul><li>Exemplos dos comandos de entrada (leia) e saída (escreva): </li></ul></ul><ul><ul><li>Leia x Leia a, nota, faltas </li></ul></ul><ul><ul><li>Escreva x Escreva a, nota, faltas </li></ul></ul><ul><ul><li>Escreva “Bom dia ”, nome Escreva “Você pesa ”, x * 2, “ quilos” </li></ul></ul>
  57. 57. Resolução de Problemas por Computador <ul><li>Expressões Aritméticas </li></ul><ul><ul><li>Aquelas cujos operadores são aritméticos e cujos operandos são constantes e/ou variáveis do tipo numérico (inteiro e/ou real). </li></ul></ul><ul><ul><li>Operadores Aritméticos </li></ul></ul><ul><ul><li>+ Adição * Multiplicação / Divisão </li></ul></ul><ul><ul><li>- Subtração ^ ou ** Exponenciação </li></ul></ul><ul><ul><li>Div Divisão de Inteiros Mod Resto da Divisão de Inteiros </li></ul></ul><ul><li>Expressões Relacionais </li></ul><ul><ul><li>Comparação entre dois valores de um mesmo tipo primitivo. Estes valores podem ser constantes, variáveis ou expressões aritméticas. </li></ul></ul><ul><ul><li>O resultado obtido de uma relação é sempre um valor lógico. </li></ul></ul><ul><ul><li>Operadores Relacionais </li></ul></ul><ul><ul><li>= igual a <> diferente de > maior que < menor que </li></ul></ul><ul><ul><li>>= maior igual a <= menor igual a </li></ul></ul><ul><li>Expressões Lógicas </li></ul><ul><ul><li>Aquelas cujos operadores são lógicos e/ou relacionais e cujos operandos são relações e/ou variáveis e/ou constantes do tipo lógico. </li></ul></ul><ul><ul><li>Operadores Lógicos </li></ul></ul><ul><ul><li>E - Conjunção OU - Disjunção NÃO - Negação </li></ul></ul>
  58. 58. Estruturas de Controle de Fluxo <ul><li>Seqüência </li></ul><ul><li>Seleção </li></ul><ul><ul><li>Simples </li></ul></ul><ul><ul><li>Composta </li></ul></ul><ul><ul><li>Múltipla </li></ul></ul><ul><li>Repetição </li></ul><ul><ul><li>Teste condicional no início </li></ul></ul><ul><ul><ul><li>Número de repetições conhecido </li></ul></ul></ul><ul><ul><ul><li>Número de repetições desconhecido </li></ul></ul></ul><ul><ul><li>Teste condicional no fim </li></ul></ul><ul><ul><ul><li>Número de repetições desconhecido </li></ul></ul></ul>
  59. 59. Estruturas de Controle de Fluxo <ul><li>Seqüência Seleção Simples </li></ul>Início < comando 1 > < comando 2 > ....... < comando n > Fim. Início ....... se < condição 1 > então < comando 1 > < comando 2 > ....... < comando n > fim-se ...... Fim.
  60. 60. Estruturas de Controle de Fluxo <ul><li>Seleção Composta Seleção Múltipla </li></ul>Início ..... se < condição 1 > então < comando 1 > < comando 2 > ....... < comando n > senão < comando 1 > < comando 2 > ....... < comando n > fim-se ....... Fim. Início ....... caso < variável > faça < valor 1 > : < comando 1 > < valor 2 > : < comando 2 > ....... < valor n > : < comando n > senão < comando z > fim-caso ...... Fim. Bloco Verdade Bloco Falso
  61. 61. Estruturas de Controle de Fluxo <ul><li>Repetição – usada em trechos do algoritmo em que há a necessidade de se realizar um bloco de comando um número determinado de vezes. </li></ul><ul><li>Repetição com teste no início  ENQUANTO </li></ul><ul><li>Permite executar diversas vezes um trecho do algoritmo, porém, sempre verificando antes de cada execução se é “permitido” executar. </li></ul><ul><ul><li>Quando o resultado da < condição 1 > for falso, o comando é abandonado. </li></ul></ul><ul><ul><li>Se já da primeira vez o resultado for falso, os comandos não serão executados nenhuma vez. </li></ul></ul>ENQUANTO < condição 1 > FAÇA < comando 1 > < comando 2 > ...... < comando n > FIM-ENQUANTO
  62. 62. Estruturas de Controle de Fluxo <ul><li>Repetição com teste no final  REPITA </li></ul><ul><ul><li>O bloco de comandos é executado pelo menos uma vez, independente da validade da < condição 1 >. Isto ocorre porque a inspeção da < condição 1 > é feita após a execução do bloco. </li></ul></ul>REPITA < comando 1 > < comando 2 > ...... < comando n > ATÉ QUE < condição 1 >
  63. 63. Estruturas de Controle de Fluxo <ul><li>Repetição com variável de controle  PARA </li></ul><ul><ul><li>onde : </li></ul></ul><ul><ul><li>< variável > é a variável de controle; </li></ul></ul><ul><ul><li>< valor_inicial > é o valor inicial de < variável >; </li></ul></ul><ul><ul><li>< valor_final > é o valor final de < variável >, ou seja, o valor máximo em que ela pode chegar. </li></ul></ul>PARA < variável >  < valor_inicial > até < valor_final> FAÇA < comando 1 > < comando 2 > ...... < comando n > FIM-PARA
  64. 64. Comparação entre as estruturas de Repetição <ul><li>Toda estrutura ENQUANTO pode ser convertida para REPITA e vice-e-versa ; </li></ul><ul><li>Toda estrutura PARA pode ser convertida em ENQUANTO , mas nem toda estrutura ENQUANTO pode ser convertida em PARA . </li></ul>Valor_inicial <= valor_final (valor_final – valor_inicial) Implícita no Início PARA Condição Falsa Mínimo 1 Fim REPITA Condição Verdadeira Indeterminada Início ENQUANTO Condição de Existência Qtde. de Execuções Condição Estrutura
  65. 65. Nomenclatura Básica de Pascal <ul><li>Linguagem computacional largamente utilizada no ensino-aprendizagem de programação de computadores. </li></ul><ul><li>Criada por Niklaus Wirth em 1972, na Universidade Técnica de Zurique, Suiça. </li></ul><ul><li>Seu nome homenageia o matemático Blaise Pascal. </li></ul><ul><li>Existem vários compiladores para esta linguagem, o mais comum no ambiente acadêmico é o Turbo Pascal, da Borland. </li></ul>
  66. 66. Nomenclatura Básica de Pascal <ul><li>Equivalência de termos entre pseudocódigo e Pascal: </li></ul>:=  Writeln Escreva Readln Leia Real Real Integer Inteiro String Caractere End Fim Begin Início Var Var Program Algoritmo PASCAL PSEUDOCÓDIGO
  67. 67. Nomenclatura Básica de Pascal <ul><li>Equivalência de termos entre pseudocódigo e Pascal: </li></ul>Case Caso For Para Until / To Até Repeat Repita Do Faça While Enquanto Else Senão Then Então If Se PASCAL PSEUDOCÓDIGO

×