Vous êtes sur la page 1sur 43

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”.
• É uma “receita de bolo”

Informática, Algoritmos e Estruturas de Dados Ifes 1

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 2

1
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 3

Programa

• São algoritmos escritos em uma Liguagem de


computador (ex.: Pascal, Java, C, Fortran, C#)

Informática, Algoritmos e Estruturas de Dados Ifes 4

2
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 5

Algumas Simbologias Básicas


Terminal - indica o início 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 6

3
Exemplo

Elaborar algoritmo que efetue o cálculo da área de uma


circunferência
início

A <- 3.14159 * r ** 2

fim

Informática, Algoritmos e Estruturas de Dados Ifes 7

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 8

4
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 9

Variáveis

• Podemos dizer que variável é a identificação de um


dado armazenado no computador
memória do
computador

r
5,0

A 78,5

Informática, Algoritmos e Estruturas de Dados Ifes 10

5
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 11

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))/(2*a)

Informática, Algoritmos e Estruturas de Dados Ifes 12

6
Resolução de Problemas por meio dos
Computadores

Problema Computacional

Processamento
Dados de Dados de
Entrada Saída

Informática, Algoritmos e Estruturas de Dados Ifes 13

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 14

7
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 15

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 16

8
Exemplo: Algoritmo para calcular a média de alunos
programa CalculaMedia
var
N1, N2, N3, N4: real
SOMA, MEDIA: real
início
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 17

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 18

9
Estrutura de tomada de decisões

Desvio condicional Simples


É utilizada a instrução se...então...fim_se. Se a condição
estabelecida for verdadeira, serão executadas as instruções
que se encontram entre se...então e fim_se.

se condição então condição


V
aiaiaiaiaia
fim_se F
aiaiaiaiaia

Informática, Algoritmos e Estruturas de Dados Ifes 19

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 20

10
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
início
leia (N1, N2, N3, N4)
SOMA <- N1+N2+N3+N4
MEDIA <- SOMA/4
se (MEDIA >= 7) então
resultado<-“aprovado”
fim_se
se (MEDIA < 7) então
resultado<- “reprovado”
fim_se
escreva(“O resultado foi: ”, resultado)
fim

Informática, Algoritmos e Estruturas de Dados Ifes 21

Exemplo: Algoritmo para verificar se um triãngulo é isosceles


programa triangulo
var
lado1, lado2, lado3: real
início
leia (lado1, lado2, lado3)
se (lado1=lado2) E (lado1<>lado3) então
escreva (“é isosceles”)
fim_se
se (lado1=lado3) E (lado1<>lado2) então
escreva (“é isosceles”)
fim_se
se (lado2=lado3) E (lado2<>lado1) então
escreva (“é isosceles”)
fim_se
fim

Informática, Algoritmos e Estruturas de Dados Ifes 22

11
Exercício sala - listageral número 17 - fluxograma e
algoritmo

Informática, Algoritmos e Estruturas de Dados Ifes 23

Estrutura de tomada de decisões (cont.)

Desvio condicional Composto


É utilizada a instrução se...então...senão...fim_se. Se a condição
estabelecida for verdadeira, serão executadas as instruções
que se encontram entre se...então e senão e se a condição for
falsa serão executadas as instruções entre senão e fim_se.

se condição então V
condição
aiaiaiaiaia (condição verdadeira)
senão F
aiaiaiaiaia
ioioioioioio (condição falsa) ioioioioioio
fim_se
Informática, Algoritmos e Estruturas de Dados Ifes 24

12
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
início
leia (N1, N2, N3, N4)
SOMA <- N1+N2+N3+N4
MEDIA <- SOMA/4
se (MEDIA >= 7) então
resultado<-“aprovado”
senão
resultado<- “reprovado”
fim_se
escreva(“O resultado foi: ”, resultado)
fim

Informática, Algoritmos e Estruturas de Dados Ifes 25

