You are on page 1of 13

Algoritmos

ALGORITMOS

Faculdade Tcnica Arthur Azevedo

LGICA

DE

prof. Max.

PROGRAMAO
Prof. Cludio. Max.
Faculdade Tcnica

Cristbal Vila Nature by Numbers

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

ndice
1 - Programao.....................................................................................................3
1.1 - Conceitos....................................................................................................................3
1.2 - Linguagens e Programas.............................................................................................3
1.3 - Representao Numrica............................................................................................3
1.3.1 - Mudanas de Base................................................................................................4
1.4 - Algoritmos...................................................................................................................5
1.4.1 - Descrio Narrativa..............................................................................................6
1.4.2 - Fluxograma..........................................................................................................6
1.4.3 - Pseudo-cdigo (Portugus estruturado ou Portugol)..............................................7
1.4.4 - Relao entre Portugus Estruturado e Fluxograma..............................................8
1.5 - Tipos de Dados..........................................................................................................13
1.5.1 - Variveis............................................................................................................13
1.5.2 - Constantes.........................................................................................................13
2 - Linguagem Pascal...........................................................................................14
2.1 - Introduo.................................................................................................................14
2.2 - Operaes.................................................................................................................15
2.3 - Variveis em Pascal...................................................................................................18
2.3.1 - Constantes.........................................................................................................18
2.3.2 - Declarao de Variveis.....................................................................................18
2.3.3 - Enumerao.......................................................................................................19
2.3.4 - Tipos Primitivos Padro em Pascal......................................................................19
2.4 - Entrada e Sada de Dados..........................................................................................22
2.4.1 - Entrada de Dados...............................................................................................22
2.4.2 - Sada de dados...................................................................................................22
2.5 - Comandos e Blocos...................................................................................................24
2.6 - Deciso.....................................................................................................................24
2.6.1 - Deciso Simples.................................................................................................24
2.6.2 - Deciso Composta..............................................................................................26
2.7 - Laos.........................................................................................................................27
2.7.1 - For......................................................................................................................27
2.7.2 - While..................................................................................................................30
2.7.3 - Repeat Until .......................................................................................................31
2.8 - Estruturas de Dados..................................................................................................35
2.8.1 - Vetores...............................................................................................................35
2.8.2 - Matrizes..............................................................................................................38
2.9 - Procedimentos e Funes..........................................................................................42

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

1 - Programao
1.1 - Conceitos
Computador:
autmato que executa processos computacionais segundo regras precisamente
estabelecidas;
possui um nmero limitado de instrues conhecidas, que entende e obedece;
processa com rapidez e confiabilidade;
processa (incansavelmente) sequncias longas de instrues que se transformam em
um conjunto quase infinito de aes;
O ato de agrupar sequncias de instrues em receitas representando tarefas computacionais chamado de programao.

1.2 - Linguagens e Programas


Comandos:
durao finita (somar dois nmeros);
efeito conhecido e bem definido (resultado da soma);
subentende objetos sobre os quais a ao ser executada (nmeros);
provoca mudana de estado reconhecvel nos objetos (acumulador);
descrita segundo uma linguagem (sintaxe: a recebe o valor de b mais c);
descrio chama-se comando;
se puder ser decomposta: processo ou computao;
sequencial: partes executadas em rigorosa ordem cronolgica e nenhuma delas
simultnea;
programa: conjunto de comandos;
Quem executa as aes: processador.
Fornece os dados: memria.
Linguagens
Inicialmente:
codificao complexa;
amarrada a cada arquitetura, nada portvel; mudou a mquina, recomea do zero;
propensa a erros;
completamente no estruturado: dificlima correo!
criadas ento as linguagens de alto nvel;
Compiladores
traduzem todos os comandos em linguagem de alto nvel para linguagem de baixo
nvel todos de uma vez;
cria programa compilado (binrio);
Interpretadores
processam os comandos de alto nvel, transformando-os um por vez em baixo nvel;
existe apenas a verso alto nvel; quem a executa um interpretador.

1.3 - Representao Numrica


Modo que o computador armazena as informaes;
bit: menor unidade de armazenamento; registra apenas sim (1) ou no (0);
byte: elemento composto de bits;
Os computadores, devido ao bit possuir apenas dois estados (0 | 1), trabalha na base 2.

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

1.3.1 - Mudanas de Base


