SlideShare uma empresa Scribd logo
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ção
V
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ção
V
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 Encadeados
Há 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ção
V
F
oioioioioiocondição
V
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 03
3) 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
fimenquanto
oioioioioio
Informática, Algoritmos e Estruturas de Dados Ifes 36
cont<=5
F
inicio
x
V
pot
pot<- pot*x
cont<-cont+1
Exemplo: Elabore um algoritmo que calcule a x ** 5 utilizando repetições
cont<-1
pot<-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<=3
F
V
F
inicio
voto
V
fim
contaS, contaN
cont<-1
contaS<-0
contaN<-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ário
Elabore 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
fimpara
oioioioioio
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]
Nota
8,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 tam
k <- -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 tam
inicio <- 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_valor2
retorne 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 mais
argumentos. Ao utilizar uma função ou procedimento, você deve informar os
valores para os argumentos, na mesma ordem em que foram definidos durante
a declaração da função ou procedimento. Este processo é conhecido como
passagem de parâmetros para a função ou procedimento, ou seja, ao chamar a
função ou procedimento, passamos valores que serão utilizados pelo código da
funçã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 este
valor é utilizado pelo código da função/procedimento, sem
afetar 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 qual
será 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.

Mais conteúdo relacionado

Mais procurados

Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
Adilio Tavares
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
Gercélia Ramos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introdução
Mauro Pereira
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
Willians Miyabara
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
Wesley R. Bezerra
 
Visualg
VisualgVisualg
Visualg
Pedro Silva
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
Elaine Cecília Gatto
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
Aislan Rafael
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
Elaine Cecília Gatto
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
Professor Samuel Ribeiro
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
Alberto Simões
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
Regis Magalhães
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
Andrei Bastos
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
Professor Samuel Ribeiro
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
Regis Magalhães
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
Gercélia Ramos
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
Jorge Ávila Miranda
 
Exercicios resolvidos algoritmos
Exercicios resolvidos algoritmosExercicios resolvidos algoritmos
Exercicios resolvidos algoritmos
Débora Inocêncio
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
Gercélia Ramos
 

Mais procurados (20)

Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introdução
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
 
Visualg
VisualgVisualg
Visualg
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Exercicios resolvidos algoritmos
Exercicios resolvidos algoritmosExercicios resolvidos algoritmos
Exercicios resolvidos algoritmos
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 

Semelhante a Apresentação 20130805 algoritmos

Revisão da Disciplina de Arquitetura de Computadores
Revisão da Disciplina de Arquitetura de ComputadoresRevisão da Disciplina de Arquitetura de Computadores
Revisão da Disciplina de Arquitetura de Computadores
ssuserc3cd74
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
Denilton Darold
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Alex Camargo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
jormad
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
Evaldo Savio Araujo
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmos
pronatecvja
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
GustavoBarrosLins1
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
Paulo Cardoso
 
53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i
Edvan Mateó
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Leinylson Fontinele
 
algoritmo-m03-tiposdedados-151221150545.pptx
algoritmo-m03-tiposdedados-151221150545.pptxalgoritmo-m03-tiposdedados-151221150545.pptx
algoritmo-m03-tiposdedados-151221150545.pptx
GustavoMaciel67
 
Aula1
Aula1Aula1
Aula1
crmarconi
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
dasko
 
Alg aula 02 - algoritmos 1 tp1
Alg   aula 02 - algoritmos 1 tp1Alg   aula 02 - algoritmos 1 tp1
Alg aula 02 - algoritmos 1 tp1
Thalles Anderson
 
01 fundamentos de programação
01   fundamentos de programação01   fundamentos de programação
01 fundamentos de programação
maceca21
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
angelicamenegassi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
angelicamenegassi
 
Algop - aula 03
Algop - aula 03Algop - aula 03
Algop - aula 03
Thiago Toscano Ferrari
 
Fundamento da ciência da computação
Fundamento da ciência da computaçãoFundamento da ciência da computação
Fundamento da ciência da computação
Marcos Gregorio
 

Semelhante a Apresentação 20130805 algoritmos (20)

Revisão da Disciplina de Arquitetura de Computadores
Revisão da Disciplina de Arquitetura de ComputadoresRevisão da Disciplina de Arquitetura de Computadores
Revisão da Disciplina de Arquitetura de Computadores
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmos
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)
 
algoritmo-m03-tiposdedados-151221150545.pptx
algoritmo-m03-tiposdedados-151221150545.pptxalgoritmo-m03-tiposdedados-151221150545.pptx
algoritmo-m03-tiposdedados-151221150545.pptx
 
Aula1
Aula1Aula1
Aula1
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Alg aula 02 - algoritmos 1 tp1
Alg   aula 02 - algoritmos 1 tp1Alg   aula 02 - algoritmos 1 tp1
Alg aula 02 - algoritmos 1 tp1
 
