introdução à lógica de programação

78
Introdução à Lógica de Programação www.devtrainer.com.br Andre R. Agostinho Lazaro F. Lima

Upload: andre-rocha-agostinho

Post on 12-Apr-2017

129 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Introdução à Lógica de Programação

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

www.devtrainer.com.br

Andre R. Agostinho Lazaro F. Lima

Page 2: Introdução à Lógica de Programação

Índice {

LógicaO que é lógica?A lógica no cotidianoPrincípios da lógica clássicaTipos de lógicas

Linguagem de ProgramaçãoUm breve históriaComo funciona uma LprogTipos de Lprog

Programação funcionalProgramação estruturada

IntroduçãoVariáveis e tipos de dadosOperadoresEstruturas de decisõesEstruturas de repetições

Programação orientada à objetosIntroduçãoCriando e utilizando objetosTécnicas de OO

HerançaPolimorfismoSobrecargaEncapsulamentoInterfaces

Lógica de ProgramaçãoO que é lógica de programação?Conceito de E/S e ProcessamentoOperadores LógicosAlgoritmos

O que é algoritmo?Características Métodos para criaçãoExercícios

FluxogramaO que é um fluxograma?SimbologiaExemplo de diagrama

Exercícios

Desafio de lógica

Exercícios

Desafio de lógica

Exercícios

Desafio de lógica

Page 3: Introdução à Lógica de Programação

Lógica

Page 4: Introdução à Lógica de Programação

O que é Lógica?

Do grego “logos”. Significa ideia, argumento, pensamento...

Lógica é uma ciência matemática fortemente ligada a Filosofia.

Sendo o pensamento uma manifestação deconhecimento,considerando que o conhecimento busca a verdade através de regras

Lógica faz uso das conclusões levantadas através de proposições.

Lógica

Page 5: Introdução à Lógica de Programação

Proposição: Toda proposição é uma frase mas nem toda frase é uma proposição; Uma frase é uma proposição apenas quando admite um dos dois valores lógicos: Falso (F)ou Verdadeiro (V).

Exemplos de não proposições Quer uma xícara de café?Eu não estou bem certo se esta cor me agrada

Exemplo de proposições O número 7 é impar (V)Curitiba é capital de Santa Catarina (F)

O que é Lógica?

Lógica

Page 6: Introdução à Lógica de Programação

Sempre que pensamos, o raciocínio e a lógica

nos acompanham necessariamente.

Também quando falamos, pois a palavra falada é

a representação do pensamento; e, visto que a

palavra escrita é a representação da palavra

falada, também pensamos quando escrevemos,

utilizando a Lógica

Percebemos a importância da Lógica na nossa vida não

só na teoria, como também na prática, já que quando

queremos pensar, falar ou escrever corretamente

precisamos colocar em Ordem o Pensamento, isto é,

utilizar a Lógica.

A lógica no cotidiano

Lógica

Page 7: Introdução à Lógica de Programação

Exemplos:

a) A gaveta está fechada.A bala está na gaveta.Preciso primeiro abrir a gaveta, para depois pegar a bala.

b) João é mais velho que José.Marcelo é mais novo que José.Portanto, João é mais velho que Marcelo.

A lógica no cotidiano

Lógica

Page 8: Introdução à Lógica de Programação

O sistema lógico desenvolvido por Aristóteles foi o Primeiro estudo formal do raciocínio.

Aristóteles definiu os seguintes princípios centrais da lógica:

– Princípio da não-contradição – Princípio do terceiro excluído – Princípio de identidade

Esses princípios deram origem a Lógica Clássica ou LógicaAristotélica.

A Lógica Clássica é a base para todos os outros tipos de lógica.

Princípios da lógica clássica

Lógica

Page 9: Introdução à Lógica de Programação

O princípio da não-contradição dizque nenhuma afirmação pode ser verdadeira e falsa ao mesmo tempo.

Ex: Carlos é programador

Esta afirmação não pode ser verdade efalsa ao mesmo tempo.

Princípios da lógica clássica

Lógica

Programador

Não Programador

Page 10: Introdução à Lógica de Programação

O princípio do terceiro excluído diz que uma proposição só pode ser verdadeira se não for falsa e só pode ser falsa se não for verdadeira, porque o terceiro valor é excluído.

Ex: Carlos é programador ou não é programador

