Básico Redes de Comp
Básico Redes de Comp
Básico Redes de Comp
Fundao Universidade do Tocantins (UNITINS)
F981p Anlise e Desenvolvimento de Sistemas / Fundao Universidade do
Tocantins; EADCON. Palmas: Editora Educon, 2008.
320 p.: il.
Nota: Caderno de Contedo e Atividades 1 perodo de Anlise
e Desenvolvimento de Sistemas (apostila)
1. Analista de Sistemas Formao. I. EADCON. II. Ttulo.
CDD 378
22. ed.
Direitos desta edio reservados UNITINS.
proibida a reproduo total ou parcial desta obra sem autorizao expressa da UNITINS.
Sumrio
Computao Bsica.........................................................................................5
Aula 1 Histria da computao............................................................................. 11
Aula 2 Componentes bsicos do computador.......................................................... 27
Aula 3 Sistemas posicionais de numerao............................................................. 37
Aula 4 Operaes aritmticas no sistema binrio de numerao............................... 53
Aula 5 Classificao de software........................................................................... 63
Aula 6 Noes bsicas de redes de computadores e banco de dados....................... 71
Aula 7 Profisses na rea de Informtica................................................................ 79
Algortmos e Programao...........................................................................93
Aula 1 Introduo programao em Linguagem C................................................ 99
Aula 2 Operadores............................................................................................ 115
Aula 3 Estruturas de controle............................................................................... 125
Aula 4 Modularizao em C: uso de Funes....................................................... 137
Aula 5 Estruturas de dados homogneas (vetores e matrizes) e
heterogneas (estruturas).......................................................................... 147
Aula 6 Ponteiros e alocao dinmica.................................................................. 157
Aula 7 Arquivos................................................................................................. 163
Lgica de Programao...............................................................................175
Aula 1 Fundamentos da Lgica para Programao................................................ 181
Aula 2 Formas de representao de um algoritmo................................................. 193
Aula 3 Tipos de dados: variveis e constantes....................................................... 211
Aula 4 Operadores e expresses......................................................................... 223
EQUIPE UNITINS
Organizao de Contedos Acadmicos
Alexandre T. Rossini
Alex Coelho
Evanderson S. de Almeida
Marcelo Ribeiro de Oliveira
Vincius de Miranda Rios
Coordenao Editorial
Maria Lourdes F. G. Aires
Assessoria Editorial
Darlene Teixeira Castro
Assessoria Produo Grfica
Katia Gomes da Silva
Reviso Didtico-Pedaggica
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Lingstico-Textual
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Digital
Sibele Letcia Rodrigues de Oliveira Biazotto
Projeto Grfico
Douglas Donizeti Soares
Irenides Teixeira
Katia Gomes da Silva
Ilustrao
Geuvar S. de Oliveira
Crditos
Capa
Igor Flvio Souza
equipe Fael
Coordenao Editorial
Leocila Aparecida Vieira
Assessoria Editorial
William Marlos da Costa
Reviso
Juliana Camargo Horning
Lisiane Marcele dos Santos
Programao Visual e Diagramao
Denise Pires Pierin
Ktia Cristina Oliveira dos Santos
Rodrigo Santos
Sandro Niemicz
William Marlos da Costa
Apresentao
de dados.
EMENTA
Histria da computao. Componentes bsicos do computador. Sistemas
posicionais de numerao. Operaes aritmticas no sistema binrio de numerao. Classificao de software. Noes bsicas de redes de computadores
Plano de Ensino
OBJETIVOS
Conhecer a histria da computao, os componentes bsicos do
computador e os sistemas posicionais de numerao.
Reconhecer as operaes aritmticas no sistema binrio de numerao.
Adquirir noes bsicas de redes de computadores e banco de dados.
Estudar a classificao de Software.
CONTEDO PROGRAMTICO
Histria da Computao
Componentes bsicos do computador
Sistemas posicionais de numerao
Operaes aritmticas no sistema binrio de numerao
Classificao de software
Noes bsicas de redes de computadores e banco de dados
Profisses na rea de Informtica
BIBLIOGRAFIA
ALMEIDA, Marcus Garcia de. Fundamentos de informtica. 2. ed. Rio de
Janeiro: Brasport, 2002.
BROOKSHEAR, J. Glenn. Cincia da computao: uma viso abrangente.
7. ed. Porto Alegre: Bookman, 2004.
MARULA, Marcelo; BENINI FILHO, Pio Armando. Informtica: conceitos e
aplicaes. So Paulo: rica, 2005.
POLLONI. Enrico G. F.; FEDELI, Ricardo Daniel; PERES, Fernando Eduardo.
Introduo Cincia da Computao. So Paulo: Thomson, 2003.
VELLOSO, Fernando de Castro. Informtica: conceitos bsicos. 7. ed. Rio de
Janeiro: Campus, 2004.
Aula 1
Histria da computao
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
visualizar o panorama da evoluo dos computadores, composto por
descobertas da cincia e invenes de cientistas em diversos momentos
da histria;
compreender a atual realidade em que a tecnologia de produo de
computadores se encontra.
Pr-requisitos
Como esta aula a primeira de uma srie e esta disciplina a encarregada de introduzir o estudo do conhecimento dos computadores e afins, no
h necessidade de que voc tenha algum conhecimento especfico da rea
computacional. Recomenda-se, porm, que estude atentamente, procurando
traar um paralelo de cada assunto abordado com a realidade atual da tecnologia computacional, a fim de visualizar as semelhanas existentes daquelas
com os padres da atualidade. As informaes histricas aqui contidas serviro
de base primordial para a compreenso de aspectos tecnolgicos computacionais conhecidos e, at mesmo, as emergentes facetas que a comunidade cientfica da computao venha a apresentar.
Introduo
Voc visualizar, nesta primeira aula, a linha do tempo da evoluo dos
computadores, seus cientistas e povos que contriburam para sua formao.
Vale a pena lembrar que tal linha no ser vista exaustivamente, uma vez
que invivel discorrer sobre milhares de inventos e povos que contriburam
de alguma forma para tal evoluo, mas, sim, sobre aqueles que serviram de
11
1.1 Dados
O ser humano sempre processou dados. Desde o momento em que um
cidado antigo coletava pedras para representar a quantidade de ovelhas de
seu rebanho, ou escrevia nas paredes das cavernas, em cartes perfurados para
controlar o posicionamento e o movimento de agulhas do tear, ou at o tempo
em que grandes transaes bancrias so efetuadas entre duas mega empresas
situadas em continentes distintos, deparamo-nos com a definio de dados.
12
sempre foram uma forma especial, usada pela humanidade, para exercer
controle do meio sua volta.
13
14
15
16
Pai do computador, uma vez que seu invento muito se aproximava do conceito
de computador que temos na atualidade.
Tal mquina, que fora financiada por algum tempo pelo governo britnico,
era puramente mecnica, sendo composta por um engenho central (olha s,
uma CPU!), uma memria, engrenagens e alavancas. Utilizava cartes perfurados e possua dispositivos de entrada e sada de dados.
Por fim, infortunadamente, Charles Babbage parecia estar frente da
tecnologia de sua poca, pois a mesma no estava suficientemente avanada
para fornecer a base de que ele precisava para avanar em suas pesquisas
e construir peas mecnicas de que precisaria. O governo britnico acabou
por suspender o financiamento de Babbage e, com isso, o cientista no teve
condies de finalizar o prprio projeto e a calculadora analtica nunca foi
construda. Vale a pena ressaltar que as mquinas, at o sculo XIX, funcionavam na base decimal (e hoje funcionam na base binria!).
No sculo XX, a mquina de Babbage finalmente foi construda (e hoje,
inclusive, por universidades, com certo sabor saudosista), porm Babbage no
viveu tempo suficiente para ver seu invento concretizado.
1842 Ada Byron (1815-1852), Condessa de Lovelace, filha de Lord
Byron (poeta), foi considerada a primeira programadora da histria (hoje,
existe uma linguagem batizada de Ada, em sua homenagem), inclusive, antes
mesmo do computador, como conhecemos, ter sido inventado. Ela escreveu
vrias instrues para serem interpretadas pela mquina analtica de Babbage.
O Conceito de Subrotina partiu dela, que tambm aprendeu a valorizar os
laos de repeties (loop): basta em algum lugar de um carto, inserir informaes para que a leitora de cartes retornasse para outro carto anterior,
concretizando-se assim o efeito de repetio de uma seqncia de instrues.
Ada tambm imaginava as vantagens, caso pudesse trabalhar com os desvios
condicionais (if).
1854 George Boole (1815-1864) publicou as bases da lgica booleana
(Booleana em homenagem ao prprio cientista). Tais bases determinam que
equaes matemticas algbricas podem expressar os conceitos da lgica, em
que variveis (unidades de memria que armazenam valores) assumiriam os
valores 0 e 1 (ex.: verdadeiro ou falso).
Graas a essa contribuio de George Boole, os cientistas puderam pensar
em um computador que fosse utilizvel para qualquer fim.
17
18
somas, no mesmo perodo de tempo). O ENIAC foi projetado para fins blicos
(iniciou no apogeu da Segunda Guerra Mundial) porm somente aps vrios
meses o trmino da guerra, em 1946, esse teve sua construo concluda.
O ENIAC dispunha, para sua programao, de 6.000 interruptores de
ajuste e uma imensa quantidade de soquetes. Tanenbaum (2007) compara:
Uma verdadeira floresta de cabos e jumpers. Programar em painis eltricos
realmente era difcil, lento, tedioso e mecnico.
A partir dessas dificuldades, John Von Neumann props um modelo conhecido como Mquina de Von Neumann. Esse modelo composto por cinco
partes bsicas: uma unidade de controle, uma memria de trabalho (armazena os dados), unidades de entrada e sada (impressora) e CPU, composta
por uma unidade lgica aritmtica e por um acumulador.
19
20
Se o Microchip o marco dessa gerao, logo os computadores construdos com tais so os microcomputadores. Dessa vez, as mquinas alcanaram
tamanhos muito menores, evoluindo de geladeiras a cadernos (isso mesmo,
traduzindo, notebooks), e indo a um tamanho ainda menor.
1973 O termo PC (personal computer) e CP (computador pessoal)
utilizado pioneiramente quando a Xerox lana um computador batizado como
Alto, com fins de uso pessoal. Repare nas caractersticas desse CP: compatvel com uso de mouse, possuindo um nvel alto de conectividade em rede
e dispondo de interface grfica. Realmente, caractersticas que podem ser
usadas para descrever nossos computadores.
1975 O BASIC adaptado para rodar nos microcomputadores daquele
tempo (por meio do conhecido Bill Gates e Paul Allen).
1976 Nasce a Apple (significa ma, que , inclusive, a logomarca da
companhia) criada por Steve Jobs e Stephen Wozniak, com o intuito de se
projetar CPs.
1977 O Apple 2, o Atari 500 e o Commodore 64 so lanados respectivamente pelas empresas Apple, Atari e Commodore. O Apple 2 foi consagrado como o primeiro sucesso de mercado na rea de computao pessoal.
1980 O primeiro computador porttil, um av para o notebook Osborne-1
com seus 11 quilos, surge no mercado. Um ano depois do Osborne-1, a
Compaq se estabelece como empresa lder no mercado de portteis, lanado
sua cpia clonada, porttil, do IBM-PC.
A arquitetura, Reduced Instruction Set (RISC) conjunto reduzido de
instrues, comea a ser aceita no lugar de dificultosas arquiteturas (CISC).
Abordagens maiores sobre RISC e CISC sero vistas na prxima aula.
1981 O IBM-PC lanado pela IBM, com o processador Intel 8088 e o
SO MS-DOS, feito pela Microsoft. Esse CP surge com desempenho (velocidade
e memria) muito superior ao dos concorrentes. Voc provavelmente possui
um PC em sua casa ou local de trabalho ou estudo. Ele um sucesso que
permanece at os dias de hoje. A arquitetura IBM PC foi aberta ao pblico
pela prpria empresa. O resultado disso foi a perda de Mercado pela IBM
(ruim para a IBM) e a popularizao do padro IBM para o mercado (bom
para o mundo, para ns, usurios). notvel a popularidade do padro IBM
(aberto) quando comparamos, por exemplo, popularidade do Apple (padro
fechado, proprietrio). Quem lucrou mesmo com essa histria foi a Microsoft,
21
uma vez que, para cada computador vendido, mesmo de arquitetura aberta,
era quase que provvel que uma licena de uso do MS-DOS seria vendida
para uso juntamente com a mquina.
1992 O computador Alpha, revolucionrio, de 64 bits, lanado pela
DEC. Um computador RISC, cuja velocidade ultrapassava e posicionava-se muito
mais frente da velocidade de qualquer outro computador pessoal da poca.
A histria registra o intervalo de tempo de dez anos para que os computadores RISC de 64 bits fizessem sucesso no mercado, atuando principalmente
como servidores de alta performance.
22
Sntese da aula
Nesta primeira aula, voc aprendeu detalhes esclarecedores sobre dados
analgicos e digitais. Principalmente, viajou no tempo da histria da computao, aprendendo as caractersticas dos computadores de cada gerao
que a tecnologia nos trouxe, incluindo a gerao atual, sendo capaz de se
posicionar quanto s previses sobre os rumos a serem tomados pela tecnologia vigente.
Atividades
1. Como diferenciar dado de informao?
2. Cite cinco formas variadas de se armazenar dados.
3. Voc v alguma vantagem do relgio digital sobre o analgico (considere
apenas a funcionalidade de relgio)?
4. Qual o nome da mquina criada por Blaise Pascal?
5. Qual o nome da mquina criada por Charles Babbage?
6. Por que Babbage ficou conhecido com o Pai do Computador?
7. Cite as quatro palavras-chave das quatro geraes de computadores. Por
que devemos nos lembrar delas?
8. Qual a relao da vlvula com a lgebra booleana?
9. Descreva a razo de ser do fenmeno de miniaturizao.
10. O que so computadores invisveis?
23
24
Referncias
MARULA, Marcelo; BENINI FILHO, Pio Armando. Informtica: conceitos e
aplicaes. So Paulo: rica, 2005.
TANENBAUM, Andrew S. Organizao estruturada de computadores. So
Paulo: Prentice Hall, 2007.
Na prxima aula
Agora que voc j visualizou a linha do tempo da evoluo dos computadores, na prxima aula, voc ir estudar sobre a estrutura fsica (hardware)
bsica dos computadores da atualidade. Conhecer as facetas internas dos
computadores modernos lhe dar maior embasamento e autoridade tanto
para discutir sobre os mesmos quanto para desenvolver programas que sejam
executados nessas plataformas.
Anotaes
25
26
Aula 2
Componentes bsicos
do computador
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
conhecer os principais componentes formadores do computador
moderno;
compreender, conceitualmente, o modo de execuo de instrues de
um computador.
Pr-requisitos
Chegamos segunda aula, que abordar um tema conceitual, porm no
menos importante para o curso, que recomenda fortemente o estudo da aula anterior. O estudo da aula anterior se faz importante devido ao fato de ser a base
terica para uma melhor compreenso dos componentes atuais formadores do
computador moderno, que sero estudados nesta aula. Ter conhecimentos sobre,
por exemplo, a mquina Von Neumann, o armazenamento de dados e outros importantes conceitos condio necessria para que voc possa ter o melhor proveito
desta e de outras aulas de nossa disciplina e, conseqentemente, do curso.
Introduo
Voc conhecer, nesta segunda aula, os componentes internos e externos
que formam o computador contemporneo de nossa poca. Veremos como
esses componentes se relacionam entre si para que o conceito de computador se
torne uma realidade prtica e, portanto, til para a resoluo de problemas.
27
28
29
30
2.3.3 Registradores
Os Registradores so pequenas memrias que servem para auxiliar o
processador, armazenando resultados temporrios, durante o processo de
clculo. Pense que o processador teria de se esforar muito mais para realizar
operaes sem esses registradores internos, pois, se assim fosse, teria de utilizar
a memria principal, que est mais longe, externa ao processador.
Existem registradores com funes genricas e especficas que so muito
mais rpidos do que aqueles, porm so preparados para responder a
apenas um tipo fixo de operao, enquanto os genricos, diversas, tal qual
a memria principal. Os registradores so memrias internas para uso geral,
usados pela ULA para armazenar dados (caracteres, nmeros binrios) que
esto sendo processados.
Exemplo de registradores gerais: AX, BX, usados para armazenar nmeros
binrios. Exemplo de registrador especfico: IP, Instruction Pointer, armazena
a referncia do endereo da memria principal (RAM) que contm a prxima
instruo a ser executada.
31
32
Sntese da aula
Nesta segunda aula, voc conheceu os componentes fundamentais do
computador moderno e aprendeu detalhes conceituais sobre os mesmos, alm
de entender diferenas entre arquiteturas de processadores e o modo como um
computador executa instrues.
Atividades
1. Cites os trs componentes principais de um computador moderno.
2. Associe um verbo chave para cada um dos componentes que voc citou na
primeira questo.
3. Cites os componentes que compem a CPU.
4. Descreva as funes da ULA.
5. Qual o papel da UC?
6. O que RAM e qual a sua funo?
7. Qual a diferena entre os registradores da CPU e a memria principal
(RAM)?
8. Qual a funo do IP (Instruction Pointer) no processo de se executar uma
instruo?
9. Explique a frase: Para o RISC, quanto menor, melhor.
10. Se o RISC mais rpido que o CISC, qual o motivo da Intel, tpica fabricante de processadores CISC, ser lder de mercado?
33
34
projeto do menor nmero de micro instrues possvel para alcanar, com isso,
maior performance (velocidade) de execuo.
Na atividade 10, embora o padro RISC seja mais rpido do que o padro
CISC, os processadores CISC da Intel facilitam a vida dos desenvolvedores de
software devido ao grande leque de instrues disponveis, bem como ao princpio a retro compatibilidade empregado pela empresa, que preza pelo fato
de um programa, construdo uma nica vez, poder executar em futuras verses
de seu processador CISC.
Referncia
Tanenbaum, Andrew S. Organizao estruturada de computadores. So
Paulo: Prentice Hall, 2007.
Na prxima aula
Agora que voc j compreendeu detalhes importantes sobre a arquitetura
de computadores modernos (sua estrutura fsica) e conheceu detalhes de seus
componentes internos, voc est pronto para se aprofundar na maneira como
o computador armazena suas informaes, ou seja, utilizando-se do sistema de
numerao binrio. Tambm ver a importncia da converso inter-sistemas
numricos, principalmente entre o sistema binrio (usado pelo computador) e
o sistema decimal (usado pelo homem).
Anotaes
35
36
Aula 3
Sistemas posicionais
de numerao
Objetivo
Esperamos que, ao final desta aula, voc seja capaz de:
compreender os sistemas de representao numrica de base 2, 8, 10
e 16 e suas converses.
Pr-requisitos
Para iniciar os estudos desta aula, importante conhecer a histria da
computao, estudado na primeira aula deste caderno, para que fique mais
clara a necessidade e a importncia dos sistemas posicionais de numerao.
Tambm se faz necessrio ter noes dos componentes bsicos do computador, contedos vistos na aula dois, uma vez que so eles que fazem uso de
uma das representaes que ser estudada nesta aula: o sistema binrio.
Introduo
Ao longo da evoluo humana, desde os primrdios, quantificar coisas,
objetos, rebanhos, entre outros, emergiu como uma necessidade. Assim, os
nmeros se tornaram presentes, desde cedo, na civilizao.
Entretanto a representao numrica da forma como a conhecemos hoje
no uma inveno que apareceu de um dia para o outro e nem conseqncia
de uma nica mente inventiva. A utilizao dos dedos da mo para representar
quantidade, ou seja, alguma grandeza numrica, talvez seja a primeira forma
que apareceu. Hoje em dia parece natural essa forma de representao, afinal
comum vermos crianas indicarem suas idades com os dedos da mo.
Pedras, ns em cordas, marcas em um osso e smbolos unitrios pintados
nas paredes de cavernas tambm so outras formas de representao numrica.
Imagine-se nas cavernas representando o nmero quinze nas paredes desta forma:
| | | | | | | | | | | | | | |. fcil perceber que uma tarefa exaustiva.
37
Representao
Um
II
Dois
III
Trs
IV
Quatro
Cinco
IX
Nove
Dez
Cem
CXVI
Cento e dezesseis
Quinhentos
DCXX
Seiscentos e vinte
Mil
MMVIII
, , , , , , , , ,
Note que nessa representao (ao contrrio da romana) aparece o nmero
zero, uma inveno indo-arbica das mais importantes da humanidade. Nessa
forma de representao numrica, dez smbolos diferentes so utilizados para
se representar qualquer nmero natural. Esse sistema numrico o mais amplamente conhecido e utilizado atualmente e conhecido como sistema decimal
ou sistema numrico posicional de base 10.
Alm dos sistema decimal, outros sistemas numricos se destacam e so
importantes para a computao: o binrio (sistema numrico posicional de
base 2), o octal (sistema numrico posicional de base 8) e o hexadecimal
(sistema numrico posicional de base 16).
38
Mas voc j parou para pensar e tentar descobrir o porqu da popularizao da sistema de base 10 em relao aos dos demais tipos de base?
A resposta simples. Lembra-se de que no incio da aula foi exposto que os
dedos talvez tenha sido a primeira forma de representao numrica pelo
ser humano e uma representao natural? Pois bem, a reposta est a. O
sistema decimal se destaca exatamente porque o ser humano tem 10 dedos.
Ao contrrio do que muita gente pensa, de que o sistema decimal mais
fcil de se trabalhar, os demais sistemas funcionam exatamente iguais aos de
base 10. Entretanto podemos achar mais simples o decimal exatamente por
estarmos acostumados desde criana com essa forma de representao.
Como veremos a seguir, todas as representaes posicionais so regidas
por uma nica lei: lei de formao.
Vejamos como se compoe um nmero pela lei de formao:
Nmero = an bn + an-1 bn-1 + an-2 bn-2 + ... + a0 b0
em que:
b = base do nmero (exemplo: base 2, 8, 10 e 16)
n = quantidade de algarismos - 1
an = algarismos de acordo com sua posio (da o nome sistema posicional)
Exemplo
O nmero 1982 no sistema decimal composto por 1 milhar, 9 centenas,
8 dezenas e 2 unidades.
1000 + 900 + 80 + 2 = 1982
Esse nmero pode ser decomposto tambm da seguinte maneira:
1982 = 1000 + 900 + 80 + 2
39
40
Bits
Denominao
4
8
16
Nibble
Byte
Word
Lmpada
de 128
watts
Lmpada
de 64
watts
Lmpada
de 32
watts
Lmpada
de 16
watts
Lmpada
de 8
watts
Lmpada
de 4
watts
Lmpada
de 2
watts
Lmpada
de 1
watts
Lmpada
de 128
watts
Lmpada
de 64
watts
Lmpada
de 32
watts
Lmpada
de 16
watts
Lmpada
de 8
watts
Lmpada
de 4
watts
Lmpada
de 2
watts
Lmpada
de 1
watts
41
42
Exemplo
O nmero A29F no sistema hexadecimal, de acordo com a lei de formao,
composto da seguinte forma:
A29F = Ax163 + 2x162 + 9x161 + Fx160
Base 2
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
Base 8
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
Base 16
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
43
Faz-se necessrio acrescentar que, assim como no sistema decimal, adicionando-se zeros esquerda de um nmero em qualquer outra base, seu valor
no alterado.
Exemplos
(11011)2:
b = 2 (base do nmero)
n = 5 1 = 5 (quantidade de algarismos 1)
1x24 + 1x23 + 0x22 + 1x21 + 1x20
16 + 8 + 0 + 2 + 1 = (27)10
(3D9)16:
b = 16 (base do nmero)
n = 3 1 = 2 (quantidade de algarismos 1)
3x162 + Dx161 + 9x160
3x162 + 13x161 + 9x160
768 + 208 + 9 = (985)10
44
Exemplo
(125)10 : ( ? )2
125 2 = 62 e resto = 1
62 2 = 31 e resto = 0
31 2 = 15 e resto = 1
15 2 = 7 e resto = 1
7 2 = 3 e resto = 1
3 2 = 1 e resto = 1
1 < 2 (base desejada)
62
31
15
sentido da leitura
(125)10 = (1111101)2
45
0101
0100
1011
46
Exemplo
(1010011011)2
001
010
011
011
101
100
011
101
100
011
Encontrado o binrio, realiza-se a converso da base 2
para a base 16.
0001 0110 0011
1
47
0001
1111
0100
1011
Parte inteira
Parte fracionria
em que:
b = base do nmero (exemplo: base 2, 8, 10 e 16).
n = quantidade de algarismos da parte inteira 1.
an = algarismos de acordo com sua posio.
m = quantidade de algarismos da parte fracionria.
Vejamos alguns exemplos de converso de nmeros fracionrios de outras
bases para a base 10.
a) Base 2 para base 10
1101,0112 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 + 0 x 2-1 + 1 x 2-2 + 1 x 2-3
48
parte fracionria:
0,25
0,50
x 2
x2
0,50
1,0
0,0 FINAL
7,42710 = 111,012
parte fracionria:
0,4 x 2 = 0,8
0,8 x 2 = 1,6
Repetio
0,6 x 2 = 1,2
0,2 x 2 = 0,4
0,4 x 2 = 1,8
6,410 = 110,01100110011001100110...2
49
0,2 x 8 = 1,6
0, 6 x 8 = 4,8
0,8 x 8 = 6,4
0,4 x 8 = 3,2
0,2 x 8 = 1,6
Sntese da aula
O ser humano desde sempre teve a necessidade de quantificar coisas, por
isso a importncia de sistemas numricos. Alm disso, com as representaes
numricas torna-se possvel realizar tarefas antes complexas de forma trivial.
Dentre as vrias formas de representaes, destacam-se a decimal (com dez
smbolos de representaes), a binria (com dois smbolos) amplamente
utilizada nos computadores, a octal (com oito smbolos) e a hexadecimal (com
dezesseis smbolos).
Diante disso, foi explicado durante a aula como se realizar converses
entre essas quatro formas de representao, que obedecem a uma nica
lei: a lei de formao. Basicamente, a lei de formao atribui pesos para
as posies de cada algarismo de um nmero (idia de sistema posicional).
Por fim, foi apresentado como se representar nmeros fracionrios nas bases
2, 8 e 16.
50
Atividades
1. Realize a converso dos nmeros a seguir de acordo com as bases
indicadas.
a) (F46A)16 = ( ? )10
c) (1001101)2 = ( ? )16
b) (295)10 = ( ? )2
d) (1A42)16 = ( ? )8
e) (765)8 = ( ? )10
g) (101,001)2 = ( ? )10
f) (1024)10 = ( ? )16
h) (B1,5)16 = ( ? )10
51
Referncias
GATES, Bill. A estrada do futuro. So Paulo: Companhia das Letras, 1995.
IDOETA, Ivan V.; CAPUANO, Francisco G. Elementos de eletrnica digital.
28. ed. So Paulo: rica, 1998.
LOURENO, Antonio C.; CRUZ, Eduardo C. A.; FERREIRA, Sabrina R.;
CHOUERI JNIOR, Salomo. Circuitos digitais. So Paulo: rica, 1996.
WEBER, Raul F. Fundamentos de arquitetura de computadores. 3. ed. Porto
Alegre: Sagra Luzzatto, 2004.
Na prxima aula
Estudaremos as operaes aritmticas no sistema binrio e, assim, daremos
continuidade ao que foi visto nesta aula, mas em uma abordagem de operaes matemticas.
Anotaes
52
Aula 4
Operaes aritmticas no
sistema binrio de numerao
Objetivo
Esperamos que, ao final desta aula, voc seja capaz de:
realizar as operaes aritmticas no sistema binrio de numerao
utilizando nmeros inteiros e de ponto flutuante.
Pr-requisitos
Para iniciarmos os estudos sobre operaes aritmticas no sistema binrio
de numerao, de suma importncia o conhecimento dos sistemas posicionais de numerao, vistos na aula 3. O sistema binrio um dos sistemas
posicionais de numerao, por isso a necessidade de estar familiarizado com
esse tipo de sistema numrico.
Introduo
O sistema binrio um sistema de numerao posicional representado, em
que todos os nmero so representados pelo conjunto de caracteres formados
apenas por dois smbolos, 0 (zero) e 1 (um).
Os computadores digitais trabalham internamente com esse tipo de sistema,
que tambm so denominamos como bits e podem representar qualquer tipo de
nmero armazenado na memria. Esses nmeros podem representar inteiros,
ponto flutuante, negativos ou positivos.
A manipulao desses nmeros por meio de aritmtica simples e por meio
de aritmtica de ponto-flutuante realizada utilizando algoritmos diversos, os
quais sero apresentados durante esta aula.
53
o sistema binrio o mais adequado devido facilidade de implementao via hardware dos smbolos que representam esse sistema por meio de
circuitos lgicos.
No sistema binrio, as operaes aritmticas podem ser estendidas diretamente do mecanismo de clculo utilizado no sistema decimal, que mais
comum para os seres humanos.
Complemento de 1
Complemento de 2
11100110
00011001
00011010
10100010
01011101
01011110
00100100
11011011
11011100
54
Primeiro operando
Segundo operando
Resultado da adio
0, e vai 1
6=
+7=
13 =
Figura 1: Operao de adio com carries ocorrendo antes do bit mais significativo
(vai um)
10 =
+7=
17 =
15 =
-6=
9=
1*
55
1
1
0
1
0
1, vai 1 para ser subtrado no
dgito seguinte
1
0
14 =
7 =
7=
7 = 00111
2 = 00010
56
Multiplicando
Multiplicador
X
+
+
+
Segundo
operando
Resultado da
multiplicao
Uma observao importante a respeito da multiplicao de nmeros binrios que os nmeros de bits do produto final maior do que o nmero de
bits do multiplicando ou do multiplicador, como fica evidente na figura 4. Alm
disso, a multiplicao tambm precisa tratar a ocorrncia do overflow.
Castro (2005), levando em considerao os dgitos binrios 0 e 1,
diz que temos apenas duas possibilidades de escolha, a cada passo da
multiplicao:
coloque uma cpia do multiplicando no lugar apropriado, se o dgito
do multiplicador for igual a 1;
coloque 0 no lugar apropriado, se o dgito do multiplicador for igual a 0.
Considerando isso, Castro (2005) diz que necessrio desenvolver um
algoritmo em hardware que seja eficiente para realizar a multiplicao.
Um mtodo elegante de multiplicar nmeros com sinal recebeu o nome de
Algoritmo de Booth. O Algoritmo de Booth funciona com base em que a partir
do momento que voc pode adicionar ou subtrair nmeros binrios, voc pode
chegar a um produto qualquer.
57
58
59
Sntese da aula
Nesta aula, vimos que as operaes aritmticas sobre nmeros binrios
obedecem sempre aos mesmos princpios das operaes em outras bases.
Pudemos conhecer tambm alguns algoritmos que possibilitam que as operaes fiquem mais velozes quando implementadas em hardware. Tambm
vimos, na aula 4, que a aritmtica de ponto flutuante bem mais complicada
e ajuda a entender melhor as dificuldades de desenvolvimento de circuitos
que suportam aritmtica de ponto-flutuante. As operaes aritmticas sobre
nmeros binrios so de extrema importncia para os computadores digitais
atuais, pois somente com uma aritmtica simples e eficiente podemos chegar a
unidades lgicas e aritmticas aceitveis.
Atividade
1. Desenvolva as operaes aritmticas envolvendo os seguintes nmeros
binrios:
60
a) 01110011 + 01110101
b) 11010001 00101111
c) 11011010 * 11010
d) 11011000 / 10
Comentrio da atividade
Na atividade 1, trabalharemos a capacidade de o aluno desenvolver as operaes aritmticas bsicas utilizando nmeros binrios. Os resultados das operaes
so os seguintes, utilizando o mtodo de resoluo proposto na lio 4:
a)
(vai um)
+
b)
(empresta)
c)
0
0
+
+
+
d)
61
Referncias
CASTRO, F. C. C. Eletrnica digital. Porto Alegre: PUC-RS, 2002.
CASTRO, M. C. S. Organizao de computadores I. Rio de Janeiro: Universidade
do Estado do Rio de Janeiro, 2005.
Mano, R. Representao de dados. Disponvel em: <http://wwwusers.rdc.
puc-rio.br/rmano/rd6aritr.html>. Acesso em: 20 dez. 2007.
VIANA, G. V. R. Padro IEEE 754 para aritmtica binria de ponto flutuante.
Fortaleza: Universidade Estadual do Cear, 2005.
Na prxima aula
Veremos as classificaes de software que podem servir para diversos fins.
Anotaes
62
Aula 5
Classificao de software
Objetivo
Esperamos que, ao final desta aula, voc seja capaz de:
identificar e compreender as caractersticas quanto classificao dos
softwares livres e proprietrios, bem como suas sub-divises.
Pr-requisitos
Para iniciarmos os estudos sobre as classificaes de software, interessante que tenha sido absorvido todo o contedo das aulas anteriores. Isso dar
embasamento terico para que possam ser interpretados todos os conceitos
e caractersticas que sero considerados nesta aula e so de extrema importncia para o mercado.
Introduo
A criao de software, ou como conhecido popularmente programa
para computador, consiste em uma rea da cincia da computao muito
importante, em que considerada a criao de produtos de software por
meio da utilizao de ferramentas de desenvolvimento, pagas ou no, alm
de considerar todo um patrimnio intelectual e ideolgico de seus criadores
(MOLINARI, 2007).
Esse tema, por sua vez, apresenta diversas vertentes e discusses que
devem ser consideradas quanto distribuio e comercializao de um
produto de software. Entre tais vertentes, temos a criao de software
proprietrio ou livre, que consiste no ponto central de muitas discusses.
Assim, nesta aula, sero apresentados os principais conceitos e caractersticas que o auxiliaro a compreender tais classificaes de software.
Bons estudos!
63
64
Saiba mais
Quando se trabalha com um tema como a classificao de software, importante se
conhecer em sua essncia todos os conceitos que a diferenciam, e assim formar opinio
consiste sobre o assunto. Ento, sugerimos que sejam realizadas leituras a materiais
complementares, como os existentes no site da Free Software Foundation (<http://www.
gnu.org>) ou no site da Open Source Iniciative (<http://www.opensource.org>).
Como pode ser visto, o acesso ao cdigo fonte um dos pilares para a
caracterizao de um software livre. Isso no significa que o mesmo no seja
comercial, muito pelo contrrio. A idia de se ganhar dinheiro com software
livre no est na venda de produtos fechados, mas sim na venda de servios
de qualidade que esto, a todo momento, expostos, sendo colocados prova
e ao julgamento da comunidade (MOLINARI, 2007).
Um software, quando se diz livre, geralmente est regido pela GPL
(General Public License), que consiste na designao da licena para software
livre criada por Richard Stallman no final da dcada de 1980, regido pela
Free Software Foundation, sendo utilizado por grandes projetos, como o do
sistema operacional Linux (FSF, 2007). Assim, esta vertente da classificao de
software pode ser divida em duas sub-divises, que so: Open Source e Livre
Comercial, tratados a seguir.
5.1.1 Open Souce
Esse tipo de software segue todos os preceitos citados at aqui nesta aula,
no qual o cdigo fonte distribudo e permitido que esse seja modificado e
redistribudo, levando em considerao os princpios de liberdade do software
original. Isso auxilia na preveno de sua utilizao sem fins comerciais, estando
65
sujeitos aos termos da licena GPL. Alguns exemplos de softwares open source
so o kernel do sistema operacional Linux e o projeto Web Apache TomCat,
que podem ser alterados e redistribudos (FSF, 2007).
5.1.2 Livre comercial
Como j mencionado nesta aula, o software livre no exclui a possibilidade de sua utilizao comercialmente, sendo distribudo mediante o pagamento. Porm isso, comercialmente, comprometido, uma vez que est sob
as regras impostas pela GPL no qual, apesar do software ser comercializado, pode ser livremente distribudo sem nus algum (FSF, 2007). Em sua
maioria, esse tipo de software trabalha com a idia de agregao de valores
que o tornem diferenciado da verso open source, como o empacotamento
e venda com outros softwares integrados, ou como a venda de hadware
que se comportem melhor devido sua compatibilidade com o software.
Diversos exemplos podem ser citados, como as distribuies Linux Red Hat e
Mandrake. Nesse tipo de software, ainda preservada a caracterstica de
cdigo fonte aberto.
Podem ser encontrados diversos softwares gratuitos, porm sem a disponibilizao do cdigo fonte, o que compromete a caracterizao deste como
software livre, devido aos aspectos de liberdade, alterao e redistribuio,
fazendo com que indiretamente o usurio fique preso, de alguma maneira, a
empresas. So eles:
1. verses Freeware: nesse caso, o software gratuito, podendo ser utilizado sem limite de tempo e poder ser copiado e distribudo livremente.
Exemplo: Java Sun, Microsoft Internet Explorer;
2. verses Adware: so gratuitos, porm utilizam publicidade, no caso
banners ou links de patrocinadores, que custeiam o desenvolvimento
e manuteno em troca de marketing, e podem ser copiados e distribudos livremente. Assim como o freeware, no disponibilizado o
cdigo fonte. Exemplo: Adobe Acrobat.
Ento, lembre-se: nem sempre um software gratuito livre e, no caso,
quando um determinado software livre no o caso de deixar completamente de ser comercial. Conforme apresentado at aqui nesta aula, fica
claro que existem diversas possibilidades quanto explorao das caractersticas do software livre, seja em sua mais forma mais essencial ou mesmo
comercialmente. Porm existem pessoas e empresas que pregam a utilizao
66
67
Saiba mais
Alguns softwares se utilizam de licenas um tanto quanto diferentes, como a
Postcardware e a StampwareCardware, no qual o desenvolvedor exige o feedback
por parte dos usurios da ferramenta por meio de postais ou cartas para s ento
liberar o registro do software.
68
Sntese da aula
Nesta aula, apresentamos as caractersticas e conceitos relacionados a
classificao de software. Esses podem ser divididos em duas vertentes: a
livre e a considerada proprietrio. Alm disso, conhecemos nomenclaturas
comuns a classificao dos softwares como: freeware, adware, shareware,
demo e trial. Cada uma destas distribuies caracteriza o software quanto s
suas limitaes e tempo de utilizao. Finalizando, so apresentadas algumas
classificaes menos conhecidas, como a Shared Source.
69
Atividades
1. Diversos aspectos e caractersticas podem ser utilizados para que um
software seja considerado livre. Porm, com certeza, os quatro princpios
de liberdades exigidos pela GPL (General Public Lincense) so os mais
conceituados. Quais so eles e em que consistem? Justifique sua resposta.
2. Quanto aos softwares proprietrios, podem ser distribudos como verses
de teste. Dessa forma, qual a diferena entre as verses shareware e trial?
Referncias
FSF, Free Software Foundation. Free Software. Disponvel em: <http://www.
gnu.org>. Acesso em: 20 dez. 2007.
MOLINARI, Leonardo. Gerncia de configurao: tcnicas e prticas no desenvolvimento do software. Florianpolis: Visual Books, 2007.
OSI, Open Source Iniciative. Open Source. Disponvel em: <http://www.opensource.org>. Acesso em: 20 dez. 2007.
Na prxima aula
Veremos os conceitos relacionados a noes bsicas tanto de redes de
computadores quanto de banco de dados.
70
Aula 6
Noes bsicas de redes de
computadores e banco de dados
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
compreender quais so os tipos de redes existentes e como elas so
interligadas entre si;
entender o funcionamento de um banco de dados e como ele til
para manipular informaes.
Pr-requisitos
Para o aprendizado desta aula, no h necessidade de conhecimentos
anteriores, apenas que voc tenha fora de vontade para conhecer novas
tecnologias e procure saber mais sobre o que ser falado aqui em sites e livros
relacionados com essas duas reas.
Introduo
A interligao de computadores ou uma rede de computadores se faz
necessrio pelo fato de que h uma grande facilidade em trocar informaes
sem a necessidade de mdias como disquete, CD ou DVD, como tambm
compartilhar informaes e aplicativos. Os bancos de dados tm como finalidade gerar uma determinada informao por meio de um agrupamento logicamente coerente de dados.
Organizaes com centenas de escritrios dispersos por uma extensa
rea geogrfica podem, com um simples apertar de um boto, examinar o
status atual de suas filiais mais remotas. medida que cresce nossa capacidade de colher, processar e distribuir informaes torna-se ainda maior a
demanda por formas de processamento de informaes ainda mais sofisticadas (TANENBAUM, 2004).
71
anel um tipo de ligao fechada em que os computadores so interligados em seqncia na forma de um anel. As informaes trocadas entre
os computadores so preferencialmente unidirecionais, mas podem ser
em qualquer direo. Um grande problema desse tipo de topologia de
rede que, se um falhar, toda comunicao pode ser comprometida;
72
Saiba mais
Tanto na ligao ponto-a-ponto como na multiponto podemos ter trs tipos de comunicaes usadas no enlace dos dados, que so: simplex, usa apenas um dos sentidos
do enlace; a half-duplex, que utiliza os dois sentidos do enlace, mas um por vez; e a
full-duplex, que utiliza os dois sentidos do enlace simultaneamente.
Podemos observar que o meio de transmisso entre cada uma dessas interligaes de computadores diferenciado, como veremos na seo a seguir.
Saiba mais
Outro meio fsico de comunicao o ar, as chamadas redes wi-fi ou wireless como,
por exemplo, ondas de rdio digital, satlites e espectro de difuso, que tambm
podem transmitir dados a grandes distncias e em grandes velocidades.
Para que haja uma comunicao de dados entre computadores, impressoras, scanners e etc, h necessidade de alguns tipos de dispositivos para
interlig-los. Na seo a seguir, veremos alguns desses tipos.
73
Saiba mais
Na comunicao entre esses dispositivos, temos quatro tipos de envio de dados, que
so: anycast, em que a transmisso da informao enviada e distribuda ao receptor
mais prximo definido pelo roteador; broadcast, em que a transmisso da informao
enviada a muitos receptores ao mesmo tempo; multicast, em que a informao
enviada a vrios receptores simultaneamente, utilizando a melhor estratgia de roteamento; e unicast, em que a transmisso da informao feita a um nico receptor.
74
analistas de banco de dados so os projetistas, identificam a estrutura apropriada para o armazenamento dos dados, tem uma proximidade maior com os usurio finais para poder moldar o banco de
dados, de acordo com o que necessitam;
75
Saiba mais
Hoje, no mercado, temos muitos SGBDs de grande poder de armazenamento e segurana, como, por exemplo, MySQL, PostgreSQL, Oracle, SQL Server entre outros.
76
Sntese da aula
Nesta aula, vimos conceitos e caractersticas de uma rede de computadores e
banco de dados em que podemos enviar informaes de um computador para o
outro por meio de conexes de variados tipos e a longas distncias. Alm disso,
podemos guardar essas informaes e manipul-las de acordo com as permisses
de cada usurio por meio de um SGBD.
77
Atividades
1. Em que consiste uma rede de computadores?
2. Qual a finalidade de um SGBD (Sistema de Gerenciamento de Banco de
Dados)?
Referncias
RAMALHO, J. A. SQL: a linguagem dos bancos de dados. 2. ed. So Paulo:
Berkeley, 1999.
SOUSA, L. B. Redes de computadores: dados, voz e imagem. So Paulo: rica.
1999.
TANENBAUM, A. S. Redes de computadores. 4. ed. Rio de Janeiro: LTC, 2004.
WIKIPEDIA. Banco de Dados. Disponvel em: <http://pt.wikipedia.org/wiki/
Banco_de_dados>. Acesso em: 20 dez. 2007.
______. Broadcast. Disponvel em: <http://pt.wikipedia.org/wiki/Broadcast>.
Acesso em: 20 dez. 2007.
______. Rede de computadores. Disponvel em: <http://pt.wikipedia.org/wiki/
Rede_de_computadores>. Acesso em: 20 dez. 2007.
Na prxima aula
Veremos os tipos de profisses, as definies e como o profissional de
cada uma delas.
Anotaes
78
Aula 7
Profisses na rea
de Informtica
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
conhecer as reas de formao profissional mais comuns na rea de
informtica e ainda a situao da regulamentao das profisses;
entender as diferenas entre os diversos tipos de profissionais na rea
de informtica.
Pr-requisitos
O entendimento das aulas anteriores o tornar capaz de identificar os diversos
segmentos atuais da rea de Informtica, tais como: comunicao de dados, construo de softwares, arquitetura fsica de componentes de informtica, entre outros.
Introduo
Atualmente, com o avano dirio dos recursos computacionais, a informtica est inserida nos mais diversos segmentos produtivos da sociedade. Junto
a essa realidade, soma-se o fato de os computadores terem se tornado, hoje,
um acessrio to comum quanto uma TV ou geladeira nos lares, estabelecimentos comerciais e industriais.
Diante desses fatores, torna-se indispensvel a contratao de profissionais cada vez mais especializados para atender esses diversos segmentos,
formando, assim, vrias reas de atuao profissional dentro da informtica.
Anteriormente, esse campo era formado por apenas quatro tipos de profissionais: analista, programador, operador e digitador.
Conheceremos, nesta aula, um pouco mais sobre as principais profisses
na rea de informtica e ainda como anda a situao da regulamentao do
registro profissional para todos que j atuam ou pretendem atuar nesta rea.
79
80
Saiba mais
Nos Estados Unidos, no existe diferena entre Engenharia da Computao e Cincia
da Computao, diferentemente do Brasil, onde a diferena bsica que Cincia da
Computao um curso mais prtico, enquanto Engenharia de Computao um
pouco mais amplo, com contedos de Engenharia Eltrica, Engenharia de Sistemas e
mesmo de Cincia da Computao.
Responsvel pela manuteno e refinamento de bancos de dados corporativos. A formao recomendada para esta rea a graduao em
Engenharia da Computao, Processamento de Dados, Informtica.
81
b) Administrador de Redes
c) Analista de Segurana
Responsvel pela segurana da rede (equipamento, sistemas operacionais de servidores e clientes e programas utilizados). Tambm monitora
tentativas de invaso e uso indevido de recursos da rede, alm de definir
e manter as regras de uso dos recursos computacionais da empresa.
d) Analista de Sistemas
Profissional responsvel por desenvolver e implementar sistemas de automao e tempo real, assim como sistemas embutidos, fazendo uso de
aplicaes de baixo nvel e de conhecimentos sobre sistemas de redes.
Suas principais atividades dependem da empresa onde o profissional
atue, ele pode estar envolvido com diversas reas, tais como anlise de
requisitos e projetos, implementao de sistemas, entre outras.
f) Analista de Suporte
82
g) Auditor de Sistemas
h) Engenheiro de Hardware
Profissional responsvel por conceber projetos hardware para computadores, telecomunicaes e outros tipos de equipamento eletrnico,
com destaque para sistemas especialistas dedicados (controladores
programveis como sistemas de distribuio de eletricidade, infra-estrutura de telefonia celular etc.).
i) Engenheiro de Software
83
j) Engenheiro de Telecomunicaes
Profissional que monta, opera e faz manuteno de redes. Na rea
comercial, cria e adapta servios de telecomunicao para clientes
corporativos. Em planejamento, o profissional cria as redes que
podero dar suporte aos servios obtidos pela rea comercial.
Suas principais atividades so a de manter em funcionamento o equipamento, impedindo interrupes no sistema; especificar o hardware que
vai construir a rede; fazer contato com fornecedores para adquirir novas
tecnologias; e relacionar as necessidades dos clientes com as tecnologias existentes, propondo novos servios e novas composies de rede.
k) Programador Web
Profissional responsvel pelo desenvolvimento de aplicaes para Web.
Suas principais atividades so o desenvolvimento em HTML, aplicaes para Internet e intranets, sites de comrcio eletrnico.
l) Tcnico em Hardware
Profissional que faz a manuteno da estrutura de hardware de uma
empresa, identificando a causa de problemas nas mquinas (se so de
hardware ou de software), e que soluciona os fsicos.
Suas principais atividades envolvem a manuteno de computadores,
com diagnstico e reparo das falhas - encaminhando as de software
para os profissionais encarregados.
m) Webdesigner
Responsvel pela criao e adaptao de identidade visual, manuteno de pginas, digitalizao e tratamento de imagens, diagramao, animaes e confeco de banners.
n) Webdeveloper
Profissional especializado em desenvolvimento para Web. Utiliza o
Webdevelopment como uma especializao da programao normal,
ajustando-a s caractersticas prprias da Web e, assim, tornando-a diferente do desenvolvimento de sistemas para desktop ou cliente-servidor.
Suas principais atividades envolvem a anlise de requisitos dos clientes,
anlise de sistema, modelagem de banco de dados, estimativas de
tempo de desenvolvimento, codificao e testes.
84
o) Webmaster
Responsvel pela estrutura, desenvolvimento, design e gerncia de
sites, gerencia uma equipe envolvida com o ambiente Web, desde a
infra-estrutura at o desenvolvimento de sites completos.
85
Sntese da aula
Nesta aula, voc aprendeu que a formao acadmica na rea de Informtica
possui diversos nomes, com currculos similares e tambm com formaes diferenciadas, devido ao fato de no possuir um rgo que regulamente as atividades
dos profissionais na rea de informtica. Como exemplo disso, temos os cursos
de Informtica, Anlise de Sistemas, Cincia da Computao, Engenharia de
Computao, Engenharia de Informao, Sistemas de Informao entre outros.
Voc conheceu alguns cursos de formao de nvel superior mais comuns
na maioria das universidades pblicas e particulares que so os de:
Engenharia da Computao: trata de assuntos relativos hardware
(mquinas) que trabalham isoladamente (PCs) ou que compem uma
rede (ou sistema) de comunicaes;
Bacharel em Cincia da Computao: tem seu foco principalmente no
desenvolvimento dos programas (softwares);
Analista de Sistemas: atua na concepo, na aplicao e na manuteno dos programas.
86
87
Atividades
1. Analise as assertivas e destaque, entre as atribuies de um profissional que
obteve a formao em Engenharia da Computao, qual(is) podemos citar.
I. Trata de assuntos relativos hardware (mquinas) que trabalham isoladamente (PCs) ou que compem uma rede (ou sistema) de comunicaes.
II. Responsvel pela arquitetura da rede e da organizao fsica de computadores e perifricos. Projeta e constri alguns tipos de hardware.
III. Atua na concepo, na aplicao e na manuteno dos programas e
aplicativos.
IV. Planejamento e administrao da rede de computadores de uma
empresa tambm esto entre suas atribuies.
88
Um Administrador de Banco de Dados o responsvel pela manuteno e refinamento de bancos de dados corporativos.
89
90
91
Referncias
ALMEIDA, Marcus Garcia de. Fundamentos de Informtica. 2. ed. Rio de
Janeiro: Brasport, 2002.
BROOKSHEAR, J. Glenn. Cincia da Computao: uma viso abrangente.
7.ed. Porto Alegre: Bookman, 2004.
MARULA, Marcelo; BENINI FILHO, Pio Armando. Informtica: conceitos e
aplicaes. So Paulo: rica, 2005.
POLLONI. Enrico G. F.; FEDELI, Ricardo Daniel; PERES, Fernando Eduardo.
Introduo Cincia da Computao. So Paulo: Thomson, 2003.
VELLOSO, Fernando de Castro. Informtica: conceitos bsicos. 7. ed. Rio de
Janeiro: Campus, 2004.
Anotaes
92
EQUIPE UNITINS
Organizao de Contedos Acadmicos
Silvio Costa Sampaio
Coordenao Editorial
Maria Lourdes F. G. Aires
Assessoria Editorial
Darlene Teixeira Castro
Assessoria Produo Grfica
Katia Gomes da Silva
Reviso Didtico-Pedaggica
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Lingstico-Textual
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Digital
Sibele Letcia Rodrigues de Oliveira Biazotto
Projeto Grfico
Douglas Donizeti Soares
Irenides Teixeira
Katia Gomes da Silva
Ilustrao
Geuvar S. de Oliveira
Capa
Igor Flvio Souza
Crditos
Equipe Fael
Coordenao Editorial
Leocila Aparecida Vieira
Assessoria Editorial
William Marlos da Costa
Reviso
Juliana Camargo Horning
Lisiane Marcele dos Santos
Programao Visual e Diagramao
Denise Pires Pierin
Ktia Cristina Oliveira dos Santos
Rodrigo Santos
Sandro Niemicz
William Marlos da Costa
Apresentao
EMENTA
Programao em Linguagem C. Estruturas de dados homogneas e heterogneas. Modularizao de Algoritmos.
Plano de Ensino
OBJETIVOS
Apresentar a Linguagem C, os operadores e estruturas de controle.
Compreender estruturas de dados homogneas e heterogneas.
CONTEDO PROGRAMTICO
Introduo Programao em Linguagem C
Operadores
Estruturas de controle
Modularizao em C: uso de Funes
Estruturas de dados homogneas (vetores e matrizes) e heterogneas
(estruturas)
Ponteiros e alocao dinmica
Arquivos
BIBLIOGRAFIA
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: Algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
DEITEL, H. M.; DEITEL, P. J. Como programar em C. Rio de Janeiro: LTC, 1999.
MIZRAHI, V. V. Treinamento em Linguagem C: Mdulos 1 e 2. So Paulo:
Makron Books do Brasil, 1993.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
ZIVIANI, Nivio. Projeto de Algoritmos: com implementaes em Pascal e C.
2.ed. So Paulo: Thomson, 2004.
97
Aula 1
Introduo programao em
Linguagem C
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
conhecer os conceitos fundamentais da Linguagem C;
construir um programa bsico em C.
Pr-requisitos
Para atingir os objetivos desta aula, voc deve possuir conhecimento prvio
de tcnicas de criao de algoritmos, particularmente de pseudocdigo. Isso
necessrio, na verdade, para todas as aulas que compem este caderno, pois
ao longo do texto so feitas referncias aos conceitos estudados nas aulas de
Lgica para Programao. Procure sempre relacionar os contedos estudados
nesta disciplina com as outras.
Introduo
O histrico da Linguagem C tem incio em 1970, quando o programador
Denis Ritchie desenha uma linguagem, nos laboratrios da Bell Telephones,
Inc., chamada simplesmente de B. No ano de 1978, Brian Kerningham
junta-se a Ritchie para aprimorar a Linguagem B e acabam gerando uma
nova verso. nova verso foi dado o nome de C. Por suas caractersticas
de portabilidade e estruturao mais compacta, a Linguagem C se torna
popular entre os programadores.
Em meados de 1980, a linguagem C padronizada pelo American
National Standard Institute: surge o ANSI C. Em 1990, a empresa de software
Borland International Co., fabricante de compiladores profissionais, escolhe o
C e o Pascal como linguagens de trabalho para o seu Integrated Development
Enviroment (Ambiente Integrado de Desenvolvimento): surge o Turbo C.
99
100
Caracteres vlidos:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
+-*/\=|&!?#%(){}[]_.,:<>
auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while
101
102
103
float a,b;
104
Tipo de dado
Tamanho
(em bits)
Capacidade de representao
Char
-127 a 127
unsigned char
0 a 255
signed char
-127 a 127
Int
16
-32767 a 32767
unsigned int
16
0 a 65.535
signed int
16
-32767 a 32767
short int
16
-32767 a 32767
16
0 a 65.535
16
-32767 a 32767
long int
32
-2.147.483.647 a 2.147.483.647
32
-2.147.483.647 a 2.147.483.647
32
0 a 4.294.967.295
Float
32
Double
64
80
long double
Fonte: Feitosa (2004).
105
Exemplos
a \0 \t
5 2345 -17
234000 -509876
120 -12
50000 35678
0.0 23.7 -12.3e-10
12546354334.0 - 0.0000034236556
106
Cdigo
Significado
\b
Retrocesso (back)
\f
\n
\r
\t
Aspas
Apstrofo
\0
Nulo (0 em decimal)
\\
Barra invertida
\v
Tabulao vertical
\a
\N
\xN
Em linguagem C:
float x,y;
int valor;
int main()
{valor = x + y;
}
107
108
fgets (STRING,TAMANHO,STREAM),
em que:
STRING a varivel onde a string ser armazenada;
TAMANHO o tamanho mximo da string;
STREAM de onde os caracteres sero lidos, para ler do teclado o
valor padro para isso stdin.
1.1.8.4 Exibindo uma string
Voc pode exibir uma string usando a funo printf ou a funo puts(). Elas
fazem parte do arquivo de cabealho stdio.h.
A sintaxe de printf para a exibir uma string :
printf(%s,STRING);
A sintaxe de puts :
puts(string)
1.1.8.5 Sada formatada (printf)
A sada formatada feita utilizando a funo printf vista anteriormente. A
sintaxe geral do comando printf :
printf (<string de formatao>,<lista de variveis>),
em que:
o <string de formatao> deve estar sempre entre parnteses e deve
conter um conjunto de especificadores de formato que diro ao
computador como o dado dever ser formatado. Os especificadores
de formato em C so os listados a seguir.
Especificador
%d
%o
%x
%X
%u
%ld
%f
%c
%e
%E
Formato
inteiro
inteiro em formato octal
inteiro em formato hexadecimal
unsigned int
long int
float
char
float em formato exponencial
109
Especificador
Formato
%g
int n = 0;
int x;
}
Nesse exemplo, voc pode reconhecer os principais elementos de um
programa em C:
um cabealho contendo as diretivas de compilador: nesse caso, a diretiva
#include <stdio.h> diz ao compilador para incluir a biblioteca stdio;
110
um bloco de instrues principal: nesse caso, todo o bloco delimitado pelo par de chaves;
documentao do programa: em nosso exemplo, temos o comentrio /* Programa exemplo */.
Sntese da aula
Nesta aula, apresentamos os conceitos fundamentais da programao
em Linguagem C. Abordamos os componentes principais de um programa
nessa linguagem, como a declarao de variveis, os tipos de dados, entre
outros. A partir do contedo estudado nesta aula, j possvel codificar
programas simples usando a Linguagem C.
Atividades
1. Com base em seus conhecimentos sobre a Linguagem C, indique a
alternativa incorreta.
a) Todo programa em C deve possuir uma funo main().
b) A diretiva #include <stdio.h> indica ao compilador C que as
declaraes de funes da biblioteca stdio devem ser usadas
nesse programa.
c) 0x123 representa uma constante em hexadecimal.
d) Considerando a declarao anterior int valor;, a instruo printf
(%s, valor) deve ser usada para imprimir a varivel valor.
e) A funo main() pode receber parmetros da linha de comando.
2. Construa um programa bsico em C que leia uma varivel inteira, outra
real do teclado e imprima o valor digitado.
111
int var1;
float var2;
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
DEITEL, H. M.; DEITEL, P. J. Como programar em C. Rio de Janeiro: LTC, 1999.
DIAS NETO, Samuel. Linguagem C: intermedirio. [S.l.: s.n.]: [200-]. Disponvel em:
<http://br.geocities.com/sdiasneto/c_int/printf.htm>. Acesso em: 20 dez. 2007.
FEITOSA, Eduardo Luzeiro. Introduo aos Algoritmos. Manaus: Instituto de Cincias
Exatas. Departamento de Cincia da Computao, 2004. Disponvel em: <http://
www.dcc.fua.br/~efeitosa/Ensino/AED_2004_2/Apostila_C.doc>. Acesso em:
20 dez. 2007.
MIZRAHI, V. V. Treinamento em Linguagem C: Mdulos 1 e 2. So Paulo: Makron
Books do Brasil, 1993.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
112
Na prxima aula
Estudaremos os operadores disponveis na Linguagem C. O conhecimento
dos operadores de uma linguagem permite a construo de expresses nessa
linguagem. E as expresses representam a maior parte das instrues em um
programa de computador.
Anotaes
113
114
Aula 2
Operadores
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
reconhecer e utilizar os principais operadores usados na Linguagem C;
construir corretamente expresses aritmticas e lgicas nessa linguagem.
Pr-requisitos
Como principal pr-requisito para esta aula, fundamental que voc tenha
entendido os conceitos apresentados na aula anterior, principalmente o que
diz respeito declarao e uso de variveis e constantes. Se houver dvidas,
retomes seus estudos e consulte a web-tutoria.
Introduo
Operadores so elementos funcionais que atuam sobre termos e produzem
um determinado resultado.
Os operadores so, na prtica, instrues especiais pelas quais incrementamos, decrementamos, comparamos e avaliamos dados dentro de um
programa de computador.
A Linguagem C oferece um conjunto de operadores que permitem construir
expresses aritmticas, relacionais, lgicas e de atribuio. Nesta aula, estudaremos cada um desses operadores.
2.1 Aritmticos
Os operadores aritmticos so usados para desenvolver operaes matemticas. Observe, na listagem a seguir, os operadores aritmticos permitidos
na Linguagem C.
115
Operador
+
*
/
%
++
--
Ao
Soma (inteira e ponto flutuante)
Subtrao ou troca de sinal (inteira e ponto flutuante)
Multiplicao (inteira e ponto flutuante)
Diviso (inteira e ponto flutuante)
Resto de diviso (de inteiros)
Incremento (inteiro e ponto flutuante)
Decremento (inteiro e ponto flutuante)
2.2 Lgicos
Na Linguagem C, no h definio do tipo de dado lgico, assim a interpretao do verdadeiro lgico dada por qualquer valor maior do que zero.
Obviamente, o falso lgico qualquer valor menor ou igual a zero. Portanto, os
operadores lgicos iro operar sobre quaisquer variveis, dando uma resposta
correspondente condio examinada.
Os operadores lgicos em C so os listados a seguir.
Operador
&&
||
!
Ao
E lgico (do ingls AND)
OU lgico (do ingls OR)
NO lgico (do ingls NOT)
2.3 Relacionais
Os operadores relacionais so utilizados para comparar os valores de
duas expresses em um programa, retornando um valor lgico.
116
Ao
Maior que
Menor que
Maior ou igual a
Menor ou igual a
Igual a
Diferente de ou no igual a
2.5 Atribuio
O operador de atribuio serve para, como o prprio nome j sugere, atribuir
um valor para a varivel. No C, utilizado o caractere igual (=) para representar
117
valor *= 10;
2.6 Expresses
Expresses so combinaes de variveis, constantes e operadores.
Quando montamos expresses, temos de levar em considerao a ordem com
que os operadores so executados. O C define a seguinte hierarquia entre os
seus operadores:
118
Maior precedncia
( ) [ ] ->
! ~ ++ -- . unrio) (cast)
*/%
<< >>
<<= >>=
== !=
&
&&
||
Menor precedncia
= += -= *= /=
Ao
E lgico (do ingls AND)
OU lgico (do ingls OR)
NO lgico (do ingls NOT)
OU-exclusivo lgico (no ingls XOR)
Deslocamento de bits direita
Deslocamento de bits esquerda
119
int valor;
float resultado;
valor=10;
resultado=(float)num/3;
printf (%f,resultado);
}
Nesse exemplo, vemos uma diviso entre uma varivel do tipo inteira
(valor) por uma constante tambm inteira (o valor 3). Como visto anteriormente, uma diviso entre dois valores inteiros no C sempre retorna
outro valor inteiro. Isso faria com que o programa d o resultado incorreto igual a 3.00, ainda que a sada esteja formatada para imprimir
um tipo float (%f). Para resolver esse caso, foi utilizado o modificador
(float) para dizer ao compilador que o resultado da expresso dever
ser retornado como um float. Com isso, o programa ir imprimir o valor
correto igual a 3.3333....
120
Operador
&
Ao
o endereo de
Ex.: na instruo x = &y, a varivel x ir receber o
endereo da varivel y. Esse operador ser discutido na
aula sobre Ponteiros.
o contedo de
Ex.: na instruo x = *y, a varivel x ir receber o
contedo do endereo de memria apontado pela
varivel y. Esse operador ser discutido na aula sobre
Ponteiros.
[]
(operador ponto)
elemento da estrutura ou campo.
Esse operador ser discutido na aula sobre Estruturas.
->
(operador seta)
elemento da estrutura apontada por.
Esse operador ser discutido na aula sobre Estruturas.
Sntese da aula
Nesta aula, foram apresentados os principais operadores disponveis
na Linguagem C. muito importante que voc conhea e saiba utilizar esses
operadores na construo de expresses nessa linguagem.
Atividades
1. Supondo o seguinte trecho de cdigo:
int x, y;
x = 35;
y = x/2;
incorreto afirmar que, aps a execuo desse trecho:
a) a expresso (x+y) retorna um valor inteiro;
121
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: Algoritmos, Pascal e
C/C++. So Paulo: Pearson Prentice Hall, 2003.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
122
Na prxima aula
Dando continuidade ao estudo da estrutura de um programa em Linguagem
C, na prxima aula vamos estudar as principais estruturas de controle dessa
linguagem. Essa aula ser de fundamental importncia para voc entender
como o fluxo de instrues pode ser controlado em um programa em C.
Anotaes
123
124
Aula 3
Estruturas de controle
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
compreender a importncia de cada estrutura de controle disponvel
na Linguagem C;
construir programas em C usando as diferentes estruturas abordadas.
Pr-requisitos
Pelo fato de o estudo da programao ser um processo acumulativo, como
pr-requisito para esta aula necessrio que voc tenha realmente entendido
os conceitos discutidos nas aulas anteriores. Lembre-se de que a web-tutoria
est sempre sua disposio!
Introduo
As estruturas de controle so a essncia de qualquer linguagem de programao, uma vez que determinam a seqncia pela qual as instrues de um
programa so executadas.
Nesta aula, estudaremos a sintaxe de cada uma dessas estruturas na
Linguagem C.
125
#include <stdio.h>
VAR N: Inteiro;
int main( ) {
INICIO
int N;
LEIA N;
SE N>0 ENTAO
if (N > 0)
IMPRIMA N;
FIM SE
FIM
126
#include <stdio.h>
VAR N: Inteiro;
int N;
INICIO
LEIA N;
if (N > 0)
SE N>0 ENTAO
IMPRIMA N;
SENAO
IMPRIMA O valor de N
deve ser positivo;
else
FIM SE
printf (O valor de N deve ser
positivo);
FIM
int main( ) {
}
}
#include <stdio.h>
VAR N: Inteiro;
int main() {
INICIO
int N;
LEIA N;
SE N>0 ENTAO
if (N > 0)
SE N MOD 2 = 0 ENTAO
IMPRIMA esse valor par;
SENAO
IMPRIMA esse valor mpar
FIM SE
SENAO
if (N % 2 == 0) {
}
else
127
128
switch (varivel)
{
case exp_1 :
case exp_2 : instr_2; break;
...
default : ... break;
}
Nesse exemplo, executada a instr_2, se a varivel tiver o valor exp_1
ou exp_2. uma boa prtica usar break aps o ltimo caso, embora tal no
seja necessrio.
A diferena fundamental entre o switch e o if que o switch apenas testa
igualdade, enquanto a expresso condicional do if pode ser de qualquer tipo.
A instruo switch bastante usada para processar comandos a partir do
teclado, tais como a seleo de opes em um menu. Por exemplo, podemos
ter uma funo que devolva um valor que corresponde opo selecionada
(SIMES, 2004).
void menu()
{
char ch;
printf( Ler ficheiro - 1\n );
printf( Gravar ficheiro - 2\n );
printf( Eliminar ficha - 3\n );
printf( Adicionar ficha - 4\n );
printf(Escolha opo: );
scanf(%d,&ch);
switch (ch)
{
case 1 : ler_fich(); break;
case 2 : grava_fich(); break;
case 3 : apaga_ficha(); break;
case 4 : adiciona_ficha(); break;
default :
printf(Opo invlida!);break;
}
}
129
<bloco de instrues>;
<bloco de instrues>;
Normalmente, expr_1 uma inicializao (com uma instruo de atribuio), expr_2 uma condio (expresso relacional), que testa a varivel de
controle do ciclo para verificar quando deve sair do ciclo, e expr_3 um incremento que define como a varivel de controle do ciclo deve ser alterada cada
vez que o ciclo executado. O ciclo for ser executado enquanto a condio
for verdadeira. Quando a condio se tornar falsa, o programa prossegue na
instruo a seguir ao ciclo.
130
131
do
{
<bloco de instrues>;
}
while (expresso);
A instruo executada e depois avaliada a expresso. Se for verdadeira, a instruo
executada novamente, e assim sucessivamente, at que a expresso seja falsa (valor nulo).
O ciclo do..while anlogo ao ciclo REPITA..ATE estudado em Lgica para
Programao.
O programa seguinte l inteiros do teclado at que seja introduzido um nmero no
superior a 100.
#include <stdio.h>
void main( )
{
int n;
do {
scanf(%d,&n);
} while (n>100);
Sntese da aula
Nesta aula, foram discutidas as principais estruturas de controle da LinguagemC,
tanto as estruturas que permitem desvio condicional quanto aquelas que permitem
laos repetitivos.
Atividades
1. Indique a opo que apresenta um trecho de cdigo equivalente ao mostrado a
seguir.
if (tecla == 1) {
Funcao1 ( );
} else if (tecla == 2) {
Funcao2 ( );
} else if (tecla == 3) {
Funcao3 ( );
} else {
printf (\nOpo invalida!);
}
132
a)
c)
if (tecla == 1) {
switch (tecla) {
Funcao1 ( );
case 1: Funcao1 ( );
break;
if (tecla == 2) {
case 2: Funcao2 ( );
Funcao2 ( );
break;
case 3: Funcao3 ( );
break;
if (tecla == 3) {
Funcao3 ( );
}
printf (\nOpo invalida!);
d)
b)
if (tecla == 1) {
Funcao1 ( );
switch (tecla) {
case 1: Funcao1 ( );
if (tecla == 2) {
case 2: Funcao2 ( );
Funcao2 ( );
case 3: Funcao3 ( );
if (tecla == 3) {
Funcao3 ( );
}
}
}
printf (\nOpo invalida!);
133
opes (a) e (b), que apresentam solues com ifs. Com isso, voc deveria ter
avaliado as opes restantes e ter percebido que a opo correta a opo (c),
pois esta apresenta a construo correta de mltipla escolha usando o comando
switch..case; a opo (d), apesar de usar esse comando, possui uma construo
sem o uso do comando break e, como voc estudou nesta aula, isso faz com
que, independentemente do caso para o qual a condio de teste seja idntica,
sero executados TODOS os comandos a seguir dessa opo; e, como voc
encontrou uma alternativa correta, a opo (e) , naturalmente, incorreta.
Na atividade 2, usando as estruturas que foram estudadas nesta aula,
voc deveria estar apto a responder a essa atividade de diferentes formas.
Deveria ter notado que a soluo envolve estruturas de seleo e repetio.
Uma soluo possvel mostrada a seguir com uso da estrutura de repetio
do..while. Cabe ressaltar que essa soluo pode ser reescrita com o uso da
estrutura while. Assim como no teste da operao escolhida, voc poderia usar
tanto o aninhamento de ifs quanto a estrutura switch..case.
#include <stdio.h>
int main( )
{
float valor1, valor2;
char operacao;
do {
printf (\nDigite o primeiro valor: );
scanf (%f, &valor1);
if (valor1 != 0)
{
printf (\nDigite o segundo valor: );
scanf (%f, &valor2);
printf (\nEscolha a operacao [+, -, * ou / ]: );
scanf (%c, &operacao);
if (operacao == +) {
printf (\Resultado: %f, (valor1+valor2));
} else if (operacao == -) {
printf (\Resultado: %f, (valor1+valor2));
} else if (operacao == *) {
printf (\Resultado: %f, (valor1+valor2));
} else if (operacao == /) {
printf (\Resultado: %f, (valor1+valor2));
}
}
} while (valor1 > 0);
}
134
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: Algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
SIMES, Carlos. Programao em Linguagem C. [S.l.]: Escola Superior de
Tecnologia de Viseu. Instituto Politcnico de Viseu, 2004. Disponvel em:
<http://www.estv.ipv.pt/PaginasPessoais/fmorgado/EDados/Sebenta_C.
pdf>. Acesso em: 20 dez. 2007.
ZIVIANI, Nivio. Projeto de algoritmos: com implementaes em Pascal e C.
2.ed. So Paulo: Thomson, 2004.
Na prxima aula
Em C tudo implementado na forma de funo. Assim, podemos dizer que
a linguagem C nos fora a modularizar o cdigo. Na prxima aula, estudaremos esse elemento principal programao em C: as funes.
Anotaes
135
136
Aula 4
Modularizao em C: uso de
Funes
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
entender os conceitos relacionados ao uso de funes na Linguagem C;
implementar funes nessa linguagem.
Pr-requisitos
Para atingir os objetivos declarados para esta aula, fundamental que
voc j saiba codificar um programa em C usando variveis e as principais
estruturas de controle. Isso muito importante para que voc possa entender
os exemplos discutidos nesta aula.
Introduo
Em C, qualquer instruo a ser executada deve ser parte de uma
funo. Entre os programadores comum ouvir a frase em C tudo
funo. Assim, para que voc possa programar com propriedade em C
imperativo que voc conhea essa estrutura e seus detalhes. Nesta aula,
abordaremos esse tema.
4.1 Funes
Uma funo em C declarada usando a seguinte sintaxe geral:
TIPO NOME (PARMETROS)
{
CORPO
}
Onde:
137
TIPO o tipo de valor retornado pela funo. Se nada for especificado, o compilador considera que ser retornado um valor
inteiro;
NOME o nome da funo;
PARMETROS a lista das variveis que recebem os argumentos
quando a funo chamada. Deve incluir o tipo e nome de cada
varivel. Sua sintaxe : (tipo1 varivel1, tipo2 varivel2, ...,
tipo3 varivelN);
CORPO onde esto as instrues da funo.
A seguir, mostrado um exemplo de uma funo. A funo soma()
possui dois parmetros do tipo inteiro e retorna uma valor tambm inteiro,
representando a soma dos dois parmetros.
int soma(int x,int y)
{
int resultado;
resultado = x + y;
return(resultado);
}
138
/* Argumentos e parmetros */
#include <stdio.h>
int soma(int a, int b) /* a e b so os parmetros da funo soma */
{
int resultado;
resultado = a + b;
return(resultado);
}
int main()
{
printf(A soma entre 5 e 2 %d\n,soma(5,2));
/* No comando printf a funo soma chamada com os argumentos 5 e 2 */
return(0);
}
Os tipos dos argumentos devem ser compatveis com os tipos dos parmetros.
Voc encontrar tambm referncia aos parmetros formais e parmetros
reais. Os parmetros formais so os parmetros propriamente ditos, enquanto
que os parmetros reais so os argumentos.
139
int resultado;
resultado = a + b;
return(resultado);
}
/* Com declarao moderna */
int soma(int a, int b)
{
int resultado;
resultado = a + b;
return(resultado);
}
Atualmente, utiliza-se a forma moderna, porm, em programas mais
antigos, voc encontrar a forma clssica.
140
141
int resultado;
resultado = a + b;
return(resultado);
Sntese da aula
Nesta aula, voc estudou o principal conceito da Linguagem C as
Funes. O domnio desse conceito garante uma programao otimizada.
Foram discutidos tambm os aspectos bsicos da declarao e uso de funes,
como os parmetros e os argumentos.
Atividades
1. Suponha que voc precise criar uma funo calculaAreaTrapezio para
calcular a rea de um trapzio. A rea A do trapzio o produto da
mdia aritmtica entre as medidas das bases pela medida da altura, isto
, A=((base1+base2)*h)/2. Nessas condies, indique a alternativa que
apresenta a declarao correta para essa funo.
a) int calculaAreaTrapezio (float base1, float base2, int altura)
b) float calculaAreaTrapezio (float base1, float base2, float altura)
c) int calculaAreaTrapezio (float base1, float base2, float altura)
d) int calculaAreaTrapezio (int base1, int base2, int altura)
e) float calculaAreaTrapezio (float base, int altura)
2. Implemente, em Linguagem C, a funo float porcento (parcela: float,
porcentagem: float), que recebe como parmetros dois valores: um representa o valor parcela e outro representando a porcentagem a ser aplicada
sobre o valor, por exemplo 4,5 (representando 4,5%). Essa funo dever
retornar o valor correspondente porcentagem passada como argumento.
3. Em uma das atividades da aula anterior, foi apresentado o seguinte
problema: implemente um programa, em Linguagem C, que implemente as
principais operaes aritmticas de um calculadora simples. O programa
dever ler dois valores reais e a operao a partir do teclado e, em
142
seguida, imprimir o resultado correspondente operao. Esse procedimento dever ser repetido at que seja informado o valor 0 como primeiro
valor da operao.
E foi comentada a seguinte soluo:
#include <stdio.h>
int main( )
{
float valor1, valor2;
char operacao;
do {
if (valor1 != 0)
if (operacao == +) {
} else if (operacao == -) {
} else if (operacao == *) {
} else if (operacao == /) {
143
float resultado;
resultado = parcela*(porcentagem/100);
return (resultado);
}
Voc poderia ainda usar seus conhecimentos sobre expresses a fim de
reduzir o nmero de instrues em sua funo. Lembre-se de que, quanto menos
instrues, mais rpido o seu programa executar. A soluo melhorada
mostrada a seguir.
float porcento (float parcela, float porcentagem)
{
return (parcela*(porcentagem/100));
}
Na atividade 3, voc deveria ter criado no cdigo uma funo para cada
operao aritmtica (soma, subtrao, multiplicao e diviso) que recebe dois
parmetros do tipo float e retorne o resultado da operao o que implica
em definir a funo como sendo tambm do tipo float. E, na impresso do
resultado, voc deveria invocar cada funo correspondente sua operao,
passando como argumentos os valores das variveis valor1 e valor2. O cdigo
resultante mostrado a seguir.
144
#include <stdio.h>
float soma (float a, float b) {
return (a+b);
}
float subtrai (float a, float b) {
return (a-b);
}
float multiplica (float a, float b) {
return (a*b);
}
float divide (float a, float b) {
return (a/b);
}
int main()
{
char operacao;
do {
if (valor1 != 0)
if (operacao == +) {
} else if (operacao == -) {
} else if (operacao == *) {
} else if (operacao == /) {
}
}
} while (valor1 > 0);
145
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: Algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
Na prxima aula
Estudaremos as estruturas de dados, que permitem manipular grandes
conjuntos de dados de maneira mais fcil, vetores, matrizes e estruturas (structs).
Anotaes
146
Aula 5
Estruturas de dados homogneas
(vetores e matrizes) e
heterogneas (estruturas)
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
utilizar vetores e matrizes na construo de programas em C;
utilizar estruturas (structs) na construo de programas nessa linguagem.
Pr-requisitos
Para esta aula, fundamental que voc conhea os conceitos que envolvem
o uso de variveis e tipos de dados na Linguagem C. Se voc ainda tem dvidas
sobre esse assunto, recorra ao seu caderno e reveja o contedo estudado. No
fique com dvidas!
Introduo
Em C, existem tipos especiais de variveis que permitem manipular mais
de um tipo de dados ao mesmo tempo. O uso dessas estruturas permite a manipulao de grandes conjuntos de dados, alm de diminuir a complexidade do
programa e as possibilidades de erros.
Nesta aula, estudaremos as principais estruturas disponveis na Linguagem
C: vetores, matrizes e estruturas.
147
148
int notas[5]
Ao trabalhar com array, voc deve ter cuidado e no acessar uma posio
fora dos limites do array. Por exemplo, se for definido o array:
float x[10];
e tentarmos acessar o elemento x[12], o compilador no d erro, mas o
programa vai se comportar de um modo imprevisvel.
5.1.2 Matrizes
Uma matriz em C um array com mais de uma dimenso. Por exemplo:
int a[3][4];
define um array de 2 dimenses, como se fosse uma tabela com 3 linhas e
4 colunas. Cada elemento da tabela do tipo inteiro. No se esquea de que,
na Linguagem C, os arrays comeam na posio zero.
149
150
varivel,
nova
estrutura
criada
(struct
Voc tambm pode declarar a varivel logo aps a declarao da estrutura com uma sintaxe do tipo:
struct produto
{
int codigo;
char nome[50];
int quantidade;
float valor_compra;
float valor_venda;
float lucro;
char obs[200];
} item;
O exemplo acima declara a varivel item como sendo do tipo struct
produto logo aps a definio dessa estrutura.
5.2.3 Acessando os campos de uma estrutura
Na sintaxe para acessar e manipular campos de estruturas usado o
operador ponto seguindo a seguinte sintaxe:
NOME_DA_ESTRUTURA.CAMPO
Observe o cdigo a seguir para entender melhor como manipular os
campos de uma varivel do tipo estrutura.
#include <stdio.h>
/* criando um novo tipo de dado produto */
struct produto
{
int codigo;
char nome[50];
int quantidade;
float valor_compra;
float valor_venda;
};
151
int main()
{
struct produto item; /* declarando uma varivel item do tipo struct
produto */
printf(Preenchendo a varivel \item\\n);
printf(Item............:);
fgets(item.nome,50,stdin);
printf(Cdigo..........:);
scanf(%d,&item.codigo);
printf(Quantidade......:);
scanf(%d,&item.quantidade);
printf(Valor de compra.:);
scanf(%f,&item.valor_compra);
printf(Valor de revenda:);
scanf(%f,&item.valor_venda);
printf(\n);
printf(Exibindo os dados\n);
printf(Cdigo..........:%d\n,item.codigo);
printf(Item............:%s,item.nome);
printf(Quantidade......:%d\n,item.quantidade);
printf(Valor de compra.:%.2f\n,item.valor_compra);
printf(Valor de revenda:%.2f\n,item.valor_venda);
return(0);
}
5.2.4 Acessando uma estrutura com ponteiros
Estudaremos ponteiros na aula seguinte. Entretanto apresentaremos desde
j como manipular uma varivel do tipo ponteiro para uma estrutura.
Para acessar uma estrutura usando ponteiros, voc pode usar duas
sintaxes:
(*NOME_DA_ESTRUTURA).CAMPO
ou
NOME_DA_ESTRUTURA->CAMPO
Observe o uso de estruturas com ponteiros no exemplo a seguir:
152
#include <stdio.h>
struct registro
{
char nome[30];
int idade;
};
altera_estrutura1(struct registro *ficha)
{
(*ficha).idade -= 10;
}
altera_estrutura2(struct registro *ficha)
{
ficha->idade += 20;
}
int main()
{
fgets(ficha.nome,30,stdin);
scanf(%d,&ficha.idade);
printf(Nome: %s,ficha.nome);
printf(Idade: %d.\n,ficha.idade);
altera_estrutura1(&ficha);
printf(Nome: %s,ficha.nome);
printf(Idade: %d.\n,ficha.idade);
altera_estrutura2(&ficha);
printf(Nome: %s,ficha.nome);
printf(Idade: %d.\n,ficha.idade);
return(0);
153
Sntese da aula
Nesta aula, voc estudou os elementos da Linguagem C que permitem
manipular grandes conjuntos de dados, nomeadamente: vetores, matrizes e
estruturas (structs). A diferena bsica entre eles est na possibilidade ou no
de agrupar dados de diferentes tipos. Vetores e matrizes, por exemplo, s
permitem manipular dados de um mesmo tipo. J as estruturas permitem manipular, ao mesmo tempo, dados de diferentes tipos.
Atividades
1. Sobre o trecho de cdigo a seguir:
#include <stdio.h>
int main()
{
int numeros[10];
int i;
numeros[0] = 1;
numeros[i] = numeros[i-1]*2;
}
}
}
correto afirmar que a sada que esse programa produz :
a) 1, 2, 4, 6, 8, 10, 12, 14, 16, 18
b) 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
c) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
d) 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
e) 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
2. Implemente um programa que leia os dados de um conjunto de cinco alunos
e armazene esses dados em um vetor de estrutura. Dever ser armazenado
o nome, a nota do primeiro bimestre e a nota do segundo bimestre. Aps
a leitura dos dados de todos os alunos, o programa dever imprimir, para
cada, aluno a sua mdia semestral (mdia aritmtica das notas bimestrais).
154
char nome[80];
float nota1;
float nota2;
};
int main()
{
int i;
155
Referncias
MIZRAHI, V. V. Treinamento em Linguagem C: Mdulos 1 e 2. So Paulo:
Makron Books do Brasil, 1993.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
ZIVIANI, Nivio. Projeto de Algoritmos: com implementaes em Pascal e C.
2.ed. So Paulo: Thomson, 2004.
Na prxima aula
Estudaremos uma das caractersticas mais poderosas da Linguagem C o uso
de ponteiros. Os ponteiros permitem que o programador manipule as posies de
memria de modo mais controlado do que com o simples uso de variveis.
Anotaes
156
Aula 6
Ponteiros e alocao dinmica
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
entender o conceito e uso de ponteiros na programao em C;
utilizar ponteiros na construo de programas em C.
Pr-requisitos
Alm do conhecimento sobre variveis e tipos de dados em linguagem C,
para esta aula desejvel que voc conhea, ainda que um pouco, sobre a
organizao de memria de um computador. Caso tenha dvidas quanto a
esse assunto, procure a web-tutoria!
Introduo
Um ponteiro uma varivel que permite guardar o endereo de outra
varivel. Assim, quando uma varivel contm o endereo de memria de outra
varivel, diz-se que a primeira aponta para a segunda. A figura 1 demonstra
como uma varivel desse tipo manipulada.
endereo de memria valor na memria
1000
1003
1001
1002
1003
1004
1005
1006
...
...
Figura 1. Os ponteiros em memria.
157
158
Sntese da aula
Nesta aula, foram discutidos os principais conceitos relacionados ao
uso de ponteiros na Linguagem C. Foi estudado tambm como os ponteiros
podem ser utilizados para melhorar o desempenho de programas que
precisam realizar muitos acessos memria principal.
159
Atividades
1. Com base no programa a seguir,
#include <stdio.h>
int main( ) {
int numero;
int *ptr_numero;
scanf (%d, &numero);
prt_numero = №
numero++;
numero = ++(*prt_numero);
printf (%d, numero);
}
possvel afirmar que:
a) se for digitado o valor 8, o programa ir imprimir o valor 7;
b) se for digitado o valor 13, o programa ir imprimir o valor 10;
c) se for digitado o valor 6, o programa ir imprimir o valor 6;
d) se for digitado o valor 4, o programa ir imprimir o valor 9;
e) se for digitado o valor 5, o programa ir imprimir o valor 7.
2. Por que uma varivel do tipo ponteiro deve sempre ser inicializada antes
do seu uso?
160
Nmero
*ptr_numero
prt_numero = №
=8
13
6
4
5
8
13
6
4
5
numero++;
9
14
7
5
6
9
14
7
5
6
Instruo
numero = ++(*prt_numero);
Nmero
*ptr_numero
= 10
10
15
15
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
Na prxima aula
Na ltima aula, estudaremos as principais funes disponibilizadas pela
Linguagem C para a manipulao de arquivos.
Anotaes
161
162
Aula 7
Arquivos
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
compreender o modo como a Linguagem C manipula arquivos;
usar as funes de manipulao de arquivos em seus programas.
Pr-requisitos
Para esta aula, importante que voc j seja capaz de codificar algoritmos
mais complexos na Linguagem C, usando as estruturas e conceitos discutidos
nas aulas anteriores. Isso voc conseguir se tiver resolvido todas as atividades
propostas nas aulas anteriores.
Introduo
O sistema de E/S de C utiliza o conceito de streams e arquivos. Uma stream
um dispositivo lgico que representa um arquivo ou dispositivo. A stream
independente do arquivo ou dispositivo. Devido a isso, a funo que manipula
uma stream pode escrever tanto em um arquivo no disco quanto em algum
outro dispositivo, como o monitor.
Existem dois tipos de streams: de texto e binria.
Em uma stream de texto, podem ocorrer certas tradues de acordo com
o sistema hospedeiro, ou seja, de acordo com a arquitetura do computador
que ir rodar o programa. Por exemplo, um caractere de nova linha pode ser
convertido para os caracteres retorno de carro e alimentao de linha ou um
elemento do tipo float, gravado no sistema origem com valor de 1.37, pode ser
lido com o valor de 1.36999997 no sistema hospedeiro. Devido a isso, pode
no haver uma correspondncia entre os caracteres da stream e do dispositivo
externo; a quantidade de caracteres pode no ser a mesma.
163
164
Funcionalidade
Abrir um arquivo
Fechar um arquivo
Escrever um caracter em um arquivo
Idem putc( )
Ler um caracter de um arquivo
Idem getc( )
Posicionar o ponteiro de arquivo num byte especfico
Funo
Funcionalidade
fprintf( )
fscanf( )
feof( )
ferror( )
rewind( )
remove( )
Apagar um arquivo
fflush( )
Descarregar um arquivo
fread( )
fwrite( )
Todos os prottipos dessas funes esto declaradas no arquivo de cabealho stdio.h, por isso no necessrio redeclar-las em seu programa.
Esse arquivo de cabealho define ainda trs tipos de dados: size_t, fpos_t
e FILE. Os dois primeiros so o mesmo que unsigned int (inteiro sem sinal), e o
terceiro ser discutido mais a seguir.
Esse arquivo de cabealho tambm define vrias macros. As mais importantes para a manipulao de arquivos so: NULL, EOF, FOPEN_MAX,
SEEK_SET, SEEK_CUR e SEEK_END.
NULL define um ponteiro nulo.
EOF geralmente definida como -1 e devolve esse valor quando uma
funo de entrada tenta ler alm do final do arquivo.
FOPEN_MAX define um valor inteiro que determina o nmero de arquivos
que podem ser abertos ao mesmo tempo.
SEEK_SET, SEEK_CUR e SEEK_END so usadas com a funo fssek() para
o acesso aleatrio a um arquivo.
165
Descrio
Abre um arquivo texto para leitura.
Abre um arquivo texto para escrita. Se um arquivo com o mesmo
nome existir, ser sobrescrito.
Abre um arquivo texto para anexao. Se o arquivo no existir,
ser criado.
Abre um arquivo binrio para leitura.
Abre um arquivo binrio para escrita. Se um arquivo com o
mesmo nome existir, ser sobrescrito.
Abre um arquivo binrio para anexao. Se o arquivo no
existir, ser criado.
Abre um arquivo texto para leitura/escrita. Se o arquivo no
existir, ser criado.
wb+
ab+
166
Para abrir um arquivo texto chamado teste para escrita, voc poderia
escrever assim:
FILE *arquivo;
arquivo = fopen(teste,w);
Porm recomendvel sempre testar se o arquivo foi aberto sem problemas.
Assim, sempre que for abrir um arquivo, voc deve usar um cdigo parecido
com esse:
FILE *arquivo;
if((arquivo = fopen(teste,w)) == NULL)
{
printf(Erro ao abrir arquivo!!!\n);
exit(1);
}
Esse tipo de teste detectar algum problema, tipo disco cheio ou protegido
contra gravao, antes que seu programa tente gravar nele.
O nmero mximo de arquivos que pode ser aberto ao mesmo tempo
definido pela macro FOPEN_MAX, normalmente definida em stdio.h. Confira
se o caso do seu compilador.
167
168
169
170
Sntese da aula
Nesta aula, foram discutidos os principais conceitos relacionados com o uso
de arquivos na linguagem C.
Atividades
1. Com base nos conceitos estudados nesta aula, incorreto afirmar que:
a) a instruo FILE *fp define a varivel fp como sendo do tipo apontador
para arquivo;
b) a instruo fopen(c:\teste.dat,rw+) abre um arquivo texto para
leitura/escrita. Se o arquivo no existir, ser criado;
c) a instruo fopen(c:\teste.dat,rb) abre um arquivo binrio para leitura.
Se o arquivo no existir, a funo fopen() retornar a constante NULL;
d) as funes fread( ) e fwrite( ) operam sobre arquivos do tipo texto e binrio;
e) a funo feof() usada na manipulao de arquivos binrios para testar
quando foi alcanado o final do arquivo.
2. Escreva um programa que abra um arquivo texto, conte o nmero de
caracteres presentes nele e imprima o nmero de caracteres na tela.
171
(a) est correta, pois a instruo FILE *fp realmente usada para declarar uma
varivel do tipo ponteiro para arquivo; a opo (b) tambm est correta, pois
o modo rw+ indica ao computador que o arquivo deve ser aberto em modo
texto e para leitura/escrita. O sinal de + indica que, se o arquivo no existir,
ele dever ser criado; a opo (c) tambm est correta, pois o modo rb indica
ao computador que o arquivo deve ser aberto em modo binrio e somente para
leitura; e a opo (e), por sua vez, tambm est correta, pois a funo feof( )
usada em arquivos binrios para evitar que durante a leitura de algum valor,
esse seja confundido com a constante EOF, que indica o final do arquivo.
Na atividade 2, voc deveria ter usado a seguinte abordagem: ler o nome do
arquivo, abrir o arquivo indicado com a funo fopen( ), ler o arquivo caractere a
caractere at que seja alcanado o final do arquivo. Como ser necessrio indicar
o total de caracteres lidos do arquivo, voc deveria ter criado uma varivel para
fazer o papel de acumulador. A soluo aqui comentada mostrada a seguir.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *arq;
char nome_arquivo[80];
char caracter;
int total=0;
printf (\nDigite o nome do arquivo: );
scanf (%s,nome_arquivo);
if((arq = fopen(nome_arquivo,rb)) == NULL)
{
printf(\nErro ao abrir o arquivo original.\n\n);
exit(1);
}
while(!feof(arq))
{
caracter = getc(arq);
if(!feof(arq))
total++;
}
fclose(arq);
printf(\nForam contados %d no arquivo %s, total,nome_arquivo);
return(0);
}
172
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. Fundamentos da programao de computadores: Algoritmos, Pascal e C/
C++. So Paulo: Pearson Prentice Hall, 2003.
DIAS NETO, Samuel. Linguagem C: intermedirio. [S.l.: s.n.]: [200-]. Disponvel
em: <http://br.geocities.com/sdiasneto/c_int/arquivos.htm>. Acesso em: 20
dez. 2007.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
Anotaes
173
174
EQUIPE UNITINS
Organizao de Contedos Acadmicos
Silvio Costa Sampaio
Coordenao Editorial
Maria Lourdes F. G. Aires
Assessoria Editorial
Darlene Teixeira Castro
Assessoria Produo Grfica
Katia Gomes da Silva
Reviso Didtico-Pedaggica
Marilda Piccolo
Reviso Lingstico-Textual
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Digital
Sibele Letcia Rodrigues de Oliveira Biazotto
Projeto Grfico
Douglas Donizeti Soares
Irenides Teixeira
Katia Gomes da Silva
Ilustrao
Geuvar S. de Oliveira
Capa
Igor Flvio Souza
Crditos
EQUIPE FAEL
Coordenao Editorial
Leocila Aparecida Vieira
Assessoria Editorial
William Marlos da Costa
Reviso
Juliana Camargo Horning
Lisiane Marcele dos Santos
Programao Visual e Diagramao
Denise Pires Pierin
Ktia Cristina Oliveira dos Santos
Rodrigo Santos
Sandro Niemicz
William Marlos da Costa
Apresentao
sempre ser o item mais importante, pois nos permite dominar as principais
EMENTA
Representao do pensamento lgico. Fundamentos de Algoritmos. Variveis
e constantes. Programao estruturada. Estruturas de seleo e repetio.
Plano de Ensino
OBJETIVOS
Compreender os fundamentos da Lgica para Programao e os
conceitos de variveis e constantes.
Construir e representar Algoritmos.
CONTEDO PROGRAMTICO
Fundamentos da Lgica para Programao
Representao de Algoritmo
Dados: variveis e constantes
Operadores e expresses
Arquivos
Estrutura de controle
Modularizao
BIBLIOGRAFIA BSICA
CARBONI, Irenice de Ftima. Lgica de Programao. So Paulo: Thomson,
2003.
FORBELLONE, Andr Luiz Villar; EBERSPACHER, Henri Frederico. Lgica de
programao: a construo de algoritmos e estruturas de dados. 3. ed. So
Paulo: Makron Books, 2005.
LOPES, Anita; GARCIA, Guto. Introduo Programao: 500 algoritmos
resolvidos. Rio de Janeiro: Campus, 2002.
MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos:
lgica para desenvolvimento de Programao de Computadores. 16. ed. So
Paulo: rica, 2005.
ORTH, Afonso Incio. Algoritmos e programao com resumo das Linguagens
Pascal e C. Porto Alegre: AIO, 2001.
SOUZA, Marco Antonio Furlan de; GOMES, Marcelo Marques; SOARES,
Marcio Vieira. Algoritmos e Lgica de Programao. So Paulo: Thomson,
2005.
BIBLIOGRAFIA COMPLEMENTAR
ASCENCIO, Ana Fernanda Gomes. Lgica de Programao com Pascal. So
Paulo: Makron Books, 1999.
179
Aula 1
Fundamentos da
Lgica para Programao
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
entender como a lgica formal e matemtica aplicada na Programao
de Computadores;
compreender a importncia da construo de algoritmos computacionais.
Pr-requisitos
Por tratar de questes relacionadas ao raciocnio natural do ser humano,
esta aula no apresenta pr-requisitos formais, entretanto cabe ressaltar que
ser pr-requisito para as demais aulas deste caderno. Para voc alcanar o
objetivo proposto, ser necessrio apenas disciplinar o seu modo de pensar,
evitando extrapolar os limites de abstrao, ou seja, focar apenas o problema
a ser resolvido, uma vez que esse material dar a voc embasamento terico
para compreender como o pensamento lgico pode ser representado e reproduzido em um algoritmo computacional.
Introduo
Sem dvida, o computador uma das maiores invenes do homem e tem
se mostrado uma ferramenta verstil, rpida e segura para a manipulao de
informaes.
Para muitos essa inveno responsvel pela intensificao da mecanizao e descobertas cientficas na vida moderna. Esta afirmao d um
carter autnomo ao computador, como se o mesmo fizesse tudo sozinho.
Entretanto cabe esclarecer que o computador uma grande ferramenta de
trabalho, servindo de auxlio para as mais diversas atividades. Porm esta
mquina no criativa e nem inteligente, na verdade, apenas reproduz o que
lhe ordenado por meio de seus programas de computador.
181
182
Este raciocnio formalmente correto, uma vez que a concluso est corretamente deduzida. Mas a concluso falsa, uma vez que falsa a primeira
proposio (Nenhum homem sabe danar). Estamos perante um raciocnio
que tem validade formal, mas no tem validade material. Logo temos que
concluir que falso.
Desde a sua criao o estudo da Lgica tem registrado enormes aperfeioamentos, sobretudo a partir de meados do sculo XIX. costume dividir-se
a sua histria em trs perodos: Perodo Clssico, Perodo Moderno e Perodo
Contemporneo.
A Lgica Matemtica (desenvolvida no Perodo Moderno) exerceu
uma influncia decisiva em muitos domnios, principalmente na Eletrnica,
Ciberntica, Informtica e Inteligncia Artificial.
Mesmo com essa multiplicidade de conceitos, a Lgica pode ser vista
como uma cincia que procura encontrar as leis em relao s quais o nosso
pensamento deve obedecer para que possa ser considerado vlido.
No contexto da informtica, a Lgica de Programao a tcnica de
encadear pensamentos para atingir determinado objetivo previamente definido. Ou seja, a tcnica que nos permite expressar o que deve ser feito e em
que ordem para que a soluo seja alcanada.
183
1.3 Algoritmos
A construo de algoritmos o primeiro passo para a Programao de
Computadores. uma das tarefas mais complexas da programao de computadores, mas tambm uma das mais desafiadoras e empolgantes.
Um algoritmo pode ser definido como uma seqncia de passos que visa
a atingir um objetivo definido. Assim podemos dizer que um algoritmo a
organizao do pensamento para a soluo de um problema, portanto uma
representao da lgica.
Um algoritmo, na Linguagem da Programao de computadores, representa uma seqncia de instrues que o computador deve seguir a fim de
atingir um objetivo definido. Cada instruo , na verdade, uma informao
que indica ao computador o que deve ser feito. J o programa consiste na codificao precisa do algoritmo em uma linguagem de programao especfica.
184
185
186
b)
c)
d)
suba na escada;
e)
f)
187
srio repetir os passos e e f. Da surge a seguinte questo: pode ser que a outra
lmpada tambm no funcione, sendo necessrio repetir mais uma vez esta
seqncia de passos. Ento, quando deveremos parar de repetir?
Para toda repetio em um algoritmo devemos estabelecer uma condio
de parada, ou seja, um limite para a quantidade de vezes em que os passos
devero ser repetidos. Caso no seja estabelecido esta condio de parada
ocorre o que chamamos de lao infinito mais conhecido por sua designao
em ingls loop infinito no qual os passos se repetem indefinidamente.
No caso do nosso algoritmo, uma condio de parada adequada seria repetir
enquanto a lmpada no acender. Assim o algoritmo ficaria da seguinte forma:
VIII. ligue o interruptor;
IX. se a lmpada no acender, ento:
a) pegue uma escada;
b) posicione-a embaixo da lmpada;
c) busque uma lmpada nova;
d) suba na escada;
e) retire a lmpada velha;
f) coloque a lmpada nova;
g) enquanto a lmpada no acender:
1. retire a lmpada;
2. coloque outra lmpada.
O passo g apresenta o que chamamos de fluxo repetitivo no qual um
conjunto de passos pode se repetir n vezes.
188
ENTRADAS
PROCESSAMENTO
SADA
Resultados do
Dados iniciais
processamento ou
Regras do
para a resoluo
soluo para o
problema
do problema
problema
Exemplo: Multiplicao de dois nmeros inteiros
A = 25
RESULTADO = A*B
75
B=3
189
5. definio dos processamentos a serem executados a fim de transformar as entradas em sadas: nesse ponto deve ser determinada
a seqncia de aes ou instrues que leve soluo do problema,
respeitando-se as regras j definidas;
6. construo do algoritmo: utilizando uma das formas de representao
de algoritmos que iremos estudas na aula 2;
7. teste da soluo: execuo de todas as aes do algoritmo, seguindo
o fluxo estabelecido para verificar se ele est realmente gerando os
resultados esperados ou detectar possveis erros em sua descrio.
Ao seguir esses passos, garantiremos que o algoritmo desenvolvido ser
executado corretamente pelo computador.
Sntese da aula
Nesta aula, foram discutidos os princpios da programao para computadores. Foi apresentado o conceito de Lgica para Programao que , em
essncia, uma extenso da lgica matemtica.
Um dos conceitos mais importantes discutidos o conceito de algoritmo.
por meio do algoritmo que informamos ao computador o que dever ser feito.
Vale lembrar que o encadeamento das instrues que compem o algoritmo
de fundamental importncia para seu correto funcionamento.
Atividades
1. Leve em considerao os estudos que realizamos nesta aula e marque com
V (Verdadeiro) ou F (Falso) as alternativas a seguir.
(
190
191
Na prxima aula
Dando continuidade ao estudo da Lgica para Programao, estudaremos
como a lgica de programao, em sua forma algortmica, pode ser representada. Estudaremos os mtodos mais utilizados na prtica: Descrio Narrativa,
Fluxograma e Pseudocdigo.
Anotaes
192
Aula 2
Formas de representao
de um algoritmo
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
representar um algoritmo usando Descrio Narrativa;
representar um algoritmo usando Fluxograma;
representar um algoritmo usando Pseudocdigo.
Pr-requisitos
Uma vez que esta aula trata da representao de um algoritmo necessrio
que voc tenha entendido o conceito de algoritmo apresentado na aula anterior.
Caso haja dvidas, recorra ao material e entre em contato com a web-tutoria.
Introduo
Com o passar do tempo e de estudos dos algoritmos, foram desenvolvidas
inmeras formas de se representar um algoritmo de modo a facilitar o seu
entendimento e, mais tarde, a sua traduo para uma linguagem de programao especfica. Entre as formas de representao de algoritmos mais conhecidas, podemos citar a Descrio Narrativa, o Fluxograma Convencional e o
Pseudocdigo - tambm conhecido como Linguagem Estruturada ou Portugol.
Essas trs formas sero objeto de estudo desta aula.
Uma representao clara e fcil de ser seguida facilita o desenvolvimento,
depurao (correo de erros) e subseqente transformao do algoritmo em
um programa de computador.
O domnio dessas formas de representao de algoritmos de fundamental importncia tanto para Analistas de Sistemas que so responsveis por
mapear as necessidades dos clientes para a forma algortmica, quanto para
Programadores, que iro transformar os algoritmos em programas.
193
Incio de Programa
Inicio
Leia os valores a e b
Se a e b forem maior do que
Leia a
zero
Calcula o valor da mdia a
Leia b
partir da
frmula [mdia = (a + b)/2]
Imprime o valor da mdia
a>0 e b>0
Seno
SIM
Imprime Os valores devem
ser positivos
Mdia = (a+b)/2
Fim do programa
Linguagem
Narrativa
mdia
NO
Os valores
devem ser
positivos
Incio de Programa
Leia a,b
Se a > 0 e b > 0 ento
Calcula o valor da mdia a
partir da
mdia = (a + b)/2
Imprime o valor da mdia
Seno
Imprime Os valores devem
ser positivos
Fim se
Fim do programa
Pseudocdigo
Fim
Fluxograma
Figura 1. Exemplo de algoritmo representado nas trs formas mais comuns
194
Esta forma de representao a mesma utilizada em algoritmos no-computacionais, como receitas culinrias. Dessa forma as instrues so descritas livremente,
entretanto devemos tomar alguns cuidados para manter a clareza do algoritmo.
Para escrever um algoritmo, precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso devemos obedecer algumas
regras bsicas:
usar somente um verbo por frase;
imaginar que voc est desenvolvendo um algoritmo para pessoas
que no trabalham com informtica;
usar frases curtas e simples;
ser objetivo;
procurar usar palavras que no tenham sentido dbio.
Um exemplo de representao de um algoritmo usando Descrio Narrativa
para o problema de clculo da mdia de um aluno ficaria:
1. obter as notas da primeira, segunda e terceira provas;
2. calcular a mdia aritmtica entre as trs notas;
3. se a mdia for maior ou igual que 7,00, o aluno foi aprovado, seno,
foi reprovado.
No entanto, na prtica, essa representao pouco usada porque o uso
da linguagem natural d muitas vezes oportunidade a ms interpretaes,
ambigidades e imprecises. Por esse motivo, no daremos maior ateno a
este tipo de representao.
2.2 Fluxograma
Essa a forma grfica de representar um algoritmo mais conhecida e
utilizada. O fluxograma nos permite mostrar graficamente a lgica de um algoritmo, enfatizando passos individuais e o fluxo de execuo.
intermediria descrio narrativa e ao pseudocdigo, pois menos
imprecisa que a primeira e, no entanto, no se preocupa com detalhes de
implementao do programa como a segunda, como, por exemplo, o tipo de
variveis utilizadas.
Para muitos autores, o fluxograma a forma universal de representao,
pois se utiliza de figuras geomtricas padronizadas para ilustrar os passos a
195
Terminador
Documento
Referncia de pgina
Entrada Manual
Dados armazenados
Dados
Exibio
Seta de
orientao do fluxo
Deciso
Preparao
Processamento
196
Inicio
Terminador
Varivel
Entrada Manual
Dados
Dados
Condio
SIM
NO
Deciso
Doc
Documento
Dados
Dados Armazenados
Varivel ou
mensagem
Exibio
Operaes
Preparao
Referncia de Pgina
Processamento
197
Fim
Figura 3. Fluxograma mnimo
198
Inicio
nota1
nota2
nota3
Fim
Figura 4. Fluxograma com leitura das notas
nota1
nota2
nota3
mdia
(nota1+nota2+nota3)/3
Fim
Figura 5. Fluxograma com o clculo da mdia
199
Agora que o valor da mdia j foi calculado, hora de testar o seu valor a
fim de definir se o aluno foi aprovado ou reprovado. Nesse momento, sentimos
a necessidade de controlar o fluxo de instrues, pois caso o valor da mdia
seja superior a 7,00, devemos executar a instruo de impresso da mensagem
Aprovado; seno devemos apresentar a mensagem Reprovado. Para fazer
isso necessrio utilizar o smbolo de deciso, como mostrado na figura 6.
Como podemos notar, dependendo do resultado da condio media >=
7,00, o fluxo de instrues devidamente desviado.
Inicio
nota1
nota2
nota3
mdia
(nota1+nota2+nota3)/3
NO
SIM
Aprovado
Reprovado
Fim
Agora o fluxograma mostrado na figura 6 reflete o algoritmo criado, representando cada passo de forma grfica.
Como j discutido na aula sobre algoritmos, na maioria das vezes precisamos executar um conjunto de passos repetidas vezes, sem alteraes no
200
N>0
SIM
N%2>0
SIM
N
NO
NO
N-1
Fim
201
2.3 Pseudocdigo
Esse nome uma aluso posterior implementao em uma Linguagem
de Programao, ou seja, quando formos programar em uma linguagem de
programao especfica.
O pseudocdigo um cdigo de escrita em que se utilizam termos convencionais para indicar as instrues do programa. Esses termos so geralmente
uma mistura de palavras da nossa linguagem natural com palavras e notaes
tpicas das linguagens de programao.
A utilizao de pseudocdigo permite ao programador expressar
as suas idias sem ter de se preocupar com a sintaxe da linguagem de
programao. Para isso, so utilizadas primitivas (comandos genricos)
que podem ser facilmente traduzidos para uma linguagem de programao
especfica.
2.3.1 Primitivas
Em um pseudocdigo, as primitivas possuem a mesma funo dos smbolos
em um fluxograma, ou seja, descrever as aes a serem executadas e garantir
a correta interpretao do algoritmo.
Neste caderno, apresentaremos as primitivas traduzidas para a lngua
portuguesa.
Entre as principais primitivas usadas, esto:
ALGORITMO <nome> primitiva usada para nomear o algoritmo
representado;
202
203
FIM PARA (do ingls END FOR) primitiva de controlo de fluxo, que
executa as instrues nela contidas enquanto a condio final for falsa.
O incremento pode ser omitido desde que seja unitrio positivo;
FIM ESTRUTURA (do ingls END STRUCT) primitiva utilizada na definio de estruturas de variveis. Os tipos de variveis so definidos
frente;
204
Sntese da aula
Nesta aula, foram discutidos conceitos sobre as formas mais comuns de
representao de um algoritmo computacional.
Esperamos que, a partir do que foi estudado nesta aula, voc seja
capaz de concluir que h diversas formas de representao de algoritmos
que diferem entre si pela quantidade de detalhes de implementao que
fornecem ou, inversamente, pelo grau de abstrao que possibilitam em
relao implementao do algoritmo em termos de uma linguagem de
programao especfica.
Das principais formas de representao de algoritmos, destacam-se: a
descrio narrativa, o fluxograma convencional e o pseudocdigo. Dessas trs,
a mais utilizada na prtica o pseudocdigo, principalmente por sua proximidade com o produto final o programa codificado em uma Linguagem de
Programao o que diminui o tempo de desenvolvimento e reduz custos. Alm
disso, o pseudocdigo permite adicionar detalhes especficos da linguagem a
ser utilizada.
205
Atividades
Para as atividades 1, 2 e 3, considere a seguinte questo: elabore um algoritmo para um programa que permita ler vrios nmeros inteiros a partir do
teclado e, aps a leitura de cada nmero individual, dever ser apresentada
uma mensagem indicando se o nmero informado positivo, negativo ou nulo.
O programa dever encerrar quando o valor nulo for informado.
1. Represente o algoritmo na forma de Descrio Narrativa.
2. Represente o algoritmo na forma de um Fluxograma.
3. Represente o algoritmo na forma de Pseudocdigo.
4. Sobre a Descrio Narrativa, incorreto afirmar que:
a) utiliza a linguagem natural para descrever o algoritmo;
b) pouco utilizada na prtica;
c) em funo de usar a linguagem natural, pode dar margem a ambigidades, tornando o algoritmo pouco claro;
d) possui regras fixas que garantem que um mesmo algoritmo sempre ser
representado da mesma forma, mesmo que por pessoas diferentes;
e) devemos utilizar frases curtas e simples na descrio dos passos de um
algoritmo.
5. Sobre a forma de representao de algoritmos usando Fluxograma,
incorreto afirmar que:
a) uma representao grfica dos passos a serem seguidos;
b) os smbolos utilizados em um fluxograma so internacionalmente definidos para garantir que um mesmo fluxograma seja corretamente interpretado, no importa onde tenha sido criado;
c) a interpretao de um fluxograma, via de regra, se d de baixo para
cima e da direita para a esquerda;
d) um programa deve possuir apenas um terminador de INCIO e outro
de FIM;
e) por se tratar de uma representao grfica, o fluxograma no se
mostra adequado para a representao de algoritmos maiores e/ou
mais complexos.
206
207
N>0
NO
SIM
N<0
Positivo
SIM
NO
Positivo
N=0
SIM
Fim
208
NO
Nulo
209
passos de um algoritmo. A opo (b) tambm est correta, pois a norma internacional ISO 5807/1985 define a simbologia a ser adotada na construo
de um fluxograma e, com isso, um mesmo fluxograma ser corretamente interpretado, no importa onde tenha sido criado. A opo (d) correta, uma vez
que o algoritmo representado s pode ter um incio e um fim no fluxograma.
E, por fim, a opo (e) tambm deveria ser considerada correta, pois o maior
problema com o uso de fluxograma ou de qualquer ferramenta de representao grfica que no so adequadas para situaes mais complexas que
gerem algoritmos com uma elevada quantidade de passos.
De acordo com o que voc estudou sobre Pseudocdigo, deve ter ficado
claro que a opo correta para a atividade 6 a opo (e), pois, seguindo o
fluxo do pseudocdigo, percebemos que a leitura e teste da varivel X encontram-se no bloco de instrues do comando REPITA. Assim esses passos devero
ser executados at que a condio (X <= 0) seja verdadeira. Deveria ter ficado
claro tambm que a opo (a) est incorreta, pois esse tipo de representao
o mais usado na prtica, pois a forma que mais se aproxima da codificao
final em uma linguagem de programao. A opo (b) est incorreta e sua
avaliao depende da ateno ao teste condicional para a instruo REPITA...
AT. Nela, caso o valor seja negativo ou nulo, o fluxo desviado para o final
do algoritmo. As opes (c) e (d) so obviamente incorretas, uma vez que o
algoritmo apresenta as instrues SE..ENTAO e REPITA..AT que so estruturas
de deciso e repetio, respectivamente.
As atividades lhe deram a oportunidade de representar um algoritmo
usando Descrio Narrativa, Fluxograma e Pseudocdigo, que foram os objetivos fixados para esta aula.
Na prxima aula
Estudaremos como os dados so armazenados e representados pelo
computador. Esse conhecimento de fundamental importncia para a atividade de Programao de Computadores.
Anotaes
210
Aula 3
Tipos de dados:
variveis e constantes
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
entender os conceitos de varivel e de constante e suas utilizaes;
utilizar adequadamente cada tipo de dado disponvel.
Pr-requisitos
Para atingir os objetivos desta aula, desejvel que voc possua conhecimento, ainda que bsico, sobre arquitetura de computadores principalmente
no que diz respeito memria RAM. Pesquise sobre o assunto!
Introduo
Para a execuo de qualquer tipo de programa, o computador necessita armazenar dados de natureza diversa. Esses dados so armazenados na
memria do computador.
Todas as informaes existentes no computador esto ou na memria primria
(memria RAM), ou na memria secundria (discos, fitas, CD-ROM, etc). Ns
iremos trabalhar, neste caderno, somente com a memria primria, especificamente com as informaes armazenadas na RAM (memria de acesso aleatrio).
Na verdade, toda operao realizada por um computador baseada
na manipulao das informaes contidas em sua memria. De uma maneira
geral, essas informaes podem ser classificadas em dois tipos:
as instrues, usadas para determinar o funcionamento da mquina e
a maneira como os dados devem ser tratados. As instrues so especficas para cada arquitetura de computador, pois esto diretamente
relacionadas s caractersticas do hardware particular como, por
exemplo, o conjunto de instrues de cada processador;
211
Contedo
7000:A210
3000:12BC
4100:0006
Paulo Srgio
345
99.834
O endereamento das posies de memria por meio de nmeros hexadecimais perfeitamente compreendido pela mquina, mas para ns humanos
torna-se uma tarefa complicada.
Para resolver esse problema, as linguagens de computador facilitam o
manuseio, por parte dos programadores, das posies de memria da mquina,
permitindo que, ao invs de trabalhar diretamente com os nmeros hexadecimais, seja possvel atribuir nomes diferentes a cada posio de memria. Alm
disso, tais nomes so de livre escolha do programador. Com esse recurso, os
usurios ficaram livres dos endereos em hexadecimal e passam a trabalhar
com endereos lgicos. Como o contedo de cada gaveta (endereo lgico)
pode variar, ou seja, mudar de valor ao longo da execuo do programa,
convencionou-se chamar de varivel a referncia a cada gaveta.
Assim, para o exemplo de endereos fsicos mostrados anteriormente,
poderamos rotular a posio de memria 7000:A210 como nome e, com
isso, sempre que precisssemos do valor dessa posio de memria, bastaria
referenciar a varivel nome. Assim ficaria o exemplo anterior:
212
End. Fsico
Contedo
7000:A210
3000:12BC
4100:0006
nome
valor
total
Paulo Srgio
345
99.834
213
214
215
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
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
51
52
53
54
55
56
57
58
59
60
61
62
63
?
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
216
De certa forma, se por um lado isso pode parecer como um desperdcio de memria, por outro simplifica bastante a arquitetura de memria dos
computadores. Alm disso isso no to relevante, uma vez que, na prtica,
o nmero de ocorrncias de dados do tipo lgico bastante inferior ao de
ocorrncias de dados do tipo literal ou numrico.
217
J uma varivel do tipo matriz pode ser vista como um vetor de vetores,
em que cada vetor representa uma dimenso. Por isso essa estrutura dita
multidimensional.
O tipo de matriz mais utilizado o bidimensional, em que so declaradas apenas duas dimenses. Porm a maioria das linguagens no impem
qualquer tipo de restrio quantidade de dimenses. Assim possvel criar
matrizes tridimensionais ou at n-dimensionais.
Um exemplo de declarao de matriz em C seria int notas[2][5]. Nesse caso,
declarada uma matriz bidimensional, em que a primeira dimenso possui dois
elementos, e a segunda possui cinco elementos. No total, sero reservados em
memria espao suficiente para representar 2x5=10 valores inteiros.
De forma similar aos vetores, o acesso a cada elemento da matriz deve ser
realizado a partir do nome da varivel seguida de um valor inteiro para servir
de ndice para cada dimenso.
3.2.2 Registros
So estruturas heterogneas compostas de elementos de tipos diferentes.
Cada elemento que faz parte do registro chamado de campo. Inclusive,
cada campo pode ser do tipo registro tambm.
Esse tipo de estrutura permite organizar melhor os dados a serem manipulados, principalmente por permitir agregar dados de uma mesma natureza.
Para entendermos melhor isso, imaginemos um programa que manipule os
seguintes dados sobre os alunos de um curso: o nome do aluno, a idade e
o nmero do seu CPF. Sem o uso de registros, normalmente, cada um desses
dados sobre o aluno seria manipulado em variveis diferentes. Mesmo utilizando o conceito de vetor, ainda assim seria necessrio manipular trs vetores
diferentes. Isso torna a atividade de programao bastante complexa.
Com o uso de registro possvel agregar esses dados em uma estrutura do
tipo registro e declarar um nico vetor desse tipo. Para exemplificar, podemos
examinar o seguinte trecho de cdigo na linguagem C:
struct TAluno {
char nome[80];
int idade;
char cpf[11];
};
struct TAluno alunos[10];
218
Sntese da aula
Nesta aula, discutimos como o computador armazena e manipula as informaes na memria do computador.
A memria dos computadores composta por posies numeradas e ordenadamente organizadas em bytes. Cada tipo de dado requer uma quantidade
diferente de bytes para armazenar a sua informao na memria. Essa quantidade pode tambm variar em funo do tipo de computador ou Linguagem de
Programao considerada.
Uma varivel uma entidade dotada de um nome para diferenci-la das
demais e permitir encontrar a sua posio da memria, e um tipo de dado, que
define o tipo de informao que ela capaz de guardar.
Uma vez definidos, o nome e o tipo de uma varivel no podem ser alterados no decorrer de um programa. Por outro lado, a informao til da varivel passvel de modificao durante o decorrer do programa, de acordo
com o fluxo de execuo do mesmo.
219
Atividades
1. Sobre o uso de variveis e constantes em um algoritmo incorreto
afirmar que:
a) toda informao manipulada diretamente pelo computador armazenada na memria principal (RAM) e as variveis representam referncias a posies dessa memria;
b) o valor de uma varivel no pode ser alterado ao longo do programa,
mantendo o mesmo valor at o encerramento do programa;
c) o tipo de dado implica na forma como os dados so representados
na memria;
d) os vetores e matrizes s podem manipular dados de um mesmo tipo
de dado;
e) um dado constante no sofre alterao no seu valor durante a execuo
do programa.
2. Com base no que foi estudado nesta aula, escolha a alternativa que apresenta, respectivamente, os tipos de dados mais adequados para variveis
que devero armazenar os seguintes contedos: idade, temperatura, nome
da cidade, nmero da carteira de identidade, notas de um aluno.
a) Inteiro, real, caractere, caractere, vetor de real.
b) Inteiro, inteiro, caractere, caractere, vetor de inteiro.
c) Inteiro, real, inteiro, caractere, vetor de real.
d) Inteiro, real, real, caractere, vetor de inteiro.
e) Inteiro, real, caractere, real, vetor de real.
3. Comente o uso de variveis e constantes em um algoritmo.
4. Comente as vantagens do uso do tipo de dados Registro.
220
221
Na prxima aula
Estudaremos os principais operadores e como podem ser usados na composio de expresses. Sero estudados os operadores mais gerais e que so
implementados na maioria das Linguagens de Programao, nomeadamente:
aritmticos, lgicos, de atribuio e de concatenao.
Anotaes
222
Aula 4
Operadores e expresses
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
reconhecer os principais operadores da Lgica para Programao,
utilizando-os;
construir corretamente expresses aritmticas e lgicas, avaliando-as.
Pr-requisitos
No h pr-requisitos formais para esta aula, uma vez que trata de operaes bsicas, pois pressupomos que voc possua conhecimentos sobre Teoria
de Conjuntos e Matemtica Fundamental. Tire suas dvidas no caderno de
Matemtica para Computao!
Introduo
Operadores so elementos funcionais que atuam sobre termos e produzem
um determinado resultado.
Os operadores so, na prtica, instrues especiais pelas quais incrementamos, decrementamos, comparamos e avaliamos dados dentro de
um programa de computador. Podemos classificar os operadores em trs
classes:
operadores aritmticos;
operadores relacionais;
operadores lgicos.
Com o uso de operadores possvel construir expresses, assim como na
matemtica. A complexidade de uma expresso determinada pela quantidade de operadores e termos (variveis ou valores constantes).
223
SMBOLO
+
*
/
^ (depende da linguagem utilizada)
MOD
DIV
Esses operadores so comumente utilizados para a formao de expresses aritmticas. A avaliao da expresso o que resulta no clculo do seu
resultado depende da ordem na qual os operadores so processados. Para
garantir que sempre seja obedecida uma mesma ordem, definida uma hierarquia para a avaliao dos operadores. Essa hierarquia herdada da prpria
matemtica. Segundo esta hierarquia:
1. em primeiro lugar, devem ser processadas as expresses entre
parnteses;
2. em seguida, a operao de exponenciao;
3. ento devem ser processadas as operaes de Multiplicao e Diviso
(o que aparecer primeiro);
4. por ltimo, devem ser processadas as operaes de Adio e Subtrao
(o que aparecer primeiro).
Essa hierarquia garante a correta interpretao de uma expresso
aritmtica.
224
AB
A*B
A/B
A DIV B
A MOD B
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Real
Inteiro
Inteiro
Inteiro
Inteiro
Inteiro
Real
Real
Inteiro
Inteiro
Real
Real
Inteiro
Inteiro
Real
Real
Inteiro
Inteiro
Real
Real
Inteiro
Inteiro
Inteiro
Inteiro
Inteiro
Inteiro
Real
Real
Real
Inteiro
Real
Real
Real
Inteiro
Real
Real
Real
Real
Real
Real
Real
Inteiro
Inteiro
Inteiro
Inteiro
SMBOLO
=
<> ou != (depende da linguagem)
>
<
>=
<=
225
226
O resultado de uma operao lgica vai depender dos valores dos termos
submetidos. A seguir apresentada uma listagem com os tipos de dados resultantes de cada operador.
OPERADOR Tipo de Dado de A Tipo de Dado de B Tipo Resultante
AeB
verdadeiro
verdadeiro
verdadeiro
AeB
verdadeiro
falso
falso
AeB
falso
verdadeiro
falso
AeB
falso
falso
falso
A ou B
verdadeiro
verdadeiro
verdadeiro
A ou B
verdadeiro
falso
verdadeiro
A ou B
falso
verdadeiro
verdadeiro
A ou B
falso
falso
verdadeiro
no A
verdadeiro
-----
falso
no A
falso
-----
verdadeiro
227
4.6 Expresses
O conceito de expresso, em termos computacionais, est intimamente
ligado ao conceito de expresso (ou frmula) usado na matemtica, na qual
um conjunto de variveis e constantes numricas relaciona-se por meio de
operadores aritmticos compondo uma frmula que, uma vez avaliada, resulta
em um valor final.
O conceito de expresso aplicado computao assume um sentido mais
amplo: uma expresso uma combinao de variveis, constantes e operadores
(aritmticos, relacionais ou lgicos) e que, uma vez avaliada, resulta em um valor.
Expresses aritmticas so aquelas cujo resultado da avaliao do tipo
numrico, seja ele inteiro ou real. Somente o uso de operadores aritmticos e
variveis numricas so permitidos em expresses desse tipo.
Expresses lgicas so aquelas cujo resultado da avaliao um valor
lgico (verdadeiro ou falso). Na formao de expresses lgicas, permitido
tanto o uso de operadores lgicos quanto relacionais.
Sntese da aula
Nesta aula, foram apresentados e discutidos os principais Operadores
Aritmticos, Relacionais e Lgicos usados na Programao para Computadores.
Foi discutida ainda a construo e a avaliao de expresses que utilizam
esses operadores.
Atividades
1. Das alternativas apresentadas a seguir, indique aquela que representa um
operador unrio.
228
c) Negao [NOT ]
d) Multiplicao [ * ]
e) OU lgico [ OU ]
RESULTADO: inteiro;
A, B: real;
INICIO
A 25;
B 3;
RESULTADO (A / B) * 5;
IMPRIMA (RESULTADO);
FIM
4. Considere a seguinte expresso ((((A MOD 5) > 5) OU (B/C >= 1)) E ((NAO
((A<50) E (B <> C))) OU (C=5))) e determine o valor para essa expresso
lgica, tendo os valores 23, 5 e 5 como valores das variveis A, B e C,
respectivamente.
229
230
Na prxima aula
Estudaremos, na prxima aula, a Estrutura de Arquivo. Na prtica, esse
tipo de estrutura muito utilizado para o armazenamento e manipulao de
grandes conjuntos de dados.
Anotaes
231
232
Aula 5
Arquivos
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
definir uma estrutura de arquivos;
utilizar arquivos na construo de algoritmos.
Pr-requisitos
Por tratar de uma estrutura que armazenada em dispositivos de memria secundria (discos rgidos, fitas, pen drivers, etc.), desejvel um conhecimento bsico
sobre esses dispositivos e sobre sistemas operacionais. Caso ainda no conhea
esses dispositivos, procure conhec-los por meio de seus colegas e web-tutoria.
Introduo
At aqui discutimos a manipulao de dados em um programa exclusivamente em memria principal memria RAM e vimos como as variveis so
utilizadas para esse fim. Entretanto nos limitamos a problemas que exigiam
poucos dados a serem processados e, com isso, estruturas mais simples
puderam ser usadas normalmente. Mas na prtica existem inmeros casos
que exigem uma grande quantidade de dados de entrada ou sada. E nestes
casos as variveis ou at mesmo os vetores j no so suficientes ou tornam o
algoritmo muito complexo. Em casos assim, devemos utilizar uma estrutura de
arquivo para a manipulao desses dados.
Alm disso, por armazenarem os dados em memria secundria, os
arquivos garantem que os dados neles armazenados no se percam ao final
da execuo do programa.
Nesta aula, estudaremos como os arquivos devem ser utilizados em um
algoritmo computacional.
233
5.1 Declarao
Um arquivo , em sua essncia, um conjunto de registros e, portanto no
possui um tamanho fixo. Na prtica, os arquivos so utilizados para manter
uma grande quantidade de dados como, por exemplo, os dados de todos os
alunos de uma escola.
J que um arquivo um conjunto de registros, antes de declarar um
arquivo propriamente dito, precisamos declarar o registro que representa cada
dado individual armazenado. Seguindo o exemplo de alunos de uma escola,
podemos definir o registro contendo informaes sobre cada aluno individual
da seguinte forma:
TIPO TAluno = REGISTRO
nome: CARACTERE;
idade: INTEIRO;
cpf: CARACTERE;
FIM REGISTRO
Aps termos definido a estrutura do registro TAluno, podemos declarar
o arquivo usando a sintaxe genrica TIPO <identificador> = ARQUIVO DE
<tipo_registro>. Para o nosso caso, iremos definir TArqAluno como identificador do arquivo de alunos e, ento, declararemos o arquivo como sendo:
TIPO TArqAluno = ARQUIVO DE TAluno.
Com essa declarao, estamos dizendo ao computador que o tipo
TArqAluno representa uma estrutura de arquivo contendo registros seguindo
a estrutura TAluno, ou seja, cada elemento individual do arquivo possui os
campos nome, idade e cpf.
5.2 Manipulao
Para manipular um arquivo em um algoritmo preciso que possamos referenci-lo. Para isso precisamos definir uma varivel tendo como tipo de dado
o tipo do arquivo.
Em nosso exemplo, criaremos a varivel alunos para manipular o arquivo.
Para criar a varivel podemos usar a seguinte declarao: VAR alunos:
TArqAluno;. Na maioria das Linguagens de Programao, esse tipo de varivel
implementada como uma estrutura interna contendo vrios outros campos
que permitem descrever e controlar o arquivo associado com a varivel.
234
nome: CARACTERE;
idade: INTEIRO;
cpf: CARACTERE;
FIM REGISTRO
aux: TAluno;
235
INICIO
ABRE(alunos);
COPIA(alunos, aux);
IMPRIMA(Nome: + aux.nome);
IMPRIMA(Idade: + aux.idade);
IMPRIMA(CPF: + aux.cpf);
FECHA(alunos);
FIM
236
ALGORITMO arquivos;
nome: CARACTERE;
idade: INTEIRO;
cpf: CARACTERE;
FIM REGISTRO
aux: TAluno;
resposta: CARACTERE;
INICIO
ABRE (alunos);
LEIA (resposta);
LEIA (aux.nome);
LEIA (aux.idade);
LEIA (aux.cpf);
LEIA (resposta);
FIM ENQUANTO
FECHA (alunos);
ABRE (alunos);
COPIA (alunos,aux);
IMPRIMA(Nome: + aux.nome);
IMPRIMA(Idade: + aux.idade);
IMPRIMA(CPF: + aux.cpf);
PROXIMO (alunos);
FIM ENQUANTO
FECHA (alunos);
FIM
237
Sntese da aula
Nesta aula, voc estudou os principais conceitos relacionados definio e manipulao da Estrutura de Arquivo. Essa estrutura fundamental
na programao, pois permite manipular uma grande quantidade de informaes ao mesmo tempo. Alm disso permite armazenar, de forma definitiva, dados que podem ser usados em outros programas ou em uma prxima
execuo do mesmo.
Atividades
1. Aps analisar as afirmaes a seguir, indique a alternativa que apresenta
a opo correta.
I. Um arquivo permite armazenar dados em memria secundria.
II. Quando o programa encerrado, os dados de um arquivo so perdidos.
III. Um arquivo representa uma coleo de registros e apresenta tamanho fixo.
IV. Antes de declarar uma varivel do tipo Arquivo, necessrio declarar
a estrutura do registro que ir compor o arquivo.
a) Somente I e II esto corretas.
b) Somente I, II e IV esto corretas.
c) Somente IV est correta.
d) Somente I e IV esto corretas.
e) Todas esto corretas.
238
Nome
Gionvani Del Gado
Maria das Dores
Joo Roberto
Selena da Conceio
Idade
34
23
20
18
Cidade
So Paulo
Curitiba
Curitiba
Belo Horizonte
239
240
TProduto = REGISTRO
Codigo: inteiro;
Descricao: caractere;
Quantidade: inteiro;
PrecoCusto: real;
MargemVenda: real;
FIM REGISTRO;
aux: TProduto;
total: real;
INICIO
ABRE (produtos);
total 0;
COPIA (produtos,aux);
PROXIMO (produtos);
FIM ENQUANTO
FECHA (produtos);
FIM
Na prxima aula
Estudaremos as principais estruturas que permitem controlar o fluxo de
instrues em um algoritmo. O domnio dessas estruturas de grande importncia para a atividade de programao.
241
Anotaes
242
Aula 6
Estruturas de controle
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
compreender a importncia de cada estrutura de controle;
utilizar as diferentes estruturas de controle.
Pr-requisitos
Como nesta aula so utilizados exemplos de algoritmos na forma de fluxograma e pseudocdigo, necessrio que voc j esteja familiarizado com
essas formas de representao de algoritmos, discutidas na aula 2. Retome
seus estudos! Voc deve ter percebido que, conforme dissemos na apresentao desse caderno, os conceitos aqui discutidos sero utilizados tanto nessa
disciplina quanto ao longo de todo curso.
Introduo
Quando estivermos criando algoritmos, muitas vezes ser necessrio
controlar a ordem em que as instrues devero ser executadas pelo computador de modo a solucionar o problema. Na maioria das vezes, dispomos
os comandos de forma seqencial, na qual as instrues so executadas
em srie, ou seja, uma aps a outra. Porm so comuns casos nos quais
necessrio executar um conjunto de comandos somente mediante a aceitao de uma condio especfica. Em outros casos, ser necessrio repetir
um conjunto de comandos at que outra condio seja satisfeita.
A fim de permitir que o fluxo de instrues seja controlado, devemos utilizar
as estruturas de controle. Basicamente, as estruturas de controle de dados so
de trs tipos principais:
243
244
ALGORITMO Selecao_Simples;
VAR N: Inteiro;
INICIO
N>0
SIM
LEIA N;
SE N>0 ENTAO
IMPRIMA N;
FIM SE
FIM
NO
N
Fim
245
Inicio
VAR N: Inteiro;
INICIO
LEIA N;
SE N>0 ENTAO
4IMPRIMA N;
N>0
SIM
SENAO
NO
O valor
de N deve
ser positivo
FIM SE
FIM
Fim
246
testar se o resto da diviso por dois igual a zero e, caso seja verdadeiro, o
fluxo desviado para a instruo que imprime a mensagem Este valor par e,
no caso de ser retornado um valor falso, apresentada a mensagem Este valor
impar. No caso de ser retornado um valor falso no primeiro teste condicional
(mais externo), a mensagem O valor de N deve ser positivo mostrada.
Inicio
N>0
SIM
N MOD 2=0
NO
SIM
NO
Este valor
mpar
Este valor
par
ALGORITMO Selecao_Encadeada;
VAR N: Inteiro;
INICIO
LEIA N;
SE N>0 ENTAO
SE N MOD 2 = 0 ENTAO
IMPRIMA Este valor par;
SENAO
IMPRIMA Este valor mpar
FIM SE
SENAO
IMPRIMA O valor de N deve ser
positivo;
FIM SE
FIM
O valor
de N deve
ser positivo
Fim
247
Inicio
OPO
OPO
NO
1
Opo
invlida
Voc
escolheu a
opo 1
Voc
escolheu a
opo 2
3
Voc
escolheu a
opo 3
Fim
ALGORITMO Selecao_Multipla;
VAR OPCAO: Inteiro;
INICIO
LEIA OPCAO;
ESCOLHA (OPCAO)
FIM ESCOLHA
FIM
248
Agora imaginemos que esse algoritmo deva ser usado para qualquer
veculo com qualquer que seja a quantidade de pneus. Nessa nova situao,
fica impossvel utilizar apenas a repetio do bloco de instrues, principalmente por no sabermos exatamente quantas vezes deveremos repetir. Em
casos como esses - e so bem comuns temos de lanar mo de uma estrutura
de repetio que permita repetir um bloco de instrues de forma controlada.
As estruturas de repetio se diferenciam principalmente pelo modo como
a expresso condicional avaliada. Basicamente, temos trs tipos de estruturas
de repetio que so comumente conhecidas, como: ENQUANTO, PARA...
FAA e REPITA... AT.
6.3.1 Estrutura de repetio do tipo ENQUANTO
Nesse tipo de repetio, o teste condicional realizado j no incio do
bloco de instrues. Com isso possvel que o conjunto de instrues referentes
estrutura seja repetido nenhuma, uma ou vria vezes enquanto o teste condicional retornar verdadeiro.
A seguir mostrado um exemplo de algoritmo para listar todos os nmeros
pares entre 1 e 10. Esse algoritmo naturalmente repetitivo, visto que para
cada nmero do intervalo executado o mesmo conjunto de instrues que
testa se o valor par e, em caso verdadeiro, imprime-o e incrementa seu valor
em uma unidade.
ALGORITMO testeENQUANTO;
VAR N: inteiro;
INICIO
N 1;
ENQUANTO (N<=10) FAA
SE (N MOD 2 = 0) ENTAO
IMPRIMA N;
FIM SE
N N + 1;
FIM ENQUANTO
FIM
Inicio
N 1
N <= 10
SIM
N MOD 2 = 0
NO
SIM
N
NO
NN+1
Fim
249
Inicio
N 1
N <= 10
SIM
N MOD 2 = 0
SIM
N
NO
NO
NN+1
Fim
A partir da anlise desse exemplo, fica claro que, enquanto o teste condicional N<=10 retornar verdadeiro, o mesmo conjunto de instrues ser executado. Somente quando o teste condicional retornar falso que o fluxo ser
desviado para a instruo imediatamente aps o bloco de repetio.
6.3.2 Estrutura de repetio do tipo PARA...FAA
Em uma repetio desse tipo, o conjunto de instrues referentes estrutura executado N vezes. Para isso o valor de N deve ser previamente
conhecido. Usamos esse tipo de repetio sempre que conhecemos a quanti-
250
Inicio
N 1
N <= 10
SIM
N MOD 2 = 0
SIM
N
NO
NO
NN+1
Fim
251
N 1
N MOD 2 = 0
SIM
ALGORITMO testeREPITA_ATE;
VAR N: inteiro;
INICIO
N 1;
REPITA
SE (N MOD 2 = 0) ENTAO
IMPRIMA N;
FIM SE
N N + 1;
AT (N > 10)
FIM
NO
NO
NN+1
N <= 10
SIM
Fim
Sntese da aula
Nesta aula, foram discutidas as principais estruturas de controle usadas na
construo de algoritmos. Vimos que grande parte das instrues em um algoritmo so dispostas em uma estrutura chamada seqencial ou bloco. Entretanto
existem casos em que o fluxo de instrues no deve ser executado linearmente,
252
Atividades
1. Sobre as estruturas de controle estudadas nesta aula, incorreto afirmar que:
a) uma estrutura seqencial ou bloco apresenta instrues que so executadas uma aps a outra, seqencialmente;
b) uma estrutura de seleo permite desviar o fluxo de instrues de
acordo com a avaliao de um teste condicional;
c) antes de utilizar uma estrutura de repetio do tipo PARA..FACA precisamos
conhecer o nmero exato de repeties que devero ser realizadas;
d) um teste condicional deve ser uma expresso aritmtica;
e) na estrutura de seleo mltipla, o teste condicional no uma
expresso lgica.
2. Considerando o algoritmo a seguir, indique a alternativa que apresenta
o resultado da execuo desse algoritmo, no caso de ser lido o valor 9
como valor para a varivel N.
ALGORITMO A1;
VAR N: inteiro;
INICIO
LEIA (N);
ENQUANTO (N > 0) FAA
SE (N MOD 2 <> 0) ENTAO
IMPRIMA N;
FIM SE
N N - 1;
FIM ENQUANTO
FIM
a) 9, 8, 7, 6, 5, 4, 3, 2, 1
b) 8, 6, 4, 2
c) 9, 7, 5, 3, 1
d) 9, 7, 5, 3, 1, 0
e) 8, 6, 4, 2, 0
253
254
ALGORITMO A3;
VAR
N: inteiro;
INICIO
PARA N 50 ATE 500 FACA
SE ( N MOD 11 = 5) ENTAO
IMPRIMA (N):
FIM SE
FIM PARA
FIM
N, I: inteiro;
anterior: inteiro;
atual: inteiro;
prximo: inteiro;
INICIO
LEIA (N);
anterior 1;
atual 1;
IMPRIMA (anterior);
IMPRIMA (atual);
PARA I 3 ATE N FACA
proximo anterior + atual;
IMPRIMA (proximo);
anterior atual;
atual proximo;
FIM PARA
FIM
255
Soluo 02:
ALGORITMO FIBONACCI;
VAR
anterior: inteiro;
atual: inteiro;
proximo: inteiro;
N: inteiro;
INICIO
LEIA (N);
atual 1;
anterior 1;
IMPRIMA (anterior);
IMPRIMA (atual);
anterior atual;
atual prximo;
FIM ENQUANTO
FIM
As atividades lhe deram a oportunidade de compreender a importncia de
cada estrutura de controle e de utilizar as diferentes estruturas de controle.
Na prxima aula
Estudaremos a Tcnica de Modularizao, que permite dividir um problema
complexo em problemas menores e, com isso, diminuir o tempo de criao do
algoritmo e otimizar a sua soluo. Nessa aula, ser apresentado o conceito de
funo e procedimento e como essas instrues especiais devem ser utilizadas.
Anotaes
256
Aula 7
Modularizao
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
entender os principais conceitos relacionados ao uso de funes e
procedimentos;
criar de forma correta funes em seus algoritmos, utilizando-as;
criar de forma correta procedimentos em seus algoritmos, utilizando-os.
Pr-requisitos
Nesta aula, fundamental que voc j domine a criao de algoritmos
e como represent-los na forma de pseudocdigo, pois nesta aula so apresentados e comentados exemplos nessa forma. Alm disso, necessrio que
voc tenha apreendido o conceito de variveis. Portanto retome o contedo j
estudado nas aulas anteriores se ainda houver dvidas!
Introduo
At aqui temos discutido a construo de algoritmos como uma soluo
linear que aborda um problema na sua forma geral e define um conjunto
de instrues a serem executadas para alcanar uma soluo. Todavia, at
o momento, no consideramos a complexidade do problema ou o tamanho
(quantidade de instrues) que um algoritmo pode ter.
Nos vrios exemplos mostrados nesse caderno, abordamos, por motivos
didticos, algoritmos e problemas simples. Porm, na vida prtica, encontramos problemas de complexidade muito mais elevada e que exigem solues
algortmicas mais robustas e, conseqentemente, maiores.
No cotidiano de um programador, comum a construo de algoritmos
que envolvam centenas ou milhares de instrues. Fica bvio, para esses casos,
257
258
259
INICIO
LEIA Valor1;
LEIA Valor2;
VERIFICA (Valor1);
SENAO
VERIFICA (Valor2);
FIM SE
FIM
7.2 Parmetros
Parmetros so as variveis listadas entre parnteses no cabealho da
definio de uma funo ou procedimento. So variveis locais, sendo visveis apenas dentro da funo ou rotina, embora com uma particularidade:
so automaticamente inicializadas com o valor dos argumentos respectivos em
cada chamada da funo ou procedimento.
As variveis locais (parmetros de funes includos) existem em memria
apenas enquanto o bloco de instrues em que esto inseridas estiver sendo
executado, sendo assim criadas e destrudas muitas vezes ao longo de um
programa a cada nova invocao da funo ou procedimento, por exemplo.
No exemplo mostrado anteriormente, temos as variveis A e B, do tipo
inteiro, como parmetros da funo MAIOR (A,B: inteiro). Essas variveis so
locais a essa funo e, por isso, s podem ser referenciadas dentro dela. Ao
trmino da funo, essas variveis so removidas da memria.
7.3 Argumentos
Argumentos so as expresses listadas entre parnteses em uma invocao
ou chamada de uma funo ou procedimento. O seu valor utilizado para
inicializar os parmetros da funo ou procedimento invocado.
260
Na invocao da funo MAIOR, mostrada no exemplo discutido anteriormente, e descrita pela instruo MAIOR(Valor1, Valor2), as variveis Valor1 e
Valor2 representam argumentos que so passados para a funo. Na prtica,
os valores dessas variveis so usados para inicializar os parmetros A e B da
funo, respectivamente.
Cabe ressaltar que um argumento de uma funo no necessita ser uma
varivel, podendo ser passado um valor constante. Por exemplo, podemos
invocar a funo maior usando instrues como: MAIOR (5, 7), MAIOR (Valor1,
89) ou MAIOR (5, Valor2).
261
Sntese da aula
Nesta aula, estudamos o conceito de Modularizao. Esse conceito de
fundamental importncia no desenvolvimento de programas de grande escala.
Foram apresentados e discutidos ainda os principais conceitos relacionados
ao uso de funes e procedimentos.
Atividades
1. Sobre o uso da tcnica de modularizao, com o uso de funes e procedimentos, em um algoritmo, incorreto afirmar que:
a) facilita a verificao de erros;
b) dificulta os testes do programa, uma vez que cada mdulo foi programado por uma equipe diferente;
c) permite fazer a manuteno do programa (correo de erros, melhoramentos, etc.) mdulo a mdulo e no no programa todo;
d) permite o desenvolvimento independente dos mdulos;
e) permite a reutilizao do cdigo desenvolvido.
2. A partir da anlise do algoritmo mostrado a seguir, incorreto afirmar que:
ALGORITMO A2;
VAR numero: inteiro;
FUNCAO E_PAR (X: inteiro)
SE (X MOD 2 = 0) ENTAO
RETORNE verdadeiro;
SENAO
RETORNE falso;
FIM SE
FIM FUNCAO
INICIO
LEIA (numero);
SE E_PAR(numero) ENTAO
262
263
argumentos a serem passados para essa funo. Um argumento, por sua vez,
qualquer expresso passada entre os parnteses da invocao (chamada)
de uma funo ou procedimento. Esse conhecimento imprescindvel para a
realizao da atividade 3.
Para a construo do algoritmo solicitado na atividade 4, voc deve ter
considerado a criao da funo QUADRADO como uma funo que deve
receber um valor inteiro como parmetro e retornar outro valor inteiro representando o quadrado desse valor. Para o clculo do quadrado de um nmero,
basta multiplic-lo por ele mesmo. J a funo LERINTEIRO no deveria ter
parmetros, uma vez que ela no precisa de dados de entrada para o seu
processamento. Alis, o seu processamento muito simples. Nessa funo,
devemos ter apenas a leitura de um valor inteiro e o seu retorno imediato. A
seguir apresentada uma soluo algortmica para o problema.
ALGORITMO A4;
VAR numero: inteiro;
FUNCAO QUADRADO (X: inteiro)
RETORNE (X*X);
FIM FUNCAO
FUNCAO LERINTEIRO
VAR N: inteiro;
LEIA (N);
RETORNE (N);
FIM FUNCAO
INICIO
numero LERINTEIRO;
IMPRIMA (O quadrado do numero + numero + +
QUADRADO(numero));
FIM
Se realizou as atividades com sucesso, voc est apto a entender os principais conceitos relacionados ao uso de funes e procedimentos; criar de forma
correta funes em seus algoritmos, utilizando-as, e criar de forma correta
procedimentos em seus algoritmos, utilizando-os.
Anotaes
264
EQUIPE UNITINS
Organizao de Contedos Acadmicos
Luiz Cezar Sakr
Coordenao Editorial
Maria Lourdes F. G. Aires
Assessoria Editorial
Darlene Teixeira Castro
Assessoria Produo Grfica
Katia Gomes da Silva
Reviso Didtico-Pedaggica
Marilda Piccolo
Reviso Lingstico-Textual
Sibele Letcia Rodrigues de Oliveira Biazotto
Reviso Digital
Sibele Letcia Rodrigues de Oliveira Biazotto
Projeto Grfico
Douglas Donizeti Soares
Irenides Teixeira
Katia Gomes da Silva
Ilustrao
Geuvar S. de Oliveira
Capa
Igor Flvio Souza
Crditos
Equipe Fael
Coordenao Editorial
Leocila Aparecida Vieira
Assessoria Editorial
William Marlos da Costa
Reviso
Juliana Camargo Horning
Lisiane Marcele dos Santos
Programao Visual e Diagramao
Denise Pires Pierin
Ktia Cristina Oliveira dos Santos
Rodrigo Santos
Sandro Niemicz
William Marlos da Costa
Apresentao
EMENTA
Teoria dos Conjuntos (Diagramas de Euler-Venn). Anlise e Simbolizao
de Sentenas de Linguagem Cotidiana. Tabela-verdade. Lgica de Predicados
de Primeira Ordem. lgebra Booleana. Simplificao de Funes e Mapas
Plano de Ensino
de Karnaugh.
OBJETIVOS
Apresentar os fundamentos da Matemtica para a Computao
como ferramenta para o desenvolvimento de reas especficas da
computao.
Reconhecer a Lgica Matemtica como instrumento de validao de
uma proposio.
Estudar as Estruturas Matemticas relacionadas lgebra de Boole
e suas funes.
CONTEDO PROGRAMTICO
Representao e notao de conjunto
Operao entre conjuntos
Estudo dos Diagramas de Euler-Venn
Estudos das proposies
Princpios fundamentais da Lgica
Tabela-verdade
Relaes de Dependncia e Independncia
Relaes de Equivalncia
Predicados
Sistemas algbricos
lgebra de Boole
Funes Booleanas
Forma cannica
Mtodos de Simplificao de Funes
Mtodo Algbrico
Mtodo do Mapa de Karnaugh
BIBLIOGRAFIA BSICA
DAGHLIAN, Jacob. Lgica e lgebra de Boole. 4. ed. So Paulo: Atlas, 1995.
Gersting, Judith L. Fundamentos Matemticos para Cincia da Computao.
So Paulo: LTC, 1995.
RANGEL, Klber Albanz; BENZECRY, Vera Syme Jacob. Como desenvolver
o raciocnio lgico: solues criativas na teoria dos conjuntos. 2. ed. Rio de
Janeiro: Universidade Estcio de S, 2005.
BIBLIOGRAFIA COMPLEMENTAR
ALENCAR FILHO, Edgar. Iniciao Lgica Matemtica. So Paulo: Nobel,
2003.
SOUZA, J. N. Lgica para Cincia da Computao: fundamentos de linguagem,
semntica e sistemas de durao. Rio de Janeiro: Campus, 2002.
269
Aula 1
Teoria dos Conjuntos
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
realizar operaes que envolvam conjuntos;
representar operaes por meio de Diagramas de Euler-Venn.
Pr-requisitos
Os contedos sobre a Teoria dos Conjuntos, j estudados nos Ensinos
Fundamental e Mdio, so suficientes para que voc consiga acompanhar a
aula e alcanar seus objetivos. Caso no se recorde dos mesmos, sugerimos
sua recapitulao.
Introduo
A Teoria dos Conjuntos fundamentada em entes ou conceitos primitivos
tais como conjunto, elemento, pertinncia. Por entes ou conceitos primitivos
entendemos aqueles que aceitamos sem definio e que, por sua vez, servem
de base para a definio de outros entes. Por exemplo, ao tentarmos esclarecer o que um conjunto, poderemos dizer que se trata de uma coleo,
o que na verdade um sinnimo de conjunto e no uma definio propriamente dita.
O mesmo ocorre com elemento e com a noo de pertinncia. Elementos
so os componentes de um conjunto e intuitivo que determinado elemento
possa pertencer ou no pertencer a um conjunto.
Nesta aula, veremos que os conjuntos podem ser subdivididos; que unio,
interseo e diferena so operaes entre conjuntos e que os Diagramas de
Euler-Venn so utilizados para a representao de operaes entre conjuntos.
271
1.2 Pertinncia
Nos exemplos anteriores, pode-se afirmar que:
o elemento 2 pertence ao conjunto A, simbolicamente 2 A;
o elemento 3 no pertence ao conjunto A, simbolicamente 3 A;
a B;
b B.
1.4 Subconjuntos
Quando todos os elementos de um conjunto A qualquer pertencem a outro
conjunto B, diz-se ento que A subconjunto de B, simbolicamente,
272
Saiba mais
Conjunto universo o conjunto que possui todos os elementos de determinado estudo ou
situao. Representa-se por U. Se A um subconjunto de U e se A o conjunto de todos
os elementos de U que no pertencem a A, diz-se que A o complemento de A.
273
Exemplo
Considerando: A = {1, 2, 3, 4}
B = {1, 3, 5, 7, 9}
C = {1, 2}
CA
AB
A B = {1, 2, 3, 4, 5, 7, 9}
A C = {1, 2, 3, 4}
AC=A
A B = {1, 3}
A C = {1, 2}
AC=C
A B C = {1}
A B = {2, 4}
B A = {5, 7, 9}
274
B = {4, 5, 6, 7, 8, 9}
C = {2, 4, 6, 8, 10}
A
3
5
4
7
6 8
9
10
A B C = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
A B = {1, 2, 3, 4, 5, 6, 7, 8, 9}
A C = {1, 2, 3, 4, 5, 6, 8, 10}
B C = {2, 4, 5, 6, 7, 8, 9, 10}
A B C = {4}
A B = {4, 5}
A C = {2, 4}
B C = {4, 6, 8}
A B C = {1, 3}
B A C = {7, 9}
C A B = {10}
275
Sntese da aula
Nesta aula, utilizando como base os conceitos primitivos de conjunto,
elemento e pertinncia, estudamos a Teoria dos Conjuntos. Vimos que os
conjuntos podem ser subdivididos em partes, os subconjuntos, e que entre
eles h o conjunto vazio, subconjunto de qualquer conjunto. Os smbolos de
est contido, (), e no est contido, (), determinam as relaes entre um
conjunto e seus possveis subconjuntos. Vimos tambm as operaes de unio,
interseo e diferena entre conjuntos e que estas operaes podem ser representadas por meio dos Diagramas de Euler-Venn.
Atividades
1. Sendo A = {x|x nmero inteiro positivo e par}, B = {1, 2, 3, 4, 5, 6, 7,
8,9} e C = {x|x nmero inteiro positivo e mltiplo de 3}, obter o conjunto
D, sendo D = B A C.
2. Sendo A = {1, 2, 3, 4, 5, 6, 7}, B = {2, 3, 4, 5, 6, 7, 8}, C = {0, 2, 4, 6,
8, 10} e D = {1, 3, 5, 7, 9}, ento correto afirmar que:
a) A B = C D {0, 1}
b) A D = C B
c) A B C = D
d) A B = C D {0, 1, 9, 10}
e) A B = C D {0, 1, 8, 9, 10}
276
9
3
6
7
a) A B C = {1, 6}
b) A B C = {3}
c) A C B = {3, 6, 9}
d) B A B C = {4, 7}
e) C A B = {1, 6, 8, 9}
10
277
278
Pois, sendo:
A = {2, 1, 2, 3}, B = {3, 1, 2, 4}, C = {1, 1, 2, 4}, D = {4, 2, 1, 2}
tem-se que:
A B C D = {2}
279
A B C = {1, 2}
A D = {2, 2}
B C = {1, 2, 4}
C D = {1, 2}
Para a atividade 4, a alternativa correta a (c) A C B = {3, 6, 9},
pois:
AC=
A
9
3
8
6
10
C
ACB=
A
9
3
6
280
1
3
6
6
7
281
8
10
Na prxima aula
Comearemos a substituir os conjuntos com os quais trabalhamos nesta aula
por proposies, que podem at mesmo envolver situaes de nosso cotidiano,
e passaremos a interlig-las de forma similar ao que fizemos com os conjuntos.
Tanto as proposies quanto suas interligaes, que tambm chamamos de
operaes lgicas sobre proposies, podero resultar em verdades ou falsidades. Estas verdades e falsidades compem o valor lgico das operaes,
que ser foco do nosso estudo.
Anotaes
282
Aula 2
Anlise e Simbolizao
de Proposies
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
identificar proposies simples e compostas;
reconhecer o valor lgico de uma proposio.
Pr-requisitos
Para determinar valores lgicos e para efetuar operaes lgicas sobre
proposies importante que se tenha um conhecimento prvio, mesmo que
mnimo, sobre o que so proposies. Por serem entes ou conceitos primitivos, proposies no se definem, mas facilmente as identificamos por serem
sentenas que exprimem um pensamento de sentido completo, podendo ser
expressas tanto na linguagem usual quanto na forma simblica.
Exemplos:
a) Manaus a capital do Amazonas;
b)
2 < 2.
Introduo
Nesta aula, veremos que as proposies podem ser simples ou compostas, que
todas atendem aos princpios fundamentais da Lgica Matemtica e que possvel
realizar operaes lgicas sobre duas ou mais proposies utilizando conectivos
lgicos, tais como: conjuno, disjuno, condicional, bicondicional e negao.
283
2.1 Proposies
As proposies so conjuntos de palavras ou smbolos que exprimem um
pensamento de sentido completo. Podem ser simples ou compostas.
Proposies simples so as que no contm nenhuma outra proposio
como parte integrante de si mesma. Indicaremos as proposies simples pelas
letras minsculas do alfabeto latino.
Proposies compostas so aquelas formadas pela combinao de duas
ou mais proposies. Indicaremos as proposies compostas pelas letras maisculas do alfabeto latino.
Diz-se que o valor lgico de uma proposio a verdade, se a proposio
verdadeira, e a falsidade, se a proposio falsa. Usualmente utiliza-se a
letra V (ou o nmero 1) para designar o valor lgico verdade, e a letra F (ou o
nmero 0) para designar o valor lgico falsidade. Por exemplo, considere as
proposies simples:
a) p: Cristvo Colombo descobriu a Europa;
b) q: Florianpolis a capital de Santa Catarina;
c) r: 2 + 3 = 5;
d) s:
12 > 11 ;
1 1
> .
3 2
Seus valores lgicos so:
e) t:
a) V(p) = F ou V(p) = 0
b) V(q) = V ou V(q) = 1
c) V(r) = V ou V(r) = 1
d) V(s) = V ou V(s) = 1
e) V(t) = F ou V(t) = 0
Agora, considere as sentenas:
f) ele no estudioso;
g) existe vida em outros planetas do universo.
A sentena (f) no proposio, pois ele no est especificado.
A sentena (g) uma proposio, j que verdadeira ou falsa (no
necessrio que saibamos a resposta).
284
2.4 Negao
Se p uma proposio, sua negao ser representada por p' e l-se no
p. Logo, se V(p) = V, V(p') = F e se V(p) = F, V(p') = V. A Tabela-verdade a
seguir resume os valores lgicos.
p
V
F
p'
F
V
285
Exemplos:
a) q: 5 1 = 3
q': 5 1 3
2.5 Conjuno
A conjuno de duas proposies p e q uma proposio verdadeira se
V(p) = V(q) = V. Nos demais casos, falsa. Logo, para que a proposio
composta de uma conjuno seja verdadeira, as proposies componentes
precisam ser verdadeiras. A Tabela-verdade a seguir resume os valores
lgicos.
p
p e q ou p q
V
V
F
F
V
F
V
F
V
F
F
F
Exemplos:
a) p : 4 = 2
q : sen = 1
2
V (p, q) = p q
b) r : 2 + 10 = 12
s :102 = 20
V (r, s) = r s
V
V
2.6 Disjuno
A disjuno de duas proposies p e q uma proposio falsa se
V(p) = V(q) = F. Nos demais casos, verdadeira. Logo, para que a proposio
composta de uma disjuno seja verdadeira, pelo menos uma das componentes
deve ser verdadeira. A Tabela-verdade a seguir resume os valores lgicos.
286
p ou q ou p a
V
V
F
F
V
F
V
F
V
V
V
F
Exemplos:
a) p : 8 = 4
q : sen = 1,5
2
V (p, q) = p q
F
F
F
b) r : 2 12 = 10
s :10 2 = 100
V (r, s) = r s
2.7 Condicional
O condicional de duas proposies p e q uma proposio falsa se V(p) = V
e V(q) = F. Nos demais casos, verdadeira. A primeira proposio denominada antecedente e a segunda conseqente do condicional. A Tabela-verdade
a seguir resume os valores lgicos.
p
Se p, ento q ou p q
V
V
F
F
V
F
V
F
V
F
V
V
Exemplos:
2
a) p : (2 + 1) = 9
4 4
<
5 7
V (p, q) = p q
q:
V
F
F
V (r,s ) = r s
2.8 Bicondicional
O bicondicional de duas proposies p e q uma proposio verdadeira,
se V(p) = V(q), e falsa quando V(p) V(q). O bicondicional uma dupla aplicao do condicional. A Tabela-verdade a seguir resume os valores lgicos.
287
V
V
F
F
V
F
V
F
V
F
F
V
Exemplos:
2
2
a) p : sen x + cos x = 1 V
sen x
V
q : tan x =
cos x
V (p, q) = p q
V
b) r : log2 8 = 3
9
3
=
16 8
V (r, s) = r s
s:
Sntese da aula
Nesta aula, vimos que o valor lgico de uma proposio composta
decorrente das proposies componentes e do conectivo lgico que as uniu. A
seguir, um resumo das opes.
p
p'
q'
pq
pq
pq
pq
V
V
F
F
V
F
V
F
F
F
V
V
F
V
F
V
V
F
F
F
V
V
V
F
V
F
V
V
V
F
F
V
Atividades
1. Entre as sentenas a seguir, identifique as proposies e escreva sua
negao.
2
2
2
a) p : (a + b) = a + 2ab + b .
b) q : o sol azul.
c) r : 90 = rad.
2
d) s : ela eleitora.
288
d) s: (8 6) = (7 3)
rad ;
2
d) t': Fortaleza no mais populosa do que So Paulo.
c) r': 90
289
Na prxima aula
Ampliaremos nossos estudos sobre o valor lgico das proposies. Veremos
como proceder quando, em uma mesma proposio, figuram mais do que um
conectivo lgico.
Anotaes
290
Aula 3
Tabela-verdade
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
montar a Tabela-verdade, obtendo o valor lgico de uma proposio
composta;
identificar tautologias e contradies.
Pr-requisitos
O domnio dos conectivos lgicos: conjuno, disjuno, condicional,
bicondicional e negao, vistos na aula anterior, so fundamentais para o
entendimento e assimilao desta aula. Caso julgue necessrio, relei e refaa
as atividades correspondentes. Permanecendo dvidas, entre em contato com
a web-tutoria.
Introduo
Nesta aula, aprenderemos a identificar a ordem de precedncia entre os
vrios conectivos lgicos que podem estar presentes em uma mesma proposio composta, bem como praticar a montagem de Tabelas-verdade, muito
teis na determinao do valor lgico das proposies.
Tambm conheceremos as tautologias e as contradies. Fique atento!
291
3.2 Tabela-verdade
A elaborao da Tabela-verdade de uma fbf disciplina e facilita a obteno
do valor lgico da proposio, j que sua montagem feita passo-a-passo. A
Tabela-verdade tem um nmero de colunas que depende dos conectivos, e um
nmero de linhas que depende das letras que figuram na proposio.
Exemplos:
Construir a Tabela-verdade da fbf: p q' (p q)'
292
q'
p q'
pq
(p q)'
p q' (p q)'
V
V
F
F
V
F
V
F
F
V
F
V
V
V
F
V
V
V
V
F
F
F
F
V
F
F
V
V
q'
p q'
(p q')'
V
V
F
F
V
F
V
F
F
V
F
V
F
V
F
F
V
F
V
V
pq
p'
q'
q' p'
(p q) (q' p')
V
V
F
F
V
F
V
F
V
F
V
V
F
F
V
V
F
V
F
V
V
F
V
V
V
V
V
V
p'
p p'
q'
q q'
(p p') (q q')
V
V
F
F
V
F
V
F
F
F
V
V
V
V
V
V
F
V
F
V
F
F
F
F
F
F
F
F
293
Sntese da aula
Nesta aula, tivemos contato com as precedncias entre os conectivos
lgicos. Vimos que, respeitados os parnteses, iniciamos pela negao,
passamos pelas conjunes e disjunes para, posteriormente, executarmos o
condicional e o bicondicional. Deixamos por ltimo o conectivo principal.
Vimos ainda que uma proposio ou fbf intrinsecamente verdadeira uma
tautologia, e uma proposio ou fbf intrinsecamente falsa uma contradio.
Atividades
1. Construir a Tabela-verdade da proposio P(p, q) = (p q)' (q p)'.
2. Construir a Tabela-verdade da proposio P(p, q, r) = p r' q r'.
3. Entre as proposies a seguir, quais so tautologias?
c) P(p, q, r) = (p q) (q r) (p r)
b) P(p, q) = p' q p
c) P(p, q) = (p q) (p q)'
pq
(p q)'
qp
(q p)'
(p q)' (q p)
A atividade 2 deve ter lhe mostrado que a proposio P(p, q, r) = p r' q r'
possui a Tabela-verdade a seguir.
294
r'
p r'
q r'
p r' q r'
q'
p q'
p'
p' q
(p q') (p' q)
(p q) (p' q')
p q q r (p q) (q r) p r (p q) (q r) (p r)
V V V
V V
V V
295
p'
p' q
(p' q)'
p'
p' q
p' q p
pq
pq
(p q)'
(p q) (p q)'
p'
p' q
p (p' q)
(p (p' q))'
Na prxima aula
Veremos as relaes de implicao e de equivalncia entre proposies.
296
Aula 4
Relaes de Implicao
e Equivalncia
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
identificar a existncia de implicao ou equivalncia entre proposies;
verificar equivalncias por meio de tabelas-verdade.
Pr-requisitos
So pr-requisitos para esta aula os estudos anteriores referentes aos conectivos
lgicos e s Tabelas-verdade. Releia as ltimas duas aulas e, se julgar necessrio,
refaa as atividades. Voc deve perceber que os contedos vistos anteriormente
sempre sero a base dos estudos posteriores. Por isso no fique com dvidas.
Introduo
Nesta aula, aprenderemos quando duas proposies so ditas independentes e quando so ditas dependentes. Tambm veremos que a dependncia
corresponde existncia de relao entre as proposies que podem ser de
implicao ou equivalncia.
Veremos tambm algumas equivalncias consideradas notveis.
297
Duas proposies so consideradas dependentes quando, em suas Tabelasverdade, uma ou mais alternativas no ocorrem. Por exemplo:
p
qp
Exemplo:
Verificar se p q (p' q')'
298
Tabela-verdade
p
pq
p'
q'
p' q'
(p' q')'
(p')' p
p'
(p')'
Leis idempotentes:
ppp
ppp
Leis comutativas:
pp
pp
pqqp
pqqp
pq
qp
pq
qp
Leis associativas:
p (q r) (p q) r
p (q r) (p q) r
299
qr
p (q r)
pq
(p q) r
qr
p (q r)
pq
(p q) r
V
V
V
V
F
F
F
F
V
V
F
F
V
V
F
F
V
F
V
F
V
F
V
F
V
F
F
F
V
F
F
F
V
F
F
F
F
F
F
F
V
V
F
F
F
F
F
F
V
F
F
F
F
F
F
F
Leis de De Morgan:
Leis distributivas:
p (q r) (p q) (p r)
p (q r) (p q) (p r)
Bicondicional:
p q (p q) (q p)
Condicionais:
(p q) (q' p')
(q p) (p' q')
Sntese da aula
Nesta aula, vimos que proposies independentes so aquelas em que as
Tabelas-verdade contm todas as quatro alternativas. A falta da alternativa VF
indica que uma proposio implica a outra. A falta das alternativas VF e FV
(tabelas-verdade iguais) indica que as proposies so equivalentes.
Equivalncias notveis: dupla negao, leis idempotente, leis comutativas, leis associativas, leis de De Morgan, leis distributivas, bicondicional,
condicionais.
300
Atividades
Confirmar, por meio das Tabelas-verdade, que as proposies a seguir no
correspondem a implicaes e sim a equivalncias notveis.
1. Leis de De Morgan:
2. Leis distributivas:
p (q r) (p q) (p r)
p (q r) (p q) (p r)
3. Bicondicional:
p q (p q) (q p)
4. Condicionais:
(p q) (q' p')
(q p) (p' q')
Assim, as Tabelas-verdade a seguir confirmam a equivalncia. As alternativas VF e FV no ocorrem em uma mesma linha, as Tabelas-verdade so
iguais.
p
pq
(p q)'
p'
q'
p' q'
pq
(p q)'
p'
q'
p' q'
p (q r) (p q) (p r)
p (q r) (p q) (p r)
301
qr
p (q r)
pq
pr
(p q) (p r)
qr
p (q r)
pq
pr
(p q) (p r)
pq
pq
qp
pqqp
J na atividade 4, so condicionais:
(p q) (q' p')
(q p) (p' q')
302
pq
p'
q'
q' p'
qp
p'
q'
p' q'
As atividades lhe deram a oportunidade de identificar a existncia de implicao ou equivalncia entre proposies e verificar equivalncias por meio de
tabelas-verdade, que eram os objetivos desta aula.
Na prxima aula
Tomaremos contato com os predicados, propriedades das variveis e, na
seqncia, daremos incio ao estudo da lgebra Booleana, que um modelo
matemtico tanto da Lgica Proposicional como da Teoria dos Conjuntos. A
denominao lgebra Booleana devida ao matemtico George Boole que,
em torno de 1850, preocupado com a soluo de certos problemas eletrnicos,
estava interessado em regras algbricas para o raciocnio lgico, semelhante
s regras algbricas para o raciocnio numrico.
Anotaes
303
304
Aula 5
Predicados e introduo
lgebra de Boole
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
identificar se uma estrutura matemtica especfica um sistema
algbrico;
reconhecer se uma estrutura matemtica especfica uma lgebra de
Boole.
Pr-requisitos
So pr-requisitos para esta aula os contedos referentes Teoria dos
Conjuntos que estudamos em nossa primeira aula, bem como os conhecimentos
sobre lgebra que trazemos conosco dos Ensinos Fundamental e Mdio.
Releia a primeira aula e, se julgar necessrio, refaa as atividades e relembre
conceitos em material de apoio referente ao Ensino Fundamental e Mdio.
Introduo
Nesta aula, veremos que algumas proposies apresentam, alm de quantificadores, caractersticas das variveis, que se denominam predicados.
Veremos tambm uma introduo lgebra de Boole, que um modelo
matemtico tanto da lgica proposicional como da teoria dos conjuntos. A
denominao lgebra de Boole devida ao matemtico George Boole que,
em torno de 1850, preocupado com a soluo de certos problemas eletrnicos,
estava interessado em regras algbricas para o raciocnio lgico, semelhante
s regras algbricas para o raciocnio numrico.
Neste momento, aprenderemos a identificar estruturas matemticas como
lgebras e, na seqncia, quais dessas lgebras podem ser denominadas
lgebras de Boole.
305
5.1 Predicados
As sentenas ou as proposies matemticas podem ser expressas, de
forma genrica, por meio de um quantificador e de um predicado.
Quantificadores so smbolos que representam quantidades. Veja os
exemplos.
que se l para todo, para cada ou para qualquer.
que se l existe, h pelo menos um, existe algum ou para
algum.
Predicados descrevem propriedades da varivel em questo. Por exemplo,
x > 0 descreve uma propriedade da varivel x, a de ser positiva.
Uma expresso lgica com quantificador e predicado pode ser, por
exemplo, (x)(x > 0).
A expresso anterior, no entanto, depender do domnio dos objetos sobre
os quais nos referimos, isto , a coleo de objetos entre os quais x pode ser
escolhido. Essa coleo de objetos chamada de conjunto universo.
No caso da expresso (x)(x > 0), se o conjunto universo consistir no
conjunto dos nmeros inteiros positivos, ento a expresso tem valor lgico
verdadeiro. Mas, se o conjunto universo consistir no conjunto de todos os
nmeros inteiros, por exemplo, a expresso ter valor lgico falso.
306
307
A3) a + b = b + a
A4) a b = b a
A5) a + (b c) = (a + b) (a + c)
A6) a (b + c) = (a b) + (a c)
A7) 0 B, tal que para cada a B, a + 0 = 0 + a = a
A8) 1 B, tal que para cada a B, a 1 = 1 a = a
A9) Para cada a B, a' B, tal que a + a' = 0 e a a' = 1
Sntese da aula
Vimos, nesta aula, que as proposies podem ser compostas por quantificadores e predicados.
Os sistemas algbricos so conjuntos no vazios munidos de operadores e
satisfazem em parte ou na totalidade propriedades, tais como: o conjunto ser
fechado para determinada operao, a operao ser comutativa, associativa,
distributiva em relao a uma segunda operao e admitir elemento neutro.
Voc tambm conheceu a lgebra de Boole, um sistema algbrico formado
por um conjunto no vazio, sobre o qual se definem duas operaes e que
atende a determinados axiomas.
Atividades
1. Considere o conjunto P de todas as proposies. E que, se p P e se
q P, ento p q P e p q P. Verifique que (P, , ) atende s
propriedades comutativa, associativa e distributiva.
2. Dados os operadores aritmticos +, , , , diga quais entre eles so operadores binrios no conjunto N dos nmeros naturais.
3. Verifique se o conjunto B2 = {0, 1} e os operadores correspondem a uma
lgebra de Boole.
308
0
1
0
0
0
1
0
1
+
0
1
0
0
1
1
1
1
0
a
b
1
0
0
0
0
0
a
0
a
0
a
b
0
o
b
b
1
0
a
b
1
+
0
a
b
1
0
0
a
b
1
a
a
a
1
1
b
b
1
b
1
1
1
1
1
1
pq
qp
pq
qp
V
V
F
F
V
F
V
F
V
V
V
V
V
V
V
V
V
F
F
F
V
F
F
F
Associativa
p
qr
p (q r)
pq
(p q) r
V
V
V
V
F
F
F
F
V
V
F
F
V
V
F
F
V
F
V
F
V
F
V
F
V
V
V
F
V
V
V
F
V
V
V
V
V
V
V
F
V
V
V
V
V
V
F
F
V
V
V
V
V
V
V
F
qr
p (q r)
pq
(p q) r
V
V
V
V
F
F
F
F
V
V
F
F
V
V
F
F
V
F
V
F
V
F
V
F
V
F
F
F
V
F
F
F
V
F
F
F
F
F
F
F
V
V
F
F
F
F
F
F
V
F
F
F
F
F
F
F
309
Distributiva
p
qr
p (q r)
pq
pr
(p q) (p r)
qr
p (q r)
pq
pr
(p q) (p r)
310
A5) a + (b c) = (a + b) (a + c)
A6) a (b + c) = (a b) + (a c)
A7) 0 B, tal que para cada a B, a + 0 = 0 + a = a
A8) 1 B, tal que para cada a B, a 1 = 1 a = a
A9) Para cada a B, a' B, tal que a + a' = 0 e a a' = 1
Esta lgebra conhecida como lgebra dos interruptores ou lgebra da
comutao, e considerada a mais til entre as lgebras de Boole. o fundamento matemtico da anlise e projeto dos circuitos de interruptores ou de
comutao que compem os sistemas digitais B2. o exemplo mais simples de
lgebra de Boole no degenerada (uma lgebra de Boole dita no degenerada quando os elementos neutros para suas duas operaes so distintos, 0
1, e degenerada quando so iguais, 0 = 1).
Na atividade 4, voc tambm deve ter concludo que o conjunto e os
operadores correspondem a uma lgebra de Boole, pois atendem aos nove
axiomas:
A1) a + b B
A2) a b B
A3) a + b = b + a
A4) a b = b a
A5) a + (b c) = (a + b) (a + c)
A6) a (b + c) = (a b) + (a c)
A7) 0 B, tal que para cada a B, a + 0 = 0 + a = a
A8) 1 B, tal que para cada a B, a 1 = 1 a = a
A9) Para cada a B, a' B, tal que a + a' = 0 e a a' = 1
A realizao das atividades lhe deu a oportunidade de alcanar os objetivos propostos para esta aula, ou seja, de identificar se uma estrutura matemtica especfica um sistema algbrico e de reconhecer se uma estrutura
matemtica especfica uma lgebra de Boole.
Na prxima aula
Daremos seguimento aos estudos ora iniciados conhecendo as Funes
Booleanas, as quais so definidas nas lgebras de Boole.
311
Anotaes
312
Aula 6
Funes Booleanas
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
determinar a expresso de uma Funo Booleana;
escrever a forma cannica de uma Funo Booleana.
Pr-requisitos
A aula anterior constitui-se em um pr-requisito para esta aula, na qual
mantivemos o primeiro contato com as lgebras de Boole. Ser importante
rev-la e, se necessrio, refazer as atividades.
Introduo
As Funes Booleanas ocorrem nas lgebras de Boole, satisfazem a
regras especficas e so construdas a partir de funes constantes e projees mediante um nmero finito de operaes. As Funes Booleanas podem
assumir vrias formas e, por conta disso, veremos uma forma cannica ou
padro na qual possam ser transformadas.
313
se
uma
funo
booleana,
ento
definida
por
g(x1, ..., xn) = ((x1, ..., xn))' para todos x1, ..., xn uma funo booleana;
se e g so funes booleanas, ento h e k, definidas por h(x1, ..., xn)=
(x1, ..., xn) + g(x1, ..., xn) e k(x1, ..., xn) = (x1, ..., xn) g(x1, ..., xn) para
todos os x1, ..., xn so funes booleanas;
qualquer funo constituda por um nmero finito de aplicaes das
regras anteriores e somente tal funo booleana.
Logo, funes booleanas so aquelas que se podem obter a partir de
funes constantes e funes projeo, mediante um nmero finito de operaes + e . .
Para uma funo de uma varivel, a funo projeo a funo identidade (x) = x.
Exemplos:
(x) = x + x' a
(x, y) = x' y'
h(x, y) = x' y + xy' + y'
g(x, y) = (x + y)'
(x, y, z) = axy'z + yz' + a + xy
Nos exemplos, (x, y) = x'y' e g(x, y) = (x + y)', de acordo com as Leis de De
Morgan, so a mesma funo, isto , assumem o mesmo valor para valores idnticos das variveis. Assim sendo, para melhor determinar se duas expresses
representam a mesma funo booleana, torna-se desejvel a existncia de uma
forma padro ou cannica na qual as expresses possam ser transformadas.
314
Sntese da aula
Vimos, nesta aula, que nas lgebras de Boole podem se definidas funes,
denominadas funes booleanas, as quais ficam determinadas mediante o
cumprimento de algumas regras. Entre elas, a que determina a construo de
uma funo booleana a partir de funes constantes e de projeo.
Vimos tambm que existe uma forma cannica para expresso das funes
booleanas, evitando-se assim que duas funes que resultam valores iguais
para os mesmos valores das variveis sejam consideradas funes distintas.
Atividades
1. Suponha que uma funo booleana de uma varivel sobre uma
lgebra de Boole de quatro elementos, (0) = a' e (1) = a. Determine
uma expresso para .
2. Seja B uma lgebra de Boole com quatro elementos 0, a, a', 1. Construa
a forma cannica da funo (x) = x + x' a.
3. Seja B uma lgebra de Boole com quatro elementos 0, a, a', 1. Construa
a forma cannica da funo (x, y) = x' y + xy' + y'.
4. Determine a forma cannica da funo (x) = xx'.
(x)
a'
a
315
Na prxima aula
Concluiremos esta etapa das Funes Booleanas estudando mtodos de
minimizao ou simplificao destas funes com nfase para os Mapas de
Karnaugh.
Anotaes
316
Aula 7
Simplificaes de Funes
e Mapas de Karnaugh
Objetivos
Esperamos que, ao final desta aula, voc seja capaz de:
minimizar uma Funo Booleana;
representar funes booleanas pelo mtodo do Mapa de Karnaugh.
Pr-requisitos
lgebra de Boole e Funes Booleanas, estudas nas aulas anteriores,
constituem-se nos principais pr-requisitos para esta aula. Releia as duas aulas
anteriores e, se as dvidas persistirem, entre em contato conosco!
Introduo
Minimizar ou simplificar uma funo booleana uma operao para
se reduzir ao mnimo o nmero de seus termos, resultando em economia do
circuito a que ela corresponde.
Veremos dois mtodos: o Algbrico e o do Mapa de Karnaugh.
(a')' = a
Teorema 2:
ab + ab' = a
Teorema 3:
0'=1 e 1'=0
Teorema 4:
Teorema 5:
ab + a'c + bc = ab + a'c
Teorema 6:
Teorema 7:
(a + b)(a' + c) = ac + a'b
317
0
0
No caso de funes com duas variveis, o mapa ser formado por quatro
clulas que correspondem s combinaes binrias que podem ocorrer com
estas variveis.
0
1
0
00
01
1
10
11
0
000
001
011
010
1
100
101
111
110
Sntese da aula
Vimos, nesta aula, que minimizar ou simplificar funes booleanas
til e pode ser realizado de formas diferentes. Analisamos dois mtodos, o
mtodo algbrico e o mtodo do Mapa de Karnaugh.
Atividades
1. Minimizar a funo y = a((b' + c')(b' + c)) + ab + (a' + b')(b + c') pelo
mtodo algbrico.
2. Representar a funo y = abc' + ab'c' + abc + a'b'c por meio do Mapa
de Karnaugh.
3. Representar a funo y = a'b'cd + ab'd + abc' + ac'd' por meio do
Mapa de Karnaugh.
4. Simplificar a funo y = a'b'c + a'bc + ab'c + abc por meio do Mapa
de Karnaugh.
318
1
1
1
1
1
01
y=c
11
1
1
10
1
1
1
Na atividade 4, simplificar a funo y = a'b'c + a'bc + ab'c + abc utilizando o Mapa de Karnaugh corresponde montagem das clulas, conforme
a seguir, e tambm sua interpretao:
00
01
11
10
1
1
1
1
319
Levando em considerao as colunas determinadas pelas clulas anteriores, temos que y = a'c + ac, o que nos leva a y = c.
Ao concluir com sucesso as atividades propostas, voc atingiu o objetivo de minimizar (simplificar) uma funo booleana e de representar funes
booleanas pelo mtodo do Mapa de Karnaugh.
Anotaes
320