01 fundamentos de programação
01   fundamentos de programação01   fundamentos de programação
01 fundamentos de programação
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algop - aula 03
Algop - aula 03Algop - aula 03
Algop - aula 03
 
Fundamento da ciência da computação
Fundamento da ciência da computaçãoFundamento da ciência da computação
Fundamento da ciência da computação
 

Mais de João moreira

Usando o qr code
Usando o qr codeUsando o qr code
Usando o qr code
João moreira
 
Linux mint apostila
Linux mint apostilaLinux mint apostila
Linux mint apostila
João moreira
 
Apostila(1)
Apostila(1)Apostila(1)
Apostila(1)
João moreira
 
Apostila esssa
Apostila   esssaApostila   esssa
Apostila esssa
João moreira
 
Apostilam01 tabela verdade
Apostilam01 tabela verdadeApostilam01 tabela verdade
Apostilam01 tabela verdade
João moreira
 
Estudos culturais
Estudos culturaisEstudos culturais
Estudos culturais
João moreira
 
Lógica de programação algoritmos em pseudo codigos pela facat
Lógica de programação   algoritmos em pseudo codigos pela facatLógica de programação   algoritmos em pseudo codigos pela facat
Lógica de programação algoritmos em pseudo codigos pela facat
João moreira
 
Como escrever mais rápido 11 passos (com imagens)
Como escrever mais rápido  11 passos (com imagens)Como escrever mais rápido  11 passos (com imagens)
Como escrever mais rápido 11 passos (com imagens)
João moreira
 
Atividade aula hoje
Atividade aula hojeAtividade aula hoje
Atividade aula hoje
João moreira
 
Apresentacao sobre varias coisas1
Apresentacao sobre varias coisas1Apresentacao sobre varias coisas1
Apresentacao sobre varias coisas1
João moreira
 
Apresentacao sobre varias coisas
Apresentacao sobre varias coisasApresentacao sobre varias coisas
Apresentacao sobre varias coisas
João moreira
 

Mais de João moreira (11)

Usando o qr code
Usando o qr codeUsando o qr code
Usando o qr code
 
Linux mint apostila
Linux mint apostilaLinux mint apostila
Linux mint apostila
 
Apostila(1)
Apostila(1)Apostila(1)
Apostila(1)
 
Apostila esssa
Apostila   esssaApostila   esssa
Apostila esssa
 
Apostilam01 tabela verdade
Apostilam01 tabela verdadeApostilam01 tabela verdade
Apostilam01 tabela verdade
 
Estudos culturais
Estudos culturaisEstudos culturais
Estudos culturais
 
Lógica de programação algoritmos em pseudo codigos pela facat
Lógica de programação   algoritmos em pseudo codigos pela facatLógica de programação   algoritmos em pseudo codigos pela facat
Lógica de programação algoritmos em pseudo codigos pela facat
 
Como escrever mais rápido 11 passos (com imagens)
Como escrever mais rápido  11 passos (com imagens)Como escrever mais rápido  11 passos (com imagens)
Como escrever mais rápido 11 passos (com imagens)
 
Atividade aula hoje
Atividade aula hojeAtividade aula hoje
Atividade aula hoje
 
Apresentacao sobre varias coisas1
Apresentacao sobre varias coisas1Apresentacao sobre varias coisas1
Apresentacao sobre varias coisas1
 
Apresentacao sobre varias coisas
Apresentacao sobre varias coisasApresentacao sobre varias coisas
Apresentacao sobre varias coisas
 