Ou Carlos é programador ou não é.Não existe uma terceira possibilidade.

Princípios da lógica clássica

Lógica

Page 11: Introdução à Lógica de Programação

O princípio da identidade diz que todo objeto é idêntico a si.

Seja, a = a e b = b, 'a' sempre será igual 'a', mesmo se afirmarmos que a = b ainda podemos afirmar que a = a e b = b.

Ex: Carlos é pai de família e um grande programador.

Apesar das atribuições, Carlos continua sendo “Carlos”, independente de qualquer atribuição continuará sendo unicamente ele mesmo.

Princípios da lógica clássica

Lógica

=

Page 12: Introdução à Lógica de Programação

Lógica

Clássica (Aristotélica) Anti-Clássica

Formal Outras Fuzzy Outras

Tipos de lógica

Lógica

Page 13: Introdução à Lógica de Programação

Lógica Clássica segue os princípios de Aristóteles:

• Princípio da não-contradição • Princípio do terceiro excluído • Princípio de identidade

Tipos de lógica

Lógica

Page 14: Introdução à Lógica de Programação

A Lógica Formal, também chamada de Lógica Simbólica, preocupa-se, basicamente, com a estrutura do raciocínio.

Na Lógica Formal os conceitos são rigorosamente definidos, e as orações são transformadas em notações simbólicas precisas, compactas e não ambíguas.

Exemplop: 1 + 2 = 3A proposição acima é verdadeira

Tipos de lógica

Lógica

Page 15: Introdução à Lógica de Programação

Outros tipos de lógicas clássicas:

• Lógica modal: Agrega à lógica clássica o princípio das possibilidades.

Clássica: "se amanhã chover, vou viajarModal: "é possível que eu viaje se não chover”

• Lógica epistêmica: também chamada "lógica do conhecimento", agrega o princípio da certeza, ou da incerteza.

"pode ser que haja vida em outros planetas” "não se pode saber se duendes existem ou não”

Tipos de lógica

Lógica

Page 16: Introdução à Lógica de Programação

Lógicas anti-clássicas:São formas de lógica que derrubam pelo menos um dos três princípios fundamentais da lógica clássica.

Tipos de lógica

Lógica

Princípio da não-contradição Princípio do terceiro excluído Princípio de identidade

Page 17: Introdução à Lógica de Programação

Lógica paraconsistente: É uma forma de lógica onde não existe o princípio da contradição. Nesse tipo de lógica, tanto as sentenças afirmativas quanto as negativas podem ser falsas ou verdadeiras

Um exemplo: "fulano é cego, mas vê". Ele pode ser cego para ver algumas coisas, e não-cego para veroutras coisas.

Tipos de lógica

Lógica

Page 18: Introdução à Lógica de Programação

Lógica paracompleta: Derruba o princípio do terceiro excluído, isto é, uma oração pode não ser totalmente verdadeira, nem totalmente falsa.

Exemplo:"fulano conhece a China". Se ele nunca esteve lá, essa oração não é verdadeira. Mas se mesmo nunca tendo estado lá ele estudou a história da China por livros, essa oração também não é falsa.

Tipos de lógica

Lógica

Page 19: Introdução à Lógica de Programação

Lógica fuzzy ou Lógica Difusa ou Lógica Nebulosa:Trabalha com o conceito de graus de pertinência.

Clássica: "se algo é quente, não é frio" Fuzzy: "algo é 30% quente, 25% morno e 45% frio".

Tipos de lógica

Lógica

Page 20: Introdução à Lógica de Programação

Exercícios

Lógica

1) Dê continuidade a sequência abaixo:1, 8, 13, 20, 25, 32, 37....

2) Qual foi o padrão identificado para esta sequência? Explique.

3) Classifique as proposições abaixo quanto ao tipo de lógica:1- Lógica Difusa 2- Lógica Clássica 3- Lógica paraconsciente 4- Paracompleta 5- Modal

( ) “Brasil é pentacampeão mundial de futebol” ( ) “Se chover amanhã, eu irei ao parque”( ) “Meu amigo conhece a Alemanha”( ) ”Marcelo não tem dinheiro, mas comprou um carro”( ) “João tem 30% de chance de vencer , 40% de perder e o restante de empatar”

