Vous êtes sur la page 1sur 47

Algoritmos e Programao

Prof. Wiliam Cardoso

Algoritmo

CONCEITO

5,0
5,0

5,0
O QUE UM ALGORITMO?
4,0
3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
Um algoritmo uma seqncia finita de instrues bem definidas e no
ambguas, cada uma das quais pode ser executada mecanicamente num
perodo de tempo finito e com uma quantidade de esforo finita.
um conjunto determinstico de instrues que cumprem alguma tarefa, na
qual partindo
5,0 de um estado
5,0 inicial chegam a um determinado estado final.

5,0

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
Outras definies:
Um procedimento passo a passo para a soluo de um problema.
Uma seqncia detalhada de aes a serem executadas para realizar alguma
tarefa.5,0
5,0

5,0

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
O conceito de algoritmo freqentemente ilustrado pelo exemplo de uma
receita, embora muitos algoritmos sejam mais complexos.

Eles podem repetir passos (fazer iteraes) ou necessitar de decises (tais


como comparaes ou lgica) at que a tarefa seja completada. Um algoritmo
corretamente
executado
5,0
5,0 no ir resolver um problema se estiver
implementado incorretamente ou se no for apropriado ao problema.

5,0

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
Um algoritmo no representa, necessariamente, um programa de computador,
e sim os passos necessrios para realizar uma tarefa.
Sua implementao pode ser feita por um computador, por outro tipo de
autmato ou mesmo por um ser humano.
Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto
5,0 de instrues
5,0em mais ou menos tempo, espao ou esforo do que
diferenciado
outros.
5,0
4,0
3,0
Tal diferena pode ser reflexo da complexidade computacional aplicada, que
depende de estruturas de dados adequadas ao algoritmo.

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
Por exemplo, (algoritmo para se Vestir)
um algoritmo para se vestir pode especificar que voc vista primeiro as
meias e os sapatos antes de vestir a cala
enquanto outro algoritmo especifica que voc deve primeiro vestir a cala
e depois as meias e os sapatos.
5,0
5,0
Fica claro que o primeiro algoritmo mais difcil de executar que o segundo
apesar5,0
de ambos levarem
4,0ao mesmo resultado.
3,0
O conceito de um algoritmo foi formalizado em 1936 pela Mquina de Turing
de Alan Turing e pelo clculo lambda de Alonzo Church, que formaram as
primeiras fundaes da Cincia da Computao.

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?

5,0
5,0

5,0
4,0

O nome algoritmo vem do nome


do matemtico persa Abu
Abdullah Muhammad bin Musa
al-Khwarizmi (780 850).
Entre outras coisas ele
desenvolveu uma soluo
sistemtica para funes
lineares
3,0 e quadrticas.
A palavra 'algarismo' tambm
derivada de seu nome, devido a
seu trabalho relacionado a
notao posicional do sistema
de numerao decimal.

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Algoritmo?
Histrico
No sculo XVIII na Europa, a traduo do nome de al-Khwarizmi
deu origem palavra algoritmo.
O primeiro caso de um algoritmo escrito para um computador foi
um programa
de Ada5,0
Byron para a mquina analtica de Charles
5,0
Babbage.
5,0
4,0
3,0
No sculo XX, as pesquisas de Alan Turing e Alonzo Church
formalizaram o que um algoritmo. A partir disto foi possvel definir
quais tipo de problemas um algoritmo pode resolver.

Algoritmos e Programao

Prof. Wiliam Cardoso

O que um Programa?
Um programa de computador essencialmente um algoritmo que diz ao
computador os passos especficos e em que ordem eles devem ser executados,
como por exemplo, os passos a serem tomados para calcular as notas que sero
impressas nos boletins dos alunos de uma escola.
Para qualquer processo computacional, o algoritmo precisa estar
5,0
5,0
rigorosamente
definido,
especificando a maneira que ele se comportar em
todas as circunstncias.
5,0
4,0
3,0
Chamamos de programa de computador um conjunto de instrues que ser
executado pelo processador em uma determinada seqncia. Esse programa
leva o computador a executar alguma tarefa.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
Como podemos perceber, um programa nada mais que um tipo de
algoritmo.
Sua particularidade que suas operaes so especficas para o computador
e restritas ao conjunto de instrues que o processador pode executar.

5,0 considerar esse


5,0 conjunto de instrues como a primeira linguagem
Podemos
de programao
do computador,
tambm
chamada de linguagem de mquina
5,0
4,0
3,0
(seqncias de bits).

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
Classificamos as linguagens de programao segundo a sua proximidade com
a linguagem de mquina.
Quanto maior a semelhana com a linguagem de mquina, mais baixo o
nvel da linguagem.

