42
Teoria da Computação e Algoritmos Introdução à Lógica de Programação Prof. Giuliano Prado de Morais Giglio, M.Sc. O que é lógica de programação? n A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois ela permite definir a seqüência lógica para o desenvolvimento. n Então o que é lógica? n Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.

apostila algoritmos

Embed Size (px)

Citation preview

Page 1: apostila algoritmos

Teoria da Computação e Algoritmos

Introdução à Lógica de Programação

Prof. Giuliano Prado de Morais Giglio, M.Sc.

O que é lógica de programação?

n A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois ela permite definir a seqüência lógica para o desenvolvimento.

n Então o que é lógica?

n Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.

Page 2: apostila algoritmos

Seqüência Lógica

n Estes pensamentos, podem ser descritos como uma seqüência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa.

n Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema.

Instruçõesn Na linguagem comum, entende-se por instruções “um

conjunto de regras ou normas definidas para a realização ou emprego de algo”.

n Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar.

n Uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica.

n Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc...

Page 3: apostila algoritmos

Instruções

n É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las.

n Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.

n Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.

Exemplos de Seqüências Lógicasn “Chupar uma bala”.

n Pegar a balan Retirar o papeln Chupar a balan Jogar o papel no lixo

n “Somar dois números quaisquer”.n Escreva o primeiro número no retângulo An Escreva o segundo número no retângulo Bn Some o número do retângulo A com número do

retângulo B e coloque o resultado no retângulo Cn FAZER: Seqüência de tomar banho;n Seqüência de trocar 4 pneus de um automóvel;

Page 4: apostila algoritmos

Teoria da Computação e Algoritmos

Introdução aosAlgoritmos

Prof. Giuliano Prado de Morais Giglio, M.Sc.

Introdução

n O uso de algoritmos surgiu como uma forma de indicar o caminho para a solução dos mais variados problemas.

n Dado um problema, as principais funções de um programador são:n Entender perfeitamente o probleman Escolher métodos para sua soluçãon Desenvolver um algoritmo baseado nos métodosn Codificar o algoritmo na linguagem de programação

disponível

Page 5: apostila algoritmos

Definiçãon Fazemos uso constantemente de algoritmos em

nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo.

n Outros algoritmos freqüentemente encontrados são:n instruções para se utilizar um aparelho eletrodoméstico;n uma receita para preparo de algum prato;n guia de preenchimento para declaração do imposto de

renda;n a regra para determinação de máximos e mínimos de

funções por derivadas sucessivas;n a maneira como as contas de água, luz e telefone são

calculadas mensalmente; etc.

Uma Definição Formaln “Um Algoritmo é uma seqüência de instruções

ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.”

n Um algoritmo é um conjunto finito de instruções que, se seguidas, realizam uma determinada tarefa.

n Além disso, todo algoritmo deve satisfazer:

n Entrada - zero ou mais valores de entrada n Saída - pelo menos um valor deve ser produzido n Clareza - toda instrução deve ser clara e não ambígua n Término - o algoritmo deve terminar após um nº finito de passos

Page 6: apostila algoritmos

Exemplo de AlgoritmoNão-Computacional

n Problema: Usar um telefone público.

Início1. Tirar o fone do gancho;2. Ouvir o sinal de linha;

3. Introduzir o cartão;4. Teclar o número desejado;5. Se der o sinal de chamar5.1 Conversar;5.2 Desligar;5.3 Retirar o cartão;

6. Senão6.1 Repetir;

Fim.

DesvioSeqüencial

Importância

n A importância do algoritmo está no fato de termos que especificar uma seqüência de passos lógicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si só não tem vontade própria, faz apenas o que mandamos.

n Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem específica e até mesmo do próprio computador.

Page 7: apostila algoritmos

Característicasn Todo algoritmo deve apresentar algumas

características básicas:

ü ter fim;ü não dar margem à dupla interpretação (não ambíguo);ü capacidade de receber dado(s) de entrada do mundo

exterior; ü poder gerar informações de saída para o mundo

externo ao do ambiente do algoritmo;ü ser efetivo (todas as etapas especificadas no algoritmo

devem ser alcançáveis em um tempo finito).

