You are on page 1of 97

Ementrio

Noes de hardware e software.


Conceito de algoritmo e programao.
Algoritmos: representao, tcnicas e estruturas de
elaborao. Tcnicas de projeto e desenvolvimento de
algoritmos.
Representao de dados. Tipos de dados. Cadeia de
caracteres, vetores e registros. Instrues simples e
compostas. Subprogramao. Recursividade. Elaborao e
implementao de programas em uma linguagem
estruturada de alto nvel. Alocao dinmica de memria.
Listas lineares, pilha, fila, rvores e grafos.
Mtodos de ordenao.
Definio e manipulao de arquivos externos.
Aplicaes prticas utilizando uma linguagem estruturada
de alto nvel (Pascal e C).
Sentenas, Instrues, Comandos
Codificao
Aes, o que executado
Definies bsicas (1/2)
dispositivo de entrada (usurio computador)
meio pelo qual as informaes so transferidas pelo
usurio ou pelos nveis secundrios de memria ao
computador
teclado, discos magnticos, fitas, carto perfurado
dispositivo de sada (computador usurio)
meio pelo qual as informaes so transferidas pelo
computador ao usurio ou aos nveis secundrios de
memria
monitor de vdeo, impressora, fitas, discos magnticos
Definies bsicas (2/2)
sintaxe (escrita do comando)
forma como os comandos devem ser escritos, a fim de
que possam ser entendidos pelo tradutor (compilador,
interpretador) de programas.
a violao das regras sintticas considerada um erro
sujeito pena do no-reconhecimento do comando por
parte do tradutor.
semntica (lgica do comando)
significado, conjunto de aes que sero exercidas pelo
computador durante a execuo do referido comando.
Interface com o usurio
Meio pelo qual um programa e o usurio
conversam.
I
n
t
e
r
f
a
c
e

Usurio Programa
readln
(teclado)
writeln
(vdeo)
input
output
Estrutura mnima de um programa escrito
em Linguagem Pascal:
program AloMundo;
begin
***
end.
ponto inicial da execuo de um
programa escrito em Linguagem Pascal
uses crt;
A clusula uses instrui o compilador a ler
(ou incluir) uma biblioteca de cdigos ao
programa
biblioteca = conjunto de subprogramas
(procedures e/ou functions) reutilizveis

Crt tratamento de video
Dos rotinas (funes) do sistema
operacional DOS
Comentrios, { }
{ Isto um comentrio. }
(* Isto um comentrio. *)
{ 15% de reajuste no salrio mnimo }
SalarioMinimo := SalarioMinimo * 1.15;

