Você está na página 1de 11

Universidade de Uberaba

Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Formulao de um algoritmo
Aspecto esttico
Aspecto dinmico

Ao

um evento que ocorre num perodo de tempo finito, estabelecendo um efeito intencionado
e bem definido - Guimares/Lages
um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito,
produz um estado final previsvel e bem definido - Harry Farrer

Estado (de um dado sistema de objetos)

Conjunto de propriedades desses objetos que so relevantes para ns na situao


considerada:
Estado Inicial
Estado Final

Processo

Seqncia temporal de aes (ou sub-aes), cujo efeito acumulado igual ao efeito do
evento total

Padro de Comportamento
Objetivo
Norma de execuo

Resumo Geral

AO

PROCESSO

ALGORITMO

ESTADO

PADRO DE
COMPORTAMENTO

Algoritmo

a descrio de um padro de comportamento, expressado em termos de um repertrio


bem definido e finito de aes primitivas, das quais damos por certo que elas podem ser
executadas - Guimares/Lages
a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita
de aes - Harry Farrer

Algoritmos-2-Introducao-2015-s2

Pgina 1 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Itens Fundamentais

Constantes
Numrica
Representao no Sistema Decimal
Inteiro ou Fracionrio
Lgica
Usadas em proposies lgicas
falso
verdadeiro
Literal
Representadas por qualquer seqncia de caracteres: letras, dgitos e smbolos
especiais
Toda constante literal deve estar delimitada (aspas simples / apstrofo)
Variveis - Tipos Bsicos

Depsito para armazenamento de dados e/ou informaes (clulas)


Numrica Real
Representao no Sistema Decimal
Qualquer nmero real, negativo, nulo ou positivo

Numrica Inteira
Representao no Sistema Decimal
Qualquer nmero inteiro, negativo, nulo ou positivo
Lgica
Conjunto de valores falso ou verdadeiro em proposies lgicas
Literal
Qualquer conjunto de caracteres alfanumricos
Variveis - Declarao
A semntica de uma declarao de variveis corresponde criao de locais
na memria rotulada com o nome da varivel (identificador) e marcada com
o tipo de valores que ela pode conter Guimares/Lages
Classe de Dados
Agrupamento lgico de depsito de dados com caractersticas afins
Exemplos:
NM => Armazenamento de nomes
CD => Armazenamento de cdigos
Identificador
Nome que identifica o contedo a ser armazenado
Exemplos:
NMALUNO =>Armazenamento de nome de aluno
CDFUNCIO => Armazenamento de cdigo de funcionrio
Formao do Identificador
CLASSE DE
DADOS
LETRA
NMERO

O total de caracteres de um identificador, em nossos algoritmos, dever ser de


no mximo 08, sendo 2 para a classe de dados e 6 para o nome.

Algoritmos-2-Introducao-2015-s2

Pgina 2 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Exemplos de Classes de Dados
CLASSE DE
DADOS

DESCRIO
(significado do dado a ser armazenado)

CD

Cdigo

NM

Nome

DS

Descrio

DT

Data

HR

Hora

VL

Valor

QT

Quantidade

MD

Mdia

PC

Percentual / Taxas

TX

Textos

IX

Qualificador / Indexador

TB

Tabela

NO

Nmero

UF

Unidade Federativa

ST

Situao / Status

SN

Sim ou No

FS

Situao de Arquivo

FL

Localizao de Arquivo

TT

Totalizador

Algoritmos-2-Introducao-2015-s2

Pgina 3 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Operadores e Expresses

Operadores
Operadores Aritmticos
Adio
Multiplicao
Subtrao
Diviso
Operadores Lgicos
Conjuno
disjuno
negao
Operadores Relacionais
igual a
diferente de
maior que
menor que
maior ou igual a
menor ou igual a
contido em
Operadores Literais
concatenao positiva

+
*
/
e
ou
no
=
<>
>
<
>=
<=
em
+

Expresses
Expresses Aritmticas
Escritas linearmente
Utiliza notao matemtica
Prioridade entre as operaes
Prioridade
Operadores
1a.
* / div mod
2a.
+ OBS: div e mod so operadores que s podem ser
aplicados com operandos inteiros dando,
respectivamente, o quociente inteiro e o resto
inteiro da diviso entre operandos (resultados
obtidos por diviso e truncamento, sem
arredondamento)
Expresses Lgicas
Relaes
Comparao realizada entre valores do mesmo tipo
A natureza da relao indicada por um operador relacional
O resultado de uma relao sempre um valor lgico, isto , falso ou
verdadeiro
Tabela de prioridades de expresses
Prioridade
1a.
2a.
3a.
4a.

