Download - Desenvolvendo Algoritmos

Transcript
Page 1: Desenvolvendo Algoritmos

Desenvolvendo Algoritmos

Marco Antonio Montebello Jú[email protected]

Fundamentos de Lógica

Page 2: Desenvolvendo Algoritmos

Fundamentos de Lógica 2

Agenda

Regras para construção de uma algoritmo Tipos de algoritmos Tipos de dados e variáveis Operadores

Aritméticos Relacionais Lógicos

Estrutura Seqüencial Estruturas de Decisão

Page 3: Desenvolvendo Algoritmos

Fundamentos de Lógica 3

Algoritmo

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.

Page 4: Desenvolvendo Algoritmos

Fundamentos de Lógica 4

Regras para construção do algoritmo

Descrever a seqüência de instruções, de maneira simples e objetiva.

Usar somente um verbo por frase Imaginar que você está desenvolvendo um

algoritmo para pessoas que não trabalham com informática

Usar frases curtas e simples Ser objetivo Procurar usar palavras que não tenham sentido

dúbio

Page 5: Desenvolvendo Algoritmos

Fundamentos de Lógica 5

Fases

Para montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: ENTRADA: São os dados de entrada do algoritmo PROCESSAMENTO: São os procedimentos utilizados

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

Entrada Processamento Saída

Page 6: Desenvolvendo Algoritmos

Fundamentos de Lógica 6

FasesAnalogia com um homem

Page 7: Desenvolvendo Algoritmos

Fundamentos de Lógica 7

Tipo: Pseudocódigo – Português Estruturado Utiliza linguagem estruturada e se assemelha, na

forma, a um programa escrito na linguagem de programação.

É um tipo de algoritmo que utiliza uma linguagem flexível, intermediária entre a linguagem natural e a linguagem de programação.

“Pseudocódigo” significa “falso código”; o nome se deve à proximidade que existe entre um algoritmo escrito em pseudocódigo e a maneira pela qual um programa é escrito em uma linguagem de programação

Page 8: Desenvolvendo Algoritmos

Fundamentos de Lógica 8

Pseudocódigo

Trocar uma lâmpada (V1) pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar lâmpada velha; colocar lâmpada nova.

Page 9: Desenvolvendo Algoritmos

Fundamentos de Lógica 9

Pseudocódigo Trocar 10 lâmpadas SE estiverem queimadas

ir até o interruptor do primeiro soquete; enquanto a quantidade de soquetes testados for menor que 10,

faça acionar o interruptor; se a lâmpada não acender, então

pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; enquanto a lâmpada não acender, faça

retirar lâmpada queimada; colocar lâmpada nova;

ir até o interruptor do próximo soquete;

Page 10: Desenvolvendo Algoritmos

Fundamentos de Lógica 10

Tipo: Descrição Narrativa

Utiliza linguagem natural para especificar os passos para a realização das tarefas.

Não é muito utilizada

Page 11: Desenvolvendo Algoritmos

Fundamentos de Lógica 11

Tipo: Fluxograma

Utiliza-se de figuras geométricas para ilustrar os passos a serem seguidos na resolução dos problemas.

Diagrama de Blocos. É bastante utilizado

Page 12: Desenvolvendo Algoritmos

Fundamentos de Lógica 12

Fluxograma - Simbologia

Cada instrução ou ação a ser executada deve ser representada por meio de um símbolo gráfico.

Terminal: representa o início e o final do fluxograma.

Processamento: representa a execução de operações ou ações.

Teclado: representa a entrada de dados para as variáveis por meio do teclado.

Vídeo: representa a saída de informações por meio do monitor de vídeo.

Decisão: representa uma ação lógica que resultará na escolha de uma das seqüências de instruções.

Preparação: representa uma ação de preparação para o processamento.

Page 13: Desenvolvendo Algoritmos

Fundamentos de Lógica 13

Fluxograma - Simbologia

Conector: utilizado para interligar partes do fluxograma ou para desviar o fluxo corrente para um determinado trecho do fluxograma.

Conector de Páginas: utilizado para interligar partes do fluxograma em páginas distintas.

Seta de orientação do fluxo.

In íc io F im"No me : ",

No meNo me , Id a d e"Id a d e : ",

Id a d e

Page 14: Desenvolvendo Algoritmos

Fundamentos de Lógica 14

Fluxograma

início

ir para o primeiro soquete

