Conceitos Fundamentais de Algoritmos e Programação para iniciantes [email protected]...

102
Conceitos Fundamentais de Algoritmos e Programação para iniciantes [email protected] REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson Fidalgo (UFPE) www.xiscanoe.org

Transcript of Conceitos Fundamentais de Algoritmos e Programação para iniciantes [email protected]...

Page 1: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Conceitos Fundamentais de Algoritmos

e Programação para iniciantes

[email protected]

REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson Fidalgo (UFPE)

www.xiscanoe.org

Page 2: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Algoritmo Textual Informal

• 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, por último, as claras em neve

– Unte uma forma com manteiga e leve ao forno para assar

Quão cremoso?!?

De uma vez só?!?

Quanto tempo?!?

Quanto tempo?!?

Page 3: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• 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

Algoritmo Textual Informal Refinado

Page 4: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Algoritmo Gráfico-Textual Informal

• Montagem de um Aeromodelo– Material

• Cola especial para plásticos• Estilete• Lixas finas• Durex ou fita crepe• Pregador de roupas, elásticos

Page 5: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Identificação das peças

Algoritmo Gráfico-Textual Informal

Page 6: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Instruções– Leia e entenda as instruções antes de começar a

montagem– Lave as peças com água e detergente. Na lavagem

serão removidos desmoldantes e sujeiras, que dificultam a colagem e a pintura. Faça isto dentro de uma bacia, para evitar perder peças pequenas, que porventura se soltem

– Encontre as peças que devem ser usadas na primeira parte da montagem (figura do slide anterior)

– Lixe as peças com cuidado eliminando as rebarbas– ...

Algoritmo Gráfico-Textual Informal

Page 7: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Troca de pneu

“Abra o porta-mala e verifique se todos acessórios estão lá. Em caso negativo, feche o porta-malas e peça carona a alguém. Em caso positivo, retire o triângulo, posicione-o a cerca de 30 m do carro, e, depois, retire o estepe e o macaco. Levante o carro... “

Algoritmo Textual Informal 2

Page 8: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Troca de pneu

Algoritmo Gráfico Informal

Page 9: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Acessórios OK?

Abre porta-malas

Pega triângulo

Fecha porta-malas

• Troca de pneu (Fluxograma)

Algoritmo Gráfico Semi-formal

Não

Sim

Page 10: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Troca de pneu

abre(porta_malas)

Se acessorio_ok = FALSO

Então

fecha(porta_malas)

espera_carona()

Senão

pega_triangulo()

...

Algoritmo Textual Formal

Page 11: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Problema da Torre de Hanói– Seja a seguinte situação:

• deve-se mover todos os discos do primeiro eixo para o terceiro mantendo-se a ordem original

• em cada movimento, pode-se mover apenas um disco• um disco nunca poderá ser sobreposto por outro maior

Algoritmo: Problemas Complexos

Page 12: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 1:mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

Page 13: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 2:mova disco médio para segundo eixo

Algoritmo: Problemas Complexos

Page 14: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 3:mova disco menor para segundo eixo

Algoritmo: Problemas Complexos

Page 15: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 4:mova disco maior para terceiro eixo

Algoritmo: Problemas Complexos

Page 16: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 5:mova disco menor para primeiro eixo

Algoritmo: Problemas Complexos

Page 17: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 6:mova disco médio para terceiro eixo

Algoritmo: Problemas Complexos

Page 18: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Passo 7:mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

Page 19: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• Seqüência de passos completa:Passo 1: mova disco menor para terceiro eixo

Passo 2: mova disco médio para segundo eixo

Passo 3: mova disco menor para segundo eixo

Passo 4: mova disco maior para terceiro eixo

Passo 5: mova disco menor para primeiro eixo

Passo 6: mova disco médio para terceiro eixo

Passo 7: mova disco menor para terceiro eixo

Algoritmo: Problemas Complexos

Page 20: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Algoritmo: CONCEITO

• O que é um ALGORITMO?

• OBS.: Não existe um algoritmo para construir algoritmos