Algoritmos-2-Introducao-2015-s2

Operadores
no
*, /, div, mod, e
+, -, ou
=, <>, <, <=, >=, >, em

Pgina 4 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Mximas da Programao
01. Algoritmos devem ser feitos para serem lidos por seres humanos.

Procure escrever seus algoritmos de forma clara e organizada, possibilitando a qualquer pessoa
uma fcil leitura e interpretao.

02. Comentrios

Procure descrever nos seus algoritmos as situaes importantes e que necessitam de uma
orientao especfica. Considere os seguintes aspectos:
a) escreva os comentrios no momento em que estiver escrevendo o algoritmo;
b) os comentrios devero acrescentar alguma coisa; no apenas para frasear os
comandos;
c) lembre-se: toda vez que for feita uma modificao no algoritmo, os comentrios
associados devero ser alterados, e no apenas os comandos.
d) para comentar, utilize o // <texto de comentrio>

03. Comentrios no prlogo.

Servem para identificar o algoritmo e apresentar breves informaes para auxiliar na


interpretao dele por outras pessoas. Devero ser utilizados os seguintes comentrios no incio
de seu algoritmo, considerando o VISUALG:
Algoritmo <nome do algoritmo>.alg
// Funo: <breve resumo do objetivo do algoritmo>}
// Autor: <seu nome>
// Data: <data de elaborao>}

04. Utilize espaos para melhorar a legibilidade do algoritmo.

Procure deixar linhas em branco para separar os principais processos de seu algoritmo, isto vai
permitir uma leitura por bloco, o que aumenta consideravelmente a legibilidade dele.

05. Escolha nomes representativos para suas variveis.

As variveis de nossos algoritmos devero seguir os critrios de definio de identificadores para


facilitar o entendimento de outras pessoas em relao ao contedo por elas armazenados.

06. Um comando por linha suficiente.

Nossa metodologia considera que a economia de linhas pode representar um fracasso na


manuteno, assim importante salientar que cada ao deve ser escrita isoladamente numa
linha. O objetivo evitar o congestionamento na leitura e, conseqentemente, na manuteno.

07. Utilize parnteses para aumentar a legibilidade em expresses aritmticas e/ou lgicas
e prevenir-se contra erros.

As expresses aritmticas e/ou lgicas podem, por vezes, se apresentarem complexas e


extensas, assim procure utilizar-se de parenteses e espaos para clarificar o entendimento delas.

08. Utilize indentao para mostrar a estrutura lgica do algoritmo.

Nesta metodologia consideramos que a visualizao estrutural de um algoritmo facilita a leitura e


a manuteno dele. Assim, considere a indentao como uma organizao lgica da
subordinao das aes. Ela pode ser feita com deslocamento de no mnimo 2 colunas e de no
mximo 8 colunas.

Algoritmos-2-Introducao-2015-s2

Pgina 5 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Metodologia para Desenvolvimento de Algoritmos
Passo 1 Leitura e Anotaes
Leia cuidadosamente e at o fim a especificao do problema, fazendo
as anotaes necessrias.
Passo 2 Entrada(s)
Levante e analise todas as entradas citadas explicitamente ou no na
especificao do problema (entradas - leituras).
Passo 3 Sada(s)
Levante e analise todas as sadas explcitas ou no exigidas na
especificao do problema (sadas - mostras).
Passo 4 Gerao/Transformao
Verifique se necessrio gerar valores internamente ao algoritmo e
levante as variveis necessrias estabelecendo o valor inicial e o tipo de
cada uma delas.
Levante e analise todas as transformaes necessrias para, dadas as
entradas e valores gerados internamente, produzir as sadas
especificadas.
Passo 5 Algoritmo
Elabore o algoritmo.
Passo 6 Testes
Teste cada passo do algoritmo, verificando se as transformaes
intermedirias executadas esto conduzindo aos objetivos desejados.
Passo 7 Otimizao
Faa uma avaliao geral do algoritmo procurando e alterando os
pontos de melhoria.