soquetesrestantes < 10

acionar o interruptor

pegar uma escada

posicionar escada

buscar lâmpada nova

acionar o interruptor

nãoacendeu?

subir na escada

retirar a lâmpada queimada

colocar lâmpada nova

acionar o interruptor

nãoacendeu?

retirar a lâmpada queimada

colocar lâmpada nova

ir ao próximo soquete

fim

F

F

F

V

V

V

Page 15: Desenvolvendo Algoritmos

Fundamentos de Lógica 15

Tipo: Diagrama de Chapin

Conhecido também como diagrama de Shneiderman ou diagrama N-S.

Apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada

Page 16: Desenvolvendo Algoritmos

Fundamentos de Lógica 16

Diagrama de Chapinir para o primeiro soquete

soquetes testados < 10

acionar o interruptor

pegar uma escadacolocar a escada embaixo do soquetebuscar lâmpada novaacionar o interruptorsubir na escadaretirar lâmpada queimadacolocar lâmpada nova

lâmpada não acendeu

retirar lâmpada queimadacolocar lâmpada nova

ir para o próximo soquete

lâmpada não acendeu

Page 17: Desenvolvendo Algoritmos

Fundamentos de Lógica 17

Formas de Representação Gráficas (Fluxograma e Chapin)

Vantagens Maior clareza no fluxo de execução Linguagem visual

Desvantagens Requer conhecimento de convenções gráficas Mais trabalhoso em decorrência de seus desenhos Dificuldade para fazer correções

Textuais (Português Estruturado) Apresenta mais vantagens, desde que se tomem alguns cuidados:

Riqueza gramatical de nossa língua pode levar a ambigüidades A frase “O pregador foi grampeado durante o conserto” tem “8”

sentidos diferentes quando pronunciada Para resolver, utilizaremos um conjunto restrito de regras,

conhecido como Português Estruturado

Page 18: Desenvolvendo Algoritmos

Fundamentos de Lógica 18

Tipos de dados e variáveisTipos Primitivos

São os tipos básicos de informação dos algoritmos Inteiro: informação pertencente ao conjunto dos

números inteiros relativos (positiva ou negativa). Real: informação pertencente ao conjunto dos

números reais. Caractere: informação alfanumérica (caracteres

alfabéticos, numéricos e especiais) Lógico: informação biestável (admite apenas 2

valores: verdadeiro ou falso)

Page 19: Desenvolvendo Algoritmos

Fundamentos de Lógica 19

Tipos de dados e variáveisConstantes

São valores que não sofrem nenhuma variação no decorrer do tempo

São exemplos de constantes: Valor de PI; Velocidade da luz; 5; “Não fume”.

Page 20: Desenvolvendo Algoritmos

Fundamentos de Lógica 20

Tipos de dados e variáveisVariáveis

São valores que podem sofrer alteração no decorrer do tempo. Exemplo:

Cotação do dólar; Peso de uma pessoa; Preço da gasolina.

São como gavetas que podem receber diversos tipos de objetos

Page 21: Desenvolvendo Algoritmos

Fundamentos de Lógica 21

Tipos de dados e variáveisVariáveis

Identificadores: São os nomes escolhidos para as informações variáveis. Deve iniciar por caractere alfabético; Pode ser seguido por mais caracteres alfabéticos ou

numéricos; Não devem ser usados caracteres especiais.

Declaração: Processo de reservar e etiquetar gavetas; Só podem armazenar valores de um mesmo tipo, de

maneira que também são classificadas como sendo numéricos, lógicos e literais.

Page 22: Desenvolvendo Algoritmos

Fundamentos de Lógica 22

Operadores Aritméticos

Utilizados para a realização de cálculos matemáticos

Operador Função Exemplos

+ Adição 2 + 3, X + Y

- Subtração 4 - 2, N – M

* Multiplicação 3 * 4, A * B

/ Divisão 10 / 2, C / D

pot(x,y) Potenciação (x elevado a y) pot(2, 3)

rad(x) Raiz quadrada (de x) rad(9)

Mod Resto da divisão 9 mod 4 resulta 1

Div Quociente da divisão inteira 9 div 4 resulta 2

Page 23: Desenvolvendo Algoritmos

Fundamentos de Lógica 23

Operadores Relacionais

Utilizados para a estabelecer relação de comparação entre valores

Operador Função Exemplos

