Lógica de Programação. Sumário Briefing Representação de Algoritmos Dados Variáveis...

120
Lógica de Programação

Transcript of Lógica de Programação. Sumário Briefing Representação de Algoritmos Dados Variáveis...

Lógica de Programação

2

Sumário• Briefing• Representação de Algoritmos• Dados• Variáveis• Expressões• Tabelas Verdade• Representação de Algoritmos

– Pseudocódigo e VisuAlg• Instruções Primitivas• Estrutura de Decisão• Estrutura de Repetição• Vetores• Procedimentos e Funções

Lógica de Programação

Briefing

4

Briefing

• Lógica– Do grego “Logos”– Estudo do raciocínio válido• Aquilo que pode ocorrer

– Áreas da ciência• Filosofia• Matemática• Semântica• Informática

5

Briefing

• Filosofia

» Você é prisioneiro de uma tribo indígena que conhece todos os segredos do Universo e portanto sabem de tudo. Você está para receber sua sentença de morte. O cacique o desafia: - Faça uma afirmação qualquer. Se o que você falar for mentira você morrerá na fogueira, se falar uma verdade você será afogado. Se não pudermos definir sua afirmação como verdade ou mentira, nós te libertaremos. O que você diria?

6

Briefing

• Filosofia

» Solução: Afirme que você morrerá na fogueira!

» Explicação:• Se você realmente morrer na fogueira, isto é uma verdade,

portanto deveria morrer afogado• Mas se você morrer afogado a informação seria uma mentira e,

portanto, deveria morrer na fogueira

» Mesmo prevendo o futuro, haveria um impasse• Você seria libertado

7

Briefing

• Matemática

» Você deve colocar os números nas intersecções destes três aros, de modo que nas três linhas a soma seja dois.

8

Briefing

• Matemática

» Solução:

+3 -2 +1

+2

-1

0

9

Briefing

• Semântica

» Qual afirmação está correta?• A afirmação abaixo é verdadeira• A afirmação acima é falsa

10

Briefing

• Semântica

» Solução: ?

» Resultado• Eu, Robô• Blade Runner• Wall-E• ...

11

Briefing

• Informática– Lógica de programação• Técnica de encadear pensamentos para atingir um

determinado objetivo

– Algoritmo• Uma sequência finita de passos, logicamente

colocados, que levam a execução de uma determinada tarefa

12

Briefing

• Informática– Algoritmo• “Receita de bolo”• Deve ter passos claros e precisos• Softwares são algoritmos construídos com alguma

linguagem de programação

13

Atividade (classwork)

• Escreva um parágrafo que conceitue a palavra “Lógica”, na sua opinião sem a consulta de quaisquer recursos literários ou bibliográficos

• Pesquise e escreva sobre o Paradoxo de Epiménides e busque exemplos deste tipo de problema

Lógica de Programação

Representação de AlgoritmosLinguagem Natural

15

Representação de Algoritmos

• Linguagem Natural– Narrativa– Sequência de passos– Trilha evolutiva

– Podem conter decisões que modificam o curso e os passos a serem seguidos

16

Representação de Algoritmos

• Linguagem Natural– Ex: Preparar um bolo

• Início: Coloque no liquidificador a laranja picada (sem casca e sem o pavio central), os ovos, o óleo e o açúcar

• Ligue o liquidificador e bata por 3 minutos• Despeje o conteúdo em uma vasilha e adicione a farinha e o fermento• Misture bem• Asse em forno médio e pré-aquecido por 35 minutos• Faça a cobertura, despejando o suco de laranja com açúcar e o leite sobre o bolo

ainda quente• Fim: Deixe esfriar e sirva

17

Representação de Algoritmos

• Linguagem Natural– Ex1: Preparar um churrasco

18

Representação de Algoritmos

• Linguagem Natural– Ex2: Projetar e construir um novo carro

19

Atividade (classwork)

• Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos

• Elabore um algoritmo em linguagem natural para cada problema citado

Lógica de Programação

Representação de AlgoritmosFluxograma

21

Representação de Algoritmos

• Fluxograma– Representação gráfica– Figuras geométricas representam ações distintas– Muito popular– Fácil entendimento das ideias contidas no

