lógica de programação teoria - professor rogerão araújo · rogerioaraujo.wordpress.com –...

55
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected] 1 Lógica de Lógica de Programação Programação Teoria Teoria

Upload: duongdan

Post on 07-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

1

Lógica de Lógica de ProgramaçãoProgramação

TeoriaTeoria

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

2

TópicosTópicos● Algoritmos

● Critérios para algoritmos● Regras básicas para construção de um algoritmo● Forma geral de um algoritmo

● Exemplo 1 de algoritmo● Variáveis e Constantes

● Variáveis e Constantes x Garagens de carros● Regras para nomes de Variáveis e Constantes

● Itens importantes para um algoritmo● Exemplo 2 de algoritmo

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

3

TópicosTópicos● Tipos de dados

● Classificações de tipos de dados● Tipos de dados primitivos● Operações permitidas para tipos inteiro e real● Operações div e mod● Operadores de comparação para tipos inteiro e real● Operadores de comparação para tipo caractere● Precedência dos operadores aritméticos● Operações permitidas para tipos lógicos● Tabela-verdade para os operadores lógicos● Precedência dos operadores lógicos

● Exemplo 3 de algoritmo

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

4

TópicosTópicos● Exemplo 4 de algoritmo● Marco - Questões● Referências

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

5

AlgoritmosAlgoritmos● O que é um algoritmo?

● É um conjunto finito de passos formalmente definidos para resolução de um problema ou tarefa

● É uma sequência lógica que pode ter um conjunto de valores de entrada para produzir um conjunto de valores de saída

● Corresponde a uma descrição de um padrão de comportamento expresso em termos de um conjunto finito de ações

● O problema solucionado por algoritmo deve ser:● Claro● Bem definido

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

6

AlgoritmosAlgoritmos

EntradaEntrada ProcessamentoProcessamento SaídaSaída

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

7

AlgoritmosAlgoritmos

EntradaEntrada ProcessamentoProcessamento SaídaSaída

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

8

Critérios para algoritmosCritérios para algoritmos● Entrada:

● Zero ou mais valores de entrada● Saída:

● Pelo menos um valor é produzido● Clareza:

● Toda instrução deve ser clara e não ambígua● Efetividade:

● Toda instrução deve ser executável● Finito:

● O algoritmo deve ter um conjunto finito de passos

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

9

Critérios para algoritmosCritérios para algoritmos

EntradaEntrada

ClarezaClareza

SaídaSaída

FinitoFinito

EfetividadeEfetividade

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

10

Regras básicas para construção de um algoritmoRegras básicas para construção de um algoritmo● Usar somente um verbo por frase ● Escrever de uma forma simples para que possa ser entendido

facilmente● Até por pessoas que não trabalham na área

● Usar frases● Curtas● Simples

● Ser objetivo ● Procurar usar palavras que não tenham sentido dúbio

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

11

Forma geral de um algoritmoForma geral de um algoritmo● Algoritmo <nome do algoritmo>;

● const– <identificador> = <valor>;

● var– <identificador>: <tipo>;

● início– <lista de comandos ou instruções>;

● fim

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

12

Exemplo 1 de algoritmoExemplo 1 de algoritmo● Algoritmo preparar macarrão instantâneo;

● var– macarrão: instantâneo;

● início– Coloque o macarrão em um panela com água;– Enquanto não der 3 minutos de duração:

● Deixe o macarrão fervendo na água;– Adicione o tempero que vem junto com o macarrão;– Se o tempero não for o suficiente então:

● Adicione ingredientes a mais como legumes, verduras ou queijo;– Coloque em um prato;– Sirva;

● fim

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

13

Variáveis e ConstantesVariáveis e Constantes● Variáveis e Constantes são recipientes que armazenam

informações de um determinado tipo● Recipiente = endereços de memória

● A diferença entre variáveis e constantes:● As informações contidas nas variáveis podem ser modificadas no

decorrer de um algoritmo● As informações relacionadas a constantes não podem

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

14

Variáveis e ConstantesVariáveis e Constantes● Declaração de variáveis:

● var– <identificador1>, <identificador2>, ...: <tipo1>;– <identificador3>, <identificador4>, ...: <tipo2>;

● Declaração de constantes:● const

– <identificador1> = <valor1>;– <identificador2> = <valor2>;– <identificadorN> = <valorN>;

● O que define o tipo de uma constante é o tipo de valor atribuído a ela

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

15

Variáveis e Constantes x Garagens de carrosVariáveis e Constantes x Garagens de carros● Informação

● Carro● Variáveis

● Garagem numerada com rotatividade de carros● Constantes

● Garagem também identificada, porém sendo particular para apenas um carro de colecionador– Coloquei esse exemplo, pois o carro nunca sairá da garagem

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

16

Variáveis e Constantes x Garagens de carrosVariáveis e Constantes x Garagens de carros

InformaçãoInformação

Variáveis e ConstantesVariáveis e Constantes

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

17

Regras para nomes de Variáveis e ConstantesRegras para nomes de Variáveis e Constantes● Não podem:

● Ter nomes de palavras reservadas (comandos de uma linguagem de programação específica)

● Possuir espaços em branco● Devem iniciar com:

● Letra● Sublinhado (_)

● Podem ter como demais caracteres:● Letras● Números● Sublinhado

● Para algoritmos, a escolha de letras maiúsculas ou minúsculas é indiferente

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

18

Itens importantes para um algoritmoItens importantes para um algoritmo

ItemItem SímboloSímbolo DescriçãoDescrição

Dois pontos : Declara o tipo de uma variável no momento de sua criação

Igualdade = Atribui um valor a uma constante no momento de sua criação

Atribuição := ou ← Atribui a uma variável um valor ou resultado de alguma operação que retorna valor

Ponto e vírgula ; Indica a finalização de uma linha de instrução

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

19

Exemplo 2 de algoritmoExemplo 2 de algoritmo● Algoritmo somaDoisNumerosInteiros;

● var– num1, num2, total: inteiro;

● início– leia(num1, num2);– total := num1 + num2;– escreva(“A soma dos dois números é”, total);

● fim

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

20

Tipos de dadosTipos de dados● São conjuntos de valores que podem:

● Pertencer a uma constante● Ser assumidos por uma variável ou expressão● Ser gerados por uma função

● Alguns autores usam várias classificações, porém ficaremos com duas:● Classificação 1 (mais usual e que será a classificação seguida

neste material):– Primitivos– Derivados

● Classificação 2 (cobrada principalmente pelo CESPE):– Simples (também chamados de Escalares)– Estruturados (também chamados de Compostos)

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

21

Classificações de tipos de dadosClassificações de tipos de dados

Classificação 1Classificação 1 TiposTipos Classificação 2Classificação 2

Primitivos

inteiro

Simples ou Escalares

reallógico

caractere

Derivados

enumeradossubconjuntos

vetores ou arrays

Estruturados ou Compostos

registrosarquivos

conjuntos ou setsreferências ou ponteiros

string

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

22

Tipos de dados primitivosTipos de dados primitivos

TipoTipo Exemplo de conteúdoExemplo de conteúdo

inteiro -19, -6, -2, 0, 3, 7, 256

real -90.42, -32.87, 0, 2, 4.89

lógico V ou F

caractere A, a, B, b, C, c, !, ?, /

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

23

Tipos de dados primitivosTipos de dados primitivos● Os valores possíveis para o tipo inteiro são os números

inteiros● Negativos● Zero● Positivos

● Os valores para o tipo real são números racionais● Normalmente representados por:

– Uma parte inteira– Uma parte fracionária

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

24

Tipos de dados primitivosTipos de dados primitivos● O tipo lógico consiste de dois valores:

● Verdadeiro● Falso

● O tipo caractere consiste de:● Dígitos decimais (0 a 9)● Letras (A a Z)● Sinais especiais (espaço em branco, sinais de pontuação, etc)

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

25

Operações permitidas para tipos inteiro e realOperações permitidas para tipos inteiro e realOperaçãoOperação SímboloSímbolo inteirointeiro realreal

potência pot raiz raiz

raiz quadrada SQRT soma +