Formas de RepresentaçãoDescrição Narrativa

n Faz-se uso do português para descrever algoritmos.

n EXEMPLO: Receita de Bolo:

n Providencie manteiga, ovos, 2 Kg de massa, etc. n Misture os ingredientesn Despeje a mistura na fôrma de bolon Leve a fôrma ao fornon Espere 20 minutosn Retire a fôrma do fornon Deixe esfriarn Prove

Page 8: apostila algoritmos

Formas de RepresentaçãoDescrição Narrativa

n VANTAGENS:n o português é bastante conhecido por nós;

n DESVANTAGENS:n imprecisão;n pouca confiabilidade (a imprecisão acarreta a

desconfiança);n extensão (normalmente, escreve-se muito para dizer

pouca coisa).

Formas de RepresentaçãoLinguagem Algorítmica ou Pseudo-Linguagem

n Esta forma de representação de algoritmos, também conhecida como pseudocódigo, português estruturado ou portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação, sendo portanto a forma de representação de algoritmos que será adotada nesta disciplina.

n Esta representação é suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta.

Page 9: apostila algoritmos

Formas de RepresentaçãoLinguagem Algorítmica

n Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos.

n Os algoritmos são descritos em uma linguagem chamada pseudocódigo. n Este nome é uma alusão à posterior implementação em uma

linguagem de programação, ou seja, quando formos programar em uma linguagem, por exemplo PASCAL, estaremos gerando código em PASCAL.

n Por isso os algoritmos são independentes das linguagens de programação. Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo.

Formas de RepresentaçãoLinguagem Algorítmica

n O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação.

EXEMPLO:

Algoritmo CALCULA_DOBROinício

Leia NUMDOBRO ← 2 * NUMEscreva DOBRO

fim

Page 10: apostila algoritmos

Formas de RepresentaçãoLinguagem Algorítmica

n VANTAGENS:n Independência física da solução (solução lógica apenas); n Usa o português como base;n Pode-se definir quais e como os dados vão estar estruturados;n Passagem quase imediata do algoritmo para uma linguagem de

programação qualquer.

n DESVANTAGENS:n Exige a definição de uma linguagem não real para trabalho;n Não padronizado.

Comandos

n Um algoritmo possui caráter imperativo, razão pela qual uma ação em um algoritmo é chamada de comando.

n Ex.: algoritmo para descascar batatas para o jantar:n traga a cesta com batatas do porão ;n traga a panela do armário ;n descasque as batatas ;n devolva a cesta ao porão ;

Page 11: apostila algoritmos

Estados de um algoritmon Um algoritmo (ou programa) apresenta dois

aspectos complementares:n Aspecto estático: é a representação concreta do

algoritmo através de um texto contendo comandos que devem ser executados numa ordem prescrita (atemporal).

n Aspecto dinâmico: que é a execução do algoritmo no tempo.

n O problema central da computação consiste em relacionar esses dois aspectos, isto é, consiste no entendimento (visualização) das estruturas dinâmicas das possíveis execuções do algoritmo a partir da estrutura estática do seu texto.

Escrita de algoritmosn A generalização do algoritmo para descascar batatas para

o jantar pode ser:

n traga a cesta com batatas do porão ;n traga a panela do armário ;n se saia é clara então coloque avental ;n enquanto número de batatas é insuficiente faça

n descasque uma batata ;n devolva a cesta ao porão ;

n Um algoritmo deve ser determinístico, isto é, dadas as mesmas condições iniciais, deve produzir em sua execução, os mesmos resultados.

n Só interessam os algoritmos executáveis em tempo finito.

Page 12: apostila algoritmos

O que é um programa?

Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador

e que são interpretados e executados por uma máquina, no caso um computador. Dada esta

interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos

da vida real.

O que é uma linguagem de programação?

n São Softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.

n Existem várias linguagens de programação, cada uma com suas características próprias.

n Exemplos: Pascal, Clipper, C, C++, Visual Basic,Delphi, Java e etc.

Page 13: apostila algoritmos

