Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
49Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Algoritmo

Algoritmo

Ratings: (0)|Views: 16,089|Likes:
Published by api-3854365

More info:

Published by: api-3854365 on Oct 19, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, DOC, TXT or read online from Scribd
See More
See less

03/18/2014

pdf

text

original

Apostila de Algor\u00edtimos

Algoritmo n\u00e3o \u00e9 a solu\u00e7\u00e3o de um problema, pois, se assim fosse, cada problema teria um \u00fanico
algoritmo. Algoritmo \u00e9 um caminho para a solu\u00e7\u00e3o de um problema, e em geral, os caminhos que
levam a uma solu\u00e7\u00e3o s\u00e3o muitas.
O aprendizado de algoritmos n\u00e3o se consegue a n\u00e3o ser atrav\u00e9s de muitos exerc\u00edcios.

Algoritmos n\u00e3o se aprende:
- Copiando Algoritmos
- Estudando Algoritmos
Algoritmos s\u00f3 se aprendem:
- Construindo Algoritmos
- Testando Algoritmos
1. Fases de um Algoritmo
Quando temos um problema e vamos utilizar um computador para resolve-lo inevitavelmente
temos que passar pelas seguintes etapas:

a) Definir o problema.
b) Realizar um estudo da situa\u00e7\u00e3o atual e verificar quais a(s) forma(s) de resolver o problema.
c) Terminada a fase de estudo, utilizar uma linguagem de programa\u00e7\u00e3o para escrever o programa
que dever\u00e1 a princ\u00edpio, resolver o problema.
d) Analisar junto aos usu\u00e1rios se o problema foi resolvido. Se a solu\u00e7\u00e3o n\u00e3o foi encontrada, dever\u00e1
ser retornado para a fase de estudo para descobrir onde est\u00e1 a falha.

Estas s\u00e3o de forma bem geral, as etapas que um analista passa, desde a apresenta\u00e7\u00e3o do
problema at\u00e9 a sua efetiva solu\u00e7\u00e3o. Iremos, neste curso, nos ater as etapas de estudo, tamb\u00e9m
chamada de an\u00e1lise, e a etapa de programa\u00e7\u00e3o. Mas antes vamos definir o seguinte conceito:
Programar um computador consiste em elaborar um conjunto finito de instru\u00e7\u00f5es, reconhecidas
pela m\u00e1quina, de forma que o computador execute estas instru\u00e7\u00f5es. Estas instru\u00e7\u00f5es possuem
regras e uma Sintaxe pr\u00f3pria, como uma linguagem tipo portugu\u00eas ou ingl\u00eas, sendo isto chamadas
de linguagem de computador.
No mundo computacional existe uma grande variedade de linguagens Pascal, C, C++, Cobol,
Fortran, etc\u2026 . N\u00f3s iremos enfocar uma delas, o Pascal.

2. Estrutura de Algoritmos

Antes de utilizarmos uma linguagem de computador, \u00e9 necess\u00e1rio organizar as a\u00e7\u00f5es a serem
tomadas pela m\u00e1quina de forma organizada e l\u00f3gica, sem nos atermos as regras r\u00edgidas da
Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais a\u00e7\u00f5es, conhecida
como algoritmo, ou pseudo-c\u00f3digo.
Conceituando: Algoritmo consiste em um conjunto l\u00f3gico e finito de a\u00e7\u00f5es ( instru\u00e7\u00f5es ) que
resolvem um determinado problema.

Os algoritmos ter\u00e3o a seguinte estrutura:

ALGORITMO <Nome do algoritmo>
<defini\u00e7\u00f5es>
IN\u00cdCIO
<Comandos>
FIM

Em Pascal ficaria da seguinte forma:

PROGRAM <Nome do programa>;
<defini\u00e7\u00f5es>
BEGIN
<Comandos>;
END.

3. Vari\u00e1veis

O computador possui uma \u00e1rea de armazenamento conhecida como mem\u00f3ria. Todas as
informa\u00e7\u00f5es existentes no computador est\u00e3o ou na mem\u00f3ria prim\u00e1ria ( mem\u00f3ria RAM ), ou na
mem\u00f3ria secund\u00e1ria ( discos, fitas, CD-ROM etc ). N\u00f3s iremos trabalhar, neste curso, somente com
a mem\u00f3ria prim\u00e1ria, especificamente com as informa\u00e7\u00f5es armazenadas na RAM ( mem\u00f3ria de
acesso aleat\u00f3rio ).

