Escolar Documentos
Profissional Documentos
Cultura Documentos
Erlon Pinheiro
1/76
Programação de Computadores I Prof. Erlon Pinheiro
Noções de Lógica
Algoritmizando a Lógica
Conceitos e Exemplos de Algoritmos
Noções de Fluxos de Controle
Algoritmos
Exercícios de Fixação
1. Noções de Lógica
Podemos também dizer que a lógica tem em vista a “ordem da razão”. Isto dá
entender que a nossa razão pode funcionar desordenadamente. Por isso a lógica
estuda e ensina a colocar “ordem no pensamento”. Exemplos:
2/76
Programação de Computadores I Prof. Erlon Pinheiro
Exemplos:
A gaveta está fechada.
A caneta está dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.
Algo similar ocorre com a Lógica de Programação, que pode ser concebida pela
mente treinada e pode ser representada em qualquer uma das inúmeras linguagens
de programação existentes. Para escapar dessa torre de Babel (detalhes das diversas
linguagens de programação), e ao mesmo tempo, representar mais fielmente o
raciocínio da Lógica de Programação, utilizamos os Algoritmos.
3/76
Programação de Computadores I Prof. Erlon Pinheiro
4. O QUE É UM ALGORITMO?
Um algoritmo pode ser definido como uma seqüência de passos que visam atingir
um objetivo bem definido.
5. ALGORITMIZANDO A LÓGICA
Outra importância da construção dos algoritmos é que, uma vez concebida uma
solução algorítmica para um problema, esta pode ser traduzida para qualquer
linguagem de programação. Costumamos denominar esse processo de codificação.
Vamos a um Exemplo?
Algoritmo 1.1
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
4/76
Programação de Computadores I Prof. Erlon Pinheiro
Algoritmo 1.2
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
se a lâmpada não acender, então
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
Agora estamos ligando algumas ações à condição lâmpada não acender, ou seja, se
esta condição for verdadeira (lâmpada queimada) efetuaremos a troca da lâmpada,
seguindo as próximas ações:
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
Se a condição lâmpada não acender for falsa (a lâmpada está funcionando), as ações
relativas à troca da lâmpada não serão executadas, e a lâmpada (que está em bom
estado) não será trocada.
O algoritmo está correto, visto que atinge seu objetivo, porém, pode ser melhorado,
uma vez que buscamos uma escada e uma lâmpada sem saber se serão necessárias.
Algoritmo 1.3
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
5/76
Programação de Computadores I Prof. Erlon Pinheiro
Algoritmo 1.4
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
se a lâmpada não acender, então
retirar a lâmpada queimada;
colocar outra lâmpada nova;
se a lâmpada não acender, então
retirar a lâmpada queimada;
colocar outra lâmpada nova;
.
.
.
Até quando ???
Notamos que o Algoritmo 1.4 não está terminado, faltou especificar até quando será
feito o teste da lâmpada. As ações cessarão quando conseguirmos colocar uma
lâmpada que acenda; caso contrário, ficaremos testando indefinidamente.
6/76
Programação de Computadores I Prof. Erlon Pinheiro
Podemos, então, expressar uma repetição de ação sem repetir o texto que
representa a ação, assim como determinar um limite para tal repetição, com o
objetivo de garantir uma condição de parada, ou seja, que seja cessada a atividade de
testar a lâmpada nova quando esta já estiver acesa. Uma solução seria:
Algoritmo 1.5
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
enquanto a lâmpada não acender, faça
retirar a lâmpada queimada;
colocar outra lâmpada nova;
7/76
Programação de Computadores I Prof. Erlon Pinheiro
Até agora estamos efetuando a troca de uma única lâmpada, na verdade, estamos
testando um soquete (acionado por um interruptor), trocando tantas lâmpadas
quantas forem necessárias para assegurar que o conjunto funcione. O que faríamos
se tivéssemos mais soquetes a testar, por exemplo, 10 soquetes ?
Algoritmo 1.6
acionar o interruptor do primeiro soquete;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
enquanto a lâmpada não acender, faça
retirar a lâmpada queimada;
colocar outra lâmpada nova;
acionar o interruptor do segundo soquete;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
.
.
acionar o interruptor do terceiro soquete;
se a lâmpada não acender, então
.
.
acionar o interruptor do décimo soquete;
.
.
8/76
Programação de Computadores I Prof. Erlon Pinheiro
Algoritmo 1.7
ir até o interruptor do primeiro soquete.
enquanto a quantidade de soquetes testados for menor ou igual que
dez, faça
acionar o interruptor do soquete;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar a lâmpada velha;
colocar a lâmpada nova.
enquanto a lâmpada não acender, faça
retirar a lâmpada queimada;
colocar outra lâmpada nova;
ir até o interruptor do próximo soquete;
Quando a condição ( quantidade de soquetes testados for menor ou igual a dez ) for
verdadeira, as ações responsáveis pela troca ou não de um único soquete serão
executadas. caso a condição de parada seja falsa, ou seja, todos os dez soquetes já
tiverem sido trocados, nada mais será executado.
9/76
Programação de Computadores I Prof. Erlon Pinheiro
Convém enfatizar mais uma vez que um algoritmo é uma linha de raciocínio, que
pode ser descrito de diversas maneiras, de forma gráfica ou textual.
As formas gráficas são mais puras por serem mais fiéis ao raciocínio original,
substituindo um grande número de palavras por convenções de desenhos. Para fins
de ilustração mostraremos como ficaria o Algoritmo 1.7 representado graficamente
em um fluxograma tradicional (algoritmo 1.8) e em um Chapin (Algoritmo 1.9).
Algoritmo 1.8
10/76
Programação de Computadores I Prof. Erlon Pinheiro
Algoritmo 1.9
11/76
Programação de Computadores I Prof. Erlon Pinheiro
7. EXERCÍCIOS DE FIXAÇÃO
2 - Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste
em três hastes (a-b-c), uma das quais serve de suporte para três discos de tamanhos
diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada
vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre
um menor. O objetivo é transferir os três discos para outra haste.
informações:
3 discos
3 hastes
a ç õ e s :
movimentar um disco de cada vez de forma que fiquem ordenado
r e s u l t a d o :
discos transferidos e ordenados para outra haste
3. Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um
barco com capacidade para duas pessoas. Por medidas de segurança não se permite
que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a
seqüência de passos que permitiria a travessia com segurança?
12/76
Programação de Computadores I Prof. Erlon Pinheiro
informações:
3 jesuítas
3 canibais
1 barco com capacidade para 2 pessoas
a ç õ e s :
atravessar o rio com segurança
r e s u l t a d o :
3 jesuítas e 3 canibais na outra margem do rio (B)
13/76
Programação de Computadores I Prof. Erlon Pinheiro
Informação é a matéria-prima que faz com que seja necessária a existência dos
computadores, pois eles são capazes de manipular e armazenar um grande volume
de dados com alto desempenho, liberando o homem para outras tarefas onde o seu
conhecimento é indispensável.
Numérico
Exemplos:
Vejamos algumas proposições declarativas comuns, em que é usado o tipo inteiro:
Real
Os números reais podem ser positivos ou negativos e possuem parte decimal.
Exemplos:
a) Ela tem 1.73 metro de altura.
b) Meu saldo bancário é de 215.20.
c) No momento estou pesando 82.5 kg.
Observação: Nas linguagens de programação a separação entre a parte inteira e a
parte decimal de um número é feita pelo ponto (.), e a simples presença do ponto já
significa que é um número real.
Literal ou Caractere
14/76
Programação de Computadores I Prof. Erlon Pinheiro
São dados formados por caracteres (um ou mais). Esses caracteres podem ser as
letras maiúsculas, as letras minúsculas, os números e os caracteres especiais (&, #,
@, ?, +).
Exemplos:
a) Escolha o sexo: ‘M’ ou ‘F’.
b) Constava na prova: “Use somente a caneta!”;
c) Parque municipal estava repleto de placas: “Não pise na grama”.
d) Nome do vencedor é “Felisberto Laranjeira”.
2. CONSTANTES
3. VARIÁVEL
Exemplos:
A cotação do dólar, o peso de uma pessoa, o índice da inflação.
Area = r2
Area 3.14159 * (raio*raio)
4. DECLARAÇÃO DE VARIÁVEIS
15/76
Programação de Computadores I Prof. Erlon Pinheiro
locais físicos responsáveis por armazenar objetos; os objetos (que podem ser
substituídos) seriam os dados e as gavetas, as variáveis.
5. FORMAÇÃO DE IDENTIFICADORES
Os identificadores são os nomes das variáveis utilizadas nos algoritmos.
16/76
Programação de Computadores I Prof. Erlon Pinheiro
x-y
prova 2n
nota(2)
else
int
6. DECLARAÇÃO DE VARIÁVEIS
As declarações de variáveis são obrigatórias para validar os identificadores. Todas as
variáveis devem ser incluídas em uma única declaração da forma:
tipo lista de variáveis;
tipo lista de variáveis;
Onde tipo representa o conjunto de valores que podemos atribuir a essas variáveis e
as listas de variáveis são os identificadores das variáveis do mesmo tipo separados
por vírgulas.
7. TIPOS DE VARIÁVEIS
Exemplos das declarações de variáveis:
8. COMENTÁRIOS
Exemplos de comentários:
inteiro num; // variável inteira para guardar o nº de alunos
real nota_1, nota_2; /* Variáveis reais que serão utilizadas para armazenar as duas
notas do aluno. */
17/76
Programação de Computadores I Prof. Erlon Pinheiro
9. Operações aritméticas:
+ Adição
- Subtração
* Multiplicação
/ Divisão inteira e divisão real
% Resto da divisão
X + Y => 10 X / Y => 2
X - Y => 4 Y / X => 0
Y - X => - 4 Y % X => 3
X * Y => 21 X % Y => 1
X / 2.0 = 3.5 Y / 3.0 => 1.0
Exemplo:
X + Y – Z => (X + Y) – Z
X * Y % Z => (X * Y) % Z
A ordem da precedência dentro de uma expressão aritmética pode ser alterada
fazendo-se uso de parênteses. Caso tenha dúvidas quanto à ordem de
precedência de uma expressão, utilize sempre parênteses para especificar
claramente a ordem da avaliação desejada.
Exemplo:
A + B * C => A + (B * C)
Para forçar a precedência usamos os parênteses => (A + B) * C
10. Potenciação e Radiciação
Usaremos inicialmente duas funções matemáticas predefinidas para calcular a
potenciação e a radiciação.
Prioridades
Na resolução das expressões aritméticas, as operações guardam uma hierarquia
entre si.
Prioridade Operadores
1ª parênteses mais internos
2ª pot rad
3ª * / % (mod em portugol)
4ª + -
18/76
Programação de Computadores I Prof. Erlon Pinheiro
Exemplos:
Portugol C
A 2; A = 2;
B 3; B = 3;
C A + B; C = A + B;
inteiro A,D;
real B, C;
A 0;
A A + 1;
D B;
C + 1 B + C;
C 3.5;
D 2*C +6*6*2 - 3 * 4;
19/76
Programação de Computadores I Prof. Erlon Pinheiro
20/76
Programação de Computadores I Prof. Erlon Pinheiro
Construção de tabela-verdade
Os operadores lógicos são usados para dar suporte às operações lógicas básicas de E
(&&), OU (||) e NÃO (!), de acordo com a tabela-verdade. A tabela usa V para
verdadeiro e F para falso. E1 e E2 são expressões lógicas quaisquer.
E1 E2 !E1 E1 && E2 E1 || E2
V V F V V
V F F F V
F V V F V
F F V F F
n
O número de linhas de uma tabela verdade é sempre 2 onde n é o número de
expressões lógicas presente na sentença. A forma de preenchimento sempre se
dará por colunas e começa preenchendo a primeira coluna com metade V e a
outra metade F, a segunda coluna será preenchida com a metade da metade e
assim por diante. (como no exemplo anterior)
Exercício Proposto: Para cada uma das sentenças lógicas construa a respectiva
tabela-verdade:
a) E1 && !(E2 || E2)
b) !( !E1 || !(E2 && ! E3))
c) (E1 && E2) || !E3
d) !(!(!(E1 || !E2))) && !(E3||!E1)
e) !(!(!E1 || !E2)) && !(E3||!E1)
f) !(!(E1 && E2)) && !(!E3 && !E1)
g) (E1 || !E3) && (!E2 && !(E1 || E3))
21/76
Programação de Computadores I Prof. Erlon Pinheiro
Supondo que a pessoa tenha 35 anos e pese 70.0 KG a tela ficará assim:
O comando escreva sempre vai exigir o uso destes símbolos na posição onde
queremos imprimir o conteúdo da variável.
22/76
Programação de Computadores I Prof. Erlon Pinheiro
23/76
Programação de Computadores I Prof. Erlon Pinheiro
Exercícios de Fixação II
24/76
Programação de Computadores I Prof. Erlon Pinheiro
9 - Dadas as declarações:
inteiro NUM;
real SOMA, X;
caractere SIMBOLO;
Assinale os comandos de atribuição inválidos:
( ) SIMBOLO 5; ( ) SOMA NUM+2*X;
( ) X*X SOMA; ( ) TUDO SOMA;
( ) X X+1; ( ) NUM 5*SOMA+2;
( ) NUM ”*ABC*”;
25/76
Programação de Computadores I Prof. Erlon Pinheiro
Início
real nota1, nota2, media;
escreva(“Digite as duas notas: “);
leia(“%r%r”, ¬a1, ¬a2);
media (nota1 + nota2 ) / 2;
escreva(“ Media = %r “, media);
fim
Z 1.5;
escreva(“Digite um valor inteiro: “);
leia(X;
escreva(X, “ ELEVADO AO CUBO = “, X*X*X);
escreva(“Digite outro valor inteiro: “)
leia(Y);
escreva(“A soma e: , X+Y);
Z + 3 Z + 1;
X (Y + X) / 5.0;
escreva(“O valor final da expressao e: “ X);
fim
26/76
Programação de Computadores I Prof. Erlon Pinheiro
1. Introdução
Usaremos um exemplo simples para compreendermos como a
formalização em uma linguagem artificial é importante.
Exemplo Inicial
27/76
Programação de Computadores I Prof. Erlon Pinheiro
principal( )
ínicio
const <tipo> <identificador> <dado>;
<tipo> <identificador>;
<comando1>;
...
<comandon>;
fim
//Segunda Versão:
principal( )
início
real nota1, nota2, nota3, nota4, soma, media;
28/76
Programação de Computadores I Prof. Erlon Pinheiro
Exercícios Resolvidos:
RESOLUÇÃO:
principal( )
início
real largura, comprimento, altura;
escreva(“Digite os valores para largura, comprimento e altura: “);
leia(“%r%r%r%r”, &largura, &comprimento, &altura);
escreva(“ Volume = %r cm3“, largura*comprimento*altura);
fim
Tela
Memória
Digite os valores para largura, comprimento e altura: 10 3 2 <Enter>
largura: 10.0
Volume = 60.0 cm3
comprimento: 3.0
altura: 2.0
29/76
Programação de Computadores I Prof. Erlon Pinheiro
principal( )
início
const real pi = 3.1416;
real raio, area;
//Entrada de dados
escreva(“Digite o valor do raio: “);
leia (“%r”, &raio);
//Processamento de dados
area pi * (raio*raio); // ou area pi * (pot(raio,2));
// Saída de dados
escreva (“Area = %r “, area) ;
fim
3) Faça um algoritmo em Portugol que leia dois valores inteiros para as
variáveis num1 e num2, em seguida efetue as operações de adição, subtração,
multiplicação e divisão de num1 por num2, apresentando ao final os resultados
obtidos.
Resolução:
principal( )
inicio
inteiro num1, num2, soma, sub, mult, divi;
//Entrada de dados
escreva(“Digite dois valores inteiros: “);
leia(“%i%i”, &num1, &num2);
//Processamento de dados
soma num1+num2;
sub num1 - num2;
mult num1 * num2;
divi num1/num2;
//Saída de dados
escreva(“%i + %i = %i “, num1, num2, soma);
escreva(“%i - %i = %i “,num1, num2, sub);
escreva(“%i * %i = %i “,num1, num2, mult);
escreva(“%i / %i = %i “,num1, num2, divi);
fim
30/76
Programação de Computadores I Prof. Erlon Pinheiro
Resolução:
principal( )
inicio
inteiro num;
//Entrada de dados
escreva(“Digite um valor inteiro: “);
leia(“%i”, &num);
//Terceira Versão:
principal( )
inicio
inteiro num;
real quad;
//Entrada de dados
escreva(“Digite um valor inteiro: “);
leia(“%i”, &num);
//Processamento de dados
quad pot(num, 2);
//Saída de dados
escreva(“ %i ao quadrado e %r “, num, quad);
fim
31/76
Programação de Computadores I Prof. Erlon Pinheiro
Resolução:
principal( )
inicio
real celsius, f;
//Entrada de dados
escreva(“Digite a temperatura em Fahrenheit: “);
leia(“%r”, &f);
//Processamento de dados
celsius (f – 32)*(5/9.0);
//Saída de dados
escreva(“ A temperatura em Celsius e %r “, celsius);
fim
32/76
Programação de Computadores I Prof. Erlon Pinheiro
1 - Faça um algoritmo em Portugol que leia dois valores inteiros para as variáveis
num1 e num2, em seguida efetue as operações de adição, subtração, multiplicação e
divisão de num1 por num2, apresentando ao final os resultados obtidos.
6 - Faça um algoritmo em Portugol que leia dois valores para as variáveis num1 e
num2, efetuar a troca de valores de forma que a variável num1 passe a possuir o
valor da variável num2 e que a variável num2 passe a possuir o valor da variável
num1. Imprimir na tela os valores de num1 e num2 antes e depois da troca.
33/76
Programação de Computadores I Prof. Erlon Pinheiro
//Entrada de dados
escreva(“Digite o valor da prestação: “);
leia(“%r”, &valor);
escreva(“Digite o tempo de atraso em dias: “);
leia(“%i”,&tempo);
//Processamento de dados
prestação (valor * (taxa/100)*tempo)+valor;
//saída de dados
escreva(“O valor final da prestação é: %r “, prestação);
fim
9 - Faça um algoritmo que receba duas notas de um aluno e seus respectivos pesos,
calcule e imprima a média ponderada dessas notas.
Resolução:
principal( )
inicio
real nota1, nota2, media_p;
inteiro peso1, peso2;
//Entrada de dados
escreva(“Digite as duas notas: “);
leia(“%r%r”, ¬a1, ¬a2);
escreva(“Digite os pesos: “);
leia(“%i%i”, &peso1, &peso2);
//Processamento de dados
media_p (nota1*peso1 + nota2*peso2)/(peso1+peso2);
//Saída de dados
escreva(“ A media ponderada e %r “, media_p);
fim
34/76
Programação de Computadores I Prof. Erlon Pinheiro
Rastreamento
Memória Tela
Digite as duas notas: 7 8 <Enter>
nota1: 7.0 Digite os pesos: 1 2 <Enter>
nota2: 8.0 A media ponderada e 7.6
media_p: 7.6
peso1: 1
peso2: 2
principal( )
inicio
real deposito, taxa, rend, valor_final;
//Entrada de dados
escreva(“Digite o valor do deposito: “);
leia(“%r”, &deposito);
escreva(“Digite o valor da taxa de juros: “);
leia(“%r”, &taxa);
//Processamento de dados
rend deposito * (taxa/100);
valor_final deposito + rend;
//Saída de dados
escreva(“ O valor do rendimento e: %r “, rend);
escreva(“ O valor final com o rendimento e: %r “, valor_final);
fim
Faça o rastreamento
//Entrada de dados
escreva(“Digite um numero para a tabuada: “);
leia(“%i”,&num);
//Processamento e saída de dados
escreva(“A tabuada de multiplicação do numero “, num);
escreva(“ %i * 1 = %i “, num, num);
escreva(“ %i * 2 = %i “, num, 2*num);
35/76
Programação de Computadores I Prof. Erlon Pinheiro
36/76
Programação de Computadores I Prof. Erlon Pinheiro
//Entrada de dados
escreva(“Digite o valor do salario: “);
leia(“%r”, &salario);
//Processamento de dados
novo_sal salario * (reaj/100) + salario;
//Saída de dados
escreva(“ O valor do salario reajustado e: %r “, novo_sal);
fim
37/76
Programação de Computadores I Prof. Erlon Pinheiro
1. Seleção Simples
Quando precisamos testar certa condição antes de executar uma ação, usamos uma
seleção simples, que segue o seguinte modelo:
se (<condição>) então
Comando; // comando único
<condição> é uma expressão lógica que, quando inspecionada, pode gerar um
resultado falso ou verdadeiro.
Se <condição> for verdadeira, a ação primitiva sob a cláusula então (Comando) será
executada; caso contrário (<condição>) for falsa), encerra-se a seleção (fim), neste
caso sem executar nenhum comando.
Através do exemplo anterior, observamos que, quando existir apenas uma ação após
a cláusula, então basta escrevê-la; já quando precisamos colocar diversas ações é
necessário usar um bloco, delimitado por início e fim conforme o seguinte modelo:
se (<condição>) então
início
Comando-1;
Comando-2;
...
Comando-n;
fim
Exemplo:
principal ( )
inicio
real n1, n2, n3, m;
escreva(“DIGITE TRES NOTAS: “);
leia(“%r%r%r”, &n1, &n2, &n3);
m (n1 + n2 + n3) / 3;
se ( m >= 7 ) então
inicio
escreva(“APROVADO”);
escreva(“MÉDIA = %r “,m);
fim
fim
38/76
Programação de Computadores I Prof. Erlon Pinheiro
2. Seleção Composta
Quando tivermos situações em que duas alternativas dependem de uma mesma
condição, uma da condição ser verdadeira e outra da condição ser falsa, usamos a
estrutura de seleção composta. Supondo que um conjunto de ações dependa da
avaliação verdadeira uma única ação primitiva dependa da avaliação falsa, usaremos
uma estrutura de seleção semelhante ao seguinte modelo:
se (<condição>) então
início
Comando-1;
Comando-2;
....
Comando-n;
fim
senão
inicio
Comando-z1;
Comando-z2;
fim
principal ( )
inicio
inteiro num1, num2;
escreva(“Digite dois valores inteiros: “);
leia(“%i%i”, &num1, &num2);
se (num1 == num2) então
escreva(“NÚMEROS IGUAIS”);
senão
escreva(“NÚMEROS DIFERENTES”);
fim
39/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
inicio
real n1, n2, n3, m;
escreva(“DIGITE TRÊS NOTAS: “);
leia(“%r%r%r”, &n1, &n2, &n3);
m (n1 + n2 + n3) / 3;
se (m >= 7) então
inicio
escreva(“APROVADO”);
fim
senão
inicio
escreva(“ REPROVADO”);
fim
escreva(“MÉDIA = %r “,m);
fim
40/76
Programação de Computadores I Prof. Erlon Pinheiro
3. Seleção Encadeada
41/76
Programação de Computadores I Prof. Erlon Pinheiro
42/76
Programação de Computadores I Prof. Erlon Pinheiro
Exercícios de Fixação IV
1. Faça um algoritmo para ler três valores numéricos inteiros distintos e determinar
o menor deles.
Rastreamento
Memória Tela
sexo: ‘F’ Digite seu sexo (M ou F ): F <Enter>
idade: 27 Digite sua idade: 27 <Enter>
Atingiu a maioridade!
sexo: ‘f’ Digite seu sexo (M ou F ): f <Enter>
idade: 15 Digite sua idade: 15 <Enter>
Nao atingiu a maioridade.
sexo: ‘M’ Digite seu sexo (M ou F ): M <Enter>
idade: 28 Digite sua idade: 28 <Enter>
Atingiu a maioridade!
sexo: ‘m’ Digite seu sexo (M ou F ): m <Enter>
idade: 14 Digite sua idade: 14 <Enter>
Nao atingiu a maioridade.
sexo: ‘$’ Digite seu sexo (M ou F ): $ <Enter>
idade: 2 Digite sua idade: 2 <Enter>
Sexo invalido.
43/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
início
se (b1) então
início
c1;
fim
senão
início
se (b2) então
início
se (b3) então
início
c2;
fim
senão
início
c3;
c4;
fim
fim
c5;
fim
fim
4. Faça um algoritmo que leia dois números, some-os e imprima o resultado caso a
soma seja maior que 10.
5. Faça um algoritmo que leia um número inteiro e imprima a mensagem ‘Número par!’
caso ele seja divisível por 2.
6. Faça um algoritmo que leia 2 números inteiros para as variáveis A e B. Caso A seja
maior que B e B seja par, efetue a troca dos valores de forma que a variável A passe a
conter o valor da variável B e, a variável B passe a conter o valor da variável A.
7. Faça um algoritmo que leia um número inteiro positivo e imprima uma mensagem
dizendo se ele é par ou impar.
44/76
Programação de Computadores I Prof. Erlon Pinheiro
8. Faça um algoritmo que leia dois valores numéricos inteiros e distintos. Apresente a
diferença do maior pelo menor na tela.
fim
10. Dado o algoritmo abaixo responda qual o valor de Result após a sua execução?
principal ( )
início
real num1;
inteiro num2, result;
num1 1.5;
num2 3;
num1 num1 + 1;
se ( (num1+2<= num2) ou ((num1 + num2 > 5) ou (não (num1+pot(num2,2) / num1 + num2>=4 ))) então
inicio
result 0;
fim
senão
inicio
result 1;
fim
fim
11. Faça um algoritmo que leia dois valores numéricos e imprima o maior. Caso os
números sejam iguais imprima a mensagem ‘Números iguais!’.
12. Faça um algoritmo que leia três números distintos e imprima o maior.
45/76
Programação de Computadores I Prof. Erlon Pinheiro
14. Faça um algoritmo que efetue a leitura de três valores numéricos reais distintos e
apresente os valores lidos em ordem crescente.
46/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
início
/* declaração de variáveis */
inteiro num;
leia ( “%i”, &num);
se (num > 0) então
escreva (“numero positivo”)
senão
se (num < 0) então
escreva (“numero negativo”)
senão
escreva (“zero”);
fim
18. Uma empresa decide dar um aumento de 4% aos funcionários cujo salário é
inferior a 500 reais. Escreva um algoritmo que receba o salário de um funcionário e
imprima o valor do salário reajustado ou uma mensagem caso o funcionário não tenha
direito ao aumento.
19. Faça um algoritmo que verifique a validade de uma senha fornecida pelo
usuário. A senha correta é o número: 12345. O algoritmo deve imprimir mensagem de
permissão ou negação de acesso.
20. Faça um algoritmo que receba a idade de uma pessoa e imprima mensagem de
maioridade ou não. Assuma que a maioridade ocorre somente aos 21 anos.
21. Faça um algoritmo que receba a altura e o sexo de uma pessoa, calcule e
imprima o seu peso ideal, utilizando as fórmulas abaixo. Assuma M ou F como sendo os
valores válidos para o sexo de uma pessoa.
para homens: (72.7 * ALTURA) – 58
para mulheres: (62.1 * ALTURA) – 44.7
47/76
Programação de Computadores I Prof. Erlon Pinheiro
Quando um conjunto de valores discretos precisa ser testado e ações diferentes são
associadas a esses valores, estamos diante de uma seleção encadeada homogênea do
tipo se – senão – se. Como esta situação é bastante freqüente na construção de
algoritmos que dependem de alternativas, utilizaremos uma estrutura específica
para estes casos, a seleção de múltipla escolha.
escolha(X)
inicio
caso V1 : C1; pare;
caso V2 : C2; pare;
caso V3 : C3; pare;
caso V4 : C4;
fim
Caso o contéudo da variável seletora X seja igual ao valor Vn, então, o comando Cn
será executado; caso contrário, serão inspecionados os outros casos até ser
encontrada uma igualdade ou terminarem os caso.
Para executramos um comando que possui mais de um valor em que se verifica sua
necessidade, agrupamos todos esses valores em único caso. E, para executarmos um
comando que se verifica com todos os outros valores, exceto os discriminados caso a
caso, incluímos outra situação: caso contrário.
escolha(X)
inicio
caso V1 : C1; pare;
caso V2: caso V3 : C2; pare;
caso V4 : C3; pare;
caso V5 : C4; pare;
caso contrário: C5;
fim
48/76
Programação de Computadores I Prof. Erlon Pinheiro
Exemplos
1 – Construa um programa que leia um valor numérico inteiro e uma opção de operação
( 1 – Raiz Quadrada, e 2 – Valor ao Quadrado) a qual o número deve ser submetido.
principal ( )
inicio
inteiro num, op;
real resultado;
escreva(“Digite o valor inteiro: “);
leia(“%i”, &num);
escreva(“Escolha uma opção: “);
escreva(“1: Raiz ou 2: Quadrado: “);
leia(“ %c”, &op);
escolha(op)
inicio
caso 1: resultado rad(num); pare;
caso 2: resultado pot(num, 2);
fim
escreva(“O resultado é %r ”, resultado);
fim
Outra versão:
principal ( )
inicio
inteiro num, op;
escreva(“Digite o valor inteiro: “);
leia(“%i”, &num);
escreva(“Escolha uma opção: “);
escreva(“1: Raiz ou 2: Quadrado: “);
leia(“ %c”, &op);
escolha(op)
inicio
caso 1: escreva(“ O resultado é %r “,rad(num));
pare;
caso 2: escreva(“O resultado é %r “,pot(num, 2));
pare;
caso contrário: escreva(“Opção Inválida!!!!”);
fim
fim
49/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
inicio
caractere car;
escreva(“Digite um caractere: “);
leia(“ %c”, &car);
escolha (car)
inicio
caso ‘A’: caso ’E’: caso ‘I’: caso ‘O’: caso‘U’: escreva(“Vogal maiúscula”);
pare;
caso ‘0’: caso ‘1’: caso ‘2’: caso ‘3’: caso ‘4’: caso ‘5’: caso ‘6’:
caso ‘7’: caso ‘8’: caso ’9’: escreva(”Valor numérico”);
pare;
caso ‘+’: caso ‘-’: caso ‘*’: caso ‘/’: escreva(“Operador aritmético”);
pare;
caso contrário : escreva(“Você digitou outro caractere”);
fim
fim
Exercícios de Fixação V
0000000
50/76
Programação de Computadores I Prof. Erlon Pinheiro
Resolução:
principal ( )
inicio
caractere car;
//Entrada de dados
escreva(“Digite um caractere: “);
leia(“ %c”, &car );
//Processamento e saida de dados
escolha( car )
inicio
caso ‘A’: caso ‘a’: caso ‘E’: caso ‘e’: caso ‘O’: caso ‘o’: caso ‘U’: caso ‘u’:
caso ‘ I’: caso ‘i’: escreva(“ O caracter e uma vogal!”);
pare;
caso contrario: escreva(“O caractere lido não e uma vogal!”);
fim
fim
3. Faça um algoritmo que leia o mês e o ano (em números) e exiba o número de dias
do mês digitado.
Obs.: meses com 30 dias: 4, 6, 9, 11
meses com 31 dias: 1, 3, 5, 7, 8, 10, 12
fevereiro possui 28 dias em ano não bissexto e 29 dias em ano bissexto.
Um ano é identificado como bissexto quando for divisível somente por 4, ou
seja, ANO % 4 == 0. Se Ano também for divisível por 100 ele deve ser
divisível por 400. Exemplos de anos bissextos: 1996, 2000, 2004, 2012, 800,
1200, etc.
Anos que não são bissexto: 100, 700, 1000, 1999, 2014, etc.
4. Faça um algoritmo que leia o número de um mês e imprima o nome do mês por
extenso.
5. Faça um algoritmo que leia uma data (dia, mês e ano) em valores numéricos e a
imprima por extenso como mostrado no exemplo abaixo:
Lido: 21 04 1970
Escrito: 21 de abril de 1970
51/76
Programação de Computadores I Prof. Erlon Pinheiro
7. Faça um algoritmo que receba um código de origem (número inteiro) e imprima a sua
procedência. A procedência obedece à tabela abaixo. Caso um código inválido seja
digitado imprima uma mensagem de erro.
principal ( )
inicio
inteiro codigo;
//Entrada de dados
escreva(“ Digite o codigo da região: “);
leia(“%i”, &codigo);
//Processamento e saída de dados
escolha( codigo )
inicio
caso 1: escreva(“Procedencia: Regiao Sul”);
pare;
caso 2: escreva(“Procedencia: Regiao Norte”);
pare;
caso 3: escreva(“Procedencia: Regiao Leste”);
pare;
caso 4: escreva(“Procedencia: Regiao Oeste”);
pare;
caso 5: caso 6: escreva(“Procedencia: Regiao Nordeste”);
pare;
caso 7: caso 8: caso 9: escreva(“Procedencia: Regiao Sudeste”);
pare;
caso contrário: se ( (codigo>=10)&&(codigo<=20)) então
escreva(“Procedencia: Regiao Centro-Oeste”);
senão
se (( codigo>=21)&&(codigo<=30))
escreva(“Procedencia: Regiao Nordeste”);
senão
escreva(“Codigo invalido”);
52/76
Programação de Computadores I Prof. Erlon Pinheiro
fim //escolha
fim//do algoritmo
10. Uma companhia de seguros tem três categorias de seguros baseadas na idade e
ocupação do segurado. Somente pessoas com pelo menos 18 anos e não mais de 70 anos
podem adquirir apólices de seguros. As classes de ocupações foram definidas em três
grupos de risco. A tabela a seguir fornece as categorias em função da faixa de idade e do
grupo de risco:
Faça um algoritmo que receba a idade (um número inteiro) e o grupo de risco
(representados pelos caracteres: `b`: baixo`; `m`: médio ou `a`: alto) e determine e
imprima o código do seguro.
53/76
Programação de Computadores I Prof. Erlon Pinheiro
i 1;
escreva(“ Números inteiros de 1 até %i: “, maior);
54/76
Programação de Computadores I Prof. Erlon Pinheiro
Exemplo 2: Ler uma seqüência de salários terminada por um salário menor que
zero. Para cada salário, mostrar o novo salário reajustado e, ao final, a média dos
salários reajustados. O valor do reajuste deve ser lido no início do algoritmo.
principal ( )
início
real salario, reajuste, novo_sal, tot_reaj, media;
inteiro num_sal;
tot_reaj 0;
num_sal 0;
escreva (“Entre com o reajuste : “);
leia (“%r”, &reajuste);
escreva (“Entre com o salário ou salário negativo para parar: “);
leia (“%r”, &salario);
enquanto ( salario > 0) faça
início
novo_sal salario + (salario * reajuste) / 100;
tot_reaj tot_reaj + novo_sal;
num_sal num_sal + 1;
escreva (“Salário reajustado: %r “, novo_sal);
escreva (“Entre com o salário ou salário negativo para parar: “);
leia (“%r”, &salario);
fim
se (num_sal > 0) então
início
media tot_reaj / num_sal;
escreva (“Média dos salários = %r “, media);
fim
senão
escreva (“Não existem dados a serem processados”);
fim
55/76
Programação de Computadores I Prof. Erlon Pinheiro
Exemplo 3: Ler uma seqüência de vogais terminada por ponto e exibir os totais
de vogais e não vogais encontradas.
Resolução:
principal ( )
início
const caractere fim = `.`;
caractere car;
inteiro cont_a, cont_e, cont_i, cont_o, cont_u, outros;
56/76
Programação de Computadores I Prof. Erlon Pinheiro
Para realizar uma repetição com teste no final, utilizamos a estrutura faça
enquanto, que permite que o bloco ou ação primitiva seja repetido enquanto uma
determinada condição seja verdadeira. O modelo genérico desse tipo de repetição
é o seguinte:
faça
início
<comando1>;
<comando2>;
...
<comandon>;
fim
enquanto(<Condição>);
A seqüência será executada repetidamente até que a condição seja falsa. Esta
condição deve ser uma expressão que retorne um valor lógico.
Exemplo 5: Mostrar os números inteiros de 1 a 10, sendo que para cada número
mostrado o algoritmo deve aguardar que sejam pressionadas a tecla C e ENTER
para continuar.
57/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
início
const inteiro maior = 10;
inteiro i ;
caractere tecla ;
i 1;
escreva(“ Números inteiros de 1 até %i: “, maior);
faça
inicio
escreva (“%i “, i);
i i+ 1;
faça
inicio
escreva (“tecle [C] para continuar…”);
leia (“ %c”, &tecla);
fim
enquanto ((tecla != ‘c’ ) e (tecla != ‘C’));
fim
enquanto (i <= maior);
fim
Nas estruturas de repetição vistas até agora, ocorrem casos em que se torna
difícil determinar o número de vezes em que o bloco de comandos será
executado. Sabemos que ele será executado enquanto uma condição for
satisfeita. A estrutura para é diferente, já que sempre repete a execução do bloco
de comandos um número determinado de vezes, pois ela não prevê uma condição
e possui limites fixos.
Modelo genérico:
para (< inicialização da var> ; <condição de repetição> ; <incremento da var>)
início
<comando1>;
<comando2>;
...
<comandon>;
fim
O comando para é utilizado quando se deseja executar uma seqüência de
comando repetidamente, um número conhecido e fixo de vezes.
58/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
início
const inteiro maior = 10;
inteiro i;
escreva(“ Números inteiros de 1 até %i: “, maior);
para( i 1 ; i<= maior ; i i + 1)
início
escreva (“ %i “, i);
fim
escreva(“ Números inteiros de %i até 1: “, maior);
para (i 10 ; i>= 1 ; i i -1)
início
escreva (“ %i “, i); //neste caso, o início/fim são dispensáveis (Apenas um comando)
fim
fim
59/76
Programação de Computadores I Prof. Erlon Pinheiro
04. Faça um algoritmo que apresente um menu de opções (apresentado abaixo) para
o cálculo das operações entre dois números reais lidos previamente:
Programa Calculadora
[1] – adição
[2] – subtração
[3] – multiplicacao
[4] – divisão
[5] – sair do programa
Escolha uma opcao:
Possibilitar ao usuário escolher a operação desejada, mostrar o resultado e voltar ao
menu de opções. O programa só deve permitir a saída se o usuário teclar 5.
Calcule e imprima:
total vendido naquele dia, com todos os códigos juntos;
total vendido naquele dia em cada um dos códigos.
Para encerrar a entrada de dados, digite o valor da mercadoria zero.
Resolução:
60/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
inicio
inteiro num, soma_pos 0, soma_neg 0, soma_total;
//Entrada e processamento de dados
faça
inicio
escreva(“Digite um numero inteiro ou 0 para parar: “);
leia(“%i”, &num);
se ( num != 0 ) entao
inicio
se ( num > 0 ) entao
soma_ pos soma_pos + num;
senao
soma_neg soma_neg + num;
fim // fim se/entao
fim // fim do bloco faça/enquanto
enquanto ( num != 0 );
soma_total soma_pos + soma_neg;
//Saída de dados
escreva(“Soma dos positivos: %i “, soma_pos);
escreva(“Soma dos negativos: %i “, soma_neg);
escreva(“Soma Total: %i “, soma_total);
fim
02. Faça um algoritmo que receba a idade e a altura de várias pessoas, calcule e
imprima a média das alturas das pessoas com mais de 50 anos. Para encerrar a
entrada de dados, digite idade <= zero.
61/76
Programação de Computadores I Prof. Erlon Pinheiro
Resolução:
principal ( )
inicio
inteiro num, fat 1, i;
//Entrada de Dados com tratamento de erro
faça
inicio
escreva(“Digite um numero inteiro >=0: “);
leia(“%i”, &num);
se ( num < 0 ) então
escreva(“Numero Invalido!”);
fim
enquanto( num < 0 );
//Processamento de dados
para( i 2; i < = num; i i + 1 )
fat fat * i ;
//Saída de dados
escreva ( “%i ! = %i “, num, fat);
fim
03. Faça um algoritmo que receba a idade e o estado civil : C - casado, S - solteiro, V
- viúvo e D - desquitado, de 10 pessoas. Calcule e imprima:
62/76
Programação de Computadores I Prof. Erlon Pinheiro
Rastreamento
Memória Tela
i: 1, 2, 3, 4, 5, 6, Digite um numero para a tabuada: 2 <Enter>
7, 8, 9, 10, 11 2* 1=2
num: 2 2* 2=4
2* 3=6
2* 4=8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20
Exercícios de Fixação VI
1. Faça um algoritmo que imprima todos os números inteiros no intervalo [0, 100].
6. Faça um algoritmo que leia uma seqüência de números inteiros positivos (um
por vez), e verifique se eles são pares ou impares.
Obs: - Use uma marca (um flag) para a saída do comando de repetição, uma vez que o
número de repetições não é conhecido.
63/76
Programação de Computadores I Prof. Erlon Pinheiro
10. Faça um algoritmo para calcular o valor da equação abaixo. Onde o valor de n
será lido.
n
2
S 6
k 1
k
11. Faça um algoritmo que leia um conjunto de 30 matrículas dos vendedores de
uma firma comercial, juntamente com os respectivos totais de vendas diárias e
verifique quantos deles estão na faixa compreendida entre R$500.00 e R$1500.00.
64/76
Programação de Computadores I Prof. Erlon Pinheiro
12. Faça um algoritmo que leia uma seqüência de N (o valor de N é lido durante a
execução do algoritmo) conjuntos de dados, cada conjunto contendo a conta do
correntista de uma caderneta de poupança e seu respectivo saldo médio.
Imprima:
a) o total de clientes bons, clientes que possuem o saldo médio entre 500 e 1000
reais;
b) o total de clientes razoáveis, clientes que possuem o saldo médio menor 500
reais;
c) o número da conta com maior saldo médio.
13. Faça um algoritmo que leia 80 números reais, imprima o menor e o número de
vezes que ele aparece.
Resolução:
principal ( )
inicio
real num, menor;
inteiro vezes , i;
65/76
Programação de Computadores I Prof. Erlon Pinheiro
15. Faça um algoritmo que leia uma seqüência de dados contendo a matrícula e a
medida da altura dos funcionários de uma empresa e imprima:
altura média dos funcionários;
o total de funcionários baixos (altura inferior a 1.55 m); e
o total de funcionários de altura mediana (1.55m <= Altura <= 1.75m).
Obs: - utilize uma marca (um flag) para indicar o final da entrada de dados.
principal ( )
inicio
inteiro matricula, idade, cor_olhos, cor_cab;
real altura, peso;
caractere sexo;
faca
inicio
66/76
Programação de Computadores I Prof. Erlon Pinheiro
17. Faça um algoritmo à ser fornecido ao Detran para provimento das informações
abaixo descritas, referentes a acidentes em estradas:
percentagem de motoristas não-habilitados;
percentagem de homens no volante; e
percentagem de motoristas inexperientes (menos de 20 anos).
67/76
Programação de Computadores I Prof. Erlon Pinheiro
18. Faça um algoritmo que teste a validade de uma senha digitada no teclado. A
digitação deve ser refeita até que a senha correta seja digitada ou o número de
tentativas seja maior que 5. A senha correta é o número 12345.
19. Faça um algoritmo que tendo lido uma vogal minúscula imprima sua
correspondente maiúscula. Repita a leitura quantas vezes for necessário até que
uma vogal maiúscula seja digitada como entrada.
20. Faça um algoritmo que leia um número inteiro no intervalo [1, 12] e imprima o
nome do mês correspondente. Garanta que somente números no intervalo [1, 12]
serão aceitos.
21. Faça um algoritmo que imprima a soma de todos os inteiros no intervalo [5, 30].
22. Faça um algoritmo que leia N notas, N é lido, calcule e imprima a média
aritmética entre elas.
24. Dada a série 2 3 4 9 16 29 54 .... Faça um algoritmo que leia os três primeiros
termos e em seguida imprima os próximos 20 termos.
27. A conversão de graus Farenheit para Celsius é obtida por C = 5/9*(F-32). Faça um
algoritmo que calcule e escreva uma tabela de equivalência entre graus Celsius e
graus Farenheit, com os valores variando de 1 em 1 de 50 a 65 graus Farenheit.
68/76
Programação de Computadores I Prof. Erlon Pinheiro
28. Uma empresa decidiu fazer um levantamento dos seus 500 funcionários. Faça um
algoritmo que leia para cada funcionário a idade, o sexo (F, f, m ou M),
experiência de mais de 3 anos no serviço (S, s, n ou N). Calcule e escreva:
o número de funcionários do sexo feminino;
o número de funcionários do sexo masculino;
a idade média dos homens com mais de 3 anos de experiência no serviço;
a porcentagem dos homens com mais de 45 anos entre o total de homens;
o número de mulheres com idade inferior a 35 anos com mais de 3 anos
de experiência; e
a menor idade entre as mulheres com experiência no serviço.
30. Faça um algoritmo que receba 2 notas de 10 alunos. Calcule para cada aluno sua
média e imprima uma mensagem de acordo com a tabela abaixo:
Média Mensagem
Abaixo de 3 Aluno Reprovado
Entre 3 e 7 Aluno de Recuperação
Maior ou igual a 7 Aluno Aprovado
69/76
Programação de Computadores I Prof. Erlon Pinheiro
Vetores
Tipos Estruturados
Variáveis Compostas Homogêneas
Variáveis Compostas Unidimensionais – VETORES
1. Vetores
Retornando ao conceito de informações e tipos de informação, podemos notar que
foi feita uma divisão imaginária, a fim de tornar mais simples a classificação das
informações. Talvez alguns já tenham notado que a quantidade de tipos de dados
primitivos não é suficiente para representar toda e qualquer informação que possa
surgir. Portanto, em muitas situações, esses recursos são escassos, o que poderia ser
suprido se existissem mais tipos de dados ou, ainda melhor, se esses tipos pudessem
ser “construídos”, criados, à medida que se fizessem necessários.
2. Tipos Estruturados
São organizações de dados construídas a partir da composição dos tipos primitivos
já existentes (caractere, inteiro, real). Esses novos tipos podem armazenar um
conjunto de dados conhecidos como variáveis compostas. As variáveis que
armazenam esses tipos de dados podem ser classificadas em: variáveis compostas
homogêneas e variáveis compostas heterogêneas.
Exemplo:
real media[40];
ou usando uma constante:
70/76
Programação de Computadores I Prof. Erlon Pinheiro
media:
0 1 2 3 4 5 6 ... ... 39
8.0 7.0 5.5 9.5 6.4 9.9 1.0 4.8
71/76
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
início
const inteiro qn = 5; // Quantidade de números
real media, numeros[qn], soma;
inteiro i, cont;
cont 0; soma 0; // Inicialização das variáveis contadora e
// acumuladora
media soma/qn;
escreva(“ A média dos números é: %r “, media);
// Processamento de dados
para (i 0; i<TAM; i i+1)
vet_r[i] vet_a[i] + vet_b[i];
72/76
Programação de Computadores I Prof. Erlon Pinheiro
// Saída de dados
escreva (“ Vetor soma: “);
para (i 0; i<TAM; i i+1)
escreva(“ %i”, vet_r[i]);
fim
Exercícios Propostos:
1) Dado um vetor contendo 10 elementos numéricos elabore um algoritmo que
verifique se outro valor dado pertence ou não ao vetor, se pertencer exibir quantas
vezes ele aparece no vetor. Caso contrário, mostrar uma mensagem informando que
o número não está no vetor.
73/76
Programação de Computadores I Prof. Erlon Pinheiro
0 1
8 7
vet_b:
0 1 2
17 13 55
vet_c:
0 1 2 3 4
8 7 17 13 55
Vet_b:
0 1 2 3 4 5 6 ... ... 99
16 7 10 9 12 9 2 4
74/76
Programação de Computadores I Prof. Erlon Pinheiro
1 2 3 4 5 ... 100
5 20 10 8 54 ... 4.5
onde, a posição 1 armazena o preço da mercadoria identificada pelo número 1, e
assim por diante.
Faça um algoritmo que tendo lido uma tabela com o formato acima imprima o
número das mercadorias cujo preço é maior que 5 reais.
8. Faça um algoritmo que tendo lido um vetor VET de 10 números inteiros positivos,
crie um novo vetor VETPAR com os elementos pares do vetor VET. Antes de
preencher o vetor VETPAR com os números pares de VET faça com que todos os
componentes de VETPAR recebam o valor zero.
Exemplo:
0 1 2 3 4 5 6 7 8 9
Vetor VET 2 9 7 5 10 4 3 1 6 21
=
0 1 2 3 4 5 6 7 8 9
Vetor VETPAR 2 10 4 6 0 0 0 0 0 0
=
9. Faça um algoritmo que leia dois vetores de 10 elementos do tipo real. Intercale os
elementos destes dois vetores criando um novo vetor de 20 elementos.
Exemplo:
Vetor1
0 1 2 3 4 5 6 7 8 9
2 9 7 5.5 10 4 3 -1 6 21
Vetor2
0 1 2 3 4 5 6 7 8 9
32 -4 12 6 90 -4 5 43 27 82
Vetor criado a partir dos anteriores
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
2 32 9 -4 7 12 5.5 6 10 90 4 -4 3 5 -1 43 6 27 21 82
75/76
Programação de Computadores I Prof. Erlon Pinheiro
0 1 2 3 4
2 9 7 5 1
Vetor2
0 1 2 3 4
2 -4 2 7 5
12. Uma empresa comercializa uma peça especial para a fábrica da Ferrari. O preço
da peça é determinado mensalmente de acordo com uma tabela anual (vetor). Faça
um programa C que receba a quantidade de peças vendidas por MÊS e armazene
essas quantidades em um vetor. Receba também o preço que a peça foi
comercializada e armazene esses preços em outro vetor. Em seguida o programa
deve: (a) Calcular e mostrar o total de peças vendidas e (b) calcular e mostrar o
faturamento bruto total da empresa em um ano (quantidade * preço).
76/76