Sunteți pe pagina 1din 42

Lgica de Programao e Algoritmos

Introduo a Cincia da Computao


Gabriel Araujo - 2015/1

Instrues

Um programa de computador constitudos por instrues ou


comandos.

1
1 +
1 + 6
7

Gabriel Araujo - 2015/1

Instrues

Esse conjunto de instrues deve obedecer uma sequncia lgica.

A sequncia lgica garante que objetivo seja de fato alcanado.

Se a sequncia no for obedecida o resultado pode ser inesperado.

Modo de preparo

Gabriel Araujo - 2015/1

Instrues

Esse conjunto de instrues deve obedecer uma sequncia lgica.

A sequncia lgica garante que objetivo seja de fato alcanado.

Se a sequncia no for obedecida o resultado pode ser inesperado.

Uma correta sequncia lgica de instrues chamada de algoritmo.

Gabriel Araujo - 2015/1

Algoritmos

O que um algoritmo?

Formalmente, uma sequncia finita de passos que levam a execuo de


uma tarefa ou atinge um objetivo.

Deve especificar com clareza e de forma correta a sequncia de passos.

A definio de algoritmo genrica.

Pode ser aplicada a qualquer circunstncia que exija a descrio da


realizao de uma atividade.

Comer, respirar, dirigir, estudar, cozinhar, caminhar, lavar loua, escrever um livro

Gabriel Araujo - 2015/1

Algoritmos

15,6
+323,5
339,1

Somar dois nmeros


reais decimais.

Gabriel Araujo - 2015/1

Algoritmos

Trocar um pneu
furado.

Gabriel Araujo - 2015/1

Algoritmos

Escovar os dentes.

Gabriel Araujo - 2015/1

Algoritmos so
de uso geral.
Gabriel Araujo - 2015/1

Algoritmos

Como seria um algoritmo para trocar um lmpada queimada?

E um algoritmo para fazer uma compra online?

Gabriel Araujo - 2015/1

Torres de Hanoi
A

Gabriel Araujo - 2015/1

Torres de Hanoi

Objetivo

Mover os anis da haste A para B (se necessrio utilizando C).

Regras

S pode mover um nico anel por vez.

Um anel no pode ser colocado sobre outro de dimetro menor.

Gabriel Araujo - 2015/1

Torres de Hanoi (algoritmo 1)

Incio
1. Mover um anel da haste A para a haste B.
2. Mover um anel da haste A para a haste C.
3. Mover um anel da haste B para a haste C.
4. Mover um anel da haste A para a haste B.
5. Mover um anel da haste C para a haste A.
6. Mover um anel da haste C para a haste B.
7. Mover um anel da haste A para a haste B.

Fim
Gabriel Araujo - 2015/1

Torres de Hanoi (algoritmo 2)

7. Mover um anel da haste C para a haste A.

Incio
1. Mover um anel da haste A para a haste C.

8. Mover um anel da haste C para a haste B.

2. Mover um anel da haste A para a haste B.

9. Mover um anel da haste A para a haste C.

3. Mover um anel da haste C para a haste B.

10. Mover um anel da haste A para a haste B.

4. Mover um anel da haste A para a haste C.

11. Mover um anel da haste C para a haste B.

5. Mover um anel da haste B para a haste C.

Fim

6. Mover um anel da haste B para a haste A.

Gabriel Araujo - 2015/1

Torres de Hanoi

Ambas algoritmos (solues) esto corretos.

O primeiro mais eficiente.

Determinar um algoritmo mais eficiente pode ser crucial na resoluo


de um problema.

Gabriel Araujo - 2015/1

Torres de Hanoi

E se o nmero de anis for diferente?

Elaborar uma soluo genrica, para qualquer nmero de anis.


N de anis

N de movimentos

15

31

...

...

20

1.048.575
Gabriel Araujo - 2015/1

Torres de Hanoi

Incio
1. Repita {as duas linhas abaixo at que a condio na parte at seja
atendida. }
1. Mova o menor anel da sua haste atual para a prxima, no sentido horrio.
2. Execute um nico movimento possvel com um anel que no seja o menor de todos.

2. At que todos os discos sejam transferidos para a outra haste.

Fim

Gabriel Araujo - 2015/1

Algoritmos Computacionais

Algoritmos computacionais precisam ser precisos e obedecer uma


conveno.

Sem margem de dvidas. O computador no pode ter dvidas.

Todas as pessoas envolvidas na especificao do algoritmo devem entend-lo.

Formalizao

Algoritmos so formalizados utilizando um conjunto de regras que regulam a


escrita do algoritmo, regras de sintaxe.

Tambm existem regras para interpretao do algoritmo, regras de semntica.

Gabriel Araujo - 2015/1

Sintaxe

O que a sintaxe de um algoritmo computacional?

Regras para especificar um algoritmo corretamente.

Indica os tipos de instrues (comandos) que podem ser utilizados, e como


escrever neles expresses (manipulao de dados).

Gabriel Araujo - 2015/1

Sintaxe

O que a sintaxe de um algoritmo computacional?

Regras para especificar um algoritmo corretamente.

Indica os tipos de instrues (comandos) que podem ser utilizados, e como


escrever neles expresses (manipulao de dados).

Gabriel Araujo - 2015/1

Comandos

O que so os comandos?

As vrias instrues do algoritmo computacional.

Controlam o fluxo de execuo do algoritmo.

Tambm denominados estruturas de programao.

Gabriel Araujo - 2015/1

Estruturas de Programao

Qualquer algoritmo computacional pode ser definido com trs


estruturas bsicas:

Sequenciais

Condicionais (ou de condio)

Repetitivas (ou de repetio)

Gabriel Araujo - 2015/1

Estrutura Sequencial

So as estruturas com execuo


direta, imperativa, e sequencial.

Incio
1. Mover um anel da haste A para a haste B.
2. Mover um anel da haste A para a haste C.

Misture os ingredientes.

Mova um anel da haste A para a


haste B.

O algoritmo ao lado s emprega


estruturas sequenciais, pois no
existe desvio no fluxo de
execuo.

3. Mover um anel da haste B para a haste C.


4. Mover um anel da haste A para a haste B.
5. Mover um anel da haste C para a haste A.
6. Mover um anel da haste C para a haste B.
7. Mover um anel da haste A para a haste B.

Fim

Gabriel Araujo - 2015/1

Estrutura Condicional

Selecionam uma alternativa de fluxo de acordo com alguma


condio.

Se o nmero de anis for mpar

Mova o menor anel para o primeiro no sentido horrio

Se o nmero de anis for par

Mova o menor anel para o primeiro no sentido anti-horrio

Gabriel Araujo - 2015/1

Estrutura Repetitiva

Possibilitam que um sequncia de comandos seja repetida de acordo


com uma condio.
1. Repita {as duas linhas abaixo at que a condio na parte at seja
atendida. }
1. Mova o menor anel da sua haste atual para a prxima, no sentido horrio.
2. Execute um nico movimento possvel com um anel que no seja o menor de todos.

2. At que todos os discos sejam transferidos para a outra haste.

Gabriel Araujo - 2015/1

Sintaxe

O que a sintaxe de um algoritmo computacional?

Regras para escrev-lo corretamente.

Indica os tipos de instrues (comandos) que podem ser utilizados, e como


escrever neles expresses (manipulao de dados).

Gabriel Araujo - 2015/1

Expresses

Manipulam os dados do programa por meio de:

Variveis

Valores constantes (literais).

Gabriel Araujo - 2015/1

Expresses

Manipulam os dados do programa por meio de:

Variveis

Valores constantes (literais).

Gabriel Araujo - 2015/1

Variveis

O que so variveis?

Representao de algum valor armazenado.

O algoritmo (ou programa) pode alterar o valor correspondente a uma


varivel.

Seja X = 5

Seja X = 15

Gabriel Araujo - 2015/1

Constantes

O que so constantes?

Representao fixa de algum valor possvel.

O seu valor no pode ser alterado no algoritmo depois de definido.

Seja X = 5

Seja X = 15

Gabriel Araujo - 2015/1

Exemplo de Sintaxe

Especificando um algoritmo para calcular a rea de um tringulo.

Sabemos que

bh
A=
2

Gabriel Araujo - 2015/1

Exemplo de Sintaxe

Especificando um algoritmo para calcular a rea de um tringulo.

Um algoritmo informal:

Incio
1. Pedir para o usurio digitar os valores de base (b) e altura (h).
2. Calcular a rea A usando a frmula A = (b x h) / 2.
3. Exibir o valor da rea A na tela.

Fim
Gabriel Araujo - 2015/1

Exemplo de Sintaxe

Especificando um algoritmo para calcular a rea de um tringulo.

Se utilizarmos uma representao diferente, devemos seguir suas regras de


sintaxe:
Incio

b, h

A (b * h) / 2

Fim
Gabriel Araujo - 2015/1

Semntica

O que a semntica de um algoritmo?

Estabelece as regras para a sua interpretao.

Define o significado de cada instruo.

Cada comando e expresso do algoritmo tem um significado.

A (b *h)/ 2

Gabriel Araujo - 2015/1

Propriedades de um algoritmo

Valores de entrada

Todo algoritmo precisa possuir zero, uma ou mais entradas.

As entradas modificam o resultado final.

Valores de sada

Todo algoritmo possui uma ou mais sadas, que simbolizam seus resultados.

Finitude

Todo algoritmo finito.

Possui incio, meio (passos) e fim.


Gabriel Araujo - 2015/1

Propriedades de um algoritmo

Passos elementares

Um algoritmo computacional deve ser explicitado por meio de operaes


elementares.

Operaes aritmticas, comparaes, etc.

Correo

O algoritmo deve ser correto.

Deve produzir resultados coerentes com seu objetivo e valores de entradas.

Gabriel Araujo - 2015/1

Representaes de algoritmos

Como j foi dito, para um algoritmo ser til, deve ser entendido da
mesma maneira por todos que o utilizam.

Algumas representaes so mais formais e evitam ambiguidade.

Temos quatro representaes principais:

Descrio narrativa (informal)

Fluxograma

Diagrama de Nassi-Schneidermann

Pseudocdigo
Gabriel Araujo - 2015/1

Descrio Narrativa

Os algoritmos so expressos diretamente em linguagem natural.

Troca de pneu furado

Afrouxar ligeiramente as porcas


Suspender o carro
Retirar as porcas e o pneu
Colocar o pneu reserva
Apertar as porcas
Abaixar o carro
Dar aperto final nas porcas

Gabriel Araujo - 2015/1

Descrio Narrativa

Prs

Fcil descrio.

No requer conhecimento especfico (aprender regras de sintaxe).

Contras

Normalmente ambguo.

Impreciso.

Gabriel Araujo - 2015/1

Leitura Recomendada

Captulo 1

SOUZA, Marco A. F; GOMES, Marcelo M; SOARES, Marcio V;


CONCILIO, Ricardo. Algoritmos e Lgica de Programao. 2 Ed.
Cengage Learning, 2012.

Gabriel Araujo - 2015/1

Link para Download dos Livros

http://goo.gl/kJ9gYD

http://goo.gl/g3SQgY

http://goo.gl/RLTWzs

Gabriel Araujo - 2015/1

Na prxima aula...

Fluxogramas

Diagrama Nassi-Schneidermann

Gabriel Araujo - 2015/1

S-ar putea să vă placă și