A mem\u00f3ria do computador pode ser entendida como uma seq\u00fc\u00eancia finita de caixas, que num dado
momento, guardam algum tipo de informa\u00e7\u00e3o, como n\u00famero, uma letra, uma palavra, uma frase
etc, n\u00e3o importa, basta saber que l\u00e1 sempre existe alguma informa\u00e7\u00e3o.
O computador, para poder trabalhar como alguma destas informa\u00e7\u00f5es, precisa saber onde, na
mem\u00f3ria, o dado est\u00e1 localizado. Fisicamente, cada caixa, ou cada posi\u00e7\u00e3o de mem\u00f3ria, possui um
endere\u00e7o, ou seja, um n\u00famero, que indica onde cada informa\u00e7\u00e3o est\u00e1 localizada. este n\u00famero \u00e9
representado atrav\u00e9s da nota\u00e7\u00e3o hexadecimal, tendo o tamanho de quatro, ou mais bytes. Abaixo
segue alguns exemplos:

Endere\u00e7o F\u00edsico Informa\u00e7\u00e3o
3000: B712 'Jo\u00e3o'
2000: 12EC 12345
3000: 0004 'H'

Como pode ser observado, o endere\u00e7amento das posi\u00e7\u00f5es de mem\u00f3ria atrav\u00e9s de n\u00fameros
hexadecimais \u00e9 perfeitamente compreendido pela m\u00e1quina, mas para n\u00f3s humanos torna-se uma
tarefa complicada. Pensando nisto, as linguagens de computador facilitaram o manuseio, por parte
dos usu\u00e1rios, das posi\u00e7\u00f5es de mem\u00f3ria da m\u00e1quina, permitindo que, ao inv\u00e9s de trabalhar
diretamente com os n\u00fameros hexadecimais, fosse poss\u00edvel dar nomes diferentes a cada posi\u00e7\u00e3o
de mem\u00f3ria. Tais nomes seriam de livre escolha do usu\u00e1rio. Com este recurso, os usu\u00e1rios ficaram
livres dos endere\u00e7os f\u00edsicos ( n\u00fameros hexadecimais ) e passaram a trabalhar com endere\u00e7os
l\u00f3gicos ( nomes dados pelos pr\u00f3prios usu\u00e1rios ). Desta forma, o Exemplo acima, poderia ser
alterado para ter o seguinte aspecto:

Endere\u00e7o F\u00edsico Informa\u00e7\u00e3o
Nome 'Jo\u00e3o'
n\u00famero 12345
letra 'H'

Como t\u00ednhamos falado, os endere\u00e7os l\u00f3gicos s\u00e3o como caixas, que num dado instante guardam
algum tipo de informa\u00e7\u00e3o. Mas \u00e9 importante saber que o conte\u00fado desta caixa n\u00e3o \u00e9 algo fixo,
permanente, na verdade, uma caixa pode conter diversas informa\u00e7\u00f5es, ou seja, como no Exemplo
acima, a caixa ( Endere\u00e7o L\u00f3gico ) rotulada de "Nome" num dado momento cont\u00e9m a informa\u00e7\u00e3o
"Jo\u00e3o", mas em um outro momento, poder\u00e1 conter uma outra informa\u00e7\u00e3o, por Exemplo "Pedro".