– a criação de um algoritmo é um exercício de criatividade (conhecimento) e experiência (técnica e prática)

Page 21: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

O que é Programação? = ABSTRAÇÃO!

A realidade é complexa e rica em detalhes!

Page 22: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Abstração

RealidadeRealidade

O que você O que você abstraiabstrai dessa realidade? dessa realidade?

Page 23: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Abstração

O que é abstração?

Page 24: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Abstração

Abstração=

Operação mental que observa a realidade e

captura apenas os aspectos relevantes

para um contexto

Page 25: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.
Page 26: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.
Page 27: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.
Page 28: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

MASLOW

Page 29: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• A tarefa de programar sistemas computacionais envolve o exercício constante da abstração da realidade e sua codificação em uma linguagem de programação

Abstração

RealidadeRealidade

Sistema de Locadora de VeículoSistema de Locadora de Veículo

AbstraçãoAbstração++

ProgramaçãoProgramação

Page 30: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Sistema Computacional

O que é um Sistema Computacional?

Page 31: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Sistema Computacional

Sistema Computacional

SoftwareHardware

Peopleware

Page 32: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Programação de Sistema Computacional

• A programação de um sistema computacional pode ser resumida em 4 passos básicos

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

Page 33: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.
Page 34: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Programação de Sistema Computacional

• Exemplo 1 – Exibir a média de dois números

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

6 , 8 (6 + 8) / 2 7

Page 35: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Programação de Sistema Computacional

• Exemplo 2 – Exibir se o aluno está aprovado ou reprovado

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

UCP

Ana, 5, 3 Se (5+3)/2>=7 aprovadoSenão reprovado

Ana, reprovado

Page 36: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Programação de Sistema Computacional• Tipos de Linguagens de Programação

– 1 - Totalmente codificadas em binário (0´s e 1´s)– 2 - Usa instruções simbólicas para representar os 0´s e 1´s– 3 - Voltadas para facilitar o raciocínio humano

Linguagem

Assembly

( Mnem ô nica )

LOAD R1, val1

LOAD R2, val2

ADD R1, R2

STORE R1, val2

Linguagem

de

M á quina

0010 0001 1110

0010 0010 1111

0001 0001 0010

0011 0001 1111

Linguagem

de

Alto N í vel

val2 = val1+val2

Baixo Nível Alto Nível

(1) (2) (3)

Page 37: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

Page 38: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

Page 39: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

Page 40: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

Page 41: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

– Todo mamífero é animal e todo cavalo é mamífero. Então, todo cavalo é animal

Page 42: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

– Todo mamífero é animal e todo cavalo é mamífero. Então, todo cavalo é animal

Page 43: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

– Todo mamífero é animal e todo cavalo é mamífero. Então, todo cavalo é animal

– Todo mamífero bebe leite e o homem bebe leite. Então, todo homem é mamífero e animal (mas não é um cavalo)

Page 44: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação da lógica

– O quarto está fechado e que meu livro está no quarto. Então, preciso primeiro abrir o quarto para pegar o livro

– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de Ana. Então, Júlia é neta de Rosa e sobrinha de Paula

– Todo mamífero é animal e todo cavalo é mamífero. Então, todo cavalo é animal

– Todo mamífero bebe leite e o homem bebe leite. Então, todo homem é mamífero e animal (mas não é um cavalo)

Page 45: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Atividade 1 (10min)

• Resolva os seguintes problemas de lógica– P1 – Uma lesma deve subir um poste de 10m de

altura. De dia sobe 2m e à noite desce 1m. Em quantos dias atingirá o topo do poste?

– P2 - Três gatos comem três ratos em três minutos. Cem gatos comem cem ratos em quantos minutos?

– P3 - O pai do padre é filho do meu pai. O que eu sou do Padre?

– P4 - Se um bezerro pesa 75 kg mais meio bezerro, quanto pesa um bezerro inteiro?

Page 46: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Atividade 1 (10min)

• Resolva os seguintes problemas de lógica– P5 – Qual o próximo número da seqüência