algoritmo

22

Representação de Algoritmos

• Fluxograma– Figuras

23

Representação de Algoritmos

• Fluxograma– Ex: Preparar um bolo

INÍCIO Ligue o liquidificador e bata por 3 minutos

FIM

Despeje em uma vasilha e adicione farinha e fermento

Misture bemAsse em forno médio por 35min

Deixe esfriar e sirva

Despeje o suco de laranja, açúcar e leite sobre o bolo para

cobertura

Junte a laranja picada, ovos, óleo e açúcar

24

Representação de Algoritmos

• Fluxograma– Ex1: Preparar um churrasco

25

Representação de Algoritmos

• Fluxograma– Ex2: Projetar e construir um novo carro

26

Atividade (classwork)

• Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos

• Elabore um algoritmo com fluxogramas para cada problema citado

Lógica de Programação

Dados

28

Dados

• O que são dados?

• Dados são...

29

Dados

Não neste contexto!!!

• O que são dados na informática?

30

Dados

• O que é dado?

• O que é informação?

• O que é conhecimento?

31

Dados

32

Dados

• Os dados possuem tipos diferentes, dependendo da forma que possuem e o que proporcionam ao sistema

• A memória do computador trabalha de forma diferente com cada tipo de dado

• Os tipos de dados são:– Numéricos– Lógicos– Literais

33

Dados

• Numéricos– Inteiros• São valores numéricos (positivos ou negativos) que não

possuem casas decimais– Idade (28,5 anos?)– Dia (dia 15,2?)– Unidades (2,1 maçãs?)

34

Dados

• Numéricos– Reais• São valores numéricos (positivos ou negativos) que

podem possuir casas decimais– Peso (78,6 kg)– Largura de um terreno (12,5 m)

– Número real positivo (23.4)– Número real negativo (-12.9)– Uma casa decimal (0.0)– Duas casas decimais (-0.32)

35

Dados

• Numéricos– Os números devem ser tratados da seguinte

maneira:• 2 = Inteiro• 2.0 = Real• 2.1 = Real

36

Dados

• Lógicos– São também conhecidos como booleanos– Sua ideologia de uso reflete a maneira de

funcionamento dos computadores– São usados para representar dois tipos de valores

possíveis:• V (valor lógico verdadeiro)• F (valor lógico falso)

37

Dados

• Lógicos– Verdadeiro pode ser simbolizado por:

• V• TRUE• 1• SIM

– Falso por:• F• FALSE• 0• NÃO

38

• Lógicos– O colaborador é professor?

• V– Portanto, o colaborador não é técnico administrativo, diretor,

atendente ou qualquer outra função

– O colaborador é professor?• F

– O colaborador é técnico administrativo?• F

– O colaborador é atendente?• F

– Portanto, o colaborador exerce outra função

Dados

39

Dados

• Literais– Letras, números e caracteres especiais podem ser

dados de tipo literal– Uma sequência de dados deste tipo é

caracterizada por estar entre aspas duplas (“”)– É também conhecido por tipo de dado

alfanumérico (alfa = letras; numérico = números) ou string

40

Dados

• Literais– Exemplos de dados literais:• “25”• “Fulano”• “24 de Fevereiro”• “30.2”• “20/02/2002”• “-32a9ff34”• “$#@”

41

Atividade (homework)

• Cite 10 exemplos de dados para cada tipo de dado:– Numérico inteiro– Numérico real– Literal

Lógica de Programação

Variáveis

43

Variáveis

• As variáveis são espaços criados na memória do computador para guardar informações

• Estas informações são armazenadas por período temporário pela aplicação a ser executada (software)

• Seus valores, diferente das constantes podem variar

44

Variáveis

• Imagine um armário:

Idade

Cidade

Estado

Nome

Salário

Nº filhos

38

1200.00

Ijuí

RS

Fulano Ciclano

3

45

Variáveis

• Cada “gaveta” armazena um tipo de dado• Se o valor na gaveta identificada for

substituído, o dado anterior se perderá• Cada gaveta pode possuir somente UM dado

(valor)

46

Variáveis

