Você está na página 1de 25

Algoritmos e

Programao I
Introduo a Computao

Prof. Fernando Maia da Mota


mota.fernandomaia@gmail.com
CPCX/UFMS

Fernando Maia da Mota

Computadores so dispositivos que s sabem


fazer um tipo de coisa: executar algoritmos
para processar informao. Para cientistas da
Computao, algoritmo o conceito central da
Computao.

Fernando Maia da Mota

Algoritmos
Um algoritmo uma sequncia de instrues para resolver um
problema, a qual possui as seguintes propriedades:
Garantia de trmino: o problema a ser resolvido possui
condies especficas que, quando satisfeitas, a execuo
do algoritmo encerrada e o problema ento tido como
resolvido. Alm disso, estas condies devem ser
satisfeitas aps uma quantidade finita de tempo, a ser
contado a partir do incio da execuo do algoritmo.
Exatido: a inteno de cada instruo no algoritmo deve
ser suficientemente clara, de forma que no haja
ambiguidade na interpretao da inteno.
Efetividade: cada instruo deve ser bsica o suficiente
para ser executada, pelo menos em princpio, por qualquer
agente usando apenas lpis e papel.
Fernando Maia da Mota

Algoritmos
Cosidere o seguinte algoritmo para encontrar o mximo divisor
comum (MDC) de dois nmeros naturais (N*):
1. Chame o maior nmero de a e o menor de b
2. Divida a por b e chame o resto de r
3. Se r igual a zero ento o MDC igual a b e a execuo
das instrues encerra aqui. Caso contrrio, siga para a
prxima instruo.
4. Atribua o valor de b a a e o valor de r a b
5. Volte para a instruo 2.

Fernando Maia da Mota

Algoritmos
Este algoritmo se seguido resolve qualquer ocorrncia do
problema.
Se seguida, resolve qualquer ocorrncia do problema. A
execuo da sequncia sempre pra aps uma quantidade
finita de tempo. Isto garantido pela instruo 3, que compara o
valor de r a zero e termina a execuo se r igual a 0.
Cada instruo da sequncia clara e possvel de ser
executada por qualquer pessoa que saiba, pelo menos, dividir
dois nmeros.

Fernando Maia da Mota

Algoritmos
Como era de se esperar, nem toda sequncia de instrues
para resolver um determinado problema pode ser considerada
um algoritmo.
Por exemplo, uma instruo Escreva todos os nmeros
mpares.
Neste caso, temos uma instruo que no pode ser
executada porque a execuo nunca terminar, apesar de
sabermos exatamente como determinar os nmeros
mpares.
Se modificssemos a instruo para Escreva todos os
nmerosmpares menores do que 100, ela poderia,
perfeitamente, fazer parte de um algoritmo.
Fernando Maia da Mota

Algoritmos
Um problema para o qual existe uma soluo na forma de
algoritmo dito um problema algortmico.
O problema de encontrar o MDC de dois nmeros naturais
quaisquer , portanto, um problema algortmico.

Um algoritmo dito correto quando ele sempre termina e


produz a resposta correta para todas as ocorrncias de um
dado problema.
Algoritmo, ento, pode ser imaginado como a especificao de
um processo mecnico que, quando executado, leva-nos
soluo de algum problema.

Fernando Maia da Mota

Algoritmos
A execuo de um algoritmo por um computador denominada
processamento de dados e consiste de trs partes: uma
entrada, um processo e uma sada.
Todo algoritmo deve possuir um meio de obter os dados da
entrada. Esta tarefa conhecida como leitura da entrada.
Todo algoritmo deve possuir um meio de revelar o resultado da
computao. Isto conhecido como escrita dos dados da sada.

Fernando Maia da Mota

Algoritmos
A capacidade para resolver problemas pode ser vista como uma
habilidade a ser adquirida. Esta habilidade, como qualquer
outra, pode ser obtida pela combinao de duas partes:
Conhecimento: adquirido pelo estudo. Em termos de
resoluo de problemas, est relacionado a que tticas,
estratgias e planos usar e quando usar;
Destreza: adquirida pela prtica. A experincia no uso do
conhecimento nos d mais agilidade na resoluo de
problemas.

Fernando Maia da Mota