5,0
Classificao:

5,0
5,0
4,0nvel: Linguagens
3,0de Programao
Linguagem de baixo

mais

semelhantes linguagem de mquina .


Linguagem de alto nvel: Linguagens de Programao mais prximas da
linguagem natural e guardam pouca similaridade com a linguagem da
mquina em que sero executadas.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
Linguagem de baixo nvel: trata-se de uma linguagem de programao que
compreende as caractersticas da arquitetura do computador.
Assim, utiliza somente instrues do processador, para isso necessrio
conhecer os registradores da mquina.

5,0sentido, as linguagens
5,0 de baixo nvel esto diretamente relacionadas
Nesse
com5,0
a arquitetura do computador.
4,0
3,0
Um exemplo a linguagem Assembly (no Assembler) que trabalha
diretamente com os registradores do processador, manipulando dados.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
ASSEMBLER
Algumas das desvantagens podem ser superadas fazendo com que o computador
seja o responsvel pelo estgio de traduo.
O programa
ainda escrito
em termos de operaes bsicas de mquina, mas a
5,0
5,0
traduo em cdigo binrio feita pelo computador.

5,0 que faz essa


4,0
3,0 de assembler
O programa
traduo chamado
Exemplo: ADD 1,1

Trata do problema de clculo de endereo, usando nomes em formato de texto


para enderear os dados.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
Linguagem de programao de alto nvel o que se chama na Cincia da
Computao de linguagens de programao com um nvel de abstrao
relativamente elevado, longe do cdigo de mquina e mais prximo
linguagem humana.
Desse
5,0modo, as linguagens
5,0 de alto nvel no esto diretamente relacionadas
arquitetura do computador. O programador de uma linguagem de alto nvel
no 5,0
precisa conhecer4,0
caractersticas 3,0
do processador, como instrues e
registradores. Essas caractersticas so abstradas na linguagem de alto nvel.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
Alguns exemplos de linguagens de alto nvel:
ASP
ActionScript
C/C++
C#
5,0
5,0
Pascal/Object Pascal
Euphoria
5,0
4,0
3,0
Java
PHP
Python
Tcl
Basic/Visual Basic

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao
A evoluo das linguagens de programao pode ser dividida em 5 etapas ou
geraes.
Primeira gerao: Linguagem mquina.
Segunda gerao: Criaram-se as primeiras linguagens assembler.
Terceira gerao: Criam-se as primeiras linguagens de alto nvel. Ex: C, Pascal,
Cobol5,0
5,0
Quarta gerao: So linguagens capazes de gerar cdigo por si s, so os
5,0 RAD, com o qual
4,0pode-se realizar
3,0aplicaes sem ser um expert na
chamados
linguagem. Aqui tambm se encontram as linguagens orientadas a objetos,
tornando possvel a reutilizao de partes do cdigo para outros programas.
Ex: Visual, Natural Adabes
Quinta gerao: Aqui se encontram as linguagens orientadas inteligncia
artificial. Estas linguagens ainda esto pouco desenvolvidas. Ex: LISP

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem de Montagem (Assembly)?


um cdigo que relaciona a linguagem de mquina a uma linguagem mais fcil
de ser compreendida.
A linguagem de montagem (ou assembly) um cdigo que tem uma instruo
alfanumrica (ou mnemnica) para cada instruo numrica em linguagem de
mquina.

5,0
5,0
Para que um programa escrito em linguagem de montagem possa ser
5,0
4,0
executado pelo compilador, necessrio3,0
que seu cdigo seja traduzido para o
cdigo de mquina.

Isto feito por meio de um programa chamado ASSEMBLER.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem de Montagem (Assembly)?

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem de Alto Nvel


Para que possam ser processadas por um computador, os comandos da
linguagem precisaro ser traduzidos para a linguagem de mquina.
Esta traduo feita por meio de um compilador ou de um interpretador,
dependendo do caso.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Compilador
O compilador, a partir do cdigo em linguagem de alto nvel, chamado de
cdigo-fonte, gera um arquivo com cdigo em linguagem de mquina,
conhecido como cdigo-objeto.
Este cdigo-objeto fica em disco e s carregado em memria no momento
da execuo.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Compilador

Linguagem de 5,0
5,0
alto nvel
5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Interpretador
O interpretador faz o mesmo trabalho, porm no gera o arquivo em cdigoobjeto.
As instrues so traduzidas para linguagem de mquina em tempo de
execuo, instruo a instruo.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Interpretador