• Existem algumas regras a serem seguidas ao nomearmos uma variável:– Começar com uma letra– Os demais caracteres podem ser letras, números

ou ‘_’ (underline, underscore)– Não podem ser utilizados nomes reservados,

como: escreva, leia, var, etc.– Procure utilizar nomes sugestivos para suas

variáveis

Lógica de Programação

Expressões Aritméticas

48

Expressões

• Aritméticas– São expressões cujo resultado é um valor

numérico (inteiro ou real)– São utilizados somente operadores aritméticos e

variáveis numéricas para este tipo de expressão

49

Expressões

• Aritméticas– São utilizados os seguintes operadores

Operador Operação

+ Adição

- Subtração

* Multiplicação

/ Divisão

+ Manutenção de sinal

- Inversão de sinal

DIV Parte inteira da divisão

MOD Resto da divisão

50

Expressões

• Aritméticas– Os tipos de dados do resultado das expressões

são:Inteiro +, -, * Inteiro = Inteiro

Inteiro +, -, * Real = Real

Real +, -, * Inteiro = Real

Real +, -, * Real = Real

Qualquer / Qualquer = Real

Inteiro DIV Inteiro = Inteiro

Inteiro MOD Inteiro = Inteiro

51

Expressões

• Aritméticas– Os elementos obedecem uma hierarquia de

execução• Parênteses• Multiplicação ou Divisão (o que vier primeiro)• Soma e Subtração (o que vier primeiro)

– Media = Nota1 + Nota2 + Nota3 / 3– Media = (Nota1 + Nota2 + Nota3) / 3

52

Atividades (classwork)• Verifique o tipo de dado numérico resultante das seguintes expressões

aritméticas:a) 7 * 2b) 0.6 + 3.2c) - 5 + 9.0d) 4 DIV 1e) 4.5 * 2f) 1 + 1 + (2 MOD 4)g) (10 + 2) * 2h) - 0.8 / - 2i) 1 - 0.5 + 9j) 7 * (- 2 + 3.4)k) (10 DIV 2) + 0.2l) (90 MOD 33) - 0.2

Lógica de Programação

ExpressõesLógicas

54

Expressões

• Lógicas– As expressões lógicas são aquelas cujo o resultado

da sua avaliação tem um resultado lógico (V ou F)

Operador

OU OR v

E AND ^

NÃO NOT ¬

Comparador

== Igual

<> Diferente

< Menor

< = Menor ou Igual

> Maior

> = Maior ou Igual

55

Expressões

• Lógicas– Comparadores• A = 5, B = 3

– A = B Falso– A <> B Verdadeiro– A > B Verdadeiro– A < B Falso– A > = B Verdadeiro– A < = B Falso

56

Expressões

• Lógicas– Operadores• OU

– O resultado será verdadeiro se pelo menos UM resultado de uma expressão lógica for verdadeiro

• E– O resultado será verdadeiro somente se TODOS os resultados

das expressões lógicas forem verdadeiros• NÃO

– O resultado final é o inverso do resultado da expressão lógica

57

Expressões

• Lógicas1º Valor Operador 2º Valor Resultado

V E V V

V E F F

F E V F

F E F F

V OU V V

V OU F V

F OU V V

F OU F F

V NÃO F

F NÃO V

58

Expressões

• Lógicas– Exemplos• Se eu usar casaco OU blusão, me manterei aquecido

OU =

59

Expressões

• Lógicas– Exemplos• Se não houver placas de proibida a ultrapassagem E

não houver faixa contínua, posso ultrapassar o veículo

E =nãonão

60

Expressões

• Lógicas– Exemplos• Se não for homem, é mulher

não =

61

Expressões

• Lógicas– A = 2, B = 3– C = 2, D = 3

A == B A <> B A < B A < = B A > B A > = B

F V V V F F

A == B ^ C == D A == B v C == D ¬ (A == B) C == A v B <> D C == A ^ B <> D

F F V V F

62

Atividades (mix)

• Lista de exercícios (1-2)– ½ Classwork– ½ Homework

Lógica de Programação

ExpressõesLiterais

64

Expressões

• Literais– Seu resultado proporciona um valor literal– Ocorre com menos frequência nos sistemas do