4) Assinale Verdadeiro ou Falso as alternativas abaixo:( ) A principal lei da lógica clássica é a lei da autoafirmação, que reforça a verdade sobre a preposição( ) Na lógica difusa é utilizado as leis da lógica clássica mais as leis da lógica anticlássica( ) A lei do terceiro excluído diz que a terceira opção é inexistente em uma preposição, ou seja, trabalha somente com valores boleanos ( ) Lógica esta ligada diretamente com matemática e filosofia

5) Se colhermos os valores preenchidos (V/F) acima, qual será o resultado final do seu teste utilizando os conceitos da lógica clássica e utilizando os conceitos da lógica difusa? Explique.

Page 21: Introdução à Lógica de Programação

Desafio

Lógica

Em um acampamento militar, o sargento ordenou ao soldado que ele fosse ao poço pegar exatamente quatro litros de água. O sargento entregou ao soldado um balde com a capacidade para cinco litros e outro com capacidade para três litros. O que o soldado deve fazer para entregar ao sargento os exatos quatro litros de água exigidos?

Page 22: Introdução à Lógica de Programação

Lógica de Programação

Page 23: Introdução à Lógica de Programação

Lógica especializada na área computacional com o objetivo de desenvolver sistemas.

Lógica de programação utiliza em boa parte os princípios da lógica clássica e alguns casos lógica anti-clássica (fuzzy).

Em desenvolvimento de sistemas computacionais a lógica de programação é empregada a todo momento, desde um simples programa com saida em video à complexo ERP ou CRM.

Na lógica de programação é muito comum utilizarmosproposições com conjunções, ou seja operadores lógicos binários.

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

Lógica de Programação

Page 24: Introdução à Lógica de Programação

Em lógica de programação os conceitos de entrada e saida (Input/Ouput)junto com o processamento são indispensáveis.

Um depende do outro para se obter um resultado.

Vejamos algumas analogias

Conceito de E/S e Processamento

Lógica de Programação

Page 25: Introdução à Lógica de Programação

Entrada Processamento Saída

Percepção das impressões sensoriais

Processo de pensamentoUtilizamos a nossa memóriaPara executar inúmeros processos como controlar, comparar,combinar, deduzir....

Resultado

Conceito de E/S e Processamento

Lógica de Programação

Page 26: Introdução à Lógica de Programação

Entrada Processamento Saída

Conceito de E/S e Processamento

Lógica de Programação

Page 27: Introdução à Lógica de Programação

SOFramework .NET

Compilador C#

Entrada Processamento Saída

Conceito de E/S e Processamento

Lógica de Programação

Page 28: Introdução à Lógica de Programação

Entrada Processamento Saída

A = 5B = 9 A > B FALSO

Conceito de E/S e Processamento

Lógica de Programação

Page 29: Introdução à Lógica de Programação

Operadores lógicos podem ser facilmente representados por uma tabela verdade. Tabela verdade é uma tabela matemática usada em lógica para determinar se uma oumais proposições são validas ou não.

Exemplo de tabela verdade:

A B A^BV V V

V F F

F V F

F F F

Operadores Lógicos

Lógica de Programação

Page 30: Introdução à Lógica de Programação

Os operadores lógicos mais comuns são:

• Negação• Conjunção (E)• Disjunção (OU)

E temos os operadores lógicos criados a partir dos citados acima:

• Condicional (Se... Então) [Implicação]• Bicondicional (Se e somente se) [Equivalência]• Disjunção Exclusiva (XOR)

Operadores Lógicos

Lógica de Programação

Page 31: Introdução à Lógica de Programação

Negação

A ~AV F

F V

Exemplo em linguagem C#:

bool a = true;bool b = !a;Console.WriteLine(b.ToString());

A negação da proposição a é a proposição ~a, de maneira que se a é verdade então ~a é falso, e vice-versa

Operadores Lógicos

Lógica de Programação

Page 32: Introdução à Lógica de Programação

Conjunção (E)

A B A^BV V V

V F F

F V F

F F F

Exemplo em linguagem C#:

bool a = true;bool b = false;bool c = a&&b;Console.WriteLine(c.ToString());

Verdade = somente se os dois operandos forem verdadeiros

Operadores Lógicos

Lógica de Programação

Page 33: Introdução à Lógica de Programação

Disjunção (OU)

A B AvBV V V

V F V

F V V

F F F

Exemplo em linguagem C#:

bool a = true;bool b = false;bool c = a||b;Console.WriteLine(c.ToString());