Nota: {$, indica diretiva de compilao
Ex.: {$I-} {$I+}
Ponto-e-vrgula (;)
separador de comandos (um por comando)
comando 1;
comando 2; comando 3;
comando 4; { comando 5; } comando 6;
comando 7;
na instruo imediatamente anterior a
clusula end no exigido
Comandos (instrues)
Simples (atmicas)
comando vazio, atribuio, controle de desvios,
comandos de entrada / sada
Compostos (estruturados)
sequncia (ou composio): begin - end
condio: if - then e if - then - else
seleo: case
repetio: while, repeat e for
Comandos (ou instrues)
Simples
Compostos
Sequncia Deciso Repetio
Comando vazio
no demanda tempo de execuo
no necessita de recursos computacionais
begin
...
; ; ; ; ;
...
repeat until Keypressed;
...
end.
Atribuio (:=)
Onde:
Identificador
NomeDeVarivel, NomeDeFuno
Expresso
valor atribudo ao identificador
Identificador := Expresso;
Exemplos de expresses (1/3):

Tendo as seguintes variveis:
var n, result: integer;
nota1, nota2, media, raizq: real;

{ quadrado de n }
result := n * n; ou result := sqr(n);

{ raiz quadrada de n }
raizq := sqrt(n);

{ mdia aritmtica simples de duas notas }
media := (nota1 + nota2) / 2;
Exemplos de expresses (2/3):

Tendo as seguintes variveis:
var vlr, novovlr, salario, novosalario: real;

{ 90% do valor }
novovlr := vlr * (90 / 100);

{ reajustar o salrio em 10% }
novosalario := salario + (salario * (10 / 100));

{ desconto de 10% no valor }
novovlr := vlr - (vlr * (10 / 100));
Exemplos de expresses (3/3):

Tendo as seguintes variveis:
var n, digito, novon, a, b, aux: integer;

{ retornando o ltimo dgito do nmero }
digito := n mod 10;

{ retirando o ltimo dgito do nmero }
novon := n div 10;

{ fazendo a troca (swap) de dois valores }
aux := a;
a := b;
b := aux;
Tipos de variveis frequentes:

{ Contadores }
i := 0; j := 1;
i := i + 1; { ou } inc(i); j := j + 2;

{ Somatrios, ou acumuladores }
sm := 0;
for i := 1 to 10 do
begin
readln(idade);
S := S + idade;
end;

{ Produtrios. Fatorial de 4 = 1 * 2 * 3 * 4 }
p := 1;
for i := 1 to 4 do p := p * i;
Controles de desvios
objetivo = desviar a seqncia natural do cdigo fonte dos
programas

goto (v para): desvio incondicional
break: quebra instrues repetitivas (for,
while e repeat)
continue: interrompe apenas a interao corrente
da instruo repetitiva (for, while e
repeat)
exit: quebra o bloco de cdigo
halt: termina a execuo de um aplicativo
Limpa a tela (clrscr)
CLeaR SCReen, limpa a tela e posiciona o cursor
no canto superior esquerdo (1,1)
prepara o vdeo para iniciar um processo de
entrada ou sada de dados
uses Crt;
uses WinCrt;
program LimpaTela;
uses Crt;
begin
clrscr;
...
end.
Posiciona o cursor (gotoxy)
este procedimento, disponvel na biblioteca crt,
permite posicionar o cursor em um determinado
ponto da tela

gotoxy(coluna, linha);

onde:
coluna, valor numrico inteiro positivo entre 1 e 80
linha, valor numrico inteiro positivo entre 1 e 24
(01, 01)
x
y
(80, 25)
(80, 01)
(01, 25)
Terminal de Vdeo
(tela do computador)
gotoxy(01, 01); canto superior esquerdo
gotoxy(01, 24); canto inferior esquerdo
gotoxy(80, 01); canto superior direito
gotoxy(80, 24); canto inferior direito
1
25
80
25
Comando de entrada (readln)
permite ao usurio do programa fornecer
valores ao computador
ln, indica line new (linha nova)
readln identificador ; ( )
,
Comando de sada (writeln)
permite ao computador exibir os resultados,
determinados pelo programa, ao usurio
writeln expresso ; ( )
,
Para justificar (ou alinhar) o resultado
direita no comando de sada (writeln):

write(n:3); writeln(vlr:6:2); writeln(s:15);

1 1.00 Brasil
2 2.00 Pato Branco
... ... Curitiba
9 9.00 UTFPR
10 10.00 Mater Dei
11 11.00 Programar Bom
... ...
99 99.00
100 100.00
101 101.00
... ...
999 999.99
Formatao da sada
Os tipos de dados reais so impressos em
notao cientfica, por exemplo:
9.5075000000E+02 = 9.5075 x 10
2
= 950.75
Como apresentar este tipo de valor em Pascal ?
var vlr: real;
begin
vlr := 950.75;
writeln('Na notao decimal ', vlr:6:2);
{ Onde: 999.99



6- tamanho total, incluindo casas decimais
e o ponto decimal
2- nmero de casas decimais }
end.
6
2
Exemplos de Formatao da sada

var vlr: real;
n: integer;

9999.99 writeln(..., vlr:7:2);

99.9999 writeln(..., vlr:7:4);

99999.9 writeln(..., vlr:7:1);

9999999 writeln(..., vlr:7:0);

.99 writeln(..., vlr:3:2);

999 writeln(..., n:3);
program CalculaMedia;
uses Crt;
var Nota1, Nota2, Media: real;
begin
clrscr;
gotoxy(10, 01);
write('Digite a nota do 1 Bimestre: ');
readln(Nota1);

gotoxy(10, 03);
write('Digite a nota do 2 Bimestre: ');
readln(Nota2);

Media := (Nota1 + Nota2) / 2;
gotoxy(10, 05);
writeln('A mdia calculada : ', Media:5:2);
...
end.
Tamanho total que ser utilizado para
exibir a informao, incluindo o ponto
decimal (99.99)
Nmero de casas decimais.
ex. 7.50
Entendendo o Cdigo (1/2)
readln(n);
onde:
readln comando de entrada (input)
n nome da varivel, ou seja, endereo de memria

semntica de funcionamento:
interrompe a execuo do programa e atravs do dispositivo
de entrada (teclado) o usurio dever fornecer um nmero
inteiro que ser armazenado no endereo de memria
correspondente a varivel n.
Entendendo o Cdigo (2/2)
writeln(i:2, ' * ', n, ' = ', (i*n):3);
onde:
writeln comando de sada (output)

semntica de funcionamento:
exibe no dispositivo de sada padro (terminal de vdeo) cinco valores:
1) o valor inteiro da varivel i usando duas posies do vdeo
2) exatamente a literal * entre espaos
3) o valor inteiro da varivel n
4) exatamente a literal = entre espaos
5) o resultado da expresso i*n usando trs posies do vdeo
Interface amigvel
programa amigo do usurio
regras bsicas:
toda vez que um programa estiver esperando que o
usurio fornea a ele um determinado dado (operao
de leitura), ele deve enviar uma mensagem dizendo ao
usurio o que ele deve digitar, por meio de uma
instruo de sada de dados (writeln);
antes de enviar qualquer resultado ao usurio, um
programa deve escrever uma mensagem explicando o
significado do mesmo.
Meios para interromper o fluxo normal de execuo
do programa e aguardar uma interveno do usurio:
readln;
necessrio teclar <Enter> para prosseguir
repeat until keypressed;
necessrio pressionar qualquer tecla para prosseguir
inkey, readkey
utilizados para identificar a tecla pressionada (leitura do
teclado)
Interrupes (paradas)
Estruturas de Controle (1/2)
Um programa de computador uma sequncia de instrues
organizadas de forma a produzir a soluo de um determinado
problema; o que representa uma das habilidades bsicas da
programao, que a sequenciao.

