Algoritmos e Lógica de Programação

62
Algoritmos e Lógica de Programação Notas de Aula

Transcript of Algoritmos e Lógica de Programação

Page 1: Algoritmos e Lógica de Programação

Algoritmos e

Lógica de Programação

Notas de Aula

Page 2: Algoritmos e Lógica de Programação

Parte I

Conceitos de Algoritmos

2

Page 3: Algoritmos e Lógica de Programação

Algoritmos

Algoritmo

=

Sequência lógica e não ambígua

de instruções que leva à

solução de um problema

em um tempo finito.

3

Page 4: Algoritmos e Lógica de Programação

Algoritmos

Um algoritmo não representa, necessariamente,

um programa de computador e sim os passos

necessários para realizar uma tarefa. Sua

implementação pode ser feita por um

computador, por um robô ou mesmo por um ser

humano. Diferentes algoritmos podem realizar

a mesma tarefa usando um conjunto

diferenciado de instruções em mais ou menos

tempo, espaço ou esforço do que outros.

https://pt.wikipedia.org/wiki/Algoritmo

4

Page 5: Algoritmos e Lógica de Programação

Algoritmos - Exemplo

Algoritmo: Sacar dinheiro

INÍCIO

1. Ir até o caixa eletrônico.

2. Colocar o cartão.

3. Digitar a senha.

4. Solicitar o saldo.

5. Se o saldo for maior ou igual à quantia

desejada, sacar a quantia desejada; caso

contrário sacar o valor do saldo.

6. Retirar dinheiro e cartão.

FIM.

5

Page 6: Algoritmos e Lógica de Programação

Algoritmos – Características básicas

Seqüência lógica

As instruções devem ser definidas em uma

ordem correta.

Não ambígua

A seqüência lógica e as instruções não

devem dar margem à dupla interpretação.

Solução de um problema

A seqüência lógica deve resolver

exatamente o problema identificado.

Tempo finito

A seqüência lógica não deve possuir

iterações infinitas.

6

Page 7: Algoritmos e Lógica de Programação

Algoritmo ambíguo

• Modo de preparo:

– Bata a margarina, as gemas e o açúcar até

ficar cremoso

– Junte o leite, o coco e a farinha e continue

batendo

– Acrescente o fermento e as claras em neve

– Unte uma forma com manteiga e leve ao forno

para assar

Quão cremoso?!?

Quanto tempo?!?

De uma vez só?!?

Quanto tempo?!?

7

Page 8: Algoritmos e Lógica de Programação

Algoritmo refinado

• Modo de preparo:

– Bata a margarina, as gemas e o açúcar por 15

minutos

– Junte o leite, o coco e a farinha e continue

batendo por mais 15 minutos

– Acrescente 20 g de fermento e, por último,

as claras em neve

– Unte uma forma com manteiga e leve ao forno

para assar por 30 minutos

8

Page 9: Algoritmos e Lógica de Programação

Algoritmo – Estruturas básicas

Seqüência – Início/Fim

Define uma estrutura onde as instruções

serão executadas na ordem que aparecem.

Seleção – Se-Então/Senão

Define uma estrutura condicional que, dada

a sua avaliação (V ou F), determina qual

“caminho” do algoritmo será executado.

Repetição – Repita, Enquanto ou Para

Define uma estrutura de iteração

condicional (V ou F) ou contada

(predefinida) de instruções que irão se

repetir.

9

Page 10: Algoritmos e Lógica de Programação

Algoritmo – Estruturas básicas

Algoritmo para ligar de um telefone público

Seqüência:

INÍCIO

1. Tirar o fone do gancho;

2. Ouvir o sinal de linha;

3. Introduzir o cartão;

4. Teclar o número desejado;

5. Conversar;

6. Desligar;

7. Retirar o cartão;

FIM10

Page 11: Algoritmos e Lógica de Programação

Algoritmo – Estruturas básicas

Algoritmo para ligar de um telefone público

INÍCIO

1. Tirar o fone do gancho;

2. Se ouvir o sinal de linha, então:

1.Introduzir o cartão;

2.Teclar o número desejado;

3.Conversar;

4.Desligar;

5.Retirar o cartão;

3. Senão

1.Ir para o próximo telefone;

FIM11

Page 12: Algoritmos e Lógica de Programação