7,8,10,13,17,?– P6 – Um pai de 80kg e suas 2 filhas (40kg cada),

precisam sair de uma ilha com um barco. Porém a capacidade do barco é de 80kg. Como farão para sair da ilha?

– P7 – Usando uma jangada, um camponês precisa atravessar uma cabra, um leão e um fardo de capim para a outra margem do rio. A jangada só tem lugar para ele e mais outra coisa. O que ele deve fazer para atravessar o rio com seus pertences intactos?

Page 47: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

RESPOSTAS - Atividade 1

• Respostas– R1 - 9(nove) dias. No nono dia a lesma sobe 2(dois) metros,

atinge o topo e evidentemente não desce 1 metro– R2 – 3 (três) minutos– R3 – Tio– R4 – 150 (cento e cinqüenta) kg – R5 – 22– R6 – Vão as duas filhas. Uma delas volta. O pai sai. A outra filha

volta. As duas filhas saem juntas.– R7 - Primeiro leve a cabra, volte e pegue o capim; deixe o capim

e leve a cabra de volta; deixe a cabra e leve o leão, depois é só voltar e pegar a cabra.

Page 48: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

Em Lógica um conceito importanteé o de “Proposição”

Você sabe o que é umaPROPOSIÇÃO?

Page 49: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Proposição: é um enunciado verbal, ao qual deve ser atribuído, sem ambigüidade, um valor lógico verdadeiro (V) ou falso (F). – Exemplos de proposições:

• Robson Fidalgo é Professor (V) • 3 + 5 = 10 (F) • 5 < 8 (V)

– Contra-exemplos de Proposições:• Onde você vai ? • 3 + 5 • Os estudantes jogam vôlei. (quais ?)

Page 50: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Operações Lógicas: são usadas para formar novas proposições a partir de proposições existentes. – Considerando p e q duas proposições genéricas, pode-se

aplicar as seguintes operações lógicas básicas sobre elas

– Definindo a prioridade:• Usar parênteses Ex:((p v q)^(~q)) ou• Obedecer (~) > (^) > (v)

Page 51: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação das operações lógica– Considere:

• p = 7 é primo = (V)• q = 4 é impar = (F)

– Então:• 4 NÃO é impar = ~q = (~F) = (V)• 7 NÃO é primo = ~p = (~V) = (F)

• 7 é primo E 4 NÃO é impar = p ^ ~q = (V ^ (~F)) = (V ^ V) = (V)

• 7 é primo E 4 é impar = p ^ q = (V ^ F) = (F)• 4 é impar E 7 é primo = q ^ p = (F ^ V) = (F)• 4 é impar E 7 NÃO é primo = q ^ ~p = (F ^ (~V)) = (F ^ F) =

(F)

Page 52: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação das operações lógica (Cont.)– Considere:

• p = 7 é primo = (V)• q = 4 é impar = (F)

– Então:• 7 é primo OU 4 NÃO é impar = p v ~q = (V v (~F)) = (V v V)

= (V)• 7 é primo OU 4 é impar = p v q = (V v F) = (V)• 4 é impar OU 7 é primo = q v p = (F v V) = (V)• 4 é impar OU 7 NÃO é primo = q v ~p = (F v (~V)) = (F v

F ) = (F)

Page 53: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Noções de Lógica

• Exemplos de aplicação das operações lógica– Resumindo:

– Ou seja:• Não (~) troca o valor lógico. Se é F passa a ser V e vice-versa

• E (^) só tem valor V quando as duas proposições forem V, basta

uma proposição ser F para o resultado ser F

• OU (v) só tem valor F quando as duas proposições forem F, basta

uma proposição ser V para o resultado ser V

p q p ^ q p v q

V V V V

V F F V

F V F V

F F F F

~p

F

F

V

V

pp qq p ^ qp ^ q p v qp v q

VV VV VV VV

VV FF FF VV

FF VV FF VV

FF FF FF FF

~p~p

FF

FF

VV

VV

Page 54: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Atividade 2