Linguagem de 5,0
5,0
alto nvel
5,0
4,0

Traduo de cada instruo na fase de


execuo do programa

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao e Sistemas Operacionais

Cdigo-fonte

5,0
5,0
Memria

Compilador
(etapa 1)

5,0
4,0 Cdigo-objeto
3,0
executvel

Biblioteca do sistema
operacional

Cdigo-objeto

Compilador
(etapa 2)

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao e Sistemas Operacionais


A integrao dos compiladores com os sistemas operacionais permite que o
cdigo-objeto de um programa seja portvel para qualquer mquina que
utilize o mesmo sistema operacional, tornando o cdigo-objeto dependente do
sistema operacional e no da plataforma do processador.
Porm, um cdigo-objeto compilado em um sistema operacional no poder
ser executado em um outro sistema operacional.
Assim, um programa executvel em Linux no poder ser executado em
Windows.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao Java


A linguagem de programao Java tem uma arquitetura diferente, o que
fornece a seus programas mais portabilidade que outras linguagens de
programao de alto nvel.
A compilao do cdigo Java no gera cdigo executvel em nenhum sistema
operacional.
Em vez disso, gera um cdigo pseudo-executvel, chamado bytecode.
Esse cdigo uma espcie de cdigo de baixo nvel que, porm, no uma
linguagem de mquina de algum processador, nem faz interface especfica com
algum determinado sistema operacional.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagens de Programao Java


Para que esse cdigo possa ser executado em algum sistema operacional,
necessrio que mais uma camada de software esteja a instalada.
A camada funciona como um sistema operacional genrico, deixando
transparentes as particularidades do sistema operacional real.
Esta camada chamada de Mquina Java Virtual, ou Java Virtual Machine
(JVM).
A JVM faz a traduo dos bytecodes para o cdigo executvel naquele sistema
operacional.
Isto faz com que um programa escrito em Java e que seja compilado para
bytecode possa ser executado em qualquer mquina que tenha a JVM.

Algoritmos e Programao

Prof. Wiliam Cardoso

Mquina B

Mquina A

Linguagens de Programao Java

Cdigo-fonte
Java

Compilador

Bytecode

Java Virtual
Machine

Memria
Traduo de cada
instruo na fase de
execuo do programa

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C
A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da
Bell Laboratories. Sua primeira utilizao importante foi a reescrita do Sistema
Operacional UNIX, que at ento era escrito em assembly.
Em meados de 1970 o UNIX saiu do laboratrio para ser liberado para as
universidades. Foi o suficiente para que o sucesso da linguagem atingisse
5,0 tais que, 5,0
propores
por volta de 1980, j existiam vrias verses de
compiladores
5,0 C oferecidas
4,0por vrias empresas,
3,0 no sendo mais restritas apenas
ao ambiente UNIX, porm compatveis com vrios outros sistemas operacionais.
O C uma linguagem de propsito geral, sendo adequada programao
estruturada. No entanto mais utilizada para escrever compiladores,
analisadores lxicos, bancos de dados, editores de texto, etc..

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C
A linguagem C pertence a uma famlia de linguagens cujas caractersticas so:
portabilidade, modularidade, compilao separada, recursos de baixo nvel,
gerao de cdigo eficiente, confiabilidade, regularidade, simplicidade e
facilidade de uso.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C
C uma linguagem de programao compilada de propsito geral, estruturada,
imperativa, procedural, de alto nvel, e padronizada, criada em 1972, por Dennis
Ritchie, no AT&T Bell Labs, para desenvolver o sistema operacional UNIX (que foi
originalmente escrito em Assembly).
A linguagem C classificada de alto nvel pela prpria definio desse tipo de
5,0
5,0
linguagem.

5,0
4,0 de alto nvel
3,0 tem como caracterstica no ser
A programao
em linguagens
necessrio conhecer o processador, ao contrrio das linguagens de baixo nvel.
As linguagens de baixo nvel esto fortemente ligadas ao processador.

A linguagem C permite acesso de baixo nvel com a utilizao de cdigo


Assembly no meio do cdigo fonte.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C
Assim, o baixo nvel realizado por Assembly e no C.
Desde ento, espalhou-se por muitos outros sistemas, e tornou-se uma das
linguagens de programao mais usadas, e influenciou muitas outras linguagens,
especialmente C++, que foi originalmente desenvolvida como uma extenso para
C.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C - Compiladores

