7. Pref´acio
Estes apontamentos tˆem por base material elaborado em anos anteriores para disciplinas da
licenciatura em Ciˆencia de Computadores [5, 6, 7], o qual foi agora revisto e nalguns t´opicos
completado para servir de apoio `a disciplina de Matem´atica para Ciˆencia de Computadores,
no ano lectivo de 2005/06. N˜ao visam substituir a leitura da bibliografia recomendada pelos
docentes e n˜ao cobrem actualmente todos os t´opicos abordados na disciplina.
v
9. Cap´ıtulo 1
Conjuntos
Neste cap´ıtulo vamos essencialmente recordar ou introduzir alguma da nota¸c˜ao que ´e usada
para conjuntos. Tomamos a no¸c˜ao de conjunto como primitiva, convencionando que um
conjunto ´e constitu´ıdo por elementos – objectos materiais ou entes abstractos que tˆem
alguma propriedade em comum (no caso extremo, a de pertencerem todos a esse conjunto).
Os conjuntos podem ser vazios (i.e. sem elementos). Em geral, usamos letras mai´usculas
para designar conjuntos e min´usculas para referir os seus elementos. Para indicar que a ´e um
elemento do conjunto A escrevemos a ∈ A. Os conjuntos podem ser especificados em extens˜ao
– exibindo todos os elementos que os constituem – ou indicando a propriedade que caracteriza
os seus elementos – defini¸c˜ao em compreens˜ao. Por exemplo, {1, 2, 3, 4} e {n | n ∈ Z+∧n ≤ 4}.
Nota¸c˜ao. Sejam A e B conjuntos.
a ∈ A a pertence a A, a ´e elemento de A
a /∈ A a n˜ao pertence a A
A = B igualdade de conjuntos (qualquer que seja x,
x ∈ A se e s´o se x ∈ B)
A ⊆ B A contido em B, A subconjunto de B
(qualquer que seja x, se x ∈ A ent˜ao x ∈ B)
A ⊇ B A cont´em B, B ⊆ A
A ⊂ B A contido propriamente em B,
A subconjunto pr´oprio de B
A ⊆ B ∧ A = B
A ⊃ B A cont´em propriamente B
A = B A ⊆ B ou B ⊆ A
∅ ou {} conjunto vazio
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
10. 1.1. OPERAC¸ ˜OES COM CONJUNTOS 2
O conjunto dos subconjuntos de A, representa-se por P(A) ou 2A. Qualquer con-
junto A pertence ao seu conjunto de subconjuntos, isto ´e A ∈ P(A). Por exemplo,
P({1, 2, 3}) = {∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
O conjunto P({1, 2, 3}) tem 23 elementos. Tamb´em se pode verificar que P(P({1, 2, 3}))
tem 223
elementos. Se A tem n elementos, P(A) tem 2n elementos.
Nestes apontamentos, N representa o conjunto dos inteiros n˜ao negativos (incluindo
assim tamb´em 0).
N inteiros n˜ao negativos (em vez de N0)
Z inteiros
Q racionais
R reais
R+
0 reais n˜ao negativos
R+ reais positivos
R− reais negativos
Um conjunto A n˜ao vazio ´e finito se e s´o se existir uma bijecc˜ao de A em {x ∈ N | x < n}
para algum n ∈ N. Nesse caso, n ´e o cardinal (n´umero de elementos) de A. Usamos |A| (ou,
alternativamente, #A) para designar o cardinal de A. O cardinal do conjunto vazio ´e zero.
A prop´osito de quest˜oes de nota¸c˜ao, ´e de salientar que
{n | n ∈ N}
{n}, com n ∈ N
denotam conjuntos diferentes: o primeiro ´e N e o segundo ´e constitu´ıdo por um ´unico inteiro
(que est´a a ser representado pela letra n).
1.1 Opera¸c˜oes com Conjuntos
A intersec¸c˜ao de A com B representa-se por A ∩ B, e ´e o conjunto dos elementos que
pertencem a ambos os conjuntos.
A ∩ B = {x | x ∈ A e x ∈ B}
A uni˜ao de A com B que se representa por A ∪ B, ´e o conjunto dos elementos que
pertencem a pelo menos um dos conjuntos.
A ∪ B = {x | x ∈ A ou x ∈ B}
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
11. 1.1. OPERAC¸ ˜OES COM CONJUNTOS 3
O complementar de B em A representa-se por A B, e ´e o conjunto dos elementos de
A que n˜ao pertencem a B.
A B = {x | x ∈ A e x /∈ B}
Quando est´a implic´ıto um dado universo U, chama-se complementar de A, e representa-
se por A, ao complementar de A em U, ou seja a U A.
Exemplo 1 Vamos provar que A (B ∪ C) = (A B) ∩ (A C). Para tal vamos mostrar que
x ∈ A (B ∪ C) ⇔ x ∈ (A B) ∩ (A C), qualquer que seja x.
x ∈ A (B ∪ C) ⇔ x ∈ A ∧ x /∈ B ∪ C (por def. de diferen¸ca)
⇔ x ∈ A ∧ (x /∈ B ∧ x /∈ C) (por def. uni˜ao)
⇔ x ∈ A B ∧ x ∈ A C (por def. de diferen¸ca)
⇔ x ∈ (A B) ∩ (A C) (por def. intersec¸c˜ao)
Exemplo 2 Quaisquer que sejam os conjuntos A, B ⊆ U, tem-se A ∪ B = A ∩ B. De facto,
se x ∈ A ∪ B ent˜ao, por defini¸c˜ao de complementar, x /∈ A ∪ B. Logo, x /∈ A e x /∈ B. Mas,
x /∈ A sse x ∈ A. E, x /∈ B sse x ∈ B. Ent˜ao, x ∈ A e x ∈ B. Donde, x ∈ A∩B. Mostr´amos
assim que A ∪ B ⊆ A ∩ B. Reciprocamente,
x ∈ A ∩ B =⇒ (x ∈ A ∧ x ∈ B) (por def. ∩)
=⇒ (x /∈ A ∧ x /∈ B) (por def. complementar)
=⇒ x /∈ (A ∪ B) (por def. ∪)
=⇒ x ∈ A ∪ B (por def. complementar)
ou seja, A ∪ B ⊇ A ∩ B.
Exerc´ıcio 1.1.1 Suponha que os conjuntos indicados s˜ao subconjuntos do universo U. Sendo
A, B e C subconjuntos de U quaisquer, mostre cada uma das propriedades:
(a) A B = A ∩ B = B A (j) ∅ = U (r) U = ∅
(b) A B = ∅ sse A ⊆ B (k) A A = ∅ (s) A ∅ = A
(c) A B = A sse A ∩ B = ∅ (l) A = A (t) A ∪ U = U
(d) (A B) ∪ (B A) = (A ∪ B) (B ∩ A) (m) A ∪ A = U (u) A ∩ A = ∅
(e) (A ∩ B) ∩ C = A ∩ (B ∩ C) (n) A ∩ U = A (v) A ∩ A = A
(f) (A ∪ B) ∪ C = A ∪ (B ∪ C) (o) A ∪ ∅ = A
(g) (A ∪ B) ∩ C = (A ∩ C) ∪ (B ∩ C)
(h) (A ∩ B) ∪ C = (A ∪ C) ∩ (B ∪ C) (p) A ∪ B = A ∩ B
(i) A (B ∪ C) = (A B) ∩ (A C) (q) A ⊆ B sse B ⊆ A
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
12. 1.1. OPERAC¸ ˜OES COM CONJUNTOS 4
Exemplo 3 A t´ıtulo de exemplo, vamos analisar a veracidade ou falsidade das afirma¸c˜oes
seguintes e justific´a-la.
1. Qualquer que seja x ∈ Z, existe y ∈ Z tal que x ≤ y e x = y.
∀x ∈ Z ∃y ∈ Z (x ≤ y ∧ x = y)
A afirma¸c˜ao ´e verdadeira porque, sendo o conjunto dos inteiros infinito, se x ´e inteiro,
x + 1 tamb´em ´e um inteiro e x + 1 ´e superior a x. Ou seja, dado um x qualquer, se
considerarmos que y ´e x + 1, satisfazemos a condi¸c˜ao (x ≤ y ∧ x = y). Note que y
depender´a de x.
2. Existe y ∈ Z tal que para todo x ∈ Z se tem x ≤ y.
∃y ∈ Z ∀x ∈ Z x ≤ y
A afirma¸c˜ao ´e falsa porque em particular se x fosse y+1 ent˜ao teriamos que ter y+1 ≤ y,
que n˜ao ´e satisfaz´ıvel (j´a que ´e equivalente a 1 ≤ 0).
3. Existe um inteiro n˜ao negativo que n˜ao excede qualquer outro inteiro n˜ao
negativo.
∃x ∈ Z+
0 ∀y ∈ Z+
0 x ≤ y
A afirma¸c˜ao ´e verdadeira. O inteiro 0 ´e menor ou igual que cada um dos inteiros n˜ao
negativos. Aqui, Z+
0 denota o conjunto dos inteiros n˜ao negativos, o qual identific´amos
tamb´em por N.
4. Existe x ∈ Z tal que x ´e maior do que qualquer outro inteiro y.
∃x ∈ Z ∀y ∈ Z x > y
A afirma¸c˜ao ´e falsa (an´aloga `a 2).
5. Para todo A ⊆ Z, tem-se P(A) = {∅}.
A afirma¸c˜ao ´e falsa, porque {1} ´e um subconjunto de Z e P({1}) = {∅, {1}} = {∅}.
6. Para todo A ⊆ Z, se A = ∅ ent˜ao P(A) = {∅}.
A afirma¸c˜ao ´e verdadeira. S´o existe um subconjunto de Z que ´e vazio, e P(∅) = {∅}.
Note que {∅} ´e um conjunto que tem um elemento. Esse elemento ´e ∅, ou seja, ´e o
conjunto vazio.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
13. 1.1. OPERAC¸ ˜OES COM CONJUNTOS 5
7. Tem-se P(A) = ∅, para algum A ⊆ Z.
∃A (A ⊆ Z ∧ P(A) = ∅)
A afirma¸c˜ao ´e falsa, porque qualquer que seja o subconjunto A de Z, o conjunto vazio ´e
um elemento de P(A).
8. Quaisquer que sejam x, y ∈ Z, tem-se x ≤ y ou y ≤ x.
∀x ∈ Z ∀y ∈ Z (x ≤ y ∨ y ≤ x)
Dizer que x ≤ y equivale a dizer que existe um inteiro n˜ao negativo z tal que y = x + z.
´E verdade que (x ≤ y ∨ y ≤ x), quaisquer que sejam os inteiros x e y.
Como x − y ´e inteiro, quaisquer que sejam x e y, se x − y ´e n˜ao negativo, ent˜ao y ≤ x
pois x = y + (x − y). Se x − y ´e negativo, ent˜ao y − x ´e um inteiro positivo, e como
y = x + (y − x), tem-se x ≤ y.
9. Qualquer que seja A ⊆ Z, se A = {−1, 2, 3} ent˜ao 4 ∈ A.
∀A ( (A ⊆ Z ∧ A = {−1, 2, 3}) ⇒ 4 ∈ A) )
Falso. Existe um subconjunto de Z que ´e diferente de {−1, 2, 3} e que n˜ao tem o 4. Por
exemplo, o conjunto vazio.
10. Quaisquer que sejam A, B ⊆ Z, se 5 ∈ A B ent˜ao 5 ∈ A.
∀A ∀B( (A ⊆ Z ∧ B ⊆ Z ∧ 5 ∈ A B) ⇒ 5 ∈ A )
A afirma¸c˜ao ´e verdadeira. Quaisquer que sejam os subconjuntos A e B de Z, tem-se
5 ∈ A B se e s´o se 5 ∈ A e 5 /∈ B. Logo, se 5 ∈ A B ent˜ao 5 ∈ A.
11. Para todo o x ∈ Z, e quaisquer que sejam A, B ⊆ Z, se x ∈ A B ent˜ao x ∈ A.
A afirma¸c˜ao ´e verdadeira. A justifica¸c˜ao ´e semelhante `a dada para a afirma¸c˜ao anterior
(claro que ´e necess´ario falar em x e n˜ao em 5!).
12. Existe x ∈ Z tal que x ∈ A B, quaisquer que sejam A, B ⊆ Z.
Esta afirma¸c˜ao pode ser traduzida pela express˜ao l´ogica
∃x (x ∈ Z ∧ ( ∀A ∀B ( (B ⊆ Z ∧ A ⊆ Z) ⇒ x ∈ A B) ))
a qual escrevemos por vezes como
∃x ∈ Z ∀A ⊆ Z ∀B ⊆ Z (x ∈ A B)
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
14. 1.1. OPERAC¸ ˜OES COM CONJUNTOS 6
que ´e falsa. Quaisquer que sejam os conjuntos A e B se A = B ent˜ao AB = ∅. Assim,
se tomarmos, por exemplo, A = B = {1}, os conjuntos A e B s˜ao subconjuntos de Z e
n˜ao existe qualquer inteiro x tal que x ∈ A B.
13. 2 + 2 = 4 ou
√
2 ∈ Z.
A afirma¸c˜ao ´e verdadeira porque embora
√
2 /∈ Z, ´e verdade que 2 + 2 = 4.
14. Se 2 + 2 = 4 ent˜ao
√
2 ∈ Z.
A afirma¸c˜ao ´e equivalente a “2 + 2 = 4 ou
√
2 ∈ Z”.
15. Se
√
2 ∈ Z ent˜ao 2 + 2 = 4.
A afirma¸c˜ao ´e equivalente a “
√
2 /∈ Z ou 2 + 2 = 4”, e como
√
2 /∈ Z, a afirma¸c˜ao ´e
verdadeira.
16.
√
2 ∈ Z ou 2 + 2 = 4.
A afirma¸c˜ao ´e verdadeira porque
√
2 ∈ Z.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
15. Cap´ıtulo 2
Representa¸c˜ao de N´umeros em
Computador
Do mesmo modo que “5692 segundos”, “94 minutos e 52 segundos”, “1 hora, 34 minutos e 52
segundos” s˜ao designa¸c˜oes ou representa¸c˜oes diferentes da mesma entidade, tamb´em 5692(10),
13074(8) e 1011000111100(2) o s˜ao. De facto,
1 34 52(60) ≡ 1h34 52 ≡ 1 × 602
+ 34 × 601
+ 52 × 600
5 6 9 2(10) ≡ 5 × 103
+ 6 × 102
+ 9 × 101
+ 2 × 100
1 3 0 7 4(8) ≡ 1 × 84
+ 3 × 83
+ 0 × 82
+ 7 × 81
+ 4 × 80
1 0 1 1 0 0 0 1 1 1 1 0 0(2) ≡ 1 × 212
+ 0 × 211
+ 1 × 210
+ 1 × 29
+ 0 × 28
+ 0 × 27
+
0 × 26
+ 1 × 25
+ 1 × 24
+ 1 × 23
+ 1 × 22
+ 0 × 21
+ 0 × 20
dizendo-se que 60, 10, 8 e 2 s˜ao as bases de numera¸c˜ao, respectivas. Habitualmente, escreve-se
5692 em vez de 5692(10), porque a base mais usual para representa¸c˜ao de inteiros ´e a base 10,
designada por decimal. As bases 8 e 2 s˜ao designadas por octal e bin´aria. Se considerarmos
as potˆencias de 2,
212 211 210 29 28 27 26 25 24 23 22 21 20
4096 2048 1024 512 256 128 64 32 16 8 4 2 1
podemos observar que 5692 = 4096+1596 = 4096+(1024+572) = 4096+1024+(512+60) =
. . . = 4096 + 1024 + 512 + 32 + 16 + 8 + 4 = 1011000111100(2).
Analogamente, se considerarmos as potˆencias de 3,
38 37 36 35 34 33 32 31 30
6561 2187 729 243 81 27 9 3 1
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
16. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 8
podemos verificar que 5692 = 21210211(3). De facto, 5692 = 2 × 2187 + 1318 = 2 × 2187 +
(1 × 729 + 589) = 2 × 2187 + 1 × 729 + (2 × 243 + 103) = . . . = 2 × 2187 + 1 × 729 + 2 × 243 +
1 × 81 + 2 × 9 + 1 × 3 + 1 = 21210211(3).
2.1 Sistema de Representa¸c˜ao Posicional
Num sistema de numera¸c˜ao de base b usam-se b s´ımbolos diferentes para b d´ıgitos (de 0 a
b − 1). Os n´umeros s˜ao representados por uma sequˆencia de d´ıgitos.
Os d´ıgitos na base 10 s˜ao 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Os d´ıgitos na base 2 s˜ao 0 e 1, e
normalmente s˜ao designados por bits. Por exemplo,
1011102 = 1 × 25
+ 0 × 24
+ 1 × 23
+ 1 × 22
+ 1 × 21
+ 0 × 20
Se a = rmbm + rm−1bm−1 + . . . + r2b2 + r1b1 + r0b0 com rm = 0 e 0 ≤ ri ≤ b − 1 para
0 ≤ i ≤ m ent˜ao
a ≡ rm . . . r2r1r0 (b)
´e a representa¸c˜ao de a na base b. Os coeficientes r0, r1, r2, . . . rm chamam-se d´ıgitos de repre-
senta¸c˜ao de a na base b, sendo r0 o d´ıgito menos significativo e rm o d´ıgito mais significativo.
A representa¸c˜ao ´e ´unica, o que ´e consequˆencia da unicidade do quociente e resto da divis˜ao
inteira.
Proposi¸c˜ao 1 (divis˜ao euclideana de inteiros) Quaisquer que sejam a ∈ Z e b ∈ Z+ existe
um e um s´o q ∈ Z e um e um s´o r ∈ Z tal que b = aq + r e 0 ≤ r < b.
A q chama-se quociente e a r resto da divis˜ao inteira de a por b, sendo importante a
condi¸c˜ao 0 ≤ r < b para garantir a unicidade.
Corol´ario 1.1 Quaisquer que sejam a ∈ Z+ e b ∈ Z+ {1}, existem inteiros ´unicos r0, r1,
r2, . . . rm tais que a = rmbm + rm−1bm−1 + . . . + r2b2 + r1b1 + r0b0, rm = 0 e 0 ≤ ri ≤ b − 1
para 0 ≤ i ≤ m.
Prova: Sejam a e b inteiros com a > 0 e b > 1. Tem-se ou a < b ou a ≥ b.
Se a < b ent˜ao a = 0b + a. Portanto, 0 < r0 = a.
Se a ≥ b ent˜ao, por defini¸c˜ao de divis˜ao inteira, existem q0 e r0 ´unicos tais que a = bq0 +r0,
com 0 ≤ r0 < b. Se q0 < b, toma-se r1 = q0 e obtem-se a = r1b + r0. Se q0 ≥ b, ent˜ao o
processo repete-se agora para q0. Ou seja, q0 = bq1 + r1, com 0 ≤ r1 < b. Logo,
a = bq0 + r0 = b(bq1 + r1) + r0 = b2
q1 + br1 + r0
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
17. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 9
Se q1 < b, toma-se r2 = q0 e obtem-se a = b2r2 +br1 +r0. Se q1 ≥ b, ent˜ao o processo repete-se
agora para q1, e sucessivamente. O processo termina porque a > q0 > q1 > . . . e qualquer qi
´e um inteiro n˜ao negativo.
Esta prova indica um algoritmo para determina¸c˜ao da representa¸c˜ao dum inteiro a numa
base b.
Exemplo 4 Tem-se 125(10) = 53 = 1000(5) = 26 + 25 + 24 + 23 + 22 + 20 = 1111101(2) =
175(8) = 7D(16). De facto,
125 5
0 25 5
r0 0 5 5
r1 0 1
r2
r3
125 2
1 62 2
r0 0 31 2
r1 1 15 2
r2 1 7 2
r3 1 3 2
r4 1 1
r5
r6
125 8
5 15 8
r0 7 1
r1
r2
125 16
13 7
r0
r1
No entanto, quando se conhecem potˆencias da base, pode ser mais f´acil determinar a
representa¸c˜ao por outro m´etodo. Por exemplo, para a base 2,
46(10) = 32(10) + 8(10) + 4(10) + 2(10) = 101110(2)
enquanto se se aplicar o algoritmo dado pela prova anterior teria
46 2
0 23 2
r0 1 11 2
r1 1 5 2
r2 1 2 2
r3 0 1
r4
r5
46(10) = 23 × 2 + 0 = (11 × 2 + 1) × 2 + 0 = ((5 × 2 + 1) × 2 + 1) × 2 + 0
= (((2 × 2 + 1) × 2 + 1) × 2 + 1) × 2 + 0
= ((((2 × 1 + 0) × 2 + 1) × 2 + 1) × 2 + 1) × 2 + 0
= 1 × 25
+ 0 × 24
+ 1 × 23
+ 1 × 22
+ 1 × 21
+ 0 × 20
= 101110(2)
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
18. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 10
Pode interessar tamb´em saber qual a representa¸c˜ao decimal dum inteiro dado
numa base b. Para a obter, bastar´a aplicar a defini¸c˜ao e efectuar os c´alculos na base 10.
101110(2) = 1 × 25
+ 0 × 24
+ 1 × 23
+ 1 × 22
+ 1 × 21
+ 0 × 20
= 32 + 8 + 4 + 2 = 46(10)
101110(3) = 1 × 35
+ 0 × 34
+ 1 × 33
+ 1 × 32
+ 1 × 31
+ 0 × 30
= 162 + 27 + 9 + 3 = 201(10)
Para al´em da base 2, s˜ao bastante usadas em Computa¸c˜ao as bases 8 (octal) e 16 (hexa-
decimal). Os d´ıgitos em octal s˜ao 0, 1, 2, 3, 4, 5, 6 e 7. Embora os restos da divis˜ao por 16
sejam 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,. . . , 15, por conven¸c˜ao, os d´ıgitos em hexadecimal
a partir de 10 s˜ao representados pelas letras mai´usculas de A a F. Deste modo n˜ao haver´a
qualquer ambiguidade de representa¸c˜ao (por exemplo, fica claro que o hexadecimal 15 designa
o decimal 1×16+5 e F o decimal 15). Os n´umeros representados na base octal s˜ao por vezes
indexados por (o), por exemplo 235(o), e os representados na base hexadecimal por (h), por
exemplo F15A(h).
Designa¸c˜ao Base D´ıgitos
Bin´ario 2 0 a 1
Octal 8 (=23) 0 a 7
Hexadecimal 16 (=24) 0 a 9, A, B, C, D, E, F
Decimal 10 0 a 9
Exemplo 5 A sequˆencia 78412 n˜ao pode representar nenhum inteiro na base 4 porque 7, 8 e 4
n˜ao s˜ao d´ıgitos base 4. A sequˆencia 001231 n˜ao ´e representa¸c˜ao numa base de numera¸c˜ao,
no sentido acima definido, porque teria zeros n˜ao significativos. A sequˆencia 123100 pode
representar um inteiro em qualquer base b superior a 4.
Exerc´ıcio 2.1.1 Converter para bin´ario: 153(10), 153(6), 153(8), 153(16).
Exerc´ıcio 2.1.2 Converter para hexadecimal: 153(10), 151323(10), 153(8), 1010101111(2) .
Exerc´ıcio 2.1.3 Converter para octal: 1123(4), 151323(10), 153(8), 1010101111(2) .
Exerc´ıcio 2.1.4 Converter para a base 251 e 666 os seguintes n´umeros em decimal:
1383, 1498, 1500, 1580, 1640
Exerc´ıcio 2.1.5 Represente x, xn e xn − 1 na base x, para x > 1 e n ∈ N.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
19. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 11
2.1.1 Rela¸c˜ao entre bin´ario, octal e hexadecimal
Seja por exemplo, 101011110(2) um bin´ario que se pretende converter para octal. Como foi
visto, o inteiro que esse bin´ario representa ´e
1 × 28
+ 0 × 27
+ 1 × 26
+ 0 × 25
+ 1 × 24
+ 1 × 23
+ 1 × 22
+ 1 × 2 + 0
ou seja 350. A representa¸c˜ao octal correspondente pode ser obtida agrupando os d´ıgitos
bin´arios 3 a 3: uma vez que 8 = 23 e 82 = 26, tem-se
26
(1×22
+0×2+1×2)+23
(0×22
+1×2+1)+(1×22
+1×2+0) = 82
×5+8×3+6 = 536(2)
Em geral se ak . . . a5a4a3a2a1a0(2), sendo k ≥ 0, representa o inteiro
ak2k
+ . . . + a525
+ a424
+ a323
+ a222
+ a121
+ a020
ent˜ao a representa¸c˜ao em octal do mesmo inteiro pode ser obtida da forma descrita:
ak2k
+ . . . + 23
(a522
+ a421
+ a320
) + (a222
+ a121
+ a020
) =
ak2k
+ . . . + 8(a522
+ a421
+ a320
) + (a222
+ a121
+ a020
)
Notar que na express˜ao resultante, qualquer potˆencia de 8 tem por coeficiente
ai+222
+ ai+12 + ai
para algum i, o qual ´e sempre n˜ao negativo e inferior a 8, podendo assim ser d´ıgito da
representa¸c˜ao octal. A cada d´ıgito octal correspondem 3 d´ıgitos em bin´ario. Do mesmo
modo, a cada d´ıgito hexadecimal correspondem 4 d´ıgitos em bin´ario. Assim, para converter
um bin´ario a hexadecimal, agrupam-se os seus d´ıgitos em grupos de 4 (da direita para a
esquerda) correspondendo a cada um desses grupos um d´ıgito hexadecimal. Por exemplo,
101011110(2) ⇒ 1 | 0101 | 1110 ⇒ 1 | 5 | E ⇒ 15E(h)
Para converter um bin´ario a octal procede-se de modo idˆentico mas formando grupos de 3.
Por exemplo,
101011110(2) ⇒ 101 | 011 | 110 ⇒ 5 | 3 | 6 ⇒ 536(o)
Inversamente, se se pretender converter de hexadecimal a bin´ario basta associar a cada um
dos d´ıgitos hexadecimal o grupo de 4 d´ıgitos bin´arios correspondente. Por exemplo,
3AC3A(h) ⇒ 0011 | 1010 | 1100 | 0011 | 1010 ⇒
11 | 1010 | 1100 | 0011 | 1010 ⇒ 111010110000111010(2)
Notar a elimina¸c˜ao dos zeros n˜ao significativos. O que se acaba de ilustrar ´e um caso particular
da proposi¸c˜ao seguinte.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
20. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 12
Proposi¸c˜ao 2 Se z ´e um inteiro positivo, a cada d´ıgito (com poss´ıvel excep¸c˜ao do mais signi-
ficativo) da representa¸c˜ao de z na base bn corresponde um grupo de n d´ıgitos na representa¸c˜ao
de z na base b, qualquer que seja n inteiro positivo. Mais concretamente, se
akak−1 . . . atnatn−1 . . . a2na2n−1 . . . anan−1 . . . a1a0
com k ≥ 0 ´e a representa¸c˜ao na base b de um inteiro positivo z ent˜ao, a representa¸c˜ao do
mesmo inteiro na base bn ´e
wtwt−1 . . . w1w0
sendo t+1 o n´umero de blocos de n d´ıgitos da representa¸c˜ao de z na base b (podendo o ´ultimo
ser completado por zeros n˜ao significativos), e wi (i ≤ t) o d´ıgito da base bn que representa o
inteiro a2in−1 . . . ain+1ain(b) (representa¸c˜ao base b a menos de zeros n˜ao significativos).
Exemplo 6 Por exemplo, para converter 100313210(4) para a base 16, agrupam-se os d´ıgitos
2 a 2, da direita para a esquerda, pois 16 = 42.
100313210(4) = 01 | 00 | 31 | 32 | 10 = 10DE4(16)
Exerc´ıcio 2.1.6 Repita os exerc´ıcios 2.1.1 a 2.1.3.
Exerc´ıcio 2.1.7 Mostre a proposi¸c˜ao anterior. Comece por mostrar que wtwt−1 . . . w1w0
conforme descrito pode ser representa¸c˜ao base bn de z; use em seguida o facto da representa¸c˜ao
numa base ser ´unica para concluir que wtwt−1 . . . w1w0 ´e a representa¸c˜ao de z. Mostre depois
que se wtwt−1 . . . w1w0 representa z na base bn, a representa¸c˜ao de z na base b ´e
akak−1 . . . atnatn−1 . . . a2na2n−1 . . . anan−1 . . . a1a0
2.1.2 Adi¸c˜ao e multiplica¸c˜ao na base b
Recorde como se adicionam dois inteiros representados na base 10, calculando por exemplo
987654 + 73561.
987654
+ 73561
. . . 5
(vai 0)
987654
+ 73561
. . . 15
(vai 1)
987654
+ 73561
. . . 215
(vai 1)
987654
+ 73561
. . . 1215
(vai 1)
987654
+ 73561
. . . 61215
(vai 1)
987654
+ 73561
. . . 061215
(vai 1)
987654
+ 73561
1061215
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
21. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 13
Algoritmo para Adi¸c˜ao (base 10). Se x e y s˜ao inteiros positivos representados na
base 10 por xkxk−1 . . . x1x0 e ymym−1 . . . y1y0 respectivamente ent˜ao a representa¸c˜ao na
base 10 de x + y, digamos spsp−1 . . . s1s0, pode ser obtida da forma seguinte.
xkxk−1 . . . x1x0
+ ymym−1ym−2 . . . y1y0
. . . s0
Caso x0 + y0 < 10, toma-se s0 = x0 + y0 e repete-se o processo para os d´ıgitos seguintes.
Sen˜ao, s0 ´e tal que x0 + y0 = 1s0, adicionando-se 1 a x1 + y1 repetindo-se o processo (global)
para os d´ıgitos seguintes. Quando k < m (respectivamente m < k) pode-se considerar xi = 0,
i ≥ k (respectivamente yi = 0, i ≥ m). Notar que p = max(k, m) ou p = max(k, m) + 1
sendo neste ´ultimo caso sp = 1.
Adi¸c˜ao (base 3). 2102(3) + 21(3) = (2 × 33 + 1 × 32 + 0 × 31 + 2 × 30) + (2 × 31 + 1 × 30) =
2 × 33 + 1 × 32 + (0 + 2) × 31 + (2 + 1) × 30 = 2 × 33 + 1 × 32 + (0 + 2) × 31 + (1 × 3 + 0) × 30 =
2 × 33 + 1 × 32 + (0 + 2 + 1) × 31 + 0 × 30 = 2 × 33 + (1 + 1) × 32 + 0 × 31 + 0 × 30 =
2 × 33 + 2 × 32 + 0 × 31 + 0 × 30.
2102(3)
+ 21(3)
. . . 0(3)
(vai 1)
2102(3)
+ 21(3)
. . . 00(3)
(vai 1)
2102(3)
+ 21(3)
. . . 200(3)
(vai 0)
2102(3)
+ 21(3)
2200(3)
Exerc´ıcio 2.1.8 Justifique que se x e y s˜ao inteiros positivos representados na base b por
xkxk−1 . . . x1x0 e ymym−1 . . . y1y0 respectivamente ent˜ao spsp−1 . . . s1s0, a representa¸c˜ao na
base b de x+y, pode ser obtida por um processo an´alogo ao descrito acima, ou seja, seguindo
o algoritmo habitual. Comece por notar que quando soma xi com yi o resultado ´e sempre
menor ou igual que 2b − 2, e portanto tanto xi + yi como xi + yi + 1 se representa como
0si ou 1si (pelo que ou “vai 0” ou “vai 1”), qualquer que seja i. Depois, use a defini¸c˜ao de
representa¸c˜ao na base b, `a semelhan¸ca do que se fez acima para b = 3.
Os algoritmos usuais para adi¸c˜ao e multiplica¸c˜ao base 10 s˜ao v´alidos quando se usam
representa¸c˜oes em qualquer outra base b, embora sejam obviamente diferentes as tabuadas
dessas opera¸c˜oes se escrevermos os resultados na base b. O mesmo se pode dizer para a
subtrac¸c˜ao (quando o aditivo ´e maior do que subtractivo) e para a divis˜ao inteira.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
23. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 15
Exerc´ıcio 2.1.10 Calcule:
(i) 1110010(2) + 111001111(2) em bin´ario.
(ii) 1F5(h) + 111001111(2) em hexadecimal.
(iii) 1330(4) + 123(4) em octal.
(iv) 1F5(h) + ABCD(h) + 1FB(h) em hexadecimal.
(v) ABCD(h) − 1FB(h) em hexadecimal.
(vi) 73542(o) × 27(10) em octal.
(vii) 73542(o)/27(10) em octal.
(viii) 111000010(2) /111(2) em bin´ario.
2.1.3 Representa¸c˜ao de n´umeros com um n´umero fixo de d´ıgitos
Num computador cada inteiro ´e representado por um n´umero fixo de bits. Em 8 bits, 13 seria
representado por 00001101. Isto ´e, introduzem-se 0’s `a esquerda sempre que o n´umero de bits
da representa¸c˜ao do inteiro seja menor que o n´umero de bits que se fixou.
Se n representar o n´umero de bits que se fixou para a representa¸c˜ao, os bits s˜ao numerados
da esquerda para a direita por bitn−1, bitn−2, . . . , bit1 e bit0. O bitn−1 diz-se o bit mais
significativo e bit0 ´e o menos significativo.
Quando se fixa o n´umero de bits da representa¸c˜ao, limita-se tamb´em os valores que podem
ser representados. Se, por exemplo, o n´umero de bits for 8 ent˜ao o maior inteiro positivo que
se pode representar ´e:
1 1 1 1 1 1 1 1
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
cujo valor ´e
27
× 1 + 26
× 1 + 25
× 1 + 24
× 1 + 23
× 1 + 22
× 1 + 21
× 1 + 20
× 1 = 255 = 28
− 1
Em geral, com n bits podemos representar n´umeros inteiros positivos de 0 a 2n − 1.
Proposi¸c˜ao 3 O maior inteiro positivo que se consegue representar na base b com n d´ıgitos
´e bn − 1.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
24. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 16
Prova: Suponhamos que A ´e representado com n d´ıgitos na base b por an−1an−2 . . . a1a0
com ai ∈ {0, . . . , b − 1}. Ent˜ao,
A = an−1bn−1
+ an−2bn−2
. . . a1b1
+ a0b0
=
n−1
i=0
aibi
Ora,
n−1
i=0
aibi
≤
n−1
i=0
(b − 1)bi
= (b − 1)
n−1
i=0
bi
= (b − 1)
b0 − b × bn−1
1 − b
(soma de termos de progress˜ao geom´etrica)
= (b − 1)
1 − bn
1 − b
= bn
− 1
Observa¸c˜ao: n−1
i=0 ui ´e uma nota¸c˜ao abreviada para u0 + u1 + · · · + un−1, podendo-se ler
“somat´orio para i desde 0 at´e n − 1 de ui”.
Exerc´ıcio 2.1.11 Qual ´e o n´umero m´ınimo de bits necess´ario para representar 1125? Qual
o valor m´aximo que pode ser representado com esse n´umero de bits?
Normalmente o n´umero de bits usados s˜ao 8, 16, 32 ou 64. Com 8 bits podemos representar
inteiros entre 0 e 255, com 16 bits entre 0 e 65535, com 32 bits entre 0 a 4294967295, etc.
2.1.4 Representa¸c˜ao de n´umeros negativos
Para representar n´umeros inteiros positivos e negativos numa base b e com um n´umero fixo
de d´ıgitos ´e necess´ario codificar o sinal e encontrar um processo eficiente de determinar se
um n´umero ´e positivo ou negativo. Normalmente ´e reservado um d´ıgito para indicar o sinal.
Por exemplo, em n d´ıgitos, sendo A = an−1an−2 . . . a1a0(b), se an−1 = 0 ent˜ao A ´e positivo,
se an−1 = b − 1 o n´umero ´e negativo.
Vamos considerar trˆes formas introduzidas para representar n´umeros inteiros positivos e
negativos e que obedecem `a condi¸c˜ao de sinal apresentada. Vamos supor que a base ´e 2 e que
o n´umero de d´ıgitos ´e n, embora os resultados possam ser generalizados para qualquer base b.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
25. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 17
Representa¸c˜ao com bit de sinal. Reserva-se o bit mais `a esquerda para o sinal e os
restantes para o m´odulo do n´umero.
n bits
n−1 n−2 . . . . . . . . 0
sinal m´odulo
O bit de sinal ´e 0 para os positivos e ´e 1 para os negativos. Assim, um n´umero positivo
´e da forma A = 0an−2 . . . a1a0 e um negativo ´e da forma A = 1an−2 . . . a1a0. Com n bits
podemos representar n´umeros positivos de 0 a 2n−1 − 1 e negativos −(2n−1 − 1) a 0.
As representa¸c˜oes de dois n´umeros com o mesmo m´odulo diferem apenas no bit de sinal.
Se n = 3 temos o quadro seguinte:
Valor 0 1 2 3 −0 −1 −2 −3
Representa¸c˜ao com bit de sinal 000 001 010 011 100 101 110 111
Podemos observar que zero tem duas representa¸c˜oes: +0 e −0. Para efectuar adi¸c˜oes
de n´umeros com sinais diferentes ´e necess´ario primeiro determinar qual ´e o maior e qual o
sinal do resultado. O mesmo problema surge para a subtrac¸c˜ao, a qual pode ser tratada como
a adi¸c˜ao associando o sinal negativo ao subtraendo, x − y = x + (−y).
Representa¸c˜ao em Complemento para 1. A utiliza¸c˜ao desta representa¸c˜ao para inteiros
apresenta o mesmo problema da anterior, isto ´e, zero ter´a duas representa¸c˜oes +0 e −0. Para
uma representa¸c˜ao em n bits, chama-se complemento para 1 de A ao valor (2n − 1) − A.
O bit mais signficativo d´a indica¸c˜ao sobre o sinal do n´umero (se for 1, o n´umero ´e negativo).
O n´umero negativo −x ser´a representado por (2n − 1) − x. Por exemplo, para n = 3, temos
o quadro seguinte:
Valor +0 +1 +2 +3 −3 −2 −1 −0
Complemento para 1 000 001 010 011 100 101 110 111
Estas representa¸c˜oes podem ser obtidas por troca de 1’s por 0’s e 0’s por 1’s na repre-
senta¸c˜ao de x em n bits, o que resulta de 2n − 1 ser representado por n 1’s. Por exemplo, -14
´e representado em complemento para 1 em 8 bits por:
1 1 1 1 1 1 1 1
− 0 0 0 0 1 1 1 0
1 1 1 1 0 0 0 1
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
26. 2.1. SISTEMA DE REPRESENTAC¸ ˜AO POSICIONAL 18
Representa¸c˜ao em Complemento para 2. Neste caso, zero ter´a uma s´o representa¸c˜ao:
Exactamente metade dos n´umeros representados s˜ao n˜ao negativos e a outra metade n´umeros
negativos.
De 0 a 2n−1 −1 encontram-se os n´umeros n˜ao negativos e de 2n−1 a 2n −1 n´umeros
negativos.
Para os positivos a representa¸c˜ao coincide com a representa¸c˜ao anterior. Os n´umeros nega-
tivos s˜ao complementos para a base. Por defini¸c˜ao, o complemento para 2 de A numa
representa¸c˜ao de n bits ´e o inteiro 2n − A.
Exemplo 7 Para n = 3 ent˜ao -1 ´e representado por 111 pois 23 − 1 = 7. Se n = 8, o
inteiro -1 ´e representado por 11111111 em complemento para 2. Nnuma representa¸c˜ao em 8
bits usando complemento para 2 o inteiro −3 ´e o bin´ario correspondente a 28 − 3, ou seja
253 = 11111101.
Em resumo, temos o quadro seguinte para n = 3:
Valor 0 +1 +2 +3 −4 −3 −2 −1
Complemento para 2 000 001 010 011 100 101 110 111
Usando a defini¸c˜ao de complemento para 2, pode-se concluir que 2n−1 representa −2n−1
pois 2n − 2n−1 = 2n−1. Por outro lado, 2n − 1 representa −1.
Proposi¸c˜ao 4 No sistema de representa¸c˜ao com n bits e complemento para 2 os valores
poss´ıveis dos inteiros represent´aveis variam de −2n−1 a 2n−1 − 1. De 0 a 2n−1 − 1 tem-se
n´umeros n˜ao negativos e de 2n−1 a 2n − 1 n´umeros negativos.
Para al´em de s´o haver um zero, neste caso todos os negativos tˆem 1 como bit mais
significativo, o qual funciona assim como bit de sinal. As adi¸c˜oes podem ser efectuadas
sem analisar o sinal dos operandos e nas subtrac¸c˜oes basta calcular o complemento para 2 do
subtraendo e adicionar o valor resultante ao subtractivo, como se ver´a adiante.
Para determinar representa¸c˜ao em complemento para 2 dum n´umero ´e ´util observar
a sua rela¸c˜ao com a representa¸c˜ao em complemento para 1.
Como 2n − A = (2n − 1 − A) + 1 e 2n − 1 − A ´e a representa¸c˜ao em complemento para 1,
podemos obter a representa¸c˜ao em complemento para 2 complementando todos os d´ıgitos
de A (isto ´e trocando os uns com os zeros e os zeros com os uns) e adicionando depois uma
unidade.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
27. 2.2. ADIC¸ ˜AO E SUBTRACC¸ ˜AO EM N BITS 19
Exemplo 8 Para determinar a representa¸c˜ao de -17 em complemento para 2 em 8 bits,
toma-se 00010001, troca-se 0’s por 1’s, obtendo 11101110, e soma-se 1, resultando 11101111.
Inversamente, se se pretender determinar o valor (em decimal) do inteiro que ´e dado em
complemento para 2 por A = an−1an−2 . . . a1a0, basta considerar que a parcela an−12n−1 ´e
negativa. Por exemplo,
110(2) = 1 × (−22
) + 1 × 21
+ 0 × 20
= −4 + 2 + 0 = −2(10)
Exerc´ıcio 2.1.12 Represente em complemento para 2 e com 8 bits os n´umeros inteiros se-
guintes:
(i) 25, -25, 41, 56, 19, -31, -87;
(ii) a soma dos anteriores e verifique se o resultado de somar as representa¸c˜oes est´a correcto.
Exerc´ıcio 2.1.13 Suponha que a representa¸c˜ao em complemento para dois com 4 d´ıgitos de
um inteiro ´e 1101. Como ´e a representa¸c˜ao com:
(i) 6 d´ıgitos
(ii) 8 d´ıgitos
(iii) n d´ıgitos, com n ≥ 4.
Exerc´ıcio 2.1.14 Suponha agora que, em 4 d´ıgitos, a representa¸c˜ao em complemento para
dois ´e 0101. Como responderia `as al´ıneas anteriores? Em geral, dado um inteiro x represen-
tado em n d´ıgitos como procederia para obter a sua representa¸c˜ao com mais d´ıgitos?
2.2 Adi¸c˜ao e Subtrac¸c˜ao em n Bits
2.2.1 Adi¸c˜ao e subtrac¸c˜ao bin´aria de inteiros n˜ao negativos
• Adi¸c˜ao: Segue o algoritmo habitual de adi¸c˜ao bin´aria; se se tiver uma representa¸c˜ao de
m bits e a soma for superior a 2m − 1 (o maior inteiro positivo com m bits) diz-se que
h´a transporte (carry); Por exemplo: a soma em 8-bits dos inteiros positivos 10010000
e 11111101 ´e 10001101, o que est´a errado (tem transporte 1).
• Subtrac¸c˜ao: Segue algoritmo habitual de subtrac¸c˜ao bin´aria; se o valor da diferen¸ca for
inferior a zero, diz-se que h´a transporte (borrow); Por exemplo: a diferen¸ca em 8-bits
10010000 − 11111101 = 10010011 o que est´a errado (tem transporte 1).
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
28. 2.2. ADIC¸ ˜AO E SUBTRACC¸ ˜AO EM N BITS 20
2.2.2 Adi¸c˜ao de inteiros em complemento para 2
Se os inteiros s˜ao n˜ao negativos, a soma ´e calculada pelo algoritmo habitual. Se a repre-
senta¸c˜ao tiver m bits e a soma for superior a 2m−1 − 1 (o maior inteiro positivo com m bits
num sistema de complemento para 2) diz-se que h´a overflow, sendo indica¸c˜ao de que o valor
obtido est´a errado.
Por exemplo: a soma em 8-bits e complemento para 2 de 01111111 com 00000001 ´e
10000000 ou seja, a soma de +127 com +1 ´e −128(!). Neste caso, h´a overflow.
Se os inteiros s˜ao ambos negativos (em complemento para 2) a soma ´e calculada pelo
algoritmo habitual ”desprezando-se”o transporte. Se se usa uma representa¸c˜ao em m bits,
o ”desprezar”o transporte corresponde a subtrair ao resultado obtido 2m. Basta notar que
quando se efectua (−x) + (−y) se pretende obter o complemento para 2 de x + y, isto ´e
2m − (x + y). A rela¸c˜ao desse n´umero com os complementos para 2 de x e y ´e 2m − (x + y) =
(2m − x) + (2m − y) − 2m. Ou seja, para obter a representa¸c˜ao em complemento para 2 de
(−x) + (−y) adicionam-se as representa¸c˜oes de (−x) e (−y) e subtrai-se 2m.
Se a representa¸c˜ao tiver m bits e a soma for inferior a −2m−1 (o menor inteiro negativo
com m bits num sistema de complemento para 2) diz-se que h´a underflow, sendo indica¸c˜ao
de que o valor obtido est´a errado.
Por exemplo: a soma em 8-bits e complemento para 2 de 10000000 com 11111111 seria
01111111 ou seja, −128 + (−1) = +127 (!). Neste caso, h´a underflow.
Analogamente, a soma dum inteiro positivo com um inteiro negativo ´e o bin´ario correspon-
dente `a adi¸c˜ao das representa¸c˜oes dos operandos, ”desprezando-se”o transporte se o houver.
N˜ao haver´a overflow nem underflow.
2.2.3 Subtrac¸c˜ao de inteiros em complemento para 2
A subtrac¸c˜ao bin´aria de inteiros representados em complemento para 2 pode-se reduzir `a
adi¸c˜ao de inteiros.
Exemplos
(-x)-(-y) = (-x)+y 10010000-11111101=10010000+00000011=10010011
(-x)-y=(-x)+(-y) 10010000-00000011=10010000+11111101=10001101
y-(-x)=y+x 00000011-10010000=00000011+ 01110000=01110011
y-x=y+(-x) 00000011-00010000=00000011+11110000=11110011
Exerc´ıcio 2.2.1 Quais das seguintes somas est˜ao correctas (se truncadas a 8 bits) caso as
representa¸c˜oes indicadas sejam representa¸c˜oes em complemento para 2 e caso sejam repre-
senta¸c˜oes s´o para inteiros n˜ao negativos?
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
29. 2.3. REPRESENTAC¸ ˜AO EM V´IRGULA FIXA 21
negativos negativo e positivo positivos
10010000
+ 11111101
1 10001101
00010000
+ 11111111
1 00001111
00010000
+ 00111101
0 01001101
positivos negativos
01111010
+ 01110001
0 11101011 < 0
10000110
+ 10001111
1 00010101 > 0
overflow underflow
2.3 Representa¸c˜ao em V´ırgula Fixa
A representa¸c˜ao posicional de inteiros pode ser generalizada para representar n´umeros racio-
nais considerando-se potˆencias negativas da base. Por exemplo, na base 10:
344.45 = 3 × 102
+ 4 × 101
+ 4 × 100
+ 4 × 10−1
+ 5 × 10−2
Podemos ainda escrever:
344.45 = 34445. × 10−2
= (3 × 104
+ 4 × 103
+ 4 × 102
+ 4 × 101
+ 5 × 100
) × 10−2
Se se fixar a posi¸c˜ao da v´ırgula (neste caso o factor ´e 10−2), o n´umero pode ser tratado
como um inteiro. Assim as opera¸c˜oes com n´umeros racionais podem ser feitas internamente
como opera¸c˜oes com inteiros, desde que os factores de ajuste sejam guardados para que o
resultado final seja correctamente calculado.
Note-se em particular que as representa¸c˜oes de inteiros em computadores estudadas anteri-
ormente s˜ao representa¸c˜oes em v´ırgula fixa, com a v´ırgula `a direita do bit menos significativo.
No caso geral, os ajustes da posi¸c˜ao da v´ırgula e o seu armazenamento ficar˜ao a cargo do
programador.
Contudo, actualmente, a representa¸c˜ao em computadores dos n´umeros racionais ´e feita,
geralmente, em v´ırgula flutuante.
2.4 Representa¸c˜ao em V´ırgula Flutuante
A representa¸c˜ao dum n´umero racional em v´ırgula flutuante, contrariamente `a representa¸c˜ao
em v´ırgula fixa, ´e feita atrav´es de um par de inteiros que representam respectivamente a
mantissa m e o expoente e de forma que para uma determinada base b, o seu valor ´e:
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
30. 2.4. REPRESENTAC¸ ˜AO EM V´IRGULA FLUTUANTE 22
F = m × be
Por exemplo, 673 × 1014.
A designa¸c˜ao v´ırgula flutuante resulta do facto de que a posi¸c˜ao da v´ırgula depender do
expoente e portanto n˜ao ser fixada previamente.
A nota¸c˜ao mais usada para v´ırgula flutuante ´e a do IEEE (Institute of Electrical and
Electronics Engineers). A base ´e a bin´aria. Em precis˜ao simples cada n´umero ´e representado
com 32 bits:
S E (8 bits) M (23 bits)
O sinal da mantissa ´e representado pelo bit S, que por quest˜oes de eficiˆencia ´e separado
da representa¸c˜ao do m´odulo da mantissa o qual ´e constitu´ıdo pelos 23 bits mais `a direita. O
valor do m´odulo da mantissa ´e normalmente dado por 1.M(2), isto ´e, 1 mais o valor de M
considerado como n´umero racional bin´ario, com a v´ırgula `a esquerda do bit mais significativo.
Os oito bits restantes s˜ao interpretados como um inteiro positivo E e representam o expoente
cujo valor ´e E − 127. O valor representado ´e
F = (−1)S
(2E−127
)(1.M)(2)
excepto se E for 0000000 ent˜ao F = (−1)S(2−127)(.M(2)) e se M tamb´em ´e zero ent˜ao F = 0.
A sequˆencia 1 10000111 10100000000000000000000 representaria um n´umero negativo,
dado que S = 1. Como 10000111(2) = 135(10), o expoente ´e 135 − 127 = 8; e o m´odulo da
mantissa ´e
1 + 0.101(2) = 1 + 1 × 2−1
+ 1 × 2−3
= 1 + (5/8) = 1 + 0.625 = 1.625
O valor representado ´e −28 × 1.625 = −416.
Existem outras representa¸c˜oes em v´ırgula flutuante IEEE, como a precis˜ao dupla em que
s˜ao usados 64 bits e a qu´adrupla em que s˜ao usados 128 bits.
Exerc´ıcio 2.4.1 Determine qual o maior n´umero que ´e represent´avel em precis˜ao simples,
segunda a norma do IEEE.
Exerc´ıcio 2.4.2 Indique o valor das seguintes representa¸c˜oes em precis˜ao simples segunda a
norma do IEEE:
(i) 0 01110101 01010100000000000000000000
(ii) 1 00101010 11100000000000000000000000
Exerc´ıcio 2.4.3 Exprima o mais exactamente poss´ıvel os seguintes n´umeros em precis˜ao
simples IEEE: 2.5, .0005, 2−40 e 256
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
31. Cap´ıtulo 3
Algumas No¸c˜oes de Divisibilidade
Por defini¸c˜ao, um inteiro a ´e divis´ıvel por um inteiro b se e s´o se a = bq para algum inteiro q.
Nesse caso, escreve-se b | a, lendo-se b divide a. Tamb´em se diz que b ´e divisor de a e
que a ´e m´ultiplo de b. O inteiro q ´e o quociente da divis˜ao inteira de a por b. Atendendo
`a defini¸c˜ao de divisor, se a = bq ent˜ao tanto b como q s˜ao divisores de a. Por exemplo, os
divisores positivos de 30 s˜ao 1, 2, 3, 5, 6, 10, 15 e 30, encontrando-se emparelhados.
1 30
2 153 10
5 6
Na procura de divisores de a, para a positivo, n˜ao ´e necess´ario ultrapassar
√
a, pois qualquer
divisor que seja superior a
√
a ter´a que emparelhar com algum divisor que ´e inferior a
√
a.
3.1 Bases de Numera¸c˜ao e Crit´erios de Divisibilidade
´E conhecido que, um inteiro positivo representado na base 10 ´e divis´ıvel por 100 se e s´o se a
sua representa¸c˜ao terminar por 00 (pois os restos da divis˜ao por 10 e 102 s˜ao 0). ´E divis´ıvel
por 1000 sse tal representa¸c˜ao terminar em 000. De modo an´alogo se pode concluir que um
inteiro (positivo) representado na base 2 ´e divis´ıvel por 4 (isto ´e, por 22) se a sua representa¸c˜ao
em bin´ario terminar por 00 e ´e divis´ıvel por 8 (isto ´e, por 23) sse terminar em 000.
Proposi¸c˜ao 5 Um inteiro (positivo) x representado numa certa base b ´e divis´ıvel por bk,
sendo k inteiro positivo fixo, se e s´o a representa¸c˜ao de x na base b terminar por k zeros.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
32. 3.1. BASES DE NUMERAC¸ ˜AO E CRIT´ERIOS DE DIVISIBILIDADE 24
Ideia da prova: Para que x seja divis´ıvel por bk ent˜ao ter´a que ser divis´ıvel tamb´em por
b1, b2, . . . , bk−1, o que quer dizer que se efectuar k divis˜oes sucessivas por b ter´a k restos 0.
Ou seja, x = b(x/b) + 0. Depois, k > 1, tamb´em (x/b) = b((x/b)/b) + 0, . . .
Analisando a defini¸c˜ao de representa¸c˜ao base 10, podemos justificar o seguinte crit´erio de
divisibilidade por 9.
Proposi¸c˜ao 6 Um inteiro ´e divis´ıvel por 9 sse a soma dos d´ıgitos da sua representa¸c˜ao na
base 10 for divis´ıvel por 9.
Prova: Seja x um inteiro (positivo) qualquer e suponhamos que a sua representa¸c˜ao
base 10 ´e anan−1 . . . a1a0. Isto quer dizer que,
x = an × 10n
+ an−1 × 10n−1
+ · · · + a1 × 10 + a0
Como
10 = 9 + 1 um m´ultiplo de 9 mais uma unidade
100 = 99 + 1 um m´ultiplo de 9 mais uma unidade
1000 = 999 + 1 um m´ultiplo de 9 mais uma unidade
...
10n = 99 . . . 9
9 repetido n vezes
+1 um m´ultiplo de 9 mais uma unidade
ent˜ao x = (˙9 + 1) × an + (˙9 + 1) × an−1 + · · · + (˙9 + 1) × a1 + a0, ou seja
x = ˙9 + (an + an−1 + · · · + a1 + a0)
em que ˙9 ´e abreviatura de “um m´ultiplo de 9” (nesta igualdade, cada ocorrˆencia de ˙9 designa
um m´ultiplo diferente). Na “simplifica¸c˜ao” da igualdade, us´amos tamb´em o facto da soma
de m´ultiplos de 9 ser um m´ultiplo de 9 e do produto dum n´umero qualquer por um m´ultiplo
de 9 ser um m´ultiplo de 9. Observando que x = ˙9 + (an + an−1 + · · · + a1 + a0), concluimos
que x ´e m´ultiplo de ˙9 se e s´o se an + an−1 + · · · + a1 + a0 for m´ultiplo de ˙9.
O exerc´ıcio seguinte pode ser resolvido por aplica¸c˜ao dum racioc´ınio an´alogo, agora obser-
vando que 10 = ˙11−1, 100 = ˙11+1, 1000 = ˙11−1, 1000 = 1000×10 = ( ˙11−1)( ˙11−1) = ˙11+1,
10000 = ( ˙11 + 1) × 10 = ˙11 − 1, . . .
Exerc´ıcio 3.1.1 Mostre que um inteiro ´e divis´ıvel por 11 sse a soma dos d´ıgitos de ordem
par da sua representa¸c˜ao na base 10 for igual `a soma dos d´ıgitos de ordem ´ımpar.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
33. 3.2. NOC¸ ˜AO DE DIVISOR E DE M ´ULTIPLO 25
Exerc´ıcio 3.1.2 Mostre que um inteiro
(i) ´e divis´ıvel por 5 sse a sua representa¸c˜ao decimal terminar em 0 ou 5;
(ii) ´e divis´ıvel por 3 sse a soma dos d´ıgitos da sua representa¸c˜ao decimal for divis´ıvel por 3.
(iii) ´e divis´ıvel por 2 sse o d´ıgito menos significativo da sua representa¸c˜ao decimal for par.
3.2 No¸c˜ao de Divisor e de M´ultiplo
O conjunto1 dos divisores dum inteiro a ´e constitu´ıdo por todos os inteiros positivos tais que
se b | a e os seus sim´etricos.
{divisores de a} = {b : b ∈ Z e b divide a}
Frequentemente, o termo divisor ´e usado para referir divisor positivo.
O conjunto dos m´ultiplos de b ´e constitu´ıdo pelos inteiros da forma bz para z inteiro, ou
seja
{m´ultiplos de b} = {bz : z ∈ Z}.
Para mostrar formalmente o resultado seguinte basta usar a defini¸c˜ao de m´ultiplo e de
divisor que acab´amos de apresentar. Este resultado foi utilizado na sec¸c˜ao anterior, devendo
ser bem conhecido.
Proposi¸c˜ao 7 A soma, a diferen¸ca e o produto de dois m´ultiplos de b ´e um m´ultiplo de b.
O produto dum m´ultiplo de b por qualquer inteiro ´e um m´ultiplo de b.
Prova: Sejam m1 e m2 m´ultiplos de b. Ent˜ao existem inteiros z1 e z2 tais que m1 = bz1
e m2 = bz2. Logo, m1 + m2 = bz1 + bz2 = b(z1 + z2) e como a soma de inteiros ´e um inteiro,
conclui-se que z1 +z2 ∈ Z, pelo que m1 +m2 ´e da forma bz, para algum z ∈ Z (concretamente,
para z = z1 + z2). Portanto, a soma de m´ultiplos de b ´e m´ultiplo de b.
Para mostrar que a diferen¸ca de dois m´ultiplos de b (isto ´e, m1 − m2) ´e m´ultiplo de b
procede-se analogamente.
Para mostrar que m1m2 ´e m´ultiplo de b, isto ´e, que o produto de dois m´ultiplos de b ´e
m´ultiplo de b, observe-se que m1m2 = (bz1)(bz2) = b(bz1z2) e como bz1z2 ∈ Z, conclui-se que
m1m2 ´e produto de b por um inteiro, ou seja, ´e m´ultiplo de b.
Do mesmo modo, para concluir que o produto dum m´ultiplo de b (por exemplo, m1) por
um qualquer inteiro x ´e m´ultiplo de b, basta notar que m1x = (bz1)x = b(z1x) e z1x ∈ Z.
1 ´E usual representar “o conjunto dos x’s tais que x satisfaz condi¸c˜ao. . . ” por {x | x satisfaz condi¸c˜ao . . . }.
Neste cap´ıtulo, usaremos a nota¸c˜ao alternativa {x : x satisfaz condi¸c˜ao . . . }, para evitar usar | com duplo
significado, reservando | para “divide”.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
34. 3.3. FACTORIZAC¸ ˜AO EM PRIMOS 26
Exerc´ıcio 3.2.1 Mostrar que quaisquer que sejam x, y e z inteiros, se x dividir y e dividir
y + z ent˜ao tamb´em divide z.
3.3 Factoriza¸c˜ao em Primos
Um n´umero p ´e primo se e s´o se tem exactamente quatro divisores (inteiros), nomeadamente,
p, −p, 1 e −1. Assim, um n´umero ´e primo se e s´o se tem exactamente dois divisores positivos.
Proposi¸c˜ao 8 Qualquer inteiro maior do que 1 ´e ou primo ou produto de primos.
Prova: Pela defini¸c˜ao de primo, tem-se 2 ´e primo.
Seja x ∈ N tal que x > 2. Suponhamos que j´a mostr´amos que todo y ∈ N tal que 2 ≤ y < x
´e ou primo ou produto de primos. Vamos mostrar que ent˜ao tamb´em podemos concluir que
x ´e primo ou produto de primos. De facto, se x n˜ao for primo, existem x1, x2 ∈ N {0, 1}
tais que x = x1x2. Como 2 ≤ x1 < x e 2 ≤ x2 < x, sabemos j´a que x1 ´e primo ou produto de
primos e x2 ´e primo ou produto de primos.
Analisando os quatro casos (a) x1 e x2 primos, (b) x1 e x2 produtos de primos, (c) x1
primo e x2 produto de primos, e (d) x1 produto de primos e x2 primo, concluimos que se
x = x1x2 ent˜ao x pode escrever-se como produto de primos. Logo, se x n˜ao ´e primo ent˜ao x
´e um produto de primos, ou seja, x ´e primo ou produto de primos.
A t´ecnica utilizada na prova anterior designa-se por indu¸c˜ao matem´atica. Como
hip´otese de indu¸c˜ao supusemos que j´a se tinha mostrado que todo y ∈ N tal que 2 ≤ y < x ou
´e primo ou ´e produto de primos. Como x est´a fixo (e ´e finito), essa prova pode ser realmente
reconstru´ıda. Por exemplo, se x fosse 24, estariamos a assumir que j´a tinhamos verificado que
2, 3, 5, 7, 11, 13, 17, 19 e 23 s˜ao primos e que 4 = 2 × 2, 6 = 2 × 3, 8 = 2 × 2 × 2, 9 = 3 × 3,
10 = 2 × 5, 12 = 2 × 2 × 3, 14 = 2 × 7, 15 = 3 × 5, 16 = 2 × 2 × 2 × 2, 18 = 2 × 3 × 3,
20 = 2 × 2 × 5, 21 = 3 × 7 e 22 = 2 × 11. Como 24 n˜ao ´e primo porque, por exemplo,
24 = 4 × 6, ent˜ao podemos concluir que ´e produto de primos, por substitui¸c˜ao de 4 e 6 (que
correspondem a x1 e x2) pelas suas factoriza¸c˜oes em primos: 24 = (2 × 2) × (2 × 3).
Usualmente, escreve-se 24 = 23 × 3, sendo esta a factoriza¸c˜ao de 24 primos. Em geral,
para qualquer n´umero natural n n˜ao inferior a 2, existem primos p1, . . . pk ´unicos e tal que n
se pode factorizar de forma ´unica como pα1
1 × · · · × pαk
k sendo αi = 0 e pi < pj se i < j, para
todo i ≤ k e todo j ≤ k. Por exemplo, 37268 = 22 × 71 × 113 e 500 = 22 × 53.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
35. 3.3. FACTORIZAC¸ ˜AO EM PRIMOS 27
Corol´ario 8.1 Seja x um inteiro tal que x ≥ 2 e x n˜ao ´e primo. A factoriza¸c˜ao de x em
primos ´e ´unica, a menos de reordena¸c˜ao dos factores.
Ideia da prova: An´aloga `a anterior, supondo como hip´otese j´a se provou que todo
y ∈ N tal que 2 ≤ y < x ou ´e primo ou se escreve de forma ´unica como produto de primos (a
menos de reordena¸c˜ao de factores).
Corol´ario 8.2 Qualquer inteiro maior do que 1 que n˜ao ´e primo ´e divis´ıvel por algum primo.
Prova: Seja x um inteiro qualquer maior do que 1. Se x n˜ao ´e primo ent˜ao x ´e produto
de primos. Consequentemente, algum primo ´e seu divisor.
Proposi¸c˜ao 9 O conjunto dos inteiros n˜ao negativos que s˜ao primos ´e infinito.
Prova: Suponhamos que s´o existiam n primos, sendo n um certo inteiro fixo. Ou seja,
suponhamos que o conjunto dos primos era finito e que tinha exactamente n elementos, os
quais vamos denotar por p1, p2, . . . , pn. Ent˜ao, o inteiro positivo
1 +
n
i=1
pi
n˜ao seria primo, j´a que ´e maior do que qualquer um dos primos p1, p2, . . . , pn.
Mas se 1 + p1p2 . . . pn n˜ao ´e primo, ent˜ao algum dos primos o divide (ou seja, ´e m´ultiplo
de algum dos primos). Suponhamos que pk divide 1 + p1p2 · · · pn, sendo k um inteiro fixo,
1 ≤ k ≤ n. Como pk divide n
i=1 pi isto ´e, pk divide o produto 1+p1p2 · · · pn, pode-se concluir
que se pk dividir 1 + p1p2 · · · pn ent˜ao pk divide 1. Mas nenhum primo divide 1. O absurdo
resultou de se ter suposto que o conjunto dos primos era finito. Logo, o conjunto dos primos
´e infinito.
3.3.1 Determina¸c˜ao de primos: crivo de Erast´otenes
Descreve-se a seguir um algoritmo para determina¸c˜ao de todos os primos n˜ao superiores a
um n´umero n dado. Tal algoritmo ´e conhecido como m´etodo do crivo. Parte-se duma tabela
contendo todos os n´umeros n˜ao superiores n. O algoritmo resume-se a seleccionar o menor
inteiro na tabela (ainda n˜ao seleccionado) e apagar todos os seus m´ultiplos at´e todos os valores
estarem ou seleccionados ou apagados.
2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
2 3 5 7 9
11 13 15 17 19
21 23 25 27 29
31 33 35 37 39
41 43 45 47 49
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
36. 3.4. M´AXIMO DIVISOR COMUM 28
2 3 5 7 9
11 13 15 17 19
21 23 25 27 29
31 33 35 37 39
41 43 45 47 49
2 3 5 7
11 13 17 19
23 25 29
31 35 37
41 43 47 49
2 3 5 7
11 13 17 19
23 29
31 37
41 43 47 49
2 3 5 7
11 13 17 19
23 29
31 37
41 43 47
O processo continua . . . Os valores que ficarem na tabela s˜ao os primos, neste caso, n˜ao
superiores a 50 (o valor de n neste exemplo).
3.3.2 C´alculo de divisores por an´alise da factoriza¸c˜ao em primos
A partir da factoriza¸c˜ao dum n´umero em primos ´e poss´ıvel determinar todos os seus divisores.
Por exemplo, os divisores de 30, que ´e dado por
30 = 21
× 31
× 51
s˜ao:
20 × 30 × 50 = 1 21 × 30 × 50 = 2 20 × 31 × 50 = 3
20 × 30 × 51 = 5 21 × 31 × 50 = 6 21 × 30 × 51 = 10
20 × 31 × 51 = 15 21 × 31 × 51 = 30
Em geral, se pα1
1 · · · pαk
k for a decomposi¸c˜ao de x em primos ent˜ao o conjunto dos divisores
positivos de x ´e
{pβ1
1 · · · pβk
k : 0 ≤ βi ≤ αi para i = 1, . . . , k}
concluindo-se que o n´umero de divisores de pα1
1 · · · pαk
k ´e k
i=1(αi + 1).
3.4 M´aximo Divisor Comum
Sabemos que 1 ´e divisor de qualquer inteiro e que o maior divisor de qualquer inteiro positivo x
´e o pr´oprio x. Dados inteiros positivos a e b, podemos falar do seu m´aximo divisor comum,
o qual representamos por mdc(a, b). O m´aximo divisor comum ´e o maior dos divisores comuns:
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
37. 3.4. M´AXIMO DIVISOR COMUM 29
d ´e mdc(a, b) sse d | a, d | b e d | d qualquer que seja d tal que d | a e d | b. Por defini¸c˜ao de
mdc(a, b), cada divisor comum de a e b ´e divisor de mdc(a, b).
Por exemplo, por an´alise da decomposi¸c˜ao de 30 e 500 em primos, 30 = 2 × 3 × 5 e
500 = 22 × 53, podemos concluir que mdc(30, 500) = 10.
Dois inteiros a e b chamam-se primos entre si se e s´o se mdc(a, b) = 1.
Proposi¸c˜ao 10 Os inteiros a/mdc(a, b) e b/mdc(a, b) s˜ao primos entre si.
Prova: Queremos mostrar que mdc( a
mdc(a,b) , b
mdc(a,b) ) = 1. Para isso vamos provar que
se mdc( a
mdc(a,b) , b
mdc(a,b) ) = d ent˜ao mdc(a, b)d tamb´em divide a e b. Podemos depois concluir
que necessariamente d = 1 pois se d fosse maior do que 1 ent˜ao mdc(a, b)d > mdc(a, b),
mdc(a, b)d seria um divisor comum a a e b, maior do que o m´aximo divisor comum, o que,
por defini¸c˜ao de mdc(a, b) ´e imposs´ıvel. Para completar os detalhes da prova, resta mostrar
que mdc(a, b)d ´e divisor de a e de b se d | a
mdc(a,b) e d | b
mdc(a,b) . De facto, basta notar que:
a = mdc(a, b)
a
mdc(a, b)
= mdc(a, b)d
a
mdc(a, b)d
e
b = mdc(a, b)
b
mdc(a, b)
= mdc(a, b)d
b
mdc(a, b)d
.
Tem-se mdc(320 ×57 ×1127 ×312, 24 ×36 ×525) = 36 ×57, porque o m´aximo divisor comum
´e dado por
2min(0,4)
× 3min(20,6)
× 5min(7,25)
× 11min(27,0)
× 31min(2,0)
ou seja, por 203657110310. Este m´etodo pode ser sempre aplicado se forem conhecidas as
factoriza¸c˜oes dos n´umeros a e b. Quando n˜ao se conhecem, o algoritmo de Euclides
permite calcular mdc(a, b) eficientemente.
3.4.1 C´alculo do m´aximo divisor comum pelo algoritmo de Euclides
A correc¸c˜ao do algoritmo de Euclides para c´alculo do mdc(a, b) decorre do seguinte resultado.
Lema 1 Sejam a e b inteiros positivos tais que a < b e seja r o resto da divis˜ao de a por b.
Ent˜ao, mdc(a, b) = mdc(b, r).
Prova: Represente-se por d o m´aximo divisor comum de a e b. Por defini¸c˜ao de divis˜ao
inteira, r ´e o resto da divis˜ao de a por b sse 0 ≤ r < b e a = bq + r para algum q ∈ Z. Por
outro lado, por defini¸c˜ao de m´aximo divisor comum, d|a e d|b. Portanto, d|(a − bq). Ou seja,
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
38. 3.4. M´AXIMO DIVISOR COMUM 30
d|r. Logo, d ´e um divisor comum de b e r. Seja d um outro divisor comum de b e de r.
Resta-nos mostrar que d ter´a que dividir d para poder concluir que d ´e mdc(b, r). Para isso,
basta notar que se d |b e d |r ent˜ao d |(bq + r) e portanto d |a. Logo, d ´e um divisor comum
a a e b, e portanto d |mdc(a, b), isto ´e, d |d.
Algoritmo de Euclides para determina¸c˜ao de mdc(a, b). Sendo a e b inteiros positivos,
podemos definir mdc(a, b) recursivamente por
mdc(a, 0) = a se a > 0
mdc(a, b) = mdc(b, a%b) se a > b > 0
mdc(a, b) = mdc(b, a) se a < b
em que a%b denota o resto da divis˜ao de a por b.
Por exemplo, mdc(30, 500) = mdc(500, 30) = mdc(30, 500%30) = mdc(30, 20) = mdc(20, 10) =
mdc(10, 0) = 10.
500 30
20 16
30 20
10 1
20 10
0 2
Observe-se que mdc(500, 30) = 17 × 30 − 1 × 500 j´a que
10 = 30 − 1 × 20 = 30 − (500 − 16 × 30) = 17 × 30 − 1 × 500
ou seja, mdc(500, 30) pode-se escrever na forma 500x + 30y para x, y ∈ Z apropriados.
Lema 2 Quaisquer que sejam a, b ∈ Z+, existem inteiros x e y tais que ax + by = mdc(a, b),
ou seja, mdc(a, b) ´e combina¸c˜ao linear inteira de a e b.
Para escrever mdc(100, 17) (isto ´e, 1) como combina¸c˜ao de 100 e 17, observe-se que:
100 17
15 5
17 15
2 1
15 2
1 7
2 1
0 2
Efectuando an´alise para tr´as, substituindo sucessivamente os restos de forma a conseguir
fazer aparecer 100 e 17 (a e b iniciais) obtem-se a combina¸c˜ao procurada: 1 = 15 − 7 × 2 =
15 − 7(17 − 1 × 15) = 8 × 15 − 7 × 17 = 8(100 − 5 × 17) − 7 × 17 = 8 × 100 − 47 × 17.
Proposi¸c˜ao 11 Sendo a, b e c constantes inteiras, a equa¸c˜ao ax + by = c com x, y ∈ Z, tem
solu¸c˜ao se e s´o se mdc(a, b) | c.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
39. 3.5. M´INIMO M ´ULTIPLO COMUM 31
Prova: Como mdc(a, b) divide a e divide b, tamb´em divide ax + by quaisquer que sejam
x, y ∈ Z. Portanto, para que ax + by = c tenha solu¸c˜ao ´e necess´ario que mdc(a, b) divida c.
Por outro lado, usando o facto de mdc(a, b) se poder escrever como combina¸c˜ao inteira
de a e de b, temos mdc(a, b) = ama + bmb para ma e mb inteiros adequados. Se mdc(a, b) | c,
ent˜ao c = mdc(a, b) c
mdc(a,b) e c
mdc(a,b) ∈ Z. Multiplicando mdc(a, b) = ama + bmb por c
mdc(a,b)
obtem-se mdc(a, b) c
mdc(a,b) = a(ma
c
mdc(a,b) ) + b(mb
c
mdc(a,b) ). Assim, vemos que se tomarmos
x = ma
c
mdc(a,b) e y = mb
c
mdc(a,b) temos uma solu¸c˜ao inteira de ax + by = c.
Pode-se provar que (x, y) ∈ Z2 ´e solu¸c˜ao de ax + by = c sse x = ma
c
mdc(a,b) + k b
mdc(a,b) e
y = mb
c
mdc(a,b) − k b
mdc(a,b) , com k ∈ Z qualquer.
3.5 M´ınimo M´ultiplo Comum
Dados inteiros positivos a e b sabemos que ab ´e um m´ultiplo de a e de b, fazendo sentido
determinar o menor inteiro positivo que ´e m´ultiplo comum a a e b, ou seja o m´ınimo m´ultiplo
comum, mmc(a, b). Por defini¸c˜ao m ´e mmc(a, b) sse a | m, b | m e m | m para todo m tal
que a | m e b | m . Assim, mmc(a, b) ´e um divisor de todos os m´ultiplos comuns de a e b.
Exemplo 9 mmc(320571127312, 2436525) = 2max(0,4)3max(20,6)5max(7,25)11max(27,0)31max(2,0) =
243205251127312.
Como
a
mdc(a, b)
e
b
mdc(a, b)
s˜ao primos entre si, podemos mostrar a Proposi¸c˜ao 12.
Proposi¸c˜ao 12 Quaisquer que sejam a, b ∈ Z+, mmc(a, b) =
ab
mdc(a, b)
.
Prova:
ab = mdc(a, b)
a
mdc(a, b)
mdc(a, b)
b
mdc(a, b)
= mdc(a, b)
a
mdc(a, b)
b
mdc(a, b)
mmc(a,b)
mdc(a, b)
Para ver que mdc(a, b) a
mdc(a,b)
b
mdc(a,b) ´e mmc(a, b), notemos que ´e m´ultiplo de a e de b. Por
outro lado, para verificar que divide qualquer outro m´ultiplo m de a e de b, escrevamos
m = k1a e m = k2b para inteiros k1 e k2 apropriados. Ent˜ao, m = k1mdc(a, b) a
mdc(a,b) e m =
k2mdc(a, b) b
mdc(a,b) , pelo que k1
a
mdc(a,b) = k2
b
mdc(a,b) . Como b
mdc(a,b) e a
mdc(a,b) s˜ao primos entre
si, b
mdc(a,b) tem que dividir k1. Assim, k1 = b
mdc(a,b) k1 para algum k1 e consequentemente, m =
b
mdc(a,b) k1mdc(a, b) a
mdc(a,b) e portanto m ´e m´ultiplo de mdc(a, b) b
mdc(a,b)
a
mdc(a,b) . Conclui-se
que mdc(a, b) b
mdc(a,b)
a
mdc(a,b) ´e mmc(a, b).
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
40. 3.6. CONGRUˆENCIAS 32
3.6 Congruˆencias
Dados b ∈ Z+ e x, y ∈ Z dizemos que x e y s˜ao congruentes m´odulo b se e s´o se x − y for
m´ultiplo de b, escrevendo x ≡ y (mod b). Tal ´e equivalente a dizer que x e y d˜ao o mesmo
resto quando divididos por b. De facto, se x = qxb + rx e y = qyb + ry com 0 ≤ rx < b e
0 ≤ ry < b, ent˜ao x − y = (qx − qy)b + (rx − ry) e portanto x − y ´e m´ultiplo de b se e s´o se
rx − ry o for. Mas, como 0 ≤ rx < b e 0 ≤ ry < b, podemos concluir que −b < rx − ry < b, e
consequentemente rx − ry ´e m´ultiplo de b se e s´o se for zero. Portanto, x ≡ y (mod b) sse os
restos da divis˜ao de x e y por b s˜ao iguais. (Escrevemos qx, qy e rx, ry em vez de q1, q2 e r1, r2
para indicar que esses quocientes e restos dependem de x e y respectivamente.)
As rela¸c˜oes de congruˆencias tˆem algumas propriedades interessantes (e importantes). Por
exemplo, a “congruˆencia m´odulo 2” decomp˜oe os inteiros em dois conjuntos:
{x : x ∈ Z, x ≡ 0 (mod 2)} = {2k : k ∈ Z} = {pares}
{x : x ∈ Z, x ≡ 1 (mod 2)} = {1 + 2k : k ∈ Z} = {´ımpares}
A rela¸c˜ao de “congruˆencia m´odulo b” (para b ∈ Z+) decomp˜oe os inteiros em b conjuntos
{x : x ∈ Z, x ≡ 0 (mod b)} e {x : x ∈ Z, x ≡ 1 (mod b)}, . . . , {x : x ∈ Z, x ≡ b − 1 (mod b)},
sendo cada um identificado por um dos b restos poss´ıveis.
Outra das propriedades interessantes da rela¸c˜ao de congruˆencia ´e ser preservada pelas
opera¸c˜oes de soma, subtrac¸c˜ao e produto, ou seja, se x1 ≡ y1 (mod b) e x2 ≡ y2 (mod b) ent˜ao
x1 ± x2 ≡ y1 ± y2 (mod b) e x1 × x2 ≡ y1 × y2 (mod b).
O exemplo seguinte ilustra uma das aplica¸c˜oes de congruˆencias.
Exemplo 10 Suponha que se quer resolver 5x + 3y = 1 para x, y ∈ Z. Como 5x + 3y = 1 ⇔
5x − 1 = 3(−y) podemos come¸car por resolver 5x ≡ 1 (mod 3). Tem-se 5x ≡ 1 (mod 3) ⇔
2x ≡ 1 (mod 3). Por outro lado, 2x ≡ 1 (mod 3) ⇔ (−1)x ≡ 1 (mod 3), ou seja x ≡ (−1) (mod 3),
isto ´e x ≡ 2 (mod 3). Assim, 5x ≡ 1 (mod 3) se e s´o se x = 2 + 3k para algum k ∈ Z.
Voltando `a equa¸c˜ao inicial, temos 5x + 3y = 1 ⇔ 5(2 + 3k) + 3y = 1 ⇔ y = −3 − 5k
concluindo-se que as solu¸c˜oes de 5x + 3y = 1 s˜ao os pontos (x, y) da forma x = 2 + 3k e
y = −3 − 5k, com k ∈ Z.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
41. Cap´ıtulo 4
Indu¸c˜ao Matem´atica
O m´etodo de demonstra¸c˜ao por indu¸c˜ao matem´atica (ou indu¸c˜ao finita) ser´a bastante usado
durante o curso pelo que ´e conveniente introduzi-lo (ou record´a-lo).
4.1 Princ´ıpio de Indu¸c˜ao Matem´atica
Imagine uma escada com uma infinidade de degraus. N˜ao ´e uma escada com um n´umero
enorme de degraus! Esta escada, tem sempre um degrau acima de qualquer outro que consi-
dere. Suponha que ´e verdade (4.1).
“Se conseguir chegar at´e um degrau, ent˜ao tamb´em consigo chegar ao seguinte.” (4.1)
Se nada mais for dito, n˜ao pode concluir que “consegue chegar ao 16o
¯ degrau”.
Suponha agora n˜ao s´o (4.1) mas tamb´em (4.2).
“Consigo chegar ao 13o
¯ degrau” (4.2)
O que pode concluir? Como consegue chegar ao 13o
¯ e ´e verdade (4.1), ent˜ao consegue chegar
ao 14o
¯. Como consegue chegar ao 14o
¯ e ´e verdade (4.1), ent˜ao consegue chegar ao 15o
¯. Como
consegue chegar ao 15o
¯ e ´e verdade (4.1), ent˜ao consegue chegar ao 16o
¯. De (4.1) e (4.2),
conclui-se (4.3).
“Consegue chegar ao n-´esimo degrau, qualquer que seja n ≥ 13.” (4.3)
Como n˜ao ´e dito sobre de que forma chegou ao 13o
¯ degrau, nada pode concluir sobre a
possibilidade de chegar ao degrau n, para n < 13.
Mas, suponha agora que (4.4) ´e verdade.
“Consigo chegar ao 1o
¯ degrau”. (4.4)
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
42. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 34
Do mesmo modo que anteriormente, se supuser (4.1) e (4.4) ent˜ao pode concluir (4.5).
“Consegue chegar ao n-´esimo degrau, qualquer que seja n ≥ 1.” (4.5)
Proposi¸c˜ao 13 (Princ´ıpio de Indu¸c˜ao Matem´atica) Escrevamos P(n) como abreviatura
de “o inteiro n˜ao negativo n satisfaz a propriedade/condi¸c˜ao P ”. Tem-se ∀n ∈ N P(n), se
forem satisfeitas as duas condi¸c˜oes (i) e (ii) seguintes.
(i) P(0) ´e verdade;
(ii) ∀k ∈ N ( P(k) ⇒ P(k + 1) ), isto ´e para todo k ∈ N, se P(k) ent˜ao P(k + 1);
P(0) diz-se (caso de) base de indu¸c˜ao. Em P(k) ⇒ P(k+1), chamamos a P(k) a hip´otese
de indu¸c˜ao e a P(k + 1) a tese.
Exemplo 11 Seja An a ´area dum quadrado de lado 2n, com n ≥ 1 (inteiro). Vamos mostrar
que o resto da divis˜ao de An por 3 ´e 1, qualquer que seja n ≥ 1.
(i) (Caso de base) Como A1 ´e 4 e sabemos que o resto da divis˜ao de 4 por 3 ´e 1, ´e verdade
que a condi¸c˜ao se verifica para n = 1.
(ii) (Hereditariedade) Mostremos que qualquer que seja k ≥ 1, se Ak for da forma 3p+1 para
algum inteiro n˜ao negativo p, ent˜ao Ak+1 = 3q + 1 para algum inteiro n˜ao negativo q.
Ora, se Ak = 3p+1, ent˜ao Ak+1 = (2k+1)2 = 4(2k)2 = 4Ak = 4(3p+1) = 3(4p+1)+1.
Ou seja, Ak+1 = 3q + 1 para algum inteiro n˜ao negativo, j´a que se p ∈ Z e p ≥ 0 ent˜ao
4p + 1 ∈ Z e 4p + 1 ≥ 0.
Usando (ii) e (i) podemos concluir que qualquer que seja n ≥ 1, a ´area do quadrado de
lado 2n excede numa unidade um m´ultiplo de 3.
Observe que, se nos fosse pedido, podiamos apresentar a dedu¸c˜ao de que A6 excede numa
unidade um m´ultiplo de 3:
Por (i), sabemos que o resto da divis˜ao de A1 por 3 ´e 1;
De (i) e (ii), concluimos que o resto da divis˜ao de A2 por 3 ´e 1;
Como o resto da divis˜ao de A2 por 3 ´e 1, concluimos, por (ii), que o resto da divis˜ao de A3 por 3 ´e 1;
Como o resto da divis˜ao de A3 por 3 ´e 1, concluimos, por (ii), que o resto da divis˜ao de A4 por 3 ´e 1;
Como o resto da divis˜ao de A4 por 3 ´e 1, concluimos, por (ii), que o resto da divis˜ao de A5 por 3 ´e 1;
Como o resto da divis˜ao de A5 por 3 ´e 1, concluimos, por (ii), que o resto da divis˜ao de A6 por 3 ´e 1.
Do mesmo modo que conseguimos mostrar que A6 d´a resto 1 quando dividido por 3,
podiamos, dado um n ≥ 1, apresentar a dedu¸c˜ao de que An d´a resto 1 quando dividido por 3,
se tal nos fosse pedido.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
43. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 35
Proposi¸c˜ao 14 (Vers˜ao geral do Princ´ıpio de Indu¸c˜ao) Seja n0 ∈ Z, e suponha que
P(n) denota “o inteiro n satisfaz a propriedade P. Se forem satisfeitas as duas condi¸c˜oes (i)
e (ii) seguintes, ent˜ao, para todo o inteiro n ≥ n0 tem-se P(n).
(i) P(n0) ´e verdade;
(ii) ∀k ≥ n0 ( P(k) ⇒ P(k + 1) ), isto ´e, para todo inteiro k tal que k ≥ n0, se P(k)
ent˜ao P(k + 1);
Exemplo 12 Vamos mostrar que qualquer que seja n ≥ 1 e quaisquer que sejam a, b ∈ R+,
se tem (a + b)n < 2n(an + bn).
Podemos concluir isso se mostrarmos que as duas condi¸c˜oes de aplicabilidade do princ´ıpio
de indu¸c˜ao matem´atica se verificam neste caso.
(i) Para n=1, (a + b)1 = a + b < 2(a + b) = 21(a1 + b1), porque a, b ∈ R+.
(ii) Suponhamos agora que para um dado k ≥ 1 se tem (a+b)k < 2k(ak +bk), para a, b ∈ R+
quaisquer, e vamos mostrar que ent˜ao (a + b)k+1 < 2k+1(ak+1 + bk+1).
Como (a + b)k+1 = (a + b)k(a + b), e por hip´otese
(a + b)k
< 2k
(ak
+ bk
),
concluimos que
(a + b)k+1
< 2k
(ak
+ bk
)(a + b) = 2k
(ak+1
+ bk+1
+ ak
b + bk
a).
Como
2k
(ak+1
+ bk+1
+ ak
b + bk
a) = 2k
(ak+1
+ bk+1
) + 2k
(ak
b + bk
a),
para concluir que (a + b)k+1 < 2k+1(ak+1 + bk+1) vamos mostrar que
ak
b + bk
a ≤ ak+1
+ bk+1
quaisquer que sejam a, b reais positivos. Tem-se
ak
b + bk
a − ak+1
− bk+1
= −(ak
− bk
)(a − b) ≤ 0,
j´a que quaisquer que sejam x, y ∈ R+, se x ≤ y ent˜ao xp ≤ yp, para todo p ≥ 1 (relembre
que as fun¸c˜oes fp(x) = xp, s˜ao estritamente crescentes em R+).
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
44. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 36
Exerc´ıcio 4.1.1 Aplique o princ´ıpio de indu¸c˜ao matem´atica para resolver os problemas se-
guintes.
a) Mostrar que |sen(nx)| ≤ n|sen(x)|, para todo x ∈ R e todo n ∈ N.
b) Mostrar que 4n + 15n − 1 ´e m´ultiplo de 9, para todo n ≥ 1.
Exemplo 13 Considere o seguinte algoritmo (imagine que Y ´e uma caixa1).
1. Coloque em Y o valor 0.
2. Escolha um inteiro (vamos referi-lo por X).
3. Se X = 0 ent˜ao fa¸ca 7.
4. Se X > 0 ent˜ao volte a 2.
5. Substitua o valor em Y pela soma do valor que l´a estava com dois.
6. Volte a 2.
7. Indique o valor que guarda em Y, e p´are.
O valor em Y quando se executa 7. ´e o dobro do n´umero de inteiros negativos nos valores
escolhidos. Para o provar, vamos mostrar que tal propriedade caracteriza o valor de Y em
cada itera¸c˜ao do ciclo (ou seja, ´e um invariante do ciclo). Usamos indu¸c˜ao sobre o n´umero
de itera¸c˜oes efectuadas.
O valor que est´a guardado em Y quando est´a a executar 2. pela 2a
¯ vez ´e 0 se o primeiro
valor escolhido em 2. for positivo, e ´e 2 se tal valor for negativo.
Quando est´a a executar 2. pela 3a
¯ vez, o valor em Y ´e 4 se ambos os valores escolhidos
anteriormente forem negativos, ´e 2 se um for negativo e o outro positivo, e ´e 0 se ambos forem
positivos.
Suponhamos que para um dado k ≥ 1, quando se se est´a a executar 2. pela ka
¯ vez, o valor
em Y ´e o dobro do n´umero de inteiros negativos nos k − 1 valores escolhidos anteriormente.
Ent˜ao, por an´alise do algoritmo, concluimos que se se estiver a executar 2. pela (k + 1)a
¯
vez, o valor em Y ´e igual ao valor anterior se tivermos dado mais um n´umero positivo, ou foi
incrementado de duas unidades, se tivermos dado mais um n´umero negativo. Portanto, se
quando se estiver a executar 2. pela ka
¯ vez, o valor em Y ´e o dobro do n´umero de inteiros
negativos nos k−1 valores escolhidos anteriormente, ent˜ao quando se estiver a executar 2. pela
(k + 1)a
¯ vez, valor em Y ´e o dobro do n´umero de inteiros negativos nos k valores escolhidos
anteriormente.
Consequentemente, por indu¸c˜ao matem´atica, podemos concluir que o valor em Y quando
se executa 7. ´e o dobro do n´umero de inteiros negativos nos valores escolhidos.
1
Na terminologia de linguagens de programa¸c˜ao, X e Y s˜ao vari´aveis de programa¸c˜ao.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
45. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 37
4.1.1 Erros frequentes
´E necess´ario mostrar as duas condi¸c˜oes de aplicabilidade do princ´ıpio de indu¸c˜ao, sem o que
as provas n˜ao ficam completas e, no pior dos casos, os resultados mal “demonstrados” s˜ao
mesmo falsos.
O exemplo seguinte serve para ilustrar o facto de certas propriedades, n˜ao observ´aveis,
poderem ser heredit´arias. Heredit´arias, no sentido de se um dado inteiro as satisfizer, tamb´em
o inteiro seguinte as satisfaz.
Exemplo 14 Considere a seguinte demonstra¸c˜ao (claramente, errada!) de que “entre dois
inteiros consecutivos existe uma infinidade de inteiros”.
Prova: Para todo x ∈ R (em particular para x inteiro) se k ≤ x ≤ k + 1 ent˜ao
k + 1 ≤ x + 1 ≤ k + 2, qualquer que seja k ∈ N. Assim, se entre k e k + 1 existir
uma infinidade de inteiros, ent˜ao entre k+1 e k+2 tamb´em existe uma infinidade
de inteiros. De facto, a cada inteiro x no intervalo [k, k +1] podemos associar um
inteiro x no intervalo [k + 1, k + 2], a saber, por exemplo x ´e x + 1.
Logo, por indu¸c˜ao matem´atica sobre k, concluimos que entre dois inteiros conse-
cutivos existe uma infinidade de inteiros.
Como entre dois inteiros consecutivos n˜ao h´a qualquer outro inteiro, a prova tem que estar
errada. O erro est´a na conclus˜ao “precipitada”. N˜ao se mostrou que existia um intervalo
[k, k +1] que tinha uma infinidade de inteiros. Apenas se mostrou a condi¸c˜ao (ii) do princ´ıpio
de indu¸c˜ao. A condi¸c˜ao (i) n˜ao foi provada, nem se pode provar!
Exemplo 15 A demonstra¸c˜ao seguinte est´a obviamente errada dado que permite concluir
que “todos os cavalos s˜ao brancos” (e, todos sabemos que h´a cavalos doutras cores).
Vamos mostrar que qualquer que seja o n´umero de cavalos que estejam numa
cerca, se existir algum cavalo branco entre eles ent˜ao todos os cavalos nessa cerca
s˜ao brancos.
Prova: Para isso vamos mostrar que as duas condi¸c˜oes (i) e (ii) do princ´ıpio de
indu¸c˜ao se verificam nessa situa¸c˜ao.
(i) Como deve estar pelo menos um cavalo branco na cerca, podemos afirmar
que se s´o existir um cavalo na cerca ´e branco.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
46. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 38
(ii) Fixemos um k ∈ N, e suponhamos que se existirem k cavalos numa cerca
qualquer, estando pelo menos um cavalo branco entre eles, ent˜ao todos os
demais s˜ao brancos. Consideramos agora uma cerca onde est˜ao k + 1 cavalos
sendo branco pelo menos um deles. Retiremos um cavalo da cerca deixando
ficar o branco. Dado que est˜ao k cavalos na cerca, estando um branco entre
eles, segue pela hip´otese de indu¸c˜ao, que os k cavalos na cerca s˜ao brancos.
Resta mostrar que o cavalo que retir´amos primeiramente tamb´em era branco.
Retiremos um dos cavalos que est´a na cerca (´e indiferente qual se retira
porque de facto todos s˜ao brancos), e voltemos a colocar o que retir´amos
primeiramente. Mais uma vez, pela hip´otese, podemos concluir que todos os
cavalos que est˜ao agora na cerca s˜ao brancos.
Assim, pelo princ´ıpio de indu¸c˜ao matem´atica segue a validade da proposi¸c˜ao que
queriamos mostrar.
Sabemos que “se existir algum cavalo branco numa cerca”, tamb´em l´a podem estar cavalos
doutras cores. Logo, a afirma¸c˜ao que “mostr´amos” por indu¸c˜ao ´e falsa. Mas, como o sistema
dedutivo que estamos a seguir ´e consistente, n˜ao podemos deduzir proposi¸c˜oes falsas, pelo
que h´a que encontrar um erro (v´ıcio) na prova dada.
Sabemos que se estiverem dois cavalos numa cerca e um deles for branco, ent˜ao isso n˜ao
implica que o outro tamb´em seja branco. Por outras palavras, ´e falso P(1) ⇒ P(2).
Para localizarmos o erro, vamos ent˜ao seguir em detalhe a prova de (ii) para k = 1.
Fixemos k = 1. Suponhamos (podemos sempre supor o que quisermos) que ´e
sempre branco o cavalo que estiver s´ozinho numa cerca em que h´a pelo menos
um cavalo branco. Consideramos agora uma cerca onde est˜ao dois cavalos sendo
branco pelo menos um deles. Retiremos um cavalo da cerca deixando ficar o
branco. Dado que est´a um s´o cavalo na cerca, estando um branco na cerca, segue
pela hip´otese de indu¸c˜ao, que o cavalo na cerca ´e branco. Resta mostrar que
o cavalo que retir´amos primeiramente tamb´em era branco. Retiremos o cavalo
que est´a na cerca, e voltemos a colocar o que retir´amos primeiramente. Agora
n˜ao podemos aplicar a hip´otese, pois s´o est´a na cerca o cavalo que acab´amos de
l´a colocar, e n˜ao sabemos de que cor ´e (por isso n˜ao podemos afirmar que haja
algum cavalo branco na cerca).
Note que a prova de (ii) ´e v´alida para k ≥ 2, ou seja ´e verdade que qualquer que seja
k ≥ 2, se forem brancos os k cavalos que estiverem numa qualquer cerca onde est´a pelo menos
um branco, ent˜ao s˜ao brancos os k + 1 cavalos que estiverem numa qualquer cerca onde est´a
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
47. 4.1. PRINC´IPIO DE INDUC¸ ˜AO MATEM ´ATICA 39
pelo menos um branco. Conclus˜ao: s´o n˜ao conseguimos mostrar que “todos os cavalos s˜ao
brancos” porque P(1) ⇒ P(2).
No exemplo2 que se segue, a prova est´a errada, mas o resultado ´e v´alido.
Exemplo 16 Pretendemos mostrar que qualquer que seja n ≥ 1, o quadrado de lado 2n pode
ser coberto por pe¸cas da forma seguinte, ficando apenas um quadrado 1 × 1 por cobrir.
A propriedade verifica-se para n = 1, por exemplo:
Para concluir, por indu¸c˜ao, que a propriedade ´e v´alida para todo n ≥ 1, resta
mostrar que qualquer que seja k ≥ 1, se os quadrados de lado 2k admitem a
cobertura descrita, ent˜ao os quadrados de lado 2k+1 tamb´em admitem.
Dado um quadrado de lado 2k+1 podemos dividi-lo em quatro quadrados de lado 2k
como se ilustra na figura abaixo. Por hip´otese, cada quadrado de lado de 2k pode
ser coberto por pe¸cas da forma descrita acima. Fazemos para cada um dos quatro
uma tal cobertura de forma a ficarem a descoberto os quadrados 1 × 1 indicados
na figura. Verificamos que os trˆes quadrados 1 × 1 (ao centro) podem ser cobertos
por uma pe¸ca, pelo que s´o fica um quadrado 1 × 1 por cobrir.
2k+1
2k
2k1
1
Esta prova n˜ao est´a correcta! Porquˆe? Na demonstra¸c˜ao supusemos que o quadrado por
cobrir, podia estar num canto, mas o quadrado que deix´amos depois a descoberto n˜ao ficou
num canto. No entanto, podemos corrigir a prova, mostrando um resultado mais forte do que
o enunciado inicialmente. . . “a cobertura pode ser tal que o quadrado 1 × 1 a descoberto fica
num canto”. Para isso, basta notar que caso n = 1, o quadrado por cobrir est´a num canto, e
que para mostrar que ∀n (P(n) ⇒ P(n + 1)) podemos fazer o seguinte.
2
de Maggie Johnson, Introducton to Induction, Lecture Notes CS109, 1998.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
48. 4.2. INDUC¸ ˜AO FORTE 40
2k+1
2k
2k
4.2 Indu¸c˜ao Forte
Em certos casos ´e ´util refor¸car a hip´otese de indu¸c˜ao.
Exemplo 17 Para mostrar que qualquer inteiro maior do que 1 ´e ou primo ou produto de
primos, fixado um k, ´e conveniente assumir que j´a se mostrou que todo i ∈ N tal que 2 ≤ i ≤ k
ou ´e primo ou ´e produto de primos porque n˜ao basta ter a decomposi¸c˜ao de k em primos para
construir a decomposi¸c˜ao de k + 1. A prova ficaria ent˜ao:
• Pela defini¸c˜ao de primo, 2 ´e primo.
• Seja k ∈ N tal que k ≥ 2. Suponhamos que j´a mostr´amos que todo i ∈ N tal que
2 ≤ i ≤ k ´e ou primo ou produto de primos. Vamos mostrar que ent˜ao tamb´em
podemos concluir que k + 1 ´e primo ou produto de primos. De facto, se k + 1 n˜ao for
primo, existem i1, i2 ∈ N {0, 1} tais que k + 1 = i1i2. Como 2 ≤ i1 ≤ k e 2 ≤ i2 ≤ k,
sabemos j´a que i1 ´e primo ou produto de primos e i2 ´e primo ou produto de primos.
Analisando os quatro casos (a) i1 e i2 primos, (b) i1 e i2 produtos de primos, (c) i1
primo e i2 produto de primos, e (d) i1 produto de primos e i2 primo, concluimos que se
k + 1 = i1i2 ent˜ao k + 1 pode-se escrever como produto de primos. Logo, se k + 1 n˜ao
´e primo, k + 1 ´e um produto de primos, ou seja, k + 1 ´e primo ou produto de primos.
Mostr´amos que 2 ´e primo (ou produto de primos) e que qualquer que seja k ≥ 2 se todo i tal
que 2 ≤ i ≤ n for primo ou produto de primos ent˜ao k + 1 ´e primo ou produto de primos.
Portanto, por indu¸c˜ao, n ´e primo ou produto de primos, qualquer que seja n ≥ 2.
Proposi¸c˜ao 15 (Vers˜ao forte do princ´ıpio de indu¸c˜ao) Seja P(n) uma condi¸c˜ao na
vari´avel n ∈ Z. Dado n0 ∈ Z, se forem satisfeitas as duas condi¸c˜oes (i) e (ii) seguintes, ent˜ao
∀n ≥ n0 P(n).
(i) P(n0) ´e verdade;
(ii) para todo k ∈ Z, se se tem P(i) para todo i ∈ Z com n0 ≤ i ≤ k, tem-se P(k + 1).
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
49. 4.2. INDUC¸ ˜AO FORTE 41
Exemplo 18 Seja “QS” (´e conhecido por quick-sort) o algoritmo seguinte.
0. Sup˜oe-se dada uma sequˆencia finita de inteiros (pode n˜ao ter elementos).
1. Se a sequˆencia n˜ao tem qualquer elemento ent˜ao indicar como resultado a
pr´opria sequˆencia.
2.1 Sen˜ao seja X o primeiro elemento na sequˆencia dada.
2.2 Separar os restantes elementos da sequˆencia formando a subsequˆencia dos
menores do que X e a subsequˆencia dos maiores ou iguais que X.
2.3 Aplicar “QS” a cada uma das subsequˆencias: sejam R< e R≥ as sequˆencias
resultantes (respectivamente).
2.4. Dar como resultado os elementos de R<, seguidos de X, seguidos dos
elementos de R≥.
O algoritmo “QS” ordena por ordem crescente a sequˆencia finita de inteiros dada. Para o
provar, vamos usar indu¸c˜ao sobre o n´umero de elementos na sequˆencia dada.
(i) Se a sequˆencia dada n˜ao tem elementos, ent˜ao podemos dizer que a sequˆencia resultante,
que ´e igual `a dada (por 1.) est´a ordenada por ordem crescente.
(ii) Seja S uma qualquer sequˆencia de inteiros, e seja n (n ≥ 1 fixo) o seu n´umero de
elementos. Suponhamos agora, como hip´otese de indu¸c˜ao, que quando aplicamos “QS”
a uma qualquer sequˆencia W de inteiros cujo n´umero de elementos ´e menor do que n,
obtemos os elementos de W por ordem crescente.
Queremos mostrar que “QS” quando aplicado a S, ordena S por ordem crescente.
Como S tem elementos, aplicam-se as instru¸c˜oes 2.1–2.4. Uma vez que nas sub-
sequˆencias formadas em 2.2 n˜ao entra o primeiro elemento de S, cada uma delas tem
menos elementos do que S. Assim, por hip´otese de indu¸c˜ao, “QS” quando aplicado a
cada uma dessas subsequˆencias, ordena-as por ordem crescente. Ent˜ao, as sequˆencias
referidas por R< e R≥ (em 2.3) s˜ao respectivamente as sequˆencias de elementos menores
do que X e maiores ou iguais a X, ordenadas por ordem crescente. Portanto, o resultado
indicado em 2.4 n˜ao ´e mais do que a sequˆencia S ordenada por ordem crescente.
Proposi¸c˜ao 16 Os princ´ıpios de indu¸c˜ao forte e fraca s˜ao equivalentes, ou seja se existir
uma prova de ∀n ∈ N P(n) por indu¸c˜ao fraca ent˜ao tamb´em existe uma prova por indu¸c˜ao
forte. E vice-versa, se existir uma prova por indu¸c˜ao forte ent˜ao existe uma prova por indu¸c˜ao
fraca.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
50. 4.2. INDUC¸ ˜AO FORTE 42
Prova: ´E trivial que se existir uma prova dum dado resultado por indu¸c˜ao fraca ent˜ao
existe uma prova por indu¸c˜ao forte, pois a mesma prova serve!
Portanto, resta-nos mostrar que se existir uma prova por indu¸c˜ao forte ent˜ao existe uma
prova por indu¸c˜ao fraca. Para tal, vamos mostrar que se existe uma prova de ∀n ∈ Z+ P(n)
por indu¸c˜ao forte, ent˜ao existe uma prova por indu¸c˜ao fraca de ∀n ∈ Z+ (∀i ≤ n P(i)).
Podemos depois concluir que existe uma prova por indu¸c˜ao fraca de ∀n ∈ Z+ P(n) porque
(∀n ∈ Z+ (∀i ≤ n P(i))) ⇒ ∀n ∈ Z+ P(n).
Seja Q(n) a condi¸c˜ao ∀i ≤ n P(i).
Mostrar que Q(1) ´e verdade, ´e mostrar que ∀i ≤ 1 P(i), o que equivale a mostrar que
P(1) ´e verdade. Como para mostrar que ∀n P(n) por indu¸c˜ao forte, teve que se justificar
que P(1) era verdade, basta-nos reproduzir essa justifica¸c˜ao.
Para mostrar que ∀n ( Q(n) ⇒ Q(n + 1) ), ou seja que
∀n ( (∀i ≤ n P(i)) ⇒ (∀i ≤ n + 1 P(i)) )
´e ´util recordar que existe uma prova de
∀n ( (∀i ≤ n P(i)) ⇒ P(n + 1) )
que teve de ser feita para mostrar a proposi¸c˜ao ∀n P(n) por indu¸c˜ao forte. E, como
∀n ((∀i ≤ n P(i)) ⇒ (∀i ≤ n P(i)))
tem-se ∀n ((∀i ≤ n P(i)) ⇒ (P(n+1)∧(∀i ≤ n P(i)))). Ou seja, ∀n ∈ Z+ (Q(n) ⇒ Q(n+1)).
Assim, mostr´amos que Q(1) era verdade e ∀n ∈ Z+ (Q(n) ⇒ Q(n + 1)). Consequente-
mente, pelo princ´ıpio de indu¸c˜ao fraca, concluimos ∀n ∈ Z+ Q(n).
4.2.1 Outras formula¸c˜oes do princ´ıpio de indu¸c˜ao
Proposi¸c˜ao 17 Seja A = {n ∈ N | P(n)}, onde P(n) denota “n satisfaz a propriedade P”.
Se A satisfizer as condi¸c˜oes (i) e (ii) seguintes, ent˜ao A = N.
(i) 0 ∈ A
(ii) ∀k ∈ N (k ∈ A ⇒ k + 1 ∈ A)
Proposi¸c˜ao 18 Seja A = {n ∈ N | P(n)}, onde P(n) denota “n satisfaz a propriedade P”.
Se A satisfizer as condi¸c˜oes (i) e (ii) seguintes, ent˜ao A = N.
(i) 0 ∈ A
(ii) ∀k∈N ( (∀i ≤ k i∈A) ⇒ k + 1 ∈ A )
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
51. Cap´ıtulo 5
Rela¸c˜oes Bin´arias
5.1 Rela¸c˜oes Bin´arias de A em B
Sejam A e B conjuntos. Designa-se por produto cartesiano de A por B, e denota-se por
A × B , o conjunto dos pares ordenados (a, b) tais que a ∈ A e b ∈ B , ou seja
A × B = {(a, b) | a ∈ A e b ∈ B}
Qualquer subconjunto R do produto cartesiano de A por B diz-se rela¸c˜ao bin´aria de A
em B. A nota¸c˜ao a R b ser´a usada com o mesmo significado de (a, b) ∈ R.
Exemplo 19 Seja A o conjunto dos alunos, P o conjunto dos docentes, L o conjunto das
licenciaturas e C o conjunto das disciplinas das licenciaturas da FCUP.
R = {(x, y) ∈ A × A | x e y s˜ao alunos da mesma licenciatura} ⊆ A × A
S = {(x, y) ∈ P × C | x ´e professor da disciplina y} ⊆ P × C
T = {(x, y) ∈ A × C | x est´a inscrito na disciplina y} ⊆ A × C
U = {(x, y) ∈ A × L | x ´e aluno da licenciatura y} ⊆ A × L
Os conjuntos R, S, T e U s˜ao rela¸c˜oes bin´arias.
5.1.1 Opera¸c˜oes com rela¸c˜oes bin´arias
Como as rela¸c˜oes bin´arias s˜ao conjuntos (de pares ordenados), podemos definir a uni˜ao e a
intersec¸c˜ao de rela¸c˜oes bin´arias e ainda a rela¸c˜ao complementar. Sendo R, S ⊆ A × B:
R ∪ S = {(a, b) ∈ A × B | (a, b) ∈ R ∨ (a, b) ∈ S}
R ∩ S = {(a, b) ∈ A × B | (a, b) ∈ R ∧ (a, b) ∈ S}
R = {(a, b) ∈ A × B | (a, b) /∈ R} = (A × B)R
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
52. 5.1. RELAC¸ ˜OES BIN´ARIAS DE A EM B 44
Para al´em destas opera¸c˜oes, definimos tamb´em a no¸c˜ao de inversa e de composta. A
rela¸c˜ao inversa de R, representada por R−1, ´e a rela¸c˜ao de B em A definida pelo conjunto
R−1
= {(b, a) | (a, b) ∈ R}
Dadas duas rela¸c˜oes R ⊆ A × B e S ⊆ B × C, diz-se rela¸c˜ao composta de R e S, e
representa-se por RS , a rela¸c˜ao bin´aria de A em C definida por
RS = {(a, c) | existe b ∈ B tal que (a, b) ∈ R e (b, c) ∈ S}
Em alternativa podiamos escrever S ◦ R, que se lˆe S ap´os R, `a semelhan¸ca da nota¸c˜ao
usual para composi¸c˜ao de fun¸c˜oes. Na sec¸c˜ao 5.1.3, veremos que as fun¸c˜oes correspondem a
rela¸c˜oes bin´arias que satisfazem condi¸c˜oes adicionais. A rela¸c˜ao inversa corresponde `a no¸c˜ao
de imagem rec´ıproca, que associa a cada transformado os elementos do dom´ınio que o tˆem
por imagem.
Exemplo 20 Seja A = {1, 2, 3}, B = {1, 2, 3, 4, 5}, C = {1, 2},
R = {(1, 2), (1, 3), (2, 2), (3, 4), (3, 5)}
S = {(1, 1), (3, 2), (5, 1), (5, 2)}
A rela¸c˜ao R−1 ´e {(2, 1), (3, 1), (2, 2), (4, 3), (5, 3)}.
R S
1 GG
BB„„„„„„„„„„„„„„ 2
2
RRjjjjjjjjjjjjjj
3 GG 2
3
66ssssssssssssssss GG 5
BB„„„„„„„„„„„„„
SSjjjjjjjjjjjjj
1 GG 1
4
RS = {(1, 2), (3, 1), (3, 2)}, j´a que: (1, 2) ∈ RS pois (1, 3) ∈ R ∧ (3, 2) ∈ S; (3, 1) ∈ RS
porque (3, 5) ∈ R ∧ (5, 1) ∈ S; (3, 2) ∈ RS porque (3, 5) ∈ R ∧ (5, 2) ∈ S; (1, 1) /∈ RS porque
∀y ∈ B (1, y) /∈ R ∨ (y, 1) /∈ S (de facto, ∀y ∈ B (1, y) ∈ R ⇔ y = 2 ∨ y = 3, mas
(2, 1) /∈ S ∧ (3, 1) /∈ S); Do mesmo modo se verifica que, (2, 1) /∈ RS, (2, 2) /∈ RS.
Como RS ⊆ {1, 2, 3}×{1, 2}, o que acab´amos de fazer foi uma an´alise exaustiva dos pares
poss´ıveis, justificando se pretenciam ou n˜ao a RS. Mais adiante, ser˜ao apresentados alguns
resultados te´oricos que facilitar˜ao a determina¸c˜ao da composta.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
53. 5.1. RELAC¸ ˜OES BIN´ARIAS DE A EM B 45
Exemplo 21 Voltemos a considerar o Exemplo 19. Podemos verificar que:
{(x, y) ∈ A × P | x ´e aluno duma disciplina de que y ´e professor} = TS−1
R = {(x, y) ∈ A × A | x e y s˜ao alunos da mesma licenciatura } = UU −1
5.1.2 Matriz duma rela¸c˜ao bin´aria
Sejam A e B conjuntos finitos e n˜ao vazios, tais que |A| = n e |B| = m. Podemos identificar A
com {ai | 1 ≤ i ≤ n} e B com {bj | 1 ≤ j ≤ m}. Qualquer rela¸c˜ao R de A em B pode
ser representada por uma tabela – matriz da rela¸c˜ao – do modo seguinte. O elemento que
est´a na linha i e coluna j ´e 1 se (ai, bj) ∈ R, e ´e 0 se (ai, bj) /∈ R. Ou seja, se MR for tal
matriz, e MR[i, j] representar o elemento na linha i e coluna j ent˜ao tem-se
MR[i, j] = 1 se e s´o se (ai, bj) ∈ R
MR[i, j] = 0 se e s´o se (ai, bj) /∈ R
com 1 ≤ i ≤ n e 1 ≤ j ≤ m.
Exemplo 22 Seja A = {1, 2, 3}, B = {1, 2, 3, 4, 5} e R ⊆ A × B,
R = {(1, 2), (1, 3), (2, 2), (3, 4), (3, 5)}
Ent˜ao,
MR =
0 1 1 0 0
0 1 0 0 0
0 0 0 1 1
Matriz da inversa
Sejam A = {a1, . . . , an} e B = {b1, . . . , bm}, m, n ∈ Z+ (fixos) e R ⊆ A × B. Ent˜ao
MR−1 [i, j] = 1 ⇐⇒ (bi, aj) ∈ R−1 ⇐⇒ (aj, bi) ∈ R ⇐⇒ MR[j, i] = 1
MR−1 [i, j] = 0 ⇐⇒ (bi, aj) /∈ R−1 ⇐⇒ (aj, bi) /∈ R ⇐⇒ MR[j, i] = 0
com 1 ≤ i ≤ m e 1 ≤ j ≤ n, pelo que a matriz da inversa de R ´e a transposta da matriz
de R (cada linha da transposta de R ´e uma coluna da matriz R).
Exemplo 23 Para R como no Exemplo 22, R−1 = {(2, 1), (3, 1), (2, 2), (4, 3), (5, 3)}. Ent˜ao,
MR−1 =
0 0 0
1 1 0
1 0 0
0 0 1
0 0 1
=
0 1 1 0 0
0 1 0 0 0
0 0 0 1 1
t
= Mt
R
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
54. 5.1. RELAC¸ ˜OES BIN´ARIAS DE A EM B 46
Matriz da composta
Sejam A, B, e C conjuntos finitos e n˜ao vazios tais que |A| = n, |B| = m e |C| = p. Dadas
duas rela¸c˜oes R e S tais que R ⊆ A × B e S ⊆ B × C, a matriz da rela¸c˜ao composta
RS tem n linhas e p colunas e
MRS[i, j] =
1≤k≤m
(MR[i, k] ∧ MS[k, j]), 1 ≤ i ≤ n, 1 ≤ j ≤ p
Notar que por defini¸c˜ao da rela¸c˜ao composta tem-se aiRScj se e s´o se existe bk tal que
aiRbk ∧ bkScj. Ou seja, MRS[i, j] = 1 se e s´o se MR[i, k] = 1 ∧ MS[k, j] = 1 para algum k.
Ou seja, MRS[i, j] = 1 se e s´o se MR[i, 1] = 1∧MS[1, j] = 1 ou MR[i, 2] = 1∧MS[2, j] = 1
ou . . . ou MR[i, m] = 1∧MS[m, j] = 1, o que justifica a defini¸c˜ao dada para MRS[i, j]. Assim,
MRS = MRMS ´e um produto1 de matrizes cujos elementos pertencem ao corpo ({0, 1}, ∨, ∧).
Relembre que ∨ e ∧ denotam “ou” e “e” respectivamente e “0” e “1” representam os
valores l´ogicos falso e verdadeiro.
∨ 0 1
0 0 1
1 1 1
∧ 0 1
0 0 0
1 0 1
Exemplo 24 Seja A = {1, 2, 3}, B = {1, 2, 3, 4, 5}, C = {1, 2},
R = {(1, 2), (1, 3), (2, 2), (3, 4), (3, 5)}
MR =
0 1 1 0 0
0 1 0 0 0
0 0 0 1 1
S = {(1, 1), (3, 2), (5, 1), (5, 2)}
MS =
1 0
0 0
0 1
0 0
1 1
MRS =
0 1
0 0
1 1
=
0 1 1 0 0
0 1 0 0 0
0 0 0 1 1
1 0
0 0
0 1
0 0
1 1
donde, RS = {(1, 2), (3, 1), (3, 2)} ⊆ A × C
1
Deve ficar claro quando estudar corpos e matrizes na disciplina de Elementos de ´Algebra Linear. Para
matrizes cujos elementos pertencem ao corpo dos reais (R, +, ∗), se M tem n linhas e m colunas e N tem m
linhas e p colunas, a matriz MN tem n linhas e p colunas, sendo MN[i, j] =
Pm
k=1(A[i, k] ∗ B[k, j]), para
1 ≤ i ≤ n e 1 ≤ j ≤ p (dado pelo produto escalar da linha i de M pela coluna j de N). Quando os elementos
pertencem a ({0, 1}, ∨, ∧), a disjun¸c˜ao ∨ substitui a soma + e a conjun¸c˜ao ∧ substitui o produto ∗.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP
55. 5.2. RELAC¸ ˜OES BIN´ARIAS DEFINIDAS NUM CONJUNTO 47
5.1.3 Fun¸c˜oes de A em B
Designa-se por fun¸c˜ao de A em B qualquer rela¸c˜ao bin´aria f de A em B tal que para todo
a ∈ A existe um ´unico b ∈ B tal que a f b, ou seja,
∀a ∈ A ∃1
b ∈ B a f b.
Se a f b ent˜ao escreve-se f(a) = b e diz-se que b ´e a imagem de a por f.
O conjunto A ´e o dom´ınio da fun¸c˜ao, e o conjunto B ´e o conjunto de chegada. O
subconjunto de B formado pelas imagens dos elementos de A diz-se imagem de A por f,
ou contradom´ınio de f. A imagem de A por f denota-se por f(A).
Uma fun¸c˜ao ´e injectiva se e s´o se cada elemento de B ´e imagem quando muito dum
elemento de A, ou seja
f injectiva sse ∀a1, a2 ∈ A ( f(a1) = f(a2) ⇒ a1 = a2 )
Uma fun¸c˜ao ´e sobrejectiva se e s´o qualquer elemento de B ´e imagem de algum elemento
de A, ou seja f(A) = B.
Uma fun¸c˜ao que ´e sobrejectiva e injectiva diz-se bijectiva. Assim, f ⊆ A × B ´e uma
fun¸c˜ao bijectiva se e s´o se
• ∀a ∈ A ∃1b ∈ B f(a) = b (fun¸c˜ao), e
• ∀b ∈ B ∃1a ∈ A f(a) = b (bijectiva)
Desta observa¸c˜ao resulta trivialmente a proposi¸c˜ao seguinte.
Proposi¸c˜ao 19 Seja f ⊆ A × B uma fun¸c˜ao. Ent˜ao f −1 ⊆ B × A ´e fun¸c˜ao se e s´o se f ´e
bijectiva.
Uma fun¸c˜ao diz-se invert´ıvel se a sua inversa ´e uma fun¸c˜ao.
Uma fun¸c˜ao parcial de A em B ´e uma rela¸c˜ao bin´aria f de A em B tal que se um elemento
a ∈ A tem imagem por f ent˜ao essa imagem ´e ´unica. Notar que a diferen¸ca relativamente
`a defini¸c˜ao de fun¸c˜ao ´e n˜ao se impor a condi¸c˜ao de que todos os elementos de A tenham
imagens por f.
5.2 Rela¸c˜oes Bin´arias Definidas num Conjunto
Seja A um conjunto. Chama-se rela¸c˜ao bin´aria definida em A ou simplesmente rela¸c˜ao
bin´aria em A a qualquer rela¸c˜ao bin´aria de A em A.
c A. P. Tom´as – Dep. de Ciˆencia de Computadores – FCUP