• Considerando p = V e q = F, resolva as seguintes expressões lógicas– ~p– ~q– p ^ q– p v q– (~p) ^ q– (~p) v q– p ^ (~q)– p v (~q)– (~p) ^ (~q)– (~p) v (~q)

Page 55: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

RESPOSTAS - Atividade 2

• Considerando p = V e q = F, resolva as seguintes expressões lógicas– ~p = F– ~q = V– p ^ q = F– p v q = V– (~p) ^ q = F– (~p) v q = F– p ^ (~q) = V– p v (~q) = V– (~p) ^ (~q) = F– (~p) v (~q) = V

Page 56: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

O que éProgramação

de computadores?

INSTRUÇÕES

Page 57: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções Delimitadoras

• Servem para especificar o início e o fim do algoritmo.

início

...

fim

Page 58: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Declaração de Variáveis

• Utilizado para especificar os nomes e os respectivos tipos das variáveis necessárias no algoritmo

declare <variáveis>: <tipo>;onde:<variáveis> - lista de nomes de variáveis

separados por vírgula<tipo> - inteiro, real, caracter, string, lógico

Page 59: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Declaração de Variáveis

• Exemplos:

declare a,b,c: real;

declare nome: string;

declare sexo: caracter;

declare pratica_esporte: lógico;

Page 60: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Bloco de Comentário

• Serve para explicar um determinado trecho do algoritmo, para torna-lo mais claro, facilitando seu entendimento por outras pessoas ou posteriormente.

{ <comentário> }

Exemplo:

{ Isto é um exemplo de comentário }

Page 61: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Entrada

• Usada para ler dados de entrada do algoritmo.

leia(<variáveis>);

onde:

<variáveis> - conterão os dados lidos.

Page 62: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Entrada

• Exemplos:

leia(a,b,c);

leia(nome);

leia(sexo);

leia(pratica_esporte);

Page 63: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Saída• Usada para mostrar os resultados do

processamento dos dados de entrada.

escreva(<resultados>);

onde:

<resultados> - geralmente é o conteúdo de uma ou mais variáveis com a resposta do problema.

Page 64: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Saída

• Exemplos:

escreva(“O valor de D é: ”, D);

escreva(nome, sexo);

escreva(“Pratica esporte.”);

Page 65: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Atribuição

• Utilizado para atribuir um determinado valor a uma variável.

<variável> <expressão>;

onde:

<variável> - nome de uma variável

<expressão> - um valor do mesmo tipo da variável ou uma expressão lógica ou aritmética.

Page 66: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instrução de Atribuição

• Exemplos

D B^2-4*A*C;

nome “Paulo”;

Pratica_Esporte TRUE;

Sexo ‘M’;

Page 67: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Estruturas de Controle

• Baseado na lógica estruturada, Bohn e Jacopini provaram que apenas três estruturas são suficientes para explicar a solução de qualquer problema, inclusive tornando-os estruturados e mais legíveis.

Page 68: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Estruturas de Controle

• São elas:– Estrutura Seqüencial: os comandos ou

instruções vão sendo executados na ordem em que aparecem no algoritmo.

Page 69: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Estruturas de Controle

• Estrutura de Repetição: comandos são executados repetidas vezes até que uma condição de parada seja satisfeita

Page 70: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Estruturas de Controle

• Estrutura de Seleção: Conforme o resultado de uma expressão lógica, determinados comandos são executados e outros não, caracterizando assim uma seleção de comandos

TRUE

FALSE

Page 71: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Seleção

• Tipo simples:se <sentença> então

<comandos>;

fim-se

OBS.:

<comandos> serão executados apenas se <sentença> resultar em TRUE.

Page 72: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Seleção

• Exemplo:

se A>0 então

B A + 1;

A 0;

fim-se

Page 73: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Seleção• Tipo composto:

se <sentença> então <comandos1>;

senão<comandos2>;

fim-seOBS.: <comandos1> serão executados apenas se

<sentença> resultar em TRUE. Em caso contrário, <comandos2> serão executados.

