Documente Academic
Documente Profesional
Documente Cultură
ALGORITMOS e
PROGRAMAO
otas de Aula
a
Prof . Beatriz Lux
Prof. Joo Carlos Furtado
Reviso: Profa. Daniela Saccol Peranconi (2009/01)
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
1. ITRODUO
Imagine a seguinte situao: o gerente de uma pequena fbrica de parafusos necessita que
seja realizada uma alterao nos preos dos produtos que a fbrica vende, em funo de novos
valores adotados pelo Governo para imposto sobre circulao de mercadorias. As diversas
mercadorias esto catalogadas com seus preos de produo e preos de venda em um fichrio e
caber a um funcionrio novo e inexperiente fazer as alteraes. Para auxiliar o trabalho do
funcionrio e garantir que o resultado seja correto, o gerente resolve passar-lhe as orientaes
por escrito e elabora o seguinte roteiro:
Qualquer pessoa que siga a seqncia de passos acima dever concluir a tarefa
satisfatoriamente, bastando, para isso, que possua os seguintes conhecimentos prvios:
1
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Incio
3. Introduzir o carto;
5.1 Conversar;
5.2 Desligar;
6. Seno
6.1 Repetir;
Fim.
2
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Protgoras era um mestre na arte do sofismo e certa vez foi procurado por um
jovem que queria receber um treinamento que o capacitasse a atuar como sofista. Foi
aceito e assinou um contrato pelo qual pagaria durante as aulas metade do valor total
do curso e o restante quando vencesse sua primeira causa. Passado um tempo aps o
trmino das aulas, como o discpulo no se animasse a defender nenhuma causa,
Protgoras encaminhou reclamao de pagamento Justia com o seguinte
argumento: Se meu discpulo perder, paga-me por deciso da Corte, se ganhar, paga-
me por fora do contrato entre ns acertado. O discpulo, que havia se dedicado com
afinco s aulas, argumentou em sua defesa: Se eu vencer, no pago, por deciso da
Corte, mas se perder, no pago pelo estabelecido em nosso contrato. Com quem
estaria a verdade?
3
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O silogismo caracteriza-se por iniciar com uma sentena que afirme uma propriedade de
uma classe, que uma verdade maior (Todo homem mortal). A sentena seguinte apresenta
um indivduo pertencente classe (Scrates mortal) e a terceira sentena conclui que o
indivduo possui a propriedade da classe (Logo, Scrates mortal).
Outro exemplo:
Foi a Matemtica, dentre todas as cincias, aquela que mais se aproximou da Lgica, por
ser baseada no raciocnio dedutivo. Vejamos como exemplo, as duas proposies abaixo e a
deduo que lhes segue:
3 + 1 = 4;
2 + 2 = 4;
Logo, 3 + 1 = 2 + 2
4
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Este assunto ser visto no prximo captulo, onde tambm so abordados conceitos
bsicos sobre processamento de dados, organizao de um computador, memria e tipos de
dados, identificadores, estrutura de um algoritmo e programao.
No terceiro captulo veremos expresses aritmticas, operadores aritmticos, funes
matemticas, expresses lgicas, operadores relacionais, operadores lgicos, tabelas verdade e
prioridades entre operadores.
O quarto captulo dedicado a comandos de atribuio, de entrada e de sada. J, o quinto
captulo apresenta os comandos de seleo e no sexto captulo so estudados os comandos de
repetio. No captulo sete so vistos os tipos estruturados homogneos (vetores e matrizes) e o
oitavo captulo aborda conhecimentos bsicos da linguagem C.
5
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
2. COCEITOS BSICOS
2.1 PROBLEMAS COMPUTACIOAIS
O processamento das informaes pelo computador envolve sua parte central que
formada pela memria do computador, onde ficam armazenados o sistema operacional da
mquina, o programa e as informaes ou dados, e pela Unidade Central de
Processamento (CPU) que ficar encarregada de executar as instrues e operaes
necessrias para obter o resultado esperado. Os dados que entram no computador chegam atravs
de dispositivos de entrada (como o teclado ou o driver de disco) e so armazenados
na memria RAM do computador. Os dados produzidos pelo processamento so, tambm,
armazenados na memria RAM e chegam ao usurio atravs de dispositivos de sada
(como o vdeo, o driver de disco ou a impressora).
Os dados com que um computador trabalha podem ser de trs tipos: numricos,
alfanumricos (caracteres) ou lgicos (booleanos). Dependendo do tipo do dado, a ele
estar associado um tamanho necessrio em memria para armazen-lo e as operaes que o tipo
suporta. Faz-se, ento, distino entre os diversos dados quanto a seu tipo, para que o
computador esteja preparado para oper-los e armazen-los.
Os dados tambm devem ser diferenciados quanto a serem constantes ou
variveis:
1. Constante a informao dita constante quando no existe a possibilidade de que
sofra nenhuma variao no decorrer do tempo em que executado o algoritmo.
Exemplo: no clculo da rea de um crculo qualquer, o valor de Pi ser sempre o mesmo,
no importando qual seja o crculo, o que o caracteriza como constante.
6
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
2. Varivel a informao dita varivel, quando se admite que seu valor possa sofrer
alteraes durante a execuo do algoritmo, ou que ela possa assumir diferentes valores a cada
nova execuo do algoritmo.
Exemplo: no clculo da rea de um crculo qualquer, o raio do crculo uma informao
varivel, dependendo do crculo para o qual se deseja calcular a rea.
7
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
1. Devem ser formados por um ou mais caracteres, sendo que o primeiro dever ser uma
letra;
2. Caracteres especiais no so vlidos (por exemplo: % * + ; : @ ` ?)
3. No podem conter espao;
4. O caractere de sublinha (_) considerado vlido.
Exemplo: Mdia Aritmtica no pode ser usado como identificador por utilizar o
acento agudo que um caractere especial e por conter espao. Para tornar-se vlido, deveria ser
escrito: Media_Aritmetica ou MediaAritmetica.
8
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
e acion-los a partir de um bloco principal. Tal caracterstica torna mais fcil a tarefa de testar
programas, uma vez que os blocos podem ser testados em separado, e, tambm, auxilia na
manuteno dos cdigos. Quando analisamos um problema sob este paradigma, nossa primeira
preocupao compreender e definir muito bem a ao que proporcionar o resultado a atingir
e, depois, definimos os dados que estaro envolvidos na tarefa.
J a Programao Orientada a Objetos, que vem tendo uso crescente nos ltimos anos,
preocupa-se com o objeto, que basicamente possui caractersticas (atributos ou dados) e
propriedades (mtodos ou ao). Exemplos de linguagens orientadas a objeto so: Delphi, C++ e
Java.
Para melhor exemplificar as diferenas bsicas entre as duas, analisemos o problema de
calcular a mdia aritmtica de um aluno, sendo dados de entrada suas duas notas e como sada
queremos a sua mdia aritmtica.
Ao resolvermos este problema utilizando o raciocnio da programao estruturada, vamos
nos preocupar em conhecer bem e depois descrever a ao de calcular a mdia aritmtica (m =
(nota1 + nota2)/2) e vamos nos utilizar (de forma secundria) de dados para executar a ao, ou
seja, necessitaremos de espao em memria para armazenar as duas notas e o resultado do
clculo e, todas so do tipo numrico real.
J pelo paradigma da programao orientada a objetos, vamos, primeiramente, nos
preocupar com o objeto mdia que possui caractersticas prprias e que vamos descrever
apontando seus atributos e seus comportamentos. Os atributos (ou dados) sero as notas e os
comportamentos ou mtodos sero, neste caso, a frmula para clculo da mdia aritmtica. Este
modelo de programao, como vincula a um objeto seus dados e mtodos, trouxe um novo
conceito programao de computadores, que a possibilidade de agruparmos objetos com as
mesmas caractersticas e com eles formarmos o que se chama classes. Criamos classes de objetos
para no repetirmos a definio de propriedades iguais para objetos diversos que as possuem.
Tomemos como exemplo o problema mesa e vamos analis-lo sob o paradigma da orientao a
objetos. Existem mesas de diversos tipos, formas e materiais, porm todas tm: atributos (um
tampo e pernas de sustentao) e mtodos (sustentar outros objetos sobre o tampo).
Com esta definio, criamos a classe mesa e dela podem derivar vrios objetos: mesa
com tampo redondo e quatro pernas; mesa fixa na parede com duas pernas e tampo retangular de
madeira e outras tantas mais.
Uma boa definio para classe :
9
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Uma classe um agrupamento de objetos que revelam profundas semelhanas entre si,
no aspecto estrutural e funcional.
Os objetos pertencentes a uma classe, dela herdaro os atributos e mtodos e
acrescentaro aqueles que necessitam pela suas particularidades.
Quando, dentro deste paradigma, chegamos no nvel de resoluo dos mtodos dos
objetos, voltamos a utilizar o paradigma da programao estruturada, preocupando-nos com a
ao. Podemos, portanto, dizer que a Programao Orientada a Objetos inclui os conhecimentos
bsicos da Programao Estruturada. Em nossa disciplina vamos nos preocupar em aprender esta
forma estruturada de programar que envolve o aprendizado de regras bsicas, instrues e
comandos da lgica de desenvolvimento de algoritmos e em disciplinas posteriores os alunos
iro utiliz-la novamente, tanto nas disciplinas de programao estruturada como nas que
utilizam orientao a objetos.
- Definio de Constantes
A declarao de cada constante deve ser precedida pela palavra const e a seguir
colocado o identificador da constante, o sinal de igualdade (=) e o valor que possui, finalizando
com o separador ; (ponto e vrgula).
10
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
- Declarao de Variveis
Declaram-se variveis para reservar uma quantidade de memria apropriada para
armazenar um dado e indicar que seu contedo ser referenciado pelo nome que foi escolhido.
Pelo exemplo, pode-se ver que, havendo mais de uma varivel do mesmo tipo, elas
podem ser declaradas na mesma linha, separadas por vrgula.
11
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
*****************************************************************************
2.7 EXERCCIOS PROPOSTOS
a) X1YZ
b) A9PQ
c) GF,3W
d) 123casa
e) Lpis_cor
f) Aula hoje
g) inteiro
2) Escreva o tipo de dado ideal para se representar cada uma das seguintes informaes:
a) O nmero de telefone
b) Nmero de estudantes da universidade
c) Se uma pessoa gosta de bala ou no
d) O valor de uma casa
e) A cor de um carro
f) Resultado de uma diviso
a) 13 de agosto
b) 0.8
c) ?
d) 27
e) -27
12
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exemplos: a = b * 5;
y = n * (b +c);
+ Adio
- Subtrao
* Multiplicao
/ Diviso
% Resto inteiro da diviso entre inteiros
Observao: o resultado da diviso entre dois inteiros ser tambm um inteiro. Porm, basta que
um dos valores envolvidos na operao de diviso seja real, para que o resultado
seja um real.
Sempre retornam um valor (resultado), cujo tipo depende do que est definido para cada
funo;
Dependem sempre dos parmetros (argumentos), que so colocados dentro dos
parnteses, separados por vrgula, se houver necessidade de mais de um.
13
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Tipo do Tipo do
Resultado Funo
argumento resultado
Logaritmo neperiano log(x) real real
log10(x)
Logaritmo base 10 real Real
Retorna o resto da diviso de x por y fmod (25.55 , 2) = 1.55 fmod(x,y) real, real real
14
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exemplos: A>B
(X = Y) OU (X = Z)
Uma relao uma comparao realizada entre valores do mesmo tipo, que podem ser
constantes, variveis ou expresses. O resultado de uma operao relacional ser sempre lgico
(verdadeiro ou falso).
So os seguintes os operadores relacionais:
= Igualdade
> Maior
< Menor
<> Diferente
<= Menor ou igual
>= Maior ou igual
15
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Operador OU: utilizado quando necessitamos estabelecer que basta que uma das
relaes lgicas de uma sentena seja verdadeira. tambm conhecido como OU INCLUSIVO.
Operador XOU: utilizado quando necessitamos estabelecer que apenas uma das
relaes lgicas de uma sentena pode ser verdadeira. tambm conhecido como OU
EXCLUSIVO.
Condio O Condio
V F
F V
16
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
1) NO
2) E
3) OU
4) XOU
*****************************************************************************
EXERCCIOS RESOLVIDOS:
17
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
*****************************************************************************
3.4 EXERCCIOS PROPOSTOS
1) Considerando X 1, Y 2 e Z 5, desenvolva:
a) (Z % Y/Y)
b) X + Y + Z/3
c) (sqrt(Z/Y + X * Y))
d) Z abs(X sqrt(Y * Y))
a) NO A E B OU A E NO B
b) NO(NO(A OU B) E (A OU B))
c) A OU B E NO A OU NO B
d) (A OU B) E (NO A OU NO B)
18
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
19
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O comando de atribuio utilizado para atribuir valor a uma varivel, que dever ser do
mesmo tipo da varivel. Utiliza-se para simbolizar a atribuio o sinal e l-se recebe.
Identificador valor;
raio 5.0;
estabelece que a varivel raio recebe o valor 5.0, o que, em termos de programao,
significa que a varivel raio armazenar na memria do computador o valor 5.
20
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
leia(identificador_da_variavel);
No exemplo acima, a instruo leia(raio) permite que seja fornecido um valor vlido para
a varivel raio. Desta forma, aps executada a instruo, a varivel armazenar na memria do
computador o valor que foi lido, se este for do mesmo tipo da varivel. A seguir, ser executada
a prxima instruo que atribui varivel area o resultado da expresso Pi*pow(raio,2).
escreva(texto, identificador_da_variavel);
21
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
*****************************************************************************
4.4 EXERCCIOS PROPOSTOS
(Exerccios identificados com (*) esto resolvidos ao final do captulo)
2. (*) Escreva um algoritmo que tenha como entrada o nome de um funcionrio, o nmero de
horas que trabalhou e o nmero de filhos com menos de 18 anos que possui. O algoritmo
dever fornecer como sada o salrio que este funcionrio ir receber, considerando:
Um valor igual a R$ 10.00 por hora trabalhada;
Um acrscimo de R$50.00 por filho;
Um desconto de 9% como contribuio ao INSS, sobre o total de ganhos.
3. Escreva um algoritmo que recebe como entrada trs valores numricos reais (X, Y e Z),
calcula e informa:
A rea do tringulo que tem X por base e Y por altura;
O comprimento da circunferncia de raio Z;
A rea do trapzio que tem X e Z por bases e Y por altura;
A rea do retngulo de lados Y e Z;
A rea da superfcie de um cubo que tem X por aresta.
4. (*) Escreva um algoritmo que leia dois valores numricos inteiros, armazenando-os em duas
variveis (A e B). O algoritmo dever trocar o valor das duas variveis, de tal forma que em A
fique armazenado o valor de B e vice-versa. Ao final, o algoritmo dever escrever os valores
de A e B.
5. Faa um algoritmo para calcular a rea da figura hachurada a seguir, sabendo que o dimetro
do crculo menor igual ao raio do crculo maior. Calcule, tambm, a percentagem da rea do
crculo menor sobre a rea do crculo maior.
6. (*) Escreva um algoritmo para calcular e informar o valor de converso para graus
centgrados de uma temperatura em graus Farenheit, sabendo que C = (5 * (F - 32))/9.
22
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
8. Escreva um algoritmo que leia dois valores numricos do tipo inteiro e escreva o resultado da
soma dos quadrados destes nmeros e o resultado da diviso dos dois valores.
11. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano,
P(x1,y1) e P(x2,y2), escreva a distncia entre eles. A frmula que efetua tal clculo :
12. (*) Escreva um algoritmo que leia trs nmeros inteiros e positivos (A, B, C) e calcule a
seguinte expresso:
sendo
13. Faa um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a
expressa apenas em dias.
15. Faa um algoritmo para calcular o valor total em metros quadrados necessrios para revestir
as paredes de um banheiro.
16. Faa um algoritmo que leia o nmero de votos brancos, nulos e vlidos de uma eleio e
escreva o percentual que cada um representa em relao ao total de votantes.
17. Uma loja de brinquedos oferece descontos de 15% sobre o preo de venda de todo o seu
estoque. Escreva um algoritmo que leia o preo de um brinquedo antes da promoo e
calcule quanto deve ser o novo preo.
19. O custo ao consumidor de um carro novo a soma do custo de fbrica mais a percentagem
do distribuir e o percentual de impostos. Faa um algoritmo que leia estas informaes e
fornea o valor a ser pago por um automvel.
23
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
*****************************************************************************
4.5 EXERCCIOS RESOLVIDOS
Exerccio 2:
Algoritmo C
Exerccio 4:
Algoritmo C
algoritmo troca; #include <stdio.h>
inteiro a, b, aux; int a,b,aux;
24
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exerccio 6:
Algoritmo C
algoritmo temperatura; #include <stdio.h>
Exerccio 12:
Algoritmo C
algoritmo Ex_12; #include <stdio.h>
#include <math.h>
int a, b, c;
float d, r, s; int a,b,c;
float d,r,s;
inicio
leia(a, b, c); void main(void)
r pow((a + b), 2); {
s pow((b + c), 2); printf("Digite os valores de a, b e c\n");
d (r + s)/2; scanf("%d%d%d", &a, &b, &c);
escreva(d); r = pow((a + b), 2);
fim. s = pow((b + c), 2);
d = (r + s)/2;
printf ( "\n Diviso dos valores: %5.2f\n", r, d);
return 0;
}
25
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
5. COMADOS CODICIOAIS
Os comandos condicionais permitem que sejam determinadas as instrues a serem
executadas em funo do resultado de expresses lgicas (condies).
5.1.1 SITAXE:
se (condio) ento
Comando1;
seno
Comando2;
Onde:
se, seno e ento so palavras reservadas do comando;
condio uma expresso lgica.
se (condio) ento
inicio
Comando;
Comando;
Comando;
fim;
seno
inicio
Comando;
26
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Comando;
fim;
O comando se pode ser, tambm, utilizado na sua forma simples, onde no aparece o
seno:
se condio ento
Comando ou bloco;
SITAXE:
se condio1 ento
se condio2 ento
Comando ou Bloco1;
seno
Comando ou Bloco2;
seno
se condio3 ento
Comando ou Bloco3;
seno
Comando ou Bloco4;
No caso de condio1 ser verdadeira, ser testada condio2 que, se for verdadeira,
levar execuo do Bloco1. Se condio2, porm, for falsa, ser executado o comando
seno que conduz a execuo do Bloco2. Se condio1 for falsa, levar direto para o
seno do primeiro se onde ser avaliada a condio3.
Podemos encadear quantos comandos se forem necessrios. A necessidade ou no de
delimitar blocos depender do nmero de comandos dependentes.
5.1.3 EXEMPLO:
algoritmo Salario;
27
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
inicio
leia(sal_base);
se sal_base < 300 ento
sal_final sal_base * 1.30;
seno
se sal_base >= 300 e sal_base < 1000 ento
sal_final sal_base * 1.20;
seno
sal_final sal_base * 1.1;
escreva(O salrio com abono R$ , sal_final);
fim.
5.2.1 SITAXE:
escolha seletor
Caso1: comando ou bloco;
Caso2: comando ou bloco;
Cason: comando ou bloco;
seno
Comando ou Bloco;
fim;
Onde:
escolha, seno e fim so palavras reservadas do comando;
seletor uma varivel ou expresso de tipo escalar (exceto real);
Caso1,...Cason so os valores esperados para seletor.
escolha N1
0 .. 10:
Comando ou bloco;
11 .. 20:
Comando ou bloco;
seno
Comando ou bloco;
fim;
28
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
escolha Letra
A,a:
Comando ou bloco;
B, b:
Comando ou bloco;
C .. F:
Comando ou bloco;
seno
Comando ou bloco;
fim;
5.2.2 EXEMPLO:
Faa um algoritmo que leia dois nmero reais (N1 e N2) e um caractere. Conforme o valor lido
para o caractere, o algoritmo dever calcular e informar:
Se caractere for +, dever ser calculada a soma de N1 e N2;
Se caractere for -, dever ser calculada a diferena entre os dois valores;
Se caractere for *, dever ser calculado o produto de N1 e N2;
Se caractere for /, dever ser calculada a diviso de N1 por N2.
algoritmo calculadora;
real n1,n2;
caractere operador;
inicio
leia(n1,n2);
leia(operador);
escolha operador
+: inicio
escreva(O resultado da soma entre n1 e n2 : );
escreva(n1+n2);
fim;
-: inicio
escreva(O resultado da diferena entre n1 e n2 : );
escreva(n1-n2);
fim;
*: inicio
escreva(O resultado da multiplicao entre n1 e n2 : );
escreva(n1*n2);
fim;
/: inicio
escreva(O resultado da diviso entre n1 e n2 : );
escreva(n1/n2);
fim;
seno
escreva(Operador invlido!);
fim;
fim.
29
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Observe no exemplo acima que os caracteres so sempre escritos entre apstrofes e que
eles so do mesmo tipo da varivel operador. Observe, ainda, que o comando escolha
permite que apenas um dentre os vrios valores apresentados para a varivel seletora seja
escolhido. Caso nenhum valor seja adequado, ser executado o comando seno.
Identicamente ao comando se, tambm o comando escolha poder ser utilizado sem o
seno. Seria escrito, ento, com a seguinte sintaxe:
escolha seletor
Caso1:
Comando ou bloco;
Caso2:
Comando ou bloco;
Cason:
Comando ou bloco
fim;
*****************************************************************************
5.3 EXERCCIOS PROPOSTOS:
(Exerccios identificados com (*) esto resolvidos ao final do captulo)
1. (*) Faa um algoritmo para calcular a mensalidade a ser paga pelos alunos de uma academia
de ginstica que pratica os seguintes descontos:
Mulheres com idade igual ou inferior a 15 anos tero desconto de 15%;
Mulheres com idade superior a 15 anos tero desconto de 10%;
Homens com idade inferior a 22 anos no tero desconto;
Homens com idade igual ou superior a 22 anos tero desconto de 20%.
Considerar a mensalidade bsica como R$45.00.
2. Faa um algoritmo para calcular o resultado de um aluno aps trs provas, considerando a
seguinte tabela:
Mdia igual ou superior a 7 aluno aprovado;
Mdia igual ou superior a 5 e inferior a 7 aluno em exame;
Mdia inferior a 5 aluno reprovado.
A mdia do aluno obtida atravs do clculo de mdia ponderada, considerando peso = 3
para a Nota 1, peso = 2 para a Nota 2 e peso = 5 para a Nota 3.
4. (*) Faa um algoritmo que l um cdigo (1, 2, 3 ou 4) e dois valores do tipo inteiro, calcula e
fornece:
A adio dos nmeros para cdigo = 1
A subtrao dos nmeros para cdigo = 2
A multiplicao dos nmeros para cdigo = 3
A diviso dos nmeros para cdigo = 4.
30
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
5. Faa um algoritmo que calcula as razes de uma equao do 2 Grau, considerando que no
possvel a diviso por zero (informar caso ocorra) e considerando tambm invivel o clculo de
razes imaginrias (informar caso ocorra).
6. Faa um algoritmo que l dois valores numricos e informa se so mltiplos entre si.
7. Faa um algoritmo para ler trs valores numricos e escrever o maior entre eles. Considere
que no haver valores iguais.
8. Dados trs valores, A, B e C, verificar se eles podem ser lados de um tringulo. Caso sejam,
dever informar sua rea e se compem um tringulo issceles, escaleno ou equiltero.
A = s * ( s a)( s b)( s c)
9. Faa um algoritmo para ler trs valores inteiros e escrev-los em ordem crescente (suponha
nmeros diferentes).
10. Escreva um algoritmo que leia um valor referente a dinheiro (por exemplo R$540.00) e
calcula qual o menor nmero possvel de notas de 50.00, 10.00, 5.00 e 1.00 reais em que o valor
lido pode ser decomposto. O algoritmo dever fornecer o valor lido e a relao de notas
necessrias.
11. (*) Escreva um algoritmo que l a hora de incio e fim de um jogo (considere apenas horas
inteiras) e calcula a durao do jogo, sabendo-se que o tempo mximo de durao do jogo
inferior a 24 horas e que o jogo pode iniciar em um dia e terminar no seguinte.
12. Elabore o mesmo algoritmo acima descrito, porm considerando agora a possibilidade de ler
minutos.
14. Faa um programa que l quatro valores, I, A, B e C, onde I um nmero inteiro e positivo e
A, B e C so quaisquer valores reais. O programa deve escrever os valores lidos e:
se I = 1, escrever os trs valores A, B e C em ordem crescente;
se I = 2, escrever os trs valores A, B e C em ordem decrescente;
se I = 3, escrever os trs valores A, B e C de forma que o maior valor fique entre os
outros dois;
se I no for um dos trs valores acima, escrever uma mensagem indicando isto.
31
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
15. Uma loja fornece 5% de desconto para funcionrios e 10% de desconto para clientes
especiais. Faa um programa que calcule o valor total a ser pago por uma pessoa. O programa
dever ler o valor total da compra efetuada e um cdigo que identifique o tipo de cliente.
16. A partir do preo vista de um determinado produto, calcular o preo total a pagar e o valor
da prestao mensal, referentes ao pagamento parcelado. Se o pagamento for parcelado em trs
vezes dever ser dado um acrscimo de 10% no total a pagar. Se for parcelado em 5 vezes, o
acrscimo de 20%.
Escrever um algoritmo que leia o cdigo do item pedido e a quantidade e calcule o valor a
ser pago por aquele lanche. Considere que a cada execuo somente ser calculado um item.
18. Uma empresa conceder um aumento de salrio aos seus funcionrios, varivel de acordo
com o cargo, conforme a tabela abaixo. Faa um algoritmo que leia o salrio e o cargo de um
funcionrio e calcule o novo salrio. Se o cargo do funcionrio no estiver na tabela, ele dever,
ento, receber 40% de aumento. Ao final, mostre o salrio antigo, o novo salrio e a diferena
entre o antigo e o novo salrios.
20. As mas custam R$0.50 cada se forem compradas menos do que uma dzia, recebem 5%
de desconto se for comprada uma dzia e 10% de desconto se forem compradas duas dzias ou
mais. J as peras, custam R$0.65 cada se for comprada menos do que uma dzia, recebem 4%
de desconto se for comprada uma dzia e 8% de desconto se forem compradas trs dzias ou
mais. Escreva um algoritmo que leia a quantidade comprada de cada fruta, calcule e escreva o
custo total da compra.
21. Faa um programa para ler o nome e o nmero de votos de quatro candidatos em uma
eleio. Ao final dever ser escrito o nome do vencedor.
32
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Escreva um algoritmo que leia o nmero de litros vendidos, o tipo de combustvel (codificado
da seguinte forma: A lcool, G - gasolina), calcule e imprima o valor a ser pago pelo cliente
sabendo que o preo da gasolina de R$ 2,63 o litro e do lcool R$ 1,56.
23. O departamento que controla o ndice de poluio do meio ambiente mantm controle sobre
3 grupos de indstrias que so altamente poluidoras. Faa um algoritmo que, aps ler o tipo da
empresa e o nvel de poluio do ar, emite uma notificao adequada conforme os ndices da
tabela abaixo:
24. Escrever um algoritmo que leia a idade de dois homens e duas mulheres (considere que a
idade dos homens ser sempre diferente, assim como a das mulheres). Calcule e escreva a soma
das idades do homem mais velho com a mulher mais nova e o produto das idades do homem
mais novo com a mulher mais velha.
25. Faa um algoritmo que leia uma data (dia, ms e ano), verifique e informe se ela vlida.
*****************************************************************************
5.4 EXERCCIOS RESOLVIDOS:
Exerccio 1:
Algoritmo C
algoritmo mensalidade; #include <stdio.h>
#include <stdlib.h>
const mens = 45;
const mens = 45;
inteiro idade;
caractere sexo; int idade;
real total; char sexo;
float total;
inicio
total mens; void main(void){
leia(sexo, idade); total = mens;
se sexo = f ento printf("Digite sexo e idade\n");
se idade <= 15 ento scanf("%c%d", &sexo, &idade);
total mens * 0.85; if (sexo == 'F' || sexo == 'f')
seno if (idade <= 15)
total mens * 0.9; total = mens * 0.85;
seno else
se idade >= 22 ento total = mens * 0.9;
total mens * 0.8; else
escreva(total); if (idade >= 22)
fim. total = mens * 0.8;
printf("\nMensalidade: %.2f\n", total);
return (EXIT_SUCCESS);
}
33
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exerccio 4:
Algoritmo C
algoritmo operacoes; #include <stdio.h>
#include <stdlib.h>
inteiro n1, n2, codigo;
real r; int n1, n2, codigo;
float r;
inicio
leia(codigo, n1,n2); void main(void){
escolha codigo printf("1 - adicao 2 - subtracao 3 - multiplicacao 4 - divisao\n");
1: printf("Digite a opcao\n");
r n1 + n2; scanf("%i", &codigo);
2 printf("Digite os dois valores inteiros\n");
r n1 - n2; scanf("%i%i", &n1, &n2);
3 switch (codigo){
r n1 * n2; case 1:
4: r = n1 + n2;
r n1/n2; break;
seno case 2:
escreva('Cdigo invlido!'); r = n1 - n2;
fim; break;
escreva('Resultado: ', r); case 3:
fim. r = n1 * n2;
break;
case 4:
r = n1/n2;
break;
default:
printf("\nOpcao invalida!\n");
}
printf("Resulatdo: %.2f\n", r);
return 0;
}
Exerccio 11:
Algoritmo C
algoritmo jogo; #include <stdio.h>
34
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
6. COMADOS DE REPETIO
Um de nossos exemplos anteriores previa o clculo da mdia de um aluno e que fosse
fornecido seu resultado final (aprovado, reprovado) em funo desta mdia. Normalmente este
clculo necessrio no s para um aluno, mas para toda uma turma, que poderia, digamos, ser
composta por 45 alunos. Neste caso, deveramos declarar 45 vezes mais variveis, considerando
um conjunto bsico de variveis para cada aluno. Imaginem o tamanho que este algoritmo teria e
tudo isto porque iremos repetir um bloco bsico de instrues, alterando apenas as variveis.
Felizmente isto pode ser feito de forma muito mais gil e automtica (e j era de esperar porque
em programao buscamos conciso, agilidade, menor tempo e menor esforo).
Existem comandos apropriados para determinar a repetio de um bloco de instrues.
Tais comandos so trs: comando para, comando enquanto e comando repita. Eles se
diferenciam tanto por utilizarem ou no uma expresso lgica para testar a repetio, quanto por
testarem a realizao da repetio antes ou depois da execuo do bloco de instrues. Vamos
estud-los.
6.1.1 SITAXE:
Onde:
para, at e faa so palavras reservadas do comando;
var_de_controle uma varivel ou expresso pertencente ao tipo escalar (exceto
real);
valor_inicial e valor_final so do mesmo tipo de var_de_controle e
delimitam a repetio do comando ou bloco de comandos.
6.1.2 EXEMPLO:
Faa um algoritmo para calcular o resultado final de 45 alunos de uma turma, considerando que
cada aluno tem duas notas e que ser considerado aprovado aquele aluno cuja mdia aritmtica
das notas for igual ou superior a 7. Considere como dados de entrada o nome do aluno e suas
notas. Dever ser fornecido, ao final, o nome do aluno, sua mdia e resultado (aprovado ou
reprovado).
35
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
algoritmo resultado_final;
caractere nome;
real n1, n2, m ;
inteiro x;
inicio
para x 1 at 45 faa
inicio
leia(nome);
leia(n1, n2);
m (n1+n2)/2;
se m >= 7 ento
escreva(nome, est aprovado com mdia , m)
seno
escreva(nome, foi reprovado e sua mdia , m);
fim;
fim.
Analisemos o exemplo:
A varivel de controle do comando para inicia a varivel x com o valor 1 e x ter seu
valor incrementado em uma unidade at que ultrapasse o valor limite estabelecido em 45. A cada
novo valor desta varivel de controle, que ainda no superou o valor limite, ser executado o
bloco de instrues que lhe segue, onde so lidos os dados para cada aluno e determinado o seu
resultado. A repetio dos comandos ser executada, portanto, at que a varivel x atinja o valor
46, que ultrapassa o limite superior de x.
O acrscimo dado a varivel de controle do comando para denominado passo. Caso o
problema exija, possvel determinar um acrscimo na varivel de controle maior do que a
unidade, o que seria escrito na seguinte sintaxe:
36
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
6.2.1 COTADORES
Muitas vezes, dentro da lgica para resoluo de uma tarefa, necessitamos que uma
varivel seja encarregada de armazenar o nmero de vezes que determinada condio foi
satisfeita.
EXEMPLO:
Faa um algoritmo para ler 20 valores inteiros e informar quantos destes so pares.
algoritmo pares;
inicio
contador 0;
para x 1 at 20 faa
inicio
leia(numero);
se numero % 2 = 0 ento
contador contador + 1;
fim;
escreva(Foram lidos , contador, valores pares.);
fim.
Observe a necessidade de atribuir zero inicialmente ao contador, para garantir que a cada
nova execuo do programa, no permaneam valores anteriores na varivel, o que iria fornecer
um resultado errado.
Uma varivel contador uma varivel que recebe um valor inicial (normalmente
zero) e incrementada posteriormente de algum valor constante (geralmente a unidade).
37
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
6.2.2 ACUMULADORES
algoritmo media_da_turma;
caractere nome;
real n1, n2, m, acumulador;
inteiro x;
inicio
acumulador 0;
para x 1 at 45 faa
incio
leia(nome);
leia(n1, n2);
m (n1+n2)/2;
acumulador acumulador + m;
se m >= 7 ento
escreva(nome, est aprovado com mdia , m)
seno
escreva(nome, foi reprovado e sua mdia , m);
fim;
escreva(A mdia da turma , acumulador/45);
fim.
Uma varivel utilizada como acumulador uma varivel que recebe um valor inicial
(geralmente zero) e incrementada posteriormente de um valor varivel.
6.3.1 SITAXE:
Onde:
enquanto e faa so palavras reservadas do comando;
condio uma expresso lgica.
38
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
6.3.2 EXEMPLOS
Exemplo 1: Faa um algoritmo para calcular o resultado final de 45 alunos de uma turma,
considerando que cada aluno tem duas notas e que ser considerado aprovado aquele aluno cuja
mdia aritmtica das notas for igual ou superior a 7. Considere como dados de entrada, o nome
do aluno e suas notas. Dever ser fornecido o nome do aluno, sua mdia e resultado.
algoritmo resultado_final2;
caractere nome;
real n1, n2, m;
inteiro x;
inicio
x 0;
enquanto x < 45 faa
inicio
leia(nome);
leia(n1, n2);
m (n1+n2)/2;
se m >= 7 ento
escreva(nome, est aprovado com mdia , m);
seno
escreva(nome, foi reprovado e sua mdia , m);
x x + 1;
fim;
fim.
39
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exemplo 2: Faa um algoritmo que dever calcular e informar a mdia de n nmeros inteiros
lidos, encerrando a leitura destes nmeros com a entrada de um valor negativo.
algoritmo media_de_valores;
inicio
cont 0;
acum 0;
leia(valor);
enquanto valor >= 0 faa
inico
acum acum + valor;
cont cont + 1;
leia(valor);
fim;
se cont > 0 ento
inicio
media acum/cont;
escreva(A mdia entre os valores lidos : , media);
fim;
fim.
Observe: para que seja possvel a realizao do primeiro teste no comando enquanto
necessria a leitura prvia de valor e a varivel valor dever ser lida novamente antes do
final do bloco de repetio, para permitir novo teste no comando enquanto.
6.4.1 SITAXE:
repita
Comando(s);
at condio;
Onde:
repita e at so palavras reservadas do comando;
condio uma expresso lgica.
40
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O comando repita diferencia-se dos dois comandos de repetio anteriores por realizar
o teste da condio de repetio aps a execuo de todos os comandos e por no necessitar da
forma de bloco para delimitar os comandos que lhe so dependentes.
6.4.2 EXEMPLOS:
Exemplo 1: Faa um algoritmo para calcular o resultado final de 45 alunos de uma turma,
considerando que cada aluno tem duas notas e que ser considerado aprovado aquele aluno cuja
mdia aritmtica das notas for igual ou superior a 7. Considere como dados de entrada, o nome
do aluno e suas notas. Dever ser fornecido o nome do aluno, sua mdia e resultado.
algoritmo resultado_final3;
caractere nome;
real n1, n2, m;
inteiro x;
inicio
x 0;
repita
leia(nome);
leia(n1, n2);
m (n1+n2)/2;
se m >= 7 ento
escreva(nome, est aprovado com mdia , m)
seno
escreva(nome, foi reprovado e sua mdia , m);
x x + 1;
at x = 45;
fim.
Como o comando repita tambm controla a repetio atravs de uma condio e temos
um nmero conhecido (45) de repeties a executar, necessitamos de uma varivel para servir
como contador de repeties e sobre o seu valor estabelecermos o teste. Foi escolhida para
contador a varivel x, que inicia com um valor igual a zero e incrementada aps cada repetio
em uma unidade.
Exemplo 2: Faa um algoritmo que dever calcular e informar a mdia de n nmeros inteiros
lidos, encerrando a leitura destes nmeros com a entrada de um valor negativo.
algoritmo media_de_valores;
41
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
inicio
cont 0;
acum 0;
repita
leia(valor);
se valor >= 0 ento
inicio
acum acum + valor;
cont cont + 1;
fim;
at valor < 0;
se cont > 0 ento
inicio
media acum/cont;
escreva(A mdia entre os valores lidos : , media);
fim;
fim.
Observe: na resoluo do segundo exemplo foi necessrio introduzir mais um teste para
impedir de acrescentar ao acumulador um valor negativo e para que o mesmo no fosse contado
como valor vlido. Isto mostra que, devido a sua caracterstica de testar a condio depois de
executar os comandos da repetio, no ser sempre o comando repita uma boa escolha. Neste
exemplo o comando enquanto proporciona uma soluo melhor construda.
*****************************************************************************
6.5 EXERCCIOS PROPOSTOS
(Exerccios identificados com (*) esto resolvidos ao final do captulo)
1. (*) Faa um algoritmo que leia cinco valores inteiros, calcule e escreva:
a soma dos nmeros pares;
o menor entre os valores lidos.
2. Faa um programa que calcule o fatorial de um nmero lido (n) por repetidas vezes. Encerra
com n menor que zero.
3. Faa um algoritmo que apresente a srie de Fibonacci, at o dcimo quinto termo. A srie de
Fibonacci formada pela seqncia: 1, 1, 2, 3, 5, 8, 13, 21, 34 (esta srie se caracteriza por
iniciar com dois valores determinados que formam o primeiro e segundo termos (t1 = 1 e t2 = 1)
e, a partir destes, cada termo obtido atravs da soma dos seus dois termos anteriores (t3 = t1+
t2) .
4. Faa um programa que l um nmero e informa se ele primo. (Os nmeros primos so
divisveis por um e por si mesmos somente)
42
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
5. Duas tartarugas possuem 3,1 e 4,5 cm respectivamente. A menor tartaruga cresce 0,21 cm ao
ano e a maior 0,16 cm ao ano. Faa um algoritmo que calcule o nmero de anos necessrios para
que a tartaruga menor fique maior que a maior.
7. Faa um algoritmo que leia um nmero inteiro repetidas vezes, paralisando a leitura com
nmero <= zero e escreva, para cada valor lido, a soma de todos os nmeros menores e no sub-
mltiplos do nmero lido.
8. (*) Faa um programa que l duas notas de alunos e calcula suas mdias individuais e a mdia
geral da turma. Finaliza com 5 alunos ou quando a mdia geral for menor ou igual a cinco.
9. Faa um programa que l nmeros inteiros e finaliza quando a soma destes atinge um valor
superior a 30.
10. Faa um algoritmo para ler as notas (N1 e N2) de alunos (para um total de 5 alunos) e
calcular suas mdias individuais, escrevendo, para cada um: "aprovado" - se mdia superior ou
igual a sete, "reprovado" - se inferior a sete. O programa tambm dever informar a mdia geral
da turma e o percentual de alunos aprovados.
11. Faa um algoritmo que calcule a mdia aritmtica de todos os nmeros pares que forem
fornecidos pelo usurio. O valor de finalizao deve ser a entrada do nmero zero. O usurio
pode entrar com nmeros mpares, mas estes no sero acumulados.
12. Faa um algoritmo para apresentar os quadrados dos nmeros inteiros mltiplos de 5 no
intervalo de 15 a 100.
13. Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma
adega, tendo como dados de entrada tipos de vinho (branco, tinto e ros). Especifique a
porcentagem de cada tipo sobre o total geral de vinhos. Considere que a quantidade de vinhos
desconhecida (usar como finalizador da leitura a constante fim).
14. (*) Faa um algoritmo que escreve a tabuada at 10 dos dez primeiros nmeros inteiros
positivos permitindo a repetio do clculo para novo nmero aps ler Sou Ncomo resposta
para: Escrever nova tabuada(S/N)?.
43
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O ltimo valor (para encerrar o programa), que no ser considerado, ter CPF igual a zero.
Deve ser lido o valor atual do salrio mnimo.
16. Construa um algoritmo que, dado um conjunto de valores inteiros e positivos, determine qual
o menor e o maior valor do conjunto. O final do conjunto de valores conhecido atravs do 0
(zero), que no deve ser considerado.
17. A converso de graus Farenheidt para centgrados obtida pela frmula C = (5*(f-32))/9.
Escreva um algoritmo que calcule e escreva uma tabela de graus centgrados em funo de graus
Farenheidt que varie de 50 a 150, de 1 em 1.
18. Elabore um algoritmo que calcule o valor de H, sendo que ele determinado pela srie:
19. Elabore um algoritmo que efetue a soma de todos os nmeros mpares que so mltiplos de
trs e que se encontram no conjunto dos nmeros de 1 at 500.
20. Considerando a altura dos N alunos de uma turma, faa um algoritmo para calcular a mdia
das alturas e determinar a quantidade de alunos com altura > 1.60 e < 1.75 m. Encerrar leitura
com altura <= 0.
21. Um banco utiliza recursos computacionais para efetuar suas transaes e uma das
necessidades bancrias saber o total de dinheiro que o banco girou durante o dia. Para tanto, a
cada dbito ou crdito que o caixa executa, digitado o respectivo valor, sendo que o dbito
sempre precedido do sinal negativo. Faa um algoritmo para calcular o total de crditos e dbitos
e o total global (movimento do dia) em valor absoluto. Encerrar entradas com zero.
22. Faa um algoritmo que escreva os 30 primeiros termos da seguinte srie: 0, 1, 2, 5, 12, 29.
23. Foi realizada uma pesquisa em um edifcio para otimizar a utilizao dos elevadores, para um
nmero indeterminado de usurios. O edifcio possui quatro elevadores (a, b, c, d) que so
usados livremente. Os usurios responderam as seguintes questes:
qual o elevador utilizado(a,b,c,d);
qual o turno, seguindo os cdigos: manh, tarde e noite (m, t, n).
O algoritmo deve fornecer o elevador mais utilizado e qual o turno em que os elevadores so
mais utilizados. Encerrar com um tipo invlido para elevador.
24. Faa um algoritmo que leia dia, ms e ano respectivamente, ou seja, uma data qualquer, e
faa consistncia desta data (avaliar se valida ou no). O algoritmo dever prever teste para ano
bissexto. Faa o algoritmo para ler datas repetidamente, finalizando leitura com dia = 0.
25. Faa um programa para verificar se um valor lido nmero perfeito. Para que um valor seja
considerado nmero perfeito, a soma dos seus divisores deve resultar num valor igual a ele
mesmo. (Ex: os divisores de 6 so: 1, 2, 3 que somados totalizam 6 6 quadrado perfeito).
44
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
26. Faa um programa que receba os nomes de 5 produtos de uma loja e o preo unitrio de cada
um deles (em reais). O programa dever informar, com mensagens explicativas:
o nome dos produtos cujo preo superior a 20 reais;
o nome e o preo correspondente dos produtos cujo preo inferior a 10 reais;
o preo mdio dos produtos;
27. Escrever um algoritmo que leia um nmero inteiro e positivo n por um nmero
indeterminado de vezes. Se n for par, verificar e informar quantos divisores possui. Se n for
mpar e menor que 8, escrever seu fatorial. Se n for mpar e maior ou igual a 8, escrever a soma
dos inteiros de 1 a n. Finalizar com n <= 0.
28. Escreva um algoritmo que l um nmero no determinado de pares de valores a, b (com a <
b) todos inteiros e positivos, um par de cada vez, calcula e escreve a soma dos n inteiros
consecutivos a partir de a inclusive at b. Encerrar com valor = 0.
29. Escrever um algoritmo que l n, inteiro e positivo, calcula e escreve o termo de ordem n da
sucesso abaixo:
ordem: 1 2 3 4 5 6 7 8 9 10
termo -1 0 5 6 11 12 17 18 23 24
30. Fez-se uma pesquisa entre os 2500 habitantes de uma regio para coletar os seguintes dados:
sexo, idade e altura. Escreva um algoritmo que l estas informaes e informa:
A mdia da idade do grupo;
A mdia da altura das mulheres com mais de 21 anos;
A maior altura entre os homens;
O percentual de pessoas com idade entre 18 e 30 anos.
31. Foi feita uma pesquisa nas 20 principais cidades do estado para coletar dados sobre acidentes
de trnsito. Foram obtidos os seguintes dados:
Cdigo da cidade (1 a 20);
Nmero de veculos de passeio do ano 2001;
Nmero de acidentes com vtimas do ano 2001.
Escreva um algoritmo que l um conjunto de dados, conforme acima descrito, para cada
cidade, um de cada vez, calcula e escreve:
Qual o maior e o menor nmero de acidentes e a que cidade pertencem;
Qual a mdia de veculos das cidades pesquisadas;
Qual a mdia de acidentes entre as cidades pesquisadas.
32. Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa
regio. Foram entrevistadas 500 pessoas e coletados os seguintes dados:
sexo: M (masculino) e F (feminino);
cor dos olhos: A (azuis), V (verdes) e C (castanhos);
cor dos cabelos: L (loiros), C (castanhos) e P (pretos);
idade.
45
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Deseja-se saber:
a maior idade do grupo;
a quantidade de indivduos do sexo feminino, cuja idade est entre 18 e 35 anos e que
tenham olhos verdes e cabelos loiros.
33. Faa um algoritmo que leia o nome e a idade dos nadadores de uma competio e
classifique-os nas categorias abaixo:
5 a 7 anos : Infantil A;
8 a 11 anos: Infantil B;
12 a 14 anos: Juvenil A;
15 a 17 anos: Juvenil B.
O algoritmo termina quando for lida idade = 0, devendo, ento, ser informado:
quantos nadadores participaram em cada categoria;
qual o percentual da cada categoria sobre o total de nadadores.
34. Foi realizada uma pesquisa em Santa Cruz, com um grupo de 1000 pessoas. De cada
entrevistado foram colhidos os seguintes dados:
clube de preferncia (G- Grmio; I Internacional; O Outros);
cidade de origem (S Santa Cruz; O- Outras).
Deseja-se saber:
Nmero total de torcedores do Grmio e do Internacional;
Nmero de pessoas nascidas em Santa Cruz e que no torcem nem pelo Grmio e nem
pelo Inter.
35. A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o
salrio e nmero de filhos. A prefeitura deseja saber:
mdia do salrio da populao;
mdia do nmero de filhos;
maior salrio;
percentual de pessoas com salrio at R$200,00.
Encerrar a leitura dos dados com salrio negativo.
36. Em uma eleio presidencial existem quatro candidatos. Os votos so informados atravs de
cdigos. Os dados utilizados para a contagem dos votos obedecem seguinte codificao:
1,2,3,4 = voto para os respectivos candidatos;
5 = voto nulo;
6 = voto em branco;
0 = encerrar leitura.
37. Escrever um algoritmo que leia uma quantidade desconhecida de nmeros e conte quantos
deles esto nos seguintes intervalos: [0, 25], [26, 50], [51, 75] e [76, 100]. A entrada de dados
deve terminar quando for lido um nmero negativo.
46
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
38. Escreva um algoritmo que gere os nmeros de 1000 a 1999 e escreva aqueles que divididos
por 11 do resto igual a 5.
39. Escrever um algoritmo que leia 5 conjuntos de 2 valores, o primeiro representando o nmero
de um aluno, e o segundo representando a sua altura em centmetros. Encontre o aluno mais alto
e o mais baixo. Mostre o nmero do aluno mais alto e do mais baixo, junto com suas alturas.
40. Escrever um algoritmo que calcule e escreva o produto dos nmeros primos entre 92 e 1478.
*****************************************************************************
6.6 EXERCCIOS RESOLVIDOS:
47
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
s s + v; if (v % 2 == 0)
x x + 1; s = s + v;
fim; x++;
escreva(O menor entre os valores lidos }
: , me); printf("\nMenor Valor %i", me);
escreva(A soma dos nmeros pares : , printf("\nSoma dos pares: %i\n", s);
s); }
fim.
Exerccio 8:
Algoritmo C
algoritmo ex_8; #include <stdio.h>
real nota1, nota2, mediaa, mediag, float nota1, nota2, mediaa, mediag, acummedia;
acummedial; int a;
inteiro a;
void main(void){
inicio a = 1;
a 1; acummedia = 0;
acummedia 0; mediag = 10;
mediag 10; while (a <= 5 && mediag > 5){
enquanto ((a <= 5) e (mediag > 5)) faa printf("Digite as 2 notas do aluno %i\n", a);
inicio mediaa = 0;
mediaa 0; scanf("\n%f%f", ¬a1, ¬a2);
leia(nota1, nota2); mediaa = (nota1 + nota2)/2;
mediaa (nota1 + nota2)/2; acummedia = acummedia + mediaa;
acummedia acummedia + mediaa; printf("\nMediaaluno:%.2f\n", mediaa);
mediag acummedia/a; mediag = acummedia/a;
48
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
a a + 1; a = a + 1;
escreva(Mdia aluno: , mediaa); }
fim; printf("\nMedia geral: %.2f\n", mediag);
escreva(Mdia geral: , mediag); }
fim.
Exerccio 14:
Algoritmo C
algoritmo tabuada; #include <stdio.h>
#include <conio.h>
caractere op;
inteiro num, c; int op;
int num, c;
inicio
repita void main(void){
escreva(Digite um nmero:); printf("\nEscrever a tabuada(s/n)?\n");
leia(num); op = getch();
para c1 at 10 faa while (op == s || op == S){
escreva(c, x , num, = , c*num); printf("\nDigite o numero\n");
escreva(Escrever a tabuada?(s/n):); scanf("%i", &num);
leia(op); for (c = 1; c <= 10; c++)
at (op = N) ou (op = n); printf("\n%i x %i = %i", c, num, c*num);
fim. printf("\nEscrever a tabuada(s/n)?\n");
op = getch();
}
return 0;
}
49
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
tipo_base identificador[tamanho];
Onde:
identificador o nome escolhido para a varivel;
tamanho identifica o tamanho do vetor ou quantidade de elementos;
tipo_base o tipo que tm os elementos do vetor.
Exemplo:
inteiro v1[5];
v1 =
Aps a leitura dos dados que sero armazenados em v1 teramos, por exemplo:
v1 = 2 10 5 4 21
Cada elemento de v1 tem uma posio bem definida, de tal forma que podemos afirmar
que v1[2] = 5, ou seja, esta estrutura atribui um ndice a cada um dos seus elementos que
identifica a posio do elemento na estrutura. Estes ndices sero sempre valores inteiros,
consecutivos e a primeira posio do vetor sempre indicada pelo ndice 0 (zero). O acesso a
qualquer dos elementos se dar atravs do seu ndice.
Se fizermos as atribuies v1[1] 25 e v1[4] 30, teremos:
V1 = 2 25 5 4 30
Dadas estas caractersticas, conclumos que a leitura dos elementos de um vetor deve ser
feita utilizando um comando de repetio, onde o teste de repetio se dar sobre uma varivel
50
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
do tipo inteiro, que iniciar com o valor 1 e ser incrementada at atingir o valor que define o
tamanho do vetor.
Adotando o vetor v1, acima declarado, mais uma varivel x do tipo inteiro, teramos:
para x 0 at 4 faa
leia(v1[x]);
para x 0 at 4 faa
escreva(v1[x]);
Exemplo: Faa um algoritmo para ler os elementos de um vetor (A) com 10 elementos inteiros e
construir um segundo vetor (B) de mesma dimenso e cujos elementos sero os elementos de A
multiplicados por 5.
algoritmo vetor1;
inicio
para x 0 at 9 faa
inicio
leia(a[x]);
b[x] a[x] * 5;
fim;
fim.
7.2 MATRIZES
tipo_base identificador[m][n];
Onde:
identificador o nome escolhido para a varivel;
m identifica o nmero de linhas da matriz e n identifica o nmero de colunas;
tipo_base o tipo que tm os elementos da matriz.
51
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exemplo:
inteiro m1[2][3];
m1 =
Aps a leitura dos dados que sero armazenados em m1 teramos, por exemplo:
30 5 22
m1 =
11 42 13
Cada elemento de m1 tem uma posio bem definida, de tal forma que podemos afirmar
que m1[1][2] = 13, ou seja, esta estrutura atribui dois ndices a cada um dos seus elementos
que identificam a posio do elemento na estrutura. O primeiro ndice indica a linha e o segundo
a coluna da matriz.
Se fizermos as atribuies m1[0][1] 25 e m1[1][1] 10, teremos:
30 25 22
m1 =
11 10 13
Dadas estas caractersticas, conclumos que a leitura dos elementos de uma matriz deve
ser feita utilizando dois comandos de repetio aninhados. Adotando a matriz m1, acima
declarada, mais duas variveis x e y, do tipo inteiro, teramos:
para x 0 at 1 faa
para y 0 at 2 faa
leia(m1[x][y]);
para x 0 at 1 faa
para y 0 at 2 faa
escreva(m1[x][y]);
Exemplo: Faa um algoritmo para ler os elementos de uma matriz (A) com 10 x 5 elementos
inteiros e construir uma segunda matriz (B) de mesma dimenso e cujos elementos sero os
elementos de A multiplicados por 5.
algoritmo matriz1;
52
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
inicio
para x 0 at 9 faa
para y 0 at 4 faa
inicio
leia(a[x][y]);
b[x][y] a[x][y] * 5;
fim;
fim.
*****************************************************************************
7.3 EXERCCIOS PROPOSTOS
1. Faa um algoritmo que leia, via teclado, 200 valores do tipo inteiro e armazene-os em um
vetor. A seguir o algoritmo dever informar:
todos os nmeros pares que existem no vetor;
o menor e o maior valor existente no vetor;
quantos dos valores do vetor so maiores que a mdia desses valores.
2. Crie um algoritmo para ler 100 nomes e imprimir o nome caso este seja 'Ado', informando
tambm sua posio no vetor.
3. (*) Crie um algoritmo para ler 30 nmeros reais e imprimir os nmeros que esto nas posies
pares do vetor.
4. Crie um algoritmo para ler 38 nmeros e imprimir a quantidade de nmeros primos existentes
neste vetor.
5. Faa um algoritmo para localizar os nomes iguais existentes entre dois vetores, A com n
elementos e B com m elementos, imprimindo o resultado para o usurio. Considere n = 20 e
m = 25. Considere que no haver repetio de nomes no vetor A e nem no vetor B.
6. Fazer um algoritmo para ler 100 nmeros e imprimir um vetor resultante onde os elementos
sero o dobro dos elementos lidos.
7. Escrever um algoritmo para ler um vetor com 100 elementos reais e inverter a posio destes
elementos, de tal modo que o primeiro elemento venha a ser o ltimo depois da inverso.
8. Dado que para cada aluno de uma turma de 35 alunos se tenha, o seu nome e as notas de 3
avaliaes, faa um algoritmo que:
Imprima o nome e a mdia de cada aluno;
Calcule a percentagem de alunos com mdia acima da mdia da turma;
Para cada aluno imprima uma mensagem dizendo se o aluno tem ou no notas repetidas;
Determine quantos alunos tem pelo menos duas notas acima de 7;
9. Faa um algoritmo que leia nome, idade e sexo de 50 pessoas. Aps a leitura faa:
Imprima o nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira
pessoa.
Imprima o nome e idade de todas as mulheres.
Imprima o nome dos homens menores de 21 anos.
53
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
10. Faa um algoritmo para ler 2 nmeros, n1 e n2 . A soma destes no deve ultrapassar 10, se
ultrapassar, os nmeros devero ser lidos novamente. A seguir, ler um vetor de 10 posies,
de modo que contenha n1 valores mpares e n2 pares, obrigatoriamente.
11. Faa um algoritmo que leia o nome e trs notas de N alunos de um colgio. O usurio
informar qual o valor de N, sendo possvel, porm, um mximo de 50 alunos. Aps a
leitura faa:
Imprima o nome e a mdia de cada aluno aprovado (Mdia >= 7.0);
Imprima o nome e a mdia dos alunos reprovados (Mdia < 5.0);
Imprima o percentual de alunos aprovados.
13. Faa um algoritmo para ler 50 valores inteiros. Aps imprima tais valores ordenados
crescentemente.
14. Faa um algoritmo que leia 25 valores numricos inteiros em um vetor e trs valores inteiros,
nas variveis A, B e C. Aps a leitura, emita um relatrio com cada valor diferente de A, B e
C e o nmero de vezes que o mesmo apareceu no vetor.
54
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
19. Escreva um algoritmo que leia um vetor de inteiros com 20 posies e a seguir altere esse
vetor de modo que os valores mpares apaream intercalados.
20. Faa um algoritmo que leia nome, idade e sexo de 50 pessoas. Aps a leitura faa:
Imprima o nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira
pessoa;
Imprima o Nome e idade de todas as mulheres;
Imprima o Nome dos homens menores de 21 anos.
Todos os dados devem ser armazenados em vetores.
21. Escrever um algoritmo para ler uma matriz 5 X 5 de elementos inteiros, aps somar em um
acumulador todos os elementos das linhas pares e em outro acumulador os elementos das
linhas mpares
22. Faa um algoritmo para ler os valores inteiros de uma matriz com dimenso 4 x 6 e calcular
quantos destes elementos so valores primos.
23. Faa um algoritmo que leia uma matriz 10 X 50 de valores inteiros e acumule somente os
elementos que esto posicionados onde ambos os ndices sejam mltiplos de 3 ou de 5.
24. Faa um algoritmo para ler os valores de uma matriz com 4 linhas e 4 colunas e fornecer:
A soma dos elementos da diagonal secundria;
Os valores pares que compem a diagonal principal.
25. Faa um algoritmo que leia os valores reais de uma matriz 10 x 15 e fornea a soma dos
elementos que se encontram em posies cuja soma dos ndices seja um nmero mpar.
26. Faa um programa que leia os elementos de uma matriz 5 x 7 de valores inteiros e fornea o
maior e o menor elementos desta matriz e a posio em que esto dentro da estrutura.
27. Faa um algoritmo para ler as notas de uma turma com 30 alunos considerando trs notas por
alunos. Utilize uma matriz para armazenar estes valores considerando que em cada linha da
matriz estaro as trs notas de cada aluno. O algoritmo dever calcular a mdia aritmtica de
cada aluno e a mdia geral da turma.
28. Escreva um algoritmo que leia uma matriz 5 X 6 de valores reais, a seguir divida cada um
dos nmeros de cada linha pelo maior nmero da linha, criando assim uma nova matriz.
Escreva a matriz original e a nova matriz.
29. Ler um vetor de 25 elementos inteiros e a partir desse vetor, criar uma matriz 5 X 5
preenchendo-a da seguinte forma: os cinco primeiros elementos do vetor formaro a primeira
linha, os prximos 5 elementos formaro a segunda linha e assim por diante. Imprimir o
vetor e a matriz no final.
55
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
30. Escreva um algoritmo que l uma matriz M (5 x 5) e troque a seguir, conforme abaixo
indicado:
A linha 2 com a linha 5;
A coluna 1 com a coluna 4;
A diagonal principal com a diagonal secundria.
31. Escreva um algoritmo que l uma matriz M (5 x 5) e cria dois vetores SL e SC que
contenham, respectivamente, as somas das linhas e das colunas de M. Escrever os vetores.
32. Ler um vetor de 5 elementos inteiros e preencher cada linha de uma matriz de 3 X 5 com esse
vetor.
33. Escrever um algoritmo que l uma matriz A(15 x 5) e a escreva. Verifique, a seguir, quais os
elementos de A que esto repetidos e quantas vezes cada um est repetido. Escrever cada
elemento repetido com uma mensagem dizendo que o elemento aparece X vezes em A.
34. Ler um nmero no determinado de valores inteiros at que o nmero lido seja 0 e, para
cada nmero lido, verificar se ele pertence a uma matriz 8x8, cujos valores, tambm inteiros,
j haviam sido lidos anteriormente. Em caso afirmativo, escreva o valor, e a posio em que
foi encontrado, caso contrrio, escreva o valor e a mensagem No encontrado.
35. Escreva um algoritmo que leia uma matriz M (5 x 5) e determine o elemento minimax desta
matriz, escrevendo o seu valor e a posio em que se encontra na matriz. O elemento
minimax de uma matriz o menor elemento da linha em que se encontra o maior elemento
da matriz.
36. Escrever um algoritmo que l um vetor G com 13 elementos inteiros que o gabarito de um
teste da loteria esportiva. Neste vetor sero lidos os valores 1 (para coluna 1), 2 (para coluna
2) e 3 (para coluna do meio). Ler, a seguir, para cada 50 apostadores, o nmero de seu carto
e um vetor R, com 13 elementos, onde estaro as suas apostas e cujos valores tambm sero
1, 2 ou 3. Aps:
verificar para cada apostador o nmero de acertos e escrever o nmero de seu carto e
seu nmero de acertos;
para cada jogador que tiver 13 acertos, acrescentar a mensagem: "GANHADOR";
no final escrever quantos apostadores conseguiram 13 pontos e quantos no acertaram
nenhum ponto.
37. Escrever um algoritmo que l uma matriz M (5 x 5) e um valor A, inteiro e multiplica cada
elemento de M pelo valor A e coloca estes resultados em um vetor com 25 elementos. O
algoritmo dever escrever os valores do vetor.
38. Faa um algoritmo que leia uma matriz 4 x 2 de elementos inteiros e calcule a sua
transposta, sabendo que a transposta de uma matriz m uma outra matriz n obtida da
seguinte forma: as linhas de m passam a ser as colunas de n.
Ex: sendo m uma matriz 3x3 e n a sua transposta
56
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
1 2 3 1 4 7
m=4 5 6 n =2 5 8
7 8 9 3 6 9
39. Deseja-se fazer uma pesquisa a respeito do consumo de energia eltrica em uma
determinada cidade. Para isso deve ser lido um vetor com 12 elementos reais, onde cada
elemento representa o consumo em KWH de um ms do ano. Calcular e escrever os
seguintes resultados para cada habitante:
o menor e o maior consumo residencial e o ms que ocorreu;
a mdia do consumo residencial nos meses de vero (1,2,12) e nos meses de inverno
(6,7,8).
Considere um total de 100 moradores para a pesquisa.
40. Faa um programa que leia uma matriz A 2 x 3 com elementos inteiros e uma matriz B 3 x
2 tambm com elementos inteiros, calcule e informe a matriz C, que o resultado da
multiplicao de A por B.
41. Faa um algoritmo que calcule a multiplicao de duas matrizes A e B, sendo inicialmente
lidos os valores que correspondem ao nmero de linhas e colunas destas matrizes. Dever,
ento, ser feito o teste para verificar se pode ocorrer multiplicao entre A e B e caso seja
possvel, o algoritmo dever ler as duas matrizes e informar a sua multiplicao.
42. Faa um algoritmo que utiliza uma matriz 4 x 3 para ler os preos de trs produtos da cesta
bsica (colunas) em quatro supermercados (linhas). O algoritmo dever calcular e informar:
a posio (linha e coluna) do maior preo;
a soma dos produtos por supermercado;
a mdia dos preos de cada produto.
43. Faa um programa que leia uma matriz 8x8 de inteiros e informe a mdia dos valores que se
encontram acima da diagonal principal.
44. Faa um programa que leia uma matriz 12x12 e calcule e escreva a soma da rea hachurada
na letra a e o maior elemento da rea hachurada na letra b abaixo:
45. Faa um programa que leia os valores inteiros de uma matriz 3 x 3 e crie a partir destes um
vetor cujos elementos sejam o fatorial dos elementos da matriz lida
57
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
*****************************************************************************
7.4 EXERCCIOS RESOLVIDOS
Faa um algoritmo para ler os valores (inteiros) de um vetor com 10 posies, sendo que o valor
lido somente ser aceito se for mltiplo do ndice correspondente.
Algoritmo C
algoritmo multiplo; #include<stdio.h>
Faa um programa que leia um vetor com 30 elementos do tipo real e informe os que se
encontram em posies pares do vetor.
Algoritmo C
algoritmo vetor_pares; #include <stdio.h>
58
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Escreva um algoritmo que leia duas matrizes M1(2x3) e M2(2x3) de elementos inteiros e cria:
uma matriz M3 que seja a soma de M1 e M2 e uma matriz M4 que seja a diferena de M1 e M2;
Algoritmo C
algoritmo matriz; #include <stdio.h>
#include <conio.h>
inteiro m1[2][3], m2[2][3], m3[2][3],
m4[2][3]; int m1[2][3], m2[2][3],m3[2][3],m4[2][3],x,y;
inteiro x,y;
void main(void)
inicio {
para x0 at 1 faa printf("Digite os valores de m1 e depois de m2");
para y0 at 2 faa for (x=0;x<2;x++)
inicio for (y=0;y<3;y++){
leia(m1[x][y]); move((x+1)*2,(y+1)*5);
leia(m2[x][y]); scanw("%i",&m1[x][y]);
fim; }
para x0 at 1 faa for (x=0;x<2;x++)
para y0 at 2 faa for (y=0;y<3;y++){
inicio move((x+1)*2,(y+1)*5+30);
m3[x][y]m1[x][y]+m2[x][y]; scanw("%i",&m2[x][y]);
m4[x][y]m1[x][y]-m2[x][y]; }
fim; for (x=0;x<2;x++)
para x0 at 1 faa for (y=0;y<3;y++){
para y0 at 2 faa m3[x][y]=m1[x][y]+m2[x][y];
escreva(m3[x][y]); m4[x][y]=m1[x][y]-m2[x][y];
para x0 at 1 faa }
para y0 at 2faa move((x+1)*2,(y+1*5));
escreva(m4[x][y]); printw("\nResultados:");
fim. for (x=0;x<2;x++)
for (y=0;y<3;y++)
{ move((x+5)*2,(y+1)*5);
printw("%i",m3[x][y]);
move((x+5)*2,(y+1)*5+30);
printw("%i",m4[x][y]);
}
getch();
endwin();
return 0;
}
59
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
A primeira linha, que inicia com #include serve para identificar as bibliotecas que sero
necessrias na execuo do programa porque o compilador far uso de comandos (funes), que
esto implementados nestas bibliotecas.
J a segunda linha o cabealho da funo principal. Funes so blocos de comandos
que sempre retornam um valor e por isso necessrio declararmos um tipo para cada funo
criada. Porm a funo principal no retorna nenhum valor e especificamos isso atravs da
declarao void. O tipo void especifica que uma varivel ou funo no possui valor. Da mesma
forma, declaramos void dentro dos parnteses para indicar que main no possui parmetros.
O smbolo de abertura de chaves ( { ) da terceira linha identifica o incio do bloco de
comandos da funo que deve ser encerrado com o smbolo de fechar chaves ( } ).
60
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
#include <stdio.h>
/*acesso a biblioteca stdio.h que contm (entre outras) as funes pritf() e getch()
usadas no programa*/
int main(void)
{ /*inicio do bloco de comandos da funo*/
printf("Ola Mundo!"); /* esta funo faz a sada de dados na tela*/
return (0); /* main sempre retorna 0 (zero) */
} /*fim do bloco de comandos da funo*/
Os nomes escolhidos para variveis e constantes deve seguir as mesmas regras vistas para
algoritmos em pseudocdigo (portugol) mas o nome de uma varivel no pode ser igual a
uma palavra reservada, nem igual ao nome de uma funo declarada pelo programador,
ou pelas bibliotecas do C. Variveis de at 32 caracteres so aceitas. O C "case
sensitive" e, portanto, deve-se prestar ateno s maisculas e minsculas. Costuma-se
61
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
usar letras minsculas para nomes de variveis e maisculas para nomes de constantes.
Isto facilita na hora da leitura do cdigo.
Declarao de Variveis
As variveis no C devem ser declaradas antes de serem usadas. A declarao feita
escrevendo o tipo da varivel, a seguir seu identificador e o sinal de ; (ponto e vrgula).
tipo_da_varivel lista_de_variveis;
Ex:
int idade;
float valor, salario;
char letra, opo
Definio de Constantes
As constantes referem-se a valores fixos que o programa no pode alterar e podem ser de
qualquer um dos tipos bsicos de dados.
Sua definio iniciado pela declarao const seguida pelo identificador da constante o
sinal de igualdade, o valor da constante e o sinal de ponto e vrgula.
Ex:
const PI = 3.15;
Atribuio de Valor
O sinal de igualdade utilizado para atribuies de valor, para constantes e variveis.
62
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
#include <stdio.h>
const
V=3;
int a;
int main(void)
{
a=V*2;
printf(" %d",a);
}
Operadores aritmticos
Operador Ao
+ Soma (inteira e ponto flutuante)
- Subtrao ou Troca de sinal (inteira e ponto flutuante)
* Multiplicao (inteira e ponto flutuante)
/ Diviso (inteira e ponto flutuante)
% Resto de diviso (de inteiros)
-- Decremento
++ Incremento
63
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
64
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Operador Ao
> Maior do que
>= Maior ou igual a
< Menor do que
<= Menor ou igual a
== Igual a
!= Diferente de
Operador Ao
&& E
|| OU
! NO
Forma Geral:
printf (expresso de controle, lista de argumentos);
65
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Cdigo Significado
%d Inteiro
%f Float
%c Caractere
%s String
%% Coloca na tela um %
Cdigo Significado
\b Retrocesso ("back")
\f Alimentao de formulrio ("form feed")
\n Nova linha ("new line")
\t Tabulao horizontal ("tab")
\" Aspas
\' Apstrofo
\0 Nulo (0 em decimal)
\\ Barra invertida
\v Tabulao vertical
\a Sinal sonoro ("beep")
\N Constante octal (N o valor da constante)
\xN Constante hexadecimal (N o valor da constante)
Na lista de argumentos pode haver variveis e/ou constantes, sempre separadas por
vrgula, veja o exemplo do trecho de programa abaixo:
int p
p= 65487 * 236597 ;
printf("O Produto entre %d e %d eh: %d\n",65487, 236597 ,p);
A funo printf():
Imprime a partir do ltimo caracter impresso.
No muda de linha at que a linha acabe ou que encontre um \n.
66
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
int mat;
float media;
int main (void)
{
printf(Entre com a matrcula do aluno e sua media: ");
scanf(%d %f, &mat, &media);
-------;
--------;
}
%* indica que ser lido um valor do tipo especificado, mas no ser atribudo a nenhuma
varivel (sem parmetro na lista de argumentos).
A lista de argumentos consiste ento no endereo das variveis.
C oferece um operador para tipos bsicos chamado operador de endereo &, que
retorna o endereo do operando.
67
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Conforme o item anterior a cada um dos 4 tipos de dados base corresponde um caractere
de formatao especial para as instrues printf e scanf:
%d ou %i para int
%f para float
%lf para double
%e para double em notao cientfica
%c para char
%u para valor sem sinal
%g para o compilador escolher a forma mais curta entre float e notao cientfica.
Exemplo:
#include <stdio.h>
int i;
float x;
double y;
char c;
void main(void){
i = 347;
x = 3.558;
y = 2.9E7;
c = 'Z';
printf("valor de i = %d\n", i );
printf("valor de x = %f\n", x );
printf("valor de y = %lf\n", y );
printf("valor de c = %c\n", c );
}
68
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
valor de i = 347
valor de x = 3.558000
valor de y = 29000000.000000
valor de c = Z
Para se alterar o nmero de casas decimais quando se pretende escrever uma varivel do
tipo float ou double, deve acrescentar-se ao %f ou %e o nmero de preciso desejada precedido
de ponto. Por exemplo, se no exemplo acima tivssemos escrito:
...
printf("valor de x = %.2f\n", x );
...
iria aparecer escrito:
valor de x = 3.56
69
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
#include <stdio.h>
int main (void)
{
char string[100];
printf ("Digite uma string: ");
gets (string);
printf ("\n\nVoce digitou %s",string);
return(0);
}
Neste exemplo o tamanho mximo que pode ser lido na string uma seqncia de 99
caracteres.
Como as strings so vetores de caracteres, para se acessar um determinado caractere de
uma string, basta "indexarmos", ou seja, usarmos um ndice para acessarmos o caractere
desejado dentro da string.
Supondo uma string chamada s que est armazenado Paula . Podemos acessar a
segunda letra de s da seguinte forma:
str[1] = 'a';
Na linguagem C, o ndice de um vetor comea em zero. Assim, a primeira letra da string
sempre estar na posio 0. A segunda letra sempre estar na posio 1 e assim sucessivamente.
Para ler uma string fornecida pelo usurio podemos usar a funo gets(). Um exemplo do
uso desta funo apresentado abaixo. A funo gets() coloca o terminador nulo na string,
quando voc aperta a tecla "Enter".
#include <stdio.h>
char string[100];
int main (void)
{
printf ("Digite uma string: ");
gets (string);
printf ("\n\nVoce digitou %s",string);
}
Neste programa, o tamanho mximo da string que voc pode entrar uma string de 99
caracteres.
70
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
8.9.1 COMADO IF
A) if (condio)
instruo;
A condio ser avaliada, se for zero (se for falsa) a instruo no ser executada. Se a
condio for verdadeira (diferente de zero) a instruo ser realizada. Instruo pode ser um
bloco de comandos, neste caso sero delimitados por chaves.
Exemplo:
#include <stdio.h>
#include<conio.h>
int num;
int main(void)
{
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num>10)
printf ("\n\n O numero e maior que 10");
if (num==10)
{
printf ("\n\nVoce acertou!\n");
printf ("O numero e igual a 10.");
}
if (num<10)
printf ("\n\nO numero e menor que 10");
B) if (condio)
comando1;
else
comando2;
71
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Neste caso, se a condio for verdadeira ser executado o comando 1. Caso a condio
for falsa, ser executado o comando 2. Tanto o comando 1 como o comando 2 podem conter
blocos.
Exemplos:
#include <stdio.h>
int num;
int main (void)
{
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num==10)
{
printf ("\n\nVoce acertou!\n");
printf ("O numero e igual a 10.\n");
}
else
{
printf ("\n\nVoce errou!\n");
printf ("O numero e diferente de 10.\n");
}
}
#include <stdio.h>
int num;
int main (void)
{ printf ("Digite um numero: ");
scanf ("%d",&num);
if (num==10)
{
printf ("\n\nVoce acertou!\n");
printf ("O numero e igual a 10.\n");
}
else
if (num>10)
printf ("O numero e maior que 10.");
else
printf ("O numero e menor que 10.");
72
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O comando switch prprio para se testar uma varivel em relao a diversos valores
pr-estabelecidos. basicamente usado na implementao de menus. Sua forma geral :
switch (varivel)
{
case constante_1:
declarao_1;
break;
case constante_2:
declarao_2;
break;
. ..
case constante_n:
declarao_n;
break;
default
declarao_default;
}
#include <stdio.h>
int num;
int main (void)
{ printf ("Digite um numero: ");
scanf ("%d",&num);
switch (num)
{
case 9:
printf ("\n\nO numero e igual a 9.\n");
break;
case 10:
printf ("\n\nO numero e igual a 10.\n");
73
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
break;
case 11:
printf ("\n\nO numero e igual a 11.\n");
break;
default:
printf ("\n\nO numero no e nem 9 nem 10 nem 11.\n");
}
}
Exemplo:
#include <stdio.h>
int count;
int main (void)
{
for (count=1; count<=100; count++)
printf ("%d ",count);
}
Forma Geral :
while (condio)
comando ou bloco;
Exemplo:
#include <stdio.h>
int ch;
void main(void)
{
ch= 0;
while (ch >=0
scanf(%d,&ch);
}
74
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
do
{
instruo;
} while (condio);
Mesmo que a declarao seja apenas um comando uma boa prtica deixar as chaves. O
ponto-e- vrgula final obrigatrio.
A estrutura do-while executa a instruo, testa a condio e, se esta for verdadeira, volta
para a instruo. Este comando, ao contrrio do for e do while, garante que a instruo ser
executada pelo menos uma vez.
Forma Geral:
tipo_da_varivel nome_da_varivel [tamanho];
Cada elemento deste tipo distinguido pelo ndice que referencia sua posio dentro
da estrutura.
8.12.1 VETOR:
Estrutura unidimensional onde cada elemento referenciado por uma varivel com um
nico ndice.
Forma geral:
tipo_da_varivel nome_da_varivel [tamanho];
Exemplo:
Na linguagem C o primeiro elemento est na posio zero. Isto significa que, no exemplo
acima, os dados sero indexados de 0 a 9. Para acess-los vamos escrever:
vet[0]
vet[1]
.
.
.
vet[9]
75
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
O C no verifica se o ndice que voc usou est dentro dos limites vlidos, isto
tarefa para o programador.
#include <stdio.h>
int num[3]; /* Declara um vetor de inteiros de 3 posies */
int x=0;
int totalnums;
int main (void)
{ do
{ printf ("\nEntre com um numero (999 p/ terminar): ");
scanf ("%d",&num[x]);
x++;
} while (num[x-1]!=999);
totalnums=x-1;
printf ("\n\n\n\t Os nmeros que voc digitou foram:\n\n");
for (x=0;x<totalnums;x++)
printf (" %d",num[x]);
}
8.12.2 MATRIZ
Estrutura bidimensional onde cada elemento referenciado por uma varivel com dois
ndices.
Forma geral:
tipo_da_varivel nome_da_varivel [linhas][colunas]
76
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
Exemplo:
int mat[10] [10];
A declarao acima armazena espao em memria para uma tabela com 10 linhas e 10
colunas.
Como nos vetores os ndices variam de zero ao valor declarado, menos um porm o C
no vai verificar isto para o usurio. Manter os ndices na faixa permitida tarefa do
programador.
Exemplo:
#include <stdio.h>
int mat [20][10];
int i,j,c;
int main (void)
{ c=1;
for (i=0;i<20;i++)
for (j=0;j<10;j++)
{ mat[i][j]=c;
c++;
}
}
Bibliografia
MANZANO, Jos Augusto N. G.. Estudo dirigido de Algoritmos So Paulo: rica, 1997.
ORTH, Afonso Incio. Algoritmos e programao com resumo das linguagens Pascal e C.
Porto Alegre: AIO, 2001.
77
Universidade de Santa Cruz do Sul
Algoritmos e Programao Notas de Aula - Profa. Beatriz Lux, Prof. Joo Carlos Furtado
78