Algoritmo – Estruturas básicas

Algoritmo para ligar de um telefone público

INÍCIO

1. Repita

1.Tirar o fone do gancho;

2.Se ouvir o sinal de linha então

1.Introduzir o cartão;

2.Teclar o número desejado;

3.Conversar;

4.Desligar;

5.Retirar o cartão;

3.Senão

Ir para o próximo telefone;

2. Até ouvir o sinal de linha

FIM Este algoritmo usa uma

estrutura de repetição

“Repita/Até”12

Page 13: Algoritmos e Lógica de Programação

Conclusão

Escrever algoritmos e, por fim programar,

consiste em dividir qualquer problema em

vários passos menores, usando uma ou mais

formas de representação.

Esses passos que compõem o algoritmo são

denominados de comandos, que por sua vez,

seguem uma ordem de execução determinada por

estruturas de controle.

Os elementos (informações) manipulados por

esses comandos são os dados que são

organizados em estruturas de dados

13

Page 14: Algoritmos e Lógica de Programação

Parte II

Introdução aos

Algoritmos Computacionais

com VisualG

14

Page 15: Algoritmos e Lógica de Programação

Algoritmos com VisualG

Para estudar a construção de algoritmos para

serem resolvidos pelo computador,

utilizaremos um código que é chamado de

pseudocódigo, também conhecido como português

estruturado ou portugol.

Vamos escrever sequências de instruções que

possam ser entendidas por qualquer

programador, independente da linguagem de

programação utilizada.

A estrutura da linguagem aqui apresentada

está baseada no programa VisualG, um

interpretador de algoritmos desenvolvido no

Brasil

15

Page 16: Algoritmos e Lógica de Programação

Algoritmos – ciclo básico

Os dados são armazenados na memória e depois

recuperados para serem processados ou

impressos

Entrada Processamento Saída

Memória

16

Page 17: Algoritmos e Lógica de Programação

Forma geral de um algoritmo

Algoritmo “NomeDoAlgoritmo”

var

Aqui são declaradas os dados, as informações

a serem utilizadas

inicio

Aqui inserimos as instruções a serem

seguidas, ou seja o algoritmo propriamente

dito

fimalgoritmo

17

Page 18: Algoritmos e Lógica de Programação

Forma geral de um algoritmo

As palavras ou comandos usados na linguagem

são padronizadas e, por isso, são chamadas de

palavras reservadas.

As palavras algoritmo e fimalgoritmo

delimitam o início e o fim de um algoritmo;

Após a palavra var, descreveremos os dados

que serão utilizados pelo algoritmo;

Entre as palavras reservadas inicio e

fimalgoritmo definimos a lista de comandos;

18

Page 19: Algoritmos e Lógica de Programação

Variáveis

Algoritmos trabalham com dados (valores)

Esses valores precisam ser armazenados pelo

computador para serem processados;

Uma varíável representa uma posição na

memória, onde pode ser armazenado um dado;

Uma variável possui um nome e um valor de um

determinado tipo para que possa ser

identificada.

Durante a execução do algoritmo, a variável

pode ter seu valor alterado (seu valor pode

variar)

Mudanças no valor das variáveis:

Por entrada de dados (digitação)

Por atribuição de valor

19

Page 20: Algoritmos e Lógica de Programação

Tipos de Dados

Toda variável é associada a um tipo de valor;

O tipo de dado de uma variável identifica o

tipo de valor (faixa de valores) que ela

poderá receber, bem como as operações que

poderão ser realizadas com essa variável;

20

Page 21: Algoritmos e Lógica de Programação

TIPO DESCRIÇÃO

InteiroRepresenta valores inteiros

Ex.: 2, 5, -3, 100, -151...

RealRepresenta valores reais

Ex.: 10.0, 5.6, -3.45....

Caractere

Representa texto entre aspas

duplas

Ex.: “Corinthians”, “B”, “1234”

LogicoRepresenta os valores lógicos

VERDADEIRO ou FALSO

Tipos de Dados

Page 22: Algoritmos e Lógica de Programação

Fonte: UFABC22

Page 23: Algoritmos e Lógica de Programação

Declaração de variáveis

Antes de usarmos uma variável, precisamos

declará-la, ou seja, definir o seu nome e

tipo.

Declaramos variáveis logo após a palavra

reservada var;

Ex.:

var idade: inteiro

nota1, nota2: real

23

Page 24: Algoritmos e Lógica de Programação

Declaração de variáveis

Regras para identificação das variáveis:

Nomes de variáveis não podem ser iguais a

palavras reservadas;

Nomes de variáveis devem possuir como

primeiro caractere uma letra ou sublinhado.

Os demais caracteres podem ser letras,

números ou sublinhado;

Nomes devem ter no máximo 127 caracteres;

Nomes não podem ter espaços em branco;

Não há diferença entre letras maiúsculas e

minúsculas;24

Page 25: Algoritmos e Lógica de Programação

Declaração de variáveis

Exemplos:

Identificadores válidos:

nome, telefone, endereco, idade_filho

Identificadores inválidos:

3endereco, algoritmo, 4titulos

25

Page 26: Algoritmos e Lógica de Programação

Declaração de variáveis

Exemplo:

algoritmo “dados”

var nome: caractere

idade: inteiro

altura: real

nota_1, nota_2: real

inicio

fimalgoritmo

26

Page 27: Algoritmos e Lógica de Programação

Operação de atribuição

A operação de atribuição consiste em

armazenar um valor em uma variável via

código;

Para isso, utilizamos o operador de

atribuição representado por uma seta

apontando para a esquerda (<-);

Só podemos atribuir valores do mesmo tipo da

variável;

27

Page 28: Algoritmos e Lógica de Programação

Operador de atribuição

Exemplo:

algoritmo “exemplo”

var nome: caractere

idade: inteiro

inicio

nome <- “José da Silva”

idade <- 27

fimalgoritmo

28

Page 29: Algoritmos e Lógica de Programação

Operador de atribuição

Exemplo de erros de atribuição:

algoritmo “exemplo”

var

nome: caractere

idade: inteiro

inicio

nome <- José da Silva

idade <- 27.34

fimalgoritmo

29

Page 30: Algoritmos e Lógica de Programação

Entrada de Dados

A operação de leitura é usada para obter um

valor digitado pelo usuário

Sintaxe leia (<lista de variáveis>)

Exemplo:

leia (numero)

O valor digitado será armazenado na

variável numero.

30

Page 31: Algoritmos e Lógica de Programação

Saída de Dados

O comando de impressão é utilizado para

“imprimir” valores no dispositivo de saída de

dados (normalmente, o monitor).

Sintaxe escreva (<lista-de-variáveis>)

Exemplos:

escreva (numero1)

Será mostrado na tela o conteúdo da variável

numero1.

escreva (“O texto digitado foi ”, k)

Será mostrado o texto entre “” e depois o

conteúdo da variável k. 31

Page 32: Algoritmos e Lógica de Programação

Para a construção de algoritmos que realizam

cálculo matemáticos, todas as expressões

aritméticas devem ser linearizadas;

Devendo também ser feito o mapeamento dos

operadores da aritmética tradicional para os

do Português Estruturado.

Operações matemáticas

32

Page 33: Algoritmos e Lógica de Programação

Operações matemáticas

Exemplos:

3/4+5 = 5.75 3/(4+5) = 0.33333333

3\2*9 = 9 11%3^2 = 2

11%(3^2) = 2 (11%3)^2 = 4

3\2+(65-40)^(1/2) = 633

Page 34: Algoritmos e Lógica de Programação

Comentários

O VisuAlg permite a inclusão de comentários:

qualquer texto precedido de "//" é ignorado,

até se atingir o final da sua linha.

Por este motivo, os comentários não se estendem

por mais de uma linha: quando se deseja

escrever comentários mais longos, que ocupem

várias linhas, cada uma delas deverá começar

por "//".

34

Page 35: Algoritmos e Lógica de Programação

Exemplo de algoritmo

Construa um algoritmo em pseudocódigo para

calcular e exibir a média entre 2 números

informados pelo usuário

Resolução a seguir

35

Page 36: Algoritmos e Lógica de Programação

Exemplo de algoritmo - Resolução

algoritmo "calcula_media"

// Objetivo: Calcular a média aritmética de 2 números

// informados pelo usuário

var

numero1,numero2 : real

media : real

inicio

// Entrada de dados

escreva("Digite o primeiro número: ")

leia(numero1)

escreva("Digite o segundo numero: ")

leia(numero2)