Naturalmente, as instrues de um programa so executadas em
sequncia, o que se denomina fluxo sequencial de execuo. Mas,
em inmeras circunstncias, necessrio executar as instrues
de um programa em uma ordem diferente da estritamente
sequencial.

Tais situaes so caracterizadas pela necessidade da repetio de
instrues individuais ou conjuntos de instrues, e tambm pelo
desvio do fluxo de execuo, tarefas que podem ser realizadas
por meio das estruturas de controle da linguagem.
estruturas que controlam a sequncia, ou
fluxo, de execuo das instrues no
programa
estrutura de sequncia
um comando aps o outro
estruturas de deciso (ou condio)
seleciona um, e somente um, conjunto de comandos a
serem executados
estruturas de repetio
executa os comandos um nmero repetido de vezes
Estruturas de Controle (2/2)
Estruturas de Controle
(comandos compostos)
Sequncia Deciso Repetio
if - then
if - then - else
case - of
while - do
repeat - until
for - to - do
begin - end
Sequncia (ou composio)
Na estrutura sequencial os
comandos so executados em
uma sequncia pr-estabelecida.
Cada comando executado
somente aps o trmino do
comando anterior.
begin - end
begin
Comando 1;
Comando 2;
...
Comando N;
end;
comando begin end
;
Exemplo da estrutura de controle sequencial,
ou composio (begin - end)

begin
...
A := B;

if A < C then A := C;

for i := 1 to 10 do dec(C);
...
end;
Operadores relacionais (1/2)
= igual a
<> diferente de
> maior que
< menor que
>= maior igual a
<= menor igual a
Operadores relacionais (2/2)
Variveis: Atribuies:
var a, b: integer; a := 2;
b := 3;

Expresses lgicas
(testes lgicos) resultado
a = b falso
a <> b verdadeiro
a > b falso
a < b verdadeiro
a >= b falso
a <= b verdadeiro
Operadores lgicos (ou booleanos)
not negao lgica
and e lgico conjuno
or ou lgico disjuno
T
a
b
e
l
a

V
e
r
d
a
d
e

Instrues condicionais
Simples (if - then)

Composta (if - then - else)

Seletiva (case - of)
if ExpressoLgica (EL)
then Comando;
verdadeira
Comando
falsa
EL
Semntica da instruo condicional na sua
forma simples (if - then):

if ExpressoLgica (EL)
then Comando;


No caso da Expresso Lgica (condio)
avaliada ser verdadeira, o comando ou um
conjunto de comandos executado e, aps seu
trmino, o fluxo de execuo prossegue pela
prxima instruo aps a instruo if - then.


Quando a condio falsa, nenhum comando
executado e o fluxo prossegue normalmente pela
primeira instruo aps a instruo if - then.
Exemplificando as Relaes (1/3)
program Exemplos_de_relacoes;
uses crt;
var n: integer;
begin
clrscr;
writeln('Informe um nmero inteiro:');
readln(n);

if (n = 5)
then writeln(n, ' igual a 5');

writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
5
n = 5

if (n = 5)
then writeln(n, ' igual a 5');

Representao matemtica: Representao computacional:
Exemplificando as Relaes (2/3)
5
n = 5

if (n = 5)
then writeln(n, ' igual a 5');

Representao matemtica: Representao computacional:
5
n < 5

if (n < 5)
then writeln(n, ' menor que 5');

5
n 5

if (n <= 5)
then writeln(n, ' menor ou igual a 5');