Algoritmos-2-Introducao-2015-s2

Pgina 6 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Exemplo Prtico de Aplicao da Metodologia de Desenvolvimento de Algoritmos
Neste ponto consideramos uma especificao para desenvolvimento de um algoritmo
e a utilizamos para exemplificar na prtica a aplicao da metodologia com
explicao minuciosa de cada ponto.

Especificao:

Elabore um algoritmo que solicite ao operador os valores dos coeficientes de uma


equao do segundo grau, processe e apresente como resultado se os coeficientes
so realmente de uma equao do segundo grau e, se afirmativo, os valores das
razes.

Passo 1 - Leia cuidadosamente e at o fim a especificao do problema, fazendo as


anotaes necessrias.
1. Receber os coeficientes (A, B e C)
2. Verificar se o valor de A zero
3. Calcular o valor de delta
4. Verificar se o valor de delta negativo
5. Se for negativo, no equao do 2o Grau: encerrar; caso contrrio
equao do 2o Grau: prosseguir
6. Calcular o valor de X
7. Calcular o valor de X
8. Mostrar os resultados
Passo 2 - Levantar e analisar todas as entradas citadas na especificao do problema
(entradas - leituras).
Entrada 1: Coeficiente A VLCOEFA real
Entrada 2: Coeficiente B VLCOEFB real
Entrada 3: Coeficiente C VLCOEFC real
Passo 3 - Levantar e analisar todas as sadas exigidas na especificao do problema (sadas
- mostras).
Sada 1:
Texto: No equao do 2o grau
Ocorrncia:
1. quando o valor de VLCOEFA = 0
2. quando o valor de delta = 0
Sada 2:
Texto: equao do 2o grau
Valores: X e X
Passo 4 - Verificar se necessrio gerar valores internamente ao algoritmo e levantar as
variveis necessrias estabelecendo o valor inicial de cada uma delas.
O que gerar?
1. Delta VLDELTA real
2. X VLX1 real
3. X VLX2 real
- Levantar e analisar todas as transformaes necessrias para, dadas as entradas
e valores gerados internamente, produzir as sadas especificadas.
Como gerar?
1. Delta -> VLDELTA = VLCOEFB * VLCOEFB (4 * VLCOEFA *
VLCOEFC)
2. X -> VLX1 = (- VLCOEFB + RAIZ (VLDELTA)) / (2 * VLCOEFA)
3. X -> VLX2 = (- VLCOEFB - RAIZ (VLDELTA)) / (2 * VLCOEFA)
Algoritmos-2-Introducao-2015-s2

Pgina 7 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Passo 5 - Elaborar o algoritmo.
Neste passo foi utilizado o padro VISUALG para a construo do algoritmo.

Algoritmo EXP001.alg
// Funo: Verificao e resoluo de uma equao do 2o Grau
// Autor: Prof. Dreco
// Data: 03/08/2015
var

inicio

VLCOEFA, VLCOEFB, VLCOEFC : real


VLDELTA, VLX1, VLX2 : real
// Inicializando as variaveis
VLCOEFA <- 0
VLCOEFB <- 0
VLCOEFC <- 0
VLDELTA <- 0
// Leitura dos coeficientes
limpatela
escreva (Equao do Segundo Grau Validao e Resultados)
escreva (Informe o valor de A ...)
leia (VLCOEFA)
escreva (Informe o valor de B ...)
leia (VLCOEFB)
escreva (Informe o valor de C ...)
leia (VLCOEFC)
// Processamento
se VLCOEFA = 0 entao
escreva (No equao do 2o grau)
senao
VLDELTA <- (VLCOEFB * VLCOEFB) (4 * VLCOEFA * VLCOEFC)
se VLDELTA < 0 entao
escreva (No equao do 2o grau)
senao
escreval ( equao do 2o grau)
VLX1 <- (-VLCOEFB + raizq (VLDELTA)) / (2 * VLCOEFA)
VLX2 <- (-VLCOEFB raizq (VLDELTA)) / (2 * VLCOEFA)
escreval (O valor da raiz 1 =, VLX1:10:2)
escreval (O valor da raiz 2 =, VLX2:10:2)
fimse

fimse
fimalgoritmo

Algoritmos-2-Introducao-2015-s2