Falso = somente se ambos os operandos forem falsos

Operadores Lógicos

Lógica de Programação

Page 34: Introdução à Lógica de Programação

Condicional (Se... Então) [Implicação]

A B A→BV V V

V F F

F V V

F F V

Exemplo em linguagem C#:bool a = true;bool b = false;bool c; if (a && !b) { c = false; } else { c = true; } Console.WriteLine(c.ToString());

Falso = Se o primeiro operando for verdade e o segundo operador for falso

Operadores Lógicos

Lógica de Programação

Page 35: Introdução à Lógica de Programação

Bicondicional (Se e somente se) [Equivalência]

Exemplo em linguagem C#:bool a = true;bool b = false;bool c; if ((a&& b ) ||(!b&&!a)){ c = false; } else { c = true; } Console.WriteLine(c.ToString());

A B A↔BV V V

V F F

F V F

F F V

Verdade = Ambos operandos forem falsos ou ambos verdadeiros

Operadores Lógicos

Lógica de Programação

Page 36: Introdução à Lógica de Programação

Disjunção Exclusiva (Ou... ou XOR)

A B A∨BV V F

V F V

F V V

F F F

Exemplo em linguagem C#:

Verdade = Apenas um dos operandos for verdadeiro

bool a = false;bool b = true;bool c; if (a^b) { c = true; } else { c = false; } Console.WriteLine(c.ToString());

Operadores Lógicos

Lógica de Programação

Page 37: Introdução à Lógica de Programação

“Seqüência de passos que visam atingir um objetivo bem definido.”

Construir algoritmos é o objetivo fundamental de toda a programação

Pegue 4 ovosPegue 2 xícaras de açúcarPegue 3 xícaras de farinha de trigo1 copo de suco de laranja ( 250ml)1 colher de sopa de fermento em póPara a cobertura:1 garrafa pequena de leite de coco1 garrafa de leite ( utilize a mesma garrafa do leite de coco como medida)

(...)

O que é um algoritmo?

Lógica de Programação

Page 38: Introdução à Lógica de Programação

Um algoritmo geralmente estabelece um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada, com o objetivo de alcançar a solução de um problema.

Exemplo de padrão de comportamento

Seqüência de números: 1, 6, 11, 16, 21, 26....

Para determinar o sétimo elemento da série, precisamos descobrir qual a sua regra de formatação.

Se analisarmos, os números crescem de 5 em 5 constantemente, podemos definir então que o sétimo elemento é o último elemento + 5.

Isto é o seu padrão de comportamento.

O que é um algoritmo?

Lógica de Programação

Page 39: Introdução à Lógica de Programação

Podemos, então, descrever uma atividade bem cotidiana, como, por exemplo, trocar uma lâmpada.

Apesar de aparentemente óbvias demais, muitas vezes fazemos esse tipo de atividade sem percebermos seus pequenos detalhes.

Vejamos se ela fosse descrita passo a passo:

• Pegue a escada;• Posicione-a embaixo da lâmpada; • Busque uma lâmpada nova;• Suba na escada;• Retire a lâmpada velha;• Coloque a lâmpada nova.

O que é um algoritmo?

Lógica de Programação

Page 40: Introdução à Lógica de Programação

Todo algoritmo deve apresentar algumas características básicas:

• Ter início e fim;

• Estar livre de ambigüidade

• Capacidade de receber dado(s) de entrada (Input)

• Poder gerar informações de saída (Output);

• Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito).

Algoritmo: Características

Lógica de Programação

Page 41: Introdução à Lógica de Programação

Interpretar a questão e procurar entender o que realmente deve ser feito. É justamente nesta fase que podemos enxergar uma solução ao problema sem antes ter todos os passos definidos.

Identificar entrada e saída de dados. Por exemplo, “Comprar uma lâmpadanova” é uma entrada de dados, “Colocar a lâmpada nova no bocal” é uma saida esperada.

Determinar o que deve ser feito (passos) para transformar as entradas determinadas nas saídas específicas. Sabemos por exemplo que precisamos colocar a lâmpada nova no bocal, porem o que precisa ser feito para isso?

Algoritmo: métodos para criação

Lógica de Programação

Page 42: Introdução à Lógica de Programação

Imagine o seguinte problema: Calcular a média final dos alunos da 8ª Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4.

Onde:

Média Final = P1 + P2 + P3 + P4 4