5
n > 5

if (n > 5)
then writeln(n, ' maior que 5');

5
n 5

if (n >= 5)
then writeln(n, ' maior ou igual a 5');

Exemplificando as Relaes (3/3)
5
n # 5

if (n <> 5)
then writeln(n, ' diferente de 5');

Representao matemtica: Representao computacional:
5
n # 5, e n # 9
if ((n <> 5) and (n <> 9))
then writeln(n, ' diferente de 5',
' e diferente de 9');

9
n = 5, ou n = 9
if ((n = 5) or (n = 9))
then writeln(n, ' igual a 5',
' ou igual a 9');

5 9
n < 5, ou n > 9
if ((n < 5) or (n > 9))
then writeln(n, ' est fora do intervalo',
' entre 5 e 9.');

5 9
n 5, e n 9
if ((n >= 5) and (n <= 9))
then writeln(n, ' pertence ao intervalo',
' de 5 at 9.');

5 9
Exemplos de Distrbios e Complicaes
Metablicas associadas a Terapia Nutricional:

Hipoglicemia, suspenso sbita da infuso de
glicose
glicose srica < 80mg/ 100ml
se o exame de glicose srica for menor
que 80 mg/ 100ml ento verdadeiro
afirmar que o paciente est sujeito a uma
Hipoglicemia

Hiperglicemia, oferta de glicose excede o
montante que o organismo consegue metabolizar
glicose srica > 200mg/ 100ml
Exemplo da utilizao da instruo condicional
na sua forma simples (if - then)

if Exame_Glicose < 80
then writeln('Hipoglicemia.');


if (Idade = 18) and (Sexo = 'M')
then writeln('Servio Militar Obrigatrio');


if Salario < (2 * SalarioMinimo)
then begin
Salario := Salario * 1.15;
writeln('Salrio: ', Salario:10:2);
end;
{ Efetuar a leitura de um valor inteiro positivo ou negativo
e apresentar o nmero lido como sendo um valor positivo, ou
seja, o programa devera apresentar o mdulo de um nmero
fornecido. Lembre-se de verificar se o nmero fornecido e
menor que zero, sendo multiplique-o por -1. }
program ValorAbsoluto;
uses Crt;
var Numero: integer;
begin
clrscr;
write('Digite o nmero.: ');
readln(Numero);
writeln;

if Numero < 0
then Numero := Numero * (-1);


writeln('O mdulo do Nmero eh igual a ', Numero);
writeln('Pressione [algo] para prosseguir.');
readkey;
end.
verdadeiro
numero < 0
numero := numero * (-1);
falso
if ExpressoLgica (EL)
then Comando 1
else Comando 2;
verdadeira
Comando 1
EL
falsa
Comando 2
Semntica da instruo condicional na sua
forma composta (if - then - else):

if ExpressoLgica (EL)
then Comando 1
else Comando 2;

No caso da Expresso Lgica (condio)
avaliada ser verdadeira, a seqncia de
comandos 1 executada e, aps seu trmino,
o fluxo de execuo prossegue pela prxima
instruo aps a instruo if - then - else.

Quando a condio falsa, a seqncia de
comandos 2 executada e o fluxo prossegue
normalmente pela primeira instruo aps a
instruo if - then - else.
Exemplo da utilizao da instruo condicional
na sua forma composta (if - then - else)

if Exame_Glicose < 80
then writeln('Hipoglicemia.')
else writeln('No tem Hipoglicemia.');



if Salario < (2 * SalarioMinimo)
then begin
Salario := Salario * 1.15;
writeln('Salrio: ', Salario:10:2);
end
else writeln('Sem direito ao Reajuste.');
Exemplo da utilizao da instruo condicional
na sua forma composta (if - then - else)

if Idade < 18

then writeln('Menor de Idade.')

else begin

if (Idade = 18) and (Sexo = 'M')
then writeln('Servio Militar.');

writeln('Maior de Idade.');

end;

true
Imprima Menor de Idade.
Idade < 18
false
(Idade = 18) .e.
(Sexo = M)
Imprima Servio Militar.
Imprima Maior de Idade.
false true
Exemplo da utilizao da instruo condicional
na sua forma composta (if - then - else)

writeln('Sexo (M/ F)..: '); readln(Sexo);
writeln('Peso Corporal: '); readln(PC);
writeln('Altura.......: '); readln(Alt);
writeln('Idade........: '); readln(I);

if Sexo = 'M'
then begin
writeln('Homens.');
GEB := 66.47+(13.75*PC)+(5*Alt)(6.76*I);
end

else begin
writeln('Mulheres.');
GEB := 655.1+(9.56*PC)+(1.85*Alt)(4.67*I);
end;