Dizemos que um nmero est em uma determinada base x quando foi representado
utilizando-se x smbolos. Assim a base 10 (base10) possui 10 smbolos: 0, 1, 2, 3, 4, 5, 6,
7, 8, 9; a base2 dois: 0 e 1 e a base16 dezesseis: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
comum representar a base junto com o nmero, para evitar confuses:
Que nmero 110?
1102 = 610,
1108 = 7210,
110 16 = 27210
A posio de cada dgito em um nmero diz quantas vezes ele multiplica a potncia
daquela posio. O nmero 75082 10, por exemplo, pode ser descrito como
7.10000 + 5.1000 + 0.100 + 8.10 + 2.1 = 7.104 + 5.103 + 0.102 + 8.101 + 2.100 .
Seguindo a mesma lgica:
100111101 2 =1.28 + 0.27 + 0.26 + 1.25 + 1.24 + 1.23 + 1.22 + 0.21+ 1.20=
1.256 + 0.128 + 0.64 + 1.32+ 1.16 + 1.8 + 1.4 + 0.2 + 1.1 = 31710
713 8

=7.82 + 1.81 + 3.80 =


7.64 + 1.8 + 3.1 = 459 10

= 2.164
+ F.163
+ 8.162 + 1.161 + A.160 =
2.65536 + 15.4096 + 8.256 + 1.16 + 10.1 = 194 58610
(lembrar-se que A=10, B=11, C=12, D=13, E=14 e F=15)
Para passar para uma determinada base, o raciocnio invertido: em vez de
multiplicar pela potncia da base, vai-se dividindo pela base:
2F81A 16

Exerccios:
1.Converta cada nmero abaixo para a base10:
a)10112
d)108
g)FF16

b)1001012
e)1318
h)100016

c)1110101 2
f)10148
i)ABCD16

2.Converta cada nmero abaixo da base10 para a base indicada:


a)10 base2
d)100 base8
g)256 base16

b)33 base2
e)64 base8
h)762
base16

c)256 base2
f)1001 base8
i)51966
base16

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

1.4 - Algoritmos
Conjunto de regras de operao cuja aplicao permite resolver um problema enunciado
por meio de um nmero finito de operaes. Um algoritmo pode ser traduzido segundo uma
linguagem de programao em um programa que pode ser executado por um computador.
O exemplo mais corriqueiro de algoritmo
BISCOITOS DE NOZES
uma receita culinria (veja Quadro 1.1): cada Ingredientes:
passo deve ser detalhado e executado em
1 xcara de manteiga ou margarina
sequncia para se atingir o resultado final
1/2 xcara acar de confeiteiro
1 colher (ch) baunilha
desejado.
2 1/4 xcaras de farinha de trigo

Ao descrever um algoritmo devemos definir


1 pitada de sal
as aes de modo claro e especfico. Partimos de
3/4 xcara de nozes bem picadas
Acar de confeiteiro para enfeitar
um estado inicial e, aps um perodo de tempo
previsto, chegamos a um resultado previsto e Preparo:
1 Misture bem a manteiga e o acar. 2 Junte a
definido.
Um algoritmo estabelece uma norma de
execuo e um final previsto que sempre ser
alcanado se o mesmo algoritmo for executado
novamente.

baunilha e a farinha peneirada com o sal. 3 Misture


novamente. 4 Adicione as nozes e leve a massa
geladeira por uns 15 minutos. 5 Aquea o forno em
temperatura mdia (200 graus). 6 Faa bolinhas de
2 cm de dimetro e 7 coloque numa assadeira sem
untar. 8 Leve para assar por uns 10 a 12 minutos.
9 Passe no acar de confeiteiro enquanto esto
mornos.

Um exemplo seria a definio de como


desenhar um quadrado. Podemos dizer que, para
Quadro 1.1: Exemplo de Algoritmo
desenhar um quadrado, podemos fazer quatro
vezes as aes de riscar um trao e mudar a
direo em 90 para a direita. Vejamos como fica no programa Scratch (scratch.mit.edu):

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

H diversos modos de expressar um algoritmo:

1.4.1 - Descrio Narrativa


Descrio dos passos a serem executados segundo o algoritmo para atingir o objetivo:

s t s s rs s qt rs

1.4.2 - Fluxograma
Comandos so representados por smbolos grficos e uma indicao do fluxo:

1.4.3 - Pseudo-cdigo (Portugus estruturado ou Portugol)