Pgina 8 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Passo 6 - Testar cada passo do algoritmo, verificando se as transformaes intermedirias
executadas esto conduzindo aos objetivos desejados.
VLCOEFA
0
0
1
1
0
1
1
1

VLCOEFB
1
1
0
2
0
1
2
2

Algoritmos-2-Introducao-2015-s2

VLCOEFC
1
2
1
0
0
1
3
2

VLDELTA

VLX1

VLX2

Sada

?
?
?
?
?
?
?
?

Pgina 9 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Passo 7 - Fazer uma avaliao geral do algoritmo identificando e alterando pontos de
melhoria.
Algoritmo EXP001.alg
// Funo: Verificao e resoluo de uma equao do 2o Grau
// Autor: Prof. Dreco
// Data: 03/08/2015
var

inicio

VLCOEFA, VLCOEFB, VLCOEFC : real


VLDELTA, VLX1, VLX2 : real
// Inicializando as variaveis
VLCOEFA <- 0
VLCOEFB <- 0
VLCOEFC <- 0
VLDELTA <- 0
// Leitura dos coeficientes
limpatela
escreva (Equao do Segundo Grau Validao e Resultados)
escreva (Informe o valor de A ...)
leia (VLCOEFA)
escreva (Informe o valor de B ...)
leia (VLCOEFB)
escreva (Informe o valor de C ...)
leia (VLCOEFC)
// Processamento
se VLCOEFA = 0 entao
escreva (No equao do 2o grau)
senao
VLDELTA <- (VLCOEFB * VLCOEFB) (4 * VLCOEFA * VLCOEFC)
se VLDELTA < 0 entao
escreva (No equao do 2o grau)
senao
escreval ( equao do 2o grau)
VLX1 <- (-VLCOEFB + raiz (VLDELTA)) / (2 * VLCOEFA)

fimse
fimse
fimalgoritmo
Algoritmos-2-Introducao-2015-s2

se VLDELTA = 0 entao
escreval (As razes so iguais , VLX1:10:2)
senao
VLX2 <- (-VLCOEFB raizq (VLDELTA))
/ (2 * VLCOEFA)
escreval (O valor da raiz 1 =, VLX1:10:2)
escreval (O valor da raiz 2 =, VLX2:10:2)
fim-se

Pgina 10 de 11

Universidade de Uberaba
Algoritmos

Linguagens e Tcnicas de Programao I


Prof Andr de Paula (Dreco)

Algoritmos - Introduo
Estrutura de um algoritmo
O algoritmo distribudo nas seguintes sees:
Comentrios de prlogo
Identificam o algoritmo de maneira geral (algoritmo, funo, autor e data).
Declarao de variveis globais
Nesta seo item so definidas as variveis que podero ser utilizadas por todo o
processo lgico principal e pelas funes e procedimentos definidos no algoritmo.
Declarao de funes e de procedimentos
Devero ser declaradas as funes e procedimentos necessrios ao desenvolvimento
lgico do algoritmo.
Processo lgico principal
O processo lgico principal responsvel pela estruturao das aes e comandos
que visam atender resoluo do problema como um todo. Est subdividida em:
marcador de incio;
inicializao das variveis globais;
descrio das aes que compe o processo lgico principal;
marcador de finalizao.
Exemplo da estrutura
Algoritmo Exemplo.alg
// Funo: Exemplo de estrutura de um algoritmo
// Autor: Equipe do LPT1
// Data: 03/08/2015
// Declarao das variveis
Var
<VARIAVEL-1a>, <VARIAVEL-2a>, ..., <VARIAVEL-na> : <TIPOa>
<VARIAVEL-1b>, <VARIAVEL-2b>, ..., <VARIAVEL-nb> : <TIPOb>
inicio

// Inicializao das variveis


<VARIAVEL-1a> <- <VALOR-INICIAL>
<VARIAVEL-2a> <- <VALOR-INICIAL>
...
<VARIAVEL-na> <- <VALOR-INICIAL>
<VARIAVEL-1b> <- <VALOR-INICIAL>
<VARIAVEL-2b> <- <VALOR-INICIAL>
...
<VARIAVEL-nb> <- <VALOR-INICIAL>
// Corpo lgico do algoritmo

<COMANDO-1>
<COMANDO-2>
<COMANDO-3>
...
<COMANDO-n>
fimalgoritmo
Algoritmos-2-Introducao-2015-s2

Pgina 11 de 11