5,0
5,0

5,0
4,0

Dev-C++ (tambm conhecido como Dev-Cpp)


um ambiente de desenvolvimento integrado livre
que utiliza os compiladores do projeto GNU para
compilar programas para o sistema operacional
Microsoft Windows. Suporta as linguagens de
programao C e C++, e possui toda a biblioteca
ANSI C, alm de algumas bibliotecas similares s
da Borland
3,0Turbo C, como por exemplo a
conio2.h, que pode ser baixada gratuitamente na
pgina da Bloodshed Software.

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C - Compiladores

5,0
5,0

Baixar e instalar.

Code::Blocks uma IDE (Integrated Development


Environment - Ambiente de Desenvolvimento Integrado),
com destaque de sintaxe, criado para atender as
necessidades dos usurios mais exigentes. Possui um
framework de plugins, deste modo, o prprio usurio
5,0
pode melhorar a funcionalidade do programa.

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Linguagem C - Compiladores
www.codeblocks.org

5,0
5,0

Baixar e instalar.

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma

5,0
5,0

Fluxograma um tipo de diagrama, e pode ser


entendido como uma representao esquemtica de
um processo, muitas vezes feito atravs de grficos que
ilustram de forma descomplicada a transio de
informaes entre os elementos que o compem.
Podemos entend-lo, na prtica, como a
5,0
documentao dos passos necessrios para a execuo
4,0
de um processo3,0
qualquer. uma das Sete Ferramentas
da Qualidade. Muito utilizada em fbricas e industrias
para a organizao de produtos e processos.
O Diagrama de Fluxo de Dados (DFD) utiliza do
Fluxograma para modelagem e documentao de
sistemas computacionais.

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma

5,0
5,0

Os fluxogramas apresentam os algoritmos de forma


grfica.
So formados de caixas que contm as instrues a
serem executadas.
Tais caixas so ligadas por setas que indicam o fluxo das
aes.
5,0

4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma
A representao de algoritmos por
fluxogramas tem uma srie de vantagens:

meio

de

Facilidade para compreenso do funcionamento do


algoritmo.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma

5,0
5,0

5,0
4,0

3,0
Trident E-23

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Fluxograma

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Portugus Estruturado (Pseudocdigo, Portugol ou Pseudolinguagem)

Pseudocdigo uma forma genrica de escrever um algoritmo, utilizando uma


linguagem simples (nativa a quem o escreve, de forma a ser entendida por
qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma
linguagem de programao.
, como o nome indica, um pseudo-cdigo e, portanto, no pode ser
5,0 num sistema5,0
executado
real (computador) de outra forma deixaria de ser
pseudo.
5,0
4,0
3,0
Os livros sobre a cincia de computao utilizam freqentemente o
pseudocdigo para ilustrar os seus exemplos, de forma que todos os
programadores possam entend-los (independentemente da linguagem que
utilizem).

Algoritmos e Programao

Prof. Wiliam Cardoso

Portugus Estruturado (Pseudocdigo, Portugol ou Pseudolinguagem)

Embora no caso da lngua portuguesa existam alguns interpretadores de


pseudocdigo, nenhum tem a projeo das linguagens Pascal ou BASIC, que no
caso da lngua inglesa se assemelham bastante a um pseudo-cdigo.

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Portugus Estruturado (Pseudocdigo, Portugol ou Pseudolinguagem)

Escrever os passos a serem seguidos para a resoluo do problema por meio


de regras predefinidas.
VANTAGEM:
A passagem do algoritmo para qualquer linguagem de programao
quase
5,0 imediata, bastando
5,0 conhecer as palavras reservadas da linguagem
de programao que ser utilizada.

5,0

DESVANTAGEM:

4,0

3,0

necessrio aprender as regras do pseudocdigo.

Algoritmos e Programao

Prof. Wiliam Cardoso

Portugol
Portugol uma pseudo-linguagem de programao, criada para demonstrar o
uso de algoritmos. Est presente na maioria dos materiais didticos de
programao, em portugus, sobre o assunto.
Portugol (juno de Portugus com Algol [ALG96] [PRO04]).

5,0
5,0

5,0
4,0

3,0

Algoritmos e Programao

Prof. Wiliam Cardoso

Portugol
Exemplo:
var num1, num2, maior: inteiro;
inicio
leia(num1, num2);
se(num1 > num2) ento
5,0
maior5,0
num1;
5,0seno maior4,0
num2;
escreva(maior);
fim

3,0

Vous aimerez peut-être aussi