Você está na página 1de 70

03/05/2013

Universidade Federal de Mato Grosso do Sul


Centro de Ciências Exatas e Tecnologia
Engenharia de Produção

Algoritmos e Estruturas de Dados

Tiago Henrique de Abreu Mateus

Assunto
 Sistema Computacional
 Programação de Sistema Computacional
 Lógica de Programação & Algoritmo
 Ambientes/Linguagens de Programação

1
03/05/2013

Sistema Computacional
 Um sistema computacional consiste num conjunto de
dispositivos eletrônicos (hardware) capazes de processar
informações de acordo com um programa (software).

Sistema
Computacional

Software
Hardware

Peopleware 3

Programação de Sistema Computacional


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

Entrada Processamento Saída

Dispositivo UCP Dispositivo


de Entrada de Saída

Memória

2
03/05/2013

Programação de Sistema Computacional


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

Entrada Processamento Saída

Dispositivo UCP Dispositivo


de Entrada de Saída

Memória

6,8 (6 + 8) / 2 7

Programação de Sistema Computacional


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

Entrada Processamento Saída

Dispositivo UCP Dispositivo


de Entrada de Saída

Memória

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


aprovado
Senão
reprovado
6

3
03/05/2013

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
Baixo Nível Alto Nível
Linguagem Linguagem Linguagem
de Assembly de
Máquina (Mnemônica) Alto N ível
0010 0001 1110 LOAD R1, val1 val2 = val1+val2
0010 0010 1111 LOAD R2, val2
0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
(1) (2) (3)
7

Programação de Sistema Computacional


 O que é programação de computadores?
 Programação é o processo de escrita, teste e manutenção de
um programa de computador. O programa é escrito em uma
linguagem de programação, embora seja possível, com alguma
dificuldade, escrevê-lo diretamente em linguagem de máquina.
Diferentes partes de um programa podem ser escritas em
diferentes linguagens.

 Vejamos algumas instruções básicas para a programação


através de Pseudocódigo!
Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma
linguagem simples sem necessidade de conhecer a sintaxe de nenhuma linguagem de
programação.
8

4
03/05/2013

Aula 2 – Noções de Lógica

Prof. Tiago Henrique

Noções de Lógica
 Lógica: Ciência que estuda as formas do pensamento
(“regras do pensar”).
 Sempre que pensamos a lógica nos acompanha.
 Um bebê sabe que precisa chorar para receber atenção.
 Um casal com 3 filhos notou um vaso estava quebrado,
enquanto 2 das crianças estavam na escola. Quem é o culpado?
 A gaveta está fechada. A caneta está dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.
 O pensamento (e a lógica) pode ser expresso através da
palavra falada ou da palavra escrita.

10

5
03/05/2013

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)

11

Atividade 1
 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?

12

6
03/05/2013

Atividade 1
 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?

13

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.
14

7
03/05/2013

Noções de Lógica
 Proposição: é um enunciado verbal, ao qual deve ser
atribuído, sem ambiguidade, um valor lógico verdadeiro (V) ou
falso (F).
 Exemplos de proposições:
 Tiago Henrique é 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 ?)

15

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
Operação Símbolo Significado
Negação ~ Não
Conjunção ^ E
Disjunção v OU

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

16

8
03/05/2013

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)

17

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)

18

9
03/05/2013

Noções de Lógica
 Exemplos de aplicação das operações lógica
 Resumindo: p q ~p p^q pvq
V V F V V
V F F F V
F V V F V
 Ou seja: F F V F F
 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

19

Atividade 2
 Considerando p = V e q = F, resolva as seguintes
expressões lógicas
1. ~p
2. ~q
3. p ^ q
4. p v q
5. (~p) ^ q
6. (~p) v q
7. p ^ (~q)
8. p v (~q)
9. (~p) ^ (~q)
10. (~p) v (~q)

20

10
03/05/2013

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

21

Algoritmo
 Vamos estudar uma forma única de representação.
 É o pensamento descrito como uma sequência de passos
que visam atingir um objetivo.
 Algoritmos no dia-a-dia: Receita de bolo, orientação para
se chegar em um endereço, etc.
 Qual sua importância na programação?
 Representar o raciocínio, independentemente de detalhes
computacionais, que podem ser acrescentados mais tarde;
 Focalizar primeiro na resolução algorítmica do problema,