//Cálculo e impressão da média

media <- (numero1 + numero2) / 2

escreva("Média = ", media)

fimalgoritmo 36

Page 37: Algoritmos e Lógica de Programação

Parte III

Estruturas de Decisão

37

Page 38: Algoritmos e Lógica de Programação

Fluxogramas

Fluxograma: Representação gráfica da

solução algorítmica de um problema por

meio de símbolos geométricos

38

Page 39: Algoritmos e Lógica de Programação

Fluxogramas

Fluxograma: Símbolos alternativos

39

Page 40: Algoritmos e Lógica de Programação

Fluxogramas

Algoritmo para calcular o dobro de um

número:

40

Page 41: Algoritmos e Lógica de Programação

Estruturas de controle de fluxo

Os algoritmos desenvolvidos até o momento

constituem uma seqüência de ações que

sempre são executadas em sua totalidade de

forma sequencial independentemente do valor

da entrada de dados.

Para a resolução de determinados problemas

pode ser necessário executar fluxos

diferentes, baseado em uma decisão.

Exemplo: um algoritmo capaz de efetuar o

cálculo do imposto de renda de um

determinado contribuinte. Neste caso

dependendo da quantidade de dependentes, do

valor de sua renda e outros fatores o

cálculo será feito de formas distintas.

41

Page 42: Algoritmos e Lógica de Programação

Estruturas de decisão

Na vida real tomamos decisões a todo

momento baseadas em escolhas;

Em algoritmos, chamamos tais decisões de

condições;

Associada a uma condição, existirá uma

possível alternativa;

Ex.: Se o Corinthians não vencer o Santos

na próxima partida, então o técnico será

demitido.

42

Page 43: Algoritmos e Lógica de Programação

Estruturas de decisão

Os operadores relacionais realizam a comparação entre dois operandos ou

duas expressões e resultam em valores lógicos (VERDADEIRO ou FALSO).

Exemplo: Sejam duas variáveis, A = 5 e B = 3:

43

Page 44: Algoritmos e Lógica de Programação

Estruturas de decisão

Considere um problema que exija umadecisão.

Tomemos como exemplo uma divisão, onde hajaa necessidade de que o algoritmo verifiquese o divisor é igual ou diferente de zero.Se for igual não é possível dividir. Se fordiferente é possível dividir.

Sintaxe:

se (<expressão-lógica>) então

<sequência de comandos>

senão

<seqüência de comandos>

fimse

44

Page 45: Algoritmos e Lógica de Programação

Estruturas de decisão

Algoritmo em Portugol

algoritmo "Divisao"

varnumero1, numero2: realresultado: real

inicioescreva ("Digite o dividendo ==> ")leia (numero1)escreva ("Digite o divisor ==> ")leia (numero2)se (numero2 = 0) entao

escreva ("impossivel dividir por 0")senao

resultado <- numero1/numero2escreva ("O resultado eh ==>", resultado)

fimsefimalgoritmo

45

Page 46: Algoritmos e Lógica de Programação

Estruturas de decisão

Estrutura de decisão em fluxograma

verda

deiro

fal

so

46

Page 47: Algoritmos e Lógica de Programação

Estruturas de decisão

Fluxograma para o problema da divisão

apresentado anteriormente

47

Page 48: Algoritmos e Lógica de Programação

Expressões lógicas

Operadores lógicos combinam resultados

lógicos, gerando novos valores lógicos

(verdadeiro ou falso). A “tabela-

verdade” abaixo mostra todos os valores

possíveis:

T = Verdade

F = Falso

AND = E

OR = OU

NOT = NÃO

48

Page 49: Algoritmos e Lógica de Programação

Expressões lógicas

Combinando operadores relacionais e operadores

lógicos criamos expressões lógicas, que produzirão

resultados lógicos (verdadeiro ou falso).

Por exemplo, se A = 5, B = 8 e C = 1:

(A = B) E (B > C) é falso (f e v)

(A <> B) OU (B < C) é verdadeiro (v ou f)

NÃO (A > B) é verdadeiro (não f)

(A < B) E (B > C) é verdadeiro (v e v)

(A >= B) OU (B = C) é falso (f ou f)

NÃO (A <= B) é falso (não v)

São usadas em decisões nos algoritmos...

49

Page 50: Algoritmos e Lógica de Programação

