logica algoritmo 03 tipos expressoes variaveis operadores

Post on 05-Dec-2014

27.915 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Introdução à Lógica

Regis Pires Magalhãesregis@cefetpi.br

Última atualização em 24/05/2007

Tipos de Dados• Todo o trabalho realizado por um computador é baseado

na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos:– As instruções, que comandam o funcionamento da máquina e

determinam a maneira como devem ser tratados os dados.– Os dados propriamente ditos, que correspondem à porção das

informações a serem processadas pelo computador.

• A classificação a seguir sintetiza os padrões utilizados na maioria das linguagens.– Tipos Inteiros– Tipos Reais– Tipos Caracteres– Tipos Lógicos

Literais• Alguns autores citam o tipo caracter como sinônimo de

tipo literal.

• No entanto, discordamos dessa definição. Achamos mais apropriado dizer que literais são as representações de quaisquer tipos de dados dentro do código fonte.

• Literal é, assim, uma notação para representar um valor no código fonte de uma linguagem de programação.

• Assim, podemos subdividir os literais em: – Literais Booleanos ou Lógicos: correspondem ao valores

verdadeiro e falso. – Literais inteiros– Literais reais ou fracionários (de Ponto Flutuante):

correspondem aos números racionais (fracionários). – Literais caracteres ou strings: correspondem às cadeias de

caracteres. Para representá-los, escreva-os entre aspas.

Tipos de Dados• Uma determinada informação armazenada na memória precisa fazer

sentido.

• Mas o que realmente significa um conjunto específico de bits?– Depende:

• 1000001 – pode ser a letra ‘A’

• 1000001 – também pode ser o número 65.

– O significado vai depender do tipo. Caso 1000001 seja do tipo caractere, o seu significado é a letra ‘A’.

– No entando se 1000001 for do tipo for inteiro, seu valor representa 65.

• Assim um mesmo valor pode assumir representações diferentes dependendo do tipo escolhido.

• Computadores trabalham internamente com dígitos binários.

Tipos de Dados• Tipos Inteiros

– Números inteiros positivos ou negativos.

– Um bit pode representar dois números inteiros 0 e 1.

– Dois bits podem representar quatro números inteiros diferentes: 00, 01, 10 e 11.

– Com n bits podemos representar 2n números inteiros.

– 1 bit é reservado para guardar o sinal.

– Ex.: 35, 0, -56, 1024.

BitsBits

DadosDadosSinalSinal

SS

3131 00

Bit menos Bit menos significativosignificativo

Bit mais significativoBit mais significativo

Tipos de Dados• Tipos Reais

– Números fracionários positivos e negativos.

– Ex.: 35, 0, -56, 1.2, -45.987.

– Palavra de 32 bits:• 1 bit para sinal

• 8 bits para expoente

• 23 bits para o número real (mantissa)

BitsBits

SinalSinal MantissaMantissa

SS

3131 00222223233030

ExpoenteExpoente

Tipos de Dados• Tipos Caracteres

– Seqüências contendo letras, números e símbolos especiais.

– Caracteres são representados por códigos binários.

– O código mais disseminado de todos é o ASCII (American Standard Code for Information Interchange).

– ASCII usa 8 bits para representar os caracteres.

– ASCII pode representar portanto até 28=256 caracteres.

– Uma seqüência de caracteres deve ser indicada entre aspas ('').

– Este tipo de dado também é conhecido como alfanumérico, string ou cadeia.

– Ex.: 'Programação', 'Rua Alfa, 52 Apto 1', 'Fone 574-9988', '04387- 030', ' ', '7'.

TABELA ASCII(American Standard Code for Information Interchange)

0 .... ...

10 LF... ...

13 CR... ...

48 ‘049 ‘1’50 ‘2’

... ...56 ‘8’57 ‘9’

... ...65 ‘A’66 ‘B’

67 ‘C’... ...

89 ‘Y’90 ‘Z’

... ...97 ‘a’98 ‘b’

... ...121 ‘y’122 ‘z’

... ...133 ‘à’

... ...160 ‘á’

... ...

Tipos de Dados

• Tipos Lógicos– Os dados deste tipo somente podem assumir dois

valores: verdadeiro e falso.– Dado booleano, devido a George Boole, matemático

inglês, que deu ao nome à álgebra (álgebra booleana) que manipula este tipo de dados.

– Computadores tomam decisões, durante o processamento de um algoritmo, baseados nestes dois valores.

– Normalmente se usa um byte inteiro para armazenar valores lógicos devido a dificuldade de endereçar bits.

Tipos de Dados

Expressões• Expressões combinam variáveis, operadores e

constantes para produzir um resultado.• Variáveis representam posições na memória