Fases de um Algoritmon Ao montar um algoritmo, precisamos primeiro dividir

o problema apresentado em três fases fundamentais.

n Onde temos:n ENTRADA: São os dados de entrada do algoritmon PROCESSAMENTO: São os procedimentos utilizados para

chegar ao resultado finaln SAÍDA: São os dados já processados

Entrada Processamento Saída

Fases de um Algoritmon 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 situação atual e verificar quais a(s) forma(s) de resolver o problema.

c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema.

d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha.

Page 14: apostila algoritmos

Estrutura de um Algoritmo

n Os algoritmos terão a seguinte estrutura:

ALGORITMO <Nome do algoritmo><definições>INÍCIO

<Comandos>

FIM.

Regras para se escrever um Algoritmo

n Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objetiva.

n Para isso utilizaremos algumas técnicas:

n Usar somente um verbo por frase;n Imaginar que você está desenvolvendo um algoritmo para

pessoas que não trabalham com informática;n Usar frases curtas e simples;n Ser objetivo;n Procurar usar palavras que não tenham sentido dúbio.

Page 15: apostila algoritmos

O Aprendizado de Algoritmos

n Algoritmos não se aprende:E Copiando AlgoritmosE Estudando Algoritmos

n Algoritmos só se aprendem:E Construindo AlgoritmosE Testando Algoritmos.

Teoria da Computação e Algoritmos

Estruturas de Implementação de

Algoritmos

Prof. Giuliano Prado de Morais Giglio, M.Sc.

Page 16: apostila algoritmos

Teoria da Computação e Algoritmos

Variáveis e Tipos de Dados

Prof. Giuliano Prado de Morais Giglio, M.Sc.

Conceito de Variáveis

n Sabe-se da Matemática que uma variável é a representação simbólica dos elementos de um certo conjunto.

n Nos algoritmos destinados a resolver um problema no computador, a cada variável corresponde uma posição de memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um algoritmo. Embora a variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante.

Page 17: apostila algoritmos

Conceito de Variáveis

n Toda variável é identificada por um nome ou identificador.

n Exemplo: num algoritmo para calcular a área de um triângulo retângulo pelo teorema de pitágoras (a2 = b2 + c2), os identificadores A, B e C podem representar as posições de memória que armazenam o valor da hipotenusa e dos catetos.

n Nunca usar uma palavra reservada (que faça parte da linguagem algorítmica) ⇒ poderá causar ambigüidade no entendimento do algoritmo.

n Na nossa linguagem algorítmica, vamos admitir que nossas variáveis poderão armazenar valores numéricos ou alfanuméricos (strings).

Operação de Atribuição

n A operação de atribuição permite que se forneça um valor a uma certa variável. n Se for atribuído uma expressão à variável, será armazenado

o resultado daquela expressão. n Se for atribuído uma outra variável, será armazenado o

conteúdo daquela variável. n Para a operação de atribuição, utilizaremos a seguinte

sintaxe:variável ← expressão

n Exemplos:

X ← 2.5NOTA ← NOTA - 1A ← B + C

C ← 1 / 3SENHA ← 'X3Y9'NOME ← 'João'NOTA ← 10B ← AA ← 2

Page 18: apostila algoritmos

Identificadores

n São os nomes dados a variáveis, constantes e programas.

n Regras Para construção de Identificadores:n Não 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, números ou Underscore;n Ter no máximo 127 caracteres;n Não possuir espaços em branco;n A escolha de letras maiúsculas ou minúsculas é indiferente.

n Exemplos:n Nome, Telefone, Nota1, Salario, Idade_Filho, PI.

Tipos de Dados

n No momento que formos trabalhar com variáveis, indiquemos o tipo de informação que uma variável pode conter, isto é, se uma dada posição de memória armazenará um número 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 usuário (Escalar) = Definidos pelo

programador.

Page 19: apostila algoritmos

Tipos de Dados

Tipos de DadosCHAR(Caracter) e STRING(Cadeia)

n As definições de variáveis como sendo do tipo CHAR e STRING, possuem algumas curiosidades que merecem um cuidado especial por parte do usuário.