Apresentação 20130805 algoritmos

  • 1. 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”
  • 2. 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)
  • 3. 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.
  • 4. 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#)
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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)
  • 10. 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
  • 11. 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
  • 12. 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)
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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ção V F
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. Informática, Algoritmos e Estruturas de Dados Ifes 23 Exercício sala - listageral número 17 - fluxograma e algoritmo
  • 24. 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ção V F ioioioioioio
  • 25. 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
  • 26. Informática, Algoritmos e Estruturas de Dados Ifes 26 Exercício sala - listageral número 15 - algoritmo Exercício casa - listageral números 13
  • 27. Informática, Algoritmos e Estruturas de Dados Ifes 27 Estrutura de tomada de decisões (cont.) Desvios condicionais Encadeados Há 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
  • 28. Informática, Algoritmos e Estruturas de Dados Ifes 28 aiaiaiaiaia condição V F oioioioioiocondição V F
  • 29. 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%
  • 30. 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
  • 31. 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
  • 32. 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 03 3) 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
  • 33. 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
  • 34. 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
  • 35. 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 fimenquanto oioioioioio
  • 36. Informática, Algoritmos e Estruturas de Dados Ifes 36 cont<=5 F inicio x V pot pot<- pot*x cont<-cont+1 Exemplo: Elabore um algoritmo que calcule a x ** 5 utilizando repetições cont<-1 pot<-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
  • 37. Informática, Algoritmos e Estruturas de Dados Ifes 37 cont<=3 F V F inicio voto V fim contaS, contaN cont<-1 contaS<-0 contaN<-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
  • 38. 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
  • 39. Informática, Algoritmos e Estruturas de Dados Ifes 39 Exemplo de laço controlado pelo usuário Elabore 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
  • 40. 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
  • 41. 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 fimpara oioioioioio
  • 42. 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
  • 43. 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
  • 44. 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.
  • 45. 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
  • 46. 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] Nota 8,0 3,5 10 [2] [3] [4]
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 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.
  • 51. 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.
  • 52. 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.
  • 53. 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.
  • 54. 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
  • 55. Informática, Algoritmos e Estruturas de Dados Ifes 55 Pesquisa sequencial (algoritmo) Pesquisar o elemento Elem no vetor V de tamanho tam k <- -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
  • 56. 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
  • 57. Informática, Algoritmos e Estruturas de Dados Ifes 57 Pesquisa binária (algoritmo iterativo) Pesquisar o elemento Elem no vetor V de tamanho tam inicio <- 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
  • 58. Informática, Algoritmos e Estruturas de Dados Ifes 58 Pesquisa binária
  • 59. Informática, Algoritmos e Estruturas de Dados Ifes 59 Pesquisa Binária
  • 60. Informática, Algoritmos e Estruturas de Dados Ifes 60 Pesquisa Binária
  • 61. Informática, Algoritmos e Estruturas de Dados Ifes 61 Pesquisa Binária
  • 62. Informática, Algoritmos e Estruturas de Dados Ifes 62 Pesquisa Binária
  • 63. Informática, Algoritmos e Estruturas de Dados Ifes 63 Pesquisa Binária
  • 64. Informática, Algoritmos e Estruturas de Dados Ifes 64 Pesquisa Binária
  • 65. Informática, Algoritmos e Estruturas de Dados Ifes 65 Pesquisa Binária
  • 66. Informática, Algoritmos e Estruturas de Dados Ifes 66 Pesquisa Binária
  • 67. Informática, Algoritmos e Estruturas de Dados Ifes 67 Pesquisa Binária
  • 68. Informática, Algoritmos e Estruturas de Dados Ifes 68 Pesquisa Binária
  • 69. Informática, Algoritmos e Estruturas de Dados Ifes 69 Pesquisa Binária
  • 70. Informática, Algoritmos e Estruturas de Dados Ifes 70 Pesquisa Binária
  • 71. 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.
  • 72. 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.
  • 73. 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)
  • 74. 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
  • 75. 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
  • 76. 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 ..... ...... ......
  • 77. 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.
  • 78. 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
  • 79. 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.
  • 80. 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.
  • 81. 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].
  • 82. 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.
  • 83. 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
  • 84. Informática, Algoritmos e Estruturas de Dados Ifes 84 Esquema de uma chamada a subalgoritmo:
  • 85. 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.
  • 86. 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
  • 87. 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
  • 88. 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
  • 89. 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
  • 90. 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_valor2 retorne 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
  • 91. 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)
  • 92. 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
  • 93. 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
  • 94. 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
  • 95. 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.
  • 96. 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
  • 97. 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 mais argumentos. Ao utilizar uma função ou procedimento, você deve informar os valores para os argumentos, na mesma ordem em que foram definidos durante a declaração da função ou procedimento. Este processo é conhecido como passagem de parâmetros para a função ou procedimento, ou seja, ao chamar a função ou procedimento, passamos valores que serão utilizados pelo código da função ou procedimento. Existem duas maneiras diferentes de fazer a passagem dos parâmetros: • Passagem por Valor • Passagem por Referência
  • 98. Informática, Algoritmos e Estruturas de Dados Ifes 98 Passagem de Parametros por Valor • Apenas o valor é passado para a função/procedimento, e este valor é utilizado pelo código da função/procedimento, sem afetar 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 qual será o mesmo de antes da chamada da função/procedimento • Tanto variavéis como constantes podem ser passadas por valor
  • 99. 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
  • 100. 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
  • 101. 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
  • 102. 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
  • 103. 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.
  • 104. 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
  • 105. 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)
  • 106. 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)
  • 107. 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
  • 108. 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.
  • 109. 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); }
  • 110. 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); }
  • 111. 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); }
  • 112. 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); }
  • 113. 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
  • 114. 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)
  • 115. 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
  • 116. 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.