onde estão dados que serão processados.• Constantes são símbolos usados para

representar dados.• Operadores são usados para combinar as

variáveis e constantes fornecendo um valor como resposta.

Exemplos de Expressões

• 0.5 * base * altura

• (nota1 + nota2) / 2.0

• (temperatura > 0) e (quantidade < limite)

• 4 % 3 + 5

• A > B

Expressões• Observar os símbolos usados para multiplicação (*) e

divisão (/).

• Avaliar primeiro as operações de maior prioridade, por exemplo (multiplicação e divisão).

• Se temos de escolher entre operadores de mesma prioridade então escolher o que está mais à esquerda.

– Ex. 4/2*3 -- primeiro divide-se 4 por 2 e em seguida multiplica-se o resultado por 3, dando como resultado 6

• Caso queira trocar a prioridade use parênteses.

– Não são permitidos outros símbolos para esta função tais como { } e [ ].

Variáveis• O computador possui uma área de armazenamento

conhecida como memória.

• A memória do computador pode ser entendida como uma seqüência finita de caixas, que num dado momento, guardam algum tipo de informação, como número, uma letra, uma palavra, uma frase, etc.

Variáveis• Cada posição de memória possui um endereço, ou seja,

um número, que indica onde cada informação está localizada.

• As linguagens de computador facilitaram o manuseio das posições de memória, permitindo que, ao invés de trabalhar diretamente com os endereços de memória, fosse possível dar nomes diferentes a cada um deles.

• Tais nomes seriam de livre escolha do usuário. Com este recurso, os usuários ficaram livres dos endereços físicos e passaram a trabalhar com endereços lógicos.

Endereço Físico Informação3000: B712 ‘João’2000: 12EC 123453000: 0004 ‘H’

Variáveis• Para acessar informações seria necessário saber

o tipo de dado desta informação (ou seja, o número de bytes de memória por ela ocupados) e a posição inicial deste conjunto de bytes na memória.

• Basicamente, uma variável possui três atributos:– nome

– tipo de dado associado à mesma

– informação por ela guardada.

• Toda variável possui um nome que tem a função de diferenciá-la das demais.

Variáveis• Nos algoritmos, todas as variáveis utilizadas

serão definidas no início do mesmo, por meio de um comando de uma das seguintes formas:VAR <nome_da_variavel> : <tipo_da_variavel>ouVAR <lista_de_variaveis> : <tipo_das_variaveis>

Variáveis• Escolher nomes significativos para as variáveis

– Ex: salario, total, nota, pagamento

• Nomes significativos ajudam a tornar os algoritmos e os programas auto-explicativos

• Nomes de variáveis com mais de uma palavra podem ajudar também– Ex: total_pagamentos, prova_final, totalPagamentos,

provaFinal.

VariáveisExemplos:

VAR nome, sobrenome: caracteridade: inteirosalario: realtem_filhos: logico

Operadores• Operadores são símbolos que indicam a operação que

deve ser realizada entre os operandos (constantes e/ou variáveis), produzindo um determinado resultado.

– Ex: + e -

• De acordo com o número de operandos sobre os quais os operadores atuam, os últimos podem ser classificados em:

– binários, quando atuam sobre dois operandos.

• Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão).

– unários, quando atuam sobre um único operando.

• Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal.

Operadores• Outra classificação dos operadores é feita

considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação.

• Segundo esta classificação, os operandos dividem-se em aritméticos, lógicos e caracteres.

– Um caso especial é o dos operadores relacionais, que permitem comparar pares de operandos de tipos de dados iguais, resultando sempre num valor lógico.

Operador de Atribuição• Um operador de atribuição serve para atribuir um

valor a uma variável.

• Em Algoritmo usamos o operador de atribuição:

• A sintaxe de uma atribuição é:NomedaVariavel expressao

• A expressão localizada no lado direito do sinal de igual é avaliada e armazenado o valor resultante na variável à esquerda.

• O nome da variável aparece sempre sozinho, no lado esquerdo do sinal de igual deste comando.

Operador de Atribuição• Todo comando de atribuição pode ser dividido em

duas etapas:– Avaliação da expressão;– Armazenamento do resultado da avaliação na posição

de memória representada pela variável.

• Exemplo:– a 35 * 6 + 2– O comando acima faz com que o resultado da

expressão (=212) seja armazenado na variável a.

Atribuição e Memória• Considere x=10, y=5 e z=8.• As figuras abaixo mostram a memória antes e

depois do comando de atribuição x y + z

EndEnd

00

11

22

33

44

55

xx

yy

zz

1313

55

88

EndEnd

00

11

22

33

44

55

xx