que as expressões aritméticas e lógicas– O operador varia de uma linguagem de

programação para outra (+)(,)(.)...• A operação para unir dois valores literais (strings) é

chamado de concatenação

65

Expressões

• Literais– Exemplo• Suponha que esteja sendo utilizada uma linguagem que

o operador de concatenação seja “+”• Imagine que queremos construir a expressão

“REFRIGERANTE”, havendo a string “REFRI” e “GERANTE”• “REFRI” + “GERANTE” = “REFRIGERANTE”

Lógica de Programação

Expressões LógicasTabelas Verdade

67

Expressões

• Lógicas (Tabelas Verdade)– Considere as variáveis A e B. Como não sabemos

seus valores, se faz necessário desenvolver todas as combinações lógicas possíveis (Tabela Verdade)

A B NÃO A NÃO B A OU B A E B

V V F F V V

V F F V V F

F V V F V F

F F V V F F

68

Expressões

• Lógicas (Tabelas Verdade)– As tabelas verdade são utilizadas para verificar se

uma fórmula é verdadeira ou falsa, e quando que ela é verdadeira ou falsa

– São utilizadas em interrogatórios, para verificar se um indivíduo está mentindo ou não

– São utilizadas para quando não se sabe o valor verdadeiro de cada variável da fórmula

– Todas as probabilidades

69

Expressões

• Lógicas (Tabelas Verdade)– Verifique quando a seguinte expressão é falsa:

A v ¬B

• Falso quando A for falso e B for verdadeiro

A B ¬B A v ¬B

V V F V

V F V V

F V F F

F F V V

70

Atividades (classwork)• Informe a tabela verdade das seguintes expressões lógicas,

informando em cada questão quando que o resultado é falso ou verdadeiro:a) A ^ Bb) A v Bc) A v ¬Bd) ¬Ae) ¬A ^ Bf) A ^ ¬Bg) ¬A ^ ¬Bh) A v ¬Ai) B ^ ¬B v A

Lógica de Programação

Representação de AlgoritmosPseudocódigo e VisuAlg

72

Representação de Algoritmos

• Pseudocódigo, algoritmo ou português estruturado– Utilizado para elaborar a sequência lógica pela

linguagem natural, antes de utilizar uma linguagem de programação

– Permite a tradução de um algoritmo para uma linguagem de programação específica, diretamente

– VisuAlg

73

Representação de Algoritmos

• Pseudocódigo, algoritmo ou português estruturado– Ex: Alô Mundo! (Hello World!)

Lógica de Programação

Instruções Primitivas

75

Instruções Primitivas

• As instruções primitivas exercem funções básicas e essenciais para a operação dos computadores sendo:– Entrada de dados– Saída de dados

• Servem para que o sistema se comunique com:– Usuário– Periféricos

76

Instruções Primitivas

• Aplicativos, softwares e programas que não utilizam instruções primitivas é incapaz de se comunicar com o mundo exterior

• Programas sem comunicação com o mundo externo não tem qualquer utilidade

77

Instruções Primitivas

• De atribuição– Principal maneira de se armazenar informação em uma

variável• <nome_da_variável> <- <expressão>

– O tipo da variável deve estar conciso com o valor a ser atribuído (inteiro, real, literal, ...)

– No fluxograma é ilustrado pelo bloco PROCESSAMENTOvar = 1+1

78

Instruções Primitivas

• De saída de dados– Somente a instrução de atribuição não é suficiente

para haver comunicação, pois o valor fica armazenado na memória

– As instruções de saída são os meios pelos quais as informações são exibidas ao usuário e/ou periféricos• escreva(“Alô Mundo!”)• escreva(<variável>)

– No fluxograma é representado pelo bloco IMPRESSÃO DE RESULTADOSEscreva “Alô Mundo”

79

Instruções Primitivas

• De entrada de dados– Somente a instrução e saída não é suficiente, pois

não há dinamicidade no sistema– Cada vez que o programa é executado, novos

valores podem ser atribuídos às variáveis• leia(<variável>)

– No fluxograma é ilustrado pelo bloco ENTRADA DE DADOS NATURAL

leia Nome

Lógica de Programação