Operadores
Aritmticos: + - * /
Lgicos: e ( ) ou ( ) no ( );
Relacionais: >
=<
;
Entrada
Em geral uma instruo para ler (
Exemplo:

Sada:
Um comando que indica que algo ser impresso, escrito na sada ()
Exemplo

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

Interao / Laos
Enquanto: Repete os seus comandos enquanto a condio for verdadeira. Testa se
verdadeira antes de comear a executar seus comandos.
Exemplo
sr t r
r
qt r
sr r qr r r
r
r
qt
sr
Repare que se o nmero for menor ou igual a zero ele nem calcula, vai direto
para Acabei!.
Repetir/Enquanto: Inicia um grupo de comandos e s volta a repetir se a condio
de Enquanto for verdadeira.
Exemplo
sr t r
r
tr
sr r qr r r
r
r
qt r
sr
Repare que ele s vai checar se continua a repetio depois de ter executado
seus comandos. Se o nmero for negativo, ele escreve e depois vai pra Acabei!
Faa para: Repete uma interao um nmero fixo e conhecido de vezes.
Exemplo
r r t
sr r qr r r

sr
Sabe-se que so 10 vezes.
Deciso:
Se uma condio for verdadeira, ento realiza uma ao, seno executa outra.
Exemplo
sr t s

sr r t s

sr st rs rss

sr t tr

No obrigatrio ter seno.

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

1.4.4 - Relao entre Portugus Estruturado e Fluxograma


a) Enquanto


qt
sr


qt

Sada:

Sada:

b) Repetir


tr
sr


qt

Sada:

Sada:

c) Faa


t

sr

Sada:

Sada:

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

Exerccios:
1.Desenhe o fluxograma de um algoritmo que l um valor (em graus Fahrenheit) e
imprime o valor convertido para graus Celsius segundo a frmula: C = (F-32).5/9 .

2.Faa um algoritmo em Portugus estruturado que l um valor para o raio, calcula e


imprime os seguintes resultados para este raio: o permetro de uma circunferncia
(permetro = 2. .raio), a rea (rea = .raio) e o volume de uma esfera (volume = 4/3. .raio).
Considere = 3,1416.

3.Faa um algoritmo em Portugus estruturado que l dois valores dia e ms e imprime


quantos dias faltam desde a data at o ano novo. Considere, como aproximao, todos
os meses tendo 30 dias.

4.Faa um algoritmo que l seis valores: dia, ms e ano de nascimento e dia, ms e ano atual. O
algoritmo diz quantos dias aproximadamente de idade a pessoa tem. Considere todos os
meses com 30 dias e todos os anos no-bissextos.

5.Faa o fluxograma ou escreva o pseudo-cdigo de um algoritmo que l trs valores a, b e


c e imprime o maior deles.
6.Faa um algoritmo em Portugus estruturado que leia quatro valores (a, b, c e d) e
imprime a amplitude entre eles (amplitude a diferena entre o maior e o menor) e a
mdia deles (mdia a soma dos valores pela quantidade de valores).

7.Faa um algoritmo em Portugus estruturado que leia trs valores a, b e c. Supondo que
sejam os lados de um tringulo, o algoritmo deve imprimir equiltero se os lados
forem iguais, issceles se apenas dois forem iguais ou escaleno se no tiver um lado
igual ao outro. Se no for um tringulo (soma dos dois menores lados for menor ou igual
que o valor do maior) ento dever escrever:no tringulo.

8.Sabendo-se que a soluo de uma equao de 2o grau a.x2 + b.x + c = 0 dada pela
b b2 4.a.c
x=
, apresente um fluxograma ou o pseudo-cdigo de um
frmula
2.a
algoritmo que, utilizando a frmula, resolva uma equao de 2 o grau e apresente as
razes possveis, em funo de a, b e c ou no h razes reais caso no haja razes. Se
a = 0 o algoritmo apenas imprime no equao de 2 grau.

9.Desenhe o fluxograma ou escreva o pseudo-cdigo de um algoritmo que, dado um