yy

zz

1010

55

88

modificadomodificado

antesantes depoisdepois

Operadores Aritméticos• Os operadores aritméticos se relacionam às

operações aritméticas básicas:

Expressões Aritméticas• Resultado é um valor numérico.

Expressões Aritméticas

• 1 / 4 – resultado 0.25

• 1 / 4 + 7.1 – resultado 7.35– 1a. Operação: 1 / 4 = 0.25– 2a. Operacão: 0.25 + 7.1 = 7.35

• (2 + 4)/(3 – 1) – resultado 3– 1a. Operação: 2 + 4 = 6– 2a. Operação: 3 – 1 = 2– 3a. Operação: 6 / 2 = 3

• 10 % 3 – resultado 1– O resto da divisão de 10 por 3 é igual a 1.

Exercícios• Qual é o resultado das expressões abaixo?

• 1 / 3 * 3

• 1.0 / 3 * 3

• 3 + 6 / 3 - 1

• 12 / 2 % 4

Exercícios• Escreva as expressões a seguir em pseudo-

código:• • 2(lado1+lado2)

by+x 22

x+

11

1

Operadores Relacionais• Os operadores relacionais são operadores binários que devolvem os

valores lógicos verdadeiro e falso.• Estes valores são somente usados quando se deseja efetuar

comparações.• Comparações só podem ser feitas entre objetos de mesma natureza,

isto é variáveis do mesmo tipo de dado.

Operadores Relacionais• Com valores string, os operadores relacionais comparam

os valores ASCII dos caracteres correspondentes em cada string.

• Uma string é dita "menor que" outra se os caracteres correspondentes tiverem os números de códigos ASCII menores.

• Exemplos de expressões verdadeiras no Visualg:

– "algoritmo" = "ALGORITMO"

– "ABC" < "EFG"

– "Pascal" < "Pascal compiler"

Operadores Relacionais• Considere a=3, b=7, total=200.0, média=8.1 e

ano=2000

• a > b -- resultado falso

• total = 100.0 -- resultado falso

• média >= 7.0 -- resultado verdadeiro

• ano <> 2001 -- resultado verdadeiro

Exercícios• Considerando a=3, b=7, t=20.0 e m=8.1 qual o

resultado das expressões?

• t <> 100.0

• (m + b) <= 7.0

• (t/(b+a)) = 2.0

Operadores Lógicos• Operadores lógicos ou booleanos são usados para

combinar expressões relacionais e resultam nos valores lógicos verdadeiro ou falso.

• Existem outros operadores lógicos, como por exemplo, os operadores ou-exclusivo, ne (não e), nou (não ou).

• Estes outros operadores podem ser obtidos a partir dos três já definidos (e, ou e não).

Operador Lógico - E• A e B tem como resultado verdadeiro somente se

A e B forem iguais a verdadeiro.

aa bb aa bb

Operador Lógico - OU• A ou B tem como resultado verdadeiro se A ou B

for igual a verdadeiro.

aa

bb

aa

bb

Operador Lógico - NÃO

Exercícios• Considerando a=falso, b=verdadeiro e c=falso,

qual é o resultado das expressões?

– a ou b e c

– (a ou b) e c

– a e (b ou c)

– não (a e b)

– a ou b ou c

Operadores Caracteres• Um exemplo de operação comum em várias

linguagens é a concatenação de duas cadeias de caracteres.

• Símbolo + é usado em algumas linguagens para representar esta operação.

• Considere as cadeias 'dia', ' ', 'de' e 'semana'• A operação

– 'dia' + ' ' + 'de' + ' ' + 'semana'

• Cria a cadeia– 'dia de semana'

Expressões mistas

• É muito comum em algoritmos juntar operadores relacionais e lógicos em expressões.

• Estas expressões são geralmente do tipo:– (nota1 > 7.0) ou (nota2 > 7.0)– (salario > valor) e (ano > 2001)

• O resultado destas expressões é do tipo lógico (verdadeiro ou falso).

Prioridade dos Operadores• Em expressões podemos misturar vários tipos de

operadores.• A tabela mostra a prioridade relativa dos

operadores estudados.

BinárioBinário

BinárioUnárioTipo

3+ - ou4= <> >= <= > <

2* / % \ e 1não - +

PrioridadeOperador

Exercícios• Considerando l1=5.0, l2=3.0, l3=4.0 e l4=7.1:

– (l1 > l3) e (l2 > l4)

– ((l1+2) = l3) ou (l2 <= l4)

• Considerando presente=verdadeiro, n1=7.5 e n2=6.5, qual é o resultado da expressão?

– (((n1+n2)/2.0) >= 7.0) e presente

top related