subtração - multiplicação * divisão inteira div

resto da divisão resto ou mod divisão /

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

26

Operações div e modOperações div e mod● div retorna o quociente inteiro da divisão entre dois números

inteiros● 19 div 3 = 6

● mod retorna o resto da divisão entre dois números inteiros● 19 mod 3 = 1

19 31 6

mod div

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

27

Operadores de comparaçãoOperadores de comparação

OperadorOperador SímboloSímbolo inteirointeiro realreal caracterecaractere

Igual a = Diferente de ≠ Menor que <

Menor que ou igual a ≤ Maior que >

Maior que ou igual a ≥

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

28

Precedência dos operadores aritméticosPrecedência dos operadores aritméticos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1 ()

2 pot, raiz

3 *, /, div, mod

4 +, -

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

29

Operações permitidas para tipos lógicosOperações permitidas para tipos lógicos

OperaçãoOperação TipoTipo SímboloSímbolo

e (conjunção) Binário e ou &

ou (disjunção) Binário ou ou |

não (negação) Unário not ou !

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

30

Tabela-verdade para os operadores e, ou e nãoTabela-verdade para os operadores e, ou e não

AA BB A e BA e B A ou BA ou B não (A)não (A)

V V V V F

V F F V F

F V F V V

F F F F V

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

31

Precedência dos operadores lógicosPrecedência dos operadores lógicos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1 ()

2 não

3 e, ou

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

32

Exemplo 3 de algoritmoExemplo 3 de algoritmo● Algoritmo mediaFinal;

● var– nota1, nota2, nota3, nota4: inteiro;– media: real;

● início– leia(nota1, nota2, nota3, nota4);– media := (nota1 + nota2 + nota3 + nota4) / 4;– escreva(“A média das notas é”, media);

● fim

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

33

Exemplo 4 de algoritmoExemplo 4 de algoritmo● Algoritmo areaCircunferencia;

● const– PI = 3,14;

● var– raio, area: real;

● início– leia(raio);– area := PI * SQR(raio);– escreva(“A área da circunferência é”, area);

● fim

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

34

Marco - Questões!!!Marco - Questões!!!● [RGA 2011] Algoritmo é um conjunto infinito de passos

formalmente definidos para resolução de um problema ou tarefa.

● [RGA 2011] O problema solucionado por algoritmo deve ser claro e bem definido.

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

35

Marco - Questões!!!Marco - Questões!!!● [RGA 2011] Algoritmo é um conjunto infinito de passos

formalmente definidos para resolução de um problema ou tarefa.● Gabarito: ERRADO.

● [RGA 2011] O problema solucionado por algoritmo deve ser claro e bem definido.● Gabarito: CERTO.

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

36

Marco - Questões!!!Marco - Questões!!!● [RGA 2011] Quais são os critérios para algoritmos?

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

37

Marco - Questões!!!Marco - Questões!!!● [RGA 2011] Quais são os critérios para algoritmos?

● Entrada:– Zero ou mais valores de entrada

● Saída:– Pelo menos um valor é produzido

● Clareza:– Toda instrução deve ser clara e não ambígua

● Efetividade:– Toda instrução deve ser executável

● Finito:– O algoritmo deve ter um conjunto finito de passos

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

38

EntradaEntrada

ClarezaClareza

SaídaSaída

FinitoFinito

EfetividadeEfetividade

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

39

● [RGA 2011] Em um algoritmo, podemos usar mais de um verbo por frase.

● [RGA 2011] Qual é a forma geral de um algoritmo?

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

40

● [RGA 2011] Em um algoritmo, podemos devemos usar mais de um verbo por frase.● Gabarito: ERRADO.

● [RGA 2011] Qual é a forma geral de um algoritmo?● Algoritmo <nome do algoritmo>;

– const● <identificador> = <valor>;

– var● <identificador>: <tipo>;

– início● <lista de comandos ou instruções>;

– fim

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

41

● [RGA 2011] Para declarar variáveis, fazemos da seguinte forma: <identificador1>, <identificador2>, ...= <tipo1>;. Para constantes, usamos: <identificador1>: <valor1>;.