Para montar o algoritmo proposto, faremos três perguntas:

a) Quais são os dados de entrada?b) Qual será o processamento a ser utilizado?c) Quais serão os dados de saída?

Algoritmo: estudo de caso

Lógica de Programação

Page 43: Introdução à Lógica de Programação

a) Quais são os dados de entrada?R: Os dados de entrada são P1, P2, P3 e P4

b) Qual será o processamento a ser utilizado?R: O procedimento será somar todos os dados de entrada e dividi-los por 4

c) Quais serão os dados de saída?R: O dado de saída será a média final

Algoritmo

Receba a nota da prova1Receba a nota de prova2Receba a nota de prova3Receba a nota da prova4Some todas as notas e divida o resultado por 4Mostre o resultado da divisão

Algoritmo: estudo de caso

Lógica de Programação

Page 44: Introdução à Lógica de Programação

Podemos definir um fluxograma como uma forma de representar graficamente um algoritmo.

Fluxogramas tem o intuito de facilitar visualmente a compreensão, além de uma organização mais ampla que a textual

Pegue 4 ovosPegue 2 xícaras de açúcarPegue 3 xícaras de farinha de trigo1 copo de suco de laranja ( 250ml)1 colher de sopa de fermento em póPara a cobertura:1 garrafa pequena de leite de coco1 garrafa de leite ( utilize a mesma garrafa do leite de coco como medida)

(...)

Passo 1

Inicio

Passo 2

Passo 3

Fim

O que é um fluxograma?

Lógica de Programação

Page 45: Introdução à Lógica de Programação

Símbolo Descrição Função

Terminal Símbolo que indica o inicio ou o fim de um processamento. Ex: inicio do algoritmo

Processamento Símbolo de processamento em geral.Ex: cálculo de dois números

Entrada de dadomanual

Símbolo que indica a entrada de dados através do teclado. Ex: digitar a nota da prova 1

Exibir Símbolo que mostra informações ou exibe resultados.Ex: mostre o resultado do cálculo

Conectar Símbolo utilizado para conectar duas partes do digrama de bloco.

Comparar Símbolo utilizado para comparação entre expressões. Ex: código <= 1000 (sim/não)

Fluxograma: Simbologia

Lógica de Programação

Page 46: Introdução à Lógica de Programação

Recebe nota p1

Inicio

Recebe nota p2

Fim

Recebe nota p3

Recebe nota p4

Calcular médiaM = (p1+p2+p3+p4)/4

Exibir na tela

Fluxograma: exemplo

Lógica de Programação

Page 47: Introdução à Lógica de Programação

Exercícios

Lógica de Programação

1) Faça um algoritmo para enviar um e-mail com anexo (via webmail) para um destinatário qualquer.

2) Usando a simbologia de fluxograma, represente graficamente o seu algoritmo acima.

3) Preencha as saídas nas tabelas verdades abaixo:

A B A^B (e)

V V

V F

F V

F F

A ~A

V

F

A B AvB(ou)

V V

V F

F V

F F

a) b)

c)

Page 48: Introdução à Lógica de Programação

DesafioUm homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma das três cargas que são: um lobo, um bode e um maço de alfafas. Observe as leis naturais: o lobo é carnívoro e o bode é herbívoro. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas.

Lógica de Programação

Page 49: Introdução à Lógica de Programação

Linguagem de Programação

Page 50: Introdução à Lógica de Programação

O primeiro projeto de linguagem de programaçãosurgiu para um computador que não existia, sendo idealizada por Ada Lovelace em 1842.

Ada Lovelace criou um algoritmo para o cálculo da

sequência de Bernoulli usando a máquina analítica de Charles Babbage

Da década de 70, o departamento deDefesa americano criou a linguagemADA em homenagem a esta primeira programadora.

Uma breve história

Linguagem de programação

Page 51: Introdução à Lógica de Programação

Assembly (anos 50)O Assembly foi provavelmente a primeira linguagem de programação da história, surgida na década de 50, época em que os computadores ainda usavam válvulas. A idéia do assembly é usar um comando em substituição a cada instrução de máquina (códigos binários.)

Fortran (anos 50)O Fortran foi uma das primeiras linguagens de alto nível da história. Enquanto o Assembly é chamado de linguagem de baixo nível, por nele utilizarmos diretamente as instruções e endereços do processador e memória, numa linguagem de alto nível temos várias funções prontas, o que facilita muito a programação.