nmero inteiro positivo n, calcula a soma de todos os nmero de 1 at n.
10.Desenhe o fluxograma ou escreva o pseudo-cdigo de um algoritmo que calcula a soma
de todos os nmeros que sejam mltiplos de 5 ou de 7 existentes entre 1 e 10000.
Observao:Utilize e funo resto: y MOD x. A funo resto devolve o resto de uma
diviso inteira de y por x. Quando o resultado de resto de um valor y por x 0, significa
que y mltiplo de x.
Assim:
9 MOD 5 = 4 l-se nove resto 5 quatro pois 9 / 5 = 1 e resta 4.
8 MOD 3 = 2
10 MOD 5 = 0 (10 / 5 = 2 e resta 0)
1000 MOD 999 = 1 5 MOD 8 = 5 (5 / 8 = 0 e resta 5)
0 MOD 3 = 0
1 MOD 3 = 1
2 MOD 3 = 2
3 MOD 3 = 0
4 MOD 3 = 1
5 MOD 3 = 2
6 MOD 3 = 0
7 MOD 3 = 1
8 MOD 3 = 2
9 MOD 3 = 0
10 MOD 3 = 1
11 MOD 3 = 2 ...
Observe que os mltiplos de 3 tm resto zero...

11.Escreva o algoritmo em Portugus estruturado ou em fluxograma que l um nmero


inteiro positivo n e imprime todos os divisores inteiros positivo de n. Por exemplo, se
entrado o valor 18, o programa dever retornar 1 2 3 6 9 18.

12.Escreva o algoritmo em Portugus estruturado ou em fluxograma que leia um valor x


inteiro positivo e imprime o primeiro mltiplo de 9 que maior que x.
13.Escreva o algoritmo em Portugus estruturado ou em fluxograma que leia um valor x
9

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

inteiro positivo e imprime o maior divisor de x que menor que x.

14.Faa um algoritmo em Portugus estruturado que l dois valores inteiros positivos a e b e


imprime o maior divisor comum entre eles.

15.Faa o fluxograma ou escreva o pseudo-cdigo de um algoritmo que, dado um nmero


inteiro positivo x, encontre e imprima um valor M que o primeiro mltiplo de 11 maior
ou igual a x. Se m for par, escrever m par; caso contrrio: m mpar. S so
permitidas as operaes de soma, subtrao e resto (MOD).

16.Desenhe o fluxograma ou escreva o pseudo-cdigo de um algoritmo que calcula para os


nmeros entre 1 e n (dado) um valor que a soma dos que sejam mltiplos de 11 e a
subtrao dos nmeros mltiplos de 7. Se o valor final calculado for par, ele deve ser
dividido por dois antes de ser apresentado; se for mpar, deve ser subtrado de um e
depois dividido por dois antes de ser mostrado.

17.Construa um fluxograma ou o pseudo-cdigo que calcula o fatorial de x (x!). Pela


definio, fatorial de 1 (1!) 1 e fatorial de x o produto de todos os valores positivos
at x: x ! =x. x 1 . x 2 . x 3 ..... 4.3.2.1 ou ainda: x ! =x. x 1 !
18.Escreva o algoritmo em Portugus estruturado ou em fluxograma que leia um valor x
inteiro positivo e diz se x nmero primo ou no. Um nmero dito primo se no tem
divisores exceto 1 e ele mesmo.
19.Faa um algoritmo em Portugus estruturado que l um valor inteiro positivo n, encontre
e imprima o primeiro nmero primo maior ou igual a n.
20.Dado um nmero inteiro positivo par x, escreva o algoritmo em Portugus estruturado ou
o fluxograma que imprime o valor da soma S =
Exemplo: se x = 8 ento S =

1
2

3
4

5
6

1
2

3
4

5
...
6

x 1
.
x

7
=2,958333333 .
8

21.Dado um nmero inteiro positivo x, escreva o algoritmo em Portugus estruturado que


1 2.i 1 . Observe a troca de sinais.
imprime o valor da soma S = 1 1 1 1 1 ...
1 2 3 4 5
x
1 1 1 1 1 1
=0,616666667 .
Exemplo: se x = 6 ento S =
1 2 3 4 5 6
22.Dado um nmero inteiro positivo x, escreva o algoritmo em Portugus estruturado que
1
2
3
x
...
imprime o valor da soma S =
.
0 1
1 2
2 3
x 1 x
1
2
3
4
5
=3,393650794
Exemplo: se x = 5 ento S =
0 1
1 2
2 3
3 4
4 5

10

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

23.Execute o algoritmo abaixo (teste de mesa) e escreva no quadro qual a sada:


use no espao o ltimo dgito no nulo do seu RA


use no espao o penltimo dgito no nulo do seu RA


s
t

s
s
t

s
s
t

s
srvalores: x= y=
s
t

s

s


s
Quadro de Respostas
t


s
sr m=
t
s
t
trr
s



rt
srfinais x= y=
rt
24.Desenhe o fluxograma de um algoritmo que constri o seguinte nmero inteiro positivo:
dado um valor n lido, constri um nmero que tem n dgitos e cada dgito a sua
posio no nmero. 0 < n < 10.
Exemplo: para n = 5 o nmero 12345; para n = 8 o nmero 12345678.
Lembrar que:
ou ainda que:

12345 = 1 . 10000 + 2 . 1000 + 3 . 100 + 4 . 10 + 5 . 1


12345 = 1 . 10.10.10.10 + 2 . 10.10.10 + 3 . 10.10 + 4 . 10 + 5

25.Faa um algoritmo em Portugus estruturado que leia trs valores: xi, xf e nd. Esses
valores representam, respectivamente, o valor inicial de x, o valor final de x e o nmero
de dados igualmente espaados entre xi e xf a serem calculados e impressos. O
algoritmo imprime uma tabela para o valores de x utilizados e os valores de y calculados
segundo a frmula y = 4x 2x +6x -16 .

26.A sequncia de Fibonacci verificada em diversos locais da natureza: nmero de


sementes por anel interno do girassol, tamanho das folhas em um ramo de samambaia
etc. Nesta sequncia, cada termo a soma dos dois termos anteriores (ou seja,
ni = ni-1 + ni-2), sendo que o primeiro 1 e o segundo 1. Assim, a sequncia de Fibonacci
para o 8o termo :
posio:
1o
2o
3o
4o
5o
6o
7o
8o
valor:
1,
1,
2,
3,
5,
8,
13,
21
o 8 o termo 21
11

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

Faa o fluxograma ou o pseudo-cdigo de um algoritmo que leia um nmero inteiro n


(n 3) e calcule o valor de Fibonacci deste n-simo termo.

27.Faa

um algoritmo em Portugus estruturado que l dois valores a e b


(0 < b < a < 10000, validar) e imprime todos os mltiplos de b que existem entre 1 e a
(inclusive).

28.Desenhe um fluxograma ou construa o pseudo-cdigo de um algoritmo que multiplica


um nmero inteiro por outro retornando o resultado, utilizando apenas soma e
subtrao.

29.Construa um fluxograma ou o pseudo-cdigo de um algoritmo que divide um nmero


inteiro por outro, devolvendo o quociente e o resto, utilizando apenas soma e
subtrao.

12

Algoritmos

Faculdade Tcnica Arthur Azevedo

prof. Max.

1.5 - Tipos de Dados


1.5.1 - Variveis
Variveis so reservatrios de valores, dados, utilizados em um programa. Armazenam
tanto valores numricos de diversas capacidades quanto texto, na forma de cadeias de
caracteres. Uma metfora para descrever suas funcionalidades seria a de uma gaveta com
um rtulo seu nome ou de uma conta-corrente para valores.
Visando a sintaxe de Pascal, adotaremos que nomes de variveis devem comear com
letra ou sublinhado e serem seguidos por letras, nmeros ou sublinhado. Evitar caracteres
especiais (, #, $, %, @, & etc) pois, em geral, so invlidos ou tm significao especial para
a linguagem.
Convm evitar nomes de variveis com acentos ou cedilha: s em vez de s; em
vez de , em vez de , etc. O motivo que os acentos e a cedilha so mapeados
em diversos lugares diferentes e podem ser exibidos incorretamente alm de confundir o
compilador.
a) Numricas
Representam um nmero: inteiro ou de ponto flutuante:

sss

etc.
Obs: a parte fracionria do nmero ser representada por ponto em vez de vrgula!
b) Alfa-numricas
Representam uma sequencia de letras, nmeros ou ambos simultaneamente. Os
nmeros representados por uma varivel alfa-numrica no so computveis.

ss Pr
rs s s

t

Observao: geralmente t

c) Lgicas ou Booleanas
Assumem apenas valores rr ou s ( trs etc).

rst

tr

1.5.2 - Constantes
So variveis cujos valores no podem ser alterados:

r rqs

conveno usar sempre letras maisculas para os nomes de constantes.

Exerccios:
1.Diga quais afirmaes abaixo so vlidas para atribuir valores a variveis ou constantes.
Se for invlida, diga o porqu.


d)
g)
j)
m)
a)

b)

c)

e)

f)


h)
k)
n)

i)
l)
o)

2.Crie os nomes das variveis e os contedos para as diversas situaes abaixo:


a) dados de um aluno de universidade;
b) dados de um automvel;
c) conta em um banco.

13

You might also like