Escolar Documentos
Profissional Documentos
Cultura Documentos
DESENVOLVIMENTO DE ALGORITMOS
Elaborada por
Daniela de Carvalho Lopes
Evandro de Castro Melo
NDICE
1. INTRODUO ............................................................................................... 1
2. DESENVOLVIMENTO DE ALGORITMOS..................................................... 3
2.1. PORTUGOL ............................................................................................. 3
2.2. FLUXOGRAMA........................................................................................ 4
2.4. EXERCCIOS............................................................................................ 4
3. CONCEITOS IMPORTANTES ....................................................................... 5
3.1. COMPILADOR ......................................................................................... 5
3.2. SINTAXE E SEMNTICA DE UM PROGRAMA...................................... 5
3.3. OPERADORES E EXPRESSES ........................................................... 6
3.4. COMENTRIOS ....................................................................................... 7
3.5. EXERCCIOS............................................................................................ 8
4. VARIVEIS E CONSTANTES ....................................................................... 9
4.1. VARIVEIS .............................................................................................. 9
4.2. CONSTANTES ....................................................................................... 10
4.3. REGRAS PARA NOMES DE VARIVEIS E CONSTANTES ................ 10
4.4. EXERCCIOS.......................................................................................... 11
5. ESTRUTURA CONDICIONAL (ANLISE DE CONDIES)...................... 12
5.1. COMANDO SE ....................................................................................... 12
5.2. COMANDO CASO ................................................................................. 13
5.3. EXERCCIOS.......................................................................................... 13
6. ESTRUTURA DE REPETIO (ITERAES)............................................ 14
6.1. COMANDO ENQUANTO ....................................................................... 14
6.2. COMANDO PARA.................................................................................. 15
6.3. COMANDO REPITA............................................................................... 15
6.4. EXERCCIOS.......................................................................................... 16
7. EXERCCIOS DE REVISO......................................................................... 17
8. VETORES..................................................................................................... 19
8.1. EXERCCIOS.......................................................................................... 20
9. MATRIZES ................................................................................................... 21
9.1. EXERCCIOS.......................................................................................... 22
10. PROCEDIMENTOS E FUNES .............................................................. 24
10.1. PASSAGEM DE PARMETROS ......................................................... 25
10.2. EXERCCIOS........................................................................................ 27
11. LITERATURA............................................................................................. 29
Desenvolvimento de Algoritmos
1. INTRODUO
A utilizao do computador na soluo de problemas relacionados s
mais diversas reas est facilitando e agilizando o trabalho de muitas pessoas.
Atualmente o conhecimento de tcnicas de programao um requisito
importante, principalmente na formao de profissionais relacionados s
cincias exatas, como a engenharia por exemplo.
Informalmente,
um
ALGORITMO
qualquer
procedimento
computacional bem definido que tenha algum valor ou conjunto de valores
como ENTRADA e produza algum valor ou conjunto de valores como SADA.
Portanto, um algoritmo um conjunto de passos computacionais que
transformam uma entrada de dados (problema) em sada de dados (soluo).
A implementao da soluo de um problema em um computador
consiste basicamente em dois passos:
Montagem de uma seqncia de operaes que, quando
executadas, produzem um resultado, que a soluo do problema
(ALGORITMO);
Transformao da seqncia acima em uma linguagem executvel
por um computador (LINGUAGEM DE PROGRAMAO).
O algoritmo um conjunto de passos para executar uma tarefa.
(Receita). A formulao de um algoritmo pode ser descrita como um texto
contendo instrues que sero executadas em uma ordem determinada.
Na computao um algoritmo uma sequncia precisa que pode ser
utilizada por um computador para a soluo de um problema. O algoritmo
composto por um conjunto finito de passos, cada um requerendo uma ou mais
instrues. Cada uma destas instrues, tambm chamadas de operaes,
deve ser perfeitamente definida e clara.
Exemplo: Como somar dois nmeros?
Algoritmo SomarDoisNumeros
Incio
Ler (Num1)
Ler (Num2)
Soma = Num1 + Num2
Escrever (Soma)
O ato de criar um algoritmo uma arte que nunca poder ser totalmente
automatizada. Cada pessoa cria uma sequncia diferente para solucionar um
mesmo problema.
Para armazenar um algoritmo na memria do computador e para que o
computador possa entender e comandar as operaes a serem executadas,
necessrio que o algoritmo seja transcrito para uma linguagem de
programao (Delphi, Turbo Pascal, C, C++, Matlab, LabView, Visual Basic,
etc). Seja qual for a linguagem de programao, a soluo correta do problema
apresentada pelo computador depender da qualidade do algoritmo criado para
descrev-lo. Um algoritmo dito correto se, para cada instncia de entrada, ele
fornece a sada correta. Dizemos que um algoritmo correto resolve o problema
computacional dado.
Desenvolvimento de Algoritmos
Desenvolvimento de Algoritmos
2. DESENVOLVIMENTO DE ALGORITMOS
Recomenda-se que os algoritmos sejam estruturados partindo-se de
uma descrio geral e que, gradativamente, sejam acrescentadas
particularidades e detalhes soluo do problema. Esta tcnica chamada
refinamentos sucessivos, construo hierrquica ou desenvolvimento topdown (de cima para baixo).
Exemplo: Efetuar a diviso de dois nmeros.
Desenvolvimento de Algoritmos
Se num1=num2 ento
Escrever (Os nmeros so iguais)
FimMaior
2.2. FLUXOGRAMA
O fluxograma utiliza smbolos que indicam o tipo de operao que
dever ser realizada.
Exemplo: Ler dois nmeros e determinar qual dele o maior.
Algoritmo Maior
Incio
Ler num1
Ler num2
Num1>Num2
No
Num2>Num1
Sim
Sim
Maior = Num1
Maior = Num2
No
Nmeros
iguais
Fim
2.4. EXERCCIOS
Escreva algoritmos abaixo utilizando o portugol e o fluxograma:
Somar dois nmeros
Calcular a mdia entre trs nmeros
Ler um nmero e verificar se maior que 10
Desenvolvimento de Algoritmos
3. CONCEITOS IMPORTANTES
3.1. COMPILADOR
Para que os computadores entendam as instrues que esto escritas
em uma linguagem de programao estas instrues precisam ser traduzidas
em um cdigo especial chamado linguagem de mquina. Esta linguagem
apresenta vrios incovenientes pois todas as operaes so escritas como
conjuntos de uns e zeros para que possam ativar diretamente os dispositivos
eletrnicos do computador.
Mas, a pessoa que estiver programando no precisa se preocupar com a
traduo do cdigo escrito em uma linguagem de programao para a
linguagem de mquina. Os ambientes em que escrevemos nossos cdigos
(Pascal, Delphi, C e outros) possuem um programa que executado quando
pedimos para executar o cdigo que escrevemos e capaz de transform-lo
em um cdigo escrito em linguagem de mquina. Este programa chamado
COMPILADOR.
3.2. SINTAXE E SEMNTICA DE UM PROGRAMA
Estes dois termos so muito utilizados pelos programadores quando o
programa ou o algoritmo est sendo validado.
A SINTAXE de um programa est relacionada forma como ele foi
escrito. Ou seja, se as palavras e comandos existentes no cdigo do programa
esto escritos corretamente. Se existir erro de sintaxe significa que algum
comando ou instruo existente no programa foram escritos de maneira
incorreta e o programa no poder ser executado.
A SEMNTICA est relacionada ao contedo da instruo, ou seja, o
que a instruo significa. Quando existem erros de semntica significa que
alguma instruo no est fazendo o que queramos que fizesse e os
resultados apresentados pelo programa no so corretos.
Desenvolvimento de Algoritmos
TIPO
aritmtico
aritmtico
Aritmtico
Aritmtico
Aritmtico
Lgico
Lgico
Lgico
Relacional
Relacional
Relacional
Relacional
Relacional
Relacional
Relacional
SMBOLO
+
*
/
^
AND (E)
OR (OU)
NOT (NO)
>
>=
<
<=
=
<>
( )
Desenvolvimento de Algoritmos
Desenvolvimento de Algoritmos
3.5. EXERCCIOS
1) Escreva as expresses abaixo no formato utilizado em algoritmos:
a)
2x2 y
3+x
b)
1 3x
+
4y 2
c)
x2 + 2
Desenvolvimento de Algoritmos
4. VARIVEIS E CONSTANTES
4.1. VARIVEIS
Sabe-se que na matemtica uma varivel a representao simblica
dos elementos de certo conjunto.
Nos algoritmos, destinados a resolver um problema no computador, as
variveis so armazenadas na memria do computador e os valores
associados a elas podem ser modificados ao longo da execuo do programa.
Embora uma varivel possa assumir diferentes valores, ela s pode armazenar
um nico valor a cada instante.
Toda varivel identificada por um nome e ser capaz de armazenar
valores de um mesmo tipo. So cinco os tipos bsicos de dados que podem se
utilizados:
Inteiro: qualquer nmero inteiro negativo, nulo ou positivo (2, 4 ,0 ,-1).
As principais operaes vlidas para este tipo de variveis so: soma,
subtrao, multiplicao, DIV (diviso que no calcula a parte fracionria, por
exemplo 5DIV2=2) e MOD (calcula o resto da diviso, por exemplo 5MOD2=1);
Real: qualquer nmero real negativo, nulo ou positivo (2,5; 3,44; 12,3).
As principais operaes vlidas para este tipo de variveis so: adio,
subtrao, multiplicao e diviso.
Caracter: quaisquer caracteres alfa-numricos (a,C, 2, L, d).
Cadeia de caracteres (String): qualquer conjunto de caracteres alfanumricos (Ana, hoje, LOUCO, Tudo bem?). As principais operaes
vlidas para este tipo de variveis so: concatenao e tamanho.
Concatenar duas strings fazer a unio delas gerando uma nica cadeia
de caracteres. Por exemplo, a concatenao das strings Nome: e Ariosvaldo
resultar na string Nome: Ariosvaldo. Em potugol a concatenao escrita da
seguinte maneira: Nome:+ Ariosvaldo=Nome: Ariosvaldo. Avaliar o tamanho
de uma string verificar quantos caracteres ela possui. Por exemplo o tamanho
da string terra 5. Em portugol escreve-se: Length (Terra) = 5.
Lgico: variveis que podero assumir valores Verdadeiro ou Falso.
As principais operaes vlidas para este tipo de variveis so: AND, OR e
NOT.
Toda varivel deve ser declarada. Declarar uma varivel significa criar
um local na memria que ser rotulado com o nome da varivel. A varivel
deve ser declarada antes do incio da execuo do programa identificando-se
seu nome e tipo.
Exemplo: Calcular o triplo de um nmero fornecido pelo usurio.
Algoritmo TRIPLO;
Var {indica que variveis sero declaradas}
Numero, Resultado: Real
Incio
Ler (Numero)
Resultado := Numero * 3
Escrever (Resultado)
Fim
Desenvolvimento de Algoritmos
10
11
Desenvolvimento de Algoritmos
4.4. EXERCCIOS
1) Identificar quais as variveis e constantes foram utilizadas nos exerccios
3,4 e 5 do captulo anterior dizendo o seu tipo.
2) Assinale com um X as variveis que apresentam nomes invlidos
justificando sua resposta. Para todas as opes indique o tipo da varivel.
( ) NOTA
( ) AH!
( ) km/h
( ) 5(8)
( ) a{b}
( ) SALA115
( ) Xa3
( ) ABC
3) Para cada linha de comando abaixo dizer quais os tipos das variveis e
avaliar o resultado de acordo com os valores de entrada determinados.
a) soma ( num1 MOD 2) * (num1 DIV 2)
Considerar: num1 = 3, num1 = 16, num1 = 25
b) resultado (var1 OR var2) AND (var3)
Considerar: var1, var2 e var3 = False; var1 e var3 = True e var2 = False
var1 e var3 = False e var2 = True
c) completo nome + sobrenome
Considerar: nome = Gensio e sobrenome = Silva
d) valor (x / y) - 4/(y^2)*x + x*(y-1)
Considerar: x = 2 e y = 4 ; x = 24 e y = 8; x = 6 e y = 4
Desenvolvimento de Algoritmos
12
Desenvolvimento de Algoritmos
13
Desenvolvimento de Algoritmos
14
Desenvolvimento de Algoritmos
15
FimAlgoritmo
Neste exemplo se a quantidade informada pelo usurio dor zero
nenhuma iterao ser realizada.
6.2. COMANDO PARA
O PARA uma estrutura de repetio incondicional, isto , uma vez
iniciada ser executada quantas vezes estiver estipulada no intervalo
determinado. A sintaxe do comando PARA apresentada a seguir:
PARA Contador := ValorInicial AT ValorFinal FAA
Sequncia de comandos
FimPara
O comando PARA sempre utiliza uma varivel inteira para representar o
contador que dever ser declarada pelo desenvolvedor do programa. Quando o
comando PARA utilizado, todas as iteraes estipuladas no intervalo so
feitas.
Exemplo: Fazer um algoritmo que imprima na tela os nmeros inteiros de 1 a
100.
Algoritmo Imprime1a100
Var
Contador:Inteiro
Incio
Para Contador := 1 at 100 Faa
Escrever(Contador)
FimPara
FimAlgoritmo
6.3. COMANDO REPITA
O REPITA uma estrutura de repetio condicional, isto , uma vez
iniciada ser executada at que a condio estipulada seja falsa. Assim como
acontece com o comando ENQUANTO, no caso da condio ser um contador,
este deve ser incializado antes do incio da estrutura e deve ser incrementado
dentro da estrutura. A sintaxe do comando REPITA apresentada a seguir.
REPITA
Sequncia de comandos
AT (condio)
Quando o comando REPITA utilizado, pelo menos uma iterao
realizada. Isto ocorre, porque a condio s ser avaliada no final da estrutura
do comando.
Desenvolvimento de Algoritmos
16
Desenvolvimento de Algoritmos
17
7. EXERCCIOS DE REVISO
1) Qual o valor de L aps a execuo do algoritmo abaixo?
Algoritmo Revisao1
Var
X,Y,L: Real
A,B,C: Lgico
Inicio
A:=Falso
B:=Verdadeiro
C:=Falso
X:=1,5
Y:=3,2
X:=X+1
SE C OR ((X+Y) > 5) OR (NOT A AND B)) ENTO
L := 0
SENO L := 1
ESCREVER (L)
FimAlgoritmo
Desenvolvimento de Algoritmos
18
19
Desenvolvimento de Algoritmos
8. VETORES
O vetor uma varivel composta capaz de armazenar mais de um valor
ao mesmo tempo. uma estrutura de dados homognea porque todos os
dados armazenados dentro de um vetor devem ser do mesmo tipo.
Exemplo:
Vetor Notas
8
10
9,5
7,2
20
Desenvolvimento de Algoritmos
Reprovados[i] :=
FimPara
Para i := 1 at 80 faa
Ler (Nome)
Ler ( NotaFinal)
Se NotaFinal >= 6.0 ento
Aprovados [i] := Nome
Seno Reprovados[i] := Nome
FimPara
Para i := 1 at 80 faa
Se Aprovados[i] <> then
Escrever ( O aluno , Aprovados[i], foi aprovado.)
Seno Escrever ( O aluno , Reprovados[i], foi reprovado)
FimPara
FimAlgoritmo
8.1. EXERCCIOS
1) Considere que o vetor apresentado a seguir est armazenado na memria
do computador e se chama CRR.
!
21
Desenvolvimento de Algoritmos
9. MATRIZES
A matriz uma varivel composta bidimensional (um vetor com mais de
uma linha) capaz de armazenar mais de um valor ao mesmo tempo. uma
estrutura de dados homognea porque todos os dados armazenados dentro de
uma matriz devem ser do mesmo tipo.
Exemplo:
Matriz Notas Matriz 3 x 5 (Linha x Coluna)
Coluna
1
Coluna
2
Coluna
3
Coluna
4
Coluna
5
10
9,5
7,2
Linha 1
3,6
10
Linha2
9,5
9,5
7,7
Linha3
Desenvolvimento de Algoritmos
22
23
Desenvolvimento de Algoritmos
MAT
8
0
9
2
-1
3
12
1
5
0
-11
2
3
1
5
1
2
4
6
0
5) Considere uma turma com 10 alunos, cada um com 4 notas. Estes dados
so armazenados em uma matriz 10 x 5 , em que a primeira coluna
armazena a matrcula do aluno e as 4 ltimas armazenam as suas notas.
Fazer um algoritmo que:
a) Leia estes dados, armazenando-os ;
b) Imprima a mdia de cada aluno;
c) Imprima a maior mdia e a matrcula do aluno que a possui
Desenvolvimento de Algoritmos
24
Desenvolvimento de Algoritmos
25
Desenvolvimento de Algoritmos
26
Algoritmo CalculaZ1
var
Z,X,Y:Real
Incio
Procedimento SomaQuadrados (var N1,N2:Real)
Inicio
N1 :=N1*N1
Desenvolvimento de Algoritmos
27
N2 :=N2*N2
Z := N1+N2
FimProcedimento
Ler (X)
Ler (Y)
SomaQuadrados (X,Y)
FimAlgoritmo
Algoritmo CalculaZ2
var
Z,X,Y:Real
Incio
Procedimento SomaQuadrados (N1,N2:Real)
Inicio
N1 :=N1*N1
N2 :=N2*N2
Z := N1+N2
FimProcedimento
Ler (X)
Ler (Y)
SomaQuadrados (X,Y)
FimAlgoritmo
O algoritmo CalculaZ1 utiliza a passagem de parmetros por referncia
pois antes da declarao do parmetro no procedimento SomaQuadrados
existe a palavra var e o algoritmo CalculaZ2 utiliza a passagem de parmetros
por valor. Suponha que o usurio fornea o valor 2 para X e 3 para Y. Quando
o algoritmo CalculaZ1 terminar de ser executado o valor de X ser 4, o valor de
Y ser 9 e o valor de Z ser 13. Quando o algoritmo CalculaZ2 terminar de ser
executado o valor de X ser 2, o valor de Y ser 4 e o valor de Z ser 13.
10.2. EXERCCIOS
1) Quando o algoritmo abaixo for executado o que ser exibido na tela?
Algoritmo ExercicioCap11
Var
R1,R2,X,Y,A:Real
Incio
Procedimento Somatorio1 (P1:Real)
Inicio
P1:=2*P1
R1:= P1+ 4
FimSomatorio1
Procedimento Somatorio2 ( var P2,P3:Real)
Inicio
P2 := 3*P2
Desenvolvimento de Algoritmos
28
P3 := 2*P3
R2 := P2 + P3
FimSomatorio2
X := 1
Y := 3
A := 5
Somatorio1 (A)
Somatorio2 (Y, X)
Escrever (A, X, Y, R1, R2)
Desenvolvimento de Algoritmos
29
11. LITERATURA
FARRER, H. Programao estruturada de computadores: algoritmos
estruturados. Ed.Guanabara, 1985. 241 p.
LEISERSON, C.E.; STEIN,C.; RIVEST,R.L.; CORMEN, T.H. Algoritmos.
Ed.Campus, 2002. 1a edio, 936 p.
LOPES, A.; GARCIA, G. Introduo programao. Ed.Campus, 2001. 1a
edio, 584 p.
MANZANO,
J.A.;
OLIVEIRA,
J.F.
Algoritmos: lgica para o
desenvolvimento de programao. So Paulo, Erica, 1998. 13a edio,
274p.
MANZANO, J.A.; OLIVEIRA, J.F. Estudo dirigido de algoritmos. So Paulo,
Erica, 1998. 7a edio, 240p.
NIKLAUS, W. Algorithms and data structures. London, Prentice-Hall
International, 1986. 288p.
PINTO, W.S. Introduo ao desenvolvimento de algoritmos e estruturas de
dados. So Paulo, 1990. 2a edio.
PREISS, B.R. Programao estruturada de computadores. Ed.Campus,
2002. 1a edio.
VENANCIO, C.F. Desenvolvimento de algoritmos. So Paulo, Erica, 1998.
131p.
ZIVIANI, N. Projeto de algoritmos com implementaes em PASCAL e C.
So Paulo, Pioneira, 1994. 267p.
ZIVIANI, N. Algoritmos lgica para desenvolvimento de programao de
computadores. So Paulo, Pioneira, 1994. 13a edio, 267p.