Algoritmos
Independente do problema a ser resolvido, ao desenvolvermos
um algoritmo devemos seguir os seguintes passos:
Anlise preliminar: entender o problema com a maior
preciso possvel, identificando os dados e os resultados
desejados;
Soluo: desenvolver um algoritmo para o problema;
Teste de qualidade: executar o algoritmo desenvolvido
com uma entrada para a qual o resultado seja conhecido;
Alterao: se o resultado do teste de qualidade no for
satisfatrio, altere o algoritmo e submeta-o a um novo teste
de qualidade;
Produto final: algoritmo concludo e testado, pronto para
ser aplicado.
Fernando Maia da Mota

10

Algoritmos e a Abstrao
o processo de identificar certas propriedades ou caractersticas
de uma entidade material e us-las para especificar uma nova
entidade que representa uma simplificao da entidade da qual
ela foi derivada. Esta nova entidade e o que chamamos de
abstrao.

Maria tinha cinco mas e Joo tinha trs. Quantas mas


eles tinham juntos?
Provavelmente, um adulto resolveria este problema fazendo uma abstrao das
maas como se elas fossem os nmeros 5 e 3 e faria a soma de tais nmeros.
Uma criana poderia imaginar as cinco mas de Maria como cinco palitinhos e as
trs de Joo como trs palitinhos. Da, faria uma contagem dos palitinhos para
chegar soluo. Em ambos os casos, os elementos do problema foram
substitudos por outros (nmeros e palitinhos) e a soluo foi encontrada
atravs da manipulao dos novos elementos.
Fernando Maia da Mota

11

Algoritmos e a Abstrao
Algoritmos bem projetados so organizados em nveis de
abstrao, pois um mesmo algoritmo deve ser entendido por
pessoas com diferentes graus de conhecimento.
Para isso o uso de mdulos, que agrupa instrues que
realizam uma determinada tarefa do algoritmo se mostra
como uma poderosa ferramenta.

Fernando Maia da Mota

12

Algoritmos e Computadores
De acordo com o Websters New World Dictionary of the
American Language (segunda edio), um computador uma
mquina eletrnica que, por meio de instrues e informaes
armazenadas, executa rpida e frequentemente clculos
complexos ou compila, correlaciona e seleciona dados.
Basicamente, um computador manipula dados.
O que faz dos computadores uma mquina notvel a extrema
rapidez e preciso com que eles podem armazenar, recuperar e
manipular dados.

Fernando Maia da Mota

13

Algoritmos e Computadores
Quando desejamos utilizar um computador para nos auxiliar na
tarefa de processamento de dados, deparamo-nos com alguns
problemas inerentes a este processo: Como informaremos ao
computador o algoritmo que deve ser executado para obtermos
o resultado desejado?, Como forneceremos a entrada do
algoritmo? e Como receberemos o resultado do algoritmo?.
O ato de instruir o computador para que ele resolva um
determinado problema conhecido como programao.
A forma como descrevemos algoritmos computacionais,
atravs de uma linguagem de programao.
O termo programa comumente empregado para designar o
algoritmo em uma linguagem de programao.
Fernando Maia da Mota

14

Algoritmos e Computadores
Cada computador possui uma linguagem de programao prpria,
denominada linguagem de mquina, e, em geral, distinta das
linguagens de mquina dos demais modelos de computador.
Para evitar que para cada modelo de computador tivssemos que
aprender uma nova linguagem, linguagens independentes de
modelo de computadores foram criadas.
Se voc aprende uma linguagem independente de mquina,
estar apto, pelo menos em princpio, a programar qualquer
computador.
Estas linguagens no so compreendidas por computador, para
isso necessrio a utilizao de um outro programa denominado
compilador.
Fernando Maia da Mota

15

Algoritmos e Computadores
Arquitetura bsica de um computador
Dispositivos de entrada:
Teclado, mouse.
Dispositivos de sada:
Monitor, impressora.
CPU
UC.
ULA.
Memria:
Principal ou temporria;
Memria secundria.
Fernando Maia da Mota

16

Algoritmos e Computadores
A CPU tambm possui seus prprios elementos de memria,
denominados como registradores.
Os registradores armazenam, em cada instante, os dados a
serem imediatamente processados, isto , os dados
referenciados pela instruo processada no momento e que
foram trazidos da memria principal.
Os registradores possibilitam o aumento de velocidade na
execuo das instrues, pois os resultados intermedirios da
instruo no precisam ser armazenados na memria principal.
Com o avano da microeletrnica possvel construir toda uma
CPU em uma nica pastilha de silcio. Essa pastilha, ou chip,
denomina-se microprocessador.