Estrutura de DecisãoTipo SE

81

Estrutura de Decisão

• As estruturas de decisão englobam os princípios da condição

• O fluxo de instruções a ser seguido é escolhido em função do resultado da condição

• Podem existir várias condições a serem avaliadas para a definição do fluxo a ser seguido

• Condição = Expressão lógica• As decisões podem ser tomadas por SE e

ESCOLHA

82

Estrutura de Decisão

• Tipo Se– Nesta estrutura uma única condição é avaliada– Se o resultado for verdadeiro (V, T, 1), então um

determinado conjunto de instruções será executado. Caso contrário, ou seja, o resultado for falso (F, F, 0) outro conjunto de instruções será executado

– É obrigatório que o algoritmo prossiga por alguma das condições (verdadeiro ou falso)

83

Estrutura de Decisão

• Tipo Se– Condições• idade < 18• genero = ‘Masculino’• altura >= 1.60

84

Estrutura de Decisão

• Tipo Se– Sintaxes

<condição>

<comando composto 1>

<comando composto 2>

V F

...

85

Estrutura de Decisão

• Tipo Se– Sintaxes

<condição>

<comando composto>

V

...

F

Lógica de Programação

Estrutura de DecisãoTipo ESCOLHA

87

Estrutura de Decisão

• Tipo Escolha– Generalização do SE– Pode haver uma ou mais condições a serem

testadas e um comando composto diferente associado a cada uma das condições

88

Estrutura de Decisão

• Tipo Escolha– Sintaxes

<Condição_1> <Comando_composto_1>

...

<Condição_2> <Comando_composto_2>

V

VF

<Condição_n>

F…

<Comando_composto_n>

V

<Comando_composto_s>

F

89

Atividades (classwork)

• Transcreva os exercícios da aula passada utilizando o tipo ESCOLHA no VisuAlg– a) b) c)

• Elabore o fluxograma para cada exercício– a) b) c)

Lógica de Programação

Estrutura de RepetiçãoLaços Contados

91

Estrutura de Repetição

• São comuns os trechos de código que devem ser repetidos em um algoritmo

• Este trecho de código pode conter valores diferentes, seja pela entrada ou pela saída de dados

• As estruturas de repetição também são conhecidas por laços de repetição ou loops

• Existem dois tipos de estruturas de repetição: laços contados e laços condicionais

Lógica de Programação (Leonardo Minelli)

92

Estrutura de Repetição

• Laços Contados– São utilizados para quando sabe-se ao certo

quantas vezes o comando composto no interior do bloco deverá ser executado

– Instrução dotada de mecanismos para contar quantas vezes o laço é executado

Lógica de Programação (Leonardo Minelli)

5x

93

Estrutura de Repetição

• Laços Contados– Semântica• O valor <inicio> é atribuído a variável <variavel>• O valor <variavel> é comparado com o valor <final>

– Se <variavel> for menor ou igual que <final>» Comando composto é executado» Ao final do comando é atribuído +1 para <variavel>

– Se <variavel> for maior que <final>» Comando composto não é executado

• Finaliza-se o laço

94

Estrutura de Repetição

• Laços Contados– Semântica• <variavel> é uma variável do tipo inteiro• <inicio>, <final>, <passo> podem ser constantes ou

variáveis• <passo> se não atribuído terá o valor de 1. Significa de

quanto em quanto será acrescido o valor a cada execução do laço de repetição, podendo ser positivo ou negativo

95

Estrutura de Repetição

• Laços Contados– Fluxograma

<condição>

<comando composto>

V

...

F...

Lógica de Programação

Estrutura de RepetiçãoLaços Condicionais

97

Estrutura de Repetição

• Laços Condicionais– Diferente dos laços contados, com os laços

condicionais não se sabe ao certo quantas vezes a repetição será executada

– Existem dois tipos de instruções que expressam este tipo de laço• Enquanto• Repita

98

Estrutura de Repetição

• Laços Condicionais– Enquanto

• No início da instrução a condição é testada– Se for falsa, os comandos compostos não serão executados, nem por

uma vez– Se for verdadeira, os comandos compostos serão executados

• Se repetirá até que a condição proposta seja falsa.