Parte IV

Estruturas de Repetição

Enquanto/Repita

50

Page 51: Algoritmos e Lógica de Programação

Estruturas de repetição

Em alguns algoritmos, é necessário executar

uma mesma tarefa por um número determinado

ou indeterminado de vezes.

Exemplos:

Escrever na tela os números de 1 a 10

Escrever na tela a tabuada do número 2

Calcular a média de todos os alunos de uma classe

Essa necessidade gerou a criação das

estruturas de repetição

51

Page 52: Algoritmos e Lógica de Programação

Estrutura de repetição ENQUANTO

Neste caso, uma tarefa será repetida enquanto

uma determinada condição for verdadeira.

Sintaxe:

enquanto (<expressão lógica>) faca

<sequência de comandos>

fimenquanto

52

Page 53: Algoritmos e Lógica de Programação

Estrutura de repetição ENQUANTO

Observações:

A expressão lógica é avaliada antes de cada

repetição do laço. Enquanto seu resultado

for VERDADEIRO, a sequência de comando será

executada. Por isso é chamada de condição

de parada.

Normalmente é usada uma ou mais variáveis

para compor a condição de parada. Essas

variáveis são chamadas de variáveis de

controle

Para que o laço tenha fim, a condição de

parada, em algum momento deve ser atendida,

caso contrário, teremos um laço de

repetição infinito53

Page 54: Algoritmos e Lógica de Programação

Estrutura de repetição ENQUANTO

algoritmo "Conta10_com_Enquanto"

//Este algoritmo exibirá os número de 1 até 10

var

contador : inteiro //Variável de controle

inicio

contador <- 1 //Valor de início da contagem

//Laço de repetição

enquanto (contador <= 10) faca

escreval(contador)

contador <- contador + 1

fimenquanto

fimalgoritmo

Condição de

parada

Comando que

força o fim do

laço 54

Page 55: Algoritmos e Lógica de Programação

Representação em fluxograma

55

Page 56: Algoritmos e Lógica de Programação

Estrutura de repetição REPITA

Semelhante à instrução ENQUANTO só que,

neste caso, o teste de parada é feito no

final e, portanto, o bloco de comando será

executado pelo menos uma vez

Sintaxe:

repita

<seqüência de comandos>

ate (<expressão lógica ou relacional>)

56

Page 57: Algoritmos e Lógica de Programação

Estrutura de repetição REPITA

algoritmo "Conta10_com_Repita"

var

contador:inteiro //Variável de controle

inicio

contador <- 1 //Início da contagem

repita //Inicio do laço de repetição

escreval(contador)

contador <- contador + 1

ate (contador > 10)

fimalgoritmo

Repare que a condição é

inversa a da estrutura

ENQUANTO

Page 58: Algoritmos e Lógica de Programação

Parte V

Estruturas de Repetição

PARA

Page 59: Algoritmos e Lógica de Programação

Tem o seu funcionamento controlado por uma

variável denominada contador;

Executa um conjunto de instruções um

determinado número de vezes;

Utilizado quando se sabe previamente o

número de vezes que uma seqüência de

instruções deverá ser executada.

Estrutura de repetição PARA

59

Page 60: Algoritmos e Lógica de Programação

para <variável> de <inicio> ate <fim> passo

<incremento> faca

<lista de comandos>

fimpara

Estrutura de repetição PARA

60

Page 61: Algoritmos e Lógica de Programação

Estrutura de repetição PARA

algoritmo "Conta10_com_PARA"

//Este algoritmo exibirá os número de 1 até 10

var

contador : inteiro //Variável de controle

inicio

//Laço de repetição

para contador de 1 ate 10 passo 1 faca

escreval(contador)

fimpara

fimalgoritmo

61

Page 62: Algoritmos e Lógica de Programação

Saiba mais...

Estas notas de aula foram adaptadas e

compiladas a partir dos seguintes textos

disponíveis na Internet:

www.xiscanoe.org

www.facape.br/carlos/al/

www.inf.ufsc.br/~vania/teaching/ine5201/index.html

thyagomaia.net/algoritmos/

www.univasf.edu.br/~mario.godoy/Disciplina-Algoritmos.htm

Prof. Carlos Alberto - FACAPE

Consulte o blog para materiais complementares e

exercícios resolvidos

http://www.josecintra.com/blog