= Igual a 3 = 3, X = Y

> Maior que 5 > 4, X > Y

< Menor que 3 < 6, X < Y

>= Maior ou igual a 5 >= 3, X >= Y

<= Menor ou igual a 3 <= 5, X <= Y

<> ou != Diferente de 8 <> 9, X <> Y, 7 != 9

Page 24: Desenvolvendo Algoritmos

Fundamentos de Lógica 24

Operadores Relacionais

A = 5 B = 3

Expressão Resultado

A = B Falso (F)

A <> B Verdadeiro (V)

A > B Verdadeiro (V)

A < B Falso (F)

A >= B Verdadeiro (V)

A <= B Falso (F)

Page 25: Desenvolvendo Algoritmos

Fundamentos de Lógica 25

Operadores Lógicos

Utilizados para a efetuar avaliações lógicas entre valores

Operador Função Exemplos

não (not) !

Negação: inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa.

não V, não X

e (and) &&

Conjugação: é verdadeira se todas as condições forem verdadeira

V e V, X e Y

ou (or) ||

Disjunção: é verdadeira se pelo menos uma condição for verdadeira

V ou V, X ou Y

Page 26: Desenvolvendo Algoritmos

Fundamentos de Lógica 26

Operadores LógicosTabela Verdade

Conjunto de todas as possibilidades de cada operador lógico.

A não A

! A

F V

V F

A B A e B

A && B

F F F

F V F

V F F

V V V

A B A ou B

A || B

F F F

F V V

V F V

V V V

Page 27: Desenvolvendo Algoritmos

Fundamentos de Lógica 27

Estrutura Seqüencial

O fluxo de controle segue a mesma seqüência linear da nossa escrita, ou seja: De cima para baixo; Da esquerda para direita

Cada ação é seguida de um ; Objetiva separar uma ação da outra Indica que a próxima ação da seqüência deve ser

executada

Page 28: Desenvolvendo Algoritmos

Fundamentos de Lógica 28

Estrutura Seqüencial

Algoritmo – Média Aritmética

início// declaração de variáveisreal: N1, N2, N3, N4, // notas bimestrais

MA; // média anual// entrada de dadosleia (N1, N2, N3, N4);// processamentoMA ← (N1 + N2 + N3 + N4) / 4;// saída de dadosescreva (MA);

fim

Page 29: Desenvolvendo Algoritmos

Fundamentos de Lógica 29

Estruturas de Decisão

São aquelas que permitem alterar o fluxo de execução, de forma a selecionar qual parte deve ser executada

Essa “decisão” de execução é tomada a partir de uma condição, que pode resultar apenas em verdadeiro ou falso

Uma condição é representada por expressões relacionais ou lógicas

As estruturas de seleção podem ser classificadas em simples, compostas ou encadeadas.

Page 30: Desenvolvendo Algoritmos

Fundamentos de Lógica 30

Estruturas de Decisão

Page 31: Desenvolvendo Algoritmos

Fundamentos de Lógica 31

Estruturas de DecisãoSimples Quando a <condição> for verdadeira o “bloco

verdadeiro” é executado. Quando a <condição> for falsa o “bloco verdadeiro” não

é executado.

se <condição> entãoinício // início do bloco verdadeiro

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

fim; // fim do bloco verdadeirofim_se;

Page 32: Desenvolvendo Algoritmos

Fundamentos de Lógica 32

Estruturas de DecisãoSimples Algoritmo – Média Aritmética com Aprovação

início// declaração de variáveisreal: N1, N2, N3, N4, // notas bimestrais

MA; // média anual// entrada de dadosleia (N1, N2, N3, N4);// processamentoMA ← (N1 + N2 + N3 + N4) / 4;// saída de dadosescreva (MA);se (MA >= 7) então

escreva (“Aluno Aprovado !”);fim_se;

fim.

Page 33: Desenvolvendo Algoritmos

Fundamentos de Lógica 33

Estruturas de DecisãoComposta Quando a <condição> for verdadeira o “bloco verdadeiro” é

executado Quando a <condição> for falsa o “bloco falso” é executado

se <condição> entãoinício // início do bloco verdadeiro

comando 1;comando n;

fim; // fim do bloco verdadeirosenão

início // início do bloco falsocomando 1;comando n;

fim; // fim do bloco falsofim_se;

Page 34: Desenvolvendo Algoritmos

Fundamentos de Lógica 34