• Atenção:– O controle para saída do laço é de responsabilidade do criador do código!

Em um momento a condição deve ser falsa para que o laço pare de ser executado. Quando isto ocorre, é chamado de laço infinito ou looping

99

Estrutura de Repetição

• Laços Condicionais– Enquanto• Semântica

– <condição> é qualquer expressão lógica

100

Estrutura de Repetição

• Laços Condicionais– Repita• Semelhante ao enquanto• A condição é testada ao final do laço

– Diferente do enquanto, que é no início• Sempre será executado pelo menos uma vez

101

Estrutura de Repetição

• Laços Condicionais– Repita• Semântica

– <condição> é qualquer expressão lógica

Lógica de Programação

VetoresUnidimensionais

103

Vetores

• Todas as variáveis, até agora, possuem somente um valor, correto?– Lembram do armário e das gavetas?

104

... Variáveis

• Imagine um armário:

Idade

Cidade

Estado

Nome

Salário

Nº filhos

38

1200.00

Ijuí

RS

Fulano Ciclano

3

105

Vetores

• Só podíamos armazenar um valor por vez em cada variável

• Se precisássemos armazenar 10 nomes, necessitaríamos de 10 variáveis de tipo literal!– nome1, nome2, nome3, ... nome10

• O vetor veio para acabar com estes problemas!

106

Vetores

• O que é um vetor?– Segundo a matemática...• Segmento de reta orientado que possuem a mesma

intensidade, mesma direção e mesmo sentido!• SANTOS, Reginaldo J.

107

Vetores

• O que é um vetor?

108

Vetores

• O que é um vetor?– Segundo a informática...• Vetor é uma variável que, a partir de posições

diferentes, consegue armazenar várias informações do mesmo tipo• Sua posição inicial será SEMPRE 0 (zero)

• Existem basicamente dois tipos de vetores– Unidimensionais– Bidimensionais

109

Vetores

• Unidimensionais– Vetores unidimensionais são semelhantes a uma

“trilha” de informações– Pensando em um vetor com países que falam

português, por exemplo, um vetor unidimensional seria o seguinte:

pt[0,1,2,3,4,5,6,7]pt[0..7]

Brasil São Tomé e Príncipe

Cabo Verde

Timor Leste

Moçambique Portugal Guiné-Bissau Angola

110

Vetores

• Unidimensionais– VisuAlg• <variavel> : vetor[<inicio>..<final>] de <tipo de dado>

• Este comando criará um vetor unidimensional com o nome <variavel>, que iniciará em <inicio> e irá até <final>, possuindo o tipo de dado <tipo de dado>– Literal– Inteiro– Real

Lógica de Programação

VetoresBidimensionais

112

Vetores

• Bidimensionais– O que é um vetor?• Vetores Bidimensionais = Matrizes• Matriz

– É uma tabela de “m” linhas e “n” colunas sobre um conjunto, normalmente um corpo “F”, representada sobre a forma de um quadro “s”

113

Vetores

• Bidimensionais– Veja o quadro dos países que falam português...

114

Vetores

• Bidimensionais

[ ]pt pt[1,1] pt[1,2] pt[1,3] pt[1,4]

pt[2,1] pt[2,2] pt[2,3] pt[2,4]

115

Vetores

• Bidimensionais– Ex: pt[1,1] = Brasil

pt[1,2] = São Tomé e Príncipept[1,3] = Cabo Verdept[1,4] = Timor Lestept[2,1] = Moçambiquept[2,2] = Portugalpt[2,3] = Guiné-Bissaupt[2,4] = Angola

Lógica de Programação

Procedimentos e Funções

117

Procedimentos e Funções

• Subalgoritmos e subprogramas são blocos independentes de comandos que visam dividir as operações do programa

• Os subalgoritmos podem ser de dois tipos– Procedimentos– Funções

118

Procedimentos e Funções

• Procedimentos– Os procedimentos não possuem valores de

retorno– Os valores são processados e manipulados dentro

do bloco

119

Procedimentos e Funções

• Procedimentos

120

Procedimentos e Funções

• Funções– Assim como na matemática, as funções recebem

valores que são passados por parâmetros