introdução a algoritmos introdução a algoritmos ––parte 02...
TRANSCRIPT
Universidade Federal do Vale do São FranciscoCurso de Engenharia de Computação
1
Prof. Jorge [email protected]/~jorge.cavalcantiwww.twitter.com/jorgecav
Introdução a Algoritmos Introdução a Algoritmos –– Parte 02Parte 02(baseado no material do prof. Marcelo (baseado no material do prof. Marcelo LinderLinder) )
Introdução a Algoritmos
� 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.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 externosao 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
Introdução a Algoritmos
3
var n1: inteirok: 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)
� Saída de dados.Palavra-reservada: escreva - utilizada para externar (enviar para omonitor) 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
Introdução a Algoritmos
4
Obs: escreval � imprime a variável na tela e o cursor vaipara uma nova linha.Exemplos:
escreva (n1) - Será mostrado na tela o conteúdoda variável n1.
escreva (“O texto digitado foi ”, k) - Serámostrado o texto entre “” e depois o conteúdo da variávelk.
escreva (“Estudou e se dedicou tirou ”, 10)
� 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.
Introdução a Algoritmos
5
� 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.
� 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”
Introdução a Algoritmos
6
algoritmo “exemplo 1”
var x: inteiro
inicio
leia (x)
escreva (x)
fimalgoritmo
� Operador de Atribuição símbolo <-Exemplo: var a: inteiro
valor1, valor2: real...a <- 5valor1 <- 3.14
Introdução a Algoritmos
7
valor1 <- 3.14valor2 <- valor1escreva(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.
� Operador de Atribuição Exemplo: Declarações
constante: MÁXIMO = 10var quantidade, filhos, netos: inteiroaberto: booleanoaltura: real
Introdução a Algoritmos
8
altura: realresposta: caractere
Atribuiçõesaltura <- 1.80filhos <- 3netos <- filhos * 2 – 3quantidade <- MÁXIMO – 5aberto <- Faberto <- quantidade < MÁXIMOresposta <- “S”
� Operadores Aritméticos
� Unários: +, -
Exemplos: +1-5.9
Introdução a Algoritmos
-5.9...var a: inteiro...a <- -a
9
� Operadores Aritméticos� Binários: +, -, *, /, \, %, ^
Símbolo Operação
+ Soma
- Subtração
Introdução a Algoritmos
10
- Subtração
* Multiplicação
/ Divisão
\ Quociente da divisão inteira
% Resto da divisão inteira
^ Potenciação
Introdução a Algoritmos
� Operadores e Hierarquia na operações:
11
Introdução a Algoritmos
�Operadores e Hierarquia nas operações:Exemplos:3/4+5 = 5.753/(4+5) = 0.333333333\2*9 = 9
Hierarquia Operação
11%3^2 = 211%(3^2) = 2(11%3)^2 = 43\2+(65-40)^(1/2) = 6
12
Hierarquia Operação
1 Parênteses
2 Função
3 -, + (unários)
4 ^
5 *, /, \, %
6 +, -
� Operadores Relacionais
Operador Ação
> maior que
>= maior ou igual a
Introdução a Algoritmos
>= maior ou igual a
< menor que
<= menor ou igual a
= igual a
<> diferente de
13
� Operadores Lógicos
Operador
e
Introdução a Algoritmos
e
ou
nao
xou
14
� Expressões lógicas
Exemplos:
3>7 = FALSO
Introdução a Algoritmos
15
“A” = “a”
“a” > “B”
“Ana” < “Aline”
(3>=13\4) xou (nao (5%2=0))
= VERDADEIRO
= FALSO
= FALSO
= FALSO
� Pseudocódigo – Estrutura� 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:
Introdução a Algoritmos
16
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:
Introdução a Algoritmos
17
algoritmovariniciofimalgoritmo
� Pseudocódigo – ExemploObservaremos agora um pseudocódigo que recebeum valor inteiro, fornecido pelo usuário, e o retornano monitor.
Introdução a Algoritmos
18
algoritmo “exemplo 1”var x: inteiroinicio
leia (x)escreva (x)
fimalgoritmo
� Pseudocódigo – ExemploOutro exemplo é o pseudocódigo de um algoritmo que
recebe um valor inteiro, acresce duas unidades a este, eexibe o resultado desta manipulação.
algoritmo “exemplo 2”var numero, resposta: inteiro
Introdução a Algoritmos
19
var numero, resposta: inteiroinicio
escreva (“Digite um número inteiro: ”)leia (numero)resposta <- numero+2escreval (“Resultado (número + 2): ”, resposta)
fimalgoritmo
Outro exemplo é o pseudocódigo de um algoritmo querecebe um valor inteiro, acresce duas unidades a este, eexibe o resultado desta manipulação.
algoritmo “exemplo 2”var n: inteiro
� Pseudocódigo – Exemplo
Introdução a Algoritmos
20
var n: inteiroinicio
escreva (“Digite um número inteiro: ”)leia (n)n <- n+2escreval (“Resultado (número + 2): ”, n)
fimalgoritmo
Outro exemplo é o pseudocódigo de um algoritmo querecebe um valor inteiro, acresce duas unidades a este, eexibe o resultado desta manipulação.
algoritmo “exemplo 2”var n: inteiro
� Pseudocódigo – Exemplo
Introdução a Algoritmos
21
var n: inteiroinicio
escreva (“Digite um número inteiro: ”)leia (n)escreval (“Resultado (número + 2): ”, n+2)
fimalgoritmo
Introdução a Algoritmos
� 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
22
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
Introdução a Algoritmos
� 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
23
var vertices, faces, arestas: inteiroinicio
faces <- 6arestas <-12vertices <- arestas + 2 – faces
fim
algoritmo "soma de dois números” {NOME DO ALGORITMO}// Função :
// Autor :
// Data : 10/8/2010
// Seção de Declarações
Introdução a Algoritmos
� Estrutura de um algoritmo:
24
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}
Introdução a Algoritmos
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;
Introdução a Algoritmos
26
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.
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”
Introdução a Algoritmos
27
Alg. 02 - Algoritmo “Vértices de um objeto genérico”var vertices, faces, arestas: inteiroinicio
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 – facesescreva (“ O número de vértices do objeto é: “, vertices)
fim
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: inteiroinicio
escreva (“Digite o multiplicando inteiro: ”)
Introdução a Algoritmos
28
escreva (“Digite o multiplicando inteiro: ”)leia (n1)escreva (“Digite o multiplicador inteiro: ”)leia (n2)res<- n1 * n2escreva (“Resultado da multiplicação: ”, res)
fimalgoritmo
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: inteiroinicio
escreva (“Digite o multiplicando inteiro: ”)
Introdução a Algoritmos
29
escreva (“Digite o multiplicando inteiro: ”)leia (n1)escreva (“Digite o multiplicador inteiro: ”)leia (n2)escreva (“Resultado da multiplicação: ”, n1*n2)
fimalgoritmo
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: inteiroinicio
escreva ("Digite o multiplicando e em seguida ")
Introdução a Algoritmos
30
escreva ("Digite o multiplicando e em seguida ")escreva (" o multiplicador (ambos inteiros): ")leia (n1, n2)escreva ("Resultado da multiplicação: ", n1*n2)
fimalgoritmo
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: realinicio
Introdução a Algoritmos
31
inicioescreva (“Entre com o valor do produto: ”)leia (valor)resultado <- valor * 0.7escreva (“Valor com desconto de 30%: ”)escreva (resultado)
fimalgoritmo
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: realinicio
Introdução a Algoritmos
32
inicioescreva (“Entre com o valor do produto: ”)leia (valor)valor <- valor * 0.7escreva (“Valor com desconto de 30%: ”)escreva (valor:6:2)
fimalgoritmo
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: realinicio
Introdução a Algoritmos
33
inicioescreva (“Entre com o valor do produto: ”)leia (valor)escreva (“Valor com desconto de 30%: ”, valor * 0.7:6:2)
fimalgoritmo
EXERCÍCIOS
1) Escreva um programa que receba dois números ecalcule a média deles.
2) Escreva um programa que receba três números edepois peça o valor dos pesos e depois calcule a
Introdução a Algoritmos
34
depois peça o valor dos pesos e depois calcule amédia ponderada dos números.
3) Faça um programa que leia uma temperatura emgraus Celsius e calcule o correspondente emFahrenheit. Sabendo que: F=(180*(C+32))/100
� 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
Introdução a Algoritmos
35
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.
Conjunto de símbolos utilizados em fluxogramas
Símbolo Nome Descrição
Terminador Indica o início e o fim do fluxo do algoritmo.
Seta de fluxoIndica o sentido do fluxo de execução do algoritmo. É através dela que os símbolos do fluxograma são conectados.
Declaração Delimita a seção de declaração de variáveis.
Entrada de Corresponde à instrução de entrada de dados
36
Entrada de dados
Corresponde à instrução de entrada de dados através do teclado.
Atribuição Símbolo utilizado para indicar cálculos e atribuição de valores.
Saída de dados Corresponde à instrução de saída de dados. Os dados serão exibidos na tela do computador.
Desvio condicional
Divide o fluxo do programa em dois caminhos, dependendo do teste lógico que fica dentro do losango.
Exemplo de Fluxograma
De forma similar à análise feita com pseudocódigo,iniciaremos nossa análise por um fluxograma queefetua a leitura, através do teclado, de um valorinteiro e o retorna no monitor.
Inicio
37
n
n
n: inteiro
Fim
Exemplo de Fluxograma
Fluxograma que recebe um valor inteiro, através daentrada padrão, e acresce duas unidades a este exibindoo resultado na saída padrão.
n: inteiro
Inicio
38
n
n <- n + 2
“O valor fornecido acrescido de duas unidades resulta
em ”, n
n: inteiro
Fim
“Forneça umvalor inteiro”
Exercício de FluxogramaConstrua um fluxograma para obter o resultado damultiplicação de dois números inteiros quaisquerfornecidos pelo usuário.
n1, n2, res: inteiro
Inicio
n1, n2: inteiro
Inicio
“Digite um
n1, n2
res <- n1 * n2
“Resultado: ”,res
Fim
n1
n1,“*”,n2,“=”,n1 * n2
Fim
“Digite um inteiro como
multiplicando: ”
n2 “Digite um inteiro como multiplicador: ”
“Digite omultiplicando
e o multiplicador,ambos inteiros: ”
Exercício de FluxogramaGere um fluxograma que aplique um desconto de 30% sobre ovalor de um produto, recebido como entrada, e retorne oresultado da manipulação na saída padrão.
valor: real
Inicio
valor: real
Inicio
valor, resultado: real
Inicio
“Entre com o
“Entre com ovalor do produto:”
valor
valor <- valor * 0.7
Fim
valor
“Valor com desconto: ”, valor * 0.7:6:2
Fim
valor
resultado <- valor * 0.7
“Valor de venda”, resultado:6:2 Fim
“Entre com ovalor do produto:” “Entre com o
valor do produto:”
“Valor de venda”, valor:6:2