Vous êtes sur la page 1sur 49

Universidade Federal do Rio Grande do Norte

Centro de Tecnologia
Departamento de Computao e Automao

ALGORITMOS

Professor Responsvel:
Luiz Affonso Henderson Guedes de Oliveira
Prof. Do Estgio Docente:
Kliger Kissinger F. Rocha
Valnaide Gomes Bittencourt
Turma:
Engenharia Qumica 2004.1
Natal, RN, maio/2004
Primeira Aula Terica

Introduo
Conceitos de algoritmos
Formas de Representao de Algoritmos
Descrio Narrativa
Fluxograma Convencional

Pseudocdigo

Algoritmo e lgica de Programao 2


Conceito de Algoritmo

Algoritmo um conjunto finito de regras, bem definidas, para a


soluo de um problema em um tempo finito e com um nmero finito
de passos.
"Serve como modelo para programas, pois sua linguagem
intermediria linguagem humana e s linguagens de
programao, sendo ento, uma boa ferramenta na validao da
lgica de tarefas a serem automatizadas.
Os algoritmos, servem para representar a soluo de qualquer
problema, mas no caso do Processamento de Dados, eles devem
seguir as regras bsicas de programao para que sejam
compatveis com as linguagens de programao.

Algoritmo e lgica de Programao 3


Conceito de Algoritmo
Para se ter um algoritmo necessrio:
Que um nmero finito de passos;
Que cada passo esteja precisamente definido, sem possveis
ambigidades;
Que existam zero ou mais entradas tomadas de conjuntos bem definidos;
Que existam uma ou mais sadas;
Que exista uma condio de fim sempre atingida para quaisquer entradas
e num tempo finito.

Algoritmos no se aprendem:
Copiando algoritmos
Estudando algoritmos

Algoritmos s se aprendem:
Construindo algoritmos
Testando algoritmos

Algoritmo e lgica de Programao 4


Formas de Representao de Algoritmos

Dentre as formas de representao de


algoritmos mais conhecidas podemos citar:
Descrio Narrativa;
Fluxograma Convencional;
Pseudocdigo, tambm conhecido como Linguagem
Estruturada ou Portugol.

Algoritmo e lgica de Programao 5


Formas de Representao de Algoritmos

Descrio Narrativa
Nesta forma de representao os algoritmos so expressos
diretamente em linguagem natural.

Receita de bolo: Tomando um banho:


Misture os ingredientes Entrar no banheiro e tirar a
Unte a forma com manteiga roupa
Despeje a mistura na forma Abrir a torneira do chuveiro
Se houver coco ralado Entrar na gua
ento despeje sobre a mistura Ensaboar-se
Leve a forma ao forno Sair da gua
Enquanto no corar Fechar a torneira
deixe a forma no forno Enxugar-se
Retire do forno Vestir-se
Deixe esfriar
Algoritmo e lgica de Programao 6
Formas de Representao de Algoritmos

Descrio Narrativa
Troca de um pneu furado Clculo da mdia de um aluno

Afrouxar ligeiramente as Obter as suas 2 notas de provas


porcas Calcular a mdia aritmtica
Suspender o carro Se a mdia for maior que 7,
Retirar as porcas e o pneu o aluno foi aprovado,
Colocar o pneu reserva seno ele foi reprovado
Apertar as porcas
Abaixar o carro
Dar o aperto final nas porcas

Algoritmo e lgica de Programao 7


Formas de Representao de Algoritmos

Fluxograma Convencional
uma representao grfica de algoritmos onde formas
geomtricas diferentes implicam aes (instrues, comandos)
distintos.
Tal propriedade facilita o entendimento das idias contidas nos
algoritmos e justifica sua popularidade
Esta forma aproximadamente intermediria descrio
narrativa e ao pseudocdigo (subitem seguinte), pois menos
imprecisa que a primeira e, no entanto, no se preocupa com
detalhes de implementao do programa

Algoritmo e lgica de Programao 8


Formas de Representao de Algoritmos

Fluxograma Convencional

Inicio e Fim de Programa Deciso