possibilitando depois codificá-la em qualquer linguagem.

22

11
03/05/2013

Aula 3 - Sistemas de Numeração

Baseado no Material preparado por: Prof. Antonio Lopes de


Souza, Ph.D.

Sistemas de Numeração

 O sistema de numeração com o qual estamos mais


familiarizados é o decimal, cujo alfabeto (coleção de símbolos)
é formado por 10 dígitos acima mostrados.
 Um Computador Decimal: se trabalhasse com o sistema
decimal um computador precisaria codificar 10 níveis de
referência para caracterizar os 10 dígitos do sistema utilizado.
Esses níveis de referência poderiam ser valores de tensão (0V,
1V, 2V, etc.) que precisariam ser definidos e interpretados de
maneira clara e precisa pela máquina.
 Desvantagem: quanto maior o número de interpretações
maior a probabilidade de erro. Para decidir que está lendo o
número 5 a máquina precisaria ter certeza de que o que leu
não é: 0, 1, 2, 3, 4, 6, 7, 8, 9.
24

12
03/05/2013

Sistemas de Numeração
 Conseqüência: O sistema de numeração mais seguro deveria
ser aquele com o menor número de símbolos (dígitos).
 Conclusão: o melhor sistema de numeração para uma
máquina seria o binário com apenas dois dígitos, o zero (0) e o
um (1).

Obs.: Não há sistema de numeração com alfabeto de um único


dígito. Todo sistema de numeração precisa dos conceitos de
presença (1) e ausência (0).
25

Sistemas de Numeração
 Um possível problema no uso de máquinas binárias: o
número binário precisa de mais dígitos para ser escrito do que
o decimal.

(2)10 número de animais representado em decimal

(10)2 número de animais representado em binário

 Quatro em decimal é representado como 4. Sua representação


em binário é 100.
 Conseqüência: o computador binário seria mais preciso
porém muito lento porque a leitura da informação iria
requerer mais tempo.

26

13
03/05/2013

Sistemas de Numeração
 Uma solução: o uso de dispositivos eletrônicos baseados na
tecnologia dos semicondutores, como os transistores.

 O transistor: é um dispositivo usado para controlar o fluxo de


corrente. Ele tem duas características importantes:
1- é capaz de amplificar um sinal elétrico.
2- é capaz de chavear (comutar) entre ligado e desligado (ou
fechado e aberto), deixando corrente passar através dele ou
bloqueando-a. Essas condições são também denominadas
“saturação” e “corte”, respectivamente.

 O transistor pode mudar da condição de saturação para o corte


em velocidades acima de um milionésimo de segundo. Ele pode ser
usado para caracterizar a presença (ou ausência) de um dígito
binário (0 ou 1) e pode tomar decisões desse tipo a uma taxa
superior a um milhão de decisões por segundo.

27

Sistemas de Numeração

O primeiro Transistor Um Transistor moderno

•Transistor: inventado nos Laboratórios da Bell Telephone em 12/1947 por John


Bardeen, Walter Brattain e William Shockley – Prêmio Nobel de física de 1956. O
transistor é capaz de comutar em um milionésimo de segundo entre o
corte e a saturação.
28

14
03/05/2013

Sistemas de Numeração
 Classificação
 Sistemas de Numeração Posicionais
 Sistemas de Numeração Não Posicionais

29

Sistemas Posicionais
 Nos sistemas de numeração posicional, o valor do dígito
em um número depende da posição que ele ocupa neste
mesmo número.
 1989 = 1000+900+80+9
 1989 = 1x103 + 9x102 + 8x101 + 9x100

 Há um peso para cada posição ocupada pelo dígito. Os


pesos crescem para esquerda na parte inteira e
decrescem para a direita na parte fracionária
 1989,4= 1x103 + 9x102 + 8x101 + 9x100+4x10-1

30

15
03/05/2013

Sistemas Posicionais
 A representação posicional fornece uma forma
simplificada para a escrita de números e permite a
representação de qualquer número com um alfabeto
(uma coleção de símbolos) restrito de dígitos.

 O sistema decimal tem:


 Base R=10
 Um alfabeto ordenado e 10 dígitos, {0, 1, 2, 3, 4, 5, 6, 7, 8,
9}, e qualquer número pode ser representado com o uso
deles.