Page 74: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Seleção• Exemplo:

se A>B então

B A + 1;

A 0;

senão

A 0;

B A + 1;

fim-se

Page 75: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Enquanto / Fim-Enquanto

enquanto <sentença> faça

<comandos>;

fim-enquanto;

OBS.:

<comandos> serão executados enquanto <sentença> resultar em TRUE.

Page 76: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Exemplo: enquanto A>0 faça

leia(B);

escreva(B);

A A - 1;

fim-enquanto;

Page 77: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Repita / Até

repita

<comandos>;

até <sentença>;

OBS.:

<comandos> serão executados até que <sentença> resulte em TRUE.

Page 78: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Exemplo:

repita

leia(B);

escreva(B);

A A - 1;

até A<1;

Page 79: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Para / Até / Fim-Parapara <variável> <inicial> até <final> faça

<comandos>;

fim-para;

OBS.:

<variável> - contador do tipo inteiro

<inicial> - valor inicial da variável

<final> - valor final da variável

Page 80: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Instruções de Repetição

• Exemplo:

{ Comandos para escrever 10 vezes uma frase na tela do computador }

para i 1 até 10 faça

escreva(“Último tipo de repetição”);

fim-para;

Page 81: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Estrutura de um Algoritmo

• Um algoritmo em Portugol tem a seguinte estrutura:início

<declaração de variáveis>

<inicialização de variáveis>

<corpo lógico do algoritmo>

fim

Page 82: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

• Estruturas básicas de um algoritmo:

– 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 (pré-definida) de instruções

Page 83: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

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

Fim.

Este algoritmo só usa umaestrutura de seqüência

“Início/Fim”

Page 84: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

• Algoritmo para ligar de um telefone público – SeleçãoE se o telefone público estiver com defeito?

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;

Fim.

Este algoritmo usa uma estrutura de decisão

“Se-então/Senão”

Page 85: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

• Algoritmo para ligar de um telefone público – Repetição

E se o próximo telefone público também estiver com defeito?

Início1. 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 1. ir para o próximo telefone;

2. Até ouvir o sinal de linha Fim.

Este algoritmo usa uma estrutura de repetição

“Repita/Até”

Page 86: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Lógica de Programação & Algoritmo

• Algoritmo para ligar de um telefone público – Repetição

• E se o telefone chamado estiver com defeito?

• E se o telefone chamado estiver ocupado?

• E se acabarem os créditos do cartão telefônico?

• E se ...?

Um algoritmo SEMPRE sofre melhorias sucessivas.

(Técnica de refinamentos sucessivos)

Page 87: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Fluxogramas - Exemplo 1• Achar o valor da expressão: D = B2 - 4AC.

Início

Ler A, B, C D = B^2 - 4*A*C

1

1

Escrever D

Fim

Page 88: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Fluxogramas: Exemplo 2

• Achar o maior de dois números A e B.

Início

Ler A, B

A=B A<B A>B

CompararA com B

Escrever:“A e B iguais”

Fim

Escrever:“A é maior”

Escrever:“B é maior”

Page 89: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Português Estruturado - Exemplo 1

• Achar o valor da expressão: D = B2 - 4AC.

Ler os valores de A, B e C

Calcular a expressão D = B2 - 4AC

Mostrar o resultado desse cálculo

Page 90: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Português Estruturado - Exemplo 2

• Achar o maior de dois números A e B.

Ler dois números A e B

Comparar A com B

Mostrar o resultado dessa comparação

Page 91: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Pseudocódigo - Exemplo 1

• Achar o valor da expressão: D = B2 - 4AC.

Início

Declare A,B,C,D; { Declaração de variáveis }

Leia(A,B,C);

D B^2 - 4*A*C; { Operação de atribuição }

Escreva(D);

Fim.

Page 92: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Pseudocódigo - Exemplo 2

• Achar o maior de dois números A e B. Início

Declare A,B; { Declaração de variáveis }Leia(A,B);Se A = B Então Escreva(“A e B iguais”);Senão Se A>B Então Escreva(“A é maior”);