● [RGA 2011] Nomes de variáveis e constantes podem começar com letras ou sublinhado.

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

42

● [RGA 2011] Para declarar variáveis, fazemos da seguinte forma: <identificador1>, <identificador2>, ...= <tipo1>;. Para constantes, usamos: <identificador1>: <valor1>;.● Gabarito: ERRADO.● Para declarar variáveis (usamos dois pontos):

– <identificador1>, <identificador2>, ...: <tipo1>;● Para constantes (usamos igual a):

– <identificador1> = <valor1>;● [RGA 2011] Nomes de variáveis e constantes podem começar

com letras ou sublinhado.● Gabarito: CERTO.

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

43

Itens importantes para um algoritmoItens importantes para um algoritmo

ItemItem SímboloSímbolo DescriçãoDescrição

Dois pontos :

Igualdade =

Atribuição := ou ←

Ponto e vírgula ;

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

44

Itens importantes para um algoritmoItens importantes para um algoritmo

ItemItem SímboloSímbolo DescriçãoDescrição

Dois pontos : Declara o tipo de uma variável no momento de sua criação

Igualdade = Atribui um valor a uma constante no momento de sua criação

Atribuição := ou ← Atribui a uma variável um valor ou resultado de alguma operação que retorna valor

Ponto e vírgula ; Indica a finalização de uma linha de instrução

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

45

Classificações de tipos de dadosClassificações de tipos de dados

Classificação 1Classificação 1 TiposTipos Classificação 2Classificação 2inteiro

reallógico

caractereenumeradossubconjuntos

vetores ou arraysregistrosarquivos

conjuntos ou setsreferências ou ponteiros

string

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

46

Classificações de tipos de dadosClassificações de tipos de dados

Classificação 1Classificação 1 TiposTipos Classificação 2Classificação 2

Primitivos

inteiro

Simples ou Escalares

reallógico

caractere

Derivados

enumeradossubconjuntos

vetores ou arrays

Estruturados ou Compostos

registrosarquivos

conjuntos ou setsreferências ou ponteiros

string

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

47

● [RGA 2011] 15 div 2 = 7 e 15 mod 2 = 1.

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

48

● [RGA 2011] 15 div 2 = 7 e 15 mod 2 = 1.● Gabarito: CERTO.

Marco - Questões!!!Marco - Questões!!!

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

49

Precedência dos operadores aritméticosPrecedência dos operadores aritméticos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1

2

3

4

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

50

Precedência dos operadores aritméticosPrecedência dos operadores aritméticos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1 ()

2 pot, raiz

3 *, /, div, mod

4 +, -

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

51

Tabela-verdade para os operadores e, ou e nãoTabela-verdade para os operadores e, ou e não

AA BB A e BA e B A ou BA ou B não (A)não (A)

V V

V F

F V

F F

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

52

Tabela-verdade para os operadores e, ou e nãoTabela-verdade para os operadores e, ou e não

AA BB A e BA e B A ou BA ou B não (A)não (A)

V V V V F

V F F V F

F V F V V

F F F F V

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

53

Precedência dos operadores lógicosPrecedência dos operadores lógicos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1

2

3

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

54

Precedência dos operadores lógicosPrecedência dos operadores lógicos

Ordem de precedênciaOrdem de precedência Exemplo de conteúdoExemplo de conteúdo

1 ()

2 não

3 e, ou

rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - [email protected]

55

ReferênciasReferências● MEDINA, Marco e FERTIG, Cristina. Algoritmos e Programação:

Teoria e Prática. 2ª Edição. São Paulo: Novatec Editora, 2006.● Tipos de dados estruturados. Disponível em:

http://www.csgnet.org/documentosONLINE/apontamentos/pascal/pascal2_p4.pdf

● Estrutura de Dados. Disponível em: http://200.201.81.50/~adair/ED/Notas%20Aula/Aulas%20Estruturas%20de%20Dados.pdf

● Tipos de Dados. Disponível em: http://www.nuperc.unifacs.br/Members/thales.castro/arquivos/aulas/TiposDeDados.ppt