writeln('Gasto Energtico Basal : ', GEB:10:2);
{ Ler dois valores numricos e apresentar a diferena
do maior pelo menor. }
program DiferencaEntreNumeros;
uses Crt;
var a, b, dif: integer;
begin
clrscr;
write('Digite o 1 nro: ');
readln(a);

write('Digite o 2 nro: ');
readln(b);

if a > b
then dif := a - b
else dif := b - a;

writeln('Diferena do maior pelo menor: ', dif);
writeln('Pressione [algo] para prosseguir.');
readkey;
end.
a > b
dif = a b;
falso verdadeiro
dif = b a;
a > b
b
a
Definir o maior entre 2 (dois) nmeros:
2
n-1
= 2
2-1
= 2
1
= 2 caminhos na rvore de deciso.
rvore de deciso: Representao computacional:
if (a > b)
then writeln("O maior valor ", a)
else
writeln("O maior valor ", b);
V F
Definir o maior entre 3 (trs) nmeros:
2
n-1
= 2
3-1
= 2
2
= 4 caminhos na rvore de deciso.
rvore de deciso: Representao computacional:
if (a > b)
then
if (a > c)
then writeln("O maior valor ", a)
else writeln("O maior valor ", c)

else if (b > c)
then writeln("O maior valor ", b)
else writeln("O maior valor ", c);
a > b
b > c
a > c
b c a c
V F
V F V F
Definir o maior entre 4 (quatro) nmeros:
2
n-1
= 2
4-1
= 2
3
= 8 caminhos na rvore de deciso.
rvore de deciso: Representao computacional:
if (a > b)
then
if (a > c)
then
if (a > d)
then writeln("O maior valor ", a)
else writeln("O maior valor ", d)

else if (c > d)
then writeln("O maior valor ", c)
else writeln("O maior valor ", d)

else if (b > c)
then
if (b > d)
then writeln("O maior valor ", b)
else writeln("O maior valor ", d)

else if (c > d)
then writeln("O maior valor ", c)
else writeln("O maior valor ", d);
a > b
b > c
c > d b > d
a > c
c > d a > d
c b c d d a d d
V
V
V
V V
V
V
F
F F
F
F
F
F
Outras Relaes Impontantes (1/3)
program Par_ou_Impar;
uses crt;
var n: integer;
begin
clrscr;
writeln('Informe um nmero inteiro:');
readln(n);


if ((n mod 2) = 0)
then writeln(n, ' um nmero par.')
else writeln(n, ' um nmero mpar.');


writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Outras Relaes Impontantes (2/3)
program Multiplo_de_5;
uses crt;
var n: integer;
begin
clrscr;
writeln('Informe um nmero inteiro:');
readln(n);


if ((n mod 5) = 0)
then writeln(n, ' mltiplo de 5.')
else writeln(n, ' no mltiplo de 5.');


writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Outras Relaes Impontantes (3/3)
program Multiplo_de_2_e_3;
uses crt;
var n: integer;
begin
clrscr;
writeln('Informe um nmero inteiro:');
readln(n);


if (((n mod 2) = 0) and ((n mod 3) = 0))
then writeln(n, ' mltiplo de 2 e 3.')
else writeln(n, ' no mltiplo de 2 e 3.');


writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Uso Aninhado de if else (1/2)
Neste caso o comando1 executado qdo
a condio1 e a condio2 forem
verdadeiras, e o comando2 executado
quando a condio1 for verdadeira e a
condio2 for falsa.
if (condio1)
then if (condio2)
then comando1;
else
comando2;
Isso porque a regra bsica que uma clusula else sempre pertence ao
comando if imediatamente anterior. O uso de estruturas seqenciais (begin
end) permite modificar esta regra.
Agora o comando1 continua sendo
executado quando a condio1 e a
condio2 forem verdadeiras,
entretanto, o comando2
executado, simplesmentes, quando a
condio1 for falsa.
if (condio1)
then begin
if (condio2)
then comando1;
end
else
comando2;
Uso Aninhado de if else (2/2)
if (condio1)
then if (condio2)
then comando1;
else
comando2;
if (condio1)
then begin
if (condio2)
then comando1;
end
else
comando2;
Comando 1
Condio 1 e 2- Verdadeiro
Comando 2
Condio 1- Verdadeiro
Condio 2- Falso
Comando 1
Condio 1 e 2- Verdadeiro
Comando 2
Condio 1- Falso
comando1
condio1
falso verdadeiro
comando2
condio2
falso verdadeiro
comando1
condio1
falso verdadeiro
comando2
condio2
falso
verdadeiro
Um aninhamento o fato de se ter qualquer um dos tipos de
construo de comandos dentro de em conjunto de comandos
compostos (if, case, while, for e repeat).