Exercício sala - listageral número 15 - algoritmo

Exercício casa - listageral números 13

Informática, Algoritmos e Estruturas de Dados Ifes 26

13
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 então
aiaiaiaiaia (condição verdadeira)
senão
se condição2 então
oioioioioio (condição2 verdadeira)
fim_se
fim_se

Informática, Algoritmos e Estruturas de Dados Ifes 27

V
condição

F
aiaiaiaiaia

V
condição oioioioioio

Informática, Algoritmos e Estruturas de Dados Ifes 28

14
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 29

início

salario

V
salario<500

F
V
salario<=1000 salario<-salario*1.15

salario<-salario*1.10 F
salario<-salario*1.05

salario

fim

Informática, Algoritmos e Estruturas de Dados Ifes 30

15
programa salario
var
salario: real
início
leia (salario)
se (salario<500) então
salario<-salario*1.15
senão
se (salario<=1000) então
salario<-salario*1.15
senão
salario<-salario*1.05
fim_se
fim_se
escreva(“O novo salario é: ”, salario)
fim

Informática, Algoritmos e Estruturas de Dados Ifes 31

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 32

16
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 33

programa votação
var
voto: caractere
contaS, contaN, : inteiro
início
contaS<-0
contaN<-0
leia (voto)
se (voto= “S”) então
contaS <- contaS +1
senão
se (voto= “N”) então
contaN <- contaN+1
fim_se
fim_se
leia (voto)
se (voto= “S”) então
contaS <- contaS +1
senão
se (voto= “N”) então
contaN <- contaN+1
fim_se
fim_se
leia (voto)
se (voto= “S”) então
contaS <- contaS +1
senão
se (voto= “N”) então
contaN <- contaN+1
fim_se
fim_se
escreva(“A contagem de votos S foi ”, contaS,” e a contagem de N foi ”, contaN)
fim
Informática, Algoritmos e Estruturas de Dados Ifes 34

17
Repetição: teste lógico no início do laço

enquanto...faça...fim_enquanto: é realizado um teste no


início do laço em que se verifica se o trecho de
instruções internas ao laço (entre faça e
fim_enquanto) deverá ser executado ou não.

F
condição
Enquanto condição faça
V
aiaiaiaiaia
aiaiaiaiaia
oioioioioio
oioioioioio
fim_enquanto

Informática, Algoritmos e Estruturas de Dados Ifes 35

Exemplo: Elabore um algoritmo que calcule a x ** 5 utilizando repetições


início

cont<-1
pot<-1

x programa votação
var
x, pot: real
F cont: inteiro
cont<=5 início
cont<-1
V pot<-1
leia(x)
pot<- pot*x enquanto cont <= 5 faça
pot <- pot*x
cont<- cont+1
fim_enquanto
cont<-cont+1
escreva(x,”**5=”,pot)
fim

pot

fim

Informática, Algoritmos e Estruturas de Dados Ifes 36

18
Exemplo: Elabore um algoritmo que conte os votos S ou N ou entre 03 votantes
início

cont<-1
contaS<-0
contaN<-0

1
F
cont<=3

V contaS, contaN

voto
fim

F F
Voto=”S” voto=“N”

V V
contaS<-contaS+1 contaN<-contaN+1

cont<-cont+1

1
Informática, Algoritmos e Estruturas de Dados Ifes 37

programa votação
var
voto: caractere
contaS, contaN, : inteiro
início
contaS<-0
contaN<-0
cont<-1
enquanto cont <= 3 faça
leia (voto)
se (voto= “S”) então
contaS <- contaS +1
senão
se (voto= “N”) então
contaN <- contaN+1
fim_se
fim_se
cont<-cont+1
fim_enquanto
escreva(“A contagem de votos S foi ”, contaS,” e a
contagem de N foi ”, contaN)
fim12

Informática, Algoritmos e Estruturas de Dados Ifes 38