Cobol (anos 50)Esta linguagem foi desenvolvida no final da década de 50, com o objetivo de ser uma plataforma de desenvolvimento para aplicações bancárias e financeiras em geral. Comparado com o Pascal e o Assembly, comuns na época, o Cobol é uma linguagem bastante amigável, o que garantiu uma grande aceitação. Até hoje esta linguagem é usada em muitos sistemas bancários, o que explica a grande procura por programadores experientes nesta linguagem na época do bug do ano 2000.

Pascal (anos 60)Linguagem de alto nível, criada durante a década de 60.

C (anos 70)O C foi desenvolvido durante a década de 70, mas ainda é largamente utilizado. A grande vantagem do C é permitir escrever tanto programas extremamente otimizados para a máquina, como seria possível apenas em assembly, e ao mesmo tempo vir com várias funções prontas, como uma linguagem de alto nível.

Uma breve história

Linguagem de programação

Page 52: Introdução à Lógica de Programação

C++ (anos 70-80)O C++ mantém os recursos do C original, mas traz muitos recursos novos, como recursos orientados a objetos.

Visual Basic (anos 80-90)Linguagem visual

Linguagens atuais (anos 90-atual)Vbscript, Javascript, PHP, Pearl, CGI, Java, C#....

Uma breve história

Linguagem de programação

Page 53: Introdução à Lógica de Programação

HARDWARE

SO

Compilador

Linguagem de Programação X

Compilador de Linguagem de Programação X

Programa feito em Linguagem de Programação X

1010101010101010010101011010101011010 0 01 10 110101 0101 10 01 10

Funcionamento de um LProg

Linguagem de programação

Page 54: Introdução à Lógica de Programação

Programação FuncionalProgramação EstruturadaProgramação Orientada à Objetos

Tipos de LProg

Linguagem de programação

Page 55: Introdução à Lógica de Programação

Caracteriza-se principalmente por permitir declarar e chamar a funções dentro de outras funções.

Programação funcional é uma linguagem matemática. Sua linguagem não é intuitiva para escrita, porém tem um grande poder computacional para cálculo.

Exemplo de linguagem:

Haskell

Programação funcional

Linguagem de programação

Page 56: Introdução à Lógica de Programação

Modo clássico de linguagem onde estruturas de codigos são criadas de forma hierárquicas ou sequenciais.

Exemplos de linguagens: C, Cobol, Pascal...

Características:- Top-dow: se descompõe em etapas ou estruturas hierárquicas.

Existem três tipos de estruturas básicas: - Seqüenciais: cada ação segue a outra ação seqüencialmente. A saída de uma ação é a entrada de outra. - Seletivas: nestas estruturas avaliam-se as condições e em função do resultado das mesmas realizam-se

umas ações ou outras. Utilizam-se expressões lógicas. - Repetitivas: são seqüências de instruções que se repetem um número determinado de vezes.

Exemplo de linguagem:C

Programação estruturada: Introdução

Linguagem de programação

Page 57: Introdução à Lógica de Programação

Programação estruturada: Variáveis e tipos de dados

Linguagem de programação

Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado.

Variáveis devem receber nomes para poderem ser referenciadas e modificadas quando necessário.

Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e as vezes um valor inicial.

Tipos podem ser por exemplo: inteiros, reais, lógicos, caracteres, etc. As expressões combinam variáveis e constantes para calcular novos valores.

0A3D34B

0A1F35B

0A3ED4B

“Olá”

68

true

StackHeapstring saudacao = “Olá”;int number = 68;bool status = !0;

Page 58: Introdução à Lógica de Programação

Programação estruturada: Variáveis e tipos de dados

Linguagem de programação