31

Sistemas Posicionais
Outros Exemplos de Sistemas Posicionais
 Sistema posicional binário
base R = 2
alfabeto {0, 1}
 Sistema posicional octal
base R = 8
alfabeto {0, 1, 2, 3, 4, 5, 6, 7}
 Sistema posicional hexadecimal
base R = 16
alfabeto {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

32

16
03/05/2013

Sistemas Não Posicionais


 Sistema de Numeração Romano
 No número XX, vinte em decimal, o valor do dígito X à
esquerda é o mesmo daquele à direita. Neste caso a
representação é aditiva, com X representando a quantidade
decimal 10, e com a combinação XX associada a 10+10=20.
Por outro lado em IX (nove em decimal) a representação é
subtrativa.
M = 1000
Como antes de M não tinha nenhuma letra,
buscavam a segunda letra de maior valor.
D = 500
Depois tiravam de D o valor da letra que vem
antes.
D – C = 500 – 100 = 400
Somavam 400 ao valor de M, porque CD está
depois de M.
M + CD = 1000 + 400 = 1400
Sobrava apenas o V. Então:
MCDV = 1400 + 5= 1405

33

Geração de Inteiros
 Algoritmo de avanço de dígitos:
Avançar um dígito de um alfabeto ordenado consiste em
substituí-lo pelo próximo dígito na hierarquia. O dígito de
maior valor do conjunto é sempre avançado para o
aquele de menor valor na hierarquia.
0  1  2  3  4  5  6  7  8  9 0
 Algoritmo de geração de inteiros:
a) o primeiro inteiro é o zero
b) o próximo inteiro é obtido do precedente na lista
avançando-se seu dígito mais à direita. No caso deste
dígito avançar para zero, avança-se, então, o dígito
adjacente à esquerda.

34

17
03/05/2013

Geração de Inteiros
 Exemplo: Gerar os 26 primeiros inteiros do sistema
decimal.
0123456789
10  11  12  13  14  15  16  17 
18  19  20  21  22  23  24  25

 Observe que o nove avança para o zero, logo o dígito


mais à esquerda (o zero, não mostrado explicitamente no
número) é avançado para 1 gerando o próximo número
na lista, o 10.

35

Transformações de Base
 Passagem de uma base R para a base 10
 converte-se a base e cada dígito do número para o equivalente
decimal.
 decompõe-se o número de acordo com a estrutura posicional
e, usando aritmética decimal, efetuam-se as operações de
produtos e somas.
Notação: (...)R ler como o número do parêntesis
expresso na base R.

(1101)2=1x23+1x22+0x21+1x20=8+4+0+1=13

(2B0)16=2x162+(11)x161+0x160= 512+176+0=688

36

18
03/05/2013

Transformações de Base
 Passagem de uma base 10 para a base R
 Parte inteira: Algoritmo da divisão repetida
Divide-se o inteiro decimal repetidamente pela base R até
que se obtenha um quociente inteiro igual a zero. Os
restos das divisões sucessivas, lidos do último para o
primeiro, constituem o número transformado para a base
R.

(341) = (2331)
10 5

37

Transformações de Base
 Passagem de uma base 10 para a base R
 Parte fracionária: Algoritmo da multiplicação repetida
A parte fracionária é multiplicada por R. A parte inteira
desse produto é guardada e a parte fracionária é
novamente multiplicada por R. O processo é repetido até
que se obtenha um número com parte fracionária nula ou
até que se considere a aproximação suficiente.
As partes inteiras dos produtos sucessivos, lidas da
primeira para a última, formam a parte fracionária do
número transformado.

38

19
03/05/2013

Transformações de Base
 Passagem de uma base 10 para a base R
 Parte fracionária: Algoritmo da multiplicação repetida.
Exemplo:

 Então (0,4375)10 = (0,0111)2

39

Transformações de Base
 Mudança de base entre base binária e base de potência de
2
 A base para a qual se quer a transformação é expressa no
formato 2n . Se essa base for R=8, por exemplo, o valor de “n”
é 3 porque 8 = 23. Formam-se grupos, a partir da direita do
número binário, contendo uma quantidade de dígitos igual ao
número “n”. Esses grupos de “n” dígitos são lidos e
representados como os dígitos do sistema para o qual se quer
a transformação.
 transformação para a base hexadecimal.

