Você está na página 1de 66

#

Algoritmos

Lauro Barreto Fontes ICC UFS - 2011.2

# 1

Introduo
O mundo hoje literalmente no vive sem um computador O que aconteceria, por exemplo, com um aeroporto ou com um hospital caso parasse de funcionar os computadores?

# 2

Introduo
Qual a diferena entre hardware e software? E o que so os computadores sem os softwares? partindo desse idia que a disciplina de Programao de extrema importncia na rea de TI

# 3

Algoritmos - Definio
Algoritmos, de maneira geral, representam um conjunto de passos ou instrues que tm por objetivo resolver um determinado problema Como seria o algoritmo para fritar um ovo? Como seria o algoritmo para trocar um pneu do carro?

# 4

Algoritmos - Definio
Ao criar um software identificamos trs fases distintas
A fase de identificao do problema A fase de resoluo do problema A fase de implementao

# 5

Algoritmos - Definio

# 6

Algoritmos - Definio
Para se adequar a realidade computacional necessrio que a definio de algoritmos seja refinada:
Uma seqncia ordenada de passos finitos, sem ambigidade, que levem soluo de um determinado problema

# 7

Algoritmos - Definio
Como conseqncia dessa definio, o algoritmo possui trs propriedades:
Ter Incio e Fim (um conjunto finito de passos) Seus passos devem ser simples e sem ambigidade Seus passos devem seguir uma seqncia ordenada

# 8

Linguagem de Descrio de Algoritmo (LDA)


Como o prprio nome diz uma linguagem utilizada para descrever um algoritmo Essa linguagem pode ser grfica ou escrita A figura abaixo ilustra uma linguagem grfica

# 9

Linguagem de Descrio de Algoritmo (LDA)

incio/fim

processamento Entrada/Sada
Incio

Deciso

Leia Nota1, Nota2, Nota3

Mdia = (Nota1 + Nota2 + Nota3) / 3

# 10

Linguagem de Descrio de Algoritmo (LDA)


A linguagem grfica no costuma ser utilizada por apresentar os seguintes problemas:
Dificuldade na escrita, entendimento e alteraes Muito distante da realidade computacional (implementao)

A LDA largamente utilizada a escrita (Portugol)

# 11

Portugol - Estrutura
importante ressaltar que no existe um padro em relao a sintaxe a ser seguido pelo Portugol
Ex: A sintaxe na declarao das variveis

A semntica, porm, tem que ser a mesma A seguir ser apresentado a estrutura de um algoritmo em Portugol

# 12

Portugol - Estrutura
Algoritmo Nome_Do_Algoritmo Tem como objetivo identificar o algoritmo, devemos utilizar um Nome_Do_Algoritmo o mais claro possvel, para facilitar a identificao Variveis Declarao das variveis. Devemos aqui, informar quais e os tipos das variveis que sero utilizadas no algoritmo. Incio Corpo do Algoritmo. Aqui ser escrita a sequncia de comandos que devem ser executados para solucionar o referido problema Fim
# 13

Algoritmo - Exemplo
Algoritmo Imprime_Situacao Variaveis Nota1, Nota2, Nota3: Inteiro Media: Real Incio Leia (Nota1, Nota2, Nota3) Media <- (Nota1 + Nota2 + Nota3) / 3 Se Media >= 5 Ento Imprima (Aprovado) Seno Imprima (Reprovado) Fim

# 14

Algoritmo - Tipos de Dados Primitivos


Os dados, ao serem manipulados pelo computador, precisam ter um tipo associado a ele Os tipos primitivos so os tipos que so nativos da linguagem de programao Veremos mais adiante que podemos criar os nossos prprios tipos

# 15

Algoritmo - Tipos de Dados Primitivos


Existem quatro tipos primitivos de dados:
Inteiro: Toda e qualquer informao que pertena ao conjunto dos nmeros inteiros Real: Toda e qualquer informao que pertena ao conjunto dos nmeros reais Caracter: Toda e qualquer informao composta por uma seqncia de caracterer alfa numricos(a, b, c,...z, A, B, C, ...Z) e especiais (#,@,!,?)
Uma cadeia de caracter deve ser indicada entre aspas

# 16

Algoritmo - Tipos de Dados Primitivos


Lgico: Toda e qualquer informao representada por apenas dois valores (Verdade ou Falso)
Esse tipo ser muito utilizado para testar alguma condio

# 17

Algoritmo - Tipos de Dados Primitivos


Quais so os tipo para os dados abaixo? 1) 1000 2) 0 3) -900 4) VERDADE 5) -456 3) -2,3 4) !#Casa 5) FALSO

# 18

Algoritmo - Identificadores
Representam os nomes escolhidos para rotular as variveis, procedimentos, funes, nomes de programas As caractersticas desses identificadores so:
1. O primeiro caracter deve ser uma letra 2. Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto:{a,b,c,..z,A,B,C,...Z,0,1,2,...,9,_}

# 19

Algoritmo - Identificadores
3. No deve haver espao em branco 4. No deve haver identificadores repetidos 5. No existe distino de maisculas e minsculas; 6. Os nomes escolhidos devem ser claros a fim de explicitar seu contedo uso, mas tambm no deve ser extenso para no dificultar a escrita

# 20

Algoritmo - Identificadores
Quais desses so Identificadores?
1)Endereo 4)NOME_USUARIO 2)21BRASIL 5)USUARIO6 3)FONESE$COM 6)NOME*SEXO

# 21

Algoritmo - Variveis
So as unidades bsicas de armazenamento das informaes em programao As variveis representam espaos onde podemos armazenar e manipular dados Para cada varivel necessrio ter um valor associado a ela

# 22

Algoritmo - Variveis
As variveis devem ser declaradas da seguinte forma:
Variaveis
X, Num : Inteiro; Nome, Endereo: Caracter; Nota, Peso: Real; Resposta : Lgico;

# 23

Algoritmo - Constantes
So usadas em expresses para atribuir valores a variveis ou em comandos Seus valores sero sempre os mesmos, ou seja, uma vez declarado, o seu valor no se altera mais durante o algoritmo

# 24

Algoritmo - Constantes
Existem trs tipos de constantes:
Numrica Lgica Caracter

# 25

Algoritmo - Constantes
As constantes devem ser declaradas da seguinte forma:
Constantes Pi = 3,14 Variaveis
X, Num : Inteiro; Nome, Endereo: Caracter; Nota, Peso: Real; Resposta : Lgico;

# 26

Algoritmos - Operaes
Para solucionar alguns problemas computacionalmente ser necessrio a utilizao de alguns operaes Temos quatro tipos de operaes:
Operao de Atribuio Operao Aritmtica Operao Relacional Operao Lgica

# 27

Algoritmos Operao de Atribuio


Tem como finalidade armazenar um valor, varivel ou expresso na varivel necessrio que o tipo do valor, varivel ou expresso seja compatvel com o tipo da varivel

# 28

Algoritmos Operao de Atribuio


A sintaxe de uma operao de atribuio a seguinte:
NomeDaVariavel <- Valor, Varivel ou Expresso

Ex: Media <- 7


Delta <- X Soma <- X + Y

# 29

Algoritmos Operao Aritmtica


So utilizados em expresses para realizar operaes aritmticas com variveis Os operadores e funes recebem argumentos (parmetros) e retornam um resultado, o qual pode ser atribudo a uma varivel ou utilizado numa expresso

Os operadores so representados por smbolos e as funes por palavras

# 30

Algoritmos Operao Aritmtica

# 31

Algoritmos Operao Aritmtica


Ex: Suponha que A=6, B=1 e C= 16 , ento: A <- A + B + 14 = ? B <- C * B = ? A <- Resto(C,A) = ? A <- Quociente (C,A) = ?

# 32

Algoritmos Operao Relacional


So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdade ou Falso)

# 33

Algoritmos Operao Relacional


Ex: Suponha que A = 1 e B = 6, ento: A>B=? A >= B = ? A=B=? A<B=?

# 34

Algoritmos Operao Lgica


So utilizadas para avaliar expresses lgicas Uma expresso lgica representa a unio de operaes relacionais Uma operao lgica permite que o resultado de vrias expresses relacionais seja transformado em um nico resultado lgico

# 35

Algoritmos Operao Lgica


Os operadores lgicos so:
E (Conjuno) OU (Disjuno) NO (Negao)

# 36

Algoritmos Prioridade de Operadores


Durante a execuo de uma expresso que envolve vrios operadores, necessrio a existncia de prioridades Caso no exista essa prioridade entre operadores possvel obter valores no condizentes com a realidade

# 37

Algoritmos Prioridade de Operadores

# 38

Comandos de Entrada e Sada


O comando de entrada utilizado para que se possa ler um determinado dado do meio externo Esse dado geralmente passado pelo usurio atravs do teclado ou de outros dispositivos de entrada Esses dados lidos sero armazenados na memria do computador atravs das variveis
# 39

Comandos de Entrada e Sada


A sintaxe para ler um dado mostrada abaixo:
Leia( Varivel )
Ex: Leia(N1)

O comando de sada utilizado para permitir que se possa escrever algo na tela do computador
Ex: Um resultado, uma mensagem de erro, etc.

# 40

Comandos de Entrada e Sada


A sintaxe do comando de sada mostrada abaixo:
Escreva ( expresso )
A expresso mostrada acima pode ser uma varivel ou uma cadeia de caracteres, como mostrado nos exemplos abaixo: Ex1: Escreva(V1) Ex2: Escreva(Entre com o primeiro numero: )

# 41

Comandos de Controle
So os comandos utilizados nos algoritmos para ajudar a solucionar o problema em questo So trs os comandos de controles conhecidos e utilizados na programao:
Seqncia Seleo Repetio (Para Faa, Enquanto e Repita)

# 42

Seqncia
Utilizado para executar comandos passo a passo, na qual todos os comandos sero executados nas ordem escrita sem desvio Pode possuir um ou mais comandos
Quando tiver mais de um comando, identificar pelos identificadores Incio e Fim (Obrigatrio) Quando tiver apenas um comando, o uso do Inicio e Fim condicional

# 43

Seqncia
Importante a endentao dos comandos (recuo para direita) e tambm a linha indicando o incio e fim
Lembrar que o programa no ser mantido apenas por voc, outras pessoas iro tambm dar manuteno nele

# 44

Seleo
Usado para fazer comparaes e simular uma deciso no fluxo do algoritmo Usado para tomar decises, ou seja, desviar a condio do algoritmo de acordo com uma condio

# 45

Seleo
O comando de seleo pode ser de dois tipos:
Simples Composto

A sintaxe do comando simples mostrada abaixo:


SE (Expresso Lgica) ENTAO

Sequencia

# 46

Seleo

# 47

Seleo
A sintaxe do comando composto mostrada abaixo:
SE (Expresso Lgica) ENTAO Sequencia 1 SENAO Sequencia 2

# 48

Seleo

# 49

Comando de Seleo Aninhado


possvel ter casos em que seja necessrio a utilizao de um comando de seleo dentro de outro comando de seleo O comando de seleo aninhado permiti a avaliao de diversas condies para os possveis valores de um dado conjunto de variveis

# 50

Comando de Seleo Aninhado


Abaixo segue um exemplo de um trecho de um cdigo utilizando comando de seleo aninhado:
Se Num1 > Num2 Entao Escreva(O maior nmero : , Num1) Senao Se Num1 < Num2 Entao Escreva(O maior nmero : , Num2) Senao Escreva(Os nmeros so iguais)

# 51

Comandos de Repetio
Existem situaes em que processar um nico valor no satisfaz o problema Os comandos de repetio so comandos que permitem efetuar um conjunto de aes repetidas vezes

# 52

Comandos de Repetio
Como fazer para imprimir um nmero de 1 1000 ou para imprimir todos os alunos de uma turma? Para resolver esses tipos de problema necessrio a utilizao dos comandos de repetio

# 53

Comandos de Repetio
Os comandos de repetio frequentemente utilizados so:
Para Faa Enquanto Faa Repita At

Os comandos de repetio tambm so conhecidos como laos (loops)

# 54

Comandos de Repetio Para Faa


Permite que um bloco de comandos seja repetido um nmero de vezes especfico A sintaxe do comando mostrada abaixo
PARA varivel_controle comando1 comando2 comando 3 valor_inicial ATE valor_final FACA

. . .
FIM PARA

# 55

Comandos de Repetio Para Faa


Varivel_controle: a varivel que ser incrementada ou decrementada a partir de um valor inicial previamente estabelecido. Valor_inicial: primeiro valor que a varivel_controle ir assumir Valor_final: valor limite que a varivel_controle poder assumir
# 56

Comandos de Repetio Enquanto Faa


Executa um bloco de comandos vria vezes at que uma condio no seja satisfeita Sua sintaxe a mostrada abaixo:
ENQUANTO condicao FACA comando1 comando2 comando3

. . .
FIM ENQUANTO

# 57

Comandos de Repetio Enquanto Faa


O comando Enquanto funciona da seguinte forma:
testada a condio (Resultado s pode ter dois valores: Verdade ou Falso). Se for Verdade, os comandos do enquanto so executados Quando o compilador encontra o Fim do Enquanto ele testa novamente a condio Se a condio for verdade ele executa novamente os comandos dentro do Enquanto. Se for Falso, ele sai do Enquanto

# 58

Comandos de Repetio Enquanto Faa


Pode se utilizar o comando Enquanto basicamente de trs maneiras:
Utilizando um Contador:
Simula o comando Para Faa Uma varivel (contador) utilizada para contar quantas vezes o bloco de comando do enquanto foi executado Esta varivel far parte da condio Ex: Ler o saldo de 5 contas bancrias

# 59

Comandos de Repetio Enquanto Faa


Utilizando um Flag:
Diferente do contador na qual se sabe quantas vezes ser processado um determinado comando, o flag no se sabe e no importa quantas vezes ser processado os comandos utilizado quando no se sabe o nmero de vezes que haver dados de entrada O Flag deve ser um valor absurdo e que seja do mesmo tipo dos dados a serem lidos Ex: Ler o salrio dos empregados de uma empresa e calcular a mdia salarial desta empresa.(O programa dever sair quando o salrio for igual a -1)

# 60

Comandos de Repetio Enquanto Faa


Utilizando uma varivel do Tipo Lgico:
criado uma varivel do Tipo Lgico para fazer parte da condio do Enquanto preciso inicializar essa varivel antes do comando Enquanto e alterar o seu valor dentro do prprio comando para que o mesmo no entre em um Loop Infinito Ex: Ler o salrio dos empregados de uma empresa. Quando for encontrado um salrio maior igual a 10.000, o programa dever calcular a media salarial desta empresa e depois finalizar a sua execuo.

# 61

Repita At
Tem a mesma caracterstica do comando Enquanto Faca A diferena bsica que no comando Repita os comandos so executados antes de verificar a condio

# 62

Repita At
Outra diferena que no Enquanto os comandos so executados at que a condio se torne Falsa
No Repita, os comandos so executados at que a condio se torne Verdade.

# 63

Repita At
A sintaxe do comando Repita..Ate :
REPITA comando1 comando2 comando3 ATE condicao

# 64

Repita At
O Comando Repita At funciona da seguinte forma:
Executa os comandos um a um dentro do comando Repita Ao final, testa a condio Se for Verdade, ele continua o fluxo do programa normalmente Caso seja Falso, ele volta ao Repita e executa novamente o bloco de comandos dentro do Repita

# 65

FIM!
# 66