Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação de
Computadores
Usando Algoritmos como
preparação para a Linguagem C
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:
1/80
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.
2/80
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
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.
3/80
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.
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.
4/80
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.
5/80
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;
6/80
Programação de Computadores I Prof. Erlon Pinheiro
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;
.
.
7/80
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;
8/80
Programação de Computadores I Prof. Erlon Pinheiro
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
9/80
Programação de Computadores I Prof. Erlon Pinheiro
Algoritmo 1.9
10/80
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
informações:
3 discos
3 hastes
ações:
movimentar um disco de cada vez de forma que fiquem ordenado
resultado:
discos transferidos e ordenados para outra haste
11/80
Programação de Computadores I Prof. Erlon Pinheiro
informações:
3 jesuítas
3 canibais
1 barco com capacidade para 2 pessoas
ações:
atravessar o rio com segurança
resultado:
3 jesuítas e 3 canibais na outra margem do rio (B)
12/80
Programação de Computadores I Prof. Erlon Pinheiro
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.
13/80
Programação de Computadores I Prof. Erlon Pinheiro
Literal ou Caractere
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.
14/80
Programação de Computadores I Prof. Erlon Pinheiro
Area = r2
Area 3.14159 * (raio*raio)
4. DECLARAÇÃO DE VARIÁVEIS
5. FORMAÇÃO DE IDENTIFICADORES
Os identificadores são os nomes das variáveis utilizadas nos algoritmos.
As regras básicas para a formação dos identificadores são:
Podem possuir qualquer tamanho. Entretanto, apenas os 32 primeiros
caracteres são utilizados pelo compilador C.
Os caracteres que você pode utilizar na formação dos identificadores são:
os números, as letras maiúsculas, as letras minúsculas e o caractere
sublinhado (_);
Compilador C faz diferença entre letras maiúsculas e minúsculas;
portanto, o identificador NUM é exatamente diferente dos identificadores
num, Num (aliás, em C todos esses identificadores seriam diferentes);
O primeiro caractere deve ser sempre uma letra;
Não são permitidos espaços em branco e caracteres especiais (@, $, +, -,
%, !);
Não podemos usar as palavras reservadas nos identificadores.
15/80
Programação de Computadores I Prof. Erlon Pinheiro
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:
real salario, nota_1;
inteiro matricula, contador;
caractere nome;
16/80
Programação de Computadores I Prof. Erlon Pinheiro
8. COMENTÁRIOS
Os comentários não são interpretados pelo compilador, servem apenas para
esclarecer o programador, são excelentes instrumentos de documentação e
devem sempre estar entre /* ......... */. Ou ainda pode-se usar // para
comentar o resto da linha.
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/80
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
Exemplo:
X + Y – Z => (X + Y) – Z
X * Y % Z => (X * Y) % Z
A + B * C => A + (B * C)
Para forçar a precedência usamos os parênteses => (A + B) * C
18/80
Programação de Computadores I Prof. Erlon Pinheiro
Prioridades
Exemplos:
Portugol C
A 2; A = 2;
B 3; B = 3;
C A + B; C = A + B;
19/80
Programação de Computadores I Prof. Erlon Pinheiro
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;
20/80
Programação de Computadores I Prof. Erlon Pinheiro
21/80
Programação de Computadores I Prof. Erlon Pinheiro
Construção de tabela-verdade
22/80
Programação de Computadores I Prof. Erlon Pinheiro
23/80
Programação de Computadores I Prof. Erlon Pinheiro
24/80
Programação de Computadores I Prof. Erlon Pinheiro
Exercícios de Fixação II
25/80
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*”;
26/80
Programação de Computadores I Prof. Erlon Pinheiro
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
27/80
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
28/80
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;
29/80
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
30/80
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
31/80
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);
//Saída de dados
escreva(“ %i ao quadrado e %i “, num, quad);
fim
//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
32/80
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
33/80
Programação de Computadores I Prof. Erlon Pinheiro
34/80
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
//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
35/80
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
36/80
Programação de Computadores I Prof. Erlon Pinheiro
37/80
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
38/80
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, o comando sob a cláusula se/então (Comando)
será executada; caso contrário (<condição>) for falsa), encerra-se a seleção
(fim), neste caso sem executar nenhum comando. Obs.: A palavra então está
sublinhada pois será opcional escrevê-la.
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
39/80
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
40/80
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
41/80
Programação de Computadores I Prof. Erlon Pinheiro
3. Seleção Encadeada
42/80
Programação de Computadores I Prof. Erlon Pinheiro
43/80
Programação de Computadores I Prof. Erlon Pinheiro
Exercícios de Fixação IV
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.
44/80
Programação de Computadores I Prof. Erlon Pinheiro
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.
45/80
Programação de Computadores I Prof. Erlon Pinheiro
7. Faça um algoritmo que leia um número inteiro positivo e imprima uma mensagem
dizendo se ele é par ou impar.
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!’.
46/80
Programação de Computadores I Prof. Erlon Pinheiro
12. Faça um algoritmo que leia três números distintos e imprima o maior.
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.
47/80
Programação de Computadores I Prof. Erlon Pinheiro
48/80
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
49/80
Programação de Computadores I Prof. Erlon Pinheiro
escolha(X)
inicio
caso V1 : C1; pare;
caso V2 : C2; pare;
caso V3 : C3; pare;
caso V4 : C4;
fim
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
50/80
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(“ %i”, &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(“ %i”, &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
51/80
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
52/80
Programação de Computadores I Prof. Erlon Pinheiro
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.
Resolução:
principal( )
inicio
inteiro mês, ano;
//Entrada de dados
escreva(“Digite o mês e o ano em números: “);
leia(“%i%i”, &mês, &ano);
53/80
Programação de Computadores I Prof. Erlon Pinheiro
se (ano % 100 == 0 )
inicio
se(ano % 400==0)
escreva(“Ano Bissexto, mês com 29 dias”);
senão
escreva(“Mês com 28 dias”);
fim
senão
escreva(“Ano Bissexto, mês com 29 dias”);
fim
senão
escreva(“Mês com 28 dias”); pare;
caso contrário: escreva(“Mês Invalido!”);
fim
fim
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
54/80
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”);
fim //escolha
fim//do algoritmo
55/80
Programação de Computadores I Prof. Erlon Pinheiro
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:
56/80
Programação de Computadores I Prof. Erlon Pinheiro
57/80
Programação de Computadores I Prof. Erlon Pinheiro
58/80
Programação de Computadores I Prof. Erlon Pinheiro
caractere car;
inteiro cont_a, cont_e, cont_i, cont_o, cont_u, outros;
59/80
Programação de Computadores I Prof. Erlon Pinheiro
faça
início
<comando1>;
<comando2>;
...
<comandon>;
fim
enquanto(<Condição>);
60/80
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
61/80
Programação de Computadores I Prof. Erlon Pinheiro
62/80
Programação de Computadores I Prof. Erlon Pinheiro
leia(“%i”, &idade);
fim
63/80
Programação de Computadores I Prof. Erlon Pinheiro
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.
Exercícios Complementares: Comando faça/enquanto:
01. Faça um algoritmo que receba como entrada, uma lista de números
positivos ou negativos finalizada com o número zero e forneça, como
saída, a soma dos números positivos, a soma dos números negativos
e a soma das duas parciais.
Resolução:
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
64/80
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
65/80
Programação de Computadores I Prof. Erlon Pinheiro
Rastreamento
Memória Tela
i: 1, 2, 3, 4, 5, Digite um numero para a tabuada: 2 <Enter>
6, 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
66/80
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 pelo teclado e deve ser maior ou igual a 5.
n
6
2
S k = 6/12 + 6/22 + … + 6/n2 (Obs.: O valor do somatório
k 1
67/80
Programação de Computadores I Prof. Erlon Pinheiro
68/80
Programação de Computadores I Prof. Erlon Pinheiro
principal ( )
inicio
inteiro matricula, idade, cor_olhos, cor_cab;
real altura, peso;
69/80
Programação de Computadores I Prof. Erlon Pinheiro
caractere sexo;
faca
inicio
escreva(“Digite a matricula ou matricula <= 0 para parar: “);
leia(“%i”, &matricula);
se ( matricula > 0 )
inicio
escreva(“Sexo (m ou f): “);
leia(“ %c”, &sexo);
escreva(“Idade: “);
leia(“%i”, &idade);
escreva(“Altura e peso: “);
leia(“%r%r”, &altura, &peso);
escreva(“Cor dos olhos: “);
escreva(“1. Azul ou 2. Castanho ou 3. Outros “);
leia(“%i”, &cor_olhos);
escreva(“Cor dos cabelos: “);
escreva(“1. Ruivos ou 2. Loiros ou 3. Outros “);
leia(“%i”, &cor_cab);
se ( (sexo == ‘F’) ||(sexo==’f’))
se ( cor_cab == 1 )
se (cor_olhos == 1 )
se ( (altura>=1.65) && ( altura<=1.75))
se ( peso < 60)
escreva(“A matricula e %i “, matricula);
70/80
Programação de Computadores I Prof. Erlon Pinheiro
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.
22. Faça um algoritmo que leia N notas, N é lido, calcule e imprima a média
aritmética entre elas.
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
71/80
Programação de Computadores I Prof. Erlon Pinheiro
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
72/80
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:
73/80
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
74/80
Programação de Computadores I Prof. Erlon Pinheiro
cont cont + 1;
se (n5>media) então
cont cont + 1;
escreva(“Quantidade de números acima da média é %i“, cont);
fim
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);
75/80
Programação de Computadores I Prof. Erlon Pinheiro
// Processamento de dados
para (i 0; i<TAM; i i+1)
vet_r[i] vet_a[i] + vet_b[i];
// 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.
76/80
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
77/80
Programação de Computadores I Prof. Erlon Pinheiro
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
Exemplo:
Vetor1
0 1 2 3 4 5 6 7 8 9
78/80
Programação de Computadores I Prof. Erlon Pinheiro
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
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).
79/80