40

20
03/05/2013

Transformações de Base
Exemplos:

(25)10 = (011|001)2 = (31)8, grupos de 3 dígitos (8=23) a


partir da direita do número binário para transformação para
a base octal.

(25)10 = (0001|1001)2 = (19)16, grupos de 4 (16=24)

41

Operações Aritméticas
 Soma na base 10, Soma na base 2, Soma na base R
(explicar com exemplos no quadro)

 Complemento de 1: O complemento de 1 de um
número binário é obtido trocando-se cada dígito 1 por 0
e vice-versa. A notação C1 (...) é usada para designar o
complemento de um do número entre parêntesis.

 Complemento de 2: O complemento de 2 de um
número binário é obtido trocando-se inicialmente todos
os 0s por 1s e vice-versa. Após isso adiciona-se 1 ao
número obtido. Notação C2(...)

42

21
03/05/2013

Operações Aritméticas
 Subtração por complemento de 1: Soma-se o
minuendo ao complemento de 1 do subtraendo. O bit
que se propaga após a última coluna da adição é somado
de volta ao bit menos significativo do resultado.
(resolver exemplo no quadro)

 Subtração por complemento de 2: Soma-se o


minuendo ao complemento de 2 do subtraendo. O bit
que se propaga após a ultima coluna da adição é
desprezado.
(resolver exemplo no quadro)

43

Operações Numéricas – Aula 4

Prof. Tiago Henrique

22
03/05/2013

Operações Aritméticas no Sistema Binário


 Adição
 A adição no sistema binário é realizada exatamente da
mesma forma que uma adição no sistema decimal.
 Vamos inicialmente realizar uma adição na base 10 e
posteriormente outra na base 2.
 Seja a operação 85 + 18.
85
+18
103

45

Operações Aritméticas no Sistema Binário


 Somamos por colunas à partir da direita, temos 8+5=13,
como a soma excedeu o maior dígito disponível, usamos a
regra do transporte para a próxima coluna.
 Assim, dizemos que dá 3 e “vai um”.
 Este transporte “vai um” é computado na soma da próxima
coluna, que passa a ser 8+1+1=10, novamente usamos o
transporte e dizemos que dá 0 e “vai um” abrindo uma nova
coluna que é 0+0+1=1.
 Obtemos desta forma o resultado 103.

46

23
03/05/2013

Operações Aritméticas no Sistema Binário


 Vamos agora para o sistema base 2, como temos
apenas dois dígitos, vamos verificar quais os possíveis
casos que ocorrerão na soma por colunas:
a)0 b) 0 c)1 d) 1 e) 1
+0 +1 +0 +1 1
0 1 1 10 +1
11
 Nos casos “a”,”b” e “c” não houve transporte.

47

Operações Aritméticas no Sistema Binário


 No caso “d” houve transporte, o resultado é 0 e “vai
um” e no caso “e” realizamos a soma de três parcelas
incluindo um transporte, o resultado é 1 e “vai um”.
 Vamos agora efetuar 11012+10112, temos:
1 1 1

1101
+1011
11000

48

24
03/05/2013

Operações Aritméticas no Sistema Binário


 Outro exemplo, efetuar 111012 + 10012
1 1

11101
+ 1001
100110
 Ainda outro exemplo, efetuar 1012+1112+102
1 1

101
111
+ 10
1110

49

Operações Aritméticas no Sistema Binário


 Subtração no sistema binário
 Como o método também é análogo ao da subtração
no sistema decimal, vamos ver quais os possíveis
casos que ocorrerão na subtração por colunas.
a) 0 b) 0 c) 1 d) 1
-0 -1 -0 -1
0 1 1 0

50

25
03/05/2013

Cont.
 No caso “b”, o resultado será 1, mas ocorrerá um transporte
para a coluna seguinte, que deve ser acumulado no
subtraendo.
 Exemplificando, vamos efetuar 11102 – 10012
1110

-1001
0101

51

Sistema numérico – Soma e subtração (base 2)

• Soma: • Subtração:
1
11102 10002
+ 11012 - 1112
110112 12

52

26
03/05/2013

Sistema numérico – Soma e subtração (base 2)

• Soma: • Subtração:
1 10
11102 00002
+ 11012 - 1112
110112 12

53

Sistema numérico – Soma e subtração (base 2)