Exemplo de uso de variáveis (C#)

single p1 =4.0;single p2 =5.0;single p3 =2.0;single p4 =6.0;

single media = (p1+p2+p3+p4)/4;

Console.Writeln(media.ToString());

0A3D34B

0A1F35B

0A3ED4B

0A1ED4B

4.0

5.0

2.0

6.0

StackHeap

0A3EC4B 4,25

Tipos mais comuns:

intfloat / singleboolchar

Page 59: Introdução à Lógica de Programação

Programação estruturada: OperadoresLinguagem de programação

Operação SímboloAdição +Subtração -Multiplicação *Divisão /Exponenciação **

Descrição SímboloIgual a =Diferente de <>Maior que >Menor que <Maior ou igual a >=Menor ou igual a <=

E ANDOU ORNÃO NOT

Matemáticos

Lógicos

Relacionais

Page 60: Introdução à Lógica de Programação

Programação estruturada: OperadoresLinguagem de programação

Matemáticos

Lógicos

Relacionais

Exemplos:

3 * (1 – 2) + 4 * 2 = 5

Expressão ResultadoA = B FalsoA <> B VerdadeiroA > B VerdadeiroA < B FalsoA >= B VerdadeiroA <= B Falso

Tendo duas variáveis A = 5 e B = 3. Os resultados das expressões seriam:

Expressões ResultadoA = B AND B > C FalsoA <> B OR B < C VerdadeiroA > B NOT VerdadeiroA < B AND B > C VerdadeiroA >= B OR B = C FalsoA <= B NOT Falso

Três variáveis A = 5, B = 8 e C =1Os resultados das expressões seriam:

Page 61: Introdução à Lógica de Programação

Programação estruturada: Estrutura de decisõesLinguagem de programação

A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando, ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute determinado comando.

Imagine um algoritmo que determinado aluno somente estará aprovado se sua média for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria. SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO

Exemplo de uso em C#

if(media>=5.0){ Console.write(“Aprovado”);};

Page 62: Introdução à Lógica de Programação

Programação estruturada: Estrutura de decisõesLinguagem de programação

Caso a condição seja “verdadeira” o comando da condição será executado, caso contrário o comando da condição “falsa” será executado. SE MÉDIA >= 5.0 ENTÃO ALUNO APROVADOSENÃO ALUNO REPROVADO

Exemplo de uso em C#

if(media>=5.0){ Console.write(“Aprovado”);}else{ Console.write(“Reprovado”);};

Page 63: Introdução à Lógica de Programação

Programação estruturada: Estrutura de decisõesLinguagem de programação

A estrutura de decisão mais completa seria SE/SE NÃO/ SE NÃO SE SE HORA >= 6 AND HORA < 12 BOM DIASE NÃO SE HORA >=12 AND HORA <= 18 BOA TARDESE NÃO BOA NOITE

Exemplo de uso em C#

if(hora >= 6 && hora < 12){ Console.write(“Bom dia!”);}elseif(hora >= 12 && hora <= 18){ Console.write(“Boa tarde”);};else{ Console.write(“Boa noite”);};

Page 64: Introdução à Lógica de Programação

Programação estrutural: Estrutura de repetiçõesLinguagem de programação

Utilizamos os comandos de repetição quando desejamos que um determinado conjunto de instruções ou comandos sejam executados um número definido ou indefinido de vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja alcançado.

Faça Enquanto x, processar... While...

Faça Até que x, processar... Do... While...

Processar..., Enquanto x While...

Processar..., Até que x Do... While...

Para... Até... Seguinte For...

Page 65: Introdução à Lógica de Programação

Programação estrutural: Estrutura de repetiçõesLinguagem de programação

Exemplos de repetições:

int i=0;while(i<50){ Console.write(i.ToString()); i++; //ou i=i+1}

Enquanto i for menor que 50

Faça: - Imprima o i na tela - Acrescente 1 em i - Pula para o próximo

for(i=0;i<50;i++){ Console.write(i.ToString());}

Para i saindo de 0, até i<50, acrescentando de 1 em 1

Faça: - Imprima o i na tela - Pula para o próximo

Page 66: Introdução à Lógica de Programação

Na programação orientada à objetos temos também todo o poder da linguagem estruturada, porém, com a possibilidade de criação e reutilização de objetos.

Paradigmas da OOUm objeto é uma estrutura que contem características (propriedades) e ações (métodos). Em um programa OO temos toda sua composição feita por diversos objetos, dos mais simples aos mais complexos.

Exemplo de objeto:Carro é verdeCarro tem 4 rodasCarro anda

Programação OO: Introdução

Linguagem de programação

Page 67: Introdução à Lógica de Programação

Modelando OO (Técnica modelo de domínio)

Substantivos: “Carro”

Adjetivos: “é Verde”, “tem 4 rodas”

Verbos: “Anda”

Programação OO: Criando e utilizando objetos

Linguagem de programação

Page 68: Introdução à Lógica de Programação

Modelando OO (Técnica modelo de domínio)

Substantivos = ClasseAdjetivos = PropriedadesVerbos = Métodos (Ações)

= Objeto

Programação OO: Criando e utilizando objetos

Linguagem de programação

Page 69: Introdução à Lógica de Programação

Codificando um objeto Carro (Exemplo em C#)public class Car{ private string _color; private int _wheels;

public void Car(){ _color = “Verde”;_wheels = 4;}

public string getColor(){ return _color;}

public int getWheels(){ return _wheels;}

public void Run() { //Implementação de um método de movimento}}

Construtor do objeto (Inicia variáveis)

Propriedade que Retorna a cor do carro

Propriedade que Retorna a qtde de rodas

Método que executará uma ação: Andar

Programação OO: Criando e utilizando objetos

Linguagem de programação

Page 70: Introdução à Lógica de Programação

Utilizando um objeto Carro (Exemplo em C#)

Car carro = new Car ();Console.WriteLn(carro.getColor.ToString());Console.WriteLn(carro.getWheelsToString());

Programação OO: Criando e utilizando objetos

Linguagem de programação

“Verde”4

O exemplo do objeto carro, embora simples, é um ótimo exemplo para conhecermos um pouco de OO. Em um sistema de imóveis por exemplo, teríamos classes como: imóvel, corretor, cliente... Todas elas com regras de negócios bem definidas e relacionadas entre si.

Page 71: Introdução à Lógica de Programação

Programação OO: Técnicas

Linguagem de programação

No conceito de OO buscamos sempre equiparar o desenvolvimento de uma solução com o mundo real. No modelo anterior, a modelagem simples ainda não utilizava as poderosas técnicas da OO como:

- Polimorfismo- Herança- Sobrecarga- Interfaces

Essas técnicas fazem com que uma linguagem OO tenha diversas vantagens como:- Abstração - Otimização - Reutilização- Organização

São essas técnicas que de fato define uma linguagem como orientada a objetos

Page 72: Introdução à Lógica de Programação

Programação OO: Herança

Linguagem de programação

VEÍCULO

AUTOMÓVEL MOTO

As classes que utilizam herança (filhas), herdam características e comportamentos da classe pai.

RodasMotorFreio

RodasMotorFreio

RodasMotorFreio

Page 73: Introdução à Lógica de Programação

Programação OO: Polimorfismo

Linguagem de programação

Polimorfismo consiste em possibilitar versões diferenciadas de características ou comportamentos para um determinado método ou propriedade.

CARRO

FERRARI GOL

Correr: 80km/h

Correr: 350km/h Correr: 180km/h

Page 74: Introdução à Lógica de Programação

Programação OO: Sobrecarga

Linguagem de programação

Sobrecarga possibilita um método ter diferente versões de assinaturas.Exemplo:

FERRARICorrer(pDistancia)Correr(pDistancia,pParada)Correr()

Page 75: Introdução à Lógica de Programação

Programação OO: Interfaces

Linguagem de programação

Interface ou template como é conhecido em outras linguagens, possibilita uma classe utilizar um padrão ou contrato, para criação de seus métodos ou propriedades. Diferente da herança onde uma classe pai tem seus métodos definidos e estes repassados aos seus filhos, uma interface não tem implementação. É composta por assinaturas, que deverão ser obrigatoriamente implementadas pela classe que está referenciando.

INTERFACETRANSPORTE

Locomocao(){}

VEÍCULO AERONAVELocomocao(){terrestre} Locomocao(){aerea}

Page 76: Introdução à Lógica de Programação

Exercícios

Linguagem de programação

1) Faça a modelagem de objetos utilizando o modelo de domínio.

a) Imóvel, Quartos, Cozinha, Dormitórios, Alugar, Venderb) Curso, Titulo, Vagas, Data, Matricularc) Pessoa, Pessoa Física, Pessoa Jurídica, CPF, RG, Cadastrar, Atualizar

Page 77: Introdução à Lógica de Programação

Desafio3 missionários e 3 canibais precisam atravessar um rio. No barco, cabem apenas 2 pessoas por travessia e o barco não retorna sozinho. Em nenhum momento pode-se ter menos missionários que canibais nas margens. Como é possível realizar esta travessia?

Linguagem de programação

Page 78: Introdução à Lógica de Programação

} Fim