Fernando Maia da Mota

17

Algoritmos e Computadores
Os microprocessadores so classificados pelo tamanho da
palavra ou comprimento, em bits, da unidade de informao
que so capazes de processar de uma s vez.
Os primeiros microprocessadores foram de 8 bits, seguidos
pelos de 16 bits, depois pelos de 32 bits e, mais recentemente,
pelos de 64 bits

Fernando Maia da Mota

18

Algoritmos e Computadores
Tanto as instrues quanto os dados so localizados na
memria atravs dos endereos das posies de memria que
os contm.
O tamanho de cada posio de memria dado em bytes.
Cada 1024bytes representam 1 quilobyte (1K).
Cada 1024K representam 1 megabyte (1M).
Cada 1024M representam 1 gigabyte (1G).
Cada 1024G representam 1 terabyte (1T).
Se o tamanho de uma posio de memria de um computador
mede 2 bytes e a memria possui 640 Kbytes de capacidade de
armazenagem, o nmero de posies de memria igual a
327.680.
Se o tamanho de uma posio mede 4 bytes com uma memria
de 128Mbytes, qual o nmero de posies disponvel?
Fernando Maia da Mota

19

Algoritmos e Computadores
A memria principal perde todo o seu contedo no momento em
que o computador desligado.
Ela possui o propsito de armazenar instrues e dados de um
programa em execuo.
Sua principal caracteristica a rapidez com que as informaes
nela armazenadas so lidas e escritas pela CPU.

Toda vez que um programa deve ser executado, ele inserido


antes na memria primria.

Fernando Maia da Mota

20

Linguagens de Programao
A primeira gerao de linguagens de programao remonta aos
dias de codificao em linguagem de mquina.
Esta linguagem formada por instruces descritas como
sequncias de bytes.
Um programa em linguagem de mquina poderia se parecer
com a seguinte sequncia de bytes:
01000011 00111010 00111011 01000001 00101011 01000100
Para programar em linguagem de mquina, ns devemos
conhecer a sequncia de bits que determina cada instruo e
tambm como codificar os dados em binrio. Alm disso, voc
deve conhecer os dispositivos internos do computador, pois as
instrues de uma linguagem de mquina envolvem
diretamente tais dispositivos.
Fernando Maia da Mota

21

Linguagens de Programao
A programao em linguagem de mquina , na maioria das
vezes, inadequada, pois o desenvolvedor perde mais tempo
com os detalhes da mquina do que com o prprio problema.
O prximo passo na evoluo das linguagens de programao
foi a criao da linguagem montadora ou assembly.
Instrues atravs de mnemnicos.
00000010 11001111 ADD CL,BH
Para que o computador pudesse executar um programa escrito
em linguagem montadora foi desenvolvido um compilador
denominado montador ou assembler.
Fernando Maia da Mota

22

Linguagens de Programao
O sucesso da linguagem montadora animou os pesquisadores
a criarem linguagens em que a programao fosse realizada
atravs de instrues na lngua inglesa, deixando para o prprio
computador a tarefa de traduzir o cdigo escrito em tais
linguagens para sua linguagem de mquina.

1957 Fortran (primeira linguagem amplamente aceita)


Anos 70 Surgimento da linguagem C (destaca-se pela
facilidade de uso).
Anos 80 Surgimento da linguagem C++ (uso de Orientao a
Objetos).

Fernando Maia da Mota

23

Software
O software pode ser classificado como sendo de dois tipos:
bsico ou aplicativo.
Bsicos: Sistema operacional, utilitrios, compiladores,
interpretadores, depuradores.

Aplicativo: Um software aplicativo aquele que realiza


tarefas mais especializadas e que, apoiado nos softwares
bsicos, torna o computador uma ferramenta indispensvel
s organizaes. Por exemplo, editores de texto, programas
de desenho e pintura, programas de automao contbil,
entre outros.

Fernando Maia da Mota

24

Referncias

SIQUEIRA, Marcelo F. Algoritmos e Estrutura de


Dados. Mato Grosso do Sul: CCET/CPCX - UFMS,
2007.

Fernando Maia da Mota

25