Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
Representação Lógica
Linguagem natural
Linguagem Algorítmica
(expressão organizada, com sintaxe, mas foco na lógica e não na sintaxe)
1
Exemplo de Algoritmo
Programa
2
Representação Gráfica de Algoritmos
3
Exemplo
A <- 3.14159 * r ** 2
fim
4
Alguns tipos de Dados
Variáveis
r
5,0
A 78,5
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
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
6
Resolução de Problemas por meio dos
Computadores
Problema Computacional
Processamento
Dados de Dados de
Entrada Saída
7
Exemplo de Problema
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
9
Estrutura de tomada de decisões
Relacionais
< menor
> maior
<= menor ou igual
>= maior ou igual
<> diferente
Lógicos
E, OU e NÃO
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
11
Exercício sala - listageral número 17 - fluxograma e
algoritmo
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
13
Estrutura de tomada de decisões (cont.)
se condição1 então
aiaiaiaiaia (condição verdadeira)
senão
se condição2 então
oioioioioio (condição2 verdadeira)
fim_se
fim_se
V
condição
F
aiaiaiaiaia
V
condição oioioioioio
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%
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
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
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
16
Laços ou malhas de repetição
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
F
condição
Enquanto condição faça
V
aiaiaiaiaia
aiaiaiaiaia
oioioioioio
oioioioioio
fim_enquanto
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
..... ...... ......
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.
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
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.
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.
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.
Subprogramas
32
Funções predefinidas do VISUALG (VisualgProgramacaoB) (parte1):
33
Exemplo:
Exemplo 2:
34
ALGORITMO "Funções Personalizadas"
var
Valor_1,Valor_2, soma: real
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
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
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.
Exemplo de Procedimento
Algoritmo “ExemploProcedimento”
var numero: inteiro // o número a ser lido
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
Aluno:
nome, idade, nota
Registro
leia (aluno.nome)
37
Vetor com múltiplos Registros
tipo tp_aluno = registro
nome: caractere
idade: inteiro
nota:real
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.
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 }
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);
}
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
41
Operadores Aritméticos:
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
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.
43