• Soma: • Subtração:
1 10
11102 01002
+ 11012 - 1112
110112 12

54

27
03/05/2013

Sistema numérico – Soma e subtração (base 2)

• Soma: • Subtração:
1 10
11102 01102
+ 11012 - 1112
110112 00012

55

Operações Aritméticas no Sistema Binário


 Outro exemplo, vamos efetuar 11000- 101
11000
- 101
10011
 Multiplicação no sistema binário
 Novamente análoga ao caso decimal. Agora os casos
possíveis são:
a) 0x0 = 0 b) 0x1 = 0 c) 1x0 = 0 e d) 1x1 = 1

56

28
03/05/2013

Operações Aritméticas no Sistema Binário


 Exemplificando, efetuar 111102 x 112
11110
x 11
1 1 1

11110
11110+
1011010

57

Operações Aritméticas no Sistema Binário


 Outro exemplo, efetuar 11012 x 102
1101
x 10
0000
1101+
11010

58

29
03/05/2013

Operações Aritméticas no Sistema Binário


 Notação de números Binários Positivos e
Negativos
 Em aplicações práticas, os números binários devem ser
representados com sinal. Uma maneira de fazer isto é
adicionar um bit de sinal ao número.
 Este bit é adicionado à esquerda do número, por
convenção se for 0, o número em questão é positivo, caso
seja 1, o número é negativo.
 Este processo é denominado sinal-módulo.

59

Operações Aritméticas no Sistema Binário


 Vamos ver alguns exemplos:
 Representar em binários sinal-módulo os números 2310 , -
1510 , 1110 e -910 usando palavras de 8 bits.
2310 = 101112 usando 8 bits temos: 000101112
1510 = 11112 usando 8 bits temos: 000011112 como o sinal
é negativo vem –1510 = 100011112.
1110 = 10112 usando 8 bits temos: 000010112
910 = 10012 usando 8 bits temos: 000010012 , como o sinal
é negativo vem –910 = 100010012

60

30
03/05/2013

Operações Aritméticas no Sistema Binário


 Outra forma de representação de números negativos bastante
utilizada é o complemento de 2.
 Para obtermos o complemento de 2 de um número binário,
precisamos inicialmente converter o número em seu
complemento de 1.
 O complemento de 1 de um número binário obtém-se
trocando cada bit pelo seu complemento (01 e
1 0).
 A seguir, soma-se 1 ao complemento de 1, obtendo assim o
complemento de 2.

61

Operações Aritméticas no Sistema Binário


 Vamos exemplificar obtendo os complementos
de 2 dos números binários abaixo:
binário compl de 1 compl de 2
10001001 01110110 01110111
00111100 11000011 11000100
10011111 01100000 01100001
11000101 00111010 00111011
01101011 10010100 10010101

62

31
03/05/2013

Operações Aritméticas no Sistema Binário


 Devemos observar que devido ao seu emprego em hardware
os números binários são representados sempre com um
número fixo de bits.
 A conversão inversa, ou seja, de um número em representação
complemento de 2 para a notação binária original é feita
obtendo-se novamente o seu complemento de 2.

63

Operações Aritméticas no Sistema Binário


 Utilização do complemento de 2 em operações aritméticas.
 Podemos utilizar a notação complemento de 2 para efetuar
operações de soma (e subtração).
 Para efetuar operações envolvendo números negativos usamos
seu complemento de 2
 Por exemplo: Efetuar 110101112-1001012
obtendo o complemento de 2 de 100101
000100101 temos 111011011

64

32
03/05/2013

Operações Aritméticas no Sistema Binário


a seguir efetuamos a soma 11010111 + 011011
011010111
+ 110011011
1001110010
overflow

65

Exercícios
 Efetue as operações binárias
a) 10001+1111 b) 1110+1001011 c) 1011+ 11100

d) 110101+1011001+1111110 e) 1100+1001011+11101

f) 10101-1110 g) 100000-11100 h) 1011001-11011

i) 11001x101 j) 11110x110 k) 11110x111

 Represente os números em notação sinal-módulo 8bits


a) 97 b) -121 c) 79 d) -101

 Represente os números do exercício anterior em complemento de 2.

 Efetue as operações utilizando complemento de 2 (palavra de 9 bits).


a) 111100-11101011 b) 101101-100111 c) 758-308

