Вы находитесь на странице: 1из 42

Teoria da Computação e Algoritmos

Teoria da Computação e Algoritmos Introdução à Lógica de Programação Prof. Giuliano Prado de Morais Giglio,

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

Introdução à Lógica de Programação Prof. Giuliano Prado de Morais Giglio, M.Sc.

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

O que é lógica de programação?
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.

Seqüência Lógica
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ções
Instruções

n

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

Instruções
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ógicas
Exemplos de Seqüências Lógicas

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 números quaisquer”.

n

Escreva o primeiro número no retângulo A

n

Escreva o segundo número no retângulo B

n

Some o número do retângulo A com número do retângulo B e coloque o resultado no retângulo C

n

FAZER: Seqüência de tomar banho;

n

Seqüência de trocar 4 pneus de um automóvel;

Teoria da Computação e Algoritmos

Teoria da Computação e Algoritmos Introdução aos Algoritmos Prof. Giuliano Prado de Morais Giglio, M.Sc. Introdução
Teoria da Computação e Algoritmos Introdução aos Algoritmos Prof. Giuliano Prado de Morais Giglio, M.Sc. Introdução

Introdução aos Algoritmos

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

Introdução
Introdução

n

n

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

Dado um problema, as principais funções de um programador são:

n

n

n

n

Entender perfeitamente o problema

Escolher métodos para sua solução

Desenvolver um algoritmo baseado nos métodos

Codificar o algoritmo na linguagem de programação disponível

Definição
Definição

n

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 Formal
Uma Definição Formal

n

“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

Exemplo de Algoritmo Não-Computacional

Exemplo de Algoritmo Não-Computacional n Problema : Usar um telefone público. Início Seqüencial Fim. 1. Tirar

n Problema: Usar um telefone público.

Início

Seqüencial

n Problema : Usar um telefone público. Início Seqüencial Fim. 1. Tirar o fone do gancho;

Fim.

1.

Tirar o fone do gancho;

1. 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 chamar

5.1 Conversar;

 

5.2 Desligar;

5.3 Retirar o cartão;

6.

Senão

6.1

Repetir;

 
 

Desvio

Importância
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.

Características
Características

n 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ção
Formas de Representação
 

Descriçã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 ingredientes

 

n

Despeje a mistura na fôrma de bolo

 

n

Leve a fôrma ao forno

 

n

Espere 20 minutos

n

Retire a fôrma do forno

n

Deixe esfriar

n

Prove

Formas de Representação
Formas de Representação
 
 

Descriçã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, pouca coisa).

escreve-se

muito para dizer

Formas de Representação
Formas de Representação
 
 

Linguagem 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.

Formas de Representação
Formas de Representação

Linguagem 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ção
Formas de Representação

Linguagem 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_DOBRO início Leia NUM DOBRO ¬ 2 * NUM Escreva DOBRO fim

Formas de Representação
Formas de Representação
 

Linguagem 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
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 ;

Estados de um algoritmo
Estados de um algoritmo

n

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 algoritmos
Escrita de algoritmos

n

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.

O que é um programa?
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?
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.

Fases de um Algoritmo
Fases de um Algoritmo
n Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.
n
Ao montar um algoritmo, precisamos primeiro dividir
o problema apresentado em três fases
fundamentais.
Entrada
Saída
Processamento
Onde temos:
n

n

ENTRADA: São os dados de entrada do algoritmo

n

PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final

n

SAÍDA: São os dados já processados

Fases de um Algoritmo
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 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.

Estrutura de um Algoritmo
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

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.

O Aprendizado de Algoritmos
O Aprendizado de Algoritmos

n

Algoritmos não se aprende:

E

Copiando Algoritmos

E

Estudando Algoritmos

n

Algoritmos só se aprendem:

E

Construindo Algoritmos

E

Testando Algoritmos.

Teoria da Computação e Algoritmos

E Testando Algoritmos. Teoria da Computação e Algoritmos Estruturas de Implementação de Algoritmos Prof. Giuliano
Estruturas de Implementação de Algoritmos