Com isto queremos dizer que o conte\u00fado de uma destas caixas ( endere\u00e7o l\u00f3gico ) podem variar,
isto \u00e9 podem sofrer altera\u00e7\u00f5es em seu conte\u00fado. Tendo este conceito em mente, a partir de agora
iremos chamar de forma gen\u00e9rica, as caixas ou endere\u00e7os l\u00f3gicos, de vari\u00e1veis.
Desta forma podemos dizer que uma vari\u00e1vel \u00e9 uma posi\u00e7\u00e3o de mem\u00f3ria, representada por um
Nome simb\u00f3lico ( atribu\u00eddo pelo usu\u00e1rio ), a qual cont\u00e9m, num dado instante, uma informa\u00e7\u00e3o.
3.1 Forma\u00e7\u00e3o de Vari\u00e1veis
Uma vari\u00e1vel \u00e9 formado por uma letra ou ent\u00e3o por uma letra seguida de letras ou d\u00edgitos, em
qualquer n\u00famero. N\u00e3o \u00e9 permitido o uso de espa\u00e7os em branco ou de qualquer outro caractere,
que n\u00e3o seja letra ou d\u00edgito, na forma\u00e7\u00e3o de um identificador.
Na forma\u00e7\u00e3o do nome da vari\u00e1vel de um nome significativo, para que se possa ter id\u00e9ia do seu
conte\u00fado sem abri-l\u00e1. Se utilizar palavras para compor o nome da vari\u00e1vel utilize o "_ " underline
para separar as palavras.
3.2 Conte\u00fado de uma Vari\u00e1vel
Dados - Elementos conhecidos de um problema
Informa\u00e7\u00e3o - Um conjunto estruturado de dados, transmitido conhecimento
3.3 Tipos de Vari\u00e1veis
Considere a f\u00f3rmula matem\u00e1tica simples do calculo do volume de uma esfera:

onde se encontram:

1- valores que podem ser classificados como:
a) valores constantes, invariantes em todas as aplica\u00e7\u00f5es da f\u00f3rmula, no caso dos valores 4, 3 e p
aos denomina-se constantes;
b) valores a serem substitu\u00eddos na f\u00f3rmula, em cada aplica\u00e7\u00e3o; a representa\u00e7\u00e3o destes valores,
usualmente \u00e9 feita atrav\u00e9s de letras, que recebem o nome de vari\u00e1veis e tornam a f\u00f3rmula
gen\u00e9rica, poss\u00edvel de ser aplicada para resolver uma certa classe de problemas e n\u00e3o apenas um
problema espec\u00edfico.

2 - Opera\u00e7\u00f5es a serem feitas sobre determinados operandos (Valores), para a obten\u00e7\u00e3o da solu\u00e7\u00e3o
do problema.
4. Tipos de Dados

O Pascal exige que no momento que formos trabalhar com vari\u00e1veis, indiquemos o tipo de
informa\u00e7\u00e3o que uma vari\u00e1vel pode conter, isto \u00e9, se uma dada posi\u00e7\u00e3o de mem\u00f3ria armazenar\u00e1 um
n\u00famero ou uma letra etc. Para isto, a linguagem Pascal possui definido alguns tipos que dever\u00e3o
ser usados quando formos trabalhar com vari\u00e1veis. Alguns tipos s\u00e3o:

Algoritmo Pascal Descri\u00e7\u00e3o
a) Inteiro a) INTEGER: Representa n\u00fameros entre -32768 at\u00e9 +32767. ocupa 2 bytes na mem\u00f3ria.
b) Real b) REAL: Representa os n\u00fameros entre 2.9 x 10 -39 at\u00e9 1.7 x 1038 . Ocupa 6 bytes na
mem\u00f3ria.
e) Caracter e) CHAR: Representa um dos caracteres, da tabela ASCII. Ocupa 1 byte na mem\u00f3ria.
d) Cadeia f) STRING: Conjunto de caracteres ( CHAR ). Ocupa de 1 a 255 bytes na mem\u00f3ria.
g) L\u00f3gica g) BOOLEAN: Valor l\u00f3gico. Assuma somente dois valores: TRUE(Verdade) ou
FALSE(Falso). ocupa 1 byte na mem\u00f3ria.
c) WORD: N\u00fameros de 0 at\u00e9 65535. Ocupa 2 bytes na mem\u00f3ria.
d) BYTE: N\u00fameros de 0 at\u00e9 255. Ocupa 1 byte na mem\u00f3ria.
h) Shor Int Representa os n\u00fameros entre -128 at\u00e9 128 . Ocupa 1 bytes na mem\u00f3ria.
i) LongInt Representa os n\u00fameros entre - 2.147.483.648 at\u00e9 2.147.483.648 . Ocupa 4 bytes na
mem\u00f3ria.

Activity (49)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Jean Carlos liked this
William Ribeiro liked this
Luana Lima liked this
Yuri Nunes liked this
Melcksedek liked this
DeomilioJunior liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->