19
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
início
contaS<-0
contaN<-0
leia (voto)
enquanto (voto<>”x”) e (voto<>”X”) faça
se (voto= “S”) então
contaS <- contaS +1
senão
se (voto= “N”) então
contaN <- contaN+1
fim_se
fim_se
leia (voto)
fim_enquanto
escreva(“A contagem de votos S foi ”, contaS,” e a
contagem de N foi ”, contaN)
fim

Informática, Algoritmos e Estruturas de Dados Ifes 39

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 40

20
Repetição com variável de controle
para...de...até...passo...faça...fim_para: quando laços devem ser
executados apenas um determinado número de vezes pode ser
utilizada a estrutura para...de...até...passo...faça...fim_para . Os
comandos que ficam entre para...de...até...passo...faça e
fim_para são executados o número de vezes determinado por
uma variável contador.

cont<-inicio, fim,
incremento para cont de inicio até fim passo incremento faça
aiaiaiaiaia
aiaiaiaiaia oioioioioio
fim_para
oioioioioio

Informática, Algoritmos e Estruturas de Dados Ifes 41

Exemplo: Forneça um valor, multiplique por 3 e apresente o resultado. Repita a


operação por cinco vezes.

Cont<-1,5

início ou

programa produto
cont<-1,5,1 var
x, R: real
cont: inteiro
x início
para cont de 1 até 5 passo 1 faça
leia(x)
R <- x * 3
R <- x * 3
escreva(x,”*3=”,R)
fim_para
R fim

fim

Informática, Algoritmos e Estruturas de Dados Ifes 42

21
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 43

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 44

22
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 45

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 [1] 5,0
[2] 8,0
Agora: 1 variável: Nota
Nota: vetor [1..4] de real [3] 3,5
Nota[1], Nota[2], Nota[3], Nota[4], [4] 10

Informática, Algoritmos e Estruturas de Dados Ifes 46

23
Exemplo: Elabore um algoritmo que calcule e apresente a média das oito notas
(fornecidas) de um aluno.
início

Soma <- 0
programa média
var
I <-1,8 Nota: vetor [1..8] de real
i: inteiro
Media, Soma: real
Nota[i] início
Soma<-0
Soma <- Soma + Nota[i] para i de 1 até 8 faça
leia(Nota[i])
Soma<-Soma + Nota[i]
fim_para
Media <- Soma/8
Media <- Soma / 8
escreva (Media)
fim
Media

fim
Informática, Algoritmos e Estruturas de Dados Ifes 47

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.

início
programa média
1 var
Soma <- 0
Nota: vetor [1..8] de real
Media i: inteiro
Media, Soma: real
I <-1,8 início
para i de 1 até 8 faça
I <-1,8 leia(Nota[i])
Soma<-Soma + Nota[i]
Nota[i] fim_para
Nota[i] Media <- Soma/8
Soma <- Soma + Nota[i] escreva (Media)
para i de 1 até 8 faça
escreva (Nota[i])
fim_para
fim
Media <- Soma / 8 fim

Informática, Algoritmos e Estruturas de Dados Ifes 48

24
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 49

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 50

25
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 51

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 52

26
Crie um algoritmo: um vetor de 100 posições de caracteres é preenchido com
um texto fornecido pelo usuário. Após o preenchimento do vetor pesquise
com duas letras digitadas e informe quantas foram as ocorrências.
Altere o algoritmo anterior para que seja possível a pesquisa de três letras.
Altere o algoritmo anterior para que seja possível a pesquisa de 20 letras.

Faça um algoritmo que com informações de um vetor de 20 posições lido


produza um outro vetor de até 100 posições da seguinte maneira:
2314311211
1100010000111010010
Faça um algoritmo que com informações de um vetor de 100 posições lido
produza um outro vetor de até 20 posições da seguinte maneira:
1100010000111010010
2314311211

Informática, Algoritmos e Estruturas de Dados Ifes 53

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 54