Estruturas de DecisãoComposta Algoritmo – Média Aritmética com aprovação e reprovação

início// declaração de variáveisreal: N1, N2, N3, N4, // notas bimestrais

MA; // média anualleia (N1, N2, N3, N4);MA ← (N1 + N2 + N3 + N4) / 4;escreva (MA);se (MA >= 7) então

inícioescreva (“Aluno Aprovado!”); escreva (“Parabéns!”);

fim;senão

inícioescreva (“Aluno Reprovado!”);escreva (“Estude mais!”);

fim;fim_se;

fim.

Page 35: Desenvolvendo Algoritmos

Fundamentos de Lógica 35

Estruturas de DecisãoEncadeada (aninhada)

Ocorre quando uma seleção tem como ação uma outra seleção

Uma seleção encadeada pode ser: Heterogênea: Quando não é possível identificar

padrão de comportamento Homogênea: Quando é possível identificar padrão de

comportamento se – então – se: quando depois de cada então ocorre outro se se – senão – se: quando depois de cada senão ocorre outro se

Page 36: Desenvolvendo Algoritmos

Fundamentos de Lógica 36

Estruturas de Decisão Encadeada – Heterogênea Algoritmo – Tipos de Triângulo

iníciointeiro: A, B, C; // tamanho dos ladosleia (A, B, C);se (A<B+C) e (B<A+C) e (C<A+B) então

se (A=B) e (B=C) entãoescreva (“Triangulo Equilátero”);

senãosese (A=B) (A=B) ouou (B=C) (B=C) ouou (A=C) (A=C) entãoentão

escrevaescreva (“Triângulo Isósceles”); (“Triângulo Isósceles”);senãosenão

escrevaescreva (“Triangulo Escaleno”); (“Triangulo Escaleno”);fim_sefim_se;;

fim_se;senão

escreva (“Estes valores não formam um triângulo”);fim_se;

fim.

Page 37: Desenvolvendo Algoritmos

Fundamentos de Lógica 37

Estruturas de Decisão Encadeada – Homogênea se – então – se

se <Cond1> então se <Cond2> então

se <Cond3> então se <Cond4>

então W;fim_se;

fim_se; fim_se;

fim_se;

É equivalente a:se <Cond1> e <Cond2> e <Cond3> e <Cond4> então W;fimse;

Page 38: Desenvolvendo Algoritmos

Fundamentos de Lógica 38

Estruturas de Decisão Encadeada – Homogênea

se X=V1 então C1;

fim_se;se X=V2 então

C2;fim_se;se X=V3 então

C3;fim_se;se X=V4 então

C4;fim_se;

X=V1 X=V2 X=V3 X=V4 Ação

V F F F C1

F V F F C2

F F V F C3

F F F V C4

X=V1 X=V2 X=V3 X=V4 Ação

V - - - C1

F V - - C2

F F V - C3

F F F V C4

se – senão – se

se X=V1 então C1;senão se X=V2

então C2; senão se X=V3

então C3; senão se X=V4

então C4; fim_se;

fim_se;fim_se;

fim_se;

Page 39: Desenvolvendo Algoritmos

Fundamentos de Lógica 39

Estruturas de DecisãoMúltipla Escolha Seleções encadeadas homogêneas se-senão-se são

bastante freqüentes para o tratamento de listas de valor Para simplificar a escrita, pode-se utilizar o comando

escolha. Adaptando o algoritmo anterior:

escolha Xcaso V1: C1;caso V2: C2;caso V3: C3;caso V4: C4;

fim_escolha;

Page 40: Desenvolvendo Algoritmos

Fundamentos de Lógica 40

Estruturas de DecisãoMúltipla Escolha Algoritmo – Múltipla Escolha

inícioreal: Preço;inteiro: Origem;leia (Preço, Origem);escolha Origem

caso 1: escreva (Preço, “ – produto do Sul”);caso 2: escreva (Preço, “ – produto do Norte”);caso 3: escreva (Preço, “ – produto do Leste”);caso 4: escreva (Preço, “ – produto do Oeste”);caso 7, 8, 9: escreva (Preço, “ – produto do Sudeste”);caso 10..20: escreva (Preço, “ – produto do Centro-Oeste”);caso 5, 6, 25..50: escreva (Preço, “ – produto do Nordeste”);caso contrário: escreva (Preço, “ – produto importado”);

fimescolha;fim.