66

33
03/05/2013

Códigos – Aula 5

Código BCD
 Quando números, letras ou palavras são
representados por um grupo especial de símbolos,
dizemos que eles estão codificados, sendo o grupo de
símbolos denominado código.
 CODIFICAÇÃO EM BINÁRIO PURO: Um número
decimal é representado pelo seu número binário
equivalente.

 DECIMAL CODIFICADO EM BINÁRIO: Cada


dígito de um número decimal é representado em binário.
Esta codificação é denominada de BCD (Binary-Coded-
Decimal).

68

34
03/05/2013

Código BCD
 Para ilustrar, considere o número 874 em decimal:

 Codificação em Binário Puro:

87410 = 11011010102

 Decimal Codificado em Binário:


87410 = 100001110100 (BCD)
8 7 4

69

Código BCD
 A principal vantagem do código BCD é a relativa
facilidade de conversão para decimal e vice-versa.
Apenas os grupos de 4 bits dos dígitos de 0 a 9
precisam ser memorizados. Essa característica de fácil
conversão é especialmente importante do ponto de
vista do hardware porque nos sistemas digitais são os
circuitos lógicos que realizam as conversões mútuas
entre BCD e decimal.

70

35
03/05/2013

Códigos Alfanuméricos (Código ASCII)


 Além de dados numéricos, um computador precisa ser
capaz de manipular informações não numéricas. O código
alfanumérico mais utilizado é o Código Padrão
Americano para Troca de Informações (American
Standard Code for Information Interchange – ASCII).
 O código ASCII é um código de 7 bits, portanto ele tem
27 = 128 representações codificadas. Isso é mais que o
suficiente para representar todos os caracteres de um
teclado padrão.
 O código ASCII é usado para transferência de informação
alfanumérica entre um computador e dispositivos
externos.

71

Códigos Alfanuméricos (Código ASCII)

72

36
03/05/2013

Códigos Alfanuméricos (Código ASCII)

73

Aula 6 – Lógica de Programação

37
03/05/2013

Lógica de Programação & Algoritmo


 Instruções Delimitadoras
 Servem para especificar o início e o fim do algoritmo.

início
...
fim

75

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

76

38
03/05/2013

Declaração de Variáveis
 Exemplos:

declare a,b,c: real;


declare nome: string;
declare sexo: caracter;
declare pratica_esporte: lógico;

77

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 }

78

39
03/05/2013

Instrução de Entrada
 Usada para ler dados de entrada do algoritmo.

leia(<variáveis>);

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

79

Instrução de Entrada
 Exemplos:

leia(a,b,c);
leia(nome);
leia(sexo);
leia(pratica_esporte);

80

40
03/05/2013

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.

81

Instrução de Saída
 Exemplos:

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


escreva(nome, sexo);
escreva(“Pratica esporte.”);

82

41
03/05/2013

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.

83

Instrução de Atribuição
 Exemplos

D B^2-4*A*C;
nome “Paulo”;
Pratica_Esporte TRUE;
Sexo ‘M’;

84

42
03/05/2013

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.
 São elas:
 Estrutura Seqüencial

 Estrutura de Repetição

 Estrutura de Seleção
* Bohm, Corrado; and Giuseppe Jacopini (1966). "Flow Diagrams, Turing
Machines and Languages with Only Two Formation Rules". Communications of the
ACM 9 (5): 366–371.
85

Estruturas de Controle
 Estrutura Seqüencial:
 os comandos ou instruções vão sendo executados
na ordem em que aparecem no algoritmo.

86

43
03/05/2013

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

87

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

88

44
03/05/2013

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.

89

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

se A>0 então

B A + 1;

A 0;

fim-se

90

45
03/05/2013

Instruções de Seleção
 Tipo composto:
se <sentença> então
<comandos1>;
senão
<comandos2>;
fim-se

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

91

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

92

46
03/05/2013

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.

93

Instruções de Repetição
 Exemplo:

enquanto A>0 faça


leia(B);
escreva(B);
A A - 1;
fim-enquanto;

94

47
03/05/2013

Instruções de Repetição
 Repita / Até

repita
<comandos>;
até <sentença>;

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

95

Instruções de Repetição
 Exemplo:

repita
leia(B);
escreva(B);
A A - 1;
até A<1;

96