Operao de Atribuio Operao de Sada

Operao de Entrada de Dados

Algoritmo e lgica de Programao 9


Formas de Representao de Algoritmos
Incio

Fluxograma Convencional
N1, N2
Exemplo: Clculo da mdia de um
aluno sob a forma de um
fluxograma.
MEDIA aaa
(N1 + N2) / 2

Partindo do smbolo inicial, h


sempre um nico caminho orientado
a ser seguido, representando a .V.
MEDIA >= 7
.F.

existncia de uma nica seqncia


de execuo das instrues
"Aprovado" "Reprovado"

Fim

Algoritmo e lgica de Programao 10


Formas de Representao de Algoritmos

Pseudocdigo
Esta forma de representao de algoritmos rica em detalhes,
como a definio dos tipos das variveis usadas no algoritmo.
Por assemelhar-se bastante forma em que os programas so
escritos, encontra muita aceitao.

Na verdade, esta representao suficientemente geral para


permitir a traduo de um algoritmo nela representado para uma
linguagem de programao especfica seja praticamente direta.

Algoritmo e lgica de Programao 11


Formas de Representao de Algoritmos
Pseudocdigo
A forma geral da representao de um algoritmo na forma de
pseudocdigo
Algoritmo uma palavra que indica o
incio da definio de um algoritmo
em forma de pseudocdigo.
<nome_do_algoritmo> um nome
simblico dado ao algoritmo com a
Algoritmo <nome_do_algoritmo> finalidade de distingui-los dos demais.
<declarao_de_variveis> <declarao_de_variveis> consiste
em uma poro opcional onde so
<subalgoritmos> declaradas as variveis globais
usadas no algoritmo principal e,
Incio eventualmente, nos subalgoritmos.
<subalgoritmos> consiste de uma
<corpo do algoritmo> poro opcional do pseudocdigo
onde so definidos os subalgoritmos.
Fim Incio e Fim so respectivamente as
palavras que delimitam o incio e o
trmino do conjunto de instrues do
corpo do algoritmo.

Algoritmo e lgica de Programao 12


Formas de Representao de Algoritmos

Pseudocdigo
Representao do algoritmo do clculo da mdia de um aluno,
na forma de um pseudocdigo
Algoritmo Calculo_Media
Var N1, N2, MEDIA: real
Incio
Leia N1, N2
MEDIA (N1 + N2) / 2
Se MEDIA >= 7 ento
Escreva Aprovado
Seno
Escreva Reprovado
Fim_se
Fim
Algoritmo e lgica de Programao 13
Formas de Representao de Algoritmos

Sntese
H diversas formas de representao de algoritmos que diferem
entre si pela quantidade de detalhes de implementao que
fornecem ou, inversamente, pelo grau de abstrao que
possibilitam com relao implementao do algoritmo em
termos de uma linguagem de programao especfica.

Dentre as principais formas de representao de algoritmos


destacam-se: a descrio narrativa, o fluxograma
convencional e o pseudocdigo (ou linguagem estruturada).

Algoritmo e lgica de Programao 14


Segunda Aula Terica

Tipos de dados
Variveis
Armazenamento de dados na memria
Conceito e utilidade de variveis
Definio de variveis em algoritmos
Mapeamento de variveis na memria
Expresses
Conceitos
Operadores
Tipos de Expresses
Avaliao de Expresses

Algoritmo e lgica de Programao 15


Tipos de Dados

Dados Numricos
Tornando ao aspecto computacional, os dados numricos
representveis num computador so divididos em apenas duas classes:
os inteiros e os reais

Dados Numricos Inteiros


Os nmeros inteiros so aqueles que no possuem componentes
decimais ou fracionrios, podendo ser positivos ou negativos. (Conj. N
e Z)

Ex.:24 - nmero inteiro positivo


0 - nmero inteiro
-12 - nmero inteiro negativo

Algoritmo e lgica de Programao 16


Tipos de Dados

Dados Numricos Reais


Os dados de tipo real so aqueles que podem possuir
componentes decimais ou fracionrios, e podem tambm ser
positivos ou negativos.