Senão Escreva(“B é maior”); Fim-Se

Fim-Se Fim.

Page 93: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Atividade 3

• Reescreva corretamente o algoritmo abaixo• Algoritmo aprovação

Início1. Obter as 2 notas do aluno;2. Repita

1. Se Média do aluno >=7, então1. Repita

1. Informar que o aluno está REPROVADO;2. Até Média < 7

2. Senão Média >= 71. Informar que o aluno está APROVADO;

3. Até último aluno;Fim.

Page 94: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

RESPOSTA - Atividade 3• Algoritmo aprovação

Início

1. Repita

1. Obter as 2 notas do aluno;

2. Se Média do aluno >=7, então

1. Informar que o aluno está APROVADO

3. Senão

1. Informar que o aluno está REPROVADO;

2. Até último aluno

Fim

Page 95: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

• #! /usr/bin/perl -w

• my $file = $ARGV[0];

• open NEW, $file;

• my $numero_g=0;• my $numero_c=0;• my $numero_total=0;

• my $um=0;

• while (<NEW>) {• if (/\>/) {• # if ($um == 2) {• # last;• # }• # $um++;• next;• }

• # print $_;

• chomp;

• for ($i=0; $i<length($_); $i++) {• $numero_total++;• if (uc(substr($_,$i,1)) eq "C" ) {• $numero_c++;• }• if (uc(substr($_,$i,1)) eq "G") {• $numero_g++;• }• }• }

• print "Total de Gs : $numero_g \n";• print "Total de Cs : $numero_c \n";• print "Total de bases : $numero_total \n";

• print "Total de GCs (%) : " . (($numero_g + $numero_c) / $numero_total) * 100;

Page 96: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

UM EXERCÍCIO

• Construa um algoritmo para escolher as duas maiores laranjas de um balaio

Page 97: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

1) leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo

2) leia quatro números inteiros e encontre a média aritmética simples entre as que correspondem a números pares. Lembre-se que não pode haver divisão por zero

3) leia 4 notas, calcule a média dessas e escreva: Reprovado (média < 5), Recuperação (média >= 5 e < 7) e Aprovado (média >= 7)

Outros exercícios...

Page 98: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

4) leia a idade de um nadador e exiba sua categoria segundo as regras: A(5 até 7); B(8 até 10); C(11 até 13); D(14 até 18) e E( Idade > 18)

5) leia dois números inteiros, uma operação matemática (+,-,*,/) e faça o calculo destes números segundo a operação lida

6) leia o nome e a idade de três pessoas e informe o nome da pessoa mais velha e o nome da pessoa mais nova. Considere que não existem idades iguais

mais exercícios...

Page 99: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

7) leia os números inteiros A e B e informe se A é múltiplo, divisor ou nada de B

8) leia três números e mostre-os em ordem crescente

9) leia uma milhar e informe se esse número é palíndromo. Exemplos de números palíndromos: 9889, 7337 e 2002

10) leia um número inteiro entre 20 e 59 e mostre seu extenso. Exiba um erro se o número estiver fora do intervalo

ainda mais exercícios...

Page 100: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

AMBIENTES/LINGUAGENS DE PROGRAMAÇÃO

LA PASCAL

declare Var

Início Begin

Fim End

Caracter Char

Inteiro Integer

Real Real

Lógico Boolean

Leia Read

Escreva Write

Page 101: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

AMBIENTES/LINGUAGENS DE PROGRAMAÇÃO

LA C

declare

Início {

Fim }

Caracter Char

Inteiro Int

Real Double

Lógico Boolean

Leia Scanf

Escreva Printf

Page 102: Conceitos Fundamentais de Algoritmos e Programação para iniciantes joa@deinfo.ufrpe.br REFERÊNCIA: Material dos Profs. Reinaldo Gomes (UFRPE) e Robson.

Próximos passos?

• Praticar a leitura e entendimento de Algoritmos de sua área de aplicação

• Aprender uma Linguagem de Programação para Computadores

• Programação!