48
03/05/2013

Instruções de Repetição
 Para / Até / Fim-Para

para <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

97

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;

98

49
03/05/2013

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

*também conhecido como Português estruturado


99

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

100

50
03/05/2013

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; Este algoritmo só usa uma
estrutura de seqüência
Fim. “Início/Fim”

101

Lógica de Programação & Algoritmo


 Algoritmo para ligar de um telefone público – Seleção
E 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; Este algoritmo usa uma
4. Desligar; estrutura de decisão
5. Retirar o cartão; “Se-então/Senão”
3. Senão
1. ir para o próximo telefone;
Fim.

102

51
03/05/2013

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ício
1. 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; Este algoritmo usa uma
4. Desligar;
5. Retirar o cartão; estrutura de repetição
3. Senão “Repita/Até”
1. ir para o próximo telefone;
2. Até ouvir o sinal de linha
Fim.

103

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)
104

52
03/05/2013

Ambientes/Linguagens de Programação

Pseudocódigo C
declare
Início {
Fim }
Caracter Char
Inteiro Int
Real Double
Lógico Boolean
Leia Scanf
Escreva Printf

105

Ambientes/Linguagens de Programação

Pseudocódigo PASCAL
declare Var
Início Begin
Fim End
Caracter Char
Inteiro Integer
Real Real
Lógico Boolean
Leia Read
Escreva Write

106

53
03/05/2013

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!

107

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

Início

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

Fim

108

54
03/05/2013

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

109

Pseudocódigo - Exemplo 1
 Achar o valor da expressão: D = B2 - 4AC.

Início
Declare A,B,C,D: real; { Declaração de variáveis }
Leia(A,B,C);
D B^2 - 4*A*C; { Operação de atribuição }
Escreva(D);
Fim.

110

55
03/05/2013

Exemplo 2 - Fluxograma
 Achar o maior de dois números A e B.
Início

Ler A, B

Comparar
A com B

A=B A>B A<B


Escrever: Escrever: Escrever:
“A e B iguais” “A é maior” “B é maior”

Fim
111

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

112

56
03/05/2013

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.

113

Fluxograma
 Utiliza desenhos geométricos básicos para descrever o fluxo da
entrada, processamento e saída de dados.

114

57
03/05/2013

Fluxograma
 Outras formas geométricas...

115

Fluxograma
 EXEMPLO DE FLUXOGRAMA

116

58
03/05/2013

Estrutura de Seleção
 Desvio condicional simples

 Utiliza a instrução se...entao...fimse, com a finalidade de


tomar uma decisão;

 Se a condição for verdadeira, serão executadas todas as


instruções que estejam entre a instrução se...entao e a
instrução fimse;

 Sendo a condição falsa, serão executadas as instruções após o


comando fimse;

117

Estrutura de Seleção
 Desvio condicional simples
 Fluxograma

118

59
03/05/2013

Estrutura de Seleção
 Desvio condicional simples
Ler dois valores numéricos, efetuar a adição e apresentar o seu
resultado caso o valor somado seja maior que 10.

1. Conhecer dois valores (variáveis A e B)


2. Efetuar a soma e atribuir o resultado à variável res;
3. Apresentar o valor contido na variável res, caso seja maior que 10.

119

Estrutura de Seleção
 Desvio condicional simples

120

60
03/05/2013

Estrutura de Seleção
 Desvio condicional composto

 Utiliza a instrução se...entao...senão...fimse, com a


finalidade de tomar uma decisão;

 Se a condição for verdadeira, serão executadas todas as


instruções que estejam entre a instrução se...entao e a
instrução senao;

 Sendo a condição falsa, serão executadas as instruções que


estejam entre o senão e a instrução fimse;

121

Estrutura de Seleção
 Desvio condicional composto
 Fluxograma

122

61
03/05/2013

Estrutura de Seleção
 Desvio condicional composto

123

Estrutura de Seleção
 Desvios condicionais encadeados (ou aninhados)

 Utilizado quando for necessário estabelecerem verificações de


condições sucessivas;

 Determinada ação poderá ser executada se um conjunto


anterior de condições for satisfeito, e estabelecer novas
condições;

 Neste caso será utilizada uma condição dentro de outra


condição.

124

62
03/05/2013

Estrutura de Seleção
 Desvio condicional encadeado