27
[linha,coluna]
[1,1] = 5,0
[1] [2] [3]
[1,2] = 4,3
[1] 5,0 4,3 3,5 [1,3] = 3,5

[2] 9,4 4,0 0,3 [2,1] = 9,4


.
[3] 8,0 16 5,2
.
[4] 6,7 9,1 3,7 [4,1] = 6,7
[4,2] = 9,1
[4,3] = 3,7

Informática, Algoritmos e Estruturas de Dados Ifes 55

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
início
para i de 1 até 4 faça
para j de 1 até 4 faça
leia(mat[i,j])
fim_para
fim_para
escreva(“entre o valor da constante”)
leia (valor)
para i de 1 até 4 faça
mat[i,i]<-mat[i,i]*valor
fim para
para i de 1 até 4 faça
para j de 1 até 4 faça
escreva (i,”,”,j,”=”, “mat[i,j])
fim_para
fim_para
fim

Informática, Algoritmos e Estruturas de Dados Ifes 56

28
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 57

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 58

29
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)
fim_enquanto

Informática, Algoritmos e Estruturas de Dados Ifes 59

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 60

30
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 61

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 62

31
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 63

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 chama-se-
o diversas vezes.
Dois tipos:
• funções: retorna um valor ou uma informação
• procedimentos (sub-rotina): não retorna nenhum valor

Informática, Algoritmos e Estruturas de Dados Ifes 64

32
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 65

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 66

33
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 67

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 68

34
ALGORITMO "Funções Personalizadas"
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 69

Algoritmo "Raiz Equação"


var
a, b, c, meudelta: real

FUNCAO Delta (aa, bb, cc: Real): Real


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 70

35
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 um valor lógico para indicar se o valor
recebido é par ou não. 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 71

Exemplo de Procedimento

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 72

36
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 73

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 74

37
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 75

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 76

38
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 77

Linguagem C – decisão: se ..senão


algoritmo "Decisão" #include <stdio.h>
var int main () {
a, b:inteiro int a, b;
inicio a=1;
b=2;
a<-1
if (a>b) {
b<-2 printf ("a maior que b");
se (a>b) entao }
escreva ("a maior que else {
b") printf ("b maior que a");
senao }
escreva ("b maior que return (0);
a") }
fimse
fimalgoritmo

Informática, Algoritmos e Estruturas de Dados Ifes 78

39
Linguagem C – repetição: para
algoritmo "Para" #include <stdio.h>
var int main () {
a:inteiro int a;
inicio for (a=0; a<=100; a=a+2)
para a<-0 ate 100 passo 2 {
faca printf (“%d”, a);
escreva (a) }
fimpara Return (0);
fimalgoritmo }

Informática, Algoritmos e Estruturas de Dados Ifes 79

Linguagem C – repetição: enquanto


algoritmo "Enquanto" #include <stdio.h>
var int main () {
a:inteiro int a=0;
Inicio while (a<100) {
a<-0 a=a+4;
enquanto (a<100) faca printf ("%d", a);
a<-a+4 }
escreva (a) return (0);
fimenquanto }
fimalgoritmo

Informática, Algoritmos e Estruturas de Dados Ifes 80

40
Linguagem C – entrada de dados
algoritmo "Entrada" #include <stdio.h>
var a, b, c:inteiro int main () {
inicio int a,b,c;
escreva ("Insira 2 numeros printf ("Digite 2 numeros
inteiros");
inteiros")
scanf ("%d", &a);
leia (a,b)
scanf ("%d", &b);
c<-a+b
c=a+b;
escreva ("A soma dos numeros
é",c) printf ("A soma deles
eh,%d",c);
fimalgoritmo
return (0);
}

Informática, Algoritmos e Estruturas de Dados Ifes 81

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 82

41
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 83

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 84

42
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.

Informática, Algoritmos e Estruturas de Dados Ifes 85

43

Vous aimerez peut-être aussi