apresentação 20130805 algoritmos
TRANSCRIPT
Informática, Algoritmos e Estruturas de Dados Ifes 1
Algoritmos
Algoritmos
• “É a descrição, de forma lógica, de um conjunto finito de passos a serem executados no cumprimento de uma tarefa”.
• “É um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes”(MANZANO,2000).
• “São regras formais para obtenção de um resultado ou da solução de um problema englobando fórmulas de expressões aritméticas”.
• É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas (Guimarães/ Lajes, 1994)
• É uma “receita de bolo”
Informática, Algoritmos e Estruturas de Dados Ifes 2
Representação Lógica
Linguagem natural
Linguagem Algorítmica(expressão organizada, com sintaxe, mas foco na lógica e não na sintaxe)
Linguagem Formal (Programa)(expressão organizada, com sintaxe, codificada em uma linguagem não
familiar)
Informática, Algoritmos e Estruturas de Dados Ifes 3
Exemplo de Algoritmo
Trocar lâmpada numa sala em que existe uma escada.
1. Posicione a escada debaixo da lâmpada queimada.
2. Suba na escada até que a lâmpada possa ser alcançada.
3. Gire a lâmpada queimada no sentido anti-horário até que se solte.
4. Escolha uma lâmpada nova de mesma potência da queimada.
5. Posicione a nova lâmpada no soquete.
6. Gire no sentido horário até que ela se firme.
7. Desça a escada.
Informática, Algoritmos e Estruturas de Dados Ifes 4
Programa
• São algoritmos escritos em uma Liguagem de computador (ex.: Pascal, Java, C, Fortran, C#)
Informática, Algoritmos e Estruturas de Dados Ifes 5
Representação Gráfica de Algoritmos
• Fluxograma: ferramenta gráfica para descrever ações lógicas. Descreve a seqüência de ações a serem desenvolvidas pelo computador
Informática, Algoritmos e Estruturas de Dados Ifes 6
Algumas Simbologias Básicas
Terminal - indica o inicio ou fim do fluxo de um programa
Fluxo de dados - indica sentido do fluxo de dados
Processamento - operações e manipulação de dados
Entrada de dados ou operação manual (exemplo, entrada pelo teclado)
Saída de dados em tela
Decisão - uma decisão deve ser tomada e há possibilidade de desvios de fluxo
Conector - para conectar fluxos ou particionar um diagrama
Informática, Algoritmos e Estruturas de Dados Ifes 7
Exemplo
Elaborar algoritmo que efetue o cálculo da área de uma circunferência
A <- 3.14159 * r ** 2
inicio
fim
A
r
Informática, Algoritmos e Estruturas de Dados Ifes 8
Tipos de Dados e Instruções
O Computador manipula dois tipos de informação:
• Dados - informações que serão armazenadas a fim de serem processadas
• Instruções - comandos que serão decodificados pelo computador e realizarão operações
Informática, Algoritmos e Estruturas de Dados Ifes 9
Alguns tipos de Dados
• Inteiros: valores numéricos pertencentes ao conjunto de números inteiros, positivos ou negativos
• Reais: valores numéricos pertencentes ao conjunto dos números reais
• Caracteres: as letras, números e símbolos. É representado entre aspas simples(Ex: ‘$’, ‘8’, ‘a’).
• Texto: conjunto de caracteres agrupados. São representados entre aspas (Ex. “R$123,00”, “hoje”)
• Lógicos (Booleano): verdadeiro (1) ou falso (0)
Informática, Algoritmos e Estruturas de Dados Ifes 10
Variáveis
• Podemos dizer que variável é a identificação de um dado armazenado no computador
5,0
78,5
r
A
memória do computador
Informática, Algoritmos e Estruturas de Dados Ifes 11
Regras para nomes de variáveis
• 1 ou mais caracteres
• 1o caractere deverá ser letra
• sem espaços em branco entre as letras
• só letras e números
• clareza nos nomes
Ex.: raio, nome, primeiraParte, x1
Informática, Algoritmos e Estruturas de Dados Ifes 12
Operadores Aritméticos
<- atribuição
+ soma
- subtração
* multiplicação
** exponenciação
/ divisão
mod resto. Ex. 11 mod 3 . Resultado: 2
div divisão inteira 11 div 3. Resultado 3
ex.: raiz da equação de segundo grau:
x <- (-b + (b**2 -4*a*c)**(1/2))/(2*a)
Informática, Algoritmos e Estruturas de Dados Ifes 13
Resolução de Problemas por meio dos
Computadores
Dados de Entrada
Dados de Saída
Processamento
Problema Computacional
Informática, Algoritmos e Estruturas de Dados Ifes 14
Etapas para a solução de um problema
Computacional
• Ler e entender bem
• Levantar as entradas e saídas
• Definir quais serão as variáveis necessárias (incluindo o tipo)
• Especificar como o problema pode ser resolvido (rascunho do algoritmo)
• Testar
Informática, Algoritmos e Estruturas de Dados Ifes 15
Exemplo de Problema
Elaborar algoritmo que efetue o cálculo da área de uma circunferência
Entradas: raio, Saídas: área
Variáveis: r (raio), A (área)
Algoritmo: Obter o valor do raio
Executar a fórmula: A <- 3.14159 * R ** 2
Apresentar o valor de A
Informática, Algoritmos e Estruturas de Dados Ifes 16
Exemplo de Problema (cont.)
• Português estruturado (Portugol):var
A, r: real
const
Pi=3.14159
inicio
leia (r)
A <- Pi * r ** 2
escreva (A)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 17
Exemplo: Algoritmo para calcular a média de alunos programa CalculaMedia
var
N1, N2, N3, N4: real
SOMA, MEDIA: real
inicio
leia (N1, N2, N3, N4)
SOMA <- N1+N2+N3+N4
MEDIA <- SOMA/4
escreva (“NOTA 1”, N1)
escreva (“NOTA 2”, N2)
escreva (“NOTA 3”, N3)
escreva (“NOTA 4”, N4)
escreva (“Média”, MEDIA)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 18
Exemplo sala - listageral número 3 - fluxograma e algoritmo
Exercício sala - listageral número 8 - fluxograma e algoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 19
Estrutura de tomada de decisões
Desvio condicional Simples
É utilizada a instrução se...entao...fimse. Se a condição estabelecida for verdadeira, serão executadas as instruções que se encontram entre se...entao e fimse.
se condição entao
aiaiaiaiaia
fimse aiaiaiaiaia
condiçãoV
F
Informática, Algoritmos e Estruturas de Dados Ifes 20
Operadores Relacionais e Lógicos
Relacionais
< menor
> maior
<= menor ou igual
>= maior ou igual
<> diferente
Lógicos
E, OU e NÃO
Informática, Algoritmos e Estruturas de Dados Ifes 21
Exemplo: Algoritmo para calcular a média de alunos e informe se o mesmo foi aprovado ou reprovado, dado que a MEDIA para aprovação é 7
programa aprovado
var
RESULTADO: caractere
N1, N2, N3, N4: real
SOMA, MEDIA: real
inicio
leia (N1, N2, N3, N4)
SOMA <- N1+N2+N3+N4
MEDIA <- SOMA/4
se (MEDIA >= 7) entao
resultado<-“aprovado”
fimse
se (MEDIA < 7) entao
resultado<- “reprovado”
fimse
escreva(“O resultado foi: ”, resultado)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 22
Exemplo: Algoritmo para verificar se um triãngulo é isosceles
programa triangulo
var
lado1, lado2, lado3: real
inicio
leia (lado1, lado2, lado3)
se (lado1=lado2) E (lado1<>lado3) entao
escreva (“é isosceles”)
fimse
se (lado1=lado3) E (lado1<>lado2) entao
escreva (“é isosceles”)
fimse
se (lado2=lado3) E (lado2<>lado1) entao
escreva (“é isosceles”)
fimse
fim
Informática, Algoritmos e Estruturas de Dados Ifes 23
Exercício sala - listageral número 17 - fluxograma e algoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 24
Estrutura de tomada de decisões (cont.)
Desvio condicional Composto
É utilizada a instrução se...entao...senão...fimse. Se a condição estabelecida for verdadeira, serão executadas as instruções que se encontram entre se...entao e senão e se a condição for falsa serão executadas as instruções entre senão e fimse.
se condição entao
aiaiaiaiaia (condição verdadeira)
senão
ioioioioioio (condição falsa)
fimse
aiaiaiaiaia
condiçãoV
F
ioioioioioio
Informática, Algoritmos e Estruturas de Dados Ifes 25
Exemplo: Algoritmo para calcular a média de alunos e informe se o mesmo foi aprovado ou reprovado, dado que a MEDIA para aprovação é 7
programa aprovado
var
RESULTADO: caractere
N1, N2, N3, N4: real
SOMA, MEDIA: real
inicio
leia (N1, N2, N3, N4)
SOMA <- N1+N2+N3+N4
MEDIA <- SOMA/4
se (MEDIA >= 7) entao
resultado<-“aprovado”
senão
resultado<- “reprovado”
fimse
escreva(“O resultado foi: ”, resultado)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 26
Exercício sala - listageral número 15 - algoritmo
Exercício casa - listageral números 13
Informática, Algoritmos e Estruturas de Dados Ifes 27
Estrutura de tomada de decisões (cont.)
Desvios condicionais EncadeadosHá casos em que condições lógicas devem ser devinidas sucessivamente, e
assim uma determinada condição só poderá ser testada se condições anteriores forem satisfeitas.
se condição1 entao
aiaiaiaiaia (condição verdadeira)
senão
se condição2 entao
oioioioioio (condição2 verdadeira)
fimse
fimse
Informática, Algoritmos e Estruturas de Dados Ifes 28
aiaiaiaiaia
condiçãoV
F
oioioioioiocondiçãoV
F
Informática, Algoritmos e Estruturas de Dados Ifes 29
Exemplo: Algoritmo para calcular o reajuste do salário de um funcionário.
a) salário < 500 - reajuste de 15%
b) salário >= 500, mas <=1000 – resjuste de 10%
c) salário >1000 – resjuste de 5%
Informática, Algoritmos e Estruturas de Dados Ifes 30
salario<500
F
salario<-salario*1.15salario<=1000
V
F
inicio
salario
salario<-salario*1.05
salario<-salario*1.10
V
fim
salario
Informática, Algoritmos e Estruturas de Dados Ifes 31
programa salario
var
salario: real
inicio
leia (salario)
se (salario<500) entao
salario<-salario*1.15
senão
se (salario<=1000) entao
salario<-salario*1.15
senão
salario<-salario*1.05
fimse
fimse
escreva(“O novo salario é: ”, salario)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 32
Exemplo sala - Elaborar algoritmo: de 02 valores fornecidos informe qual é o maior deles
Exercícios sala –1) De um valor fornecido informar se o mesmo é divísível por 02
ou por 03 2) Crie uma nova versão do algoritmo anterior, infomando se o
valor fornecido é divisível por 02, por 03 ou por 02 e por 033) Ler o nome e o sexo de uma pessoa e se o sexo for masculino
escrever “Ilmo Sr. nome” (onde “nome” é o nome fornecido) ou caso o sexo seja feminino escrever “Ilma Sra. nome” (onde “nome” é o nome fornecido)
4) Elaborar um algoritmo que de 03 valores fornecidos informe qual é o maior deles
Exercícios casa listageral 14, 17, 21 e 22- algoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 33
Laços ou malhas de repetição
Há situações em que é necessário repetir o trecho de um programa um determinado número de vezes. Neste caso cria-se um laço que faz um trecho de processamento tantas vezes quantas necessárias
Exemplo: Elabore um algoritmo que conte os votos S ou N para 03 votantes
Informática, Algoritmos e Estruturas de Dados Ifes 34
programa votação
var
voto: caractere
contaS, contaN, : inteiro
inicio
contaS<-0
contaN<-0
leia (voto)
se (voto= “S”) entao
contaS <- contaS +1
senão
se (voto= “N”) entao
contaN <- contaN+1
fimse
fimse
leia (voto)
se (voto= “S”) entao
contaS <- contaS +1
senão
se (voto= “N”) entao
contaN <- contaN+1
fimse
fimse
leia (voto)
se (voto= “S”) entao
contaS <- contaS +1
senão
se (voto= “N”) entao
contaN <- contaN+1
fimse
fimse
escreva(“A contagem de votos S foi ”, contaS,” e a contagem de N foi ”, contaN)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 35
Repetição: teste lógico no inicio do laço
enquanto...faça...fimenquanto: é realizado um teste no inicio do laço em que se verifica se o trecho de instruções internas ao laço (entre faça e fimenquanto) deverá ser executado ou não.
aiaiaiaiaia
condição
V
F
Enquanto condição faca
aiaiaiaiaia
oioioioioio
fimenquantooioioioioio
Informática, Algoritmos e Estruturas de Dados Ifes 36
cont<=5F
inicio
x
V
pot
pot<- pot*x
cont<-cont+1
Exemplo: Elabore um algoritmo que calcule a x ** 5 utilizando repetições
cont<-1pot<-1
fim
programa ``
var
x, pot: real
cont: inteiro
inicio
cont<-1
pot<-1
leia(x)
enquanto cont <= 5 faca
pot <- pot*x
cont<- cont+1
fimenquanto
escreva(x,”**5=”,pot)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 37
cont<=3F
V
F
inicio
voto
V
fim
contaS, contaN
cont<-1contaS<-0contaN<-0
contaS<-contaS+1
Voto=”S” voto=“N”
contaN<-contaN+1
cont<-cont+1
F
1
1
Exemplo: Elabore um algoritmo que conte os votos S ou N ou entre 03 votantes
V
Informática, Algoritmos e Estruturas de Dados Ifes 38
programa votação
var
voto: caractere
contaS, contaN, : inteiro
inicio
contaS<-0
contaN<-0
cont<-1
enquanto cont <= 3 faca
leia (voto)
se (voto= “S”) entao
contaS <- contaS +1
senão
se (voto= “N”) entao
contaN <- contaN+1
fimse
fimse
cont<-cont+1
fimenquanto
escreva(“A contagem de votos S foi ”, contaS,” e a
contagem de N foi ”, contaN)
fim12
Informática, Algoritmos e Estruturas de Dados Ifes 39
Exemplo de laço controlado pelo usuárioElabore um algoritmo que conte os votos S ou N ou para votantes e pare quando uma pessoa digite x
programa votação
var
voto: caractere
cont, contaS, contaN, : inteiro
inicio
contaS<-0
contaN<-0
leia (voto)
enquanto (voto<>”x”) e (voto<>”X”) faca
se (voto= “S”) entao
contaS <- contaS +1
senão
se (voto= “N”) entao
contaN <- contaN+1
fimse
fimse
leia (voto)
fimenquanto
escreva(“A contagem de votos S foi ”, contaS,” e a
contagem de N foi ”, contaN)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 40
Exercícios da seção: Algoritmos com repetição
Exercícios sala
1) Somar todos os números inteiros de 10 a 100
2) Calcular os quadrados dos números inteiros de 15 a 200
3) Apresentar a tabuada de um número n fornecido: n*1 a n*10
4) Informar se um número inteiro fornecido é divisível por 3. Repetir até que seja fornecido o número zero
Exercícios casa
1) Apresentar as potencias de um número x, para os expoentes de 4 a 8
2) Informar quais os números inteiros entre 100 e 200 que são divisíveis por 7
3) Leia repetidamente os números inteiros fornecidos até que seja fornecido um número negativo. O algoritmo deverá informar qual é o menor número. O número negativo não deverá ser considerado.
listageral 06, 03, 01, 02, 07, 08
Informática, Algoritmos e Estruturas de Dados Ifes 41
Repetição com variável de controle
para...de...até...passo...faça...fimpara: quando laços devem ser executados apenas um determinado número de vezes pode ser utilizada a estrutura para...de...até...passo...faça...fimpara . Os comandos que ficam entre para...de...até...passo...faça e fimpara são executados o número de vezes determinado por uma variável contador.
aiaiaiaiaia
cont<-inicio, fim, incremento para cont de inicio até fim passo incremento faca
aiaiaiaiaia
oioioioioio
fimparaoioioioioio
Informática, Algoritmos e Estruturas de Dados Ifes 42
cont<-1,5,1
inicio
x
R
R <- x * 3
Exemplo: Forneça um valor, multiplique por 3 e apresente o resultado. Repita a operação por cinco vezes.
fim
programa produto
var
x, R: real
cont: inteiro
inicio
para cont de 1 até 5 passo 1 faca
leia(x)
R <- x * 3
escreva(x,”*3=”,R)
fimpara
fim
Cont<-1,5
ou
Informática, Algoritmos e Estruturas de Dados Ifes 43
Exercícios da seção: Algoritmos com repetição
Exemplo:
Calcular o quadrado dos números de 15 a 200
Calcular o quadrado dos números que forem múltiplos de 5 que
se encontram entre de 15 a 200
Exercícios: faça com para...
listageral 06, 03, 07, 10, 13a
Informática, Algoritmos e Estruturas de Dados Ifes 44
Exercícios da seção: Algoritmos com repetição
22. Escreva um algoritmo que leia 50 valores e encontre o maior e o menor deles. Mostre o resultado.
26. Escrever um algoritmo que leia uma quantidade desconhecida de números e conte quantos deles estão nos seguintes intervalos: [0.25], [26,50], [51,75] e [76,100]. A entrada de dados deve terminar quando for lido um número negativo.
15. Fulano tem 1,50m e cresce 2 cm por ano, enquanto Ciclano tem 1,10m e cresce 3 centímetros por ano, e Beltrano tem 1,90m e não cresce mais. Construa um algoritmo em portugol que calcule e imprima quantos anos serão necessários para que Ciclano seja o maior dos três.
Informática, Algoritmos e Estruturas de Dados Ifes 45
Exercícios da seção: Algoritmos com repetição
1. Faça um algoritmo que, para cada valor inteiro positivo m fornecido, informe se o número é primo. O algoritmo deverá parar quando for fornecido um valor negativo.
2. Faça um algoritmo que, para cada par de valores inteiros positivos m e n fornecidos, apresente todos os valores entre m e n inclusive. O algoritmo deverá parar quando for fornecido um valor negativo.
3. Para o algoritmo anterior, além do que o mesmo já faz, deverá informar para cada valor da faixa de valores entre m e n, se cada um deles é primo.
Casa: ListaGeral 17 e 18
Informática, Algoritmos e Estruturas de Dados Ifes 46
Estruturas de Dados - Vetor
Vetor ou Matriz unidimensional: Uma variável é dimensionada com um tamanho e armazena várias informações (tantas quantas for o tamanho) de um mesmo tipo. A dimensão é um número inteiro e positivo.
Exemplo:
As notas de um aluno:
Antes: 4 variáveis: Nota1, Nota2, Nota3, Nota4
Agora: 1 variável:
Nota: vetor [1..4] de real
Nota[1], Nota[2], Nota[3], Nota[4],
5,0[1]
Nota8,0
3,5
10
[2]
[3]
[4]
Informática, Algoritmos e Estruturas de Dados Ifes 47
I <-1,8
inicio
Nota[i]
Media <- Soma / 8
Soma <- Soma + Nota[i]
Exemplo: Elabore um algoritmo que calcule e apresente a média das oito notas (fornecidas) de um aluno.
fim
programa média
var
Nota: vetor [1..8] de real
i: inteiro
Media, Soma: real
inicio
Soma<-0
para i de 1 até 8 faca
leia(Nota[i])
Soma<-Soma + Nota[i]
fimpara
Media <- Soma/8
escreva (Media)
fim
Media
Soma <- 0
Informática, Algoritmos e Estruturas de Dados Ifes 48
I <-1,8
inicio
Nota[i]
Media <- Soma / 8
Soma <- Soma + Nota[i]
Exemplo: Elabore um algoritmo que calcule a média das oito notas (fornecidas) de um aluno. Apresente a média e em seguida as oito notas.
fim
Media
1
1
I <-1,8
Nota[i]
Soma <- 0
programa média
var
Nota: vetor [1..8] de real
i: inteiro
Media, Soma: real
inicio
para i de 1 até 8 faca
leia(Nota[i])
Soma<-Soma + Nota[i]
fimpara
Media <- Soma/8
escreva (Media)
para i de 1 até 8 faca
escreva (Nota[i])
fimpara
fim
Informática, Algoritmos e Estruturas de Dados Ifes 49
Exercícios da seção: Vetores e Matrizes
Exercícios sala
1) Faça um algoritmo que leia 50 idades e verifique qual a maior delas.
Exemplo sala
2) Faça um algoritmo que leia 50 idades e apenas após ler todas as idades verifique qual a maior delas.
Exercícios sala
Lista ExerciciosVetores: 6, 9
3) Faça um algoritmo que leia 10 números e apresente os números em ordem crescente
Exercícios casa:
Lista ExerciciosVetores: 2, 3, 5, 10, 14
Informática, Algoritmos e Estruturas de Dados Ifes 50
Elabore um algoritmo que:
leia um conjunto de códigos (valores inteiros positivos) e preços de produtos para um máximo 10 tipos de produtos. A entrada das informações deverá ser interrompida ao décimo produto. Após a entrada de pares códigos e preços um comprador informará quantas unidades deseja adquirir de um conjunto de produtos com respectivo código. O algoritmo deverá informar o preço da quantidade informada ou, caso o código não seja encontrado na lista ele deverá informar “Produto” código_informado “não encontrado”. O algoritmo deverá ainda acumular os valores dos produtos adquiridos e apresentar o total na tela. A compra será finalizada quando for apresentado um códido de produto negativo.
Informática, Algoritmos e Estruturas de Dados Ifes 51
Supermercado:
Cadastro: Faça um algoritmo para cadastrar nome (caractere), códigos de produtos (inteiro), quantidade em estoque (inteiro) e preços unitários (com centavos) para até 10 produtos. O algoritmo deverá parar de ler os códigos e preços quando for fornecido um código com valor 0 ou quando atingir 10 produtos.
Venda: O algoritmo deverá ler código e quantidade de diversos produtos repetidamente. A quantidade informada deverá ser abatida da quantidade em estoque e a quantidade em estoque deverá ser atualizada. Deverá ser apresentado para cada um dos produtos o código, o nome e o preço devido àquele produto, considerando a quantidade vendida e disponível em estoque. Caso o código não seja encontrado ou não houver quantidade disponível do produto ele deverá informar “Produto” código_informado “não encontrado ou estoque insuficiente”. O final da venda acontecerá quando for digitado um código 0 (zero). Apenas ao final deverá ser apresentado o total geral da venda.
Inventário: O algoritmo deverá ordenar os produtos em estoque por código, mantendo os nomes, quantidades e preços com seus códigos correspondentes. Após a ordenação os códigos, nomes, quantidades disponíveis e preços deverão ser apresentados na tela.
Informática, Algoritmos e Estruturas de Dados Ifes 52
Elabore um algoritmo que:
leia o número do título de eleitor de cada votante e o código do candidato votado e grave essas informações. O algoritmo deverá parar de ler os códigos dos votos quando for fornecido um voto com valor 0 ou quando atingir 1000 votantes. Escreva após a votação (apenas após a votação), dentre os votantes:
• a porcentagem de votos para cada candidato;
• a porcentagem de votos nulos;
• a porcentagem de votos em branco.
• após a votação, ordene os títulos de eleitor fornecidos mantendo os votos com seus títulos correspondentes. Apenas as posições preenchidas deverão ser ordenadas.
• após a ordenação, leia o número do título de eleitor de um votante e informe qual foi o voto do mesmo. Apenas as posições preenchidas deverão ser verificadas.
Informática, Algoritmos e Estruturas de Dados Ifes 53
Algoritmos de pesquisa• Define-se pesquisa como a operação que permite encontrar ou
concluir que não existe, um dado elemento num dado conjunto.
• A pesquisa de um elemento pode ser feita num conjunto ordenado ou não.
• Quando o conjunto não está ordenado, o método usado é o exaustivo, que consiste em percorrer sequencialmente todo o conjunto (desde o primeiro) até se encontrar o elemento desejado ou, não o encontrando, se concluir que não existe.
• Quando o conjunto está ordenado, existem vários métodos, como a pesquisa sequencial e binária.
• Nos exemplos seguintes, considera-se que a ordenação é crescente.
Informática, Algoritmos e Estruturas de Dados Ifes 54
Pesquisa exaustiva (algoritmo)Pesquisar o elemento Elem no vetor V de tamanho tam
k <- -1 // significa que Elem não foi encontrado em V
i <- 1
Enquanto (i <= tam) e (k = -1) faca
Se (V[i] = Elem) entao
k <- i
senao
i <- i + 1
Fimse
fimenquanto
Se (k = -1) entao
Escreval (“Elem não se encontra em V”)
senao
Escreval (“ Elem encontra-se na posição ”, k)
fimse
Informática, Algoritmos e Estruturas de Dados Ifes 55
Pesquisa sequencial (algoritmo)Pesquisar o elemento Elem no vetor V de tamanho tamk <- -1 // significa que Elem ainda não foi encontrado em V
i <- 1 // índice dos elementos do vetor V
Enquanto (i <= tam) e (k = -1) faca
Se (V[i] = Elem) entao
k <- i
senao
Se (V[i] < Elem) entao
i <- i + 1
senao
k <- -2; // significa que Elem não está em V
fimse
fimse
fimenquanto
Se (k > 0) então
Escreval (“Elem encontra-se na posição “, k)
senao
Escreval (“Elem não se encontra em V “)
fimse
Informática, Algoritmos e Estruturas de Dados Ifes 56
Pesquisa binária
• Comparar o elemento a pesquisar com o elemento que está no meio do vetor e analisar 3 situações diferentes:
1ª) se aquele elemento é igual ao que está ao meio,
2ª) se aquele elemento está antes do meio,
3ª) se aquele elemento está depois do meio.
• Se ocorreu a 1ª situação, então foi encontrado o elemento e está no vetor naquela posição.
• Se ocorreu a 2ª situação, então basta pesquisar aquele elemento no subvetor até ao meio.
• Se ocorreu a 3ª situação, então basta pesquisar aquele elemento no subvetor do meio para a frente
Informática, Algoritmos e Estruturas de Dados Ifes 57
Pesquisa binária (algoritmo iterativo)Pesquisar o elemento Elem no vetor V de tamanho taminicio <- 1
fim <- tam
k <-1 // k recebe a posicao de Elem (no inicio presume-se que nao esta)
Enquanto ( (inicio <= fim) e (k = -1) ) faca
meio <- (inicio + fim) / 2
Se (Elem = V[meio]) entao
k <- meio
senao
Se (Elem < V[meio]) entao
fim <- meio - 1
senao
inicio <- meio + 1
fimse
fimse
fimenquanto
Se (k >= 1) entao
Escreval (“Elem encontra-se em V na posicao “, k)
senao
Escreval (“ Elem nao se encontra em V “)
fimse
Informática, Algoritmos e Estruturas de Dados Ifes 58
Pesquisa binária
Informática, Algoritmos e Estruturas de Dados Ifes 59
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 60
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 61
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 62
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 63
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 64
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 65
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 66
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 67
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 68
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 69
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 70
Pesquisa Binária
Informática, Algoritmos e Estruturas de Dados Ifes 71
Exercício Aula
• Ler um vetor de 50 elementos inteiros positivos não repetidos, e ordená-lo em ordem crescente escrevendo o seu conteúdo na tela (posição e valor). A seguir, ler uma outra sequência de números inteiros positivos, escrevendo a cada número lido*:
1. Caso o número lido exista no vetor, escreva o valor pesquisado e a posição em que o mesmo foi encontrado no vetor, usando pesquisa binária;
2. Caso o número não exista no vetor, escreva a posição do vetor cujo conteúdo está mais próximo ao número pesquisado , usando pesquisa binária;
* Terminar a leitura quando for lido o valor -1.
Informática, Algoritmos e Estruturas de Dados Ifes 72
Exercício Casa
• Ler um vetor de 50 elementos inteiros positivos, ordená-lo em ordem crescente, escrevendo o seu conteúdo na tela (posição e valor). A seguir, ler uma outra sequência de números inteiros positivos, escrevendo a cada número lido*:
1. Caso o número lido exista no vetor, escreva o valor pesquisado e as posições em que o mesmo foi encontrado no vetor, usando pesquisa sequencial;
2. Caso o número lido exista no vetor, escreva o valor pesquisado e as posições em que o mesmo foi encontrado no vetor, usando pesquisa binária;
3. Caso o número não exista no vetor, escreva a posição do vetor cujo conteúdo está mais próximo ao número pesquisado, usando pesquisa binária;
* Terminar a leitura quando for lido o valor -1.
Informática, Algoritmos e Estruturas de Dados Ifes 73
Estruturas de Dados - Matriz
Matriz: Informações de um mesmo tipo são armazenados em uma variável com estrutura de várias dimensões (normalmente até três). As dimensões são números inteiros e positivos.
Matrizes de uma dimensão são normalmente chamados de vetor e matrizes de duas dimensões são normalmente chamados de tabela.
Unidimensionais (vetor): y: vetor [1..10] de caractere
Bidimensionais (tabela): m = matriz [ 1..3,1..4] de real; (visualG: vetor[ 1..3,1..4] de real)
Tridimensionais: n = matriz [ 1..2,1..3,1..5] de inteiro; (visualG não implementa)
Informática, Algoritmos e Estruturas de Dados Ifes 74
5,0 4,3 3,5
9,4 4,0 0,3
8,0 16 5,2
6,7 9,1 3,7
[1]
[2]
[3]
[4]
[1] [2] [3]
[linha,coluna]
[1,1] = 5,0
[1,2] = 4,3
[1,3] = 3,5
[2,1] = 9,4
.
.
[4,1] = 6,7
[4,2] = 9,1
[4,3] = 3,7
Informática, Algoritmos e Estruturas de Dados Ifes 75
Ex.: Faça um algoritmo que leia uma matriz 4 X 4 e uma constante qualquer. Multiplique os elementos da diagonal principal por esta constante e imprima a matriz resultante;
programa média
var
mat: matriz [1..4, 1..4] de real
valor: real
i,j: inteiro
inicio
para i de 1 até 4 faca
para j de 1 até 4 faca
leia(mat[i,j])
fimpara
fimpara
escreva(“entre o valor da constante”)
leia (valor)
para i de 1 até 4 faca
mat[i,i]<-mat[i,i]*valor
fim para
para i de 1 até 4 faca
para j de 1 até 4 faca
escreva (i,”,”,j,”=”, “mat[i,j])
fimpara
fimpara
fim
Informática, Algoritmos e Estruturas de Dados Ifes 76
Exercícios matrizes
2) Faça um algoritmo que leia 2 matrizes 3 X 5, calcule e imprima a soma das duas;
3) Faça um algoritmo que leia uma matriz 3 X 4 e imprima sua transposta;
8) Faça um algoritmo que leia 5 notas dadas a cada aluno durante o período letivo em uma turma de 30 alunos. Calcule a media de cada aluno, a media geral da turma e imprima de acordo com o seguinte layout:
Núm. Média Aluno Media Turma
1 x,xx x,xx
2 x,xx x,xx
..... ...... ......
Informática, Algoritmos e Estruturas de Dados Ifes 77
Uma matriz quadrada inteira é chamada de "quadrado mágico" se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todos iguais. Exemplo: A matriz abaixo representa um quadrado mágico:
8 0 7
4 5 6
3 10 2
Faça um algoritmo em que um usuário fornece valores para as posições de uma matriz de 3 linhas e 3 colunas e o algoritmo verifica se a matriz representa um quadrado mágico.
Informática, Algoritmos e Estruturas de Dados Ifes 78
JOGO DA VELHA. Uma dada matriz 3 x 3 de caracter pode conter apenas 3 valores em cada uma de suas posições: “ “ (espaço), X (x maiúsculo) e O (o maiúsculo). Há dois usuários, usuário 1 para o X e usuário 2 para o O.
Parte 1) Faça um algoritmo que os usuários fornecem posições i e j e lances X ou O, preenchendo a posição com o lance (X ou O) e permitindo apenas a entrada dos valores válidos em cada posição. A matriz deverá ser inicializada com “ “ em todas as posições;
Parte 2) O algoritmo deverá verificar, a cada valor fornecido o fechamento de uma coluna, linha ou diagornal apenas por X ou por O. Caso isso aconteça o algoritmo deverá ser encerrado e deverá informar “O vencedor foi” X (ou O).
Parte 3) O algoritmo de deverá permitir a inserção dos nomes dos jogadores jogador1 (X) e jogador 2 (O). Cada jogador deverá ter a sua vez de jogar e em caso de vitória de um dos dois deverá ser informada a letra vitoriosa (X ou O) e o nome do jogador vitorioso.
leia (l, c, lance)enquanto (l<1 ou l>3) ou (c<1 ou c>3) ou ((lance<>”x”) e (lance<>”o”))
leia (l, c, lance)fimenquanto
Informática, Algoritmos e Estruturas de Dados Ifes 79
Exercícios de revisão(Condição)Um fazendeiro vai contratar uma equipe de trabalhadores para a colheita de
laranjas de sua fazenda. Os trabalhadores serão identificados por um número e pela sua idade. O fazendeiro pagará aos trabalhadores no final do dia conforme a quantidade de caixas colhidas segundo a tabela abaixo:
– Número caixas R$ por caixa– até 5 2.00– de 6 a 10 2.50– de 11 a 20 3.50– 21 ou mais 5.00
Além disso, o fazendeiro pagará um adicional conforme a idade do trabalhador segundo a tabela abaixo:Idade (anos) Adicionalde
– 18 a 45 10%– de 45 a 65 20%
Faça um algoritmo que leia o número do trabalhador, sua idade e a quantidade de caixas colhidas no dia e imprima seu número e seu salário diário.
Informática, Algoritmos e Estruturas de Dados Ifes 80
Exercícios de revisão(Repetição) Construir um algoritmo para ler vários valores inteiros e positivos, lidos
externamente. Calcular e imprimir:– A média geral dos números lidos;– A soma dos números pares;– A quantidade de múltiplos de 5;– O final da leitura acontecerá quando for lido um valor negativo.
(vetores) Fazer um algoritmo que:Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976(121 dias),
não ocorreu temperatura inferior a 15ºC nem superior a 40ºC. As temperaturas verificadas em cada dia serão lidas e armazenadas em um vetor. Fazer um algoritmo que, após o armazenamento de todas as temperaturas, verifique e imprima:– A menor temperatura ocorrida;– A maior temperatura ocorrida;– A temperatura média;– O número de dias nos quais a temperatura foi inferior à temperatura média.
Informática, Algoritmos e Estruturas de Dados Ifes 81
Exercícios (Matrizes) 1) Escrever um algoritmo para ler uma matriz (7,4) contendo valores inteiros (supor que
os valores são distintos). Após, encontrar o menor valor contido na matriz e sua posição.
2) Escrever um algoritmo para armazenar valores inteiros em uma matriz (5,6). A seguir, calcular e escrever a média dos valores pares contidos na matriz e seu conteúdo.
3) Escrever um algoritmo que lê uma matriz M(5,5) e cria 2 vetores SL(5), SC(5) que contenham respectivamente as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.
4) Escreva um algoritmo que lê uma matriz M(5,5) e calcula as somas:a) da linha 4 de M.b) da coluna 2 de M.c) da diagonal principal.d) da diagonal secundária.e) de todos os elementos da matriz.f) Escreva estas somas e a matriz.
5) Fazer um algoritmo que escreva um algoritmo que ordene os elementos de cada linha de uma matriz M[10,10].
Informática, Algoritmos e Estruturas de Dados Ifes 82
6) Escrever um algoritmo para ler valores inteiros e preencher os elementos de uma matriz (6,4) com esses valores. O algoritmo deverá encontrar e apresentar o maior elemento dessa matriz e depois a linha e coluna onde esse elemento se encontra. O algoritmo deverá ainda trocar todos os elementos da linha em que esse elemento se encontra com os elementos da primeira linha da matriz e apresentar o resultado.
Informática, Algoritmos e Estruturas de Dados Ifes 83
Modularização e Subprogramas
A modularização é uma característica muito importante no desenvolvimento de programas. Ela é um método utilizado para facilitar a construção de grandes algoritmos, através de sua divisão em pequenas etapas, que são os subprogramas.
Subprograma é um programa que auxilia o programa principal através da realização de uma determinada subtarefa. Os subprogramas são chamados dentro do corpo do programa principal como se fossem comandos. É conveniente utilizá-los quando uma determinada tarefa é efetuada em diversos lugares no mesmo algoritmo. Ao invés de escrever-se um trecho diversas vezes, escreve-se um subprograma e este pode ser invocado diversas vezes.
Dois tipos:• procedimentos (sub-rotina): não retorna nenhum valor • funções: retorna um valor ou uma informação
Informática, Algoritmos e Estruturas de Dados Ifes 84
Esquema de uma chamada a subalgoritmo:
Informática, Algoritmos e Estruturas de Dados Ifes 85
Vantagens no uso de subalgoritmos:
• Reduzem o tamanho do algoritmo como um todo. Porque trechos repetidos só serão implementados uma vez em um subalgoritmo e, depois, serão apenas “chamados”.
• Facilitam a compreensão e visualização do que faz o algoritmo, porque o desenvolvimento modularizado faz com que se possa pensar no algoritmo por partes
• Facilidade de depuração (correção/acompanhamento): é mais fácil corrigir/detectar um erro apenas uma vez do que em dez trechos diferentes.
• Facilidade de alteração do código: se é preciso alterar, altera-se apenas uma vez, no subalgoritmo.
• Generalidade de código com o uso de parâmetros: é possível escrever algoritmos para situações genéricas.
Informática, Algoritmos e Estruturas de Dados Ifes 86
Procedimentos
Um procedimento é um subalgoritmo que não retorna, explicitamente, valores ao algoritmo principal ou a outro subalgoritmo que o tenha chamado. Ele pode retornar valores apenas por meio dos parâmetros, e nunca explicitamente como no caso das funções (que veremos depois) que usam a instrução Retorne.
Sua declaração, como descrito anteriormente, deve estar entre o final da declaração de variáveis do algoritmo principal e a linha inicio do mesmo e obedece à seguinte sintaxe:
procedimento nomeProcedimento ([declarações-de-parâmetros])
[var declaração de variáveis locais]
inicio
//Seção de Comandos
fimprocedimento
Informática, Algoritmos e Estruturas de Dados Ifes 87
Algoritmo “exemploValor”
var numero: inteiro
//procedimento para incrementar valor
procedimento incrementa(valor: inteiro)
inicio
valor <- valor + 1
escreva(“Dentro do procedimento, Valor= : “, valor)
Fimprocedimento
//programa principal
Inicio
numero <- 1
escreva(“Antes do procedimento, número = “, numero) incrementa(numero)
escreva(“Depois do procedimento, número = “, numero)
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 88
Algoritmo “ExemploProcedimento”
var numero: inteiro // o número a ser lido
procedimento julgar (valor: inteiro)
inicio
se (valor MOD 2 = 0) entao
escreva(“O número é par!”)
senao
escreva(“O número é ímpar”)
fimse
fimprocedimento
inicio
escreval(“Digite um número “)
leia(numero)
Enquanto (numero <>0) faca
julgar(numero)
escreval(“Digite um número “)
leia(numero)
fimenquanto
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 89
Funções
Uma função é um subalgoritmo que, além de executar uma determinada tarefa, retorna, explicitamente, um valor para quem a chamou (o algoritmo principal ou a outro subalgoritmo que a tenha chamado), que é o resultado de sua execução. Esse valor é retornado através da instrução Retorne. A chamada de uma função aparece como uma expressão, e não apenas como um comando, como foi o caso do procedimento. Porque tem de existir alguma variável para receber ou alguma expressão para usar o valor retornado pela função.
A declaração da função, de forma análoga ao procedimento, deve estar entre o final da declaração de variáveis do algoritmo principal e a linha inicio do mesmo e obdece à seguinte sintaxe:
funcao nomeFuncao ([declarações-de-parâmetros]): Tipo de Retorno
[var declaração de variáveis locais]
inicio
// Seção de comandos
retorne variável ou expressão de retorno
fimfuncao
Informática, Algoritmos e Estruturas de Dados Ifes 90
ALGORITMO "Funções "var
Valor_1,Valor_2, soma: real
FUNCAO FSoma(Recebe_valor1, Recebe_valor2: Real):Real
var
total : real
Inicio
total<-Recebe_valor1+Recebe_valor2retorne total
fimfuncao
INICIO
Escreva ("Valor_1 : ")LEIA (Valor_1)Escreva ("Valor_2 : ")LEIA (Valor_2)soma<-FSoma(Valor_1,Valor_2)ESCREVA ("Soma das vaiáveis é ", soma)
FIMALGORITMO
Informática, Algoritmos e Estruturas de Dados Ifes 91
Funções predefinidas do VISUALG (VisualgProgramacaoB) (parte1):
Abs (valor : real) :real Valor absoluto
Arccos (valor : real) :real Arco cosseno
Arcsen (valor : real) : real Arco seno
Arctan (valor : real) :real Arco tangente
Asc (s : caracter) :inteiro Retorna o código ASCII
Compr (c : caracter) :inteiro Retorna a dimensão do caractere
Copia (c : caracter , posini, posfin : inteiro) :caracter Copia um determinado
trecho do caractere
Cos (valor : real) :real Cosseno
Cotan (valor : real) :real Co-tangente
Exp (<base>,<expoente>) :real Potenciação
Grauprad (valor : real) :real Converte grau para radiano
Int (valor : real):inteiro Converte o valor em inteiro
Log (valor : real) :real Logaritmo de base 10
Logn (valor : real) :real Logaritmo natural (ln)
Informática, Algoritmos e Estruturas de Dados Ifes 92
Funções predefinidas do VISUALG (parte2):
Maiusc (c : caracter) :caracter Converte em Maiúscula
Minusc (c : caracter) :caracter Converte em Minúscula
Numpcarac (n : inteiro ou real) :caracter Converte um numero inteiro ou real para caractere
Pi :real Valor Pi
Pos (subc, texto: caracter) :inteiro Retorna a posição de subc em texto.
Quad (valor : real) :real Elevado quadrado
Radpgrau (valor : real) :real Converte Radiano para grau.
Raizq (valor : real) :real Raiz quadrada
Rand :real Gerador de números aleatórios entre 0 e 1
Randi (limite : inteiro) :inteiro Gerador de números inteiros aleatórios com um limite determinado
Sen (valor : real) :real Seno
Tan (valor : real) :real Tangente
Informática, Algoritmos e Estruturas de Dados Ifes 93
Exemplo:
Algoritmo "RETORNA O SOBRENOME"
var
nome, sobrenome : Caractere
quant_caracteres, local_espaco : INTEIRO
inicio
nome <- “Maria Aparecida da Silva Lima Gonçalves"
quant_caracteres <- Compr (nome)
local_espaco <- POS (" ",nome)
sobrenome <- Copia (nome, local_espaco + 1 , quant_caracteres)
Escreva("Seu sobrenome é ", sobrenome)
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 94
Exemplo 2:
Algoritmo "RETORNA UM VALOR INTEIRO“
Var
valorReal : REAL
valorInteiro : INTEIRO
inicio
valorReal <- 5.87978098980980989089898
valorInteiro <- INT(valorReal)
Escreva("Valor inteiro ", valorInteiro)
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 95
Escopo de Variáveis
Cada subalgoritmo, além de ter suas próprias variáveis (chamadas de variáveis LOCAIS), que existem apenas durante a sua execução e só fazem sentido dentro do subalgoritmo, podem também ter acessoàs variáveis de quem o chamou e às variáveis definidas no algoritmo principal.
Na verdade, as variáveis declaradas na parte inicial do algoritmo principal ficam disponíveis para uso em qualquer parte desse algoritmo ou por qualquer subalgoritmo. Por isso, elas são chamadas de variáveis GLOBAIS. Porém, para manter a modularidade dos programas, NÃO É RECOMENDADO que se faça uso de variáveis globais dentro dos subalgoritmos. E sim, ao invés disso, é importante que se use passagem de parâmetros.
As variáveis GLOBAIS existem na memória do computador durante toda a execução do algoritmo, ou seja, até que o algoritmo completo chegue ao seu final. Já as variáveis LOCAIS somente são criadas quando o subalgoritmo que as contém é ativado e, ao seu término, elas são liberadas/desalocadas da memória, tornando-se inacessíveis.
Informática, Algoritmos e Estruturas de Dados Ifes 96
Algoritmo "Raiz Equação"
var
a, b, c, meudelta: real //a, b e c são variáveis globais
FUNCAO Delta (aa, bb, cc: Real): Real //aa, bb e cc são variáveis locais
var
valor: real
Inicio
valor<- bb*bb-4*aa*cc
retorne valor
fimfuncao
INICIO
Escreval ("Forneça a, b e c: ")
Leia (a, b, c)
Escreval
meudelta<-Delta (a,b,c)
Escreval ("O delta da equação é:", meudelta)
FIMALGORITMO
Informática, Algoritmos e Estruturas de Dados Ifes 97
Passagem de Parâmetros
Ao declarar uma função ou procedimento, é possível declarar um ou maisargumentos. Ao utilizar uma função ou procedimento, você deve informar osvalores para os argumentos, na mesma ordem em que foram definidos durantea declaração da função ou procedimento. Este processo é conhecido comopassagem de parâmetros para a função ou procedimento, ou seja, ao chamar afunção ou procedimento, passamos valores que serão utilizados pelo código dafunção ou procedimento.
Existem duas maneiras diferentes de fazer a passagem dos parâmetros:
• Passagem por Valor
• Passagem por Referência
Informática, Algoritmos e Estruturas de Dados Ifes 98
Passagem de Parametros por Valor
• Apenas o valor é passado para a função/procedimento, e estevalor é utilizado pelo código da função/procedimento, semafetar o valor original do parâmetro
• Quaisquer alterações que sejam feitas no valor do parâmetro,dentro do procedimento, não afetarão o valor original, o qualserá o mesmo de antes da chamada da função/procedimento
• Tanto variavéis como constantes podem ser passadas por valor
Informática, Algoritmos e Estruturas de Dados Ifes 99
Passagem por Valor - Exemplo
algoritmo "Arredonda real"
var
Num : Real
Funcao Arredonda (NumR: real) : Inteiro
Var
NumI : inteiro
inicio
NumI <- Int (NumR + 0.5)
Retorne NumI
FimFuncao
inicio
Escreva ("Entre com um numero real: ")
Leia (Num)
Escreval ("O numero ", Num, " foi arredondado para: ", Arredonda (Num))
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 100
Passagem de Parâmetros por Referência
• A função/procedimento receberá uma referência ao endereço de memória onde está armazenado o valor do parâmetro
• É necessário utilizar a palavra reservada VAR antes da definição do nome do parâmetro
• Quaisquer alterações que a função/procedimento fizer, serão feitas diretamente na variável original
• Usada geralmente por procedimentos para poder alterar o valor original da variável passada como parâmetro, sendo a única maneira que o procedimento dispõe para “retornar” valores ao código que o chamou
• Não é passada uma simples cópia do valor da variável (que é o que acontece na passagem por valor)
• Não é possível passar constantes por referência
Informática, Algoritmos e Estruturas de Dados Ifes 101
Passagem por referência - Exemplo
algoritmo "Soma 5"
var
Num : inteiro
Procedimento Soma5 ( VAR NumInt : inteiro)
inicio
NumInt <- NumInt + 5
fimProcedimento
Inicio
Escreva ("Entre com um numero inteiro a ser armazenado na variável NUM : ")
Leia (Num)
Soma5 (Num)
Escreval ("O conteúdo de NUM após a chamada do proc. Soma5 é : ", Num )
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 102
Passagem por referência e valor - Exemplo
algoritmo "Soma N"
var
Num : inteiro
Procedimento SomaN (VAR NumInt : inteiro ; Increm : inteiro )
inicio
NumInt <- NumInt + Increm
fimProcedimento
inicio
Escreva ("Entre com um numero inteiro a ser armazenado na variável NUM : ")
Leia (Num)
SomaN (Num , 10)
Escreval ("O conteúdo de NUM após a chamada do proc. SomaN (NUM, 10) é : ", Num )
SomaN (Num , Num)
Escreval ("O conteúdo de NUM após a chamada do proc. SomaN (NUM, NUM) é : ", Num )
fimalgoritmo
Informática, Algoritmos e Estruturas de Dados Ifes 103
Exercícios:
1) Escrever um algoritmo para determinar se um determinado número inteiro é par ou ímpar. Utilizar um subalgoritmo de função que retorna “par” para indicar se o valor recebido é par ou “ímpar” para indicar que o valor recebido é ímpar. O algoritmo deverá parar quando for fornecido um valor zero.
2) Escreva um algoritmo que lê um número não determinado de valores m, todos inteiros e positivos, um valor de cada vez, e, se m<10 utiliza um subalgoritmo do tipo função que calcula o fatorial de m, e caso contrário, utiliza um subalgoritmo do tipo função para obter o número de divisores de m (quantos divisores m possui). Valide o número m lido garantindo que o mesmo seja inteiro e positivo. Escrever cada m lido e seu fatorial ou seu número de divisores. O Algoritmo deverá parar quando for fornecido um valor zero.
Informática, Algoritmos e Estruturas de Dados Ifes 104
Registros
Registro é uma estrutura de dados não homogênea, ou seja, permite o armazenamento de informações de diferentes tipos.
Aluno:
nome, idade, nota
nome é caractere, idade é inteiro e nota é real
Informática, Algoritmos e Estruturas de Dados Ifes 105
Registro
tipo tp_aluno = registro
nome: caractere
idade: inteiro
nota:real
var aluno: tp_aluno
leia (aluno.nome)
Informática, Algoritmos e Estruturas de Dados Ifes 106
Vetor com múltiplos Registros
tipo tp_aluno = registro
nome: caractere
idade: inteiro
nota:real
var aluno: vetor [1..10] de tp_aluno
leia (aluno[i].nome, aluno[i].idade)
leia (aluno[i].nota)
Informática, Algoritmos e Estruturas de Dados Ifes 107
algoritmo “teste registro”
tipo tp_aluno = registro
nome: caractere
idade: inteiro
nota:real
var
aluno: vetor [1..10] de tp_aluno
i: inteiro
inicio
para i de 1 ate 10 faca
leia (aluno[i].nome, aluno[i].idade, aluno[i].nota)
fimpara
para i de 1 ate 10 faca
escreva (aluno[i].nome, aluno[i].idade, aluno[i].nota)
fimpara
fim
Informática, Algoritmos e Estruturas de Dados Ifes 108
Linguagem C
C foi criada por Dennis Ritchie em 1972 nos laboratórios Bell para ser incluído como um dos softwares a serem distribuídos juntamente com o sistema operacional Unix do computador PDP-11
Características da Linguagem C:
• compilada;
• “case senitive”;
• portável;
• código compacto e rápido;
• médio nível.
Informática, Algoritmos e Estruturas de Dados Ifes 109
Linguagem C – decisão: se ..senão
algoritmo "Decisão"
var
a, b:inteiro
inicio
a<-1
b<-2
se (a>b) entao
escreva ("a maior que b")
senao
escreva ("b maior que a")
fimse
fimalgoritmo
#include <stdio.h>
int main () {
int a, b;
a=1;
b=2;
if (a>b) {
printf ("a maior que b");
}
else {
printf ("b maior que a");
}
return (0);
}
Informática, Algoritmos e Estruturas de Dados Ifes 110
Linguagem C – repetição: para
algoritmo "Para"
var
a:inteiro
inicio
para a<-0 ate 100 passo 2 faca
escreva (a)
fimpara
fimalgoritmo
#include <stdio.h>
int main () {
int a;
for (a=0; a<=100; a=a+2)
{
printf (“%d”, a);
}
Return (0);
}
Informática, Algoritmos e Estruturas de Dados Ifes 111
Linguagem C – repetição: enquanto
algoritmo "Enquanto"
var
a:inteiro
Inicio
a<-0
enquanto (a<100) faca
a<-a+4
escreva (a)
fimenquanto
fimalgoritmo
#include <stdio.h>
int main () {
int a=0;
while (a<100) {
a=a+4;
printf ("%d", a);
}
return (0);
}
Informática, Algoritmos e Estruturas de Dados Ifes 112
Linguagem C – entrada de dados
algoritmo "Entrada"
var a, b, c:inteiro
inicio
escreva ("Insira 2 numeros
inteiros")
leia (a,b)
c<-a+b
escreva ("A soma dos numeros é",c)
fimalgoritmo
#include <stdio.h>
int main () {
int a,b,c;
printf ("Digite 2 numeros inteiros");
scanf ("%d", &a);
scanf ("%d", &b);
c=a+b;
printf ("A soma deles eh,%d",c);
return (0);
}
Informática, Algoritmos e Estruturas de Dados Ifes 113
Impressão na tela:
%d Inteiro
%f Float
%c Caractere
%s String
%% Coloca na tela um %
\b Retrocesso ("back")\f Alimentação de formulário ("form feed")
\n Nova linha ("new line")
\t Tabulação horizontal ("tab")
\" Aspas
\' Apóstrofo
\\ Barra invertida
Informática, Algoritmos e Estruturas de Dados Ifes 114
Operadores Aritméticos:
+ Soma (inteira e ponto flutuante)
- Subtração ou Troca de sinal (inteira e ponto flutuante)
* Multiplicação (inteira e ponto flutuante)
/ Divisão (inteira e ponto flutuante)
% Resto de divisão (de inteiros)
++ Incremento (inteiro e ponto flutuante)
-- Decremento (inteiro e ponto flutuante)
Informática, Algoritmos e Estruturas de Dados Ifes 115
Operadores Relacionais:
> Maior do que
>= Maior ou igual a
< Menor do que
<= Menor ou igual a
== Igual a
!= Diferente de
Operadores Lógicos:
! NÃO
|| OU
&& E
Informática, Algoritmos e Estruturas de Dados Ifes 116
Exercício
1) Escreva um programa que peça 2 números e faça a soma deles e pergunte se o usuário quer fazer o cálculo de novo.
2) Escreva um programa que receba um número e conte a partir dele até 100.
3) Faça um programa que peça 2 números, os compare e mostre qual é o maior.