125

Estrutura de Repetição
 Existem comandos apropriados para efetuar a repetição:
 enquanto;
 repita; e
 para.

 A principal vantagem é que o algoritmo passa a ter um


tamanho menor, podendo ampliar o processamento, sem
alterar o tamanho do código;

126

63
03/05/2013

Estrutura de Repetição
 Estrutura enquanto

 Efetua um teste lógico no início do looping;

 Um determinado conjunto de instruções será executado


enquanto a condição verificada for verdadeira;

 No momento em que a condição se torna falsa, o


processamento é desviado para fora do looping;

 Se a condição for falsa logo de início, as instruções do looping


são ignoradas.

127

Estrutura de Repetição
 Estrutura enquanto

128

64
03/05/2013

Estrutura de Repetição
 Estrutura enquanto
Pedir a leitura de um valor para a variável X, multiplicar este valor por 3
atribuindo-o à variável de resposta R e apresentar o valor obtido,
repetindo esta seqüência por 5 vezes.

1. Criar uma variável para servir como contador com valor inicial 1;
2. Enquanto o contador for menor ou igual a 5, processar os passos 3, 4, 5;
3. Ler um valor para a variável X;
4. Multiplicar o valor de X por 3, guardando o resultado em R;
5. Apresentar o valor contido na variável R;
6. Acrescentar +1 ao contador;
7. Quando o contador for maior que 5, encerrar o processamento do looping.

129

Estrutura de Repetição
 Estrutura enquanto

130

65
03/05/2013

Estrutura de Repetição
 Estrutura repita

 Efetua um teste lógico no fim do looping;

 Um conjunto de instruções é executado enquanto a condição


se mantém falsa, quando ela for verdadeira o processamento
sai do looping;

 Processa a execução de um conjunto de instruções pelo


menos uma vez antes de verificar a validade da condição;

 Processará um conjunto de instruções pelo menos uma vez até


que a condição se torne verdadeira;

131

Estrutura de Repetição
 Estrutura repita

132

66
03/05/2013

Estrutura de Repetição
 Estrutura repita
Pedir a leitura de um valor para a variável X, multiplicar este valor por 3
atribuindo-o à variável de resposta R e apresentar o valor obtido,
repetindo esta seqüência por 5 vezes.

1. Criar uma variável contador com valor inicial 1;


2. Ler um valor para a variável X;
3. Multiplicar o valor de X por 3, guardando o resultado em R;
4. Apresentar o valor contido na variável R;
5. Acrescentar +1 ao contador;
6. Repetir os passos 2,3,4 e 5 até que o contador seja maior que 5.

133

Estrutura de Repetição
 Estrutura repita

134

67
03/05/2013

Estrutura de Repetição
 Estrutura para

 Tem o seu funcionamento controlado por uma variável


denominada contador;

 Executa um conjunto de instruções um determinado número


de vezes;

 Utilizado quando se sabe previamente o número de vezes que


uma seqüência de instruções deverá ser executada.

135

Estrutura de Repetição
 Estrutura para Processamento
predefinido ou
Preparação

136

68
03/05/2013

Estrutura de Repetição
 Estrutura para
Pedir a leitura de um valor para a variável X, multiplicar este valor por 3
atribuindo-o à variável de resposta R e apresentar o valor obtido,
repetindo esta seqüência por 5 vezes.

1. Definir um contador variando de 1 a 5;


2. Ler um valor para a variável X;
3. Multiplicar o valor de X por 3, guardando o resultado em R;
4. Apresentar o valor contido na variável R;
5. Acrescentar +1 ao contador;
6. Repetir os passos 2,3,4 e 5 até que o contador seja encerrado.

137

Estrutura de Repetição
 Estrutura para

138

69
03/05/2013

Exercícios
 Faça um fluxograma que leia dois números, calcule e
imprima a soma desses dois números.
 Faça um fluxograma que leia um número e informe se o
dobro do número é maior que 35.
 Faça um fluxograma que leia dois números e informa se o
primeiro é igual ao segundo.
 Faça um fluxograma que leia a idade e a altura de várias
pessoas. Calcule e informe a média das alturas das
pessoas com mais de 50 anos. Para encerrar o programa
digite zero para idade.
 Entrar com vários números e imprimir quantos números
foram digitados.

139

70

Você também pode gostar