n Uso das aspas (‘):

n Atribuição de um valor para uma variável do tipo CHAR (Caracter) ou STRING (Cadeia) ⇒ colocar o valor ( dado ) entre aspas ( ‘ ), pois esta é a forma de informar que a informação é caracter.

n Exemplo: ALGORITMO TesteVARIÁVEIS

Letra : CARACTERNome : CADEIA

INICIOLetra ← ‘A’;Nome ← ‘João’;

FIM

Page 20: apostila algoritmos

Declaração de Variáveis

Linearização de Expressõesn Para a construção de Algoritmos todas as expressões

aritméticas devem ser linearizadas, ou seja, colocadas em linhas.

n É importante também ressalvar o uso dos operadores correspondentes da aritmética tradicional para a computacional.

Page 21: apostila algoritmos

Modularização de Expressõesn A modularização é a divisão da expressão em partes,

proporcionando maior compreensão e definindo prioridades para resolução da mesma.

n Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente parênteses “( )” para modularização.

n Na informática podemos ter parênteses dentro de parênteses.

n Exemplos de prioridades:n (2+2)/2=2n 2+2/2=3

Operação de Entrada e Saída

n Os cálculos do computador são de pouco valor a não ser que, primeiro, possamos fornecer os dados sobre os quais estes cálculos serão efetuados e, segundo, ver os resultados destes cálculos.

n Definimos aqui dois novos comandos da nossa linguagem algorítmica para manusear entrada e saída. n O comando leia nos permite ler valores dados

atribuindo-os à variáveis indicadas; n o comando escreva nos permite mostrar os resultados.

Page 22: apostila algoritmos

Operação de Entrada e Saídan A entrada pode vir do teclado ou de qualquer outro dispositivo

de entrada. n A saída pode aparecer na tela do monitor de vídeo ou ser

impressa em papel. n Caso deseja-se imprimir o resultado, usa-se o comando

impriman A sintaxe destes comandos são:

leia (variável-1, variável-2, ..., variável-n)escreva (expressão-1, expressão-2, ..., expressão-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 Aritméticos e Relacionais

/Divisão**Exponenciação

OperadorOperação

*Multiplicação-Subtração+Adição

< =Menor ou igual<>Diferente

OperadorOperação

=Igual

<=Maior ou igual<Menor que>Maior que

Aritméticos Relacionais

Page 23: apostila algoritmos

Operadores Lógicos

n Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso.

n Os operadores lógicos são:n E (AND) = Uma expressão E é verdadeira se todas as condições

forem verdadeirasn OU (OR) = Uma expressão OU é verdadeira se pelo menos uma

condição for verdadeiran NÃO (NOT) = Um expressão NÃO inverte o valor da expressão ou

condição, se verdadeira inverte para falsa e vice-versa.

Operadores Lógicos- Tabela Verdade -

Page 24: apostila algoritmos

Operadores Lógicosn Exemplos:

n Suponha que temos três variáveis A = 5, B = 8 e C =1n Os resultados das expressões seriam:

FalsoNÃOA <= B

FalsoB = COUA >= BVerdadeiroB > CEA < BVerdadeiroNÃOA > BVerdadeiroB < COUA <> B

FalsoB > CEA = B

ResultadoExpressões

Operadores Especiais(Mod e Div)

n MOD : Retorna o resto da divisão entre 2 números inteiros.

n DIV : Retorna o valor inteiro que resulta da divisão entre 2 números inteiros.

Page 25: apostila algoritmos

Teoria da Computação e Algoritmos

Método para montagem de Algoritmos

Prof. Giuliano Prado de Morais Giglio, M.Sc.

Refinamentos Sucessivosn Um algoritmo é considerado completo se os seus comandos forem do

entendimento do seu destinatário. n Num algoritmo, um comando que não for do entendimento do

destinatário terá que ser desdobrado em novos comandos, que constituirão um refinamento do comando inicial, e assim sucessivamente, até que os comandos sejam entendidos pelo destinatário.

n Por exemplo, o algoritmo para calcular a média aritmética de dois números pode ser escrito da seguinte forma:

Algoritmo CALCULA_MÉDIAInício

Receba os dois números;Calcule a média dos dois números;Exiba o resultado;

Fim

Page 26: apostila algoritmos

Refinamentos Sucessivosn Podemos desdobrar o comando “Calcule a média dos

dois números” em:

Soma os dois números;Divida o resultado por 2;

n Após esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatário não saiba fazer as operações de adição e divisão, ou não seja capaz de entender diretamente algum comando.

Refinamentos Sucessivosn O algoritmo estando completo, podemos reescrevê-

lo, inserindo o refinamento na posição do comando que foi refinado. Assim sendo, obtém-se:

Algoritmo CALCULA_MÉDIAInício

Receba os dois números;Soma os dois números;Divida o resultado por 2;Exiba o resultado;

Fim.

Page 27: apostila algoritmos

Refinamentos Sucessivos

n Reescrever um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma visão global de como o algoritmo deve ser executado.

n À medida que o algoritmo passa a ser maior e mais complexo, esta visão 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 Computação e Algoritmos

Estruturas de decisão e repetição

Prof. Giuliano Prado de Morais Giglio, M.Sc.

Page 28: apostila algoritmos

Estrutura Seqüencialn Num algoritmo, os comandos deverão ser executados numa seqüência linear,

seguindo-se o texto em que estão escritos, de cima para baixo, se não houver indicação em contrário.

Linguagem Algorítmica: inicio

comando-1;comando-2;. . .comando-n;

Fim.

n Exemplo:início

leia A,B;SOMA ← A + B;escreva SOMA;

Fim.

Estrutura Condicional(Se .. então)

n A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado quando determinadas condições (expressões lógicas) são ou não satisfeitas. Esta estrutura pode se apresentar de duas formas:

n ESTRUTURA CONDICIONAL SIMPLES

se condição entãocomando-1;comando-2;. . .comando-n;

fim-se;n Exemplo:se MÉDIA >= 7 então

SITUAÇÃO ← 'Aprovado';Escreva (SITUACAO);

fim-se

Page 29: apostila algoritmos

Estrutura Condicional( Se .. Então .. Senão.. )

n ESTRUTURA CONDICIONAL COMPOSTA

se condição entãocomando-A1comando-A2. . .comando-An

senãocomando-B1

comando-B2. . .comando-Bn

fim-se;

Exemplo:. . .se PESO > 80 então

escreva 'Você está obeso'escreva 'Faça atividades físicas'

senãoescreva 'Você está no peso certo'escreva 'Procure manter sua forma'

. . .

SE .. ENTÃO Aninhadosn Usados para tomadas de decisões para mais de 2

opções.

n Sintaxe:

SE CONDIÇÃO ENTÃOComando1;

SENÃOSE CONDIÇÃO ENTÃO

Comando2;SENÃO Comando3;

Page 30: apostila algoritmos

SE .. ENTÃO Aninhados

n Exemplo: Faça um algoritmo para simular uma calculadora simples. Para isso, seu algoritmo deverá ler dois números inteiros e uma letra, correspondendo a uma operação matemática, da seguinte forma:n Letra ‘A’ significa fazer a soma dos dois númerosn Letra ‘S’ significa fazer a subtração dos dois númerosn Letra ‘M’ significa fazer a multiplicação dos dois

númerosn Letra ‘D’ significa fazer a divisão dos dois números

O algoritmo deverá mostrar o resultado da operação escolhida.

ALGORITMO “Calculadora”VAR

total: REAL;n1, n2: INTEIRO;opcao: CARACTER;

INICIOescreva(“Digite dois numeros”);leia(n1, n2);escreva(“Escolha a operação: A – adição, S – subtração, M – multiplicação, D –

divisão”);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 solução seria ...

Page 31: apostila algoritmos

SE .. ENTAO Aninhados

n E como podemos solucionar o problema, evitando que se faça os demais testes, depois que se encontra a opção desejada???

SE .. ENTÃO Aninhados

SE “testar a 1ª opção” ENTÃOComando1;

SENÃO (há 3 opções restantes)

“ testar as 3 opções restantes”FIMSE

Page 32: apostila algoritmos

SE .. ENTÃO Aninhados

SE “testar a 1ª opção” ENTÃOComando1;

SENÃO (há 3 opções restantes)SE “testar a 2ª opção” ENTÃO

Comando2;SENÃO (há 2 opções restantes)

“ testar as 2 opções restantes”FIMSE

FIMSE

SE .. ENTÃO AninhadosSE “testar a 1ª opção” ENTÃO

Comando1;SENÃO

SE “testar a 2ª opção” ENTÃOComando2;

SENÃOSE “testar a 3ª opção” ENTÃO

Comando3;

SENÃO (É a quarta e última opção)

Comando4;FIMSE

FIMSEFIMSE

Page 33: apostila algoritmos

ALGORITMO “Calculadora”....

INICIOescreva(“Digite dois numeros”);leia(n1, n2);escreva(“Escolha a operação: A – adição, S – subtração, M – multiplicação, D –

divisão”);leia(opcao);se (opcao = ‘A’) entao

total <- n1 + n2;senao

se (opcao = ‘S’) entaototal <- n1 - n2;

senaose (opcao = ‘M’) entao

total <- n1 * n2;senao

total <- n1 / n2;fimse;

fimse;fimse;escreva(“Resposta = ”, total)

FIM.

Solução com Se .. Entao Aninhados

Estruturas de Seleçãon A estrutura de condição equivale a um ninho de SE’s.

n Sintaxe:

ESCOLHA <expressão> :CASO 1

Comando A1;CASO 2

Comando A2;CASO n

Comando An;SENÃO

Comando N;;FIM-ESCOLHA;

Page 34: apostila algoritmos

Estruturas de Seleção

ØExemplo:

ALGORITMO OpcoesTituloVARIÁVEIS

Titulo: STRING;Op: INTEIRO;

INICIOLEIA (OP);ESCOLHA OP:

CASO 1TITULO = “OPÇÃO 1”;

CASO 2TITULO = “OPÇÃO 2”;

CASO 3TITULO = “OPÇÃO 3”;

CASO 4TITULO = “OPÇÃO 4”;

CASO 5TITULO = “OPÇÃO 5”;

SENÃOTITULO = “OPÇÃO ERRADA”;

FIM-ESCOLHA;

Estruturas de Seleção

ØComo ficaria nossa Calculadora essa estrutura?

ALGORITMO “Calculadora”VAR

total: REALn1, n2: INTEIROopcao: CARACTER

INICIOLEIA (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;

OUTROCASOescreva(“Opção Inválida”)

FIMESCOLHA

ESCREVA(“Resposta = ”, total)FIM.

Page 35: apostila algoritmos

Estruturas de Repetição

n A estrutura de repetição permite que uma seqüência de comandos seja executada repetidamente até que uma determinada condição não seja satisfeita. Utilizaremos os comandos abaixo para representar esta estrutura.

n Para..faça

n Enquanto..faça

n Repete..até

Estruturas de Repetiçãon Para .. Faça:

n Sua sintaxe é:

PARA <Variável> DE <INICIO> Até <FIM>, PASSO <N> FAÇA

comando-A1;comando-A2;. . .comando-An;

fim-para;

Page 36: apostila algoritmos

Estruturas de Repetiçãon Exemplo ( Para .. Faça ):

Faça um algoritmo para ler e escrever o Nome de 20 pessoas.

ALGORITMO LeEscreveVARIÁVEIS

Nome : CADEIACont : INTEIRO

INICIOPARA Cont DE 1 ATE 20 PASSO 1 FACA

LEIA(Nome);ESCREVA(Nome);

FIM-PARA;FIM.

Estruturas de Repetiçãon Enquanto .. Faça:

Sua sintaxe é:

enquanto condição façacomando-A1;comando-A2;. . .comando-An;

fimenquanto;

Page 37: apostila algoritmos

Estruturas de RepetiçãoSemântica:

Enquanto a condição for verdadeira, a seqüência será repetida. Quando a condição fornecer resultado falso, o controle sai da estrutura passando para o comando seguinte ao final do bloco.

enquanto condição façacomando-A1;comando-A2;. . .comando-An;

fimenquanto;

Estruturas de Repetição

Uso de FLAGn Obs.:

n FLAG é um valor específico fornecido após 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 (não é um dado de entrada) e não pode ser processado.

n A leitura do FLAG informa ao programa que os dados de entrada terminaram e que ele deve partir para a execução da finalização de seu processamento (cálculos finais, impressões finais etc.).

Page 38: apostila algoritmos

Estruturas de Repetição

n Exemplo 1: Uso de FLAGn Obs.:

n Controle de processamento genérico para uso de FLAG:...

leia ( o 1º conjunto de dados );

enquanto ( não for FLAG ) faça

processar o conjunto de dados lido ;

leia ( o próximo conjunto de dados );

fimenquanto

finalizar processamento ;

...

Estruturas de Repetição

n Exemplo 1: Uso de FLAG

Desenvolver um algoritmo para ler uma seqüência de números inteiros, calcular e imprimir o quadrado de cada número lido. O último valor a ser lido é um FLAG = 0.

Page 39: apostila algoritmos

Estruturas de Repetiçãon Exemplo 1: Algoritmo em pseudolinguagem

Algoritmo “Exemplo1”var

NUM, QUADRADO : inteiro;inicio

leia(NUM); // lê o 1º conjunto de dadosenquanto (NUM <> 0) faca // testa se não é FLAG

QUADRADO <- NUM*NUM;escreva(QUADRADO);leia(NUM); // lê o próximo conjunto de dados

fimenquantoFim.

Estruturas de Repetição

n Exemplo 1: Teste do Algoritmon Considerando que serão fornecidos os seguintes

dados de entrada: 2 -3 1 4 0n O resultado do teste (teste de mesa) seria:

Page 40: apostila algoritmos

Estruturas de Repetição

n Exemplo 2: Uso de acumuladorDesenvolver um algoritmo para ler uma seqüência de números inteiros com FLAG = 0, calcular e imprimir a soma desses números.

n Importante:n Uma forma possível para resolver o problema de

somatório de valores (acumulador) é imaginar uma variável que armazena as somas parciais. Essa variável deve iniciar com zero e somar número por número, até o final da seqüência.

Estruturas de Repetiçãon Exemplo 2: Algoritmo em pseudolinguagem

Algoritmo “Exemplo2”var

NUM, SOMA : inteiro;inicio

SOMA <- 0; // zera a variável soma leia(NUM); // lê o 1º conjunto de dadosenquanto (NUM <> 0) faca // testa se não é FLAG

SOMA <- SOMA + NUM; // acumula ao valor de soma o NUMleia(NUM); // lê o próximo conjunto de dados

fimenquantoescreva(SOMA);

Fim.

Page 41: apostila algoritmos

Estruturas de Repetição

n Exemplo 2: Teste do AlgoritmoConsiderando que serão fornecidos os seguintes dados de entrada: 8 -3 2 1 0O resultado do teste seria:

Estruturas de Repetiçãon Exemplo ( Enquanto .. Faça ): n Faça um algoritmo para ler e escrever o Nome de 20 pessoas.

ALGORITMO LeEscreveVARIÁVEIS

Nome: STRING;Total: INTEIRO;

INICIOTotal ← 0;ENQUANTO (Total < 20) FAÇA

LEIA(Nome);ESCREVA ('Nome=', Nome);Total ← Total + 1;

FIM-ENQUANTO;END.

Page 42: apostila algoritmos

Estruturas de Repetição

n Repita .. Até:

n Sua sintaxe é:REPITA

comando-A1;comando-A2;. . .comando-An;

ATE <Condição for verdadeira>

Estruturas de Repetiçãon Exemplo ( Repita .. Até ): Faça um algoritmo para ler e escrever o Nome de 20 pessoas.

ALGORITMO LeEscreveVARIÁVEIS

Nome: CADEIATotal: INTEIRO

INICIOTotal ← 0;REPITA

LEIA(Nome);ESCREVA(' Nome= ',Nome);Total ← Total + 1;

ATÉ Total >=20;FIM.