Estruturas de Implementação de Algoritmos

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

Teoria da Computação e Algoritmos

Teoria da Computação e Algoritmos Variáveis e Tipos de Dados Prof. Giuliano Prado de Morais Giglio,
Variáveis e Tipos de Dados

Variáveis e Tipos de Dados

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

Conceito de Variáveis
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.

Conceito de Variáveis
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 (a 2 = b 2 + c 2 ), 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
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:

A ¬ 2

B ¬ A

NOTA ¬ 10

NOME ¬ 'João'

SENHA ¬ 'X3Y9'

C ¬ 1 / 3

A ¬ B + C

NOTA ¬ NOTA - 1

X ¬ 2.5

Identificadores
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
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.

Tipos de Dados
Tipos de Dados
Tipos de Dados Tipos de Dados CHAR(Caracter) e STRING(Cadeia) n As definições de variáveis como sendo

Tipos de Dados CHAR(Caracter) e STRING(Cadeia)

Tipos de Dados CHAR(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 Teste VARIÁVEIS Letra Nome

: CARACTER

: CADEIA

INICIO

Letra

¨

‘A’;

Nome

¨

‘João’;

FIM

Declaração de Variáveis
Declaração de Variáveis
Declaração de Variáveis Linearização de Expressões n Para a construção de Algoritmos todas as expressões
Linearização de Expressões
Linearização de Expressões

n

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.

n É importante também ressalvar o uso dos operadores correspondentes da aritmética tradicional para a computacional.
Modularização de Expressões
Modularização de Expressões

n

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=2

 

n

2+2/2=3

Operação de Entrada e Saída
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.

Operação de Entrada e Saída
Operação de Entrada e Saída

n

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

imprima

n

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:

Leia (Nota)

Escreva (15)

Imprima (Nota)

Leia (A,B,C)

Escreva (Nota + 2)

Imprima (Tel)

Leia (Nome)

Escreva (A,B)

Imprima (Result)

Operadores Aritméticos e Relacionais

Operadores Aritméticos e Relacionais Aritméticos Operação Operador Adição + Subtração -

Aritméticos

Operação

Operador

Adição

+

Subtração

-

Multiplicação

*

Divisão

/

Exponenciação

**

Relacionais

Operação

Operador

Maior que

>

Menor que

<

Maior ou igual

<=

Menor ou igual

< =

Diferente

<>

Igual

=

Operadores Lógicos
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 verdadeiras

n

OU (OR) = Uma expressão OU é verdadeira se pelo menos uma condição for verdadeira

n

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

Operadores Lógicos - Tabela Verdade -

- Tabela Verdade -

valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa. Operadores Lógicos - Tabela
Operadores Lógicos
Operadores Lógicos

n Exemplos:

n

Suponha que temos três variáveis A = 5, B = 8 e C =1

n

Os resultados das expressões seriam:

 

Expressões

Resultado

A

= B

E

B

> C

Falso

A

<> B

OU

B

< C

Verdadeiro

A

> B

NÃO

 

Verdadeiro

A

< B

E

B

> C

Verdadeiro

A

>= B

OU

B

= C

Falso

A

<= B

NÃO

 

Falso

Operadores Especiais (Mod e Div)

Operadores Especiais (Mod e Div) n MOD : Retorna o resto da divisão entre 2 números

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.

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

Teoria da Computação e Algoritmos

Teoria da Computação e Algoritmos Método para montagem de Algoritmos Prof. Giuliano Prado de Morais Giglio,
Método para montagem de Algoritmos Prof. Giuliano Prado de Morais Giglio, M.Sc.

Método para montagem de Algoritmos

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

Refinamentos Sucessivos
Refinamentos Sucessivos

n

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ÉDIA Início Receba os dois números; Calcule a média dos dois números; Exiba o resultado; Fim

Refinamentos Sucessivos
Refinamentos Sucessivos

n

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 Sucessivos
Refinamentos Sucessivos

n 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ÉDIA Início Receba os dois números; Soma os dois números; Divida o resultado por 2; Exiba o resultado; Fim.

Refinamentos Sucessivos
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

precisar entendê-lo. Teoria da Computação e Algoritmos Estruturas de decisão e repetição Prof. Giuliano Prado de

Estruturas de decisão e repetição

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

Estrutura Seqüencial
Estrutura Seqüencial

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:

n

inicio

comando-1;

comando-2;

.

comando-n;

.

.

Exemplo:

comando-1; comando-2; . comando-n; . . Exemplo :

Fim.

n

início leia A,B; SOMA ¨ A + B; escreva SOMA; Fim.

Estrutura Condicional

(Se então)
(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ão

 

comando-1;

comando-2;

.

comando-n;

.

.

Exemplo:

comando-1; comando-2; . comando-n; . . Exemplo:

fim-se;

n

se MÉDIA >= 7 então SITUAÇÃO ¨ 'Aprovado'; Escreva (SITUACAO);

fim-se

Estrutura Condicional

( Se Então Senão )
( Se
Então
Senão
)

n

ESTRUTURA CONDICIONAL COMPOSTA

se condição então

comando-A1

comando-A2

. comando-An senão

.

.

Exemplo:

. se PESO > 80 então escreva 'Você está obeso'

.

.

escreva 'Faça atividades

senão . . Exemplo: . se PESO > 80 então escreva 'Você está obeso' . .
 

comando-B1

físicas' senão

 

comando-B2

escreva 'Você está no peso certo'

.

.

.

comando-Bn

escreva 'Procure manter sua forma'

 

fim-se;

.

.

.

SE ENTÃO Aninhados
SE
ENTÃO Aninhados
 

n

Usados para tomadas de decisões para mais de 2 opções.

n

Sintaxe:

SE CONDIÇÃO ENTÃO

 

Comando1;

 

SENÃO SE CONDIÇÃO ENTÃO

 

Comando2;

SENÃO Comando3;

SE ENTÃO Aninhados
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úmeros

 

n

Letra ‘S’ significa fazer a subtração dos dois números

n

Letra

‘M’

significa

fazer

a

multiplicação

dos

dois

números

 

n

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;

 

Uma solução seria

INICIO escreva(“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.

 
n1 * n2; fimse; se (opcao = ‘D’ ) entao total <- n1 / n2; fimse;
SE ENTAO Aninhados
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???

problema, evitando que se faça os demais testes, depois que se encontra a opção desejada???
SE ENTÃO Aninhados
SE
ENTÃO Aninhados
 

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

Comando1;

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

“ testar as 3 opções restantes” FIMSE

SE ENTÃO Aninhados
SE
ENTÃO Aninhados

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

Comando1;

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 Aninhados
SE
ENTÃO Aninhados

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

Comando1;

SENÃO SE “testar a 2ª opção” ENTÃO

Comando2;

SENÃO

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

Comando3;

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

Comando4;

FIMSE

FIMSE

FIMSE

ALGORITMO “Calculadora”

INICIO escreva(“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’) entao total <- n1 - n2; senao se (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ção
Estruturas de Seleção

n

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;

Estruturas de Seleção
Estruturas de Seleção

ØExemplo:

ALGORITMO OpcoesTitulo VARIÁVEIS Titulo: STRING; Op: INTEIRO;

INICIO LEIA (OP); ESCOLHA OP:

CASO 4

CASO 1

TITULO = “OPÇÃO 4”;

TITULO = “OPÇÃO 1”;

CASO 5

CASO 2

TITULO = “OPÇÃO 5”;

TITULO = “OPÇÃO 2”;

SENÃO

CASO 3

TITULO = “OPÇÃO 3”;

TITULO = “OPÇÃO ERRADA”; FIM-ESCOLHA;

Estruturas de Seleção
Estruturas de Seleção

Ø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’

CASO ‘D’

total <- n1 + n2;

total <- n1 / n2; OUTROCASO escreva(“Opção Inválida”) FIMESCOLHA

CASO ‘S’

total <- n1 - n2;

CASO ‘M’

ESCREVA(“Resposta = ”, total)

total <- n1 * n2;

FIM.

Estruturas de Repetição
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ção
Estruturas de Repetição

n

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;

Estruturas de Repetição
Estruturas de Repetição

n Exemplo ( Para

Faça ):

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

ALGORITMO LeEscreve VARIÁVEIS Nome : CADEIA Cont : INTEIRO INICIO

PARA Cont DE 1 ATE 20 PASSO 1 FACA LEIA(Nome); ESCREVA(Nome); FIM-PARA;

FIM.

Estruturas de Repetição
Estruturas de Repetição

n Enquanto

Faça:

n Enquanto Faça: Sua sintaxe é: enquanto condição faça comando-A1; comando-A2; . . . comando-An;

Sua sintaxe é:

enquanto condição faça

comando-A1;

comando-A2;

.

.

.

comando-An;

fimenquanto;

Estruturas de Repetição
Estruturas de Repetição

Semâ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ça

comando-A1;

comando-A2;

.

.

.

comando-An;

fimenquanto;

Estruturas de Repetição
Estruturas de Repetição

Uso de FLAG

n 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.).

n

Exemplo 1: Uso de FLAG

n

Obs.:

n Exemplo 1: Uso de FLAG

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

Estruturas de Repetição
Estruturas de Repetição
Estruturas de Repetição
Estruturas de Repetição

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 ;

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.

Estruturas de Repetição
Estruturas de Repetição

n

Exemplo 1: Algoritmo em pseudolinguagem

Algoritmo “Exemplo1” var NUM, QUADRADO : inteiro; inicio leia(NUM); // lê o 1º conjunto de dados enquanto (NUM <> 0) faca // testa se não é FLAG QUADRADO <- NUM*NUM; escreva(QUADRADO); leia(NUM); // lê o próximo conjunto de dados fimenquanto Fim.

Estruturas de Repetição
Estruturas de Repetição

n

Exemplo 1: Teste do Algoritmo

n

Considerando que serão fornecidos os seguintes dados de entrada: 2 -3 1 4 0

n

O resultado do teste (teste de mesa) seria:

 
 
Estruturas de Repetição
Estruturas de Repetição

n Exemplo 2: Uso de acumulador

Desenvolver 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ção
Estruturas de Repetição

n 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 dados enquanto (NUM <> 0) faca // testa se não é FLAG SOMA <- SOMA + NUM; // acumula ao valor de soma o NUM leia(NUM); // lê o próximo conjunto de dados fimenquanto escreva(SOMA);

Estruturas de Repetição
Estruturas de Repetição

n Exemplo 2: Teste do Algoritmo

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

dados de entrada: 8 -3 2 1 0 O resultado do teste seria: Estruturas de Repetição
Estruturas de Repetição
Estruturas de Repetição

n

Exemplo ( Enquanto

Faça ):

n

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

ALGORITMO LeEscreve VARIÁVEIS Nome: STRING; Total: INTEIRO; INICIO Total ¨ 0; ENQUANTO (Total < 20) FAÇA LEIA(Nome); ESCREVA ('Nome=', Nome);

Total ¨ Total FIM-ENQUANTO; END.

+

1;

Estruturas de Repetição Repita Até: n
Estruturas de Repetição
Repita
Até:
n

n

Sua sintaxe é:

REPITA

comando-A1;

comando-A2;

. comando-An; ATE <Condição for verdadeira>

.

.

Estruturas de Repetição
Estruturas de Repetição

n Exemplo ( Repita

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

Até ):

ALGORITMO LeEscreve VARIÁVEIS Nome: CADEIA Total: INTEIRO INICIO Total ¨ 0; REPITA LEIA(Nome);

ESCREVA(' Nome= ',Nome); ¨

Total + 1;

Total ATÉ Total >=20; FIM.