Regra: A construo mais interna deve estar inteiramente contida
na construo imediatamente mais externa.
Vlido Invlido
Aninhamentos (ou Embutimentos)
{ Ler um valor inteiro que representa o ms de uma data
e apresentar o trimestre correspondente. }
program DefineOTrimestre;
uses crt;
var Mes: integer;
begin
clrscr;
write('Digite o valor do ms : ');
readln(Mes);
if (Mes >= 1) and (Mes <= 3)
then writeln('Primeiro Trimestre.')
else if (Mes >= 4) and (Mes <= 6)
then writeln('Segundo Trimestre.')
else if (Mes >= 7) and (Mes <= 9)
then writeln('Terceiro Trimestre.')
else if (Ms >= 10) and (Ms <= 12)
then writeln('Quarto Trimestre.')
else writeln('Ms invlido.');
writeln('Pressione [algo] para prosseguir.');
readkey;
end.
Instruo condicional seletiva
(case - of)
case Seletor of
Rtulo 1: Comando 1;
Rtulo 2: Comando 2;
...
Rtulo N: Comando N;

[ else Comando; ]

end;
Semntica da instruo condicional seletiva
(case - of):

Ao entrar numa construo seletiva, o Seletor
comparado com o valor do Rtulo 1, se a relao de
igualdade for verdadeira, a seqncia de comandos 1
executada e, aps seu trmino, o fluxo de execuo
prossegue pela prxima instruo aps a instruo
case - of.

Se relao anterior falsa, o seletor ento comparado
ao Rtulo 2, se esta for verdadeira,a seqncia de
comandos 2 executada e o fluxo prossegue normalmente
pela primeira instruo aps a instruo case - of.

O mesmo racicnio estendido a todas as condies da
construo. No caso em que todas as condies so
avaliadas como falsas, a seqncia de comandos
correspondente a clusula else executada.
true
Seletor
Rtulo 2 Rtulo N
Comando 2 Comando N Comando
Comando 1
Rtulo 1
Instruo condicional seletiva
(case - of)
Seletor
false
Rtulo 2 Rtulo N
Comando 2 Comando N Comando
true
Comando 1
Rtulo 1
Instruo condicional seletiva
(case - of)
Seletor
Rtulo 2 Rtulo N
Comando 2 Comando N Comando
false ...
true
Comando 1
Rtulo 1
false
Instruo condicional seletiva
(case - of)
Seletor
Rtulo 2 Rtulo N
Comando 2 Comando N Comando
false
Comando 1
Rtulo 1
false ... false
Instruo condicional seletiva
(case - of)
Exemplo da utilizao da instruo condicional
seletiva (case - of)

repeat

writeln('Escolha a opo (I, A, E, F):');
readln(Opcao);

case Opcao of
'I': Inclusao;
'A': Alteracao;
'E': Exclusao;
else writeln('Opo Invlida !');
end;

until Opcao = 'F';
Instrues repetitivas (loops)
Laos condicionais:
com avaliao a priori (while - do)
com avaliao a posteriori (repeat - until)

Laos contados:
repetio automtica (for - to - do)
while ExpressoLgica (EL) do Comando;
true
Comando
EL
false
loop
Laos condicional (com avaliao a priori):
Instruo WHILE - DO
Semntica da instruo repetitiva com
com avaliao a priori (while - do):

while ExpressoLgica (EL) do Comando;

Ao incio da construo while a expresso lgica
(condio) testada. Se seu resultado for falso, ento
o comando no seu interior no executado e a execuo
prossegue normalmente pela instruo seguinte a instruo
while - do.

Se a condio for verdadeira a seqncia de comandos
executada e ao seu trmino retorna-se ao teste da
condio.

Assim, o processo acima ser repetido enquanto a condio
testada for verdadeira. Quando esta for falsa, o fluxo de
execuo prosseguir normalmente pelas instrues
posteriores a instruo while - do.
Onde:
i- varivel de controle (controla
o nmero de repeties)
Inicializa a varivel de controle
Verifica o trmino ou a continuidade
da instruo repetitiva
Incrementa (passo) a varivel de
controle
Exemplo da utilizao da instruo repetitiva
com avaliao a priori (while - do):

program Enquanto_Faca;
var i: integer;
begin
...
i := 1;
while i <= 10 do
begin

writeln(i);
i := i + 1;

end;
...
end.
i := 1;
i <= 10
writeln(i);
i := i + 1;
true
false
loop
while do

