Algoritmos
Algoritmos
Algoritmos
(PROCESSAMENTO)
RESULTADOS
Organização do Computador
Unidades de Entrada: São os componentes que permitem a entrada de
informações exteriores para serem processadas pelo computador. Ex: Teclado,
mouse, câmera de vídeo.
Memória RAM: Usada para manter instruções e dados. É uma memória volátil, isto
é, quando o computador é desligado, todos os dados armazenados se perdem.
Memória ROM: Contém dados e códigos de execução que não podem ser
alterados.
S.O / CPU
No processo de compilação, todo o programa fonte é traduzido para linguagem de
máquina antes de iniciar a execução.
S.O / CPU
Algoritmos
Para nos comunicarmos com o computador e fazer com que ele execute as tarefas
que desejamos, é preciso descrever como estas tarefas devem ser executadas. A
esta descrição, chamamos de algoritmo.
Um algoritmo é uma seqüência finita de ações que devem ser executadas para que
se possa resolver um determinado problema. Quando a forma de se expressar
essas ações obedece às regras de alguma linguagem de programação, passamos a
chamá-lo de programa.
Ação – Uma ação é um evento que ocorre num período de tempo finito,
estabelecendo um efeito intencionado e bem definido. Exemplos:
1 – Molhe o cabelo.
2 – Repita duas vezes.
Coloque a quantidade correspondente a uma tampa de xampu no cabelo.
Massageie até fazer espuma.
Enxágüe.
ANÁLISE PRELIMINAR
SOLUÇÃO
PRODUTO FINAL
Com o Portugol, será possível obter uma notação que deve ser utilizada na
definição, criação e desenvolvimento de algoritmos.
Início
Declarações; (2)
Comandos; (3)
Fim. (4)
(1) Início: palavra que indica o início do algoritmo.
(2) Declarações: declaração dos objetos que serão utilizados no algoritmo, como
por exemplo, constantes, variáveis, tipos, funções, procedimentos. Cada declaração
deve ser separada por um ponto e vírgula.
(4) Fim: palavra que indica o final do algoritmo. Deve ser seguida pelo ponto final.
Início
imprima (“Aula de Introdução à Ciência da Computação”);
Fim.
Exemplo2:
início
imprima (“Ouro Preto”);
imprima (“Universidade Federal de Ouro Preto”);
imprima (“Aula de Introdução à Ciência da Computação”);
fim.
Ouro Preto
Universidade Federal de Ouro Preto
Aula de Introdução à Ciência da Computação
Nos exemplos acima, cada comando possui apenas um item a imprimir. Se houver
mais de um, eles devem ser separados por vírgulas. Por enquanto, esses itens
foram apenas mensagens, escritas entre aspas. Logo adiante serão apresentadas
outras possibilidades.
Exercício: Faça um algoritmo que imprima o seguinte:
Instituição:
Universidade Federal de Ouro Preto.
Disciplina:
Introdução à Ciência da Computação.
Aula sobre comando de escrita.
Exemplos:
As palavras que já fazem parte da linguagem Pascal são reservadas, não podendo
ser usadas como identificadores.
Inicio
Constante Pi= 3,14;
Imprima (“O comprimento desta circunferência é:”, 2 * Pi * 30);
Fim.
Observação
Variáveis
São objetos que podem assumir diferentes valores dentro do mesmo algoritmo.
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante. A cada variável está associado um nome e um tipo que define
a natureza da informação que ela pode armazenar.
Podemos ver uma variável como uma caixa com um rótulo (nome ou identificador).
Podemos construir caixas com diferentes tamanhos e formatos e associar cada um
desses modelos a um “tipo” diferente de dado. Em uma caixa de um certo tipo só
pode haver, num determinado instante, um único objeto (valor), que deve ter o
mesmo formato (tipo) da caixa.
Tipos de Dados
inteiro: representa qualquer número inteiro; negativo, nulo ou positivo. Ex: -5, 0, 235
real: representa representa qualquer número real; negativo, nulo ou positivo. Ex: -5,
30.5, 40.
caracter: representa qualquer conjunto de caracteres. Ex: “AB”, “Ouro Preto”, “123”.
Declarando Variáveis
Exemplo:
x
A variável x só podem armazenar valores do tipo inteiro, como por exemplo: 2, 50, 0,
-10.
(2)
A B
(3)
Nome Sobrenome
(4)
resposta
Comando de Atribuição
O comando de atribuição (←) atribui um valor (pode ser uma expressão) que está a
direita de ← para uma variável que está na parte esquerda do comando,
representada pelo seu identificador.
V ← E;
Exemplo1)
Início
caracter: nome, sexo; (1)
inteiro: idade; (2)
nome ← “João”; (3)
idade ← 25; (4)
sexo ← “M”; (5)
imprima (“O funcionário”, nome, “tem”, idade, “anos”); (6)
Fim
(1) Cria duas variável do tipo caracter, associadas aos identificadores “nome” e
“sexo”, respectivamente, e que pode armazenar um ou mais caracteres caracteres.
nome Sexo
(2) Cria uma variável do tipo inteiro, associada ao identificador “idade” e que pode
armazenar números inteiros.
Idade
João
(4) Atribui à variável idade o valor 25.
25
Exemplo2)
Início
inteiro: x,y;
real: w;
caracter: letra, texto;
x ← 2;
y ← 10;
w ← 30.2;
texto ← “Aula sobre comando de atribuição”;
letra ← “a”;
y ← 12;
w ← 16.0;
letra ← “z”
imprima(x);
imprima(y);
imprima(w);
imprima(texto);
imprima(letra);
Fim.
x y W Texto letra
2 10 30.2 Aula sobre comando de atribuição A
12 16.0 z
Inicio
Constante Pi= 3,14;
real: c;
c ← 2 * Pi * 30;
imprima (“O comprimento desta circunferência é:”, c);
Fim.
Exercícios
caracter: nome, z, t;
inteiro: x;
real: y;
Com base nesta declaração, analise as atribuições feitas a estas variáveis indicando
quais estão corretas e quais estão incorretas. Para as atribuições incorretas, mostre
onde está o erro.
a) x ← 10 b) x ← 3.14 c) y ← x+1.5 d) x ← y
e) z ← “a” f) z ← “computador” g) z ← t
i) nome ← “carlos” j) nome ← 100
Início
inteiro: a, b, c, d;
a ← 1;
b←2;
c←3;
d←c;
c←b;
b←a;
a←d;
imprima (“Os valores de a, b, e c são, respectivamente:”, a, b, c);
Fim.
Exemplos:
Início
inteiro: idade; (1)
caracter: nome (2)
imprima (“Informe a sua idade:”); (3)
leia (idade); (4)
imprima (“Informe o seu nome:”); (5)
leia (nome); (6)
imprima (nome, “tem”, idade, “anos”); (7)
Fim.
(3) Envia uma mensagem para o usuário, pedindo que este informe a sua idade.
(4) Lê a idade digitada pelo usuário e a armazena na variável “idade”.
(5) Envia uma mensagem para o usuário, pedindo que este informe o seu nome.
Início
caracter: inst,disc;
imprima (“Informe o nome da instituição onde estuda:”);
leia (inst);
imprima (“Informe o nome da disciplina que está cursando:”);
leia (disc);
imprima (“Instituição:”, inst);
imprima (“Disciplina:”,disc);
Fim.
Supondo que o usuário digite os valores UFOP e ICC, o algoritmo acima deverá
imprimir as seguintes linhas:
Expressões
Expressões Aritméticas
Operações realizadas entre valores de tipo numérico e, que têm como resultado um
valor numérico. Essas expressões envolvem os seguintes operadores aritméticos:
Exemplos
Início
inteiro: x, y;
real: med;
imprima (“Entre com um valor:”);
leia (x);
imprima (“Entre com outro valor:”);
leia (y);
med ← (x+y)/2;
imprima (“A média entre os números”, x, “e”, y, “é:”, med);
Fim.
Início
inteiro x, y, resultado;
imprima (“Entre com o valor de x:”);
leia (x);
imprima (“Entre com o valor de y:”);
leia (y);
resultado ← x ^ y;
imprima (“O valor de”, x, “elevado a”, y “é:”, resultado);
Fim.
Início
inteiro: x, quad;
real: r;
imprima (“Entre com um valor:”);
leia (x);
quad ← Quadrado (x);
r ← Raiz (x);
imprima (“O quadrado de”, x, “é:”, quad);
imprima (“A raiz quadrada de”, x, “é:”, r);
Fim.
Expressões Relacionais
=, ≠, <, >, <=, >= (igual, diferente, menor, maior, menor ou igual, maior ou igual)
Expressões Lógicas
Operações entre valores lógicos, e que têm como resultado um valor lógico. Os
operadores lógicos são: não, e, ou.
Lista de Exercícios 01
4) Supondo que as variáveis NB, NA, NMAT e SX sejam utilizadas para armazenar a
nota do aluno, o nome do aluno, o número da matrícula e o sexo, declare-as
corretamente, associando o tipo adequado ao dado que será armazenado.
5) Faça um algoritmo que lê dois pontos P1 = (x1, y1) e P2 = (x2, y2) e, calcule e
imprima a distância entre esses dois pontos, cujo valor é dado pela seguinte fórmula:
dist = ( x 2 − x1)2 + ( y 2 − y1)2
7) Uma companhia de carros paga a seu vendedor um salário de R$500,00 por mês
mais uma comissão de R$ 50,00 para cada carro vendido e mais 5% do valor da
venda. Todo mês a companhia prepara os seguintes dados para um determinado
vendedor: nome, número de carros vendidos e o valor total das vendas. Elabore um
algoritmo para calcular e imprimir o salário do vendedor num dado mês.
Sabendo-se ainda que o vendedor tem um desconto de 8% sobre seu salário bruto
para o INSS, faça um algoritmo que leia o salário fixo e o número de carros de cada
modelo que esse funcionário vendeu e, calcule e imprima o salário bruto, o desconto
para o INSS e o salário líquido desse vendedor.
9) Elabore um algoritmo que dados dois lados de um triângulo retângulo, calcule a
respectiva hipotenusa.
13) Construa um algoritmo que leia os valores das bases e altura de um trapézio,
calcule e imprima o valor da sua área.
G. M R3
V= T =2π
R G. M
G = 6,7*10-11 Nm2/kg2
M → massa do planeta (kg)
R → raio da óbita (metros)
T → Período (segundos)
V → Velocidade escalar (m/s)
Um pequeno formulário
SR = b x h → Área do retângulo.
PR = 2b + 2h → Perímetro do retângulo.
4
π r → Volume da esfera.
3
VE =
3
( B + b) xh
ST = → Área do Trapézio.
2
Estrutura Condicional
se (condição) então
Comando1;
Comando2;
................
ComandoN;
fim se;
início
real: n;
imprima (“Digite um número:”);
leia(n);
se (n mod 2 = 0) então
imprima (n, “ é um número par”);
fim se;
fim.
se (condição)
então
Comando1;
Comando2;
................
ComandoN;
senão
Comando1;
Comando2;
.................
ComandoN;
fim se;
início
real: n;
imprima(“Digite um número:”);
leia(n);
se (n mod 2 = 0)
então imprima (n, “é um número par”);
senão imprima (n, “é um número ímpar”);
fim se;
fim.
Outros exemplos:
início
inteiro: A,B,C;
imprima(“Digite 2 números:”)
leia(A,B);
se (A > B)
então C Å A – B;
senão C Å B - A;
fim se;
imprima(C);
fim.
2) Algoritmo que lê 2 números e imprime o maior deles.
inicio
inteiro: x,y;
imprima(“Digite 2 números:”)
leia (x,y);
se (x > y)
então
imprima (“O maior número é:”, x);
senão
imprima (“O maior número é:”, y);
fim se;
fim.
inicio
inteiro: x,y,z;
imprima(“Digite 3 números:”)
leia (x,y,z);
se (x > y) e (x > z)
então
imprima (“O maior número é:” ,x);
senão
se (y > x) e (y > z)
então imprima (“O maior número é:”, y);
senão imprima (“O maior número é:”, z);
fim se;
fim se;
fim.
Δ= b2 – 4ac
Se Δ ≥ 0, a equação possui duas raízes reais, calculadas através da fórmula:
Se Δ <0, a equação não possui raízes reais.
inicio
real: A, B, C, X1, X2, Delta;
imprima(“Forneça os coeficientes da equação:”);
leia (A, B, C);
Delta Å B*B - 4*A*C;
se Delta ≥ 0 então
X1 Å (-B + raiz(Delta)/(2*A);
X2 Å (-B - raiz(Delta)/(2*A);
imprima (“As raízes da equação dada são:”, X1, X2);
senão
imprima (“A equação dada não apresenta raízes reais”);
fim se;
fim.
Lista de Exercícios 02
1) início
lógico: b1,b2,b3;
se (b1) então Comando1;
senão se (b2) então
se (b3) então Comando2;
senão Comando3;
Comando4;
fim se;
fim se;
fim se;
Comando5;
fim.
inicio
lógico: a,b,c;
real: x,y;
inteiro: v, L;
A←falso; b←verdadeiro; c←falso;
x←1.5; y←3.2;
x←x+1;
se (c ou ((x+y>5) ou (não a e b)) então L ←0;
senão L ←1;
fim se;
fim.
7) Faça um algoritmo que, dados dois números e um caracter (+, -, *, /), calcule e
imprima:
13) O IMC, índice de massa corporal, é muito utilizado para analisar se uma pessoa
está acima ou abaixo do peso. A análise é feita da seguinte maneira:
a) Faça um algoritmo para ler o peso (massa) e altura de uma pessoa, calcular e
imprimir o seu IMC, junto com uma mensagem indicando a categoria em que ela se
enquadra.
b) Considera-se que o IMC ideal para os homens é 22,0 e para as mulheres é 20,8.
Escreva um algoritmo para ler o peso, a altura de uma pessoa e uma letra indicando
qual é o seu sexo. O programa deve calcular o seu IMC e imprimí-lo junto com uma
mensagem indicando se a pessoa tem o valor ideal desse índice.
Estruturas de Repetição
Elaborar um algoritmo que leia o primeiro termo (a1) de uma Progressão Aritmética
(P.A), e sua razão (r) e, a seguir, calcule e imprima os 10 primeiros termos dessa
P.A e a soma desses termos. Dado: an = a1 + (n-1) . r (fórmula do termo geral de
uma P.A).
O Comando Enquanto
O comando enquanto é uma estrutura de repetição onde a condição de interrupção
é testada antes que os comandos a serem repetidos sejam executados.
Forma de utilização:
início
inteiro: a1, r, an, n, soma;
imprima (“Informe o primeiro termo da P.A:”);
leia (a1);
imprima (“Informe a razão da P.A:”);
leia (r);
soma ← 0;
n ← 1;
enquanto (n ≤ 10) faça
an ← (a1) +(n-1) * r;
imprima (an);
soma ← soma + an;
n ← n+1;
fim enquanto;
imprima (“A soma dos 10 primeiros termos dessa P.A é:”, soma);
fim.
O Comando Repita
O comando repita é uma estrutura de repetição onde a condição de interrupção é
testada no fim do bloco de repetição.
Forma de utilização:
repita
Comando1;
Comando2;
.......
ComandoN;
até (condição);
início
inteiro: a1, r, an, n, soma;
imprima (“Informe o primeiro termo da P.A:”);
leia (a1);
imprima (“Informe a razão da P.A:”);
leia (r);
soma ← 0;
n ← 1;
repita
an ← (a1) +(n-1) * r;
imprima (an);
soma ← soma + an;
n ← n+1;
até (n > 10);
imprima (“A soma dos 10 primeiros termos dessa P.A é:”, soma);
fim.
O Comando Para
Forma de utilização:
OBS: Quando o passo (incremento) for igual a 1, ele pode ser omitido.
início
inteiro: a1, r, an, n, soma;
imprima (“Informe o primeiro termo da P.A:”);
leia (a1);
imprima (“Informe a razão da P.A:”);
leia (r);
soma ← 0;
para n de 1 até 10 faça
an ← (a1) +(n-1) * r,
imprima (an);
soma ← soma + an;
fim para;
imprima (“A soma dos 10 primeiros termos dessa P.A é:”, soma);
fim.
Exemplos:
início
inteiro: a1, r, an, N, i,soma;
imprima (“Informe o primeiro termo da P.A:”);
leia (a1);
imprima (“Informe a razão da P.A:”);
leia (r);
imprima (“Informe o número de termos da P.A que deseja conhecer:”);
leia (N);
soma ← 0;
i ← 1;
enquanto (i ≤ N) faça
an ← (a1) +(i-1) * r;
imprima (an);
soma ← soma + an;
i ← i+1;
fim enquanto;
imprima (“A soma dos”, n, “primeiros termos dessa P.A é:”, soma);
fim.
início
inteiro: n, i, fat;
imprima (“Digite um número:”);
leia (n);
fat ← 1;
para i de 1 até n faça
fat ← fat * i;
fim para;
imprima (“O fatorial de”, n, “é:”, fat);
fim.
inicio
real: peso, alt, IMC;
imprima (“Informe seu peso:”);
leia (peso);
imprima (“Informe sua altura:”);
leia (alt);
enquanto (peso ≠ 0) faça
IMC ← peso / Quadrado (alt);
imprima (“Índice de massa corporal:”, IMC);
se (IMC < 20) então imprima (“Abaixo do peso ideal.”);
senão se (IMC≥ 20 e IMC <25) então imprima (“Peso ideal.”);
senão se (IMC>25 e IMC ≤30)
então imprima (“Acima do Peso.”);
senão imprima (“Obesidade”);
fim se;
fim se;
fim se;
imprima (“Informe seu peso:”);
leia (peso);
imprima (“Informe sua altura:”);
leia (alt);
fim enquanto;
fim.
Lista de Exercícios 03
a)
inicio
lógico:x;
inteiro: y;
y←0;
enquanto (y≠6) faça
x← não(x);
y←y+1;
se x então imprima (y)
senão imprima (‘-’, y);
fim se;
fim enquanto;
Fim.
b)
início
real: n, quad;
n←10;
repita
quad←Quadrado(n);
imprima(quad);
n←n-1
até (n=1)
fim.
inicio
inteiro: A, Q, TERMO;
A←1;
Q←3;
TERMO←A;
enquanto TERMO <2000 faça
imprima (TERMO);
TERMO←TERMO*Q;
Fim enquanto;
Fim.
2) Construa um algoritmo que some todos os números pares < 1000 e ao final
imprima o resultado dessa soma.
8) Suponha que para cada aluno de sua sala exista uma ficha contendo o nome e a
idade do aluno. Supondo que exista 50 alunos, faça uma algoritmo que determine
quantos alunos tem idade maior que 25.
10) A conversão de graus Farenheit para centígrados é obtida por C= 5/9 (F-32).
Faça um algoritmo que calcule e imprima uma tabela de centígrados em função de
graus Fahrenheit, que variam de 50 a 150 de 1 em 1.
11) Uma certa firma fez uma pesquisa de mercado para saber se as pessoas
gostaram ou não de um novo produto lançado no mercado. Para isso, forneceu o
sexo do entrevistado e sua resposta (sim ou não). Sabendo-se que foram
entrevistadas 2.000 pessoas, elabore um algoritmo que calcule e imprima:
12) A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando
dados sobre o salário e número de filhos. A prefeitura deseja saber:
c) O maior salário;
O final da leitura de dados deve acontecer quando for digitado um salário negativo.
Até agora, foi visto que uma variável está associada a uma posição de memória e
qualquer referência a ela significa um acesso ao conteúdo de um pedaço de
memória.
inicio
real: nota1, nota2, nota3, nota4, nota5, nota6, nota7, nota8, nota9, nota10, media;
imprima (“Informe a nota do primeiro aluno:“);
leia (nota1);
imprima (“Informe a nota do segundo aluno:“);
leia (nota2);
imprima (“Informe a nota do terceiro aluno:“);
leia (nota3);
...
imprima (“Informe a nota do décimo aluno:“);
leia (nota10);
media←(nota1+nota2+nota3+nota4+nota5+nota6+nota7+nota8+nota9+nota10)/10;
imprima (“A média das notas é:”, media);
se (nota1>media) então imprima (nota1);
se (nota2>media) então imprima (nota2);
se (nota3>media) então imprima (nota3);
...
se (nota10>media) então imprima (nota10);
Fim.
Note que o algoritmo está cheio de repetições e cálculos idênticos para cada nota.
Se o número de alunos aumentasse de 10 para 100, a situação seria ainda pior.
Variáveis Simples
9 7 5 8
...
Nota1 nota2 nota3 nota10
Vetor
1 2 3 4 5 6 7 8 9 10 (índices)
nota[1]=9 nota[3]:=10
nota [2]=7 imprima (nota[2])
...
nota[10]=8 nota[4]:=2
Declaração de Vetores
Exemplo:
V: vetor [1..100] de inteiro; (vetor de 100 posições, que armazena números inteiros)
Vetreais: vetor[1..10] de real; (vetor de 10 posições, que armazena números reais)
Vetletras: vetor[1..50] de caracter; (vetor de 50 posições, que armazena caracteres)
inicio
nota: vetor[1..10] de real;
real: soma, media;
inteiro: i;
soma←0;
para i de 1 até 10 faça
imprima(“Entre com a nota”,i,”:”);
leia(nota[i]);
soma←soma+nota[i];
fim para;
media←soma/10;
imprima (“A média das notas é:”, media);
para i de 1 até 10 faça
se (nota[i]>media) então imprima (nota[i]);
fim se;
fim para;
Fim.
Exercícios
1) Algoritmo que inicializa um vetor de 5 posições com valores inteiros lidos através
do teclado e, em seguida, imprime esses valores.
inicio
vet: vetor[1..5] de inteiro;
inteiro: i;
para i de 1 até 5 faça
imprima(“Entre com o valor”,i,”:”);
leia(vet[i]);
fim para;
para i de 1 até 5 faça
imprima(vet[i]);
fim para;
Fim.
Inicio
v: vetor[1..20] de caracter;
inteiro: i;
para i de 1 até 20 faça
imprima (“Entre com um caracter:”);
leia (v[i]);
fim para;
para i de 20 até 1 faça
imprima (v[i]);
fim para;
Fim.
inicio
vet: vetor[1..100] de inteiro;
inteiro: n, i, cont;
cont←0;
imprima(“Informe a quantidade de elementos a serem lidos (≤100):”);
leia(n);
para i de 1 até n faça
imprima(“Entre com um valor:”);
leia(vet[i]);
fim para;
para i de 1 até n faça
se (vet[i]>10) então
imprima(vet[i]);
cont←cont+1;
fim se;
fim para;
imprima(cont, “elementos desse vetor são maiores que 10”);
Fim.
inicio
inteiro: i,n;
real: estoque;
q: vetor[1..100] de inteiro;
p: vetor[1..100] de real;
estoque←0;
imprima(“Informe o número de mercadorias em estoque:”);
leia(n);
para i de 1 até n faça
imprima(“Informe a quantidade disponível da mercadoria”, i,”:”);
leia (q[i]);
imprima(“Informe o preço unitário da mercadoria”, i,”:”);
leia(p[i]);
fim para;
para i de 1 até n faça
estoque←estoque+q[i]*p[i];
fim para;
imprima(“O valor total em estoque é:”, estoque);
Fim.
Lista de Exercícios 04
6) Faça um algoritmo que leia os preços de uma mercadoria, obtidos por uma
pesquisa em 30 casas comerciais. O algoritmo deve determinar quantas dessas
casas estão com o preço abaixo da média.
Matrizes
Declaração de Matrizes
Exemplos
1
Mat 2
3
1 2
1
R 2
1 2
1
Mat 2
3
1 2 3
Inicialização de Matrizes
1) Algoritmo que cria uma matriz 3x2 de inteiros e a inicializa com o valor 5.
Inicio
inteiro: i, j;
m: vetor[1..3,1..2] de inteiro;
para i de 1 até 3 faça {variando as linhas}
para j de 1 até 2 faça {variando as colunas}
m[i, j] ← 5;
fim para;
fim para;
fim.
2) Algoritmo que cria uma matriz 4x3 de reais e a inicializa com valores lidos através
do teclado.
Inicio
inteiro: i, j;
mat: vetor [1..4, 1..3] de real;
para i de 1 até 4 faça
para j de 1 até 3 faça
imprima (“Entre com um valor:”);
leia(mat[i,j]);
fim para;
fim para;
fim.
Exemplos
Inicio
inteiro: i, j;
m: vetor[1..4, 1..4] de inteiro;
para i de 1 até 4 faça
para j de 1 até 4 faça
imprima(“Digite um número:”);
leia(m[i, j]);
fim para;
fim para;
para i de 1 até 4 faça
para j de 1 até 4 faça
imprima (m[i, j]);
fim para;
fim para;
fim.
Inicio
inteiro: m, n, i, j;
m1,m2,m3: vetor[1..100,1..100] de inteiro;
imprima (“Informe o número de linhas da matriz:”);
leia (m);
imprima (“Informe o número de colunas da matriz:”);
leia (n);
para i de 1 até m faça
para j de 1 até n faça
imprima (“Digite um número:”);
leia(m1[i, j]);
fim para;
fim para;
para i de 1 ate m faça
para j de 1 até n faça
imprima(“Digite um número:”);
leia(m2[i, j]);
fim para;
fim para;
para i de 1 até m faça
para j de 1 até n faça
m3[i, j]←m1[i,j]+m2[i,j];
fim para;
fim para;
para i de 1 até m faça
para j de 1 até n faça
imprima(m1[i, j]);
fim para;
fim para;
para i de 1 até m faça
para j de 1 até n faça
imprima(m2[i, j]);
fim para;
fim para;
para i de 1 até m faça
para j de 1 até n faça
imprima(m3[i, j]);
fim para;
fim para;
Fim.
3) Elabore um algoritmo que construa uma matriz 20x20 de inteiros, tal que cada
elemento da matriz seja igual à soma de seus índices.
inicio
inteiro: i, j;
m: vetor[1..20, 1..20] de inteiro;
para i de 1 até 20 faça
para j de 1 até 20 faça
m[i, j] ← i + j;
fim para;
fim para;
para i de até 20 faça
para j de 1 até 20 faça
imprima(m[i, j]);
fim para;
fim para;
Fim.
Lista de Exercícios 05
Vetores e matrizes são estruturas de dados homogêneas, pois, como já vimos, todos
os seus elementos são do mesmo tipo. Já no registro, cada componente pode ser de
um tipo diferente.
Declaração de um registro
Exemplos:
Tipo dados = registro
caracter: nome, sexo;
real: salario;
inteiro: idade;
fim registro;
Com a declaração acima, criamos um novo tipo de dados, que armazena valores de
diferentes tipos. Agora, podemos criar uma variável que armazena valores do novo
tipo criado, como mostrado abaixo:
dados: funcionarios;
nome sexo
funcionarios salario
idade
Tipo informacoes = registro
caracter: nome, rua, cidade, estado;
inteiro: numero, cep;
real: salário;
fim registro;
informacoes: cliente
nome
rua numero cep
cliente
cidade estado
salario
Para referenciar cada campo, usa-se o nome do registro, seguido de ponto (.),
seguido do nome do campo que se deseja acessar.
Exemplo:
Cliente
Nome
Rua Numero CPF
Saldo
Funcionários
nome sexo salario idade nome sexo salario idade
1 2 ..100
inicio
Tipo dados = registro
caracter: nome, sexo;
real: salario;
inteiro: idade;
fim registro;
funcionarios: vetor [1..30] de dados;
inteiro: i;
para i de 1 até 30 faça
imprima (“Informe o nome do funcionário”, i, “:”);
leia(funcionarios[i].nome);
imprima(“Informe o sexo (M/F) do funcionário“, i, “:“);
leia(funcionarios[i].sexo);
imprima(“Informe o salário do funcionário”, i, “:”);
leia(funcionarios[i].salario);
imprima(“Informe a idade do funcionário”, i, “:”);
leia(funcionarios[i].idade);
fim para;
para i de 1 até 30 faça
se(funcionarios[i].salario>1000) então
imprima(“O funcionário”, funcionarios[i].nome, “recebe”, funcionarios[i].salario,
“reais”);
fim se;
fim para;
Fim.
Lista de Exercícios 06
2) Elabore um algoritmo que cadastre os dados (nome, sexo, estado civil, cargo e
salário) dos funcionários de uma empresa (no máximo 250). O algoritmo deverá
calcular e imprimir:
5) (Valor: 3 pontos) Uma empresa tem, para cada funcionário, uma ficha contendo o
nome, número de horas trabalhadas e o número de dependentes deste funcionário.
Considerando que:
- Idade;
- Sexo (M - Masculino, F - Feminino)
- Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado);
Com base nesses dados, elabore um algoritmo que leia os dados de todos os
acidentes ocorridos neste ano e calcule e imprima:
a) A porcentagem de motoristas com menos de 21 anos;
b) O número de mulheres que são da capital;
c) O número de motoristas do interior que têm idade maior que 60 anos;
Elabore um algoritmo que leia os dados acima para todos os funcionários desta
empresa e, calcule e imprima o nome, o cargo e o novo salário de cada um desses
funcionários.
Programação Modular
Procedimentos
Para que um procedimento seja executado, ele deve ser “chamado” no algoritmo
principal. Veremos como se fazer essa chamada nos exemplos seguintes:
Exemplos
1) Algoritmo que calcula e imprime a soma entre dois valores, utilizando para isto um
procedimento.
Inicio
real: a, b, c, d;
Procedimento Soma (real:x,y);
inicio
real: som;
som← x+y ;
imprima(x, “+”, y, “=”, som);
fim;
imprima(“Digite quatro números:”);
leia(a,b,c,d);
Soma(a,b);
Soma(c,d);
Soma(a,c);
Soma(a,d);
Fim.
Funções
Declaração de Funções
Exemplos
inicio
real: a;
Função Cubo (real: x): real;
Cubo ← x * x * x;
fim;
imprima(“Digite um valor:”);
leia(a);
imprima(“O cubo de”, a, “é:”, Cubo(a));
Fim.
2) Algoritmo que calcula o maior de dois números dados. O cálculo do maior número
será feito utilizando-se uma função.
inicio
real: a,b;
Função Maior(real:x,y): real;
Inicio
se (x>y) então Maior←x;
senão Maior←y
fim se;
fim;
imprima(“Entre com dois valores:”);
leia(a,b);
imprima(“O maior valor entre”, a, “e”, b “é:”, Maior(a,b));
Fim.
inicio
inteiro: x;
Função Fatorial(inteiro: n): inteiro;
inicio
inteiro: fat, i;
fat←1;
para i de 1 até n faça
fat←fat * n;
fim para;
Fatorial←fat;
fim;
imprima(“Digite um número:”);
leia(x);
enquanto(x>0) faça
imprima(“O fatorial de”, x, “é:”, Fatorial(x));
imprima (“Entre com um valor:”);
leia(x);
fim enquanto;
Fim.
Lista de Exercícios 07
4) Elabore um algoritmo que leia o primeiro termo (a1) de uma Progressão Aritmética
(P.A), e sua razão (r) e, a seguir, calcule e imprima os n primeiros termos dessa P.A.
Dado: an = a1 + (n-1) x r (fórmula do termo geral de uma P.A).
Obs: Deve-se utilizar uma Função para o cálculo dos termos desta P.A.
O algoritmo deve parar de ler dados quando no lugar do sexo for digitada a palavra
fim. Utilizar uma função para realizar o cálculo do peso ideal.
6) Uma empresa tem, para cada funcionário, uma ficha contendo o nome, número
de horas trabalhadas e o número de dependentes deste funcionário. Considerando
que:
Obs: O cálculo do salário líquido e a impressão dos resultados devem ser feitos
utilizando-se um procedimento.
Dados:
Δ= b2 – 4ac
Se Δ ≥ 0, a equação possui duas raízes reais, calculadas através da fórmula:
−b± Δ
x=
2a