Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação – Parte 02 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav 1 Algoritmos e Programação Algoritmos em Pseudocódigo Pseudocódigo Técnica textual de representação de um algoritmo - Também conhecida como Português Estruturado ou Portugol. Nele os verbos (ações) disponíveis para utilização são limitados e empregados no imperativo. Deve-se evitar as expressões excessivamente longas, estas restrições visam eliminar a possibilidade de ambiguidade. Técnica é baseada em uma PDL (Program Design Language), que é uma linguagem genérica na qual é possível representar um algoritmo de forma semelhante à das linguagens de programação. A estrutura de um algoritmo em pseudocódigo pode variar um pouco de acordo com o autor ou com base na linguagem de programação que será utilizada posteriormente, mas essas variações ocorrem apenas na sintaxe, pois a semântica deve ser exatamente a mesma. 2 Algoritmos e Programação- Prof. Jorge Cavalcanti - Univasf 1 Algoritmos e Programação Entrada de dados. Sintaxe leia (<lista de variáveis>) É necessária a declaração prévia das variáveis, na seção var. var n1: inteiro k: caractere Exemplos: leia (n1) - O valor digitado será armazenado na variável n1. leia (k) - Um ou vários caracteres digitados serão armazenados na variável k (Definida como caractere). No caso de utilizar leia (<lista de variáveis>), será respeitada a ordem da lista de variáveis, da esquerda para direita. Exemplo: leia (n1, k, n2) 3 Algoritmos e Programação Saída de dados. Sintaxe escreva (<lista-de-variáveis>) escreval (<lista-de-variáveis>) Obs: escreval imprime a variável na tela e o cursor vai para uma nova linha. Exemplos: escreva (n1) - Será mostrado na tela o conteúdo da variável n1. escreva (“O texto digitado foi ”, k) - Será mostrado o texto entre “” e depois o conteúdo da variável k. 4 2 Algoritmos e Programação Saída de dados. É possível especificar o número de colunas da tela e/ou de casas decimais onde se deseja escrever um determinado valor. Exemplo: considerando uma variável inteira x, o comando escreva (x:5) escreve o valor da variável x em 5 colunas, alinhado-o à direita. Exemplo: considerando y como uma variável real, o comando escreva (y:6:2), escreve seu valor em 6 colunas colocando 2 casas decimais. 5 Algoritmos e Programação Saída de dados. Exemplo - Abaixo um pseudocódigo de um algoritmo simples, que recebe um valor inteiro, fornecido pelo usuário, e o retorna no monitor. algoritmo “exemplo 1” var x: inteiro inicio leia (x) escreva (x) fimalgoritmo 6 3 Algoritmos e Programação Operador de Atribuição símbolo <Exemplo: var a: inteiro valor1, valor2: real ... a <- 5 valor1 <- 3.14 valor2 <- valor1 escreva(valor2) Apenas valores pertencentes ao tipo da variável podem lhe ser atribuídos. O valor a ser atribuído pode ser o conteúdo de uma variável, de uma constante, o resultado de operações sobre variáveis/constantes ou um valor diretamente. 7 Algoritmos e Programação Operador de Atribuição Exemplo: Declarações constante: MÁXIMO = 10 var quantidade, filhos, netos: inteiro aberto: booleano altura: real resposta: caractere Atribuições altura <- 1.80 filhos <- 3 netos <- filhos * 2 – 3 quantidade <- MÁXIMO – 5 aberto <- F aberto <- quantidade < MÁXIMO resposta <- “S” 8 4 Algoritmos e Programação Operadores e Hierarquia na operações: 9 Algoritmos e Programação Operadores e Hierarquia nas operações: Exemplos: 3/4+5 = 5.75 3/(4+5) = 0.33333333 3\2*9 = 9 11%3^2 = 2 11%(3^2) = 2 (11%3)^2 = 4 3\2+(65-40)^(1/2) = 6 10 5 Algoritmos e Programação Operadores e Hierarquia na operações: Exemplos: 3>7 = FALSO “A” = “a” = VERDADEIRO “a” > “B” = FALSO (3>=13\4) xou (nao (5%2=0)) = FALSO 11 Algoritmos e Programação Blocos de instruções. As instruções em uma linguagem de programação sempre são executadas em sequência. A utilização de blocos de instruções deixa claro onde a sequência de instruções começa e termina. Todo algoritmo tem pelo menos um bloco de instruções, que indica o início e final do próprio algoritmo. Ex.: <declaração de variáveis> início <primeira instrução do bloco> <segunda instrução do bloco> ... <última instrução do bloco> fim 12 6 Algoritmos e Programação Blocos de instruções. Ex. Sabendo que a relação entre vértices, arestas e faces de um objeto geométrico é dada pela fórmula: vértices + faces = arestas + 2, calcule o número de vértices de um cubo (06 faces e 12 arestas). Ex. 01 - Algoritmo “Vértices de um cubo” var vertices, faces, arestas: inteiro inicio faces <- 6 arestas <-12 vertices <- arestas + 2 – faces fim 13 Algoritmos e Programação Estrutura de um algoritmo: algoritmo "soma de dois números” {NOME DO ALGORITMO} // Função : // Autor : // Data : 10/8/2010 // Seção de Declarações var a,b,c:inteiro {DECLARAÇÃO DE VARIÁVEIS} inicio // Seção de Comandos "){INÍCIO DO ALGORITMO} escreval("Digite dois números leia (a) leia (b) c:= a + b escreva ("A soma he:",c) fimalgoritmo {FIM DO ALGORITMO} 14 7 Algoritmos e Programação 15 Algoritmos e Programação Passos necessários para a construção de um algoritmo: Ler atentamente o enunciado do problema, compreendendo-o e destacando os pontos mais importantes; Definir os dados de entrada, ou seja, quais dados serão fornecidos; Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento; Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela obtenção dos dados de saída com base nos dados de entrada; Definir as variáveis necessárias para armazenar as entradas e efetuar do processamento; Elaborar o algoritmo; Testar o algoritmo realizando simulações. 16 8 Algoritmos e Programação EXERCÍCIO (Adaptado do Ex. 01) Ex. 02 - Sabendo que a relação entre vértices, arestas e faces de um objeto geométrico é dada pela fórmula: vértices + faces = arestas + 2, calcule o número de vértices de um objeto genérico. A entrada será o número de faces e arestas e a saída será o número de vértices. Alg. 02 - Algoritmo “Vértices de um objeto genérico” var vertices, faces, arestas: inteiro inicio escreva (“Entre com o número de faces do objeto: “) leia (faces) escreva (“Entre com o número de arestas do objeto: “) leia (arestas) vertices <- arestas + 2 – faces escreva (“ O número de vértices do objeto é: “, vertices) fim 17 Algoritmos e Programação Ex. 03a - Construa um pseudocódigo para representar um algoritmo que efetue a multiplicação de dois inteiros quaisquer. algoritmo “exemplo 3a” var n1, n2, res: inteiro inicio escreva (“Digite o multiplicando inteiro: ”) leia (n1) escreva (“Digite o multiplicador inteiro: ”) leia (n2) res<- n1 * n2 escreva (“Resultado da multiplicação: ”, res) fimalgoritmo 18 9 Algoritmos e Programação Ex. 03b - Construa um pseudocódigo para representar um algoritmo que efetue a multiplicação de dois inteiros quaisquer. algoritmo “exemplo 3b” var n1, n2: inteiro inicio escreva (“Digite o multiplicando inteiro: ”) leia (n1) escreva (“Digite o multiplicador inteiro: ”) leia (n2) escreva (“Resultado da multiplicação: ”, n1*n2) fimalgoritmo 19 Algoritmos e Programação Ex. 03c - Construa um pseudocódigo para representar um algoritmo que efetue a multiplicação de dois inteiros quaisquer. algoritmo “exemplo 3c” var n1, n2: inteiro inicio escreva ("Digite o multiplicando e em seguida ") escreva (" o multiplicador (ambos inteiros): ") leia (n1, n2) escreva ("Resultado da multiplicação: ", n1*n2) fimalgoritmo 20 10 Algoritmos e Programação Ex. 4a - Gere um pseudocódigo que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o resultado da manipulação na saída padrão. algoritmo “exercício 4a” var valor, resultado: real inicio escreva (“Entre com o valor do produto: ”) leia (valor) resultado <- valor * 0.7 escreva (“Valor com desconto de 30%: ”) escreva (resultado) fimalgoritmo 21 Algoritmos e Programação Ex. 4b - Gere um pseudocódigo que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o resultado da manipulação na saída padrão. algoritmo “exercício 4b” var valor: real inicio var valor: real inicio escreva (“Entre com o valor do produto: ”) leia (valor) valor <- valor * 0.7 escreva (“Valor com desconto de 30%: ”) escreva (valor:6:2) fimalgoritmo 22 11 Algoritmos e Programação Ex. 4c - Gere um pseudocódigo que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o resultado da manipulação na saída padrão. algoritmo “exercício 4c” var valor: real inicio escreva (“Entre com o valor do produto: ”) leia (valor) escreva (“Valor com desconto de 30%: ”, valor * 0.7:6:2) fimalgoritmo 23 Algoritmos e Programação EXERCÍCIOS 1) Escreva um programa que receba dois números e calcule a média deles. 2) Escreva um programa que receba três números e depois peça o valor dos pesos e depois calcule a média ponderada dos números. 3) Faça um programa que leia uma temperatura em graus Celsius e calcule o correspondente em Fahrenheit. Sabendo que: F=(180*(C+32))/100 24 12 Algoritmos e Programação Estruturas de Controle de Fluxo Os algoritmos desenvolvidos até o momento constituem uma seqüência de ações que sempre são executadas em sua totalidade indiferente do valor da entrada de dados. Para a resolução de determinados problemas ou para a execução de determinadas tarefas é necessária a realização de um conjunto distinto de ações e este conjunto é definido com base na análise da entrada de dados. Um exemplo simples de uma destas situações é um algoritmo capaz de efetuar o cálculo do imposto de renda devido por um determinado contribuinte. Neste caso dependendo da quantidade de dependentes, do valor de sua renda e outras fatores o cálculo será feito de formas distintas. 25 Algoritmos e Programação Instrução Condicional Estas instruções permitem que o programador especifique a seqüência de instruções que será executada. Considere um problema que exija uma decisão. Tomemos como exemplo uma divisão, onde haja a necessidade de que o algoritmo verifique se o divisor é igual ou diferente de zero. Se for igual não é possível dividir. Se for diferente é possível dividir. Sintaxe: se (<expressão-lógica>) então <sequência de comandos> senão <seqüência de comandos> fimse 26 13 Algoritmos e Programação Exemplo: Instrução Condicional algoritmo "divisão – instrução condicional“ // Seção de Declarações var n1, n2: inteiro resultado: real inicio // Seção de Comandos escreva ("Digite o dividendo:") leia (n1) escreva ("Digite o divisor:") leia (n2) se (n2=0) entao escreva ("Impossível dividir por zero") senao resultado <- n1/n2 escreva ("O resultado eh:", resultado) fimse fimalgoritmo 27 Algoritmos e Programação 28 14 Algoritmos e Programação Comando de Seleção Múltipla Em algumas situações ao chegarmos a uma determinada instrução de um algoritmo devemos selecionar um dentre alguns trechos a seguir, tendo como base para esta escolha um conjunto de valores. Para lidar com casos deste tipo foi criado o comando de seleção múltipla. 29 Algoritmos e Programação Sintaxe: Comando de seleção múltipla escolha (<variável>) caso <valor11>, <valor12>, ..., <valor1n> <seqüência-de-comandos-1> caso <valor21>, <valor22>, ..., <valor2m> <seqüência-de-comandos-2> ... outrocaso <seqüência-de-comandos-extra> fimescolha 30 15 Algoritmos e Programação Exemplo: algoritmo "Times - seleção múltipla" // Função : // Autor : // Data : 10/8/2010 // Seção de Declarações var time: caractere inicio // Seção de Comandos escreval ("Digite um nome de time de futebol:") leia (time) escolha (time) caso "Sport", "Santa Cruz", "Nautico", "Petrolina" escreval ("É um time Pernambucano") caso "Vitória", "Bahia", "Camaçari", "Juazeiro" escreval ("É um time Baiano") outrocaso escreval ("É de outro Estado") fimescolha fimalgoritmo 31 Algoritmos e Programação 32 16 Algoritmos e Programação 1) 33 Algoritmos e Programação 2) Receba do usuário um número entre 1 e 7, inclusive 1 e 7. Se ele digitar o número 1 mostre “Hoje é Domingo”, se ele digitar o número 2 mostre “Hoje é Segunda”....... 3) Peça uma letra e mostre se ela é vogal ou consoante. 4) Peça três números e mostre o maior entre eles. 34 17