Informática, Algoritmos e Estruturas de Dados Ifes 1
Algoritmos
Algoritmos
• “É a descrição, de forma lógica, de um conjun...
Informática, Algoritmos e Estruturas de Dados Ifes 2
Representação Lógica
Linguagem natural
Linguagem Algorítmica
(express...
Informática, Algoritmos e Estruturas de Dados Ifes 3
Exemplo de Algoritmo
Trocar lâmpada numa sala em que existe uma
escad...
Informática, Algoritmos e Estruturas de Dados Ifes 4
Programa
• São algoritmos escritos em uma Liguagem de
computador (ex....
Informática, Algoritmos e Estruturas de Dados Ifes 5
Representação Gráfica de Algoritmos
• Fluxograma: ferramenta gráfica ...
Informática, Algoritmos e Estruturas de Dados Ifes 6
Algumas Simbologias Básicas
Terminal - indica o inicio ou fim do flux...
Informática, Algoritmos e Estruturas de Dados Ifes 7
Exemplo
Elaborar algoritmo que efetue o cálculo da área de uma
circun...
Informática, Algoritmos e Estruturas de Dados Ifes 8
Tipos de Dados e Instruções
O Computador manipula dois tipos de infor...
Informática, Algoritmos e Estruturas de Dados Ifes 9
Alguns tipos de Dados
• Inteiros: valores numéricos pertencentes ao c...
Informática, Algoritmos e Estruturas de Dados Ifes 10
Variáveis
• Podemos dizer que variável é a identificação de um
dado ...
Informática, Algoritmos e Estruturas de Dados Ifes 11
Regras para nomes de variáveis
• 1 ou mais caracteres
• 1o caractere...
Informática, Algoritmos e Estruturas de Dados Ifes 12
Operadores Aritméticos
<- atribuição
+ soma
- subtração
* multiplica...
Informática, Algoritmos e Estruturas de Dados Ifes 13
Resolução de Problemas por meio dos
Computadores
Dados de
Entrada
Da...
Informática, Algoritmos e Estruturas de Dados Ifes 14
Etapas para a solução de um problema
Computacional
• Ler e entender ...
Informática, Algoritmos e Estruturas de Dados Ifes 15
Exemplo de Problema
Elaborar algoritmo que efetue o cálculo da área ...
Informática, Algoritmos e Estruturas de Dados Ifes 16
Exemplo de Problema (cont.)
• Português estruturado (Portugol):
var
...
Informática, Algoritmos e Estruturas de Dados Ifes 17
Exemplo: Algoritmo para calcular a média de alunos
programa CalculaM...
Informática, Algoritmos e Estruturas de Dados Ifes 18
Exemplo sala - listageral número 3 - fluxograma e
algoritmo
Exercíci...
Informática, Algoritmos e Estruturas de Dados Ifes 19
Estrutura de tomada de decisões
Desvio condicional Simples
É utiliza...
Informática, Algoritmos e Estruturas de Dados Ifes 20
Operadores Relacionais e Lógicos
Relacionais
< menor
> maior
<= meno...
Informática, Algoritmos e Estruturas de Dados Ifes 21
Exemplo: Algoritmo para calcular a média de alunos e informe se
o me...
Informática, Algoritmos e Estruturas de Dados Ifes 22
Exemplo: Algoritmo para verificar se um triãngulo é isosceles
progra...
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
...
Informática, Algoritmos e Estruturas de Dados Ifes 25
Exemplo: Algoritmo para calcular a média de alunos e informe se
o me...
Informática, Algoritmos e Estruturas de Dados Ifes 26
Exercício sala - listageral número 15 - algoritmo
Exercício casa - l...
Informática, Algoritmos e Estruturas de Dados Ifes 27
Estrutura de tomada de decisões (cont.)
Desvios condicionais Encadea...
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...
Informática, Algoritmos e Estruturas de Dados Ifes 30
salario<500
F
salario<-salario*1.15salario<=1000
V
F
inicio
salario
...
Informática, Algoritmos e Estruturas de Dados Ifes 31
programa salario
var
salario: real
inicio
leia (salario)
se (salario...
Informática, Algoritmos e Estruturas de Dados Ifes 32
Exemplo sala - Elaborar algoritmo: de 02 valores fornecidos
informe ...
Informática, Algoritmos e Estruturas de Dados Ifes 33
Laços ou malhas de repetição
Há situações em que é necessário repeti...
Informática, Algoritmos e Estruturas de Dados Ifes 34
programa votação
var
voto: caractere
contaS, contaN, : inteiro
inici...
Informática, Algoritmos e Estruturas de Dados Ifes 35
Repetição: teste lógico no inicio do laço
enquanto...faça...fimenqua...
Informática, Algoritmos e Estruturas de Dados Ifes 36
cont<=5
F
inicio
x
V
pot
pot<- pot*x
cont<-cont+1
Exemplo: Elabore u...
Informática, Algoritmos e Estruturas de Dados Ifes 37
cont<=3
F
V
F
inicio
voto
V
fim
contaS, contaN
cont<-1
contaS<-0
con...
Informática, Algoritmos e Estruturas de Dados Ifes 38
programa votação
var
voto: caractere
contaS, contaN, : inteiro
inici...
Informática, Algoritmos e Estruturas de Dados Ifes 39
Exemplo de laço controlado pelo usuário
Elabore um algoritmo que con...
Informática, Algoritmos e Estruturas de Dados Ifes 40
Exercícios da seção: Algoritmos com repetição
Exercícios sala
1) Som...
Informática, Algoritmos e Estruturas de Dados Ifes 41
Repetição com variável de controle
para...de...até...passo...faça......
Informática, Algoritmos e Estruturas de Dados Ifes 42
cont<-1,5,1
inicio
x
R
R <- x * 3
Exemplo: Forneça um valor, multipl...
Informática, Algoritmos e Estruturas de Dados Ifes 43
Exercícios da seção: Algoritmos com repetição
Exemplo:
Calcular o qu...
Informática, Algoritmos e Estruturas de Dados Ifes 44
Exercícios da seção: Algoritmos com repetição
22. Escreva um algorit...
Informática, Algoritmos e Estruturas de Dados Ifes 45
Exercícios da seção: Algoritmos com repetição
1. Faça um algoritmo q...
Informática, Algoritmos e Estruturas de Dados Ifes 46
Estruturas de Dados - Vetor
Vetor ou Matriz unidimensional: Uma vari...
Informática, Algoritmos e Estruturas de Dados Ifes 47
I <-1,8
inicio
Nota[i]
Media <- Soma / 8
Soma <- Soma + Nota[i]
Exem...
Informática, Algoritmos e Estruturas de Dados Ifes 48
I <-1,8
inicio
Nota[i]
Media <- Soma / 8
Soma <- Soma + Nota[i]
Exem...
Informática, Algoritmos e Estruturas de Dados Ifes 49
Exercícios da seção: Vetores e Matrizes
Exercícios sala
1) Faça um a...
Informática, Algoritmos e Estruturas de Dados Ifes 50
Elabore um algoritmo que:
leia um conjunto de códigos (valores intei...
Informática, Algoritmos e Estruturas de Dados Ifes 51
Supermercado:
Cadastro: Faça um algoritmo para cadastrar nome (carac...
Informática, Algoritmos e Estruturas de Dados Ifes 52
Elabore um algoritmo que:
leia o número do título de eleitor de cada...
Informática, Algoritmos e Estruturas de Dados Ifes 53
Algoritmos de pesquisa
• Define-se pesquisa como a operação que perm...
Informática, Algoritmos e Estruturas de Dados Ifes 54
Pesquisa exaustiva (algoritmo)
Pesquisar o elemento Elem no vetor V ...
Informática, Algoritmos e Estruturas de Dados Ifes 55
Pesquisa sequencial (algoritmo)
Pesquisar o elemento Elem no vetor V...
Informática, Algoritmos e Estruturas de Dados Ifes 56
Pesquisa binária
• Comparar o elemento a pesquisar com o elemento qu...
Informática, Algoritmos e Estruturas de Dados Ifes 57
Pesquisa binária (algoritmo iterativo)
Pesquisar o elemento Elem no ...
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...
Informática, Algoritmos e Estruturas de Dados Ifes 72
Exercício Casa
• Ler um vetor de 50 elementos inteiros positivos, or...
Informática, Algoritmos e Estruturas de Dados Ifes 73
Estruturas de Dados - Matriz
Matriz: Informações de um mesmo tipo sã...
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] [...
Informática, Algoritmos e Estruturas de Dados Ifes 75
Ex.: Faça um algoritmo que leia uma matriz 4 X 4 e uma constante qua...
Informática, Algoritmos e Estruturas de Dados Ifes 76
Exercícios matrizes
2) Faça um algoritmo que leia 2 matrizes 3 X 5, ...
Informática, Algoritmos e Estruturas de Dados Ifes 77
Uma matriz quadrada inteira é chamada de "quadrado mágico" se
a soma...
Informática, Algoritmos e Estruturas de Dados Ifes 78
JOGO DA VELHA. Uma dada matriz 3 x 3 de caracter pode conter apenas ...
Informática, Algoritmos e Estruturas de Dados Ifes 79
Exercícios de revisão
(Condição)
Um fazendeiro vai contratar uma equ...
Informática, Algoritmos e Estruturas de Dados Ifes 80
Exercícios de revisão
(Repetição)
Construir um algoritmo para ler vá...
Informática, Algoritmos e Estruturas de Dados Ifes 81
Exercícios
(Matrizes)
1) Escrever um algoritmo para ler uma matriz (...
Informática, Algoritmos e Estruturas de Dados Ifes 82
6) Escrever um algoritmo para ler valores inteiros e preencher os
el...
Informática, Algoritmos e Estruturas de Dados Ifes 83
Modularização e Subprogramas
A modularização é uma característica mu...
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 ...
Informática, Algoritmos e Estruturas de Dados Ifes 86
Procedimentos
Um procedimento é um subalgoritmo que não retorna,
exp...
Informática, Algoritmos e Estruturas de Dados Ifes 87
Algoritmo “exemploValor”
var numero: inteiro
//procedimento para inc...
Informática, Algoritmos e Estruturas de Dados Ifes 88
Algoritmo “ExemploProcedimento”
var numero: inteiro // o número a se...
Informática, Algoritmos e Estruturas de Dados Ifes 89
Funções
Uma função é um subalgoritmo que, além de executar uma deter...
Informática, Algoritmos e Estruturas de Dados Ifes 90
ALGORITMO "Funções "
var
Valor_1,Valor_2, soma: real
FUNCAO FSoma(Re...
Informática, Algoritmos e Estruturas de Dados Ifes 91
Funções predefinidas do VISUALG (VisualgProgramacaoB) (parte1):
Abs ...
Informática, Algoritmos e Estruturas de Dados Ifes 92
Funções predefinidas do VISUALG (parte2):
Maiusc (c : caracter) :car...
Informática, Algoritmos e Estruturas de Dados Ifes 93
Exemplo:
Algoritmo "RETORNA O SOBRENOME"
var
nome, sobrenome : Carac...
Informática, Algoritmos e Estruturas de Dados Ifes 94
Exemplo 2:
Algoritmo "RETORNA UM VALOR INTEIRO“
Var
valorReal : REAL...
Informática, Algoritmos e Estruturas de Dados Ifes 95
Escopo de Variáveis
Cada subalgoritmo, além de ter suas próprias var...
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 ...
Informática, Algoritmos e Estruturas de Dados Ifes 97
Passagem de Parâmetros
Ao declarar uma função ou procedimento, é pos...
Informática, Algoritmos e Estruturas de Dados Ifes 98
Passagem de Parametros por Valor
• Apenas o valor é passado para a f...
Informática, Algoritmos e Estruturas de Dados Ifes 99
Passagem por Valor - Exemplo
algoritmo "Arredonda real"
var
Num : Re...
Informática, Algoritmos e Estruturas de Dados Ifes 100
Passagem de Parâmetros por Referência
• A função/procedimento receb...
Informática, Algoritmos e Estruturas de Dados Ifes 101
Passagem por referência - Exemplo
algoritmo "Soma 5"
var
Num : inte...
Informática, Algoritmos e Estruturas de Dados Ifes 102
Passagem por referência e valor - Exemplo
algoritmo "Soma N"
var
Nu...
Informática, Algoritmos e Estruturas de Dados Ifes 103
Exercícios:
1) Escrever um algoritmo para determinar se um determin...
Informática, Algoritmos e Estruturas de Dados Ifes 104
Registros
Registro é uma estrutura de dados não homogênea, ou
seja,...
Informática, Algoritmos e Estruturas de Dados Ifes 105
Registro
tipo tp_aluno = registro
nome: caractere
idade: inteiro
no...
Informática, Algoritmos e Estruturas de Dados Ifes 106
Vetor com múltiplos Registros
tipo tp_aluno = registro
nome: caract...
Informática, Algoritmos e Estruturas de Dados Ifes 107
algoritmo “teste registro”
tipo tp_aluno = registro
nome: caractere...
Informática, Algoritmos e Estruturas de Dados Ifes 108
Linguagem C
C foi criada por Dennis Ritchie em 1972 nos laboratório...
Informática, Algoritmos e Estruturas de Dados Ifes 109
Linguagem C – decisão: se ..senão
algoritmo "Decisão"
var
a, b:inte...
Informática, Algoritmos e Estruturas de Dados Ifes 110
Linguagem C – repetição: para
algoritmo "Para"
var
a:inteiro
inicio...
Informática, Algoritmos e Estruturas de Dados Ifes 111
Linguagem C – repetição: enquanto
algoritmo "Enquanto"
var
a:inteir...
Informática, Algoritmos e Estruturas de Dados Ifes 112
Linguagem C – entrada de dados
algoritmo "Entrada"
var a, b, c:inte...
Informática, Algoritmos e Estruturas de Dados Ifes 113
Impressão na tela:
%d Inteiro
%f Float
%c Caractere
%s String
%% Co...
Informática, Algoritmos e Estruturas de Dados Ifes 114
Operadores Aritméticos:
+ Soma (inteira e ponto flutuante)
- Subtra...
Informática, Algoritmos e Estruturas de Dados Ifes 115
Operadores Relacionais:
> Maior do que
>= Maior ou igual a
< Menor ...
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 d...
Próximos SlideShares
Carregando em…5
×

Apresentação 20130805 algoritmos

1.650 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.650
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
53
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação 20130805 algoritmos

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 23. Informática, Algoritmos e Estruturas de Dados Ifes 23 Exercício sala - listageral número 17 - fluxograma e algoritmo
  24. 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. 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. 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. 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. 28. Informática, Algoritmos e Estruturas de Dados Ifes 28 aiaiaiaiaia condição V F oioioioioiocondição V F
  29. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 58. Informática, Algoritmos e Estruturas de Dados Ifes 58 Pesquisa binária
  59. 59. Informática, Algoritmos e Estruturas de Dados Ifes 59 Pesquisa Binária
  60. 60. Informática, Algoritmos e Estruturas de Dados Ifes 60 Pesquisa Binária
  61. 61. Informática, Algoritmos e Estruturas de Dados Ifes 61 Pesquisa Binária
  62. 62. Informática, Algoritmos e Estruturas de Dados Ifes 62 Pesquisa Binária
  63. 63. Informática, Algoritmos e Estruturas de Dados Ifes 63 Pesquisa Binária
  64. 64. Informática, Algoritmos e Estruturas de Dados Ifes 64 Pesquisa Binária
  65. 65. Informática, Algoritmos e Estruturas de Dados Ifes 65 Pesquisa Binária
  66. 66. Informática, Algoritmos e Estruturas de Dados Ifes 66 Pesquisa Binária
  67. 67. Informática, Algoritmos e Estruturas de Dados Ifes 67 Pesquisa Binária
  68. 68. Informática, Algoritmos e Estruturas de Dados Ifes 68 Pesquisa Binária
  69. 69. Informática, Algoritmos e Estruturas de Dados Ifes 69 Pesquisa Binária
  70. 70. Informática, Algoritmos e Estruturas de Dados Ifes 70 Pesquisa Binária
  71. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 84. Informática, Algoritmos e Estruturas de Dados Ifes 84 Esquema de uma chamada a subalgoritmo:
  85. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

×