(10 repeties)
{ Elaborar um programa que apresente no final o somatrio
dos valores pares existentes na faixa de 1 at 500. }

program SomatorioDosParesDe1a500;
uses Crt;
var i: integer;
S: longint;
begin
clrscr;

S := 0; { inicializa o somatrio }
i := 2;
while (i <= 500) do
begin
S := S + i;
i := i + 2;
end;

writeln('O somatrio dos nmeros pares de 1..500 = ', S);
readln;
end.
Laos contados (repetio automatica):
Instruo FOR - TO - DO
de Limite Inicial para Limite Final
for VarivelDeControle (VC) := LimiteInicial (LI) to
LimiteFinal (LF) do Comando;

de Limite Final para Limite Inicial
for VarivelDeControle (VC) := LimiteFinal (LF) downto
LimiteInicial (LI) do Comando;
true
Comando
VC <= LF
false
loop
inc(VC)
VC := LI
for VC := LI to LF do Comando;
Semntica da instruo repetitiva automtica
(for - to - do):

for VC := LI to LF do Comando;

No incio da execuo da construo LI- Limite Inferior
atribuido a varivel VC- Varivel de Controle. A seguir,
VC comparado com LF- Limite Final. Se VC for maior que
LF, ento a sequncia de comandos no executada e o
fluxo de controle transferido para o primeiro comando
seguinte a construo for - to - do.

Por outro lado, se o VC for menor ou igual a LF, ento a
sequncia de comandos no interior da construo
executada e, ao final do mesmo, o valor de VC
incrementado. Feito isso, retorna-se comparao entre
VC e LF e repete-se o processo at que VC tenha um valor
maior que LF, quando o lao finalizado e a execuo do
programa prossegue pela instruo imediatamente a
construo for - to - do.
Onde:
i- varivel de controle (conta
o nmero de repeties)
Inicializa a varivel de controle
Determina o nmero
de repeties
Incrementa automaticamente
a varivel de controle
Exemplo da utilizao da instruo repetitiva
automtica (for - to - do):

program Para_Ate_Que;
var i: integer;
begin
...
for i := 1 to 10 do
begin

...
writeln(i);

end;
...
end.
true
i <= 10
false
loop
inc(i)
i := 1;
for i:=1 to 10 do

(10 repeties)
writeln(i);
Onde:
i- varivel de controle (conta
o nmero de repeties)
Inicializa a varivel de controle
Determina o nmero de repeties
Decrementa automaticamente
a varivel de controle
Exemplo da utilizao da instruo repetitiva
automtica (for - downto - do):

program Para_Ate_Que;
var i: integer;
begin
...
for i := 10 downto 1 do
begin

...
writeln(i);

end;
...
end.
true
i >= 1
false
loop
dec(i)
i := 10;
for i:=10 downto 1 do

(10 repeties)
writeln(i);
{ A converso de graus Fahrenheit para centgrados e obtida
pela frmula C=5/9(F-32). Escreva um algoritmo que calcule
e escreva uma tabela de graus centgrados em funo de
graus Fahrenheit de 50 a 150 de 1 em 1. }
program ConversaoFahrenheit;
uses Crt;
var f: integer;
c: real;
begin
clrscr;
for f:=50 to 150 do
begin
c := 5 / 9 * (f - 32);
writeln(f:3, ' Fahrenheit = ', c:5:2, ' centgrados.');
if (f mod 20) = 0
then begin { interrompe a cada 20 execues }
writeln('Pressione [Algo] p/ prosseguir.');
readkey;
clrscr;
end;
end;
writeln('Fim...');
readln;
end.
Contadores- quantificar coisas:
Qtde de funcionrios do sexo masculino
Qtde de alunos aprovados
VariavelContador := VariavelContador + 1; ou
inc(VariavelContador);

program Quantificar_Coisas;
uses crt;
var i, ct, num: integer;
begin
clrscr;
ct := 0; { inicializa o contador }
for i:=1 to 10 do
begin
write('Informe o ', i, 'o. nmero: ');
readln(num);
{ verifica "se" o i-simo valor informado menor que 10 }
if (num < 10)
then ct := ct + 1;
end;
{ exibe o resultado }
writeln;
writeln('Foram informados ', ct, ' valores menores que 10.');
writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Somatrios- somar coisas:
Soma dos salrios dos funcionrios do sexo masculino
Qtde de peas em estoque

VariavelSomatorio := VariavelSomatorio + ValorASerSomado;

program Somar_Coisas;
uses crt;
var i, sm, num: integer;
begin
clrscr;
sm := 0; { inicializa o somatrio }
for i:=1 to 10 do
begin
write('Informe o ', i, 'o. nmero: ');
readln(num);
{ verifica "se" o i-esimo valor informado par }
if ((num mod 2) = 0)
then sm := sm + num;
end;
{ exibe o resultado }
writeln;
writeln('Soma dos pares = ', sm);
writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Mdias- calcular mdias:
Salrio mdio dos funcionrios do sexo masculino
Idade mdia dos alunos da disciplina de algoritmos

Mdia := Soma / Quantidade de valores;
program Media_dos_Pares;
uses crt;
var i, sm, ct, num: integer;
media: real;
begin
clrscr;
sm := 0; ct := 0; media := 0; { inicializa as variveis }
for i:=1 to 10 do
begin
write('Informe o ', i, 'o. nmero: ');
readln(num);
{ verifica "se" o i-simo valor informado par }
if ((num mod 2) = 0)
then begin
sm := sm + num; { soma os pares }
ct := ct + 1; { conta os pares }
media := sm / ct; { calcula a mdia dos nros pares }
end;
end;
{ exibe os resultados }
writeln;
writeln('Soma dos pares = ', sm:3);
writeln('Qtd. de pares = ', ct:3);
writeln('Mdia dos pares = ', media:6:2);
writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Percentuais- calcular valores percentuais:
% de funcionrios do sexo masculino
% de nmeros pares

Percentual := Valor Parcial / Valor Total * 100;

program Percentual;
uses crt;
var i, ct: integer;
p: real;
begin
clrscr;
ct := 0; p := 0; { inicializa as variveis }
for i:=1 to 10 do
begin
write('Informe o ', i,'o. nmero: ');
readln(num);
{ verifica "se" o i-simo valor informado par }
if ((num mod 2) = 0)
then begin
ct := ct + 1;
p := ct / 10 * 100; { calcula o percentual de nros pares }
end;
end;
{ exibe o resultado }
writeln('Qtd. de pares = ', ct, ', ou seja,', p:6:2, '%');
writeln;
write('Pressione [algo] para prosseguir.');
readkey;
end.
Lao condicional (com avaliao a posteriori):
Instruo REPEAT - UNTIL
repeat Comando until ExpressoLgica (EL);
true
Comando
EL
false
loop
Semntica da instruo repetitiva com
com avaliao a posteriori (repeat - until):

repeat Comando until ExpressoLgica (EL);

Seu funcionamento bastante parecido ao da contruo
while. O comando executado uma vez. A seguir, a condio
testada: se ela for falsa, a seqncia de comandos
executada novamente e este processo repetido at que a
condio seja verdadeira, quando ento a execuo prossegue
pelo comando imediatamente seguinte ao final da construo.

Esta construo difere da construo while pelo fato de a
seqncia de comandos ser executada uma ou mais vezes
(pelo menos uma vez), ao passo que na construo while o
comando executado zero ou mais vezes (possivelmente
nenhuma). Isto acontece porque na construo repeat o
teste da condio feito ao final da construo, ao
contrrio do que acontece na construo while, onde o
teste da condio feito no incio da mesma.
Onde:
i- varivel de controle (controla
o nmero de repeties)
Inicializa a varivel de controle
Verifica o trmino ou a continuidade
da instruo repetitiva
Incrementa a varivel de controle
Exemplo da utilizao da instruo repetitiva
com avaliao a posteriori (repeat - until):

program Repita_AteQue;
var i: integer;
begin
...
i := 1;
repeat

writeln(i);
i := i + 1;

until i > 10;
...
end.
i := 1;
i > 10
writeln(i);
i := i + 1;
true
false
loop
repeat until

(10 repeties)
{ Fulano aplicou R$ 100,00 com rendimento de 5% ao ms.
Quantos meses sero necessrios para que o capital
investido ultrapasse a R$ 200,00. }
program Aplicacao;
uses crt;
var Capital: real;
Meses: integer;
begin
clrscr;

Capital := 100.00;
Meses := 0;
repeat
Capital := Capital * 1.05; { reajusta em 5% o capital }
Meses := Meses + 1;
until Capital > 200;

writeln('Em ', Meses:2, ' meses.);
writeln('O capital investido ser R$ ', Capital:5:2);
readln;
end.
program ComparandoComandosDeRepeticao;
uses crt;
var i: integer;
begin
clrscr;

writeln('Usando o comando "for"');
for i:=1 to 5 do
begin
writeln(i);
end;

writeln('Usando o comando "while"');
i:=1;
while (i<=5) do
begin
writeln(i);
i:=i+1;
end;

writeln('Usando o comando "repeat"');
i:=1;
repeat
writeln(i);
i:=i+1;
until (i>5);

end.
for, while e repeat

You might also like