Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 02 (baseado no material do prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav 1
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. Introdução a Algoritmos- Prof. Jorge Cavalcanti - Univasf 2
Entrada de dados. Palavra-reservada: leia - utilizada para receber dados externos ao algoritmo e armazená-los na memória como variáveis. 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
Saída de dados. Palavra-reservada: escreva - utilizada para externar (enviar para o monitor) dados gerados pelo algoritmo. 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. escreva ( Estudou e se dedicou tirou, 10) 4
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
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
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
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
Operadores Aritméticos Unários: +, - Exemplos: +1-5.9... var a: inteiro... a <- -a 9
Operadores Aritméticos Binários: +, -, *, /, \, %, ^ Símbolo Operação + Soma - Subtração * Multiplicação / Divisão \ Quociente da divisão inteira % Resto da divisão inteira ^ Potenciação 10
Operadores e Hierarquia na operações: 11
Operadores e Hierarquia nas operações: Exemplos: 3/4+5 = 5.75 3/(4+5) = 0.33333333 3\2*9 = 9 Hierarquia 11%3^2 = 2 11%(3^2) = 2 (11%3)^2 = 4 3\2+(65-40)^(1/2) = 6 Operação 1 Parênteses 2 Função 3 -, + (unários) 4 ^ 5 *, /, \, % 6 +, - 12
Operadores Relacionais Operador Ação > maior que >= maior ou igual a < menor que <= menor ou igual a = igual a <> diferente de 13
Operadores Lógicos Operador e ou nao xou 14
Expressões lógicas Exemplos: 3>7 = FALSO A = a a > B = VERDADEIRO = FALSO Ana < Aline = FALSO (3>=13\4) xou (nao (5%2=0)) = FALSO 15
Pseudocódigo Estrutura 16 A estrutura de um algoritmo em pseudocódigo pode variar de acordo com o autor ou com a linguagem de programação que será utilizada, mas essas variações ocorrem apenas na sintaxe, pois a semântica deve ser a mesma. A estrutura que empregaremos para a construção de nossos pseudocódigos será a seguinte: algoritmo nome //Tem como objetivo identificar o //algoritmo, deve-se utilizar um nome o mais significativo //possível, para facilitar a identificação var // Seção de Declarações Aqui são informadas quais //variáveis, e seus respectivos tipos, serão utilizadas no algoritmo inicio // Seção de Comandos - Aqui será escrita a sequencia de // comandos que deve ser executada para solucionar // o problema em questão fimalgoritmo //marca o final do algoritmo
Pseudocódigo As palavras reservadas presentes na estrutura do pseudocódigo apresentado foram: algoritmo var inicio fimalgoritmo 17
Pseudocódigo Exemplo Observaremos agora um pseudocódigo 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 18
Pseudocódigo Exemplo Outro exemplo é o pseudocódigo de um algoritmo que recebe um valor inteiro, acresce duas unidades a este, e exibe o resultado desta manipulação. algoritmo exemplo 2 var numero, resposta: inteiro inicio escreva ( Digite um número inteiro: ) leia (numero) resposta <- numero+2 escreval ( Resultado (número + 2):, resposta) fimalgoritmo 19
Pseudocódigo Exemplo Outro exemplo é o pseudocódigo de um algoritmo que recebe um valor inteiro, acresce duas unidades a este, e exibe o resultado desta manipulação. algoritmo exemplo 2 var n: inteiro inicio escreva ( Digite um número inteiro: ) leia (n) n <- n+2 escreval ( Resultado (número + 2):, n) fimalgoritmo 20
Pseudocódigo Exemplo Outro exemplo é o pseudocódigo de um algoritmo que recebe um valor inteiro, acresce duas unidades a este, e exibe o resultado desta manipulação. algoritmo exemplo 2 var n: inteiro inicio escreva ( Digite um número inteiro: ) leia (n) escreval ( Resultado (número + 2):, n+2) fimalgoritmo 21
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 22
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 23
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} 24
25
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. 26
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 27
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 28
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 29
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 30
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 31
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 escreva ( Entre com o valor do produto: ) leia (valor) valor <- valor * 0.7 escreva ( Valor com desconto de 30%: ) escreva (valor:6:2) fimalgoritmo 32
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 33
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 34
Fluxogramas Conceitualmente um fluxograma é um tipo de diagrama, e pode ser entendido como uma representação esquemática de um processo, constitui uma representação gráfica que ilustra de forma descomplicada a sequência de execução dos elementos que o compõem. Podemos entendê-lo, na prática, como a documentação dos passos necessários para a execução de um processo qualquer. 35
Conjunto de símbolos utilizados em fluxogramas Símbolo Nome Descrição Terminador Seta de fluxo Declaração Indica o início e o fim do fluxo do algoritmo. Indica o sentido do fluxo de execução do algoritmo. É através dela que os símbolos do fluxograma são conectados. Delimita a seção de declaração de variáveis. Entrada de dados Atribuição Saída de dados Desvio condicional Corresponde à instrução de entrada de dados através do teclado. Símbolo utilizado para indicar cálculos e atribuição de valores. Corresponde à instrução de saída de dados. Os dados serão exibidos na tela do computador. Divide o fluxo do programa em dois caminhos, dependendo do teste lógico que fica dentro do losango. 36
Exemplo de Fluxograma De forma similar à análise feita com pseudocódigo, iniciaremos nossa análise por um fluxograma que efetua a leitura, através do teclado, de um valor inteiro e o retorna no monitor. Inicio n: inteiro n n Fim 37
Exemplo de Fluxograma Fluxograma que recebe um valor inteiro, através da entrada padrão, e acresce duas unidades a este exibindo o resultado na saída padrão. Inicio n: inteiro Forneça um valor inteiro Fim n n <- n + 2 O valor fornecido acrescido de duas unidades resulta em, n 38
Exercício de Fluxograma Construa um fluxograma para obter o resultado da multiplicação de dois números inteiros quaisquer fornecidos pelo usuário. Inicio Inicio n1, n2: inteiro n1, n2, res: inteiro Digite o multiplicando e o multiplicador, ambos inteiros: Fim Resultado:, res Digite um inteiro como multiplicando: n2 n1 Digite um inteiro como multiplicador: n1, n2 n1, *,n2, =, n1 * n2 res <- n1 * n2 Fim
Exercício de Fluxograma Gere um fluxograma que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o Inicio resultado da manipulação na saída padrão. Inicio Inicio valor, resultado: real valor: real Entre com o valor do produto: valor: real Entre com o valor do produto: valor Entre com o valor do produto: valor valor <- valor * 0.7 valor resultado <- valor * 0.7 Valor de venda, resultado:6:2 Fim Valor de venda, valor:6:2 Fim Valor com desconto:, valor * 0.7:6:2 Fim