Vous êtes sur la page 1sur 42

Teoria da Computao e

Algoritmos
Introduo Lgica
de Programao
Prof. Giuliano Prado de Morais Giglio, M.Sc.
O que lgica de programao?
n A lgica de programao necessria para
pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas,
pois ela permite definir a seqncia lgica
para o desenvolvimento.
n Ento o que lgica?
n Lgica de programao a tcnica de encadear
pensamentos para atingir determinado objetivo.
Seqncia Lgica
n Estes pensamentos, podem ser descritos
como uma seqncia de instrues, que
devem ser seguidas para se cumprir uma
determinada tarefa.
n Seqncia Lgica so passos executados at
atingir um objetivo ou soluo de um
problema.
Instrues
n Na linguagem comum, entende-se por instrues um
conjunto de regras ou normas definidas para a realizao
ou emprego de algo.
n Em informtica, porm, instruo a informao que indica a um
computador uma ao elementar a executar.
n Uma ordem isolada no permite realizar o processo
completo, para isso necessrio um conjunto de instrues
colocadas em ordem seqencial lgica.
n Por exemplo, se quisermos fazer uma omelete de batatas,
precisaremos colocar em prtica uma srie de instrues: descascar
as batatas, bater os ovos, fritar as batatas, etc...
Instrues
n evidente que essas instrues tem que ser
executadas em uma ordem adequada no se
pode descascar as batatas depois de frit-las.
n Dessa maneira, uma instruo tomada em
separado no tem muito sentido; para obtermos o
resultado, precisamos colocar em prtica o
conjunto de todas as instrues, na ordem correta.
n Instrues so um conjunto de regras ou normas
definidas para a realizao ou emprego de algo.
Em informtica, o que indica a um computador
uma ao elementar a executar.
Exemplos de Seqncias Lgicas
n Chupar uma bala.
n Pegar a bala
n Retirar o papel
n Chupar a bala
n Jogar o papel no lixo
n Somar dois nmeros quaisquer.
n Escreva o primeiro nmero no retngulo A
n Escreva o segundo nmero no retngulo B
n Some o nmero do retngulo A com nmero do
retngulo B e coloque o resultado no retngulo C
n FAZER: Seqncia de tomar banho;
n Seqncia de trocar 4 pneus de um automvel;
Teoria da Computao e
Algoritmos
Introduo aos
Algoritmos
Prof. Giuliano Prado de Morais Giglio, M.Sc.
Introduo
n O uso de algoritmos surgiu como uma forma de
indicar o caminho para a soluo dos mais
variados problemas.
n Dado um problema, as principais funes de um
programador so:
n Entender perfeitamente o problema
n Escolher mtodos para sua soluo
n Desenvolver um algoritmo baseado nos mtodos
n Codificar o algoritmo na linguagem de programao
disponvel
Definio
n Fazemos uso constantemente de algoritmos em
nosso cotidiano: a maneira como uma pessoa toma
banho um algoritmo.
n Outros algoritmos freqentemente encontrados so:
n instrues para se utilizar um aparelho eletrodomstico;
n uma receita para preparo de algum prato;
n guia de preenchimento para declarao do imposto de
renda;
n a regra para determinao de mximos e mnimos de
funes por derivadas sucessivas;
n a maneira como as contas de gua, luz e telefone so
calculadas mensalmente; etc.
Uma Definio Formal
n Um Algoritmo uma seqncia de instrues
ordenadas de forma lgica para a resoluo de uma
determinada tarefa ou problema.
n Um algoritmo um conjunto finito de instrues que, se
seguidas, realizam uma determinada tarefa.
n Alm disso, todo algoritmo deve satisfazer:
n Entrada - zero ou mais valores de entrada
n Sada - pelo menos um valor deve ser produzido
n Clareza - toda instruo deve ser clara e no ambgua
n Trmino - o algoritmo deve terminar aps um n finito de passos
Exemplo de Algoritmo
No-Computacional
n Problema: Usar um telefone pblico.
Incio
1. Tirar o fone do gancho;
2. Ouvir o sinal de linha;
3. Introduzir o carto;
4. Teclar o nmero desejado;
5. Se der o sinal de chamar
5.1 Conversar;
5.2 Desligar;
5.3 Retirar o carto;
6. Seno
6.1 Repetir;
Fim.
Desvio
Seqencial
Importncia
n A importncia do algoritmo est no fato de termos que
especificar uma seqncia de passos lgicos para que o
computador possa executar uma tarefa qualquer, pois o
mesmo por si s no tem vontade prpria, faz apenas o que
mandamos.
n Com uma ferramenta algortmica, podemos conceber uma
soluo para um dado problema, independendo de uma
linguagem especfica e at mesmo do prprio computador.
Caractersticas
n Todo algoritmo deve apresentar algumas
caractersticas bsicas:
ter fim;
no dar margem dupla interpretao (no ambguo);
capacidade de receber dado(s) de entrada do mundo
exterior;
poder gerar informaes de sada para o mundo
externo ao do ambiente do algoritmo;
ser efetivo (todas as etapas especificadas no algoritmo
devem ser alcanveis em um tempo finito).
Formas de Representao
Descrio Narrativa
n Faz-se uso do portugus para descrever algoritmos.
n EXEMPLO:
Receita de Bolo:
n Providencie manteiga, ovos, 2 Kg de massa, etc.
n Misture os ingredientes
n Despeje a mistura na frma de bolo
n Leve a frma ao forno
n Espere 20 minutos
n Retire a frma do forno
n Deixe esfriar
n Prove
Formas de Representao
Descrio Narrativa
n VANTAGENS:
n o portugus bastante conhecido por ns;
n DESVANTAGENS:
n impreciso;
n pouca confiabilidade (a impreciso acarreta a
desconfiana);
n extenso (normalmente, escreve-se muito para dizer
pouca coisa).
Formas de Representao
Linguagem Algortmica ou Pseudo-Linguagem
n Esta forma de representao de algoritmos, tambm
conhecida como pseudocdigo, portugus estruturado
ou portugol, bastante rica em detalhes e, por
assemelhar-se bastante forma em que os programas so
escritos, encontra muita aceitao, sendo portanto a forma
de representao de algoritmos que ser adotada nesta
disciplina.
n Esta representao suficientemente geral para permitir
que a traduo de um algoritmo nela representado para
uma linguagem de programao especfica seja
praticamente direta.
Formas de Representao
Linguagem Algortmica
n Consiste na definio de uma pseudolinguagem de
programao, cujos comandos so em portugus, para
representar algoritmos.
n Os algoritmos so descritos em uma linguagem chamada
pseudocdigo.
n Este nome uma aluso posterior implementao em uma
linguagem de programao, ou seja, quando formos programar em
uma linguagem, por exemplo PASCAL, estaremos gerando cdigo
em PASCAL.
n Por isso os algoritmos so independentes das linguagens de
programao. Ao contrrio de uma linguagem de
programao no existe um formalismo rgido de como
deve ser escrito o algoritmo.
Formas de Representao
Linguagem Algortmica
n O algoritmo deve ser fcil de se interpretar e fcil de codificar. Ou
seja, ele deve ser o intermedirio entre a linguagem falada e a
linguagem de programao.
EXEMPLO:
Algoritmo CALCULA_DOBRO
incio
Leia NUM
DOBRO 2 * NUM
Escreva DOBRO
fim
Formas de Representao
Linguagem Algortmica
n VANTAGENS:
n Independncia fsica da soluo (soluo lgica apenas);
n Usa o portugus como base;
n Pode-se definir quais e como os dados vo estar estruturados;
n Passagem quase imediata do algoritmo para uma linguagem de
programao qualquer.
n DESVANTAGENS:
n Exige a definio de uma linguagem no real para trabalho;
n No padronizado.
Comandos
n Um algoritmo possui carter imperativo, razo pela
qual uma ao em um algoritmo chamada de
comando.
n Ex.: algoritmo para descascar batatas para o
jantar:
n traga a cesta com batatas do poro ;
n traga a panela do armrio ;
n descasque as batatas ;
n devolva a cesta ao poro ;
Estados de um algoritmo
n Um algoritmo (ou programa) apresenta dois
aspectos complementares:
n Aspecto esttico: a representao concreta do
algoritmo atravs de um texto contendo comandos que
devem ser executados numa ordem prescrita
(atemporal).
n Aspecto dinmico: que a execuo do algoritmo no
tempo.
n O problema central da computao consiste em
relacionar esses dois aspectos, isto , consiste no
entendimento (visualizao) das estruturas
dinmicas das possveis execues do algoritmo a
partir da estrutura esttica do seu texto.
Escrita de algoritmos
n A generalizao do algoritmo para descascar batatas para
o jantar pode ser:
n traga a cesta com batatas do poro ;
n traga a panela do armrio ;
n se saia clara ento coloque avental ;
n enquanto nmero de batatas insuficiente faa
n descasque uma batata ;
n devolva a cesta ao poro ;
n Um algoritmo deve ser determinstico, isto , dadas as
mesmas condies iniciais, deve produzir em sua
execuo, os mesmos resultados.
n S interessam os algoritmos executveis em tempo finito.
O que um programa?
Os programas de computadores nada mais so do que
algoritmos escritos numa linguagem de computador
e que so interpretados e executados por uma
mquina, no caso um computador. Dada esta
interpretao rigorosa, um programa por natureza
muito especfico e rgido em relao aos algoritmos
da vida real.
O que uma linguagem de
programao?
n So Softwares que permitem o desenvolvimento de
programas. Possuem um poder de criao ilimitado,
desde jogos, editores de texto, sistemas
empresariais at sistemas operacionais.
n Existem vrias linguagens de programao, cada
uma com suas caractersticas prprias.
n Exemplos: Pascal, Clipper, C, C++, Visual Basic,
Delphi, Java e etc.
Fases de um Algoritmo
n Ao montar um algoritmo, precisamos primeiro dividir
o problema apresentado em trs fases
fundamentais.
n Onde temos:
n ENTRADA: So os dados de entrada do algoritmo
n PROCESSAMENTO: So os procedimentos utilizados para
chegar ao resultado final
n SADA: So os dados j processados
Entrada
Processamento
Sada
Fases de um Algoritmo
n 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 situao atual e verificar quais a(s) forma(s)
de resolver o problema.
c) Terminada a fase de estudo, utilizar uma linguagem de
programao para escrever o programa que dever a princpio,
resolver o problema.
d) Analisar junto aos usurios se o problema foi resolvido. Se a
soluo no foi encontrada, dever ser retornado para a fase de
estudo para descobrir onde est a falha.
Estrutura de um Algoritmo
n Os algoritmos tero a seguinte estrutura:
ALGORITMO <Nome do algoritmo>
<definies>
INCIO
<Comandos>
FIM.
Regras para se escrever um
Algoritmo
n Para escrever um algoritmo precisamos descrever a
seqncia de instrues, de maneira simples e
objetiva.
n Para isso utilizaremos algumas tcnicas:
n Usar somente um verbo por frase;
n Imaginar que voc est desenvolvendo um algoritmo para
pessoas que no trabalham com informtica;
n Usar frases curtas e simples;
n Ser objetivo;
n Procurar usar palavras que no tenham sentido dbio.
O Aprendizado de Algoritmos
n Algoritmos no se aprende:
E Copiando Algoritmos
E Estudando Algoritmos
n Algoritmos s se aprendem:
E Construindo Algoritmos
E Testando Algoritmos.
Teoria da Computao e
Algoritmos
Estruturas de
Implementao de
Algoritmos
Prof. Giuliano Prado de Morais Giglio, M.Sc.
Teoria da Computao e
Algoritmos
Variveis e
Tipos de Dados
Prof. Giuliano Prado de Morais Giglio, M.Sc.
Conceito de Variveis
n Sabe-se da Matemtica que uma varivel a
representao simblica dos elementos de um certo
conjunto.
n Nos algoritmos destinados a resolver um problema
no computador, a cada varivel corresponde uma
posio de memria, cujo contedo pode variar ao
longo do tempo durante a execuo de um
algoritmo. Embora a varivel possa assumir
diferentes valores, ela s pode armazenar um valor a
cada instante.
Conceito de Variveis
n Toda varivel identificada por um nome ou identificador.
n Exemplo: num algoritmo para calcular a rea de um tringulo retngulo
pelo teorema de pitgoras (a
2
= b
2
+ c
2
), os identificadores A, B e C
podem representar as posies de memria que armazenam o
valor da hipotenusa e dos catetos.
n Nunca usar uma palavra reservada (que faa parte da linguagem
algortmica) poder causar ambigidade no entendimento do
algoritmo.
n Na nossa linguagem algortmica, vamos admitir que nossas
variveis podero armazenar valores numricos ou alfanumricos
(strings).
Operao de Atribuio
n A operao de atribuio permite que se fornea um valor
a uma certa varivel.
n Se for atribudo uma expresso varivel, ser armazenado
o resultado daquela expresso.
n Se for atribudo uma outra varivel, ser armazenado o
contedo daquela varivel.
n Para a operao de atribuio, utilizaremos a seguinte
sintaxe:
varivel expresso
n Exemplos:
X 2.5 NOTA NOTA - 1 A B + C
C 1 / 3 SENHA 'X3Y9' NOME 'Joo'
NOTA 10 B A A 2
Identificadores
n So os nomes dados a variveis, constantes e
programas.
n Regras Para construo de Identificadores:
n No podem ter nomes de palavras reservadas (comandos da
linguagem);
n Devem possuir como 1 caractere uma letra ou Underscore ( _ );
n Ter como demais caracteres letras, nmeros ou Underscore;
n Ter no mximo 127 caracteres;
n No possuir espaos em branco;
n A escolha de letras maisculas ou minsculas indiferente.
n Exemplos:
n Nome, Telefone, Nota1, Salario, Idade_Filho, PI.
Tipos de Dados
n No momento que formos trabalhar com variveis,
indiquemos o tipo de informao que uma varivel
pode conter, isto , se uma dada posio de
memria armazenar um nmero ou uma letra etc.
n O Tipo de dado podem ser:
n Primitivo = Pr-definido pela linguagem;
n Sub-Faixa = uma parte de um tipo j existente;
n Definido pelo usurio (Escalar) = Definidos pelo
programador.
Tipos de Dados
Tipos de Dados
CHAR(Caracter) e STRING(Cadeia)
n As definies de variveis como sendo do tipo CHAR e STRING, possuem
algumas curiosidades que merecem um cuidado especial por parte do usurio.
n Uso das aspas ():
n Atribuio de um valor para uma varivel do tipo CHAR (Caracter) ou STRING
(Cadeia) colocar o valor ( dado ) entre aspas ( ), pois esta a forma de
informar que a informao caracter.
n Exemplo:
ALGORITMO Teste
VARIVEIS
Letra : CARACTER
Nome : CADEIA
INICIO
Letra A;
Nome Joo;
FIM
Declarao de Variveis
Linearizao de Expresses
n Para a construo de Algoritmos todas as expresses
aritmticas devem ser linearizadas, ou seja, colocadas
em linhas.
n importante tambm ressalvar o uso dos operadores
correspondentes da aritmtica tradicional para a
computacional.
Modularizao de Expresses
n A modularizao a diviso da expresso em partes,
proporcionando maior compreenso e definindo
prioridades para resoluo da mesma.
n Como pode ser observado no exemplo anterior, em
expresses computacionais usamos somente
parnteses ( ) para modularizao.
n Na informtica podemos ter parnteses dentro de
parnteses.
n Exemplos de prioridades:
n (2+2)/2=2
n 2+2/2=3
Operao de Entrada e Sada
n Os clculos do computador so de pouco valor a
no ser que, primeiro, possamos fornecer os
dados sobre os quais estes clculos sero
efetuados e, segundo, ver os resultados destes
clculos.
n Definimos aqui dois novos comandos da nossa
linguagem algortmica para manusear entrada e
sada.
n O comando leia nos permite ler valores dados
atribuindo-os variveis indicadas;
n o comando escreva nos permite mostrar os resultados.
Operao de Entrada e Sada
n A entrada pode vir do teclado ou de qualquer outro dispositivo
de entrada.
n A sada pode aparecer na tela do monitor de vdeo ou ser
impressa em papel.
n Caso deseja-se imprimir o resultado, usa-se o comando
imprima
n A sintaxe destes comandos so:
leia (varivel-1, varivel-2, ..., varivel-n)
escreva (expresso-1, expresso-2, ..., expresso-n)
n Exemplos:
Imprima (Result) Escreva (A,B) Leia (Nome)
Imprima (Tel) Escreva (Nota + 2) Leia (A,B,C)
Imprima (Nota) Escreva (15) Leia (Nota)
Operadores
Aritmticos e Relacionais
/ Diviso
** Exponenciao
Operador Operao
* Multiplicao
- Subtrao
+ Adio
< = Menor ou igual
<> Diferente
Operador Operao
= Igual
<= Maior ou igual
< Menor que
> Maior que
Aritmticos Relacionais
Operadores Lgicos
n Os operadores lgicos servem para combinar
resultados de expresses, retornando se o resultado
final verdadeiro ou falso.
n Os operadores lgicos so:
n E (AND) = Uma expresso E verdadeira se todas as condies
forem verdadeiras
n OU (OR) = Uma expresso OU verdadeira se pelo menos uma
condio for verdadeira
n NO (NOT) = Um expresso NO inverte o valor da expresso ou
condio, se verdadeira inverte para falsa e vice-versa.
Operadores Lgicos
- Tabela Verdade -
Operadores Lgicos
n Exemplos:
n Suponha que temos trs variveis A = 5, B = 8 e C =1
n Os resultados das expresses seriam:
Falso NO A <= B
Falso B = C OU A >= B
Verdadeiro B > C E A < B
Verdadeiro NO A > B
Verdadeiro B < C OU A <> B
Falso B > C E A = B
Resultado Expresses
Operadores Especiais
(Mod e Div)
n MOD : Retorna o resto da diviso entre 2 nmeros inteiros.
n DIV : Retorna o valor inteiro que resulta da diviso entre 2
nmeros inteiros.
Teoria da Computao e
Algoritmos
Mtodo para montagem
de Algoritmos
Prof. Giuliano Prado de Morais Giglio, M.Sc.
Refinamentos Sucessivos
n Um algoritmo considerado completo se os seus comandos forem do
entendimento do seu destinatrio.
n Num algoritmo, um comando que no for do entendimento do
destinatrio ter que ser desdobrado em novos comandos, que
constituiro um refinamento do comando inicial, e assim
sucessivamente, at que os comandos sejam entendidos pelo
destinatrio.
n Por exemplo, o algoritmo para calcular a mdia aritmtica de dois
nmeros pode ser escrito da seguinte forma:
Algoritmo CALCULA_MDIA
Incio
Receba os dois nmeros;
Calcule a mdia dos dois nmeros;
Exiba o resultado;
Fim
Refinamentos Sucessivos
n Podemos desdobrar o comando Calcule a mdia dos
dois nmeros em:
Soma os dois nmeros;
Divida o resultado por 2;
n Aps esse refinamento, o algoritmo pode ser
considerado completo, a menos que o destinatrio
no saiba fazer as operaes de adio e diviso, ou
no seja capaz de entender diretamente algum
comando.
Refinamentos Sucessivos
n O algoritmo estando completo, podemos reescrev-
lo, inserindo o refinamento na posio do comando
que foi refinado. Assim sendo, obtm-se:
Algoritmo CALCULA_MDIA
Incio
Receba os dois nmeros;
Soma os dois nmeros;
Divida o resultado por 2;
Exiba o resultado;
Fim.
Refinamentos Sucessivos
n Reescrever um algoritmo completo, com os
refinamentos sucessivos inseridos nos seus devidos
lugares, permite ter uma viso global de como o
algoritmo deve ser executado.
n medida que o algoritmo passa a ser maior e mais
complexo, esta viso global torna-se menos clara e,
neste caso, um algoritmo apresentado com os
refinamentos sucessivos separados oferece uma
melhor abordagem para quem precisar entend-lo.
Teoria da Computao e
Algoritmos
Estruturas de deciso e
repetio
Prof. Giuliano Prado de Morais Giglio, M.Sc.
Estrutura Seqencial
n Num algoritmo, os comandos devero ser executados numa seqncia linear,
seguindo-se o texto em que esto escritos, de cima para baixo, se no houver
indicao em contrrio.
Linguagem Algortmica:
inicio
comando-1;
comando-2;
. . .
comando-n;
Fim.
n Exemplo:
incio
leia A,B;
SOMA A + B;
escreva SOMA;
Fim.
Estrutura Condicional
(Se .. ento)
n A estrutura condicional permite a escolha do grupo de aes e estruturas a ser
executado quando determinadas condies (expresses lgicas) so ou no
satisfeitas. Esta estrutura pode se apresentar de duas formas:
n ESTRUTURA CONDICIONAL SIMPLES
se condio ento
comando-1;
comando-2;
. . .
comando-n;
fim-se;
n Exemplo:
se MDIA >= 7 ento
SITUAO 'Aprovado';
Escreva (SITUACAO);
fim-se
Estrutura Condicional
( Se .. Ento .. Seno.. )
n ESTRUTURA CONDICIONAL COMPOSTA
se condio ento
comando-A1
comando-A2
. . .
comando-An
seno
comando-B1
comando-B2
. . .
comando-Bn
fim-se;
Exemplo:
. . .
se PESO > 80 ento
escreva 'Voc est obeso'
escreva 'Faa atividades
fsicas'
seno
escreva 'Voc est no
peso certo'
escreva 'Procure manter
sua forma'
. . .
SE .. ENTO Aninhados
n Usados para tomadas de decises para mais de 2
opes.
n Sintaxe:
SE CONDIO ENTO
Comando1;
SENO
SE CONDIO ENTO
Comando2;
SENO Comando3;
SE .. ENTO Aninhados
n Exemplo: Faa um algoritmo para simular uma
calculadora simples. Para isso, seu algoritmo
dever ler dois nmeros inteiros e uma letra,
correspondendo a uma operao matemtica, da
seguinte forma:
n Letra A significa fazer a soma dos dois nmeros
n Letra S significa fazer a subtrao dos dois nmeros
n Letra M significa fazer a multiplicao dos dois
nmeros
n Letra D significa fazer a diviso dos dois nmeros
O algoritmo dever mostrar o resultado da
operao escolhida.
ALGORITMO Calculadora
VAR
total: REAL;
n1, n2: INTEIRO;
opcao: CARACTER;
INICIO
escreva(Digite dois numeros);
leia(n1, n2);
escreva(Escolha a operao: A adio, S subtrao, M multiplicao, D
diviso);
leia(opcao);
se (opcao = A) entao
total <- n1 + n2;
fimse;
se (opcao = S) entao
total <- n1 - n2;
fimse;
se (opcao = M) entao
total <- n1 * n2;
fimse;
se (opcao = D) entao
total <- n1 / n2;
fimse;
escreva(Resposta = , total)
FIM.
Uma soluo
seria ...
SE .. ENTAO Aninhados
n E como podemos solucionar o
problema, evitando que se faa os
demais testes, depois que se
encontra a opo desejada???
SE .. ENTO Aninhados
SE testar a 1 opo ENTO
Comando1;
SENO (h 3 opes restantes)
testar as 3 opes restantes
FIMSE
SE .. ENTO Aninhados
SE testar a 1 opo ENTO
Comando1;
SENO (h 3 opes restantes)
SE testar a 2 opo ENTO
Comando2;
SENO (h 2 opes restantes)
testar as 2 opes restantes
FIMSE
FIMSE
SE .. ENTO Aninhados
SE testar a 1 opo ENTO
Comando1;
SENO
SE testar a 2 opo ENTO
Comando2;
SENO
SE testar a 3 opo ENTO
Comando3;
SENO ( a quarta e ltima opo)
Comando4;
FIMSE
FIMSE
FIMSE
ALGORITMO Calculadora
....
INICIO
escreva(Digite dois numeros);
leia(n1, n2);
escreva(Escolha a operao: A adio, S subtrao, M multiplicao, D
diviso);
leia(opcao);
se (opcao = A) entao
total <- n1 + n2;
senao
se (opcao = S) entao
total <- n1 - n2;
senao
se (opcao = M) entao
total <- n1 * n2;
senao
total <- n1 / n2;
fimse;
fimse;
fimse;
escreva(Resposta = , total)
FIM.
Soluo com
Se .. Entao
Aninhados
Estruturas de Seleo
n A estrutura de condio equivale a um ninho de SEs.
n Sintaxe:
ESCOLHA <expresso> :
CASO 1
Comando A1;
CASO 2
Comando A2;
CASO n
Comando An;
SENO
Comando N;;
FIM-ESCOLHA;
Estruturas de Seleo
Exemplo:
ALGORITMO OpcoesTitulo
VARIVEIS
Titulo: STRING;
Op: INTEIRO;
INICIO
LEIA (OP);
ESCOLHA OP:
CASO 1
TITULO = OPO 1;
CASO 2
TITULO = OPO 2;
CASO 3
TITULO = OPO 3;
CASO 4
TITULO = OPO 4;
CASO 5
TITULO = OPO 5;
SENO
TITULO = OPO ERRADA;
FIM-ESCOLHA;
Estruturas de Seleo
Como ficaria nossa
Calculadora essa estrutura?
ALGORITMO Calculadora
VAR
total: REAL
n1, n2: INTEIRO
opcao: CARACTER
INICIO
LEIA (n1, n2)
LEIA (opcao)
ESCOLHA opcao
CASO A
total <- n1 + n2;
CASO S
total <- n1 - n2;
CASO M
total <- n1 * n2;
CASO D
total <- n1 / n2;
OUTROCASO
escreva(Opo Invlida)
FIMESCOLHA
ESCREVA(Resposta = , total)
FIM.
Estruturas de Repetio
n A estrutura de repetio permite que uma
seqncia de comandos seja executada
repetidamente at que uma determinada condio
no seja satisfeita. Utilizaremos os comandos
abaixo para representar esta estrutura.
n Para..faa
n Enquanto..faa
n Repete..at
Estruturas de Repetio
n Para .. Faa:
n Sua sintaxe :
PARA <Varivel> DE <INICIO> At <FIM>, PASSO <N> FAA
comando-A1;
comando-A2;
. . .
comando-An;
fim-para;
Estruturas de Repetio
n Exemplo ( Para .. Faa ):
Faa um algoritmo para ler e escrever o Nome de 20 pessoas.
ALGORITMO LeEscreve
VARIVEIS
Nome : CADEIA
Cont : INTEIRO
INICIO
PARA Cont DE 1 ATE 20 PASSO 1 FACA
LEIA(Nome);
ESCREVA(Nome);
FIM-PARA;
FIM.
Estruturas de Repetio
n Enquanto .. Faa:
Sua sintaxe :
enquanto condio faa
comando-A1;
comando-A2;
. . .
comando-An;
fimenquanto;
Estruturas de Repetio
Semntica:
Enquanto a condio for verdadeira, a seqncia ser
repetida. Quando a condio fornecer resultado falso, o
controle sai da estrutura passando para o comando
seguinte ao final do bloco.
enquanto condio faa
comando-A1;
comando-A2;
. . .
comando-An;
fimenquanto;
Estruturas de Repetio
Uso de FLAG
n Obs.:
n FLAG um valor especfico fornecido aps o ltimo dado
de entrada, que serve para indicar o fim dos dados de
entrada.
n FLAG somente uma marca de fim dos dados de
entrada (no um dado de entrada) e no pode ser
processado.
n A leitura do FLAG informa ao programa que os dados de
entrada terminaram e que ele deve partir para a
execuo da finalizao de seu processamento (clculos
finais, impresses finais etc.).
Estruturas de Repetio
n Exemplo 1: Uso de FLAG
n Obs.:
n Controle de processamento genrico para uso de FLAG:
...
lela ( o 1 con[unLo de dados ),
enquanLo ( no for lLAC ) faa
processar o con[unLo de dados lldo ,
lela ( o prxlmo con[unLo de dados ),
flmenquanLo
flnallzar processamenLo ,
...
Estruturas de Repetio
n Exemplo 1: Uso de FLAG
Desenvolver um algoritmo para ler uma seqncia
de nmeros inteiros, calcular e imprimir o quadrado
de cada nmero lido. O ltimo valor a ser lido um
FLAG = 0.
Estruturas de Repetio
n Exemplo 1: Algoritmo em pseudolinguagem
!"#$%&'# )*+,'-!#./
01$
nuM, CuAu8AuC : lnLelro,
%2%3%#
!,%1(nuM), // l o 1 con[unLo de dados
,24512&# (nuM <> 0) 6131 // LesLa se no e lLAC
CuAu8AuC <- nuM*nuM,
,73$,01(CuAu8AuC),
!,%1(nuM), // l o prxlmo con[unLo de dados
6%',24512&#
8%'9
Estruturas de Repetio
n Exemplo 1: Teste do Algoritmo
n Considerando que sero fornecidos os seguintes
dados de entrada: 2 -3 1 4 0
n O resultado do teste (teste de mesa) seria:
Estruturas de Repetio
n Exemplo 2: Uso de acumulador
Desenvolver um algoritmo para ler uma seqncia
de nmeros inteiros com FLAG = 0, calcular e
imprimir a soma desses nmeros.
n Importante:
n Uma forma possvel para resolver o problema de
somatrio de valores (acumulador) imaginar uma
varivel que armazena as somas parciais. Essa varivel
deve iniciar com zero e somar nmero por nmero, at o
final da seqncia.
Estruturas de Repetio
n Exemplo 2: Algoritmo em pseudolinguagem
!"#$%&'# )*+,'-!#:/
01$
nuM, SCMA : lnLelro,
%2%3%#
SCMA <- 0, // zera a varlvel soma
!,%1(nuM), // l o 1 con[unLo de dados
,24512&# (nuM <> 0) 6131 // LesLa se no e lLAC
SCMA <- SCMA + nuM, // acumula ao valor de soma o nuM
!,%1(nuM), // l o prxlmo con[unLo de dados
6%',24512&#
,73$,01(SCMA),
8%'9
Estruturas de Repetio
n Exemplo 2: Teste do Algoritmo
Considerando que sero fornecidos os seguintes dados de
entrada: 8 -3 2 1 0
O resultado do teste seria:
Estruturas de Repetio
n Exemplo ( Enquanto .. Faa ):
n Faa um algoritmo para ler e escrever o Nome de 20 pessoas.
ALGORITMO LeEscreve
VARIVEIS
Nome: STRING;
Total: INTEIRO;
INICIO
Total 0;
ENQUANTO (Total < 20) FAA
LEIA(Nome);
ESCREVA ('Nome=', Nome);
Total Total + 1;
FIM-ENQUANTO;
END.
Estruturas de Repetio
n Repita .. At:
n Sua sintaxe :
REPITA
comando-A1;
comando-A2;
. . .
comando-An;
ATE <Condio for verdadeira>
Estruturas de Repetio
n Exemplo ( Repita .. At ):
Faa um algoritmo para ler e escrever o Nome de 20 pessoas.
ALGORITMO LeEscreve
VARIVEIS
Nome: CADEIA
Total: INTEIRO
INICIO
Total 0;
REPITA
LEIA(Nome);
ESCREVA(' Nome= ',Nome);
Total Total + 1;
AT Total >=20;
FIM.