Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostilatp2011 PDF
Apostilatp2011 PDF
Conceito de Algoritmo
A automao o processo pelo qual uma tarefa deixa de ser executada pelo homem para
ser realizada por mquinas. Para que a automao seja bem sucedida necessrio que a mquina
seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com
eficincia, de modo a garantir a repetibilidade do mesmo. Portanto necessrio que seja especificado
com clareza e exatido o que deve ser realizado em cada uma das fases do processo a ser
automatizado, bem como a seqncia em que estas fases devem ser realizadas.
especificao da seqncia ordenada de passos que deve ser seguida para a realizao de uma
tarefa, garantindo a sua repetibilidade, d-se o nome
algoritmo.
Algoritmos no se aprende:
Algoritmo no a soluo de um problema, pois, se
assim fosse, cada problema teria um nico algoritmo. Copiando Algoritmos
Algoritmo um caminho para a soluo de um problema, e Estudando Algoritmos
em geral, os caminhos que levam a uma soluo so muitos.
Algoritmos s se aprendem:
O aprendizado de algoritmos no se consegue a no
ser atravs de muitos exerccios. Construindo Algoritmos
Testando Algoritmos
Exemplo de Algoritmo
Imagine o seguinte problema: Calcular a mdia final dos alunos da 1 Srie. Os alunos
realizaro quatro provas: P1, P2, P3 e P4.
Algoritmo
Receba a nota da prova1
Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Calcule Mdia Final somando todas as notas e dividindo o resultado por 4
Mostre a Mdia Final
Variveis
O computador possui uma rea de armazenamento conhecida como memria. Todas as
informaes existentes no computador esto ou na memria primria (memria RAM), ou na memria
secundria (discos, fitas, CD-ROM etc). Ns iremos trabalhar, neste curso, somente com a memria
primria, especificamente com as informaes armazenadas na RAM (memria de acesso aleatrio).
1
Tcnicas de Programao
A memria do computador pode ser entendida como uma seqncia finita de caixas, que
num dado momento, guardam algum tipo de informao, como um nmero, uma letra, uma palavra,
uma frase etc, no importa, basta saber que l sempre existe alguma informao.
O computador, para poder trabalhar com alguma destas informaes, precisa saber onde,
na memria, o dado est localizado. Fisicamente, cada caixa, ou cada posio de memria, possui
um endereo, ou seja, um nmero, que indica onde cada informao est localizada. Este nmero
representado atravs da notao hexadecimal, tendo seu tamanho definido em bytes, pois se
quisermos escrever (ou ler) algum dado da (na) memria do computador, teremos que faze-lo byte a
byte. Abaixo segue alguns exemplos:
Como pode ser observado, o endereamento das posies de memria atravs de nmeros
hexadecimais perfeitamente compreendido pela mquina, mas para ns humanos torna-se uma
tarefa complicada. Pensando nisto, as linguagens de computador facilitaram o manuseio, por parte
dos usurios, das posies de memria da mquina, permitindo que, ao invs de trabalhar
diretamente com o nmero hexadecimal, fosse possvel dar nomes diferentes a cada posio de
memria. Tais nomes seriam de livre escolha do usurio. Com este recurso, os usurios ficaram
livres dos endereos fsicos (nmeros hexadecimais) e passaram a trabalhar com endereos lgicos
(nomes dados pelos prprios usurios). Desta forma, o Exemplo acima, poderia ser alterado para ter
o seguinte aspecto:
Como tnhamos falado, os endereos lgicos so como caixas, que num dado instante
guardam algum tipo de informao. Mas importante saber que o contedo desta caixa no algo
fixo, permanente, na verdade, uma caixa pode conter diversas informaes, ou seja, como no
Exemplo acima, a caixa (Endereo Lgico) rotulada de Nome num dado momento contm a
informao Joo, mas em um outro momento, poder conter uma outra informao, por Exemplo
Pedro. Com isto queremos dizer que o contedo de uma destas caixas (endereo lgico) podem
variar, isto podem sofrer alteraes em seu contedo. Tendo este conceito em mente, a partir de
agora iremos chamar de forma genrica, as caixas ou endereos lgicos, de variveis.
Desta forma podemos dizer que uma varivel uma posio de memria, representada por
um Nome simblico (atribudo pelo usurio), a qual contm, num dado instante, uma informao.
Uma varivel possui trs atributos: um nome, um tipo de dado associado mesma e a
informao por ela guardada.
O nome de uma varivel formado por uma letra ou ento por uma letra seguida de letras ou dgitos,
em qualquer nmero. No permitido o uso de espaos em branco ou de qualquer outro caractere,
que no seja letra ou dgito, na formao de um identificador.
2
Tcnicas de Programao
Exemplo:
SALRIO correto
SAL/HORA errado (contm o caractere /)
SAL HORA errado (contm o caractere em branco)
SAL_HORA correto
1ORAMENTO errado (no comea com caractere)
Na formao do nome da varivel d um nome significativo, para que se possa ter idia do
seu contedo sem abri-la. Se utilizar mais de uma palavra para compor o nome da varivel utilize o _
underline para separar as palavras.
Exerccios:
2. Para cada situao a seguir, crie um nome de varivel procurando escolher nomes que
lembre a situao apresentada:
Primeira nota em uma disciplina ________________________
Valor total de uma nota fiscal ________________________
Altura de pessoas ________________________
Data de nascimento ________________________
Quantidade em estoque ________________________
Constantes e Variveis
Considere a frmula matemtica simples do calculo do volume de uma esfera:
4
Volume = R3
3
onde se encontram:
1- Valores que podem ser classificados como:
valores constantes, invariantes em todas as aplicaes da frmula, no caso dos valores 4, 3 e os
quais denomina-se constantes;
valores a serem substitudos na frmula, em cada aplicao; a representao destes valores,
usualmente feita atravs de letras, que recebem o nome de variveis e tornam a frmula genrica,
possvel de ser aplicada para resolver uma certa classe de problemas e no apenas um problema
especfico.
2 - Operaes a serem feitas sobre determinados operandos (Valores), para a obteno da soluo
do problema.
3
Tcnicas de Programao
Tipos de Dados
Vimos que uma varivel como uma caixa que se pode armazenar coisas definidas dentro
dela. Por que coisas definidas? Pegue uma caixa de papel e tente guardar gua dentro dela. Depois
de um curto espao de tempo, ela se desmanchar. Deste mesmo modo so os nossos repositrios,
necessrio definir claramente o que ele devera conter: valores numricos, caracteres, datas.
necessrio que indiquemos o tipo de informao que uma varivel pode conter. Para isto,
a linguagem Pascal possui definido alguns tipos que devero ser usados quando formos trabalhar
com variveis.
Exerccios:
2) Sendo:
a, b, c: inteiro
x, y, z: real
r, s: lgico
n, t: string
Quais as atribuies a variveis esto incorretas?
4
Tcnicas de Programao
a) a 11 f) n t k) y 17,3
b) x 11 g) n 15,5 l) t "Certo"
c) r T h) r F m) b 17,5
d) b 15 i) c "Jorge" n) x 19,345678
e) n "Oi" j) z 55,55 o) s "T"
3) Supondo que as variveis Nota, Nome, NMat, SX sejam utilizadas para armazenar a nota, o nome
do aluno, o nmero de matrcula e o sexo, declare-as corretamente, associando o tipo primitivo
adequado ao dado que ser armazenado.
1 Descrio Narrativa
Nesta forma de representao, os algoritmos so expressos diretamente em linguagem
natural.
Exemplo:
5
Tcnicas de Programao
Simbologia
Existem diversos smbolos em um diagrama de bloco. No decorrer do curso
apresentaremos os mais utilizados.
Veja no quadro a seguir alguns dos smbolos que iremos utilizar:
Incio e final de um processamento
Terminal Exemplo: Inicio do algoritmo
Indica entrada de dados atravs do teclado
Entrada de dado manual Exemplo: Digite seu nome
Mostra informaes ou resultados
Exibir Exemplo: Exiba a mdia
Processamento geral
Processamento Exemplo : Clculo da mdia
Deciso
Deciso Exemplo : Se mdia >= 5
Dentro do smbolo sempre ter algo escrito, pois somente os smbolos no nos dizem nada.
Veja no exemplo a seguir:
Inicio
N1,N2
Mdia
(N1+N2) / 2
Sim
Aprovado
Mdia
No
Reprovado
Fim
6
Tcnicas de Programao
Exerccios:
1 Faa um fluxograma que receba pelo teclado dois nmeros inteiros, calcule e mostre o dobro do
primeiro e o triplo do segundo.
2 Faa um fluxograma que receba pelo teclado as notas de duas provas, dois trabalhos e uma lista
de exerccios. Calcule e mostre a mdia, sabendo que as provas tm peso 6, os trabalhos, peso 3 e
as listas, peso 1.
3 Faa um fluxograma que receba pelo teclado um nmero inteiro negativo, calcule e mostre o
quadrado deste nmero.
4 Faa um fluxograma que receba o valor do raio de uma esfera e calcule a sua rea e o seu volume,
baseando-se nas frmulas dadas. Mostre o valor da rea e o valor do volume da esfera. Utilize para
o valor de 3,14.
4 3
2
volume = R
rea = 4R 3
5 Elabore um fluxograma e um programa para ler dois valores inteiros, efetuar e mostrar o resultado
das operaes de adio, subtrao e multiplicao de um nmero pelo outro.
6 Uma loja de animais precisa de um programa para calcular os custos da criao de coelhos. O
custo dado por:
7 Segundo a Organizao Mundial de Sade (O.M.S.) o ndice de Massa Corporal (IMC) normal
entre 18.5 e 25 para uma pessoa adulta. Para calcular esse ndice utiliza-se a seguinte frmula:
2
IMC = peso/(altura)
Faa um fluxograma que solicite o peso em Kg e a altura em m de uma pessoa, calcule e exiba o
IMC.
8 Faa um fluxograma que calcule e exiba o troco a ser dado ao cliente. necessrio informar o
valor a ser cobrado e o valor pago.
Troco = valor pago valor a ser cobrado
7
Tcnicas de Programao
3 Pseudocdigo
Esta representao de algoritmos rica em detalhes, como definio dos tipos das
variveis usadas no algoritmo e, por assemelhar-se bastante forma como os programas so
escritos, encontra muita aceitao.
Exemplo:
ALGORITMO Mdia_Calc
Var N1,N2,Mdia: real
INCIO
Escreva ( Digite as duas notas:)
Leia (N1,N2)
Mdia (N1+N2)/2
Escreva ( Sua mdia , Mdia)
FIM
Definio de Variveis
Para definir uma ou mais variveis vamos utilizar a palavra VAR. No algoritmo anterior,
declaramos as variveis N1,N2 e Mdia, todas do tipo Real. Abaixo segue Exemplo de algumas
definies de variveis:
ALGORITMO Teste
VAR
Nome : STRING
Letra, Identificador: CHAR
Soma: INTEIRO
INICIO
<comandos>
FIM
Comando de atribuio
Quando definimos uma varivel natural atribuirmos a ela uma informao. Uma das formas de
colocar um valor dentro de uma varivel, conseqentemente colocar este dado na memria do
computador, atravs da atribuio direta, do valor desejado que a varivel armazena. Para isto
utilizaremos o smbolo
:= (Pascal)
(Algoritmo)
que significa: recebe, ou seja, a posio de memria que uma varivel representa, receber uma
informao, a qual ser armazenada no interior desta varivel.
Exemplo:
ALGORITMO Teste
VAR
Valor: INTEIRO
INICIO
Valor 10
FIM
O Exemplo acima nos informa que:
a) Foi definida uma varivel, a qual demos o Nome de Valor, e informamos que esta varivel, ou
posio de memria, s poder aceitar dados, que sejam numricos e que estejam entre -32768 a
+32767 ( tipo INTEGER ).
b) Atribumos varivel Valor o valor 10
A memria se comportaria da seguinte forma, de acordo com os itens acima:
a) b)
Varivel Contedo Varivel Contedo
Valor Indefinido Valor 10
8
Tcnicas de Programao
Teste de Mesa
O teste de mesa uma ferramenta de verificao dos algoritmos. dividido em: rea de
memria e rea de tela.
Devemos seguir linha por linha do algoritmo lanando os dados simulando a execuo do
mesmo. Exemplo de teste de mesa do Algoritmo Mdia
Etapa1:
rea de Memria rea de Tela
(O primeiro passo fazer a alocao das (O segundo passo percorrer o algoritmo,
variveis declaras na memria) linha por linha de comando. Na primeira linha
aps o begin temos o comando Escreva, que
N1
exibir na tela uma mensagem, portanto
N2 escrevemos a mensagem na rea de tela)
Mdia Digite as duas notas:
(Observe que elas no apresentam valores)
Etapa2:
rea de Memria rea de Tela
(Na linha seguinte temos o comando Leia, que
recebe o que o usurio digitou na tela para
N1 6.0
atribuir s variveis, ou seja armazena nas
N2 7.0 variveis j alocadas os valores lidos)
Mdia
Digite as duas notas: 6.0 7.0
Etapa3:
Na terceira linha, temos um clculo (Mdia (N1+N2)/2) que feito pelo programa, no sendo
exibido na tela, mas ele atribui o resultado da frmula varivel mdia
rea de Memria rea de Tela
(Nessa etapa a rea de tela no se altera)
N1 6.0 Digite as duas notas: 6.0 7.0
N2 7.0
Mdia 6.5
Etapa4: rea de Tela
rea de Memria (Na quarta linha, temos o comando escreva
que vai exibir uma mensagem na tela, e exibir
N1 6.0
o valor armazenado na varivel mdia)
N2 7.0
Digite as duas notas: 6.0 7.0
Mdia 6.5
Sua mdia 6.5
Atravs dessa simulao pudemos verificar que o programa vai funcionar corretamente. Caso
tivssemos algum erro no algoritmo ele seria identificado durante a execuo do teste de mesa.
Exerccios:
1) Identifique os dados de entrada, processamento e sada no algoritmo abaixo
Receba cdigo da pea Calcule o valor total da pea (Quantidade *
Valor da pea)
Receba valor da pea
Mostre o cdigo da pea e seu valor total
Receba Quantidade de peas
9
Tcnicas de Programao
2) Faa um algoritmo para Calcular o estoque mdio de uma pea, sendo que
ESTOQUEMDIO = (QUANTIDADE MNIMA + QUANTIDADE MXIMA) /2
3) Faa o Teste de mesa do algoritmo anterior com dados definidos por voc.
4) Construa um diagrama de blocos que :
Leia a cotao do dlar
Leia um valor em dlares
Converta esse valor para Real
Mostre o resultado
5) Desenvolva um diagrama de blocos que:
Leia 4 (quatro) nmeros
Calcule o quadrado para cada um
Somem todos e
Mostre o resultado
6) Construa um diagrama de blocos para pagamento de comisso de vendedores de peas, levando-
se em considerao que sua comisso ser de 5% do total da venda e que voc tem os seguintes
dados:
Identificao do vendedor
Cdigo da pea
Preo unitrio da pea
Quantidade vendida
10
Tcnicas de Programao
Exemplo:
ALGORITMO Define
VAR
Nome: STRING[80]
INICIO
FIM
Desta forma, o espao ocupado por uma varivel STRING(Cadeia) passa de 255 bytes para apenas
80 bytes, na memria.
Operadores aritmticos
Os operadores aritmticos so os seguintes:
+ Soma.
- Diferena.
/ Diviso
* Multiplicao
11
Tcnicas de Programao
Exerccios:
1) Suponha que X, Y e Z so variveis reais, com os respectivos valores:
X = 2.0, Y = 3.0, Z=0.5. Calcule o resultado das seguintes expresses:
X*YZ X * (Y-Z) X+Y*Z
y (y-1)
(X+Y)*Z X 1 X
12
Tcnicas de Programao
Agora em Pascal:
Todos os programas tero a primeira linha indicando que iremos digitar um programa:
program Primeiro_Programa;
... na segunda linha indicamos quais unidades sero usadas ( no nosso caso importante sempre
definir o uso da unidade crt que traz variveis de controle de som, vdeo e teclado)...
uses crt;
begin
... aps o begin vem o corpo do programa com todas as aes que devem ser feitas; por exemplo,
escrever Bem vindo ...
... para que o programa aguarde um enter antes de encerrar usamos o comando readln(assim d
tempo de ler a mensagem)...
readln;
13
Tcnicas de Programao
end.
Temos ento:
program Primeiro_Programa;
uses crt;
begin
writeln ('Bem vindo');
readln;
end.
Para que o computador escreva tambm o seu nome, s acrescentar mais um comando
writeln:
program Segundo_Programa;
uses crt;
begin
writeln ('Bem vindo');
writeln ('seu nome');
readln;
end.
Observao Importante:
Begin no termina com ";" porque representa o comeo de um bloco de comandos, que
termina com o comando end.
Todo programa Pascal termina com end seguido de "." (ponto final) Quando o end no indica
o fim do programa ele no deve ser seguido do ponto final.
O nome de um programa (que vem depois do comando program) segue a regra de
nomenclatura de variveis
WRITE / WRITELN
Com o exemplo anterior podemos concluir que o comando writeln escreve algo na tela e se
posiciona na linha seguinte. O comando write tambm escreve na tela, mas permanece na mesma
linha. Observe:
write('Nome da escola:');
writeln('COTIL');
exibe na tela:
Nome da escola:COTIL
A frase "Nome da escola::" foi escrita pelo write. Na mesma linha o comando writeln
escreveu COTIL e em seguida foi para a linha de baixo.
Para escrever ao mesmo tempo vrios itens com um nico writeln ou com um nico write.
colocamos tudo o que queremos escrever entre os parnteses do comando, separando cada item por
vrgulas:
14
Tcnicas de Programao
Com esse exemplo pudemos verificar que possvel fazer operaes aritmticas no Pascal.
Veja alguns exemplos:
Program Calculos;
Uses crt;
Begin
Writeln (4+2);
Writeln (4-2);
Writeln (4*2);
Writeln (4/2);
Writeln (5 div 2);
Writeln (5 mod 2);
Writeln ((2+2)/(3-1)*3);
readln;
End.
program Exibe_Numero;
uses crt;
var
numero: integer;
begin
numero:=6;
writeln(numero);
readln;
end.
Como j explicado, o valor de uma varivel pode variar de acordo com os comandos que
executarmos. Veja:
program Exibe_Numero_2;
uses crt;
var
numero: integer;
begin
numero:= 8;
writeln(numero);
numero:= 4+2;
writeln(numero);
numero:= numero*2;
writeln(numero);
readln;
end.
Ao ser executado, esse programa faz os seguintes passos:
Atribui varivel "numero" o valor 8
Mostra na tela o valor da varivel "numero", ou seja, 8.
Atribui varivel "numero" o valor 6(resultado da expresso 4+2)., que substitui o valor
anterior (ou seja, o computador perde o valor 8 ).
Mostra na tela o valor da varivel "numero", ou seja, 6.
Atribui varivel nmero o valor da varivel nmero multiplicado por 2. Antes da nova
atribuio o valor armazenado em nmero 6. No momento da nova atribuio esse valor
ser multiplicado por 2 e s ento atribudo o resultado varivel , ou seja, 12. partir desse
momento o valor anterior 6 perdido.
Mostra na tela o valor da varivel "numero", ou seja, 12.
15
Tcnicas de Programao
program aposentadoria;
uses crt;
var
idade: integer;
idade_maxima: integer;
begin
idade:=55;
idade_maxima:=70;
writeln('A idade do funcionrio ',idade, 'anos.');
write('Faltam ');
write(idade_maxima - idade);
writeln(' anos para ele se aposentar.');
readln;
end.
Neste exemplo o valor da varivel "idade" se mantm na memria do computador at o fim
da execuo do programa, perceba que no foi atribudo um segundo valor essa varivel.
program troco;
uses crt;
var
preo, recebido,troco: real;
begin
preco:=21.5;
recebido:=50;
writeln('O valor a ser cobrado R$',preco:4:2);
writeln('O valor recebido foi de R$',recebido:4:2);
troco:=recebido-preco;
writeln(' Seu troco de R$',troco:4:2);
readln;
end.
Se aumentarmos o valor 4 para 5, perceberemos que aparece um espao entre o $ e o nmero
exibido. Isso acontece porque o nmero tende a ser alinhado direita dentro do espao reservado
para ele; como o nmero exibido tem 4 caracteres, um espao em branco inserido no incio do valor
para preencher todo o espao reservado. Experimente modificar tanto o nmero de casas decimais
reservado quanto o nmero de caracteres reservados (2 e 4, respectivamente) para perceber como
eles funcionam.
16
Tcnicas de Programao
Recebendo valores
Os comandos write e writeln so utilizados para exibir valores na tela, para ler valores
digitados pelo usurio utilizamos READLN.
Exemplo:
program eco;
uses crt;
var
nome: string;
begin
writeln('Digite seu nome:');
readln(nome);
writeln('Ol ', nome);
readln;
end.
Se quisermos fazer um programa que calcula a mdia entre dois nmeros digitados pelo
usurio, ento podemos digitar algo como:
program boletim;
uses crt;
var
nota1, nota2, media: real;
begin
writeln('Digite a primeira nota:');
readln(nota1);
writeln('Digite a segunda nota:');
readln(nota2);
write('As notas digitadas foram: ');
writeln(nota1:4:1, ' e ', nota2:4:1);
media:= (nota1 + nota2) / 2;
writeln('A mdia : ', media:4:1);
readln;
end.
Sua tela deve ter ficado assim:
17
Tcnicas de Programao
program boletim_2;
uses crt;
var
nota1, nota2, media: real;
begin
writeln('Digite duas notas:');
readln(nota1, nota2);
write('As notas digitadas foram: ');
writeln(nota1:4:1, ' e ', nota2:4:1);
media:= (nota1 + nota2) / 2;
writeln('A mdia : ', media:4:1);
readln;
end.
Ao executar esse programa, digite as duas notas separando-as por pelo menos um espao
em branco, ou ento por ENTER. Pressione ENTER quando terminar a segunda nota. Sua tela deve
ter ficado mais ou menos assim:
Digite duas notas:
5.5 8.5
As notas digitadas foram: 5.5 e 8.5
A mdia : 7.0
Agora vamos fazer uma pequena experincia. Ao executar o programa calcula_media, o
que acontece se voc digitar dois valores seguidos na mesma linha, separados por espaos?
Digite uma nota:
5.5 8.5
Digite outra nota:
7.5
As notas que voc digitou foram: 5.5 e 7.5
A mdia das notas : 6.5
O valor 8.5 foi ignorado. Na verdade, o comando readln l a linha inteira que voc digitou e
depois olha a lista de variveis nos parnteses aps o comando, para associar cada valor digitado a
uma varivel. Quando o programa executou a linha de comando readln(nota1) digitamos dois valores
na mesma linha, mas o comando s esperava por um nico valor na linha; logo, ele jogou fora o
segundo valor.
program tres_valores;
uses crt;
var
a,b,c: integer;
begin
writeln('Digite trs nmeros:');
read(a);
writeln('a:',a);
read(b);
writeln('b:',b);
read(c);
writeln('c:',c);
readln;
end.
18
Tcnicas de Programao
19
Tcnicas de Programao
Operadores Relacionais
Os operadores relacionais so utilizados para comparaes. Estes operadores sempre
retornam valores lgicos (verdadeiro ou falso/ True ou False). Para estabelecer prioridades no que diz
respeito a qual operao executar primeiro, utilize os parnteses.
Os operadores relacionais so:
a) Igual a =
b)Diferente de <>
c) Maior que >
d) Menor que <
e) Menor Igual <=
f) Maior Igual >=
Exemplo: Tendo duas variveis A=5 e B=3. Os resultados das expresses seriam:
Operadores Lgicos
Os operadores lgicos realizam as operaes da lgebra booleana. Os operadores so os
seguintes:
a) AND (E) b) OR (OU) c) NOT (NO)
Hierarquia das Operaes Lgicas Hierarquia entre os Operadores:
1 Not 1 Aritmticos e Literais
2 And 2 Relacionais
3 Or 3 Lgicos
Exemplo:
a) Operador AND: b) Operador OR: c) Operador NOT:
TRUE AND TRUE => TRUE TRUE OR TRUE => TRUE NOT TRUE => FALSE
TRUE AND FALSE => FALSE TRUE OR FALSE => TRUE NOT FALSE => TRUE
FALSE AND TRUE => FALSE FALSE OR TRUE => TRUE
FALSE AND FALSE => FALSE FALSE OR FALSE => FALSE
20
Tcnicas de Programao
Exerccios:
1) Tendo as variveis SALARIO, IR e SALLIQ, e considerando os valores
abaixo. Informe se as expresses so verdadeiras ou falsas.
2) Sabendo que A=3, B=7 e C=4, informe se as expresses abaixo so verdadeiras ou falsas.
a) (A+C) > B b) B >= (A + 2) c) C = (B A) d) (B + A) <= C e) (C+A) > B
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expresses abaixo so verdadeiras ou
falsas.
a) (A > C) AND (C <= D) b) (A+B) > 10 OR (A+B) = (C+D) c) (A>=C) AND (D >= C)
4) Suponha que X, Y e Z so variveis reais, e A e B variveis lgicas, com os respectivos valores:
X = 2.0, Y = 3.0, Z=0.5, A = .V. e B =.F.
Calcule o resultado das seguintes expresses:
B .E. A .OU. X <> Y/2 B .E. (A .OU. X <> Y/2)
5) Dada a declarao de variveis:
VAR A, B, C : inteiro
X, Y, Z : real
NOME, RUA : literal[20]
L1, L2 : lgico
So dados os valores seguintes:
A=1 B=2 C=3 X = 2.0 Y = 10.0 Z = -1.0
L 1= .V. L2 = .F. NOME = PEDRO RUA = PEDRINHO
Determine o resultado da avaliao das expresses a seguir:
NOME = RUA L1 .OU. L2
(L1 .E. (.NO. L2)) (L2 .E. (.NO. L1))
X>Y .E. C <=B (C 3 * A) < (X + 2 * Z)
(L1 .E.(.NO. L2)).OU. (L2 .E. (.NO. L1))
6) De acordo com a tabela de operadores lgicos estudada no item 7.2 da apostila, determine o
resultado lgico das expresses mencionadas, assinalando se so verdadeiras ou falsas. Considere
para as respostas os seguintes valores: X=1, A=3, B=5, C=8 e D=7
.NO. (X>3) Verdadeiro ( ) Falso ( )
(X < 1) .E. .NO. (B > D) Verdadeiro ( ) Falso ( )
.NO. (D < 0) .E. (C > 5) Verdadeiro ( ) Falso ( )
.NO. (X > 3) .OU. (C < 7) Verdadeiro ( ) Falso ( )
(A > B) .OU. (C > B) Verdadeiro ( ) Falso ( )
(X >= 2) Verdadeiro ( ) Falso ( )
(X < 1) .E. (B >= D) Verdadeiro ( ) Falso ( )
(D < 0) .OU. (C > 5) Verdadeiro ( ) Falso ( )
.NO. (D > 3) .OU. .NO. (B < 7) Verdadeiro ( ) Falso ( )
(A >B) .OU. .NO. (C> B) Verdadeiro ( ) Falso ( )
21
Tcnicas de Programao
Estrutura de deciso
Os comandos de deciso ou desvio fazem parte das tcnicas de programao que
conduzem a estruturas de programas que no so totalmente seqenciais. Com as instrues de
SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo
com as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais
estruturas de deciso so: Se Ento, Se ento Seno e Caso Selecione
22
Tcnicas de Programao
Outro Exemplo: Dados dois valores A e B quaisquer, faa um algoritmo que imprima se A > B, A < B,
ou A=B
ALGORITMO Maior
VARIVEIS
A,B : INTEIRO
INICIO
ESCREVA(Digite os valores A e B );
LEIA (A,B)
SE A > B ENTO
ESCREVA(A maior que B )
SENO
SE A < B ENTO
ESCREVA(A menor que B )
SENO
ESCREVA(A igual a B )
FIM
Exerccios:
1) Faa um teste de mesa do diagrama apresentado abaixo, de acordo com os
dados fornecidos:
INICIO
SALBASE
GRATIF
SALBRUTOSALBASE+GRATIF
V F
SALBRUTO
IRSALBRUTO*(20/100) IRSALBRUTO*(15/100)
>100
SALLIQSALBRUTO-IR
SALLIQ
23
Tcnicas de Programao
Memria
SALBASE GRATIF SALBRUTO IR SALLIQ
Dados de Sada
SALLIQ
2. Indique a sada dos trechos de programa em portugus estruturado, mostrado a seguir. Para os
clculos considere os seguintes valores: A = 2, B = 3, C= 5 e D = 9.
Resposta:___________________________
24
Tcnicas de Programao
z (x*y) + 5;
se z <= 0
ento resposta A
seno se z <= 100
ento resposta B
seno resposta C;
escreva (z,resposta);
FIM
x y z resposta sada
3 2
150 3
7 -1
-2 5
50 3
25
Tcnicas de Programao
Deciso no Pascal
Nesse exemplo, a frase nmeros iguais s ser exibida se a condio a=b for verdadeira.
Observe que na estrutura if then s usado o ;(ponto e vrgula) aps o comando a ser
executado caso a condio seja verdadeira e esse ponto e virgula encerra a estrutura. Nesse
exemplo, o comando writeln que vem logo aps o then ser executado e em seguida a estrutura
condicional encerrada, assim, o comando que vem depois do ponto e virgula executado
independente da condio testada, pois ele se encontra fora da estrutura de deciso.
Vamos observar esse outro exemplo, que contm um erro que iremos corrigir em seguida:
program ex_2;
uses crt;
var
N1,N2,N3,M:real;
Begin
Clrscr;
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
IF M>=7 THEN
writeln('Mdia = ',M:4:1);
writeln('Aprovado');
readln;
end.
26
Tcnicas de Programao
Exerccios:
1) Escreva um algoritmo (fluxograma e pseudocdigo) para cada um dos
exerccios a seguir:
a) Efetuar a leitura da idade de uma pessoa e se ela tiver 18 anos ou
mais escrever a mensagem que ela maior de idade.
b) Altere o programa anterior para que alm de escrever a mensagem que ela maior, escrever
uma segunda mensagem dizendo que ela pode dirigir.
Nesse exemplo, a frase Nmeros iguais s ser exibida se a condio A=B for verdadeira e
a frase Nmeros diferentes s ser exibida se a condio A=B for falsa ou seja no for verdadeira.
Obs.: No se usa ;(ponto e vrgula) antes do else.
A mesma regra do begin e end valem para a estrutura composta, veja exemplo:
program ex_4;
uses crt;
var
N1,N2,N3,M:real;
Begin
Clrscr;
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
IF M>=7 THEN
begin
writeln('Mdia = ',M:4:1);
writeln('Aprovado');
end
ELSE
begin
writeln('Mdia = ',M:4:1);
writeln('Reprovado');
end;
readln;
end.
Podemos melhorar esse algoritmo. Veja que nas duas condies ou seja no if e no else
temos o comando writeln('Mdia = ',M:4:1).Se desejamos exibir a mdia de qualquer forma, esse
comando deve ser colocado fora da estrutura de deciso.
27
Tcnicas de Programao
program ex_5;
uses crt;
var
N1,N2,N3,M:real;
Begin
Clrscr;
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
writeln('Mdia = ',M:4:1);
IF M>=7 THEN
writeln('Aprovado')
ELSE
writeln('Reprovado');
readln;
end.
Exerccios:
1) Escreva um algoritmo para cada um dos exerccios a seguir:
a) Ler 2 numeros e apresentar a diferena do maior pelo menor.
b) Ler um nmero e dizer se o nmero digitado par ou mpar
c) Em um curso, a nota final do aluno calculada a partir do seu desempenho em 3 aspectos do
trabalho semestral. Existe um exame intermedirio que vale 30% da nota final. Ao trabalho de
laboratrio dada uma nota que vale 20% da nota final. O exame final completa o restante.
Faa um algoritmo que leia o nome do estudante e suas notas em cada item, calcule e
informe o nome do estudante, suas notas intermedirias, sua nota final e uma indicao
sobre a sua aprovao ou no, sabendo que a nota final mnima para aprovao 6.
d) Faa um algoritmo que leia o nome de um funcionrio, as horas trabalhadas no dia e o seu
salrio/hora. Calcule o que ele tem a receber e escreva o nome do funcionrio, as horas
trabalhadas e o salrio a receber. OBS. Se a jornada de trabalho for maior que 8 horas, esta
diferena ser considerada hora-extra, a qual tem um acrscimo de 50%.
Observe que embora o contedo do primeiro else seja extenso, ele composto de um nico
comando if, portanto no precisa de begin end.
28
Tcnicas de Programao
Exerccios:
1) Escreva um algoritmo (fluxograma e pseudocdigo) para cada um dos
exerccios a seguir:
a) Efetuar a leitura da idade de uma pessoa e se ela tiver 18 anos ou
mais escrever duas mensagens: Maior de idade e J pode dirigir
alem disso, solicite que ela digite seu sexo e caso seja do sexo masculino, escreva a
mensagem Alistamento militar obrigatrio.
b) Desenvolva um algoritmo que recebe dois valores a e b, verifique se a divisvel por b e
informe os valores recebidos e o resultado da verificao. Lembre-se que nenhum nmero
divisvel por 0.
c) Em certa instituio de ensino, a mdia final calculada de duas formas, valendo a que
apresentar resultado mais interessante para o aluno. Durante o semestre, trs notas so
obtidas. Uma forma de definir a mdia final calcular a mdia aritmtica. A outra uma
mdia ponderada, com pesos 3, 2 e 4, respectivamente. Desenvolva um algoritmo que
informe o nome do aluno, suas notas, a mdia aritmtica, a mdia ponderada e qual delas foi
considerada.
Combinando condies
Exemplo:
program ex_7;
uses crt;
var
N1,N2,N3,M:real;
Aulas_dadas,Faltas,Limite:integer;
Begin
Clrscr;
writeln('Digite o nmero de aulas dadas:');
readln(aulas_dadas);
Limite:=aulas_dadas*0,25;
writeln('Digite o nmero de faltas:');
readln(faltas);
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
writeln('Mdia = ',M:4:1);
IF (M>=7) AND (faltas<=Limite) THEN
writeln('Aprovado');
ELSE
IF (M>=4) AND (faltas<=Limite) THEN
begin
writeln('Exame');
writeln('Voc precisa tirar',10-M, 'no Exame');
end
ELSE
begin
writeln('Voc deveria ter estudado mais e/ou faltado menos.');
writeln('Reprovado');
end;
readln;
end.
Obs:Quando existe mais de uma condio, essas devem estar entre parnteses.
29
Tcnicas de Programao
Exerccios:
1. Escreva um algoritmo para cada um dos exerccios a seguir:
Exerccios de fixao:
30
Tcnicas de Programao
31
Tcnicas de Programao
Exemplo em Pascal:
program ex_8;
uses crt;
var
idade:integer;
Begin
Clrscr;
writeln('Digite a idade:');
readln(idade);
CASE idade OF
0..3:writeln('Beb');
4..10:Begin
writeln('Criana');
writeln('Aproveite para brincar bastante');
end;
11..18: Begin
writeln('Adolescente');
writeln('Acabou a brincadeira, hora de estudar');
end;
ELSE
writeln('Adulto');
end;
readln;
end.
Note que na estrutura CASE temos a mesma regra: para mais de um comando
dentro da condio temos que utilizar begin e end.
A condio pode ser uma lista de valores aceitveis:
CASE Letra OF
A ,E ,I O ,U : writeln(Vogais );
FIM;
Obs.: O comando CASO s aceita valores do tipo CHAR,INTEGER ou BOOLEAN.
Exerccios:
1.Escrever um algoritmo que dada uma varivel inteira DiaSem, com valores
entre 1 e 7, escreva o correspondente dia da semana.
2. A nota final de um estudante calculada a partir de trs notas atribudas
respectivamente a um trabalho de laboratrio, a uma avaliao semestral e a um exame final.A
mdia das trs notas mencionadas anteriormente obedece aos pesos a seguir:
Trabalho de laboratrio peso 2
Avaliao semestral peso 3
Exame final peso 5
Faa um programa que receba as trs notas, calcule e mostre a mdia ponderada e o
conceito que segue a tabela abaixo:
8,0 10,0 A
7,0 8,0 B
6,0 7,0 C
5,0 6,0 D
0,0 5,0 E
32
Tcnicas de Programao
3.Faa um programa que receba a mdia do primeiro semestre e a mdia do segundo semestre
de um aluno, calcule e mostre a mdia anual (sabendo que a mdia do segundo semestre tem
peso dois e a do primeiro semestre tem peso um ) e a mensagem que segue a tabela abaixo.
Para alunos de exames, calcule e mostre a nota que dever ser tirada no exame para a
aprovao, considerando a seguinte frmula: Exame = 12 - Mdia Anual
00 3,0 Reprovado
3,0 6,0 Exame
6,0 10,0 Aprovado
4.Faa um programas que receba quatro valores. Opo, A, B e C. Opo um valor inteiro e
positivo e A,B e C so valores reais.Escreva os nmeros A,B e C obedecendo tabela a seguir.
Observao: Caso o valor digitado para opo seja invlido, ou seja, diferente de 1, 2 e 3, exibir
mensagem de opo invlida.
5.Faa um programa que mostre o menu de opes a seguir, receba a opo do usurio e os
dados necessrios para cada opo e mostre o resultado
Menu de opes:
1. Somar os dois nmeros
2. Raiz quadrada de um nmero
Digite a opo desejada:
Processos de Repetio
Muitas vezes temos a necessidade de repetir um trecho de programa. Neste caso, ser
criado o chamado looping ou lao de repetio, que executa um determinado conjunto de comandos
tantas vezes quantas forem necessrias.
33
Tcnicas de Programao
Nesse exemplo, inicializamos a varivel N com o valor 1 e esse valor ser incrementado de
1 em 1 at alcanar o limite superior de 100. Para cada incremento ser escrito o valor de I e um
hfen para separar os valores, como pede o comando writeln, (como esse looping composto de um
nico comando, no usamos begin e end.)
Se quisermos que a contagem seja regressiva devemos utilizar FOR DOWNTO DO
Exemplo em Pascal
program ex_10;
uses crt;
var
N:integer;
Begin
Clrscr;
writeln('Escrevendo os nmeros de 10 a 0');
FOR N:=10 DOWNTO 0 DO
begin
clrscr;
write(I);
end;
readln;
end.
Exerccios:
1) Escreva um algoritmo (fluxograma e pseudocdigo) para cada um dos
exerccios a seguir:
34
Tcnicas de Programao
l) Uma empresa decide dar um aumento de 30% aos funcionrios cujo salrio inferior a 500.
O algoritmo deve permitir o clculo do salrio reajustado de 10 funcionrios segundo o
mesmo critrio de reajuste.
2) Escreva um programa usando um for dentro do outro que pea a altura e a largura de um
retngulo e desenhe-o totalmente preenchido e formado por asteriscos.
Ex. : **********
**********
**********
3) Faa um programa que cadastre 10 pessoas, onde ser perguntado o sexo e a idade da pessoa.
Ao final ser exibida a mdia de idade do sexo masculino e feminino, e a maior e menor idade
cadastrada.
4) Escrever um algoritmo/programa em Pascal que l 20 valores, um de cada vez, e conta quantos
deles esto em cada um dos intervalos [0, 25], (25, 50], (50, 75], (75, 100], escrevendo esta
informao.
5) Escrever um algoritmo/programa em Pascal semelhante ao anterior que calcula as mdias
aritmticas de cada intervalo e as escreve, juntamente com o nmero de valores de cada
intervalo.
6) Escrever um algoritmo/programa em Pascal que l um nmero e calcula e escreve quantos
divisores ele possui.
7) Escrever um algoritmo/programa em Pascal que l um nmero e escreva se ele " primo" ou "no
primo"
8) Escrever um algoritmo/programa em Pascal que l um valor X e calcula e escreve os 20 primeiros
2 3 4 i
termos da srie: 1 + 1/x + 1/x + 1/x + ... Considere que para calcular x no pascal utiliza-se
a seguinte sintaxe: exp(ln(x)*i)
9) Escrever um algoritmo/programa em Pascal que l N, inteiro e positivo e calcula e escreve o
termo de ordem N da sucesso abaixo:
ordem: 1 2 3 4 5 6 7 8 ...
sucesso: -1 0 5 6 11 12 17 18 ...
35
Tcnicas de Programao
Algoritmo
ALGORITMO ExEnquanto
ENQUANTO <Condio for verdadeira> FAA
<Comandos>
FIM ENQUANTO
Exemplo em Pascal
program ex_enquanto;
uses crt;
var
N1,N2,N3,M:real;
Cont:integer;
Begin
Clrscr;
Cont:=1;
While cont<=40 do
begin
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
writeln('Mdia = ',M:4:1);
cont:=cont+1;
end;
readln;
end.
Esse programa vai calcular a mdia de 40 alunos. Perceba que antes da estrutura While,
inicializado o contador com valor 1. O programa verifica que o valor do contador (1) menor que 40,
ento ele executa os comandos do loop, definidos entre o begin e o end. Depois de calcular e exibir a
mdia do 1 aluno, executa o comando cont:=cont+1 que faz com que o contador seja incrementado
em 1 unidade e retorna para fazer a verificao. Perceba que depois de calcular e exibir a mdia do
40 aluno, o contador passa para 41 e retorna para fazer a verificao; como cont no menor ou
igual a 40 ele no executa os comandos do loop e pula para o prximo comando aps o end; que
encerra o loop.
Exemplo:
36
Tcnicas de Programao
Algoritmo
REPITA
<Comandos>
ATE <Condio for verdadeira>
Exemplo:
Esse programa calcula a mdia de trs notas e verifica se o usurio deseja calcular outra
mdia, se sim, ele retorna, se no ele encerra o programa.
program ex_repita;
uses crt;
var
N1,N2,N3,M:real;
Resposta:char;
Begin
Clrscr;
REPEAT
writeln('Digite trs notas:');
readln(N1,N2,N3);
M:=(N1+N2+N3)/3;
writeln('Mdia = ',M:4:1);
writeln('Deseja calcular nova media? (S para sim N para No)');
readln(resposta);
resposta:=upcase(resposta);
UNTIL resposta='N';
readln;
end.
Exerccios:
1) Quais so as estruturas de repetio existentes no Pascal ?
5) Escreva um programa Pascal que leia um conjunto de 100 nmeros inteiros positivos e determine
a quantidade de nmeros pares e nmeros mpares contidos no mesmo.
readln(N)
R := 1;
I := 2;
while I <= N-1 do
begin
R := R * 2;
I := I + 1;
end;
write(R);
Reescreva-o utilizando:
37
Tcnicas de Programao
a) o comando FOR
b) o comando REPEAT
OPES:
1 -SAUDAO
2 -BRONCA
3 -FELICITAO
0 -FIM
O programa deve ler a opo do usurio e exibir, para cada opo, a respectiva
mensagem:
8) Faa um programa que leia 3 valores inteiros (N, X, Y) e mostre todos os nmeros mltiplos de N
entre X e Y.
9) Um programa que receba trs notas de um aluno, calcule e mostre a mdia aritmtica e a
mensagem que segue a tabela abaixo. Para alunos de exame, calcule e mostre a nota que dever
ser tirada no exame para aprovao, considerando que a mdia no exame 6.0.
Mdia Mensagem
0,0 at 3,0 Reprovado
3,0 (inclusive) at 7,0 Exame
7,0 (inclusive) at 10,0 (inclusive) Aprovado
10) Faa um programa que receba o cdigo correspondente ao cargo de um funcionrio e o seu
salrio atual e mostre o cargo, o valor do aumento e seu novo salrio. Os cargos na tabela a seguir:
11) Faa um programa que receba a idade de um nadador e mostre a sua categoria usando as regras
a seguir:
a. Infantil de 5 a 7;
b. Juvenil de 8 a 10;
c. Adolescente de 11 a 15;
d. Adulto de 16 a 30;
e. Snior acima de 30.
12) Faa um programa que leia o nmero de termos, determine e mostre os valores de acordo com a
srie abaixo:
Srie 2, 7, 3, 4, 21, 12, 8, 63, 48, 16, 189, 192, 32, 567, 768, 64......
38
Tcnicas de Programao
14) Faa um programa que leia um valor n, inteiro e positivo, calcule e mostre a soma S da seguinte
forma: S= 1 + 1/2 +1/3+1/4+...+1/n
15) Uma loja utiliza o cdigo V para transao a Vista e P para transao a prazo. Faa um programa
que receba o cdigo e o valor das transaes e mostre:
a) o valor total das vendas a vista;
b) o valor total das vendas a prazo;
c) o valor total das vendas efetuadas.
16) A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o
salrio e o nmero de filhos. A prefeitura deseja saber:
a) a mdia dos salrios da populao;
b) a mdia dos nmero de filhos;
c) o maior salrio
d) a porcentagem de pessoas com salrios at R$ 320,00
17) Cada espectador de um cinema respondeu a um questionrio no qual constava sua idade e a sua
opinio em relao ao filme: timo, bom e regular. Faa um programa que recebe a idade e a opinio
das pessoas, calcule e mostre ao final:
a) a mdia das idades das pessoas que responderam timo;
b) a quantidade de pessoas que respondeu regular;
c) a porcentagem de pessoas que respondeu bom entre os entrevistados.
18) Foi feita uma estatstica em cinco cidades brasileiras para coletar dados sobre acidentes de
trnsito. Foram obtidos os seguintes dados:
a. Cdigo da cidade;
b. Nmero de veculos de passeio em 2006;
c. Nmero de acidentes de trnsito com vtimas em 2006.
Deseja-se saber:
a. qual o maior e o menor ndice de acidentes de trnsito;
b. qual a mdia de veculos nas cinco cidades juntas;
c. qual a mdia de acidentes de transito nas cidades com menos de 2000 veculos de
passeio.
19) Uma empresa possui 10 funcionrios com as seguintes caractersticas: cdigo, nmero de
horas trabalhadas no ms, turno de trabalho(M-Matutino, V- Vespertino ou N-Noturno), categoria
(O-Operrio ou G-Gerente), valor da hora trabalhada. Sabendo-se que essa empresa deseja
informar sua folha de pagamento, faa um programa que:
Leia as informaes dos funcionrios, exceto o valor da hora trabalhada, no permitindo
que sejam informados turnos nem categorias inexistentes. Trabalhar sempre com a
digitao de letras maisculas;
Calcule o valor da hora trabalhada de acordo com a tabela s seguir:
39
Tcnicas de Programao
Calcule o salrio inicial dos funcionrios com base no valor da hora trabalhada e no
nmero de horas trabalhadas.
Calcule o valor do auxlio-alimentao recebido por funcionrio de acordo com o seu
salrio inicial, conforme a tabela a seguir:
Salrio Inicial Auxlio Alimentao
At R$500,00 20% do salrio inicial
Entre R$500,00 e R$800,00 15% do salrio inicial
Acima de R$800,00 5% do salrio inicial
Mostre o cdigo, nmero de horas trabalhadas, valor da hora trabalhada, salrio inicial,
auxlio-alimentao e o salrio final(salrio inicial + auxlio-alimentao)
20) Uma empresa contratou 15 funcionrios temporrios. De acordo com o valor de vendas
mensais, os funcionrios adquirem pontos que determinaro seus salrios ao final de cada ms.
Sabe-se que esses funcionrios trabalharo nos meses de novembro a janeiro do ano
subseqente.
Faa um programa que:
Leia as pontuaes nos trs meses de cada funcionrio;
Calcule e mostre a pontuao geral de cada funcionrio nos trs meses;
Calcule e mostre a mdia das pontuaes de cada funcionrio nos trs meses
Determine e mostre a maior pontuao atingida entre os funcionrios nos trs meses.
Bibliografia:
40