Exemplos de dados do tipo real:

24.01 - nmero real positivo com duas casas decimais


144. - nmero real positivo com zero casas decimais
-13.3 - nmero real negativo com uma casa decimal
0.0 - nmero real com uma casa decimal
0. - nmero real com zero casas decimais

Algoritmo e lgica de Programao 17


Tipos de Dados

Dados Literais
O tipo de dado literal constitudo por uma seqncia de caracteres
contendo letras, dgitos e/ou smbolos especiais.
Este tipo de dados tambm muitas vezes chamado de alfanumrico,
cadeia (ou cordo) de caracteres, ainda, do ingls, string.
Usualmente, os dados literais so representados nos algoritmos pela
coleo de caracteres, delimitada em seu incio e trmino com o
caractere aspas (").
Diz-se que o dado do tipo literal possui um comprimento dado
pelo nmero de caracteres nele contido

Algoritmo e lgica de Programao 18


Tipos de Dados

Exemplos de dados do tipo literal:

"QUAL ?" - literal de comprimento 6


" " - literal de comprimento 1
"qUaL ?!$" - literal de comprimento 8
" AbCdefGHi" - literal de comprimento 9
"1-2+3=" - literal de comprimento 6
0 - literal de comprimento 1
Note que, por exemplo, "1.2" representa um dado do tipo literal
de comprimento 3, constitudo pelos caracteres "1", "." e "2",
diferindo de 1.2 que um dado do tipo real.

Algoritmo e lgica de Programao 19


Tipos de Dados

Dados Lgicos (booleanos)


O tipo de dados lgico usado para representar dois nicos
valores lgicos possveis: verdadeiro e falso. comum
encontrar-se em outras referncias outros tipos de pares de
valores lgicos como sim/no, 1/0, true/false.
Nos algoritmos apresentados nesta apostila os valores lgicos
sero delimitados pelo caractere ponto (.).
Exemplo: .V. - valor lgico verdadeiro

.F. - valor lgico falso

Algoritmo e lgica de Programao 20


Tipos de Dados

Sntese
Os dados numricos dividem-se em duas classes:
inteiros, que no possuem parte fracionria e podem ser
positivos ou negativos;
reais, que podem possuir parte fracionria e podem ser
positivos ou negativos.
Os dados do tipo literal podem conter seqncias de letras,
dgitos ou smbolos especiais, delimitados por aspas ("). Seu
comprimento dado pelo nmero de caracteres em string.
Os dados do tipo lgico s possuem dois valores possveis
(.V. e .F.).

Algoritmo e lgica de Programao 21


Tipos de Dados

Sntese
A rvore abaixo resume a classificao dos dados com relao aos
tipos de dados apresentados.

Algoritmo e lgica de Programao 22


Variveis

Armazenamento de dados na memria


A todo momento durante a execuo de qualquer tipo de
programa os computadores esto manipulando informaes
representadas pelos diferentes tipos de dados descritos
anteriormente.
Para que no se "esquea" das informaes, o computador
precisa guard-las em sua memria.

Algoritmo e lgica de Programao 23


Variveis

Conceito e Utilidade de Variveis


Basicamente, uma varivel possui trs atributos: um nome, um
tipo de dado associado mesma e a informao por ela
guardada.
Um nome de varivel deve necessariamente comear com uma
letra;
Um nome de varivel no deve conter nenhum smbolo especial
exceto a sublinha (_).

SALARIO = correto
1ANO = correto
A CASA = errado (contm o caractere espao em branco)
SAL/HORA = errado (contm o caractere "/)
SAL_HORA = correto
_DESCONTO = errado (no comeou com uma letra)

Algoritmo e lgica de Programao 24


Variveis

Definio de variveis em algoritmos


Todas as variveis utilizadas em algoritmos devem ser definidas antes
de serem utilizadas.
Isto se faz necessrio para permitir que o compilador reserve um
espao na memria para as mesmas.
Sintaxe:
VAR <nome_da_varivel> : <tipo_da_varivel>
VAR <lista_de_variveis> : <tipo_das_variveis>

a palavra-chave VAR dever estar presente sempre e ser utilizada uma nica
vez na definio de um conjunto de uma ou mais variveis;

Algoritmo e lgica de Programao 25


Variveis

Definio de variveis em algoritmos


VAR NOME : literal[10]
IDADE : inteiro
SALARIO : real
TEM_FILHOS: lgico

Algoritmo e lgica de Programao 26


Variveis

Sntese
A memria dos computadores composta por clulas numeradas
ordenadamente denominadas bytes. Cada byte constitudo por 8
bits.
Cada tipo de dado requer um nmero diferente de bytes para
armazenar a informao representada por ele na memria. Esta
quantidade tambm pode variar em funo do tipo de computador
considerado.
Uma varivel uma entidade dotada de um nome para diferenci-la
das demais e um tipo de dado que define o tipo de informao que ela
capaz de guardar. Uma vez definidos, o nome e o tipo de uma
varivel no podem ser alterados no decorrer de um programa. Por
outro lado, a informao til da varivel objeto de constante
modificao durante o decorrer do programa, de acordo com o fluxo de
execuo do mesmo.

Algoritmo e lgica de Programao 27


Exerccio 2 Aula

Classifique os dados especificados abaixo de acordo com seu tipo,


assinalando com I os dados do tipo inteiro, com R os reais, com L os literais,
com B os lgicos (booleanos), e com N aqueles para os quais no possvel
definir a priori um tipo de dado.

( ) 0.21 ( )1 ( )V ( ) 0. ( ) 1% ( ) Jos
( ) 0,35 ( ) .F. ( ) -0.001 ( ) .T. ( ) +3257 ( ) a
( ) +3257 ( ) +3257. ( ) -0.0 ( ) .F. ( )3 ( ) .V.
( ) .V ( ) abc ( )F ( )C ( ) Maria ( ) +36

Algoritmo e lgica de Programao 28


Exerccio 2 Aula

1.Explique o que est errado nos identificadores


incorretos.
( ) valor ( ) _b248 ( ) nota*do*aluno
( ) a1b2c3 ( )3x4 ( ) Maria
( ) km/h ( ) xyz ( ) nome empresa
( ) sala_215 ( ) nota ( ) ah!

2. Supondo que as variveis NB, NA, NMAT e SX sejam


utilizadas para armazenar a nota do aluno, o nome do
aluno, o nmero da matrcula e o sexo, declare-as
corretamente, associando o tipo adequado ao dado que
ser armazenado.

Algoritmo e lgica de Programao 29


Expresses

Conceito
O conceito de expresso em termos computacionais
est intimamente ligado ao conceito de expresso
(ou frmula) matemtica, onde um conjunto de
variveis e constantes numricas relacionam-se por
meio de operadores aritmticos compondo uma
frmula que, uma vez avaliada, resulta num valor

AREA = BASE * ALTURA * 0,5

Algoritmo e lgica de Programao 30


Expresses

Operadores
Operadores so elementos funcionais que atuam sobre
operandos e produzem um determinado resultado.
De acordo com o nmero de operandos sobre os quais os
operadores atuam, os ltimos podem ser classificados em:
binrios
unrios
relacionais

Algoritmo e lgica de Programao 31


Expresses

Tipos de Expresses
Expresses Aritmticas: so aquelas cujo resultado da
avaliao do tipo numrico, seja ele inteiro ou real. Somente o
uso de operadores aritmticos e variveis numricas permitido
em expresses deste tipo.
Tabela 5.1 Operadores aritmticos e sua ordem de prioridade.

Operador Tipo Operao Prioridade

+ Binrio Adio 4

- Binrio Subtrao 4

* Binrio Multiplicao 3

/ Binrio Diviso 3

** Binrio Exponenciao 2

+ Unrio Manuteno de sinal 1

- Unrio Inverso de sinal 1

Algoritmo e lgica de Programao 32


Expresses

Tipos de Expresses
Expresses Lgicas: so aquelas cujo resultado da avaliao
um valor lgico (.V. ou .F.).

Tabela 5.2 Operadores lgicos e suas relaes de prioridade.

Operador Tipo Operao Prioridade

.OU. Binrio Disjuno 3

.E. Binrio Conjuno 2

.NO. Unrio Negao 1

Algoritmo e lgica de Programao 33


Expresses

Tipos de Expresses
Expresses Literais: so aquelas cujo resultado da
avaliao um valor literal.
Os tipos de operadores existentes variam de uma linguagem
de programao para outra, no havendo uma
padronizao.

"REFRIGERA" + "DOR" e o resultado de sua avaliao "REFRIGERADOR

Algoritmo e lgica de Programao 34


Expresses

Tipos de Expresses
Regras so essenciais para a correta avaliao de expresses
Operadores de maior prioridade devem ser avaliados primeiro. Em
caso de empate, a avaliao se faz da esquerda para a direita
O uso de parnteses em sub-expresses fora a avaliao das
mesmas com maior prioridade
Os diversos tipos de operadores devem ser avaliados na seguinte
seqncia dentro de uma expresso complexa: primeiro os
aritmticos e literais; a seguir, os relacionais e, por ltimo, os
lgicos

Algoritmo e lgica de Programao 35


Expresses

Sntese
Uma expresso uma combinao de variveis, constantes e operadores, que
resulta num valor quando avaliada.
Operadores so elementos funcionais que atuam sobre operandos. Segundo o
nmero de operandos sobre os quais atua, um operador pode ser classificado
em unrio ou binrio. Segundo os tipos de dados de seus operandos e do valor
resultante de sua avaliao, os operadores podem ser classificados em
aritmticos, lgicos ou literais.
Um tipo especial de operador o relacional, que usado na comparao de
operandos de um mesmo tipo de dado e cujo resultado da avaliao sempre
um valor lgico.

Algoritmo e lgica de Programao 36


Expresses

Sntese
As expresses so classificadas de acordo
com o valor resultante de sua avaliao em:
Aritmticas, que resultam num valor numrico
(real ou inteiro);
lgicas, que resultam num valor lgico;

literais, que resultam num valor literal

Algoritmo e lgica de Programao 37


Expresses

Sntese
As expresses so classificadas de acordo
com o valor resultante de sua avaliao em:
Aritmticas, que resultam num valor numrico
(real ou inteiro);
lgicas, que resultam num valor lgico;

literais, que resultam num valor literal

Algoritmo e lgica de Programao 38


Exerccio 2 Aula
1. Dada a declarao de variveis:
VAR A, B, C : inteiro
X, Y, Z : real
NOME, RUA: literal[20]
L1, L2 : lgico

Classifique as expresses seguintes de acordo com o tipo de dado do resultado


de sua avaliao, em I (inteiro), R (real), L (literal), B (lgico) ou N (quando no
for possvel defini-lo):
( )A+B+C ( )A+B+Z ( ) NOME + RUA ( )AB
( ) A Y ( ) NOME RUA ( ) L1 .OU. L2 ( ) RUA <> NOME
( )A+B/C ( )A+X/Z ( )A+Z/A ( ) A B = L1
( ) (A = B) ( )X+Y/Z ( )X=Z/A ( ) L1 ** L2
( ) A + B / L2 ( ) X < L1 / RUA

Algoritmo e lgica de Programao 39


Exerccio 2 Aula
2. Para as mesmas variveis declaradas no exerccio 1, s quais so
dados os valores seguintes:

A=1 B=2 C=3 X = 2.0 Y = 10.0 Z = -1.0


L1 = .V. L2 = .F. NOME = PEDRO RUA = PEDRINHO

A + C / B _______________________
A + B + C ____________________
C / B / A _____________________
-X ** B ______________________
-(X ** B) _____________________
-NOME + RUA ________________
-L1 .OU. L2 __________________
-(L2 .E. (.NO. L1)) ____________

Algoritmo e lgica de Programao 40


Terceira Aula Terica

Instrues Primitivas
Instruo Primitiva de Atribuio
Instruo Primitiva de Sada de Dados
Instruo Primitiva de Entrada de Dados

Controle de Fluxo de Execuo


Comandos Compostos
Estrutura seqencial
Estruturas de Deciso
Estruturas de Repetio
Aninhamentos

Algoritmo e lgica de Programao 41


Instrues Primitivas

Como o prprio nome diz, Instrues Primitivas so os comandos


bsicos que efetuam tarefas essenciais para a operao dos
computadores, como entrada e sada de dados (comunicao com
o usurio e com os dispositivos perifricos), e movimentao dos
mesmos na memria.

Dispositivo de entrada

Algoritmo e lgica de Programao 42


Instrues Primitivas

Instruo Primitiva de
Atribuio
A instruo primitiva de atribuio,
ou simplesmente atribuio, a
principal maneira de se armazenar
uma informao numa varivel. <varivel> aa
Sua sintaxe : <expresso>

<nome_de_varivel> <expresso>

Algoritmo e lgica de Programao 43


Instrues Primitivas

Instruo Primitiva de Incio

Atribuio
Pseudocdigo PRECO_UNIT aaa 5.0

Algoritmo EXEMPLO
VarPRECO_UNIT, PRECO_TOT : real QUANT aaa 10
QUANT : inteiro
Incio
PRECO_UNIT 5.0 PRECO_TOT aaa
QUANT 10 PRECO_UNIT *
PRECO_TOT PRECO_UNIT * QUANT QUANT
Fim.

Fim

Algoritmo e lgica de Programao 44


Instrues Primitivas

Instruo Primitiva de Sada de


Dados
As instrues primitivas de sada de dados
so o meio pelo qual informaes contidas
na memria dos computadores so <lista_de_
colocadas nos dispositivos de sada, para variveis>
que o usurio possa visualiz-las.
ou
<literal>
H duas sintaxes possveis para esta
instruo:

Escreva <lista de variveis>


ou
Escreva <literal>

Algoritmo e lgica de Programao 45


Instrues Primitivas

Instruo Primitiva de Incio

Sada de Dados
PRECO_UNIT aaa 5.0

Pseudocdigo QUANT aaa 10

Algoritmo EXEMPLO
PRECO_TOT aaa
Var PRECO_UNIT, PRECO_TOT : real PRECO_UNIT *
QUANT : inteiro QUANT
Incio
PRECO_UNIT 5.0
QUANT 10
PRECO_TOT
PRECO_TOT PRECO_UNIT * QUANT
Escreva PRECO_TOT
Fim.

Fim

Algoritmo e lgica de Programao 46


Instrues Primitivas

Instruo Primitiva de
Entrada de Dados
As instrues primitivas de
entrada de dados so o meio <lista_de_
pelo qual informaes so variveis>
fornecidas ao computador
para serem processadas.

Sua sintaxe :
Leia <lista_de_variveis>

Algoritmo e lgica de Programao 47


Instrues Primitivas

Instruo Primitiva de
Entrada de Dados Incio B

Pseudocdigo PRECO_UNIT,
PRECO_TOT
QUANT
Algoritmo EXEMPLO
Var PRECO_UNIT,
PRECO_TOT : real
PRECO_TOT aaa
QUANT : inteiro PRECO_UNIT *
Fim
Incio QUANT
Leia PRECO_UNIT, QUANT
PRECO_TOT PRECO_UNIT * QUANT
Escreva PRECO_TOT
A
Fim.

Algoritmo e lgica de Programao 48


Instrues Primitivas

Sntese
A instruo primitiva de atribuio avalia uma expresso e armazena o valor
resultante numa varivel. O valor resultante da expresso e a varivel devem ter
tipos compatveis.

A instruo primitiva de sada de dados admite como argumentos uma lista


de variveis, um literal, ou uma mistura de ambos. No primeiro caso, o valor de
cada uma das variveis buscado na memria e colocado no dispositivo de
sada. No caso de literais, estes so copiados diretamente no dispositivo de
sada.

A instruo primitiva de entrada de dados busca, no dispositivo de entrada,


dados que so guardados nas posies de memria correspondentes s
variveis da lista que lhe so passadas como argumento.

Algoritmo e lgica de Programao 49