Está en la página 1de 320

Ficha Catalogrfica elaborada pela UNITINS.

Bibliotecria Rozangela Martins da Silva CRB2/1019


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.

FUNDAO UNIVERSIDADE DO TOCANTINS


Reitor
Humberto Luiz Falco Coelho
Vice-Reitor
Lvio William Reis de Carvalho
Pr-Reitor de Graduao
Galileu Marcos Guarenghi
Pr-Reitor de Ps-Graduao e Extenso
Claudemir Andreaci
Pr-Reitora de Pesquisa
Antnia Custdia Pedreira
Pr-Reitora de Administrao e Finanas
Maria Valdnia Rodrigues Noleto
Diretor de EaD e Tecnologias Educacionais
Marcelo Liberato
Coordenador Pedaggico
Geraldo da Silva Gomes
Coordenador do Curso
Igor Yepes

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

Aula 5 Arquivos................................................................................................. 233


Aula 6 Estruturas de controle............................................................................... 243
Aula 7 Modularizao....................................................................................... 257
Matemtica para Computao....................................................................265
Aula 1 Teoria dos Conjuntos................................................................................ 271
Aula 2 Anlise e Simbolizao de Proposies..................................................... 283
Aula 3 Tabela-verdade........................................................................................ 291
Aula 4 Relaes de Implicao e Equivalncia...................................................... 297
Aula 5 Predicados e introduo lgebra de Boole.............................................. 305
Aula 6 Funes Booleanas.................................................................................. 313
Aula 7 Simplificaes de Funes e Mapas de Karnaugh....................................... 317

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

Voc est recebendo o material da disciplina de Computao Bsica. O


contedo est apresentado em sete aulas. Na primeira, veremos a histria
da computao; na segunda, os componentes bsicos do computador; e, na
terceira, voc conhecer os sistemas posicionais de numerao.
A continuidade dos estudos se dar por meio do estudo das operaes
aritmticas no sistema binrio de numerao, o que ser visto na quarta
aula; na quinta, classificaremos software. A sexta aula ser dedicada a um
contedo muito importante: noes bsicas de redes de computadores e banco
Para terminarmos os estudos referentes a esta disciplina, analisaremos as
profisses na rea de Informtica.
Com o intuito de combinar reflexes tericas com propostas prticas,
este material no s trar contribuies relevantes para o aprendizado da
Computao Bsica, como tambm motivar voc para um trabalho mais
prazeroso com esse contedo.
Desejamos bons estudos!
Prof. Alexandre T. Rossini
Prof. Alex Coelho
Prof. Evanderson S. de Almeida
Prof. Marcelo Ribeiro de Oliveira
Prof. Vincius de Miranda Rios

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

e banco de dados. Profisses na rea de informtica.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

Aula 1 Computao Bsica

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

11

Aula 1 Computao Bsica

marco nesta caminhada tecnolgica. Antes disso, porm, voc compreender


algo sobre o que venha a ser um dado e uma informao, alm de diferenciar
dados analgicos de dados digitais.

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.

1.2 O que dado e o que informao?


Dados so pequenas unidades de informao que, ao serem aplicadas em
determinada direo, resultam em unidade de informao maior, de alguma
utilidade mais apreciada, ou melhor, a informao em si. Por exemplo, se
unirmos o dados R, $ aos dados 1,50, teremos a informao R$ 1,50.
Repare que os dados no parecem ter muito sentido para ns, porm o valor
R$1,50 j significa algo muito interessante.
Da mesma forma, o R$ 1,50 pode ser considerado um dado, se comparado a uma lista de receitas e despesas em uma planilha de oramento domstico, que seria, aqui, a informao. Os dados e seu processamento so um
elemento to abstrato e, ao mesmo tempo, de utilidade to concreta que, por
muitas vezes, temos dificuldade em distinguir quando esto em uma situao
que os envolva significativamente.

1.3 Escrita armazenamento de dados


A necessidade de escrever, armazenar e comunicar informaes por meio
de smbolos (repare, nesta situao, os dados!) notada desde os primeiros
registros humanos que a arqueologia pode nos fornecer. A escrita proveniente dos sumrios. As pinturas rupestres (observadas nas cavernas, nos perodos em que se acredita que sejam dos primrdios da humanidade), o uso do
baco (uma mquina antiga de calcular, contempornea ao alfabeto, ambos
criados na regio do mediterrneo) e de outros aparelhos ao longo da histria,
at alcanar a tecnologia dos dias atuais, envolvendo micro, mini e super
computadores, mostram que o armazenamento de dados e seu processamento

12

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

sempre foram uma forma especial, usada pela humanidade, para exercer
controle do meio sua volta.

1.4 Dados analgicos e digitais


Antes de prosseguirmos no tour pela linha do tempo da evoluo dos computadores, entenderemos sobre a definio de dados analgicos e digitais.

1.4.1 Dados analgicos


O Dicionrio Michaelis define o termo analgico como [...] dado representado por outras grandezas que podem variar segundo o sistema mecnico,
eltrico ou eletrnico empregado. De fato, informaes analgicas podem
possuir estados variveis e indefinidos pelo homem.
Pensemos em um rdio de comunicao de uma torre de controle de
trfego areo comunicando-se com o rdio de uma aeronave em pleno vo.
Eles, supondo possurem rdios analgicos, esto sintonizados em uma determinada freqncia, por exemplo, 900,023Mhz. Repare que a freqncia de
comunicao possui trs casas aps a vrgula. Mas, mesmo que o receptor
do rdio do avio estivesse sintonizado a 900,0237Mhz (quatro casas aps
a vrgula), a comunicao ainda assim seria possvel entre torre e aeronave
(talvez com algum chiado). Isso se d devido ao fato de que um valor analgico poder assumir infinitos estados, tal qual o comprimento de uma onda,
propagando-se no espao. O valor possui largura tal que, embora possa ser
detectado algum padro ou mdia de tamanho ou largura, tais medidas nunca
sero exatas, podendo ser subdividas em infinitas partes.
Outro exemplo o prprio relgio analgico. O ponteiro dos segundos
percorre uma volta completa em 60 segundos. Logo, se dividirmos 360 por
60, obteramos seis. Isso significa que o ponteiro percorre seis unidades da
circunferncia a cada segundo. Porm, analogicamente falando, poderemos
dividir o segundo em 100 centsimos; logo, se dividirmos 6 unidades da circunferncia por 100, teremos 0,06 unidades da circunferncia sendo percorridos
pelo ponteiro a cada centsimo de segundo. Creio que voc j tenha deduzido
que poderamos ficar aqui calculando infinitamente quantas fraes de circunferncia estaramos percorrendo em determinada frao de tempo. Inclusive,
se assim o fizssemos, chegaramos a um valor to pequeno que no teramos
uma nomenclatura oficial para definirmos to pequenos intervalos. Porm o
fato que eles existem e so divididos em infinitas partes.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

13

Aula 1 Computao Bsica

1.4.2 Dados digitais


Quando olhamos o ponteiro dos segundos se movendo, por causa de
nossa capacidade humana limitada de capturar movimentos com clareza at,
no mximo, na casa dos centsimos de segundos, temos a impresso de que
o ponteiro se tele-transporta de seis em seis unidades de circunferncia a cada
segundo. Porm, se filmarmos tal ponteiro em movimento e depois assistirmos
ao vdeo em cmera lenta, o que visualizaremos ser justamente algo parecido
com o que vemos no ponteiro dos minutos ou das horas sem cmera lenta.
Os dados analgicos, por serem infinitos, chegam a atrapalhar os estudos
dos cientistas que, para possibilitarem a execuo prtica de suas teorias,
precisam discretizar, isto , limitar a aplicao de um dado analgico infinito
para um conjunto de estados finitos. Retornando ao assunto do ponteiro dos
segundos, o cientista poder, para tornar vivel a aplicao de sua teoria,
considerar que o ponteiro realmente se tele-transporta de seis em seis unidades
de circunferncia a cada segundo para, ento, projetar o relgio digital, com
o desenho de um ponteiro no visor do relgio, que realmente aparece em
pontos distantes de seis em seis unidades a cada segundo.
Verifica-se, ento, que uma informao analgica poder ser infinitamente
mais rica que uma informao digital e, ao mesmo tempo, toda a infinidade
de riqueza que possui poder ser desprezada sem prejuzo para a soluo
concreta que foi alcanada, como o caso do relgio digital. Basta, para ele,
possuir 60 dgitos que a circunferncia j estar modelada, ignorando-se os
infinitos pontos entre cada um dos 60 pontos requeridos.
Afinal, o que concluir sobre dados analgicos e digitais?
Conclua que uma informao ou dado digital (referente a dgito), embora
limitada, capaz de possuir toda a preciso necessria para que um objetivo
seja alcanado (e a prova disso so os computadores que usamos na atualidade, na maioria, digitais). O mundo em que vivemos altamente analgico
(embora o termo altamente analgico seja uma redundncia, fao questo
de deixar dessa forma, para ficar claro a infinidade de sua definio). J os
computadores que criamos so digitais, ou seja, limitados, porm essa limitao poder ser grande o suficiente para representar, sem perdas significativas (at mesmo imperceptveis ao ser humano), um modelo real, por exemplo,
as fotos, vdeos e msicas armazenadas e reproduzidas por computador. Um
exemplo de armazenamento digital sem perdas so os textos digitais.

14

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

Aps essas constataes, veremos a evoluo da tecnologia computacional ao longo do tempo.

1.5 Linha histrica da evoluo tecnolgica computacional


Ao longo dessa viagem pela linha de evoluo dos computadores, verifica-se que os inventores, a partir de uma necessidade pessoal e, no raro,
coletiva, motivaram-se a criar mquinas que facilitassem, agilizassem e at
mesmo permitissem determinadas atividades ou clculos.
Nessa linha histrica, iremos considerar suas subdivises de acordo com
a estrutura de Marula e Beninni (2005) e Tanenbaum (2007). Agruparemos
os diferentes momentos em que se sucedem as facetas da evoluo cientfica
e os distintos componentes que foram usados como marco da posio digital
da poca.

1.6 Iniciando do comeo


Os chineses inventaram o baco. Voc j deve conhec-lo, pois o mesmo
muito divulgado como elemento didtico nas escolas e citado em vrias
palestras e conferncias.
Embora a humanidade antiga soubesse armazenar nmeros e smbolos,
os clculos matemticos, embora realizados, no baco, por exemplo, no
eram, na maioria das vezes, armazenados ou escritos. Assim, no se poderia
guardar uma equao do segundo grau, por exemplo, e se discretizar alguma
teoria. Mas, com a ajuda dos hindus, que criaram o zero escrito, isso j se
tornou possvel.
2000 a.C. O baco chins a primeira ferramenta de clculo de que
se tem notcia. uma calculadora primitiva, composta por varetas e anis
de madeira, representando unidades, dezenas e centenas. Os chineses no
sabiam que estavam fornecendo uma grande ajuda terica na organizao
dos computadores. O baco muito popular e at hoje ainda usado, principalmente em pases orientais.
1614 Logaritmos so definidos por John Napier, nascido na Esccia.
1623 Wilhelm Schickard cria a primeira mquina de calcular, de acordo
com os historiadores, pois, infelizmente, ela desapareceu durante a guerra dos
trinta anos. Ela realizava operaes de diviso e multiplicao e tinha uma
estrutura mecnica baseada em rodas dentadas.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

15

Aula 1 Computao Bsica

1644 Blaise Pascal (1623-1662) (inclusive, Pascal o nome de uma


linguagem de programao muito conhecida, batizada assim em homenagem
a esse cientista) constri o que a histria entende como a primeira calculadora,
batizada por ele de Pascalene, ou Pascalina. Ele a criou para auxiliar seu
pai (preparao de impostos). Tal mquina tambm usava uma roda dentada
contendo justamente dez dentes, um para cada algarismo decimal (ou dgito
decimal! Uma mquina digital!). A pascalina realizada subtraes e somas.
1673 Gottfried Wilhelm Leibnitz (1646-1716), matemtico e filsofo,
melhorou o projeto da Pascalina, construindo, assim, uma mquina capaz
de dividir, multiplicar, subtrair, somar e calcular a raiz quadrada. Os historiadores confirmam seu pensamento: ele sonhava que um dia todo o raciocnio
pudesse ser substitudo pelo girar de uma alavanca.
1801 Joseph Marie Jacquard (1752-1834) foi um mecnico nascido
na frana que criou uma mquina mecnica de tear (a primeira mquina
programvel, controlada por cartes perfurados, tamanho grande) capaz de
criar bonitos desenhos enredados no prprio tecido. Sua inveno fez muito
sucesso na Frana e, em sete anos, milhares de mquinas de tear j estavam
em operao no pas.
At aqui, podemos dizer que chegamos ao fim da era mecnica. Veja
como ela trouxe a base sem a qual no teramos chegado onde estamos hoje,
e as malhas de nossas roupas no poderiam ter lindos e detalhados enfeites
intrnsecos e costurados. Vamos prosseguir para verificar como as mquinas
e descobertas daquela era influenciaram na continuidade desse processo
evolutivo.

1.7 A era dos dgitos


No decorrer do processo, logo vemos a necessidade de utilizar
computadores para realizar atividades repetitivas e rotineiras, principalmente
clculos de preciso diferencial. No sculo XIX, vemos por, exemplo, que as
invenes de Charles Babbage expandem a viso do tamanho do potencial
computacional para a humanidade. Prossigamos em nossa caminhada...
1820 Charles Babbage (1792-1871), matemtico nascido na Inglaterra,
projeta a mquina analtica, uma mquina diferencial calculadora de polinmios. Essa mquina calcularia automaticamente, alm de somas e subtraes
e outros clculos bsicos, a converso de nmeros de uma base para outra (da
base binria para a decimal, por exemplo). Babbage ficou conhecido com o

16

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

17

Aula 1 Computao Bsica

1.8 Mquinas de computar


1889 As idias de Charles Babbage so mescladas s prticas com
cartes perfurados por um estatstico americano preocupado com a demora na
contagem da populao. At ento, a contagem completa da populao norteamericana demorava sete anos. Aps a aplicao computacional de Babbage
com a mquina de Hollerith (inclusive esse era, e ainda , o nome dado aos
contracheques de pagamento de funcionrios), o tempo para contagem populacional reduziu pela metade, trs anos e meio.
1896 Aqui, a Companhia de mquinas de tabular criada (Tabulating
Machine Company).
1924 Bem, se foi difcil saber que empresa era essa que fora citada anteriormente, saiba que neste ano ela muda seu nome para International Business
Machine, ou a famosa IBM.
1904 A Vlvula criada por John A. Fleming. Tal componente composto
por um envoltrio de vidro que contm dois eletrodos. A vlvula interrompe ou
permite a passagem de corrente eltrica, dependendo de como a energia
passa por dentro da mesma. Veja a utilidade disso: com corrente eltrica,
temos o Bit um; sem corrente eltrica, o bit zero.
1937 Allan M. Turing, utilizando-se da lgebra de boole, da tecnologia de entrada e sada via cartes perfurados e da vlvula expe minuciosamente uma mquina computacional de propsito mltiplo. Essa iniciativa
foi a pioneira no sentido de algum, o prprio usurio (ou seja, no vem
definido de fbrica), poder decidir que clculos ou operaes a mquina ir
realizar. A conscincia com o conceito de programao que temos hoje no
mera coincidncia.

1.9 Primeira gerao de computadores Vlvula (1945-1955)


De acordo com o progresso da histria, possvel agrupar quatro diferentes
geraes, notadas sempre por um marco, um evento revolucionrio que permitia
tecnologia saltar consideravelmente em direo a um estado mais evoludo.
1946 John Presper Eckert (1919-1995) e John Mauchly (1907-1980), ambos
engenheiros, projetaram o Eletronic Numeric Integrator And Calculator (ENIAC).
Ele possua 18.000 vlvulas, 1.500 rels, pesava 30 toneladas e consumia
140Kw de energia (ocupava o tamanho de um prdio pequeno, com 90m2,
e conseguia realizar 500 operaes de multiplicao por segundo, ou 5.000

18

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

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.

1.10 Segunda gerao de computadores transistores (1955-1965)


Isso mesmo, os transistores (Inventado nos Laboratrios da Bell, em 1948
por Willian Shockley, Walter Brattain e Jhon Bardeen) substituram as vlvulas.
A vlvula era e uma grande consumidora de energia eltrica. O transistor
muito mais rpido e barato que a vlvula, alm de consumir bem menos energia
eltrica e ser mais durvel. Os Estados Unidos conseguiram, por exemplo, com
o uso de transistor, sair frente da antiga URSS na corrida espacial.
1963 O monitor de vdeo, talvez, hoje, o mais conhecido perifrico de
sada, comea a ser usado como tal. Antes dele, os resultados de processamentos eram vistos impressos em papel.
1964 Agora a vez de o mouse aparecer. Ele foi apresentado por
Douglas Engelbart como um perifrico de entrada de dados. Antes dele, a
entrada somente poderia ser feita via os famosos cartes perfurados.
John Kemeny cria a linguagem BASIC que, no momento, servia como um
software que intermediava a relao entre a linguagem de programao e o
hardware. Note que isso muito se assemelha ao sistema operacional (popularmente representado pelo Microsoft Windows ou GNU/Linux).

1.11 Terceira gerao de computadores circuitos


integrados (19651980)
O circuito integrado foi inventado em 1958 por Robert Noyce. Dessa vez,
o tal circuito integrado no um substituto do transistor, mas sim um conglo-

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

19

Aula 1 Computao Bsica

merado de transistores. Mais especificamente, nessa gerao, dezenas, e at


centenas deles, em um pequeno espao (o chip) de silcio.
Nessa fase, verifica-se o famoso fenmeno da miniaturizao dos computadores: com o circuito integrado (CI), tornou-se possvel a construo de
computadores menores, mais rpidos e mais baratos do que os da gerao
anterior j transistorizados. A mudana foi drstica: computadores que tinham
tamanhos de salas reduziram ao tamanho de geladeiras, ainda grande, se
comparados com os de hoje, certo? Mas concorde que o impacto, aqui, j foi
gigantesco para a poca que, alis, no to distante de hoje.
1967 A primeira calculadora digital, precursora das calculadoras
de bolso, hoje apresentada pela empresa Texas Instruments. Tal mquina
realizava as quatro operaes fundamentais: soma, subtrao, multiplicao e diviso.
1968 A empresa Intel (hoje, a maior fabricante de microprocessadores
do mundo) criada por Robert Noyce, Andy Groove e Gordon Moore.
1969 Nasce a rede Arpanet, por meio da interligao de quatro universidades, pelo departamento de defesa dos Estados Unidos. A Arpanet a
precursora da WWW Rede mundial de computadores ou, simplesmente,
a Internet.
1970 O Sistema operacional (SO) UNIX (curiosidade: o conhecido GNU/
Linux de hoje um UNIX) desenvolvido por Ken Thompson e Dennis Ritchie.
O UNIX foi o primeiro SO portvel (sistema que pode funcionar em diferentes
tipos de computadores) a ser desenvolvido.
A partir dessa parte da histria, voc ir notar (se j no tiver notado) que
convive com boa parte da tecnologia. Estamos nos aproximando da gerao
atual com a qual convivemos.

1.12 Quarta gerao de computadores


integrao em escala muito grande (1973, 1980-?)
Na terceira gerao, notamos centenas de transistores em um nico chip.
Agora, na quarta gerao, os cientistas obtiveram dezenas de milhares,
centenas de milhares e milhes de transistores em um nico chip (Very Large
Scale Integration (VLSI) integrao em escala muito alta) ou seja, ainda, de um
CI, porm, em um nvel de miniaturizao muitssimo elevado. A essa altura da
evoluo, sensato que o chip tenha mudado de nome: Microchip.

20

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

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,

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

21

Aula 1 Computao Bsica

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.

1.13 Quinta gerao de computadores computadores invisveis


O que, ou como seria a quinta gerao de computadores?
O Japo j teve interesse em ditar como seria a computao de quinta
gerao: computadores qunticos. Isso causou um grande temor por partes
das indstrias americanas e europias. Porm o fato que o Japo no teve
xito em suas pesquisas e logo o assunto foi abafado.
Constataes histricas nos mostram que a quinta gerao no marcado
por uma mudana ou salto grandioso de tecnologia, como constatado nas
geraes anteriormente citadas, mas sim uma mudana de paradigma: os
computadores atingiriam tamanhos menores (constatando que a miniaturizao continua a ocorrer) ao ponto de no serem notados pelo ser humano: a
gerao do computador invisvel.
1993 A Apple lana o computador Newton. Esse marcou o momento
por mostrar que os computadores poderiam ser feitos em invlucros menores
do que uma fita cassete porttil. Recebia entrada de dados dos usurios a
partir de uma caneta, assemelhando-se aos conhecidos e populares Personal
Digital Assistants (PDAs) agendas eletrnicas, por exemplo, o Palm Tungsten
ou Pocket PCs.
Embora os PDAs sejam realmente menores, at mesmo que os Notebooks,
no so eles quem descrevem a caracterstica dessa nova gerao, mas sim os
computadores realmente invisveis como aqueles embutidos dentro de automveis, avies, fornos microondas, mquinas de lavar, vdeo games, etc.
Como se pode notar, os computadores invisveis esto em toda a parte e,
se voc, leitor, estiver na cidade e olhar sua volta, provavelmente constatar
(mesmo no podendo ver) a presena de algum computador, microchip ou

22

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

controlador eletrnico em um raio de 15 a 100 metros. Como Tanenbaum


afirma: Eles sero parte da estrutura da vida diria, abrindo portas, acendendo luzes, distribuindo dinheiro e milhares de outras coisas.
Chegamos ao fim desta primeira aula. E quanta informao voc recebeu!
Muito do que foi visto j fez ou ainda faz parte do seu dia-a-dia ou de seus
pais ou de professores mais experientes, afinal convive com a quarta gerao
e entende a presena de uma quinta gerao eminente. E, a partir de agora,
desafio voc a relacionar na histria todos os tipos de computadores com os
quais voc venha a ter contato. hora de situar-se na histria para compreender cada vez mais o porqu de nossa situao tecnolgica atual e poder
projetar tendncias de futuro para a mesma.

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?

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

23

Aula 1 Computao Bsica

Comentrio das atividades


Os objetivos desta aula foram introdutrios aos estudos sobre Tecnologia
da Informao, bem como histricos, a fim de situar o aluno quanto ao nvel
de evoluo que alcanamos. As atividades 1, 2 e 3 mensuram a captao da
parte introdutria deste assunto, abordando conceitos de dados, informao, e
naturezas analgica e digital. As atividades 4, 5, 6 e 7 mensuram a absoro
do contedo histrico exposto. As atividades 8, 9 e 10 verificam a capacidade
de o aluno de raciocinar sobre os conceitos explanados, bem como palpitar
sobre as tendncias de futuro tecnolgico.
Na atividade 1, dado pode ser diferenciado de informao quando determinada informao pode ser subdividida em partes menores os dados que a
compem.
Na atividade 2, podemos citar as seguintes formas de se armazenar dados:
agrupamento de pedras, escrita em paredes de cavernas, escrita em papel,
meio magntico, meio ptico.
Na atividade 3, quanto funcionalidade de relgio (marcar as horas), o
relgio analgico equivalente ao relgio digital.
Na atividade 4, o nome da mquina criada por Blaise Pascal foi Pascalene
ou Pascalina.
Na atividade 5, a mquina criada por Charles Babbage foi a mquina
analtica.
Na atividade 6, Babbage ficou conhecido como o Pai do Computador
devido ao seu invento muito se aproximar ao conceito de computador que
temos na atualidade: possua um engenho central, uma memria, engrenagens
e alavancas. Utilizava cartes perfurados e possua dispositivos de entrada e
sada de dados.
Na atividade 7, as respectivas palavras-chave das 4 geraes de computadores so: vlvula, transistor, circuito integrado, microchip. Lembrar dessas
palavras nos faz recuperar, em nossa mente, a linha histrica da evoluo dos
computadores.
Na atividade 8, a vlvula interrompe ou permite a passagem de corrente
eltrica, dependendo de como a energia passa por dentro da mesma. Com isso,
percebemos dois estados fsicos definidos: com corrente eltrica, temos o bit um
(verdadeiro); sem corrente eltrica, o bit zero (falso). Eis a dois estados, o suficiente para realizar quaisquer clculos baseados em lgebra booleana.

24

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Computao Bsica

Na atividade 9, a miniaturizao foi uma conseqncia natural obtida


conforme as geraes vo se estabelecendo. Cada gerao definida por
componentes eltricos cada vez menores. Diminuindo-se os componentes, logo
diminuem-se o tamanho dos computadores compostos pelos mesmos.
Na atividade 10, computadores invisveis so uma nomenclatura sugerida
para todo objeto de uso humano que contenha, dentro de si (embutidos), microprocessadores ou microcontroladores. Essa realidade nos coloca dentro de um
mundo em que estamos cercados de utenslios computadorizados, muitos deles
usados por ns to automaticamente que, por muitas vezes, no atentamos que
estamos interagindo com um computador, da o fenmeno da invisibilidade do
computador.

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










UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

25

Aula 1 Computao Bsica

26

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Computao Bsica

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.

2.1 Componentes do computador


O computador, relembrando a mquina Von Neumann, composto por:
CPU (nesse caso, representada pela unidade lgica aritmtica e pela unidade
de controle), memria e unidades de entrada e sada.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

27

Aula 2 Computao Bsica

Andrew Tanenbaum (2007) define que um computador digital consiste


em um sistema interconectado de processadores, memrias e dispositivos de
entrada/sada.
Atualmente, os computadores seguem esse mesmo princpio de composio. Eles se diferem do modelo de Von Neumann no aspecto do processador,
ou CPU, que, em nossa realidade, esto em um nico microchip, se que isso,
um reposicionamento, pode ser considerado uma diferena significante.
Visto isso, os componentes principais do computador so: CPU, memria
e a placa me. Em resumo, a CPU responsvel por processar os dados,
a memria tem a funcionalidade de armazenar os dados pr e ps-processados, e a placa me o barramento (canal de comunicao) onde a CPU e a
memria se localizam conectadas por meio de slots (conectores), permitindo,
assim, que o processador acesse aos dados na memria, processe-os e os
retorne para a mesma.

2.2 A Memria Principal RAM (Random Access Memmory)


O termo RAM, Random Access Memmory traduz-se por Memria de Acesso
Aleatrio. Trata-se da memria de trabalho com a qual o processador comunica-se. O termo aleatrio quer dizer que a memria poder ser acessada, para
operaes de escrita e leitura, em qualquer posio. Existem milhares de posies de memria, a depender da capacidade do pente de memria instalado
em sua placa me.
Considere, para efeito didtico, uma posio de memria em um
pente como sendo um dos apartamentos de um prdio. Cada apartamento
pode conter apenas um morador (em termos tcnicos, um caractere, por
exemplo, a letra A). O processador poder, ento, dependendo do
programa que est executando, inserir um caractere em uma posio de
memria, retirar um caractere de uma posio, substituir um caractere
que estava previamente armazenado em uma posio por outro caractere,
copiar um caractere de uma posio de memria para outra da posio
de memria. Repare que a memria tem de ser de rpido acesso, uma vez
que os computadores perfazem milhes de acessos memria durante o
tempo em que esto funcionando, dependendo dos programas que estiverem sendo executados.
Um exemplo didtico de uso da memria seria, por exemplo, os seis passos
descritos a seguir.

28

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Computao Bsica

1. Processador insere o nmero um na posio de memria 002.


2. Processador insere o nmero dois na posio de memria 003.
3. Processador l o nmero contido na posio de memria 002.
4. Processador l o nmero contido na posio de memria 003.
5. Processador soma os nmeros lidos e armazena o resultado na posio
de memria 101.
6. Processador insere o nmero trs na posio de memria 003.
Voc capaz de dizer qual o resultado da soma armazenado na posio
de memria 101? Se voc respondeu trs, acertou. Uma possvel resposta,
porm, errada, seria cinco. Est errada uma vez que, embora o processador
tenha alterado o contedo na posio 003 de dois para trs, isso em nada
influenciou o contedo da posio 101.
A Memria Principal (RAM) no processa nada. Ela um repositrio de
dados, acessada pelo processador. Ela tambm voltil, ou seja, se voc
desligar o computador, todos os dados contidos nela iro se perder. A propsito, a memria que no se perde, em que os documentos que digitamos ficam
armazenados, de outra natureza. Documentos de textos e planilhas, sistema
operacional e outros dados persistentes ficam armazenados em dispositivos de
memria de massa, por exemplo, os discos rgidos, conhecidos tambm como
memria secundria.
Estudemos, agora, o processador, que tem como funo a comunicao,
por meio da via de comunicao fornecida pela placa me, com a memria
principal.

2.3 A Unidade Central de Processamento UCP


A Unidade Central de Processamento a principal parte do computador.
Voc pode referir-se a ela como CPU (Central Processing Unit), UCP (Unidade
Central de Processamento) ou, simplesmente, processador.
Um computador poder at sobreviver, conceitualmente, sem memria ou
mesmo sem uma placa me, mas, se no possuir um processador, no pode
ser nem considerado como um computador propriamente dito: talvez seja outro
equipamento como um pen-drive, mas nunca um computador. O termo computador nos lembra do verbo computar, que quer dizer calcular ou, mais especificamente, executar clculos e operaes prprias de um computador. Ora,

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

29

Aula 2 Computao Bsica

se um computador aquilo que realiza clculos, logo, presumimos que ele


precisar ter uma espcie de crebro eletrnico, ou uma cabea eletrnica que
possa pensar ao menos o suficiente para resolver os clculos para os quais o
mesmo foi designado para realizar.
A CPU age, ento, como o crebro do computador, tendo a funo de
obter dados ou instrues de algum lugar que, no caso de um computador, a
memria de trabalho (ser vista em seguida, ainda nesta aula), verificar estas
instrues e depois execut-las, uma aps a outra.
Vamos desmistificar o processador aqui: ele no um elemento mgico que
busca as informaes e as processa de forma desconhecida. No pargrafo anterior, utilizamos verbos de ao como obter, verificar e executar. Para cada um
destes verbos, existem barramentos e circuitos eltricos e eletrnicos que desempenham e possibilitam a comunicao entre os componentes internos ao prprio
processador. Porm no aconselhvel, por fins didticos, que voc se aprofunde
ao nvel dos projetos eletrnicos de construo e um processador, pois esse no
o objetivo deste curso. Projetar processadores, bem como circuitos eletrnicos
e componentes para computadores, como interfaces de vdeo tridimensionais ou
modems para acesso a Internet, etc., so objetivos de cursos especficos como,
por exemplo, engenharia eletrnica e engenharia da computao.
Diferentes partes compem a UCP: UC (Unidade de Controle), ULA (Unidade
Lgica Aritmtica) e Registradores (Pequenas memrias de alta velocidade).
2.3.1 Unidade de Controle UC
A Unidade de Controle tem a funo de obter dados e instrues na memria
principal, determinando sua tipologia. ela a porta de entrada e sada que o
processador usa para comunicar-se, via sinais eltricos, com a memria principal. Por exemplo, se a ULA precisar armazenar o nmero binrio 0012 na
posio de memria 0002, ele solicitar UC que realize tal procedimento.
2.3.2 Unidade Lgica Aritmtica ULA
A Unidade Lgica Aritmtica efetua diversas operaes matemticas, como
adio e subtrao, multiplicao e diviso, e de lgica booleana (lembra G.
Boole? Se no, aconselhamos que voc d uma pequena pausa neste ponto
de leitura, retorne aula anterior e reveja as explanaes sobre George Boole
e a lgica binria), como o OR (ou) booleano (voc estudar isso com detalhes na disciplina Lgica de Programao) com a finalidade de se executar as
instrues (o programa).

30

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Computao Bsica

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.

2.4 Executando-se uma instruo


A Memria principal armazena dados que sero buscados pela UC
(unidade de controle) da CPU e adicionados nesses registradores. Em seguida,
a ULA realiza operaes sobre os dados que esto nos registradores, tambm
armazenando o resultado das operaes neles. Por fim, UC copia o valor dos
registradores para dentro de um endereo (posio) de memria principal.
A enumerao a seguir representa uma seqncia de pequenas fases que
so reproduzidas para cada instruo que a CPU executa. A mesma tem uma
denominao comum de ciclo buscar-decodificar-executar.
1. Transportar a instruo seguinte da memria principal para o registrador.
2. Modificar o ponteiro de instruo (IP) indicando a prxima instruo.
3. Estabelecer qual o tipo da instruo transportada.
4. Caso a instruo utilize uma seqncia de dados na memria principal, estabelecer onde est seqncia de dados se encontra.
5. Transportar a seqncia de dados, se necessrio, para algum registrador da UCP.
6. Executar a instruo.
7. Retorno fase 1 (isso far com que se execute a prxima instruo,
contida no registrador IP, alterado pela etapa 2).

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

31

Aula 2 Computao Bsica

2.5 RISC versus CISC


Ao longo a histria, a Apple projetou seu processador e acabou competindo com a Intel, tambm com um processador prprio. Ambas competiam
pelo espao no mercado de processadores. A Intel lidera essa concorrncia de
forma geral, principalmente no que se diz respeito aos computadores pessoais.
Voc deve estar habituado a ouvir, mesmo na televiso, sobre os processadores Intel, por exemplo, Pentium, Celeron, etc.
Existe uma diferena bsica entre os dois processadores dessas duas
companhias aqui: a quantidade de instrues que eles podem realizar. A Apple
utiliza um conjunto reduzido de instrues (RISC), enquanto a Intel utiliza um
conjunto complexo de instrues (CISC).
Um processador RISC segue a regra de que, internamente, dever possuir o
menor nmero de micro instrues possvel. Por exemplo, ao invs de conter uma
instruo para multiplicar (x), basta possuir a instruo de somar (+) e deixar que
o programador que queira multiplicar 5x2 realize a operao 2+2+2+2+2. Isso
torna a vida do programador mais difcil, pois o mesmo ter de codificar instrues complexas que precisar para alcanar seu objetivo. O programa resultante,
porm, ao ser executado, ser feito em alta velocidade pelo processador RISC.
Um processador CISC segue a regra de que, internamente, dever possuir
vrios conjuntos de instrues para realizar diversas operaes. Isso significa
que ele possuir tanto a operao de soma (+), quanto de multiplicao (x).
Isso facilita a vida do programador, que ter sua disposio um leque de
instrues prontas de fbrica (a Intel) a fim de alcanar seus objetivos.
No h como definir qual o melhor dos processadores. Alguns autores
defendem o RISC como sendo o mais performtico e puro dos processadores;
outros defendem que a complexidade trazida pelo CISC facilita a vida dos desenvolvedores. De fato: os processadores RISC costumam ser mais rpidos que os
processadores CISC. Mais rpido nem sempre significa melhor. Os computadores
da Apple (power pc, I-mac), no so to populares no Brasil, mas sim nos EUA.
So preferidos quando o assunto , por exemplo, processamento de vdeo, som e
grfico, realizado por empresas de jogos eletrnicos, maquetes virtuais, etc.
Mesmo assim, o processador Intel o mais popular por seguir uma regra de
retro compatibilidade com programas construdos para outros processadores
da mesma marca, mesmo que ultrapassados. Isso significa que um programa
feito para um processador Intel 4x86 (antigo) ter grandes chances de ser
executado em um Pentium IV (novo). Ter essa vantagem de retro compatibilidade coloca a Intel em posio comercial privilegiada, uma vez que os progra-

32

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Computao Bsica

madores de sistemas e aplicativos tero menos trabalho: codificaro uma s


vez e vero o seu programa funcionar em vrias verses futuras da Intel.
Chegamos ao fim de nossa segunda aula. Agora voc est ciente de
importantes informaes que nortearo de maneira significativa as decises
que voc tomar em relao programao e demais relacionamentos associados ao computador.
Repare, tambm, o quanto a primeira aula apresentou aspectos fundamentais sobre a evoluo dos componentes de nossos computadores, o que fez
com que voc recebesse a informao dessa aula de forma racional e fundamentada. Leve para sempre, em sua mente, esses conceitos aqui expostos, pois
voc ir us-los como, no mnimo, pano de fundo para o desenvolvimento de
aplicaes, preparao de contedos, ministrao de palestras e seminrios e
os estudos da maioria das disciplinas que sero vistas neste curso e que sejam
relacionadas ao computador moderno.

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?

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

33

Aula 2 Computao Bsica

Comentrio das atividades


Os objetivos desta aula foram pertinentes aos estudos introdutrios sobre
os modernos computadores da atualidade, mais especificamente, sobre aqueles
mais utilizados pela maioria da populao mundial, inclusive, de arquitetura j
previamente anunciada ou descrita por grandes cones da informtica atuantes
em momentos histricos passados. As atividades de 1 a 10 mensuram o aprendizado sobre os principais componentes formadores dos computadores modernos.
Na atividade 1, os trs componentes que formam o computador moderno
so CPU, Memria Principal e Placa Me.
Na atividade 2, o verbo associado CPU processar (dados), o verbo
associado memria principal armazenar (dados) e o verbo associado
placa me comunicar (dados).
Na atividade 3, os componentes que compem a CPU so ULA (Unidade
Lgica Aritmtica), UC (Unidade de Controle e Registradores).
Na atividade 4, a ULA possui a funo de realizar operaes matemticas, como multiplicao, diviso, soma, subtrao, raiz quadrada, etc, bem
como a realizao e operaes lgicas booleanas.
Na atividade 5, o papel da UC servir como porta de entrada e sada
para com a memria principal, transportando dados dos registradores para a
memria principal e vice-versa.
Na atividade 6, RAM a memria principal, tambm conhecida como
memria de trabalho, e sua funo armazenar dados que podero ser tanto
informaes de planilhas (carregadas da memria de massa) quanto instrues
de programas.
Na atividade 7, a diferena principal entre os registradores da CPU e
memria RAM a localizao fsica (registradores ficam dentro da prpria
CPU, enquanto a RAM fica externa CPU, conectada ao processador via
barramento da placa me), o tamanho (registradores so quantidades muito
pequenas de memria, se comparadas RAM) e a velocidade de acesso
(Registradores so muito mais rpidos que a RAM).
Na atividade 8, dentro processo de se executar um instruo a funo do
IP (Instruction Pointer) armazenar o endereo (da memria RAM) da prxima
instruo a se executada pela ULA.
Na atividade 9, a frase Para o RISC, quanto menor, melhor faz uma
aluso filosofia de fabricao de processadores RISC, que direcionada ao

34

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Computao Bsica

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















UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

35

Aula 2 Computao Bsica

36

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

37

Aula 3 Computao Bsica

Um pouco mais adiante na histria, apareceram os nmeros romanos (at


hoje utilizados para referenciar sculos) utilizado em todo o imprio romano.
Nessa forma de representao, ou nesse sistema numrico, letras so os
smbolos utilizados para representar quantidades. Nesse sentido, cada letra
representa uma quantidade pr-definida. Veja exemplos na tabela 1.
Tabela 1 Exemplos de nmeros representados no sistema numrico romano
Romana

Representao

Um

II

Dois

III

Trs

IV

Quatro

Cinco

IX

Nove

Dez

Cem

CXVI

Cento e dezesseis

Quinhentos

DCXX

Seiscentos e vinte

Mil

MMVIII

Dois mil e oito

Contudo o sistema romano, apesar de amplamente utilizado pelo imprio,


um sistema numrico que apresenta deficincias em operaes aritmticas.
Outras formas de representaes surgiram ao longo da civilizao. Entre essas
outras formas, surgiram os algarismos arbicos. Segundo Weber (2004), com
os seguintes smbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9):

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

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

= 1x1000 + 9x100 + 8x10 + 2x1

= 1x103 + 9x102 + 8x101 + 2x100

Note que a ltima linha a representao do nmero 1982 no sistema


decimal pela lei de formao. Nesse sentido, a idia adotar pesos diferentes para posies diferentes de algarismos (idia de representao posicional). Assim, quanto mais esquerda, maior seu peso, sempre 10 (base)
vezes maior.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

39

Aula 3 Computao Bsica

3.1 Sistema binrio (Base 2)


Vimos que o sistema decimal (base 10) utiliza dez smbolos diferentes
para representar qualquer nmero natural. No sistema binrio, como o prprio
nome diz, existem apenas 2 smbolos para se representar: 0 (zero) e 1 (um).
Como j foi exposto anteriormente, o sistema binrio obedece lei de
formao. Vejamos.

O nmero 1001, no sistema binrio, de acordo com a


lei de formao, composto da seguinte forma:
1 = 1x23 + 0x22 + 0x21 + 1x20
O nmero 11011, no sistema binrio, de acordo com a
lei de formao, composto da seguinte forma:
11011 = 1x24 + 1x23 + 0x22 + 1x21 + 1x20

Idoeta e Capuano (1998, p. 2) expem que, no sistema binrio


para representarmos a quantidade zero, utilizamos o algarismo
0, para representarmos a quantidade um, utilizamos o algarismo 1. E para representarmos a quantidade dois, se ns no
possumos o algarismo 2 nesse sistema? simples. No sistema
decimal, ns no possumos o algarismo dez e representamos
a quantidade de uma dezena utilizando o algarismo 1 seguido
do algarismo 0. Neste caso, o algarismo 1 significa que temos
um grupo de uma dezena e o algarismo 0 nenhuma unidade,
o que significa dez.

Essa mesma idia est presente tambm no sistema binrio, proveniente da


lei de formao. Para se representar o nmero dois, utilizado o algarismo 1
seguido do algarismo 0. Assim, o algarismo 1 representa dois elementos (base2
ao invs de 10 do sistema decimal) e 0 representa nenhuma unidade.
Ao contrrio do decimal, em que cada posio de algarismo recebe um
nome (unidade, dezena, centena, milhar, etc), no binrio cada algarismo
chamado de bit (binary digit dgito binrio, em portugus). As denominaes
no sistema binrio aparecem pela quantidade de bits. Veja tabela 2.
Tabela 2 Nibble, Byte, Word

40

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Bits

Denominao

4
8
16

Nibble
Byte
Word

Aula 3 Computao Bsica

Gates (1995) apresenta uma forma diferente, no intuito de facilitar


o entendimento, sobre o sistema numrico binrio. Gates introduz uma
idia diferente de como iluminar um ambiente. Imagine um quarto com
uma nica lmpada de 250 watts. Contudo suponha que, ao invs de
uma, o quarto tenha 8 lmpadas de menor intensidade (de 1 a 128
watts). Veja figura 1.

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

interruptor interruptor interruptor interruptor interruptor interruptor interruptor interruptor

Figura 1 Lmpadas de intensidade diferentes com seus interruptores


Fonte: Gates (1995).

No ambiente, h um interruptor para cada lmpada e elas so arranjadas


em ordem crescente de potncia da direita para a esquerda, ou seja, a de
maior potncia est mais esquerda e a de menor mais direita (note que a
mesma idia dos pesos da lei de formao). Dessa forma, ao ligar e desligar
os interruptores, possvel ajustar a iluminao do ambiente.
Se quiser somente 1 watt de luz, liga s o interruptor mais direita. Se
quiser 191 watts, liga todos os interruptores, com exceo do da lmpada
de 64 watts. Assim como se voc quiser ajustar o nvel de iluminao em
137 watts, ligam-se as lmpadas de 128, 8 e 1 watts, como representado
na figura 2.

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

interruptor interruptor interruptor interruptor interruptor interruptor interruptor interruptor

Figura 2 Interruptores ajustados para produzir 137 watts


Fonte: Gates (1995).

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

41

Aula 3 Computao Bsica

Gates (1995, p. 41) complementa que


para encurtar ainda mais a notao, voc pode registrar cada
desligado com 0 e cada ligadocom 1. O que significa
que, em vez de escrever ligado, desligado, desligado, desligado, ligado, desligado, desligado, ligado, vale dizer, ligue
a primeira, a quarta e a oitava das oito lmpadas e deixe
as outras desligadas, voc escreve a mesma informao como
1, 0, 0, 0, 1, 0, 0,1, 1 ou 10001001, um nmero binrio. No
caso, 137.

A idia de ligar e desligar interruptores a que est por trs do sistema


binrio, como vimos. A princpio pode at parecer complicado, mas no
sistema decimal essa mesma idia utilizada, regida pela lei de formao.

3.2 Sistema octal (Base 8)


O sistema octal, intuitivamente, nos induz que nesse sistema de numerao
existem oito smbolos diferentes para se representar qualquer nmero natural,
so eles: 0, 1, 2, 3, 4, 5, 6 e 7.
O sistema octal tambm obedece lei de formao. Vejamos.

O nmero 735 no sistema octal, de acordo com a lei


de formao, composto da seguinte forma:
735 = 7x82 + 3x81 + 5x80

3.3 Sistema hexadecimal (Base 16)


O sistema hexadecimal possui 16 smbolos de representaes. Como j
vimos, os algarismos arbicos so apenas dez e, sendo assim, faltam ainda
seis algarismos. Desse modo, o sistema hexadecimal fica constitudo pelos
seguintes smbolos ordenados crescentemente:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Note que A=10, B=11, C=12, D=13, E=14 e F=15. Loureno e outros
(1996, p. 7) dizem que outros smbolos poderiam ser utilizados para representar as quantidades maiores que 9, porm, as letras foram escolhidas pela
facilidade de manuseio.
A lei de formao tambm rege o sistema hexadecimal, uma vez que ele
tambm um sistema de representao posicional.

42

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

Exemplo
O nmero A29F no sistema hexadecimal, de acordo com a lei de formao,
composto da seguinte forma:
A29F = Ax163 + 2x162 + 9x161 + Fx160

10x163 + 2x162 + 9x161 + 15x160

3.4 Padres de representao


De acordo com Loureno e outros (1996), existem vrios padres para se
representar os nmeros em diferentes bases. Os mais comuns so:
utilizar uma letra aps o nmero para indicar a base;
colocar o nmero entre parnteses e a base como um ndice do nmero.
Exemplos
Sistema decimal: 1673D ou (1673)10
Sistema binrio: 1001B ou (135)2
Sistema octal: 753O ou (753)8
Sistema hexadecimal: F3AH ou (F3A)16

3.5 Tabela de converso entre bases


J vimos a idia de alguns dos principais sistemas de representao posicional de nmeros: decimal, binrio, octal e hexadecimal. Conhecer suas equivalncias de extrema importncia para as converses que sero estudadas
mais adiante e so apresentadas na tabela 3.
Tabela 3 Tabela de equivalncia entre as bases 2, 8, 10 e 16
Base 10
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

43

Aula 3 Computao Bsica

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

a) 43610 = 043610 = 0043610 = 00043510


b) 111012 = 0111012 = 00111012 = 000111012
c) 6178 = 06178 = 006178 = 0006178
d) F4316 = 0F4316 = 00F4316 = 000F4316

3.6 Converses de qualquer base para a base 10


Para se converter um nmero de qualquer representao posicional para a
base 10, basta aplicar a lei de formao, substituindo b pela base do nmero
a ser converto e an por seus algarismos.
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

3.7 Converso da base 2 para qualquer base


Acabamos de ver que, para se converter um nmero de qualquer base para
o sistema decimal, utilizada a lei de formao que so, basicamente, sucessivas multiplicaes dos algarismos por seus pesos. Agora queremos o inverso,
do sistema decimal para as demais bases. Sendo assim, precisamos realizar a
operao matemtica inversa que utilizamos anteriormente, ou seja, a diviso.

44

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

Loureno e outros (1996, p. 9) dizem que


dado um nmero inteiro escrito na base 10, para se obter seu
equivalente em uma base b qualquer, divide-se o nmero por
b tantas vezes quantas necessrias para que o quociente da
diviso seja menor que b. O ltimo quociente da diviso e
os restos das divises sucessivas, tomados na ordem inversa,
correspondem ao nmero na base b.

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)

Quando o quociente menor que a base desejada, pra de se efetuar as


divises. O resultado da converso o ltimo quociente concatenado com os
restos das divises do fim para o comeo. Dessa forma, obtm (1111101)2.O
mesmo exemplo anterior por ser visto na figura 3.
125

62

31

15

sentido da leitura
(125)10 = (1111101)2

Figura 3 Exemplo de mltiplas divises na converso do nmero (125)10 para a base 2


Fonte: Loureno e outros (1996).

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

45

Aula 3 Computao Bsica

3.8 Converso entre base 2 e 16


A converso entre os sistemas binrio e hexadecimal pode ser feita diretamente, sem a necessidade de operaes aritmticas. Isso ocorre porque existe
uma estreita relao entre esses dois sistemas posicionais de representao.
Afinal, o nmero 16 (base do sistema hexadecimal) pode ser expresso como 24
(repare o dois do sistema binrio na base). Ou seja, os nmeros hexadecimais
podem ser vistos como uma representao compacta dos nmeros binrios. A
converso da base 2 para a base 16 realizada da seguinte forma:
segmenta-se o nmero em parte de 4 (repare que quatro a potncia
de 24) algarismos da direita para a esquerda;
cada segmento convertido diretamente para o seu equivalente em
hexadecimal (de acordo com a tabela 3).
Exemplo
(1010011011)2
0010 1001 1011
2

A converso da base 16 para a base 2 realizada da seguinte forma:


cada algarismo hexadecimal convertido diretamente para o seu
equivalente em binrio com quatro bits (de acordo com a tabela 3).
Exemplo
(54B)16
5

0101

0100

1011

3.9 Converso entre as bases 2 e 8


A converso entre as bases 2 e 8 tambm pode ocorrer diretamente, assim
como entre as bases 2 e 16. Isso porque tambm h uma relao entre essas
duas bases, afinal 8 tambm pode ser reescrito como 23. A converso direta,
contudo, ao invs de se formar grupos de quatro algarismos, formam-se grupos
de trs algarismos.

46

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

Exemplo
(1010011011)2
001

010

011

011

Por outro lado, a converso de um nmero octal em binrio procede-se


de modo idntico ao da converso da base 16 para a base 2. Assim, cada
algarismo octal convertido diretamente para o seu equivalente em binrio de
trs bits (de acordo com a tabela 3).
Exemplo
(543)8
5

101

100

011

3.10 Converso entre as bases 8 e 16


Falta apenas vermos mais uma converso entre as bases analisadas. Para
converter um nmero octal em hexadecimal preciso realizar um passo intermedirio por meio do sistema binrio. simples de enxergar isso, uma vez que no
conseguimos reescrever o nmero 16 na base 8 elevado a alguma potncia.
Contudo ambos podem ser reescritos respectivamente como 24 e 23, tendo ambos
como base 2, ou seja, podem ser reduzidos diretamente para o sistema binrio.
Exemplo
(543)8
5

101
100
011
Encontrado o binrio, realiza-se a converso da base 2
para a base 16.
0001 0110 0011
1

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

47

Aula 3 Computao Bsica

Na converso de hexadecimal para octal, tambm necessrio um passo


intermedirio em que se utiliza o sistema binrio. Assim, converte-se o nmero
da base 16 para a base 2 e, em seguida, este para a base 8.
Exemplo
(1F4B)16
1

0001

1111

0100

1011

Encontrado o binrio, se realiza a converso da base 2 para a base 8.


001
111
101
001
011
1

3.11 Converso de nmeros fracionrios


Os nmeros fracionrios tambm podem ser representados nas bases 2, 8
e 16. Afinal, esses nmeros podem ser representados na base 10. Para isso,
basta ampliar a aplicao da lei de formao:
Nmero = anbn + an1bn1 + an2bn2 + ... + a0b0 + a1b1 + a2b2 + ... + ambm

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

= 8 + 4 + 0 + 1 + (0/2) + (1/4) + (1/8) = 13,37510

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

b) Base 8 para base 10


51,348 = 5 x 81 + 1 x 80 + 3 x 8-1 + 4 x 8-2

= 40 + 1 + (3/8) + (4/64) = 41,437510

c) Base 16 para base 10


1F,5C016 = 1 x 161 + 15 x 160 + 5 x 16-1 + 12 x 16-2 + 0 x 16-3

= 1 + 15 + (5/16) + (12/256) + (0/4096) = 16,35937510

A converso da base 10 para as bases 2, 8 e 16 um pouco diferente da


parte fracionria. A parte inteira convertida separadamente pelas divises
sucessivas. Para a parte fracionria, utiliza-se o processo das multiplicaes
sucessivas pela base desejada.
Exemplos

a) Base 10 para a base 2


7,42710 = parte inteira: 1112

parte fracionria:
0,25

0,50

x 2

x2

0,50

1,0

0,0 FINAL

7,42710 = 111,012

b) Base 10 para a base 2 (dzima peridica)


6,410 = parte inteira: 1102

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

49

Aula 3 Computao Bsica

c) Base 10 para a base 8


26,210 = parte inteira: 328

parte fracionria: 146314361...8 (dzima peridica)

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

d) Base 10 para a base 16


69,124610 = parte inteira: 4516

parte fracionria: 1FE516... (no peridica)

Estamos chegando ao fim desta aula, em que expusemos que existem


vrios sistemas de numerao. Dentre os sistemas de numerao, os de representao posicional (atribuio de pesos para cada posio de algarismo) se
destacam pela facilidade de realizao de operaes aritmticas, que sero
estudadas na prxima aula.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Computao Bsica

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

2. Leia as afirmativas a seguir sobre converso de bases.


I. O nmero (765)10, (765)8 e (765)16 so iguais.
II. O nmero (11001110)2 maior que (D1)16.
III. Os nmeros (11101010)2 e (504C)16 so nmeros pares.
Assinale a alternativa correta:
a) Somente I verdadeira.
b) Somente II falsa.
c) Somente III verdadeira.
d) Todas as alternativas so verdadeiras.

Comentrio das atividades


Na atividade 1, basta utilizar as converses vistas durante a esta aula.
Assim, as respostas corretas so (F46A)16 = (62570)10, (295)10 = (100100111)2,
(1001101)2 = (4D)16, (1A42)16 = (15102)8, (765)8 = (501)10, (1024)10 =
(400)16, (101,001)2 = (5,125)10, (B1,5)16 = (177,8)10.
J na atividade 2, a resposta correta a letra (c). O item (I) falso porque
(765)10 = (1375) 8 = (2FD)16. J no item (II), o nmero (11001110)2 = 206
menor que (D1)16 = (209)10, por isso falsa. O item (III) o nico verdadeiro,
pois (11101010)2 = (234)10 e (504C)16 = (20556)10. necessrio acrescentar
que todo nmero binrio terminado em 0 par, assim como todo nmero octal
terminado em 0, 2, 4 e 6, decimal terminado em 0, 2, 4, 6 e 8, e hexadecimal
terminado em 0, 2, 4, 6, 8, A, C, E so pares. Os demais so mpares. Se
voc conseguiu resolver estas atividades significa que compreendeu os sistemas
de representao numrica de base 2, 8, 10 e 16 e suas converses, que o
objetivo desta aula.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

51

Aula 3 Computao Bsica

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Computao Bsica

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.

4.1 Aritmtica em sistemas binrios


Os nmeros podem ser representados utilizando qualquer base, seja ela
binria, octal, decimal, hexadecimal ou outra qualquer. Para a computao

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

53

Aula 4 Computao Bsica

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.

4.2 Notao de nmeros binrios positivos e negativos


Em aplicaes prticas, os nmeros binrios devem ser representados com
sinal. Uma maneira de fazer isso adicionar um bit de sinal ao nmero. Esse
bit adicionado esquerda do nmero. Se for 0, o nmero em questo positivo; caso seja 1, o nmero negativo.
Outra forma de representao de nmeros negativos bastante utilizada o
complemento de 2. Para obtermos o complemento de 2 de um nmero binrio,
precisamos inicialmente converter o nmero em seu complemento de 1. O
complemento de 1 de um nmero binrio obtm-se trocando cada bit pelo seu
complemento. A seguir, soma-se 1 ao complemento de 1, obtendo-se assim o
complemento de 2.
Um exemplo de notao em complemento de 2 descrita na tabela 1.
Tabela 1 Complementos de 1 e de 2
Binrio

Complemento de 1

Complemento de 2

11100110

00011001

00011010

10100010

01011101

01011110

00100100

11011011

11011100

4.3 Adio em sistemas binrios


Na adio, os nmeros so somados um a um da direita pra esquerda
com os carries (vai 1) sendo passados para o prximo bit esquerda. A tabela
bsica para soma de binrios est ilustrada na tabela 2.
Tabela 2 Tabela bsica da operao binria de adio

54

Primeiro operando

Segundo operando

Resultado da adio

0, e vai 1

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Computao Bsica

Se um carry ocorre no bit mais significativo, gerada uma nova posio


esquerda do ltimo bit, semelhante aritmtica decimal. A figura 1 ilustra
uma simples adio, e a figura 2, uma adio em que ocorre carry no bit
mais significativo.
(vai um)

6=

+7=

13 =

Figura 1: Operao de adio com carries ocorrendo antes do bit mais significativo
(vai um)

10 =

+7=

17 =

Figura 2: Operao de adio com carry ocorrendo no bit mais significativo

No caso da operao de adio gerar um carry no bit mais significativo,


acontece o que chamamos de overflow.

Overflow ocorre quando somamos dois operandos positivos e


obtemos um resultado negativo, ou vice-versa (CASTRO, 2005).

Na operao de adio em nmeros com notao em complemento de 2,


somam-se os dois nmeros e descarta-se o carry. Vejamos o exemplo demonstrado na figura 3.
(vai um)

15 =

-6=

9=

1*

Figura 3: Soma de nmeros binrios em complemento de 2 (*Carry descartado)

4.4 Subtrao em sistemas binrios


A subtrao utiliza tambm os mesmos princpios da operao realizada em sistemas decimais. Na tabela 3, exemplificamos a tabela bsica de
subtrao em nmeros binrios.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

55

Aula 4 Computao Bsica

Tabela 3 Tabela bsica da operao binria de subtrao


Primeiro operando Segundo operando Resultado da subtrao
0

1
1

0
1

0
1, vai 1 para ser subtrado no
dgito seguinte
1
0

Para exemplificar melhor, mostraremos um exemplo descrito na figura 4.


*

14 =

7 =

7=

Figura 4: Operao de subtrao entre dois nmeros

Quando temos 0 menos 1, precisamos pedir emprestado do elemento


vizinho. Esse emprstimo vem valendo 2 (dois), pelo fato de ser um nmero
binrio (10). Ento, no caso da coluna 0 1 = 1, a operao realizada na
verdade foi 2 1 = 1. Esse processo se repete e o elemento que cedeu o
emprstimo e valia 1 passa a valer 0. Os asteriscos marcam os elementos
que emprestaram para seus vizinhos. Quando acontecer de o nmero que
emprestar no poder emprestar para ningum, ento o pedido passa para o
prximo elemento e esse zero recebe o valor de 1.
A maneira mais eficiente de se implementar a subtrao utilizando a
notao binria com complemento de dois. Assim, ao invs de implementarmos
a subtrao, faz-se o complemento de dois no minuendo e soma-se os dois
valores. Um exemplo dessa caracterstica da subtrao de nmeros binrios
a mostrada na figura 5.

7 = 00111

2 = 00010

7 2 => 00111 00010 => 00111 + (11101 + 00001) => 00111 +


11110 => 100101

Figura 5: Subtrao utilizando notao de complemento de dois.

4.5 Multiplicao em sistemas binrios


A multiplicao realizada por meio dos mesmos mtodos do sistema
decimal, a nica diferena no momento de somar os termos resultantes da
operao, o qual obedece s regras da adio de nmeros binrios.

56

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Computao Bsica

Na figura 6 mostrado um exemplo de como se comporta a multiplicao


de dois nmeros.
1

Multiplicando

Multiplicador

X
+
+
+

Figura 6: Exemplo de multiplicao com binrios

A tabela bsica para multiplicao de nmeros binrios mostrada na


tabela 4.
Tabela 4 Tabela bsica da operao binria de multiplicao
Primeiro
operando

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

57

Aula 4 Computao Bsica

O algoritmo utiliza a notao em complemento de 2 e foi inventado em


1951 por Andrew D. Booth, enquanto fazia cristalografia no Colgio Birkbeck,
em Bloomsbury, Londres.

4.6 Diviso em sistemas binrios


A diviso em sistemas binrios feita utilizando-se das mesmas tcnicas
dos outros sistemas, bastando para isso obedecer a algumas regras na hora
da subtrao.
Na diviso do nmero 6 pelo nmero 2, temos a operao mostrada na
figura 7, na qual o quociente 3.

Figura 7: Exemplo de diviso com binrios

4.7 Aritmtica de ponto-flutuante


Nmeros de ponto-flutuante normalmente so difceis de serem representados computacionalmente, pois os mesmos podem ser muito extensos ou
podem ser infinitos.
As operaes aritmticas utilizando nmeros de ponto-flutuante so muito
onerosos e, por isso, foi necessrio implement-los em hardware para que
pudessem ter um desempenho aceitvel.
Mano (1998) descreve os algoritmos que podem ser utilizados nas operaes aritmticas de ponto flutuante, pois como muitos computadores no
possuem a aritmtica de ponto-flutuante implementada em hardware, preciso
trat-la via software. Os algoritmos so os a seguir.
4.7.1 Soma e subtrao
Verifica-se se uma das mantissas a operar zero; caso afirmativo:
se for uma soma e uma das parcelas for zero o resultado igual a
outra parcela;
se for uma subtrao e o subtraendo for zero o resultado igual ao
minuendo;

58

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Computao Bsica

se for uma subtrao e o minuendo for zero o resultado igual ao


subtraendo, com o sinal invertido.
Se no houver zeros:
reduzir ao mesmo expoente (o maior);
somar / subtrair as mantissas;
normalizar o resultado.
4.7.2 Multiplicao
Verifica-se se uma das mantissas a operar zero; caso afirmativo, o resultado zero.
Se no houver zeros:
somar os expoentes;
multiplicar as mantissas;
normalizar o resultado.
4.7.3 Diviso
Verifica-se se uma das mantissas a operar zero; caso afirmativo:
se o divisor zero, impossvel e dispara uma exceo de diviso
por zero;
se o dividendo zero, o resultado igual a zero.
Se no houver zeros:
subtrair os expoentes;
dividir as mantissas;
normalizar o resultado.
Para se padronizar a implementao de aritmtica de ponto-flutuante em
CPUs, foi criado em 1985 o padro IEEE 754, o qual est implementado
atualmente na grande maioria das CPUs. O padro IEEE 754 dita algumas
caractersticas citadas em Viana (2005), que so:
a base de representao a binria;
as operaes devem ser executadas em preciso estendida com uso
de dgitos de guarda e expoente deslocado;
o uso do expoente deslocado, tambm chamado caracterstica, tem
por objetivo eliminar o sinal do expoente.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

59

Aula 4 Computao Bsica

Nas operaes aritmticas em ponto-flutuante, aps cada operao


realizado o arredondamento, por isso as operaes de adio, subtrao,
multiplicao e diviso no associativas nem distributivas.
Alm dos erros que podem ser ocasionados por arredondamento, alguns
efeitos afetam a qualidade dos clculos, como cancelamento, propagao de
erros, instabilidade numrica e mau condicionamento. Esses quatro tipos de
erros so relatados da seguinte forma:
o cancelamento ocorre na subtrao de dois nmeros quase iguais,
pois o expoente permanece o mesmo e os dgitos iniciais so todos
zeros, perdendo-se dgitos significativos do resultado;
a propagao de erros ocorre quando uma ou mais somas parciais
tm o expoente maior do que a soma final;
a instabilidade numrica ocorre se um resultado intermedirio contaminado por um erro de arredondamento. Esse erro pode influenciar
todos os resultados subseqentes que dependem desse valor, propagando, assim, os erros de arredondamento;
problemas cujos resultados dependem continuamente dos dados de
entrada so ditos bem postos, em oposio aos problemas mal postos,
mal condicionados ou crticos.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Computao Bsica

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)

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

61

Aula 4 Computao Bsica

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Computao Bsica

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!

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

63

Aula 5 Computao Bsica

5.1 Software livre


Desde os primrdios da histria da computao, quando do incio da
criao de software para os computadores gigantescos, para no se dizer
jurssicos, um tema bastante discutido nas rodas de desenvolvedores, a
classificao do software. Isso se deve a aspectos existentes no processo de
criao de um software, que envolve tanto direitos autorais quanto intelectuais
que devem ser respeitados. Nos ltimos anos, a vertente de software livre tem
ganhado considervel fora devido ao fato da crescente viso de que, segundo
a Free Software Foundation (FSF) (2007), Software Livre uma questo de
liberdade, no de preo. Para entender o conceito, voc deve pensar em liberdade de expresso, no em cerveja grtis.
Isso define com clareza a inteno por trs de um software livre, em que a
caracterizao como livre ou no, no consiste necessariamente em sua gratuidade. Mas voc deve estar se perguntando: mas no gratuito? Onde est
a liberdade nisso ento? Fique calmo, iremos trabalhar com mais detalhes as
subdivises dessa interessante classificao de software.
Toda essa controvrsia deve-se ao fato de existir muita confuso quanto
utilizao do termo livre, uma vez que vem do ingls free, que pode ser traduzido tanto como gratuito ou mesmo livre. O ponto central do software livre
se baseia na idia de se dar liberdade para que usurios executem, copiem,
distribuam, estudem, aperfeioem e modifiquem um software levando em considerao suas caractersticas, expectativas e necessidades, contribuindo para
uma viso construtivista e evolucionria em que diversas pessoas podem trabalhar para torn-lo melhor (OSI, 2007).
Agora voc deve estar se questionando: mas como trabalhar para torn-lo
melhor se foi outra pessoa que o criou, o que posso fazer? A entra uma
caracterstica importantssima de um software livre, que consiste na disponibilizao de seu cdigo fonte para que outras pessoas possam utilizar, alterar ou
mesmo re-distribuir o software com suas alteraes. Isso contribui sensivelmente
para que diversas pessoas tenham acesso informao, difundindo conhecimento e incentivando a pesquisa cientfica (FSF, 2007).
A (FSF, 2007) menciona que, para que um software seja considerado livre,
ele deve necessariamente possuir os quatro princpios da liberdade. So elas:
liberdade n.o 0: o usurio deve ter a liberdade de executar o programa,
para qualquer propsito;

64

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Computao Bsica

liberdade n.o 1: o usurio deve ter a liberdade de estudar e adaptar o


programa para as suas necessidades. O acesso ao cdigo-fonte um
pr-requisito para essa liberdade;
liberdade n.o 2: o usurio deve ter a liberdade de redistribuir cpias
de modo que possa ajudar ao prximo;
liberdade n.o 3: o usurio deve ter a liberdade de aperfeioar o
programa e disponibilizar seus aperfeioamentos, de modo a beneficiar toda a comunidade. O acesso ao cdigo-fonte um pr-requisito
para esta liberdade.

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

65

Aula 5 Computao Bsica

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Computao Bsica

da vertente mais comercial dos softwares, no qual so considerados direitos


autorais e ideolgicos envolvendo custo ou, como tambm so conhecidos,
os softwares proprietrios.

Pensando sobre o assunto


O software livre muito utilizado no contexto acadmico, porm nada impede ou
mesmo inviabiliza que um software desenvolvido sobre um ambiente puramente acadmico tenha fins comerciais de mercado, um exemplo claro disso consiste no Google,
que foi desenvolvido em um ambiente universitrio.

5.2 Software proprietrio


Depois de conhecida toda a ideologia existente por trs dos softwares
livres, chegou a vez de discuti-lo como um bem material que envolve custos
e at mesmo segredos de mercado. Opinies quanto ao software livre como
uma grande utopia, ou como uma idia muito frente de seu tempo, podem
ser encontradas facilmente na Internet e no mercado.
O que pregado em defesa do software proprietrio melhor analisado
quando utilizada uma analogia. Por exemplo: um grande chefe de cozinha,
por cozinhar muito bem, tem todo o direito de abrir um restaurante e vender
suas deliciosas iguarias. Ningum pode obrig-lo a ensinar ou mesmo a distribuir suas receitas gratuitamente para que os outros a utilizem. Alguns chefes
fazem questo de compartilhar seus conhecimentos, j outros no, ficando a
critrio do cliente o pagamento ou no pela degustao da iguaria.
Assim, voltando ao software, o que fornecido tem um preo que definido de acordo com a utilidade que este software tem para uma determinada
pessoa que pague o valor sugerido, mesmo que outros discordem completamente desse ponto de vista (MOLINARI, 2007).
Um software comercial ou proprietrio distribudo sem a disponibilizao de seu cdigo fonte, sendo normalmente comercializado sob os
termos de licena de uso, e no de propriedade. O que acontece nesse
caso que, ao adquirir um software, uma pessoa est se comprometendo
somente a utiliz-lo, sem direito algum sob aspectos de comercializao ou
mesmo de sua redistribuio, sob penas e multas severas. Exemplos desse
tipo de software o sistema operacional Microsoft Windows e o assistente
grfico Corel Draw.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

67

Aula 5 Computao Bsica

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.

Uma grande quantidade de softwares proprietrios disponibiliza verses


gratuitas para testes e pode ser classificada como:
shareware: software que, aps certo tempo de utilizao, ou mesmo
nmero de utilizaes, indisponibiliza suas funcionalidades, sendo
necessrio o registro, no caso o pagamento de uma taxa ao proprietrio do software, ou sua excluso do computador. Muitas empresas
proprietrias que desenvolvem software optam pela agregao de
servios aos usurios registrados, a fim de fidelizar o cliente;
demo: serve como um demonstrativo para anlise da viabilidade da
aquisio do produto. muito comum a utilizao dessa modalidade
de distribuio em jogos, que disponibilizam fases, possibilitam a construo de opinio (se vale ou no a pena adquirir o produto), e so
uma verso que no expira e nem pode ser registrada, sendo necessria a substituio de todo o software, caso opte por adquiri-lo;
trial: semelhante distribuio demo, porm se aplica geralmente
a softwares funcionais, como editores de texto e planilhas eletrnicas,
limitando-os de maneira a no permitir, por exemplo, a edio de
trabalhos ou mesmo no possibilitando que sejam realizadas a persistncia deles na mquina, ou seja, salvar os documentos. Geralmente
so liberados todos os recursos do software, limitando somente alguns
pontos chaves. Assim, pode ser utilizado todo o potencial da ferramenta para aprendizado por tempo indeterminado, porm sempre se
lembrando das limitaes j citadas.

Pensando sobre o assunto


Em sua maioria, os softwares proprietrios so conhecidos como Software Box, ou
melhor, softwares de caixinha. Compra-se um produto finalizado e o usurio tem
pouco ou seno nenhum poder de alterao, de manipulao sobre o que est sendo
adquirido ou mesmo poder para sua customizao.

68

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Computao Bsica

Finalizando esta aula, interessante considerarmos que as divises de


softwares apresentadas no so as nicas disponveis, mas as principais
e mais utilizadas para a classificao de software. Essas classificaes
refletem a idia e a vontade de como os programas de computadores
devem ser utilizados, segundo a viso do desenvolvedor e proprietrio
dos direitos.
Existem ainda diversos mtodos que podem ser utilizados na classificao
de software como, por exemplo, a permisso de utilizao de software gratuitamente, em que possvel que haja um processo de reciprocidade por meio
de uma doao voluntria por parte dos usurios.
Outro exemplo de classificao das distribuies de software consiste na
iniciativa da Microsoft em lanar seus produtos sob licena Shared Source,
isso devido a apelos principalmente da comunidade europia quanto disponibilizao do cdigo fonte. Sob esse tipo de licena, a Microsoft permite
que parceiros, empresas e governo tenham acesso ao cdigo fonte de seus
produtos, minimizando incidentes que, segundo muitos, caracterizam um monoplio do mercado de software, porm sem que seja permitida a alterao e
redistribuio dos produtos da empresa (OSI, 2007).
Isso provoca discusses que mostram como difcil definir qual a melhor
forma de distribuio de software. As classificaes apresentadas nesta aula
apontam para diversos pontos que devem ser considerados e que influenciam diretamente na contextualizao e, por conseqncia, classificao dos
softwares, como valores culturais e contribuies sociais. So vertentes completamente diferentes que apresentam prs e contras, mas que, com certeza,
contribuem para um melhor modelo de produo de conhecimento e disseminao da informao, cada uma sua maneira.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

69

Aula 5 Computao Bsica

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?

Comentrio das atividades


Na atividade 1, os quatro princpios da liberdade consistem em aspectos que
interferem diretamente na classificao de um software livre, assim o primeiro
princpio consiste na liberdade que os usurios devem possuir para a execuo
do software para qualquer que seja o seu propsito. O segundo princpio consiste
na liberdade que o usurio deve possuir para estudar, analisar e adaptar o
programa as necessidades. Para tanto, necessrio que o cdigo fonte esteja
disponvel ao usurio. O terceiro princpio consiste na liberdade que o usurio
deve possuir para a distribuio de cpias alteradas ou no por ele. Finalizando
os princpios, o usurio deve possuir a liberdade de aperfeioar o software e,
alm disso, disponibilizar de modo a proporcionar o bem de outros.
J na questo 2, a diferena existente entre as distribuies de teste proprietrias shareware e trial consiste no fato de que a primeira limita a utilizao
de recursos por meio do tempo ou mesmo quantidade de vezes que o software
utilizado; j o segundo tipo, o Trial, limita a utilizao do software por meio
da indisponibilizao e limitao dos recursos do programa, por exemplo, a
funcionalidade para salvar documentos.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Computao Bsica

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

71

Aula 6 Computao Bsica

6.1 Tipos de redes de computadores


De acordo com a distncia em que os computadores se encontram,
podemos classific-los em alguns tipos, conhecidos como:
redes locais (LAN Local rea Network): so interligaes entre computadores em uma rea geralmente menor que 10km, de alta velocidade
e de baixas taxas de erro;
redes metropolitanas (MAN Metropolitan rea Network): so interligaes entre computadores em uma rea geralmente maior que 10km,
podendo alcanar at 100km;
redes geograficamente distribudas (WAN Wide rea Network): so
interligaes entre computadores em uma rea geralmente maior que
100km, em que o alcance pode se tornar at inter-continental.
Mais recentemente, surgiu um novo tipo de classificao chamado de Rede
de rea Pessoal ou PAN (Personal Area Network), que consiste na interligao
de dispositivos, como fone de ouvido, ou at mesmo celulares e computadores
em que h um compartilhamento de dados por meio de redes bluetooth.

6.2 Topologias de redes de computadores


Os computadores podem ser interligados de vrias formas entre si. Dependendo
de como essa interligao foi feita, podemos classific-las em:
barramento um tipo de ligao multiponto em que h apenas uma
nica via de conexo e o acesso compartilhado entre todos os computadores nela conectados. Por no haver um tipo de hierarquia no envio
de dados, nesse tipo de topologia de rede podem ocorrer colises de
dados, ou seja, mistura de dados no transcorrer da transmisso;

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;

estrela um tipo de ligao ponto-a-ponto em que h um gerenciador


central em que toda a comunicao passada obrigatoriamente, com
isso ser garantido que a informao enviada seja entregue corretamente ao seu destino. Esse tipo de topologia de rede o mais usado
na atualidade.

72

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Computao Bsica

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.

6.3 Meios de transmisso de redes de computadores


Os computadores, as impressoras, entre outros tipos de hardware comunicam-se entre si por meio de um sistema fsico de comunicao pelo qual
os dados so transmitidos. Esse sistema pode ser classificado em trs tipos,
que so:
cabo coaxial: um cabo de cobre que conduz sinais eltricos revestido de uma malha ou trana metlica isolante;
cabo de pares tranado: so cabos entrelaados em forma de espiral
com a finalidade de isolar interferncias de campos eletromagnticos quando h uma transmisso de dados na conduo de sinais
eltricos. O mximo de comprimento de um cabo de pares tranado
de 100 m;
cabo de fibra ptica: so cabos que transmitem dados por meio
de feixes de luz e que podem chegar a grandes distncias. Seu
revestimento feito de uma mistura de vidro, plstico e outros
componentes.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

73

Aula 6 Computao Bsica

6.4 Dispositivos de transmisso de dados


Os dispositivos de redes a seguir so classificados em dois tipos: ativos e
passivos. Os ativos so equipamentos de rede que tm regras pr-definidas,
podendo escolher o melhor caminho de transmisso; j os passivos so equipamentos de rede que no tm regras pr-definidas atuando somente como
um elo entre outros dispositivos. Esses dispositivos so:
pontes (bridges) so dispositivos que tm como objetivo expandir ou
segmentar uma rede de computadores que utilizam o mesmo protocolo, utilizando-se de protocolos distintos;
roteadores (routers) so dispositivos que tm como objetivo interligar
redes de computadores fisicamente distintas, determinando por qual
caminho a informao deve seguir para chegar ao seu destinatrio;
repetidores (repeaters) so dispositivos que tm como objetivo regenerar o sinal atenuado pela distncia, ou seja, aumenta a potncia do
sinal para que consiga atingir grandes distncias;
concentrador (hub) so dispositivos com a finalidade de interligar
vrios computadores entre si. Por no comportar grandes volumes de
dados, so recomendados para redes pequenas. Isso ocorre pelo fato
de receber um sinal de um computador e o envia a todos os outros
computadores da rede;
comutador (switch) so dispositivos semelhantes ao Hub, com a diferena de que possuem inteligncia, ou seja, o sinal recebido por ele
de um computador enviado para o computador especfico sem que
os outros recebam essa informao.

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.

Aps se falar tanto em comunicao de dados, veremos a seguir como so


classificados os bancos de dados, seus usurios e como os dados podem ser
gerenciados por um aplicativo.

74

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Computao Bsica

6.5 Tipos de banco de dados


Os bancos de dados podem ser classificados em quatro tipos distintos, dois
praticamente em desuso e outros dois ainda em uso, que so atualmente usados
por grandes SGBDs (Sistemas Gerenciadores de Banco de Dados) como MySQL,
PostgreSQL entre outros. Esses bancos de dados so classificados como:
hierrquico organizado como rvores e consiste em uma coleo
de registros conectados entre si por ligaes. Cada raiz um pseudon em que cada n um registro;
rede semelhante ao modelo hierrquico, com o diferencial de que
cada registro filho pode ser ligado em mais de um registro pai;
relacional os dados so armazenados em tabelas e apresentados
por meio de relaes. baseado na teoria dos conjuntos e na lgica
de predicados;
orientado ao objeto os dados so armazenados na forma de objetos que
obedecem a propriedades que so integradas a uma estrutura de dados.
Para a manipulao de um banco de dados, existem alguns tipos de usurios, cada um com a sua funo e com um envolvimento diferente dentro desse
contexto. A seguir, veremos como so classificados esses usurios.

6.6 Usurios de banco de dados


Para distinguir a funo em que cada usurio exerce em um banco de
dados, podemos classific-los como:
administradores de banco de dados (DBA) o usurio chefe, com
a funo de supervisionar e gerenciar os recursos fornecidos e que
sero utilizados pelo banco de dados, alm de permitir ou no o
acesso base;

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;

usurio finais so as pessoas que utilizam o banco de dados apenas


para consultar, modificar e gerar algum tipo de relatrio.
A seguir, veremos como composto um SGBD (Sistema de Gerenciamento
de Banco de Dados) e suas principais funes.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

75

Aula 6 Computao Bsica

6.7 Sistema de Gerenciamento de Banco de Dados (SGBD)


uma coleo de programas que facilita a manipulao de uma base de
dados. As principais funes de um SGBD so:
controle de redundncia no permite que a mesma informao seja
gravada em locais diferentes, o que ocasiona um problema na atualizao dos dados;
compartilhamento de dados utiliza-se de um ambiente multiusurio
em que os dados so compartilhados em acessos simultneos;
controle de acesso cada usurio tem um tipo de permisso para
acesso ao banco de dados, somente o que for permitido pelo dba
ser acessado;
controle de transaes toda transao deve ser realizada sem
falhas ou interrupes, como, por exemplo, a atualizao de uma
conta bancria;
mltiplas interfaces h possibilidade de se programar, realizar
consultas e interagir por meio de menus em linguagem natural;
relacionamento entre dados os dados so variados e esto interrelacionados de vrias maneiras, representando um complexo relacionamento entre si;
backup deve-se ter uma facilidade para recuperar falhas e possibilitar a cpia da base para no haver a perda de dados.
Pode-se observar que um SGDB tem vrias funcionalidades para que a
informao, que o principal objeto de armazenamento, possa estar segura e
com um conjunto de acessrios para seu uso.

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.

Na prxima seo, veremos como feita a manipulao e definio dos


dados por meio de comandos que utilizamos para ajudar na construo de
uma tabela de gerao de informao.

76

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Computao Bsica

6.8 Structured Query Language (SQL)


Desenvolvida pela IBM em meados dos anos 60, tem como objetivo ser
uma interface entre o usurio e o SGBD para manipular e definir os dados.
O SQL composto de comandos de manipulao chamado de DDL (Data
Definition Language), como o create, drop, de definio de dados chamado
de DML (Data Manipulation Language), como o insert, update, delete e select
e de controle de dados, chamado de DCL (Data Control Language), como
o grant e o revoke, com o objetivo de ajudar os usurios na construo de
tabelas e gerao de informao coerente.
Por meio do SQL, podemos realizar tarefas de cancelamento ou atualizao dos dados por meio de dois comandos chamados rollback e commit,
ou seja, a cada dado gravado, realizado um commit efetivando sua
gravao. Caso haja uma falha no momento da gravao dos dados, o
banco de dados retorna ao passo anterior por meio do rollback.
Algumas das caractersticas de uma linguagem SQL so:
manipulao de vrias tabelas;
unio de uma instruo SQL dentro de outra instruo SQL;
simples, sem a necessidade de especificar o mtodo de acesso aos
dados;
vrios usurios podem utilizar um banco de dados como: administrador do banco de dados, especialista de banco de dados, programadores e usurio final;
utiliza-se de uma interface para o uso interativo com o banco de dados.
Finalizando esta aula, podemos verificar que as redes de computadores e
os bancos de dados esto em todos os seguimentos de empresas e em pleno
uso, j que, por exemplo, a interligao das informaes de uma matriz com
suas filiais so de suma importncia para o bom rendimento dos produtos
produzidos pela mesma.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

77

Aula 6 Computao Bsica

Atividades
1. Em que consiste uma rede de computadores?
2. Qual a finalidade de um SGBD (Sistema de Gerenciamento de Banco de
Dados)?

Comentrio das atividades


Na atividade 1, uma rede de computadores consiste em fazer uma interligao de computadores independente da distncia em que se encontram, por
meio de um determinado meio de comunicao, passando por um dispositivo
ativo ou passivo como hubs, roteadores, switchs ou bridges.
J na atividade 2, podemos dizer que um SGBD tem como finalidade gerenciar e armazenar informaes de forma que seus usurios possam construir,
definir e manipular uma base de dados para as mais diversas finalidades.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

79

Aula 7 Computao Bsica

7.1 Formao acadmica


Como a Informtica est presente em todos os segmentos do setor
produtivo e ainda pelo motivo de os computadores terem tornado-se objetos
to comuns, amplia-se a necessidade de formao acadmica voltada para
esta rea.
Na corrida para as especializaes, surgem cursos com os mais diferentes
nomes, mas possuindo currculos similares, formando profissionais para atuar
em atividades semelhantes, o que ocasiona certa confuso entre os estudantes
e at mesmo entre os prprios profissionais.
Devido ao fato de que as profisses da rea de informtica no so regulamentadas, ou seja, no existe um rgo fiscalizador, as universidades tm
total liberdade para adotar o nome do curso. 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.
Vamos agora conhecer um pouco mais as profisses relacionadas rea
da informtica.
7.1.1 Cursos de Formao Superior
Conheceremos agora alguns cursos de formao de nvel superior mais
comuns na maioria das universidades pblicas e particulares.
a) Engenharia da Computao
O Engenheiro da Computao trata de assuntos relativos hardware
(mquinas) que trabalham isoladamente (PCs) ou que compem uma
rede (ou sistema) de comunicaes. o responsvel pela arquitetura da
rede e da organizao fsica de computadores e perifricos. Tambm
projeta e constri alguns tipos de hardware computadores, teclados,
monitores, impressoras, chips, placas de som e de vdeo, e ainda equipamentos de automao industrial e at mesmo de robtica.
O planejamento e administrao da rede de computadores de uma
empresa tambm esto entre suas atribuies. Devido ao seu vasto
conhecimento da rea, ainda capaz de criar sistemas operacionais, desenvolver linguagens especficas e realizar atividades de
pesquisas tecnolgicas.
Esse curso tem durao mdia de cinco anos.

80

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

b) Bacharel em Cincia da Computao


O bacharel em Cincia da Computao tem seu foco principalmente no
desenvolvimento dos programas (softwares). Ele pode, ainda, organizar
e desenvolver aplicativos (programas aplicados a determinado processo
de trabalho) de acesso a bancos de dados ou ainda elaborar sistemas
mais complexos, usados por bancos, lojas comerciais entre outros.
Pode ainda trabalhar com marketing e vendas, dando consultoria na
escolha de equipamentos e na assistncia tcnica, planejando e analisando novos produtos, segundo a necessidade do mercado.
Esse curso tem durao mdia de quatro anos.
c) Analista de Sistemas
O Analista de Sistemas o profissional que atua na concepo, na
aplicao e na manuteno dos programas. Cabe a ele a administrao do fluxo de informaes geradas por uma rede de computadores e tambm a manuteno dos computadores.
Este curso tem durao mdia de 4 anos.

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.

7.1.2 Escolhendo uma rea de atuao


A partir das formaes de nvel superior anteriormente mencionadas, que
podem ser encontradas nas mais diversas universidades do Brasil, podemos
escolher algumas reas especficas de atuao.
A seguir, veremos alguns exemplos de reas especficas.
a) Administrador de Banco de Dados

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

81

Aula 7 Computao Bsica

Dentre suas atividades, destacamos manuteno e refinamento de bancos


de dados, alteraes na estrutura do banco para expanso e adaptaes de sistemas, monitoramento e identificao de falhas para aperfeioamento de bancos de dados, coordenao de programadores.

b) Administrador de Redes

Responsvel pela instalao, configurao e manuteno dos sistemas


operacionais e de todos os servios implementados; pesquisa de solues de tecnologia; apoio rea de desenvolvimento de aplicaes;
suporte de ltimo nvel para as equipes de apoio aos usurios; configurao e manuteno do nvel de segurana da rede.

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

Responsvel pelo levantamento das necessidades do cliente e pela


elaborao de um modelo conceitual do sistema a ser desenvolvido.
Suas principais atividades so: levantamento de requisitos do sistema,
definio de cronogramas, prototipao e modelagem de dados,
desenvolvimento, testes, coordenao de implementao.

e) Analista de Software Bsico


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

Profissional responsvel pela instalao e configurao de software e


hardware. A Anlise de Suporte uma atividade muito abrangente,
que inclui desde as tarefas mais simples, como suporte ao usurio de
Windows e Office, por exemplo, at as mais especializadas, como
suporte a servidores.

82

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

Suas principais atividades envolvem instalao e configurao de


ambiente para o usurio (incluindo sistemas operacionais e principais
aplicativos); instalao e configurao de servidores; desenho da rede
interna da empresa.

g) Auditor de Sistemas

Profissional encarregado em auditar sistemas e redes corporativas,


identificando fraudes e outros tipos de irregularidade, alm de analisar
polticas e investimentos necessrios para a estrutura de informtica
do cliente.

Suas principais atividades envolvem a definio de estruturas de


controles internos, identificar e quantificar fraudes, analisar investimentos e riscos, manter contato com o departamento tcnico e de
negcios da empresa.

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

Suas principais atividades envolvem concepo e anlise de projetos,


elaborao de relatrios tcnicos detalhados, coordenao de
suporte e de manuteno de hardware e, eventualmente, elaborao
de prottipos.

i) Engenheiro de Software

Profissional responsvel por criar, manter e auditar metodologias de


desenvolvimento de sistemas em uma empresa.

Suas principais atividades envolvem criao, manuteno e auditoria


de metodologias de desenvolvimento de sistemas; acompanhamento
das mtricas de desempenho e qualidade dos produtos gerados,
comparando-as com as mtricas-padro do mercado; adequao do
padro de qualidade e desempenho dos projetos e produtos gerados
com um planejamento financeiro, dentro da capacidade financeira
da empresa; e seleo e triagem de produtos e servios da rea de
software e sistemas que a empresa venha buscar externamente.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

83

Aula 7 Computao Bsica

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

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.

7.2 A regulamentao das profisses no Brasil


As profisses de Informtica so, hoje, umas das poucas que ainda no
possuem um rgo regulamentador. Ao contrrio do que ocorre com as profisses da rea de Direito, Medicina, Odontologia, Contabilidade, Jornalismo,
Administrao, entre outras, qualquer pessoa que acredite possuir conhecimento e competncia suficientes para atuar na rea e disponibilizar seus
servios ao mercado pode atuar como profissional da rea de Informtica.
A Informtica brasileira enfrenta hoje um srio e real problema: Conselhos
de outras profisses j estabelecidas esto avanando sobre a rea na tentativa de se apropriar de atribuies profissionais que at o presente foram exercidas livremente no pas.
Vrias tentativas foram feitas para solidificar esta profisso como algo independente e bem definido, com seu espao prprio no mercado de trabalho.
Sindicatos e associaes profissionais e empresariais foram fundados.
Entretanto, esta consolidao no se d.
Um dos motivos que levam a pensar profundamente sobre a regulamentao da Informtica acabar com a concorrncia injusta de pessoas que
fazem cursos de curta durao e j saem exercendo atividades nesta rea e
muitas vezes realizam trabalhos de baixa qualidade o que acaba por causar
uma m impresso sobre os profissionais desta rea.
A regulamentao de uma profisso tem como objetivo a proteo da
sociedade contra falsos profissionais, garantindo assim que, ao se contratar
algum servio, tenha-se certeza de que aquele profissional est qualificado a
prest-lo, e que ele ser responsvel por quaisquer danos sejam eles materiais, fsicos, ou de qualquer natureza que porventura venham a ser causados
em decorrncia de seu trabalho. Hoje, um mdico responsvel pela perda de
um paciente, mesmo que seja causada por uma falha em um sistema computacional que ele estava utilizando, quando, na verdade, o profissional que
projetou e implementou aquele sistema (que deve ser da rea de Informtica)
quem deveria assumir tal responsabilidade.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

85

Aula 7 Computao Bsica

7.2.1 O Projeto de Lei


H quase 10 anos, desde a proposio inicial do projeto, tramita na
Cmara dos Deputados o Projeto de Lei 7.109/06, de autoria do deputado
Bonifcio Andrada (PSDB-MG), que dispe sobre a regulamentao do exerccio das profisses de Informtica, cria o Conselho Federal, os Conselhos
Regionais e outras providncias.
A seguir, esto listados alguns Projetos de Lei (PL) com tentativas de regulamentar a profisso:
PL815/1995;
PL 2194/1996 em 01/agosto/1996;
PL 981/1999 em 20/maio/1999;
PL 6639/2002 em 24/abril/2002;
PL 1561/2003 em 29/julho/2003;
PL 1746/2003 em 08/agosto/2003;
PL 1947/2003 em 09/setembro/2003;
PL 7109/2006.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

A partir das formaes de nvel superior anteriormente mencionadas, que


podem ser encontradas nas mais diversas universidades do Brasil, podemos
escolher algumas reas especficas de atuao, tais como:
Administrador de Banco de Dados: responsvel pela manuteno e
refinamento de bancos de dados corporativos;
Administrador de Redes: responsvel pela instalao, configurao e manuteno dos sistemas operacionais e de todos os servios implementados;
Analista de Segurana: responsvel pela segurana da rede, monitorando tentativas de invaso e uso indevido dos recursos da rede;
Analista de Sistemas: responsvel pelo levantamento das necessidades
do cliente e pela elaborao de um modelo conceitual do sistema a
ser desenvolvido;
Analista de Software Bsico: responsvel por desenvolver e implementar sistemas de automao e tempo real;
Analista de Suporte: responsvel pela instalao e configurao de
software e hardware;
Auditor de Sistemas: encarregado de auditar sistemas e redes corporativas, identificando fraudes e outros tipos de irregularidades;
Engenheiro de Hardware: responsvel por conceber projetos hardware
para computadores, telecomunicaes e outros tipos de equipamento
eletrnico;
Engenheiro de Software: responsvel por criar, manter e auditar metodologias de desenvolvimento de sistemas em uma empresa;
Engenheiro de Telecomunicaes: monta, opera e faz manuteno de
redes. Na rea comercial, cria e adapta servios de telecomunicao
para clientes corporativos;
Programador Web: responsvel pelo desenvolvimento de aplicaes
para Web;
Tcnico em Hardware: faz a manuteno da estrutura de hardware
de uma empresa, identifica a causa de problemas nas mquinas e
soluciona os fsicos;
Webdesigner: responsvel pela criao e adaptao de identidade
visual, manuteno de pginas, digitalizao e tratamento de imagens,
diagramao, animaes e confeco de banners;

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

87

Aula 7 Computao Bsica

Webdeveloper: desenvolvimento para Web. Utiliza o Webdevelopment


como uma especializao da programao normal, ajustando-a s
caractersticas prprias da Web;
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.
Voc pde entender que as profisses de informtica so, hoje, umas das
poucas que ainda no possuem um rgo regulamentador.
Entendeu que a informtica brasileira enfrenta hoje um srio e real
problema: conselhos de outras profisses j estabelecidas esto avanando
sobre a rea na tentativa de se apropriar de atribuies profissionais que at
o presente foram exercidas livremente no pas.
Pde compreender tambm que um dos motivos que levam a pensar sobre a
regulamentao da informtica acabar com a concorrncia injusta de pessoas
que fazem cursos de curta durao e j saem exercendo atividades nesta rea e
tambm a proteo da sociedade contra falsos profissionais, garantindo assim
que, ao se contratar algum servio, tenha-se certeza de que aquele profissional
est qualificado a prest-lo, e que ele ser responsvel por quaisquer danos.
Voc tomou conhecimento que existem alguns Projetos de Lei h quase dez
anos. Desde a proposio inicial do projeto, tramita na Cmara dos Deputados o
Projeto de Lei 7.109/06, de autoria do deputado Bonifcio Andrada (PSDB-MG),
que dispe sobre a regulamentao do exerccio das profisses de Informtica,
cria o Conselho Federal, os Conselhos Regionais e outras providncias.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

Assinale a alternativa incorreta:


a) Somente I e IV esto corretas.
b) I, II e III esto corretas.
c) Somente a III est incorreta.
d) Todas as alternativas esto corretas.
2. A respeito da regulamentao profisses da rea de informtica, podemos
afirmar que:
I. as profisses de Informtica so, hoje, umas das poucas que ainda no
possuem um rgo regulamentador, ao contrrio do que ocorre com as
profisses da rea de Direito, Medicina, Odontologia, Contabilidade,
Jornalismo, Administrao, entre outras;
II. a regulamentao de uma profisso tem como objetivo a proteo
da sociedade contra falsos profissionais, garantindo assim que, ao se
contratar algum servio, tenha-se certeza de que aquele profissional est
qualificado a prest-lo, e que ele ser responsvel por quaisquer danos;
III. so alguns Projetos de Lei com tentativas de regulamentar a profisso:
PL815/1995, PL 2194/1996 em 01/agosto/1996, PL 981/1999 em 20/
maio/1999, PL 1947/2003 em 09/setembro/2003, PL 7109/2006;
IV. a informtica brasileira enfrenta hoje um srio e real problema, no
qual os conselhos de outras profisses j estabelecidas esto tentando
se apropriar de atribuies profissionais da rea de informtica.
Assinale a alternativa incorreta:
a) Somente I e IV esto corretas.
b) Somente I, III e IV esto corretas.
c) Somente a I est incorreta.
d) Todas as alternativas esto corretas.
3. Leia atentamente as afirmaes, assinalando com um (V) as afirmativas
verdadeiras e com (F) as falsas.
( )

Um Administrador de Banco de Dados o responsvel pela manuteno e refinamento de bancos de dados corporativos.

( ) O Analista de Segurana o responsvel pela segurana da rede


(equipamento, sistemas operacionais de servidores e clientes e
programas utilizados). Tambm monitora tentativas de invaso e

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

89

Aula 7 Computao Bsica

uso indevido dos recursos da rede, alm de definir e manter as


regras de uso dos recursos computacionais da empresa.
( ) Analista de Sistemas o responsvel pelo levantamento das necessidades do cliente e pela elaborao de um modelo conceitual do
sistema a ser desenvolvido. Entre suas principais atividades, esto
a manuteno e refinamento de bancos de dados, as alteraes
na estrutura do banco para expanso e adaptaes de sistemas,
monitoramento e identificao de falhas para aperfeioamento
de bancos de dados.
( ) Um Administrador de Redes o responsvel pela instalao, configurao e manuteno dos sistemas operacionais e de todos os
servios implementados, alm da configurao e manuteno do
nvel de segurana da rede.
Agora, assinale a alternativa que corresponde sua resposta.
a) V, V, F, V
b) F, V, F, V
c) F, F, V, V
d) V, V, V, F
4. Ainda sobre as reas de atuao dos profissionais de informtica, indique
a alternativa incorreta quanto s atribuies de cada profissional.
a) Webmaster o 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.
b) Engenheiro de Software Profissional responsvel pela instalao e
configurao de software e hardware; instalao e configurao de
ambiente para o usurio (incluindo sistemas operacionais e principais
aplicativos); instalao e configurao de servidores; e desenho da
rede interna da empresa.
c) O Engenheiro de Telecomunicaes o 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.

90

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Computao Bsica

d) Engenheiro de Hardware o profissional responsvel por conceber


projetos hardware para computadores, telecomunicaes e outros
tipos de equipamento eletrnico.

Comentrio das atividades


Para a atividade 1, se voc escolheu a opo (c), voc acertou! Isso
mesmo, a concepo, na aplicao e na manuteno dos programas e aplicativos uma atribuio prpria do Analista de Sistemas, o Engenheiro de
Computao atua principalmente nas reas relativas a hardware de equipamentos computacionais. Parabns, se voc respondeu corretamente, pois
alcanou uns dos nossos objetivos, que o de conhecer a diferena entre as
reas formao profissional mais comuns na rea de informtica. Caso sua
resposta tenha sido diferente, voc dever rever a aula!
Para a atividade 2, a resposta correta a alternativa (d). Parabns,
se voc acertou, pois significa que atingiu um dos nossos objetivos de
entender sobre a situao de regulamentao profissional das reas de
informtica. Caso sua resposta tenha sido outra, voc dever voltar ao
contedo que trata das regulamentao das profisses da rea de informtica e buscar listar os pontos crticos pela no regulamentao dos
profissionais desta rea.
Na atividade 3, se voc optou pela alternativa (a), parabns! A
alternativa falsa das afirmativas a terceira, uma vez que o Analista de
Sistemas o responsvel somente pelo levantamento das necessidades
do cliente e pela elaborao de um modelo conceitual do sistema a ser
desenvolvido. As atividades de manuteno e refinamento de bancos de
dados, as alteraes na estrutura do banco para expanso e adaptaes
de sistemas, monitoramento e identificao de falhas para aperfeioamento de bancos de dados so atividades prprias do Administrador de
Banco de Dados.
Para a atividade 4, se voc escolheu a alternativa (b), voc acertou! O
Engenheiro de Software Profissional responsvel por criar, manter e auditar
metodologias de desenvolvimento de sistemas em uma empresa. Suas principais atividades envolvem criao, manuteno e auditoria de metodologias
de desenvolvimento de sistemas; acompanhamento das mtricas de desempenho e qualidade dos produtos gerados, comparando-as com as mtricaspadro do mercado.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

91

Aula 7 Computao Bsica

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

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

Este caderno de Algoritmos e Programao tem o objetivo de auxili-lo


no estudo da codificao de programas a partir de uma Linguagem de
Programao. Existem vrias Linguagens de Programao, cada uma com
suas caractersticas prprias. Como Linguagem de Programao escolhida,
estudaremos a Linguagem C.
C uma linguagem poderosa, robusta, flexvel e madura. , sem dvida,
uma das linguagens mais utilizadas nos ambientes acadmico e cientfico,
alm de ser comercialmente relevante.
profundo. Para dominar uma Linguagem de Programao, seja qual for, sempre
necessrio estudar a sua sintaxe, ou seja, as formas como os comandos e expresses devem ser escritos. Felizmente, a C uma linguagem de sintaxe simples e
elegante que permite rpido entendimento pelo programador, mesmo iniciante.
Nesse contexto, procuramos abordar os tpicos essenciais que nos permita
escrever um programa completo e til na Linguagem C.
Entre as principais caractersticas da Linguagem C, esto grande flexibilidade, escrita compacta, padronizao bem feita e alta velocidade de processamento. Por essas caractersticas, essa linguagem to popular.
Bons estudos!
Prof. Silvio Costa Sampaio

Apresentao

Conhecer suas principais estruturas e detalhes requer um estudo criterioso e

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.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

97

Aula 1 Algoritmos e Programao

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.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

99

Aula 1 Algoritmos e Programao

O Turbo C implementa funes especficas para o ambiente Windows,


fugindo especificao ANSI C. Isso d origem, no meio tcnico, a uma diviso
da Linguagem C em dois padres de codificao distintos: o ANSI C e BorlandC.
Neste caderno, estudaremos as definies segundo o padro ANSI C.
A Linguagem C apresenta uma gama relativamente grande de tipos de
variveis. Permite ainda a criao de estruturas de dados no homogneas,
como os registros. Outra caracterstica marcante dessa linguagem o seu
extenso acesso ao hardware, permitindo a programao em baixo nvel.
Na verdade, a Linguagem C bastante pequena quando comparada a
outras da sua poca. Isso possvel, pois no C os aspectos no indispensveis
da linguagem so implementados como uma biblioteca de funes, que pode
ser estendida pelo programador.
As idias por trs de C so to simplificadoras e naturais que ela serve de
base para outras linguagens. Muitos compiladores e ambientes de desenvolvimento (IDE) de outras linguagens so implementados em Linguagem C.
Nesta aula, sero abordados os conceitos fundamentais da programao
em Linguagem C. Estudaremos os detalhes bsicos de um programa codificado
nessa linguagem. Esta aula de fundamental importncia para se iniciar na
programao usando essa linguagem.

1.1 Estrutura de um programa em C


Um programa em C constitudo, normalmente, de:
cabealho: contm as diretivas de compilador em que se definem o
valor de constantes simblicas, declarao de variveis, incluso de
bibliotecas, declarao de rotinas, etc.;
bloco de instrues principal e outros blocos de rotinas;
documentao do programa: comentrios.
A seguir, cada parte fundamental de um programa em C discutida.
1.1.1 Conjunto de caracteres vlido
Um programa fonte em C , na prtica, um texto no formatado escrito
em um editor de textos usando um conjunto padro de caracteres ASCII. Como
caracterstica de cada linguagem definido o conjunto de caracteres que
podero ser usados nesse arquivo fonte.

100

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

A seguir, esto os caracteres permitidos na linguagem C.

Caracteres vlidos:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
+-*/\=|&!?#%(){}[]_.,:<>

O uso de algum caractere invlido (fora desse conjunto) dar


origem a um erro na gerao do programa. Por isso, muito importante
conhecer esse conjunto de caracteres antes de iniciar a codificao em
qualquer linguagem.
1.1.2 Palavras-chave
So identificadores que no podem ser usados pelo usurio para
identificar uma varivel ou funo, por exemplo, e tambm so ou constituem partes de comandos ou declaraes da linguagem.
As palavras-chave so bem poucas, se compararmos com o nmero de
comandos de outras linguagens como PASCAL. A seguir, so listadas todas
as palavras-chave da Linguagem C (SILVEIRA FILHO, 1997).

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

Esse conjunto de palavras-chave pode variar de compilador para


compilador, podendo ter algumas palavras extras, especficas de cada
compilador. Porm o uso de palavras-chave fora do padro poder criar
problemas, caso voc queira que um determinado programa construdo por
voc possa ser levado de um compilador para outro ou mesmo para outra

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

101

Aula 1 Algoritmos e Programao

mquina. A essa caracterstica de podermos migrar um programa com um


mnimo de modificaes chamamos de portabilidade. Se voc pretende
fazer com que seu programa seja o mais portvel possvel, evite o uso de
palavras-chave diferentes das anteriores.
Cabe ressaltar que todas as palavras-chave na Linguagem C devem ser
escritas em letra minscula. O C distingue as letras minsculas de maisculas. A essa caracterstica chamamos de case-sensitive. Com isso, os identificadores int e Int so considerados identificadores diferentes pelo compilador. Essa caracterstica, pouco comum em outras linguagens, poder lhe
causar confuso no incio de seus estudos em C.
1.1.3 Comentrios
Durante a codificao de um programa, muitas vezes precisamos
explicar determinados trechos de cdigo a fim de tornar mais fcil o seu
entendimento, principalmente quando a codificao realizada em equipe
muito comum em empresas de software. O uso de comentrio deve ser
uma prtica constante, pois voc deve sempre assumir a possibilidade de
outro programador ter de manter ou continuar o seu cdigo e, nesse caso,
qualquer informao adicional que permita entender melhor o seu cdigo
ser til. Algumas empresas avaliam a qualidade da codificao de um
programador por sua habilidade em inserir comentrios teis e claros em
seu cdigo.
Em C, comentrios podem ser escritos em qualquer lugar do texto para
facilitar a interpretao do algoritmo. Para que o comentrio seja identificado como tal, voc pode delimitar o trecho de duas formas:
caso o trecho a ser comentado ocupe apenas uma linha, basta
inserir duas barras seguidas no incio da linha. Com isso, o compilador entende que todo o trecho que estiver direita da linha deve
ser considerado como comentrio;
caso o trecho a ser comentado ocupe mais de uma linha,
necessrio delimitar o incio e o final do comentrio. Para
indicar o incio de um comentrio, voc deve usar o caractere
barra seguido do caractere asterisco. Para indicar o final de um
comentrio, voc deve usar o caractere asterisco seguido de um
caractere barra.

102

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

O exemplo a seguir mostra trechos de comentrio nas duas formas


citadas.
// Comentrio de uma linha
/*
Esse programa foi desenvolvido pelo
Fulano de Tal
Bl, bl, bl
*/
1.1.4 Diretivas de compilao
Na Linguagem C, existem comandos que no denotam instrues e so
processados apenas durante a compilao do programa. Esses comandos
so chamados de diretivas de compilao.
Esses comandos informam ao compilador do C as opes que devero
ser utilizadas na gerao do programa.
A diretiva #include, por exemplo, informa ao compilador para incluir
na compilao do programa outros arquivos que incluem cdigos ou definies usadas no programa. Geralmente, esses arquivos informados pela
diretiva #include contm bibliotecas de funes ou rotinas do usurio. Outra
diretiva muito utilizada a #define que informa ao compilador quais so as
constantes simblicas usadas no programa.
A linha #include <stdio.h>, por exemplo, diz ao compilador que ele
deve incluir o arquivo-cabealho stdio.h. Nesse arquivo, existem definies
de funes teis para entrada e sada de dados. Assim, toda vez que voc
quiser usar uma dessas funes, dever incluir esse comando.
de fundamental importncia para o aprendizado da LinguagemC
que voc procure conhecer o conjunto de bibliotecas de funes do C.
Por exemplo, para voc poder utilizar as funes de manipulao de
variveis do tipo literal (string), necessrio incluir a diretiva #include
<string.h>; caso contrrio, o compilador no ir reconhecer as funes
usadas no programa.
Infelizmente, nesse caderno no possvel apresentar todo o conjunto
de bibliotecas do C. Mas voc deve conhec-lo!

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

103

Aula 1 Algoritmos e Programao

1.1.5 Declarao de variveis e constantes


As variveis no C devem ser declaradas antes de serem usadas. na
declarao de uma varivel que devemos explicitar qual o seu tipo e indicar
ao computador a necessidade de reservar um espao em memria para
conter o valor para essa varivel.
Em C, uma varivel deve ser sempre declarada usando a seguinte
sintaxe: <tipo_de_dados> <identificador> [, <identificador>...];. Os tipos de
dados da linguagem C so discutidos a seguir. Exemplos de declarao de
variveis em C:
int numero;

// declara a varivel nmero do tipo inteiro

float a,b;

// declara as variveis a e b do tipo real

Um ponto importante na declarao de variveis e constantes em C


a formao dos identificadores. Os identificadores em C podem iniciar por
qualquer letra maiscula ou minscula ou o sinal de sublinhado (underscore)
representado pelo sinal _. No meio de um nome, poder haver letras,
nmeros ou o sinal de sublinhado e nada mais.
Cabe ainda sugerir que voc utilize identificadores com sentido explcito. Por exemplo, se voc tiver de criar uma varivel para armazenar a
soma total de produtos, deve utilizar um identificador como soma_total_
produtos, ao invs de usar soma ou apenas n.
importante lembrar tambm que voc no poder usar como identificador de varivel nem o mesmo identificador de uma palavra-chave
nem o de uma funo j definida em uma biblioteca ou no prprio
programa.
1.1.5.1 Tipos de dados e modificadores
As diferenas entre os tipos de variveis do pseudocdigo para o C
so: o tipo inteiro mapeado para int; o tipo real mapeado para float ou
double; e o tipo caractere mapeado para char.
A Linguagem C ainda permite alterar a preciso dos valores com
a utilizao de modificadores e com isso acaba definindo novos tipos
de dados. A seguir, so listados os modificadores de tipo usados na
Linguagem C.

104

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

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

unsigned short int

16

0 a 65.535

signed short int

16

-32767 a 32767

long int

32

-2.147.483.647 a 2.147.483.647

signed long int

32

-2.147.483.647 a 2.147.483.647

unsigned long int

32

0 a 4.294.967.295

Float

32

seis dgitos de preciso

Double

64

dez dgitos de preciso

80

dez dgitos de preciso

long double
Fonte: Feitosa (2004).

1.1.5.2 Escopo de uma varivel


O escopo de uma varivel define a visibilidade de uma varivel, ou seja,
onde ela pode ser referenciada em seu programa. Na Linguagem C, uma
varivel pode assumir um de trs escopos:
variveis locais: declarada dentro de um bloco de cdigo, sendo
apenas visvel dentro dele;
variveis no locais: variveis declaradas em um bloco que contenha
outro bloco dentro de si so chamadas de no locais quando estiverem
no bloco mais interno, no entanto continuam sendo visveis;
variveis globais: uma varivel declarada fora de todas as funes
tambm chamada de varivel global.
Normalmente, voc ir utilizar variveis globais quando um valor precisar
ser conhecido e manipulado em vrias partes do programa. J as variveis
locais sero utilizadas quando a varivel tem uma funo especfica dentro de
um bloco de comandos (por exemplo, contador de repetio).
1.1.5.3 Constantes
Constantes so valores que so mantidos fixos pelo compilador. Para o C,
uma constante pode ter quatro classificaes. Vejamos.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

105

Aula 1 Algoritmos e Programao

Constante de um tipo bsico: esse o tipo de constante mais comum


em um programa em C. Essas constantes derivam de um tipo de dado
bsico da linguagem. A listagem a seguir apresenta essas constantes.
Tipo de Dado
Char
Int
long int
short int
unsigned int
Float
Double

Exemplos
a \0 \t
5 2345 -17
234000 -509876
120 -12
50000 35678
0.0 23.7 -12.3e-10
12546354334.0 - 0.0000034236556

Constante hexadecimal ou octal: em alguns casos, precisamos utilizar


valores constantes hexadecimais (base dezesseis) ou octais (base oito)
no programa. A linguagem C permite o uso de constantes desse tipo,
no qual uma constante hexadecimal inicia com 0x e uma octal com
0. Por exemplo, os valores 0xF2 e 0362 representam o valor 242 (em
decimal) em hexadecimal e octal;
Constante string: para a linguagem C, uma string uma varivel
do tipo literal, ou seja, um conjunto de caracteres. Uma constante
string delimitada por um par de aspas. Por exemplo, uma string
Florianpolis , na verdade, uma constante string;
Constante de formatao: essas constantes, tambm conhecidas como
constantes de barra invertida, so usadas para formatar a sada de
dados. Essas constantes so usadas como um caractere comum, por
exemplo \t para a tabulao horizontal. A listagem a seguir apresenta a lista dessas constantes.

106

Cdigo

Significado

\b

Retrocesso (back)

\f

Alimentao de formulrio (form feed)

\n

Nova linha (new line)

\r

Retorno de carro (carriage return)

\t

Tabulao horizontal (tab)

Aspas

Apstrofo

\0

Nulo (0 em decimal)

\\

Barra invertida

\v

Tabulao vertical

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

\a

Sinal sonoro (beep)

\N

Constante octal (N o valor da constante)

\xN

Constante hexadecimal (N o valor da constante)

1.1.6 A funo principal main()


Todo programa em C tem de ter uma funo main (principal, em ingls).
essa funo que ser chamada quando o programa for executado. Assim, a
partir dessa funo que invocamos as demais funes do nosso programa.
A declarao da funo main() pode conter parmetros formais. Mas a definio desses parmetros determinada pela linguagem, no podendo ser alterada apenas omitida. A declarao mais completa que se pode ter para a
funo main() : int main (int argc,char *argv[]);.
Os parmetros argc e argv do ao programador acesso linha de comando
com a qual o programa foi chamado. Assim, possvel receber valores diretamente na chamada do programa.
O parmetro argc (contador de argumentos do ingls argument count)
um inteiro e possui o nmero de argumentos com os quais a funo main() foi
chamada na linha de comando. Ele possui o valor mnimo de um, pois o nome do
programa contado como sendo o primeiro argumento.
O parmetro argv (valores dos argumentos do ingls argument values)
um ponteiro para um vetor de strings. Cada string desse vetor armazena um
dos parmetros passados na linha de comando. Assim, a instruo argv[0]
sempre aponta para o nome do programa (que, como j foi dito, considerado
o primeiro argumento).
1.1.7 Blocos de comandos
Em C, assim como em pseudocdigo, um bloco de comando representa uma
estrutura seqencial de instrues que devero ser executadas uma aps a outra.
Um bloco definido no pseudocdigo pelas palavras INICIO/FIM, na LinguagemC
sero representados por um par de chaves { }. A seguir, mostrado um exemplo
que permite comparar o uso de blocos em pseudocdigo e em Linguagem C.
Em pseudocdigo:
VAR x, y: real;

valor: inteiro;
INICIO
valor x + y;
FIM

Em linguagem C:
float x,y;
int valor;
int main()
{valor = x + y;
}

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

107

Aula 1 Algoritmos e Programao

1.1.8 Entrada e sada de dados


A Linguagem C oferece um grande conjunto de funes que permite ler
valores dos dispositivos de entrada e escrever nos dispositivos de sada. Iremos
estudar as mais utilizadas.
1.1.8.1 Lendo um caractere do teclado
Para ler um caractere do teclado, utilize a funo getchar(). Ela faz parte
do arquivo de cabealho stdio.h. Sua utilizao :
variavel = getchar();
Essa funo retorna o valor inteiro referente ao cdigo ASCII do caractere
lido, porm voc pode atribuir esse valor a uma varivel do tipo caractere.
Caso ocorra um erro, ela retorna EOF.
1.1.8.2 Exibindo um caractere
Para exibir um caractere, voc pode usar a funo putchar(), que est no
arquivo de cabealho stdio.h. Sua sintaxe :
putchar(variavel)
em que varivel um nmero inteiro, porm voc pode passar varivel como um
caractere. putchar retorna o caractere exibido ou EOF, caso ocorra algum erro.
1.1.8.3 Lendo uma string do teclado
Voc pode ler uma string do teclado usando as funes gets() e fgets(). Elas
fazem parte do arquivo de cabealho stdio.h.
Alguns compiladores C, como o gcc, desencorajam o uso da funo gets.,
por causa de um problema conhecido como bufferoverflow (estouro de buffer,
em ingls). A prpria man page, do gcc em Linux, para a funo gets, explica
o problema em sua seo PROBLEMAS. Vejamos.
Nunca use gets(). Porque impossvel saber, sem conhecer antecipadamente os
dados, quantos caracteres gets() vai ler, e porque gets() vai continuar a guardar
caracteres ultrapassado o fim do buffer, ela extremamente perigosa de usar. Esse
comportamento tem sido utilizado para quebrar a segurana de computadores. Use
fgets() no seu lugar (DIAS NETO, [200-]).

Abordaremos apenas o uso e a sintaxe da funo fgets(), que substitui a


funo gets() na leitura de string. a seguinte:

108

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

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

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

109

Aula 1 Algoritmos e Programao

Especificador

Formato

%g

float. C escolhe melhor maneira de exibio


entre normal e exponencial
%G
%s
string
%p
endereo de um ponteiro
%n
quantos caracteres a funo printf exibiu
Fonte: Dias Neto ([200-]).

a <lista de variveis> uma seqncia de variveis ou expresses


separadas por vrgula. Voc deve informar uma varivel para cada
especificador de formato que compem o string de formatao.
1.1.8.6 Entrada formatada (scanf)
A entrada formatada feita utilizando a funo scanf. Ela faz parte do
arquivo de cabealho stdio.h. Sua sintaxe :
scanf(<string de formatao>,&varivel)
O <string de formatao> segue a mesma sintaxe da funo printf.
Observe que o valor entrado passado para o endereo da varivel.
No caso de leitura de uma string, no h necessidade do operador &, j que
o nome de uma string sem o ndice entendido pela Linguagem C como um
ponteiro para o incio da string.

1.2 Exemplo de um programa bsico em C


Com base nos conceitos apresentados at aqui, podemos definir a estrutura de um programa bsico em C, como mostrado no cdigo a seguir:
#include <stdio.h>
/* Programa exemplo */
int main()
{

int n = 0;

int x;

printf (Digite um valor inteiro: );

scanf (%d, 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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

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.

Comentrio das atividades


Na atividade 1, com base no que foi estudado nesta aula, voc deveria
ter concludo que a nica opo incorreta a opo (d), pois nessa opo a
varivel valor declarada como um inteiro e, portanto, a impresso do seu
valor deveria usar o string de formatao %d, e no %s como argumento
para a funo printf; a opo (a) est correta, pois todo programa em C
deve possuir uma funo main ( ), uma vez que essa a funo principal do
programa; a opo (b) tambm est correta, pois a diretiva #include usada

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

111

Aula 1 Algoritmos e Programao

justamente para inserir definies de bibliotecas do compilador ou criadas pelo


prprio programador; a opo (c) est correta, pois em C uma constante hexadecimal deve sempre iniciar pelos caracteres 0x; e, por fim, a opo (e) est correta,
pois, como estudamos, a funo main() permite o uso dos parmetros argv e
argc, que permitem receber parmetros diretamente da linha de comando.
A atividade 2 muito simples e pressupe apenas que voc tenha entendido os principais elementos de um programa em Linguagem C. Uma soluo
possvel para essa atividade seria:
#include <stdio.h>
int main()
{

int var1;

float var2;

printf (\nInforme o valor inteiro: );

scanf (%d, &var1);

printf (\nInforme o valor real: );

scanf (%f, &var2);

printf (\nValor inteiro: %d, var1);

printf (\Valor real: %f, 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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 1 Algoritmos e Programao

SILVEIRA FILHO, Otton Teixeira da. Linguagem C. [Niteri]: Universidade Federal


Fluminense. Departamento de Cincia da Computao, 1997. Disponvel em:
<http://www.ic.uff.br/~otton/produtos/apostila_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
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


























UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

113

Aula 1 Algoritmos e Programao

114

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 2 Algoritmos e Programao

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.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

115

Aula 2 Algoritmos e Programao

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)

Fonte: UFMG. Centro de Pesquisa e Desenvolvimento em Engenharia Eltrica (CPDEE)


(1996-1999).

Em C, os operadores so classificados em unrio ou binrio. Um operador


unrio age sobre uma varivel apenas, modificando ou no o seu valor, e
retornam o valor final da varivel. Os binrios usam duas variveis e retornam
um terceiro valor, sem alterar o valor das variveis originais. O operador de
multiplicao um exemplo de operador binrio, enquanto o incremento um
exemplo de operador unrio.
Cabe ressaltar que o operador de diviso, quando aplicado a variveis
inteiras, retornar um valor tambm inteiro; quando aplicado a variveis em
ponto flutuante, ser retornado um valor em ponto flutuante, mesmo que uma
das variveis seja do tipo inteiro.

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 2 Algoritmos e Programao

So operadores relacionais na linguagem C os listados a seguir.


Operador
>
<
>=
<=
==
!=

Ao
Maior que
Menor que
Maior ou igual a
Menor ou igual a
Igual a
Diferente de ou no igual a

importante lembrar que voc no deve confundir o operador de igualdade


== com o operador de atribuio =, que ser estudado a seguir.

2.4 Incrementos e decrementos (pr/ps)


Os operadores aritmticos de incremento (++) e decremento (--) disponibilizados pela Linguagem C so operaes unrias que servem para adicionar (no
caso do incremento) ou subtrair (no caso do decremento) uma unidade ao valor
de uma varivel e retorn-lo. Assim, a expresso x++ equivalente x=x+1; e
a expresso x-- equivalente expresso x=x-1.
Esses dois operadores possuem ainda a propriedade de poderem ser
pr-fixados ou ps-fixados. Isso quer dizer que podemos definir se o valor da
varivel ser incrementado/decrementado antes (pr) ou aps (ps) o retorno
do valor da varivel.
Para que voc entenda melhor esse procedimento, vamos considerar o trecho
de cdigo a seguir.
int x;
x = 5;
printf (%d, x++); // Imprime o valor atual de x (5) e incrementa x (6)
printf (%d, ++x); // Incrementa o valor atual de x (7) e imprime o x (7)
printf (%d, x--); // Imprime o valor atual de x (7) e decrementa x (6)
printf (%d, --x); // Decrementa o valor atual de x (5) e imprime x (5)
Em termos e nomenclatura, dizemos que uma operao do tipo x++ um
ps-incremento; ++x um pr-incremento; x-- um ps-decremento; e --x um
pr-decremento.

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

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

117

Aula 2 Algoritmos e Programao

a atribuio. Quando esse operador usado, o valor da expresso que esteja


do lado direito do operador transferido para a posio de memria apontada pela varivel declarada do lado esquerdo do operador. Por exemplo, a
expresso de atribuio numero = a*3; ir resolver a expresso do lado direito,
ou seja, buscar na memria o valor da varivel a e multiplic-lo por 3 e, em
seguida, atribuir esse valor resultante para a varivel numero.
Quando voc for utilizar esse operador, deve garantir que o resultado da
expresso retorne um tipo de dado do mesmo tipo, ou equivalente, ao tipo da
varivel que ir receber esse valor.
2.5.1 Atribuio composta
No C, possvel a combinao do operador de atribuio com outro
operador aritmtico a fim de reduzir os comandos.
Por exemplo, possvel construir as seguintes expresses de atribuio
composta:
soma += 5;

// o mesmo que soma = soma + 5;

valor *= 10;

// o mesmo que valor = valor * 10.

2.5.2 Atribuio mltipla


Uma vez declaradas, o C permite a incializao de mais de uma varivel
em uma nica linha, como mostrada no comando:
soma = media = desvio = 0;
Nesse comando, atribudo o valor zero s trs variveis listadas.
O operador de atribuio pode ser usado j na declarao de uma
varivel, com isso inicializando a varivel j em sua criao. Um exemplo
desse uso seria a seguinte declarao de variveis:
int n = 0;
float valor = 0;
float nota1 = nota2 = 0.00;

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 2 Algoritmos e Programao

Maior precedncia

( ) [ ] ->

! ~ ++ -- . unrio) (cast)

*(unrio) &(unrio) sizeof

*/%

<< >>

<<= >>=

== !=

&

&&

||

Menor precedncia

= += -= *= /=

2.7 Operadores bit-a-bit


O C, por ter sido desenvolvido para operar tambm como linguagem
de baixo nvel (prxima ao hardware), permite que sejam realizadas
operaes lgicas bit-a-bit em nmeros. Ou seja, nesse caso, o nmero
representado por sua forma binria e as operaes so realizadas em
cada bit individual.
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)
OU-exclusivo lgico (no ingls XOR)
Deslocamento de bits direita
Deslocamento de bits esquerda

A sintaxe comum para uso dos operadores de deslocamento : valor


>> quantidade de bits ou valor << quantidade de bits. Por exemplo, se uma
varivel numero possuir o valor 16 (em binrio de oito bits ficaria 00010000)
e for executada a instruo numero << 2, seriam deslocados 2 bits
esquerda (ficaria 01000000), resultando no valor 64; caso a instruo

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

119

Aula 2 Algoritmos e Programao

executada fosse numero >> 2, seriam deslocados 2 bits direita (ficaria


00000100), resultando no valor 4.
Esses operadores bit-a-bit s podem ser usados nos tipos char, int e
long int.

2.8 Modificador de tipo (cast)


Um modificador de tipo aplicado a uma expresso para for-la a
retornar um tipo de dado especificado. Sua forma geral dada por (<tipo_
de_dados>) <expresso>. Um exemplo que deixa bvio a utilidade desse
operador o problema da diviso inteira. Vamos analisar o trecho de
cdigo a seguir:
#include <stdio.h>
int main ( )
{

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

2.9 Operadores de endereos


Esses operadores sero apenas apresentados, pois sero abordados
em diferentes aulas e temas, como Vetores, Ponteiros e Estruturas. A maneira
de utilizar cada um ser vista em detalhe.
Os operadores de endereos em C so os a seguir.

120

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 2 Algoritmos e Programao

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.

[]

no endereo de ... mais um ndice


Ex.: na instruo valor = vetor[6], a varivel valor recebe
o valor da posio de memria apontada pela varivel
vetor, deslocando 6 unidades. Esse operador ser discutido na aula sobre Vetores.

(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;

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

121

Aula 2 Algoritmos e Programao

b) a expresso (y*2 == x) retorna um valor que considerado pelo C


como verdadeiro;
c) a expresso x*=2; atribui varivel x o valor 70;
d) a expresso ((x < 50) && (y == 17)) retorna um valor que considerado pelo C como verdadeiro;
e) a expresso printf (%d, --x) ir imprimir o valor 34.
2. Comente o uso do modificador de tipo (cast) disponvel na Linguagem C.

Comentrio das atividades


Na atividade 1, levando em considerao o que foi estudado sobre os
operadores disponveis na Linguagem C, voc deveria ter concludo que
a opo incorreta a opo (b), pois vimos que o operador de diviso,
quando aplicado a duas variveis inteiras, sempre retorna um valor inteiro e,
nesse caso, a varivel y acaba recebendo o valor 17; logo, y*2 ir resultar
em 34, que diferente do valor da varivel x; a opo (a) est correta, pois
o operador de adio, quando aplicado a dois valores inteiros, sempre
retorna um inteiro; a opo (c) tambm est correta, pois a instruo x*=2
uma reduo da expresso x=x*2 e, com isso, a varivel x recebe o
dobro do seu valor atual, nesse caso 70; a opo (d) tambm est correta,
pois, se fatorarmos a soluo dessa expresso, teremos ((x < 50) && (y ==
17)) ((35 < 50) && (17 == 17)) (verdadeiro && verdadeiro)
verdadeiro; e, por fim, a opo (e) est correta, pois a expresso printf
(%d, --x) ir primeiro decrementar o valor de x (pr-incremento) e imprimir
o valor resultante, nesse caso, 34.
Na atividade 2, voc deveria descrever que o modificador de tipo serve
para forar o compilador a converter o valor de uma expresso para um
tipo especfico. muito til em casos como o da diviso inteira, discutida
nesta aula. Alm disso, serve para evitar erros de incompatibilidade de
tipos na atribuio, por exemplo.

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 2 Algoritmos e Programao

UFMG. Centro de Pesquisa e Desenvolvimento em Engenharia Eltrica (CPDEE).


Curso de Linguagem C: operadores aritmricos e de atribuio. [Belo Horizonte],
1996-1999. Disponvel em: <http:// www.mtm.ufsc.br/~azeredo/cursoC/
aulas/c350.html>. 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
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


























UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

123

Aula 2 Algoritmos e Programao

124

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

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.

3.1 Estrutura seqencial ou bloco


Na Linguagem C, o ponto-e-vrgula o terminador de instrues, ou seja,
marca o encerramento de uma instruo.
Um par de chaves { } usado para agrupar instrues em instrues
compostas ou blocos, de modo a serem sintaticamente equivalentes a uma
instruo nica. Assim, um bloco pode ser composto de:

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

125

Aula 3 Algoritmos e Programao

uma nica instruo;


um conjunto de instrues;
nenhuma instruo (instruo vazia).
Uma instruo composta ou bloco tem a estrutura:
{
declaraes (opcional)
instrues
}

3.2 Estrutura de deciso simples (if)


Assim como estudado em Lgica para Programao, na Seleo Simples,
uma instruo ou um conjunto de instrues executado somente se o teste
condicional especificado retornar o valor verdadeiro. Caso o resultado do
teste seja falso, nenhuma das instrues delimitadas pela estrutura de seleo
ser executada e a execuo das instrues ser desviada para a instruo
imediatamente seguinte estrutura de seleo.
O exemplo a seguir demonstra a utilizao dessa estrutura:
ALGORITMO Selecao_Simples;

#include <stdio.h>

VAR N: Inteiro;

int main( ) {

INICIO

int N;

LEIA N;

scanf (%d, &N);

SE N>0 ENTAO

if (N > 0)

IMPRIMA N;

FIM SE

FIM

printf (%d, N);

3.3 Estrutura de deciso composta (if..else)


Uma das estruturas de deciso a instruo if, que admite diversas
variantes. A forma genrica dessa instruo : if condio bloco1; else bloco2.
A condio uma expresso que avaliada no momento de sua execuo.
Se for verdadeira (tiver um valor no nulo), executado o primeiro bloco de
instrues (bloco1); se for falsa, ento executado o segundo bloco de instrues (bloco2).

126

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

O exemplo a seguir demonstra a utilizao dessa estrutura.


ALGORITMO Selecao_
Composta;

#include <stdio.h>

VAR N: Inteiro;

int N;

INICIO

scanf (%d, &N);

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( ) {

printf (%d, N);

}
}

3.4 Estrutura de deciso encadeada (if..else..if)


Em muitas situaes, precisamos agrupar os testes a fim de realizar refinamentos nos parmetros de seleo. Para esses casos, normalmente so utilizadas estruturas de seleo aninhadas.
O exemplo a seguir demonstra a utilizao dessa estrutura em C.
ALGORITMO Selecao_Encadeada;

#include <stdio.h>

VAR N: Inteiro;

int main() {

INICIO

int N;

LEIA N;

scanf (%d, &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) {

printf (%d, N);


}

}
else

IMPRIMA O valor de N deve ser {


positivo;

printf (O valor de N deve ser
positivo);

FIM SE
FIM

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

127

Aula 3 Algoritmos e Programao

Essa seqncia de else..ifs uma maneira de implementar uma deciso


mltipla. O computador avalia as condies de cima para baixo e, logo
que encontre uma verdadeira, executa a instruo que lhe est associada,
ignorando o resto da cadeia.

3.5 Estrutura de deciso mltipla (switch..case)


Apesar de a instruo else..if permitir construir uma estrutura de
escolha mltipla, o C fornece uma outra instruo, a instruo switch,
que especfica para isso. Nela, testada sucessivamente uma varivel para verificar se coincide com uma lista de valores inteiros (ou
caracteres).
A sintaxe dessa instruo :
switch (varivel)
{
case exp_1 : instr_1; break;
case exp_2 : instr_2; break;
...
default : instr_n; break;
}
Cada um dos casos rotulado por uma ou mais constantes inteiras ou
expresses com constantes, por exemplo, exp_1 pode ser um inteiro, um
caractere ou uma expresso de constantes. Se a varivel coincidir com um
dos casos, a execuo comea a partir desse ponto. Todos os rtulos tm de
ser diferentes. O caso com rtulo default executado se no houver mais
nenhuma coincidncia. O uso de default opcional, se no for usado e
nenhuma coincidncia for encontrada, no ser executada nenhuma ao.
Como j foi visto, quando se verifica uma coincidncia entre o valor da varivel e um caso, a execuo do programa prossegue a partir desse ponto,
executando tudo o que vem a seguir, inclusive as instrues correspondentes
aos casos posteriores. Para evitar que isso acontea, voc deve usar a
instruo break, que fora a sada imediata do switch. A razo pela qual a
execuo de um switch no se limita s instrues de um caso, mas continua
a partir desse ponto, que essa caracterstica tem bastante utilidade em
diversas situaes. Por exemplo, podemos ter:

128

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

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;
}
}

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

129

Aula 3 Algoritmos e Programao

3.6 Estrutura de repetio (while)


Essa estrutura de repetio equivalente estrutura ENQUANTO..FACA
estudada em Lgica para Programao. A estrutura while tem a sintaxe:
while (expresso)

<bloco de instrues>;

O tipo da expresso deve ser lgica, ou seja, retornar verdadeiro ou falso.


A expresso avaliada, se no for nula (verdadeira), a instruo executada
e a expresso reavaliada. Esse ciclo continua at que a expresso tenha um
valor nulo (falso), passando ento o controle do programa para a instruo na
linha seguinte ao ciclo.
A instruo que constitui o corpo do ciclo pode, na realidade, ser a
instruo nula, uma nica instruo ou um grupo de instrues.
Como exemplo desse tipo de ciclo, temos a seguinte funo, que simplesmente espera at que se introduza o carcter A:
void espera()
{
char c;
c = \0;
while (c!=A)
scanf(%c,&c);
}

3.7 Estrutura de repetio (for)


Essa estrutura de repetio equivalente estrutura PARA..FACA estudada
em Lgica para Programao. A estrutura for tem a sintaxe:
for (expr_1 ; expr_2 ; expr_3)

<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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

As expresses expr_1 e expr_3 so atribuies ou chamadas de funes,


e expr_2 uma expresso relacional. Qualquer uma das trs partes pode ser
omitida, apesar de terem de ser mantidos os ponto-e-vrgula. Quando expr_2
omitida, o C substitui por uma constante no nula para que o teste retorne
sempre verdadeiro. Por exemplo, o trecho:
for (;;) <bloco de instrues>;
um ciclo infinito equivalente ao ciclo
while (1) <bloco de instrues>;
Um ciclo infinito pode ser interrompido se no seu corpo existir uma instruo
break ou return.
O programa seguinte permite escrever todos os inteiros entre 1 e 100.
#include <stdio.h>
void main()
{
int x;
for(x=1; x<=100; x++)
printf(%d\n,x);
}
Tambm so permitidas outras operaes com a varivel de controle do
ciclo, alm do incremento e decremento. Para mostrar os nmeros entre 5 e 95
de 5 em 5, podemos codificar o seguinte programa:
#include <stdio.h>
void main()
{
int x;
for(x=5; x<100; x=x+5)
printf(%d\n,x);
}

3.8 Estrutura de repetio (do..while)


Como voc j estudou, os ciclos while e for testam a condio de repetio no incio do ciclo. Pelo contrrio, o ciclo do..while testa a condio no
fim do ciclo, de modo que as instrues que fazem parte do corpo do ciclo so
executadas pelo menos uma vez. A sua sintaxe genrica :

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

131

Aula 3 Algoritmos e Programao

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

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

default: printf (\nOpo invalida!);

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

default: printf (\nOpo invalida!);

Funcao3 ( );

}
}
}
printf (\nOpo invalida!);

e) Nenhuma das alternativas anteriores apresenta um cdigo equivalente.


2. Escreva 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 seguida, imprimir o
resultado correspondente operao. Esse procedimento dever ser repetido
at que seja informado o valor 0 como primeiro valor da operao.

Comentrio das atividades


Na atividade 1, de acordo com o que voc estudou nesta aula sobre as estruturas de seleo, deveria ter percebido que o trecho de cdigo a ser substitudo
apresenta um aninhamento de comandos ifs. Voc deveria lembrar que essa construo comumente usada para selees de mltipla escolha. Deveria ter se recordado tambm que o C possui uma instruo especfica para o caso de seleo de
mltipla escolha o comando switch..case. Assim, voc rapidamente excluiria as

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

133

Aula 3 Algoritmos e Programao

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 3 Algoritmos e Programao

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



















UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

135

Aula 3 Algoritmos e Programao

136

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 4 Algoritmos e Programao

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:

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

137

Aula 4 Algoritmos e Programao

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);
}

4.2 Variveis em funes


As variveis criadas em uma funo so locais, assim sero destrudas
aps o trmino da funo.
Caso em uma varivel local a funo tenha o mesmo nome de uma varivel global, a varivel local ser usada, e no a global. Recomendamos
que as variveis globais sejam evitadas na programao em C. Ao invs
disso, voc deve trabalhar sempre com a passagem de parmetros entre
as funes.

4.3 Argumentos e parmetros


Argumentos so os valores usados para chamar a funo, e parmetros
so as variveis, declaradas na definio da funo, que recebem esses
argumentos. Para ficar mais claro, observe o exemplo a seguir.

138

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 4 Algoritmos e Programao

/* 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.

4.4 Declarao de parmetros


Existem duas formas de declarao de parmetros em funes: a forma clssica e a forma moderna.
A forma clssica tem a seguinte sintaxe:
TIPO NOME(PARMETRO1, PARMETRO2, ... , PARMETROn)
TIPO DO PARMETRO1;
TIPO DO PARMETRO2;
...
...
TIPO DO PARMETROn;
{
CORPO DA FUNO
}

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

139

Aula 4 Algoritmos e Programao

J a forma moderna tem a seguinte sintaxe:


TIPO NOME (TIPO PARMETRO1, TIPO PARMETRO2, ... , TIPO
PARMETROn)
{
CORPO DA FUNO
}
A seguir, segue um exemplo de funo com os dois tipos de declarao
de parmetros.
/* Com declarao clssica */
int soma(a, b)
int a;
int b;
{

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.

4.5 Chamada por valor e chamada por referncia


A chamada por valor a passagem normal do valor dos argumentos para a
funo. Utilizando essa chamada, os valores dos argumentos passados no so
modificados. Na realidade, passada uma cpia dos valores para a funo.
Na chamada por referncia, so passados os endereos de memria
onde esto os argumentos. Nesse tipo de chamada, os valores podem ser
modificados.

140

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 4 Algoritmos e Programao

importante lembrar que as strings e matrizes sempre so chamadas por


referncia. Quando C passa uma matriz ou string para uma funo, passado
o endereo inicial da matriz ou funo.

4.6 O comando return


O comando return usado para encerrar a funo e retornar um valor
para a funo chamadora.
O valor retornado pela instruo return deve ser compatvel com o tipo
da funo, o qual definido quando da sua declarao. Se uma funo no
retornar nenhum valor, ela deve ser declarada como do tipo void.
De acordo com o padro ANSI, a funo main devolve um inteiro para
o processo chamador, que geralmente o sistema operacional. Isso equivalente a chamar exit com o mesmo valor. Alguns compiladores ainda aceitam
que main seja declarada como void, caso no retorne nenhum valor.

4.7 Prottipo de funo


A chamada a uma funo deve vir, a princpio, aps sua definio para
o compilador conhecer os tipos de parmetros e o tipo de retorno da funo.
Porm voc pode chamar a funo antes da definio desta. Para isso, declare
apenas um prottipo da funo, o qual tem apenas o valor de retorno e os
parmetros da funo. Na verdade, uma forma de voc informar ao compilador as caractersticas fundamentais da funo (nome, tipo de retorno, parmetros, etc). Alm disso, essa estratgia particularmente til em casos em que
uma funo chama outra e podemos ter problemas de precedncia, pois uma
funo chamada j deve ter sido declarada.
Observe o exemplo a seguir:
#include <stdio.h>
int soma(int a, int b); /* prottipo da funo */
int main( )
{

int nr1, nr2;

printf(Entre com o primeiro nmero :);

scanf(%d,&nr1);

printf(Entre com o segundo nmero :);

scanf(%d,&nr2);

printf(\n%d + %d = %d\n\n,nr1,nr2,soma(nr1,nr2));

return(0);
}

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

141

Aula 4 Algoritmos e Programao

int soma(int a, int b) /* funo propriamente dita */


{

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 4 Algoritmos e Programao

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 {

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


}
Assim, para esta atividade, reescreva essa soluo de modo que cada

operao aritmtica seja realizada por uma funo diferente.

Comentrio das atividades


Na atividade 1, deveria ter ficado claro que a funo calculaAreaTrapezio deveria retornar um tipo de dado float, uma vez que a sua frmula

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

143

Aula 4 Algoritmos e Programao

pode gerar valores com casas decimais em funo do uso do operador de


diviso. Assim, voc j deveria ter descartado as opes (a), (c) e (d). Alm
desse problema, algumas dessas opes apresentam tambm problemas
de inadequao de tipos de dados. Ao analisar as opes restantes, voc
deveria ter notado que a opo (e) apresenta uma insuficincia de parmetros, uma vez que, para o clculo da rea de um trapzio, precisamos
saber os valores das duas bases. Ento, deveria ter ficado claro que a opo
correta a opo (b).
Na atividade 2, deveria ter sido facilmente solucionada com o contedo
que voc estudou nesta aula. Apesar da multiplicidade de solues, a seguir
apresentada uma delas.
float porcento (float parcela, float porcentagem)
{

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 4 Algoritmos e Programao

#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()
{

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, soma (valor1,valor2));

} else if (operacao == -) {

printf (\Resultado: %f, subtrai (valor1,valor2));

} else if (operacao == *) {

printf (\Resultado: %f, multiplica (valor1,valor2));

} else if (operacao == /) {

printf (\Resultado: %f, divide (valor1,valor2));

}
}
} while (valor1 > 0);

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

145

Aula 4 Algoritmos e Programao

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 5 Algoritmos e Programao

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.

5.1 Estruturas de dados homogneas (vetores e matrizes)


As estruturas homogneas so aquelas que armazenam dados de um mesmo
tipo. Na Linguagem C, possumos duas estruturas desse tipo: os vetores e matrizes.
5.1.1 Vetores ou array
Existem situaes em que precisamos manipular muitas variveis, cada qual
mais ou menos com a mesma funo. Isso acontece quando trabalhamos com

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

147

Aula 5 Algoritmos e Programao

listas ou seqncias de nmeros. Por exemplo, a mdia de uma lista de n


nmeros, X1, X2, ..., Xn, definida como: mdia = (X1 + X2 + ... + Xn) / n
e o desvio de cada nmero em relao mdia dado pela frmula: desvio
= Xi - mdia , para i = 1,2,...,n. considere que queremos fazer um programa
para calcular a mdia de uma lista de 10 nmeros e o desvio de cada nmero
em relao mdia. Com o uso de variveis simples, teramos de fazer algo
semelhante :
float x1, x2, x3, x4, x5, x6, x7, x8, x9, x10;
float d1, d2, d3, d4, d5, d6, d7, d8, d9, d10;
float media;
...
media = (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10) / 10;
d1 = x1 - media;
d2 = x2 - media;
...
d10 = x10 - media;
Se em vez de 10 nmeros fossem 100, teramos de declarar 100 variveis, e isso seria um grande trabalho. aqui que se torna extremamente til o
conceito de vetor ou array. A definio float x[10]; define um array de nome
x com 10 posies, cada uma correspondendo a uma varivel do tipo float.
Um array como se fosse uma lista ou seqncia de variveis. Na linguagem
C, os arrays comeam sempre na posio 0. Por isso a declarao float x[10]
define as variveis x[0], x[1], x[2], ..., x[9].
Depois de definido o array, os seus elementos podem ser acessados e
modificados individualmente, tal como nas variveis que estudamos at agora.
Por exemplo:
x[7] = 54;
a = x[7].
A sintaxe geral para a definio de um array em C :
tipo nome[dimenso].
Se quisermos definir um array de nome notas com 5 posies, cada qual
podendo conter um nmero inteiro, temos de escrever:

148

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 5 Algoritmos e Programao

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.

5.2 Estruturas de dados heterogneas (estruturas ou structs)


As estruturas em C so equivalentes ao tipo de dado registro que voc
estudou em Lgica para Programao, e so utilizadas para agrupar informaes relacionadas de tipos de dados diferentes. Digamos que voc
precisa controlar os dados relacionados ao estoque de um pequeno estabelecimento comercial. Dessa forma, para cada produto seriam armazenados
dados como:
cdigo
nome do produto
quantidade estocada
valor de compra
valor de venda
margem de lucro
observaes sobre o produto
Esse seria um caso para o uso de estruturas, pois todos os dados esto
relacionados a cada produto. Cada dado possui um tipo diferente, como:
int: cdigo e quantidade
char: nome e observaes
float: valor de compra, valor de venda e margem de lucro

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

149

Aula 5 Algoritmos e Programao

5.2.1 Declarando uma estrutura


A sintaxe para a declarao (ou criao) de uma estrutura :
struct NOME_DA_ESTRUTURA
{
TIPO CAMPO1;
TIPO CAMPO2;
...........
...........
TIPO CAMPOn;
};
Para o caso exemplificado no item anterior, poderamos ter algo como:
struct produto
{
int codigo;
char nome[50];
int quantidade;
float valor_compra;
float valor_venda;
float margem_lucro;
char observacao[200];
};
importante observar que a declarao da estrutura no cria, ainda,
uma varivel. A declarao da estrutura apenas cria um novo tipo de dado.
Somente aps criar a estrutura voc pode declarar variveis do tipo de estrutura criado.

5.2.2 Declarando variveis do tipo de uma estrutura criada


Aps a declarao da estrutura, voc pode declarar variveis do tipo da
estrutura com a sintaxe:
struct NOME_DA_ESTRUTURA NOME_DA_VARIVEL;
Exemplo:
struct produto item;

150

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 5 Algoritmos e Programao

Observe que essa sintaxe obedece sintaxe normal para a declarao de


variveis:
TIPO NOME_DA_VARIVEL;
sendo o TIPO da
NOME_DA_ESTRUTURA).

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;

};

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

151

Aula 5 Algoritmos e Programao

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 5 Algoritmos e Programao

#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()
{

struct registro ficha;

printf(Entre com seu nome:);

fgets(ficha.nome,30,stdin);

printf(Qual sua idade?);

scanf(%d,&ficha.idade);

printf(\nExibindo os dados iniciais\n);

printf(Nome: %s,ficha.nome);

printf(Idade: %d.\n,ficha.idade);

altera_estrutura1(&ficha);

printf(\nExibindo os dados aps a primeira alterao\n);

printf(Nome: %s,ficha.nome);

printf(Idade: %d.\n,ficha.idade);

altera_estrutura2(&ficha);

printf(\nExibindo os dados aps a segunda alterao\n);

printf(Nome: %s,ficha.nome);

printf(Idade: %d.\n,ficha.idade);

return(0);

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

153

Aula 5 Algoritmos e Programao

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;

for (i=1; i<10; i++) {


numeros[i] = numeros[i-1]*2;
}

for (i=0; i<10; i++) {


printf (%d, , numeros[i]);

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 5 Algoritmos e Programao

Comentrio das atividades


Na atividade 1, ao analisar o cdigo, voc deveria ter notado que a
instruo mais importante do algoritmo est na primeira estrutura de repetio
do tipo for. Nela, os valores do vetor so inicializados sempre a partir do
anterior. Na verdade, o prximo sempre recebe o valor dobrado do anterior.
Para garantir o funcionamento do algoritmo, a instruo nmeros[0] = 1; faz
com que a seqncia de sada tenha incio em 1. Assim, se cada elemento
o dobro do anterior, teremos a seqncia 1, 2, 4, 8, 16, 32, 64, 128, 256,
512, indicando que a opo correta a opo (b).
Na atividade 2, usando os conceitos estudados nesta aula, voc deveria ter
definido uma estrutura para representar cada aluno e, em seguida, declarado
um vetor desse tipo representando a lista de alunos. Ento, poderia percorrer
todo o vetor usando uma estrutura de repetio, na qual, para cada posio
do vetor, deveriam ser lidos os dados sobre o aluno. Aps o preenchimento
do vetor, voc deveria percorr-lo novamente imprimindo o nome do aluno
e mdia aritmtica das notas bimestrais. Uma soluo para esse problema
mostrada a seguir.
#include <stdio.h>
struct TAluno {

char nome[80];

float nota1;

float nota2;

};
int main()
{

struct TAlunos alunos[5];

int i;

for (i=0; i<5; i++)

printf (\Nome do aluno: );

scanf (%s, &alunos[i].nome);

printf (\Nota do primeiro bimestre: );

scanf (%s, &alunos[i].nota1);

printf (\Nota do segundo bimestre: );

scanf (%s, &alunos[i].nota2);

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

155

Aula 5 Algoritmos e Programao

/* Imprimindo as medias dos alunos */


for (i=0; i<5; i++)
{

printf (\nAluno: %s \t\t\t Media: %f, alunos[i].nome, (alunos[i].


valor1+ alunos[i].valor2)/2);

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 6 Algoritmos e Programao

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.

Um ponteiro, em essncia, uma posio de memria.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

157

Aula 6 Algoritmos e Programao

6.1 Declarao de ponteiros


Para declarar uma varivel como ponteiro, usa-se a sintaxe:
tipo *nome_varivel;
O caractere asterisco usado aps o tipo de dado indica ao compilador
que se trata de uma varivel do tipo ponteiro (apontador) para uma posio
de memria que armazena um valor daquele tipo.

6.2 Operando sobre ponteiros


Um ponteiro deve ser sempre inicializado antes de seu uso. Caso
contrrio, voc correr o risco de realizar um acesso indevido a alguma
posio de memria protegida. Isso levaria a um erro no programa.
Para iniciar uma varivel do tipo ponteiro, usado o operador &. Esse
operador um operador unrio que retorna o endereo da varivel sobre a
qual opera. Assim, o comando ptr = &x far com que ptr receba como valor
o endereo da varivel x.
Outro operador importante na manipulao de ponteiros o operador
*, que permite acessar o contedo da posio de memria apontada pela
varivel do tipo apontador. Por exemplo, se ptr aponta para x, ento *ptr
retorna o valor de x. Usando os operadores do C, poderamos construir a
seguinte expresso vlida (*&x == x).
Para que voc possa entender melhor essas operaes sobre variveis
do tipo ponteiro, vamos considerar o seguinte exemplo:
px = &x;
y = *px +1;
*px += 1;
A segunda instruo toma o valor apontado por px, adiciona a ele uma
unidade e atribui o resultado varivel y, enquanto a instruo *px += 1;
incrementa o valor no endereo px, tal como ++*px e (*px)++. No ltimo
caso, so necessrios os parnteses, pois sem eles a instruo incrementa o
ponteiro e no o valor por ele apontado, dado que os operadores unrios
* e ++ so associativos da direita para a esquerda.

158

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 6 Algoritmos e Programao

Em C existe uma relao muito prxima entre os ponteiros e vetores.


Consideremos que as variveis st e p so declaradas da seguinte forma:
char st[80], *p;
Para pr na varivel p (que um ponteiro para char) o endereo do
primeiro elemento de st (vetor de caracteres ou string), podemos fazer a
atribuio:
p = &st[0];
Mas, na Linguagem C, o nome de um vetor sem ndice o endereo do
elemento inicial, pelo que, em essncia, o nome de um vetor um ponteiro
para o vetor. Poderamos, ento, fazer a atribuio p = &st[0]; usando a
forma equivalente:
p = st;
Depois disso, para acessar ao quinto elemento do vetor, poderamos
usar st[4] ou *(p+4). Ainda podemos acessar ao quinto elemento do
vetor usando *(st+4) ou p[4], ou seja, podemos indexar ponteiros e
usar os operadores de ponteiros com variveis do tipo vetor. Assim, a
linguagem C permite duas formas de acessar vetores: usando ndices ou
a aritmtica de ponteiros. Essa ltima bem mais rpida, e dado que
a velocidade de execuo importante em programao, o seu uso
bastante comum em C.
Podemos tambm atribuir o endereo de qualquer outro elemento de um
vetor a um ponteiro.
Apesar da grande utilidade dos ponteiros, devemos saber exatamente
como us-los. Com efeito, se um ponteiro tem um valor errado, provavelmente produzir um erro difcil de ser rastreado e associ-lo causa.
Uma funo tambm pode retornar um tipo de dado ponteiro.

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.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

159

Aula 6 Algoritmos e Programao

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++;
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?

Comentrio das atividades


Na atividade 1, com base no que foi estudado sobre ponteiros, voc
deveria ter concludo que a opo correta a opo (e), pois, se fatorarmos
as instrues, veremos claramente a alterao de seus valores at o seu valor
final, para cada valor entrado. Vejamos.
Instruo

160

Nmero

*ptr_numero

prt_numero = &numero;

=8
13
6
4
5

8
13
6
4
5

numero++;

9
14
7
5
6

9
14
7
5
6

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 6 Algoritmos e Programao

Instruo

numero = ++(*prt_numero);

Nmero

*ptr_numero

= 10

10

15

15

Na atividade 2, voc deveria responder que o motivo para isso que


uma vez que uma varivel do tipo ponteiro faz referncia a uma posio
na memria, no h como garantir o lugar nem o valor dessa posio de
memria. Como a memria est cheia de dados de outros programas, pode
acontecer de acessarmos alguma posio indevida. Isso pode causar desde
um resultado inesperado a um erro do programa, que ser fechado pelo
sistema operacional.

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












UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

161

Aula 6 Algoritmos e Programao

162

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

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.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

163

Aula 7 Algoritmos e Programao

A stream binria uma seqncia de bytes com uma correspondncia de


um para um com os bytes encontrados no dispositivo externo, isto , no ocorre
nenhuma traduo de caracteres. O nmero de bytes o mesmo do dispositivo.
Um arquivo interpretado pela Linguagem C como qualquer dispositivo,
desde um arquivo em disco at um terminal ou uma impressora. Para utilizar um
arquivo voc deve associ-lo a uma stream e, ento, manipular a stream. Voc
associa um arquivo a uma stream por meio de uma operao de abertura.
Nem todos os arquivos tm os mesmos recursos. Por exemplo, um arquivo
em disco pode suportar acesso aleatrio, enquanto um teclado no. Isso
porque a estrutura do arquivo est intimamente relacionada ao dispositivo a
ele associado. Como no exemplo citado, do teclado, no h por que ler as
informaes digitadas de outra forma seno a seqencial.
Do que foi discutido at aqui, conclumos que todas as streams so iguais,
mas no todos os arquivos.
Se o arquivo suporta acesso aleatrio, o ato de abri-lo inicializa o indicador de posio apontando para o comeo do arquivo. Quando cada caractere lido ou escrito no arquivo, o indicador de posio incrementado.
Um arquivo desassociado de uma stream por meio de uma operao
de fechamento. Se um arquivo aberto para sada por fechado, o contedo
de sua stream ser escrito no dispositivo externo. Esse processo geralmente
chamado de descarga (flushing) da stream e garante que nenhuma informao
seja acidentalmente deixada no buffer de disco.
A stream associa o arquivo a uma estrutura do tipo FILE. Essa estrutura
definida no arquivo de cabealho stdio.h.

7.1 Funes utilizadas para manipulao de arquivos


O C fornece um grande conjunto de funes para a manipulao de
arquivos. As principais funes so descritas no quadro a seguir.
Funo
fopen( )
fclose( )
putc( )
fputc( )
getc( )
fgetc( )
fseek( )

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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

Funo

Funcionalidade

fprintf( )

para o arquivo o que printf para o console

fscanf( )

para o arquivo o que scanf para o console

feof( )

Devolve verdadeiro se o fim do arquivo foi atingido

ferror( )

Devolve verdadeiro se ocorreu um erro

rewind( )

Posicionar o ponteiro de arquivo no incio desse

remove( )

Apagar um arquivo

fflush( )

Descarregar um arquivo

fread( )

L um conjunto de bytes de um arquivo

fwrite( )

Escreve um conjunto de bytes em arquivo

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.

7.2 O ponteiro de arquivo


Basicamente um ponteiro de arquivo identifica um arquivo especfico e
usado pela stream para direcionar as operaes das funes de E/S. Um
ponteiro de arquivo uma varivel ponteiro do tipo FILE. Essa varivel um
tipo pr-definido pela linguagem C. Normalmente, ela definida no arquivo de
cabealho stdio.h, mas isso depende do seu compilador. Para ler ou escrever
em arquivos, seu programa precisa usar os ponteiros de arquivo. Para declarar
uma varivel como ponteiro de arquivo, use a seguinte sintaxe:
FILE *arquivo.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

165

Aula 7 Algoritmos e Programao

7.3 Abrindo um arquivo


Apesar de o sistema de E/S de C considerar arquivo como qualquer dispositivo, daqui para frente consideraremos arquivo como um arquivo em disco.
Para abrir uma stream e associ-la a um arquivo, voc usa a funo
fopen(), cuja sintaxe :
fopen(ARQUIVO,MODO)
em que ARQUIVO um ponteiro para uma string que representa o nome do
arquivo. Na prtica, o nome do arquivo propriamente dito e pode ser um
PATH, ou seja, algo como C:\docs\arquivo.txt, no windows; ou algo como
/home/teste/arquivo.txt, no Linux. MODO uma string que representa como
o arquivo ser aberto de acordo com a lista a seguir.
Modo
r
w
a
rb
wb
ab
r+
w+
a+
r+b
w+b
a+b
rb+

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.

Abre um arquivo binrio para leitura/escrita. Se o arquivo no


existir, ser criado.

wb+
ab+

importante lembrar que, em muitas implementaes, no modo texto, a


seqncia de caracteres retorno de carro/alimentao de linha so traduzidas
para nova linha na entrada. Na sada, ocorre o inverso: caracteres de nova
linha so convertidos em retorno de carro/alimentao de linha. Em arquivos
binrios, no ocorre nenhuma traduo.
Caso tudo corra bem, a funo fopen devolve um ponteiro de arquivo,
caso ocorra algum problema, ela devolve NULL.

166

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

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.

7.4 Fechando um arquivo


Para fechar uma stream, voc deve usar a funo fclose(). Ela escreve
qualquer dado que ainda permanece no buffer de disco no arquivo e o fecha
em nvel de sistema operacional. Uma falha ao fechar uma stream pode
provocar problemas tipo perda de dados, arquivos destrudos e erros intermitentes em seu programa. A funo fclose tambm libera o bloco de controle de
arquivo associado stream, deixando-o disponvel para reutilizao. Como,
normalmente, h um limite do sistema operacional para o nmero de arquivos
abertos ao mesmo tempo, voc deve fechar um arquivo antes de abrir outro.
A sintaxe de fclose :
fclose(ARQUIVO);
em que ARQUIVO o ponteiro de arquivo devolvido por fopen quando essa
abriu o arquivo. Caso o fechamento do arquivo ocorra sem problemas, fclose
retorna zero. Qualquer outro valor indica erro.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

167

Aula 7 Algoritmos e Programao

7.5 Escrevendo e lendo caracteres


Para escrever um caractere em um arquivo aberto, voc pode usar duas
funes: putc() ou fputc(). Elas so idnticas. Essas duas funes existem apenas
para preservar a compatibilidade com verses mais antigas do C. lgico
que, para escrever em um arquivo, esse deve ter sido aberto em um modo que
permita a escrita.
A sintaxe da funo putc() :
putc(CARACTER,ARQUIVO);
em que CARACTER o caractere a ser escrito no arquivo e ARQUIVO um
ponteiro de arquivo. Se ocorrer tudo bem, a funo retorna o caractere escrito;
caso contrrio, ela retorna EOF.
Para ler um caractere, temos tambm duas funes: getc() e fgetc().
Existem duas tambm pelo motivo da compatibilidade com verses mais
antigas da linguagem C. Aqui o arquivo deve ter sido aberto em um modo
que permita a leitura.
A sintaxe para a funo getc() :
getc(ARQUIVO);
em que ARQUIVO um ponteiro de arquivo. Quando o final do arquivo
alcanado, a funo devolve EOF.

7.6 Verificando o final de um arquivo binrio


Quando temos de manipular arquivos em formato binrio, um valor inteiro
igual a EOF pode ser lido por engano. Isso poderia fazer com que fosse indicado o fim de arquivo incorretamente. Para resolver esse problema, o C inclui
a funo feof(), que determina quando o final de um arquivo foi atingido. Ela
tem a seguinte sintaxe:
feof(ARQUIVO);
em que ARQUIVO um ponteiro de arquivo. Essa funo faz parte de stdio.h
e devolve verdadeiro caso o final de arquivo seja atingido; caso contrrio, ela
devolve 0.

7.7 Escrevendo e lendo strings


Para escrever e ler strings em um arquivo, use as funes fputs() e fgets(),
cujos prottipos encontram-se em stdio.h.

168

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

A funo fputs() escreve uma string na stream especificada, sua sintaxe :


fputs(STRING,ARQUIVO);
em que ARQUIVO um ponteiro de arquivo. Caso ocorra algum erro, ser
retornado o valor EOF.
fgets() l uma string da stream especificada. Sua sintaxe :
fgets(STRING,TAMANHO,ARQUIVO);
Essa funo l STRING at que um caractere de nova linha seja lido ou que
TAMANHO - 1 caracteres tenham sido lidos. Se uma nova linha lida, ela ser
parte da string. A string resultante terminar em nulo. Caso ocorra tudo bem,
essa funo retornar um ponteiro para STRING; caso contrrio, retornar um
ponteiro nulo.

7.8 Apontando para o incio do arquivo


Para apontar para o incio do arquivo, use a funo rewind(), cujo prottipo est no arquivo de cabealho stdio.h. Sua sintaxe :
rewind(ARQUIVO);
em que ARQUIVO um ponteiro de arquivo, ou seja, uma varivel do tipo FILE*.

7.9 Verificando se a operao com o arquivo produziu um erro


Para determinar se uma operao com o arquivo produziu um erro, use a
funo ferror(). Seu prottipo est em stdio.h e sua sintaxe :
ferror(ARQUIVO);
em que ARQUIVO um ponteiro de arquivo. Essa funo retorna verdadeiro,
se ocorreu um erro durante a ltima operao com o arquivo; caso contrrio,
retorna falso. Como cada operao modifica a condio de erro, ela deve ser
chamada logo aps cada operao realizada com o arquivo.

7.10 Apagando um arquivo


Para apagar uma arquivo, use a funo remove(). Ela faz parte de stdio.h
e sua sintaxe :
remove(ARQUIVO);
sendo ARQUIVO um ponteiro de arquivo.

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

169

Aula 7 Algoritmos e Programao

7.11 Esvaziando uma stream


Para esvaziar o contedo de uma stream aberta para sada, use a funo
fflush( ). Sua sintaxe :
fflush(ARQUIVO);
sendo ARQUIVO um ponteiro de arquivo. Ela escreve o contedo do buffer
para o arquivo passado como argumento. Se for passado um valor nulo, todos
os arquivos abertos para sada sero descarregados. Se tudo ocorrer bem,
fflush retornar zero, indicando sucesso. Caso contrrio, devolver EOF.

7.12 Escrevendo e lendo tipos de dados definidos pelo usurio


Como j estudamos, o C permite que o usurio crie seus prprios tipos de
dados. Esses tipos de dados so estruturas compostas de tipos de dados.
Para escrever e ler essas estruturas a partir de arquivos, podemos usar as
funes fread( ) e fwrite( ). Elas so definidas em stdio.h.
A sintaxe de fread() :
fread(VARIVEL,TAMANHO,QUANTIDADE,ARQUIVO);
em que VARIVEL o endereo da varivel que receber os dados lidos do
arquivo.
TAMANHO o nmero de bytes a ser lido. Para calcular esse valor voc
deve usar o operador sizeof(TIPO ou VARIVEL), que retorna o tamanho de um
tipo ou expresso passado como parmetro.
QUANTIDADE indica quantos itens sero lidos (cada item do tamanho de
TAMANHO).
ARQUIVO um ponteiro para o arquivo aberto anteriormente.
A sintaxe para fwrite( ) idntica, com a exceo que VARIVEL o endereo da varivel com os dados a serem escritos no arquivo.
O ponteiro de arquivo ARQUIVO deve ser aberto em modo binrio,
para podermos ler e escrever qualquer tipo de informao. Tambm deve ser
aberto de acordo com a operao a ser feita (leitura ou escrita).
A funo fread devolve o nmero de itens lidos. Esse valor poder ser menor
que QUANTIDADE se o final do arquivo for atingido ou ocorrer um erro.
A funo fwrite devolve o nmero de itens escritos. Esse valor ser igual
QUANTIDADE, a menos que ocorra um erro.

170

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

7.13 Streams padro


Quando um programa em Linguagem C iniciado, so abertas trs
streams: stdin, stdout e stderr.
Stdin define a entrada padro do sistema, normalmente o teclado.
Stdout define a sada padro do sistema, normalmente o monitor.
Stderr define a sada padro dos erros, normalmente tambm o monitor.

Essas streams so ponteiros de arquivos e podem ser redirecionadas.


Obs.: esta aula foi baseada nos escritos do autor Samuel Dias Neto que se encontra
disponvel no site: <http://br.geocities.com/sdiasneto/c_int/arquivos.htm>.

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.

Comentrio das atividades


Na atividade 1, usando os conceitos estudados nesta aula, voc deveria ter
sido capaz de identificar que a opo (d) a nica opo incorreta, pois as
funes fread( ) e fwrite( ) s podem ser utilizadas em arquivos binrios. A opo

UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

171

Aula 7 Algoritmos e Programao

(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

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

Aula 7 Algoritmos e Programao

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





























UNITINS Anlise e desenvolvimento de sistemas 1 PERODO

173

Aula 7 Algoritmos e Programao

174

1 PERODO Anlise e desenvolvimento de sistemas UNITINS

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

Este caderno de Lgica para Programao tem o objetivo de auxili-lo no


estudo dos principais conceitos relacionados com a Lgica para Programao
e, principalmente, com a sua representao na forma algortmica.
O tema tratado aqui de fundamental importncia para qualquer
iniciante da Programao de Computadores. Nessa rea existe uma mxima
que diz que se voc possui um bom domnio da Lgica de Programao,
voc saber programar em qualquer Linguagem de Programao. E isso
verdade, uma vez que o aprendizado de uma Linguagem de Programao
visa apenas a aperfeioar o domnio da sintaxe particular de cada Linguagem
e de suas funes e facilidades especficas. Mas a Lgica para Programao
estruturas que definem a ordem na qual as instrues devero ser executadas de maneira a solucionar o problema definido.
Neste material so abordados os conceitos fundamentais da Lgica, em
termos gerais, e sua aplicao na Programao. Tambm apresentado e
discutido o conceito de Algoritmo.
So estudadas as principais formas de representao de um algoritmo:
a Descrio Narrativa, Fluxograma e Pseudocdigo. So apresentados
exemplos da utilizao de cada uma.
Para permitir a construo de algoritmos mais completos so estudados
ainda os conceitos de variveis e constantes fundamental para o entendimento de como o computador manipula os dados em um Programa.
Apresentamos ainda a estrutura de arquivo e a sua correta utilizao.
Tambm explicada, em detalhes, cada estrutura de controle de fluxo usada
em um algoritmo.
Saber construir e representar corretamente um algoritmo garante, na
maioria dos casos, uma soluo otimizada para o problema. Alm disso,
os conceitos discutidos aqui sero utilizados ao longo de todo o Curso e
de toda a sua vida profissional. Por este motivo, voc deve ler com ateno
especial este caderno.
Prof. Silvio Costa Sampaio

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

179

Aula 1 Lgica para Programao

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

181

Aula 1 Lgica para Programao

Os programas de computador so construdos para resolver algum problema


especfico e a soluo adotada sempre uma soluo lgica. E essa soluo
formalizada em um algoritmo, que podemos entender como uma receita de
bolo a ser adotada para a soluo do problema. A Lgica para Programao
ento o passo inicial para a construo de um programa de computador.
Por isso, nesta aula, temos trs questes a serem respondidas: o que a
Lgica? Como a Lgica aplicada Programao de Computadores? O que
um Algoritmo? Vamos comear explicando os princpios bsicos do pensamento lgico.

1.1 O que Lgica?


No h consenso quanto definio da Lgica. Alguns autores a definem
como o estudo dos processos vlidos e gerais pelos quais atingimos a verdade,
outros como a cincia das leis do pensamento, ou somente como o estudo dos
princpios da inferncia vlida. Esta pluralidade de definies nos d conta da
diversidade de estudos que so abrangidos pela Lgica.
No seria cabvel discutir sobre lgica sem lanar mo da Filosofia. Mesmo
no querendo aprofundar no mrito filosfico, necessrio revisar as bases
filosficas da lgica a fim de compreender a sua origem e funo.
A Lgica foi criada por Aristteles, no sculo IV a.C., como uma cincia
autnoma que se dedica ao estudo dos atos do pensamento conceito, juzo,
raciocnio, demonstrao do ponto de vista da sua estrutura ou forma Lgica,
sem ter em conta qualquer contedo material. por esta razo que essa Lgica
Aristotlica tambm conhecida por Lgica Formal.
Em contraposio a esse conceito de Lgica Formal, surgiu um outro o
de Lgica Material para designar o estudo do raciocnio no que ele depende
quanto ao seu contedo ou matria.
Essa distino entre Lgica Formal e Lgica Material nos permite perceber
porque: tendo em conta a sua forma, o raciocnio correto ou incorreto (vlido
ou invlido). Mas se atendermos sua matria, a concluso pode ser verdadeira ou falsa.
Para exemplificar, tomemos como exemplo as seguintes sentenas de raciocnio lgico:
I. nenhum homem sabe danar;
II. este danarino homem;
III. logo, este danarino no sabe danar.

182

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Lgica para Programao

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.

1.2 A Lgica no dia-a-dia


Sempre que pensamos estamos exercitando a nossa lgica ou ilgica (nolgica). Toda vez que falamos tambm estamos fazendo uso da lgica uma vez
que a fala apenas uma representao do que pensamos.
Quantas e quantas vezes, em um quotidiano e rotineiro dilogo, produzimos afirmaes do gnero: Isso lgico!, ...no tem lgica alguma. ou
No vejo lgica nisso!.
Saber o que lgico, ou saber identificar uma estrutura lgica, em um contexto
lingstico, algo que nos transmitido por meio da nossa educao.
Alm dessa lgica lingstica, aplicamos outros tipos de raciocnio lgico
em nosso dia-a-dia. Um bom exemplo seria pensar o porqu no colocamos
nossa mo em uma superfcie quente. Parece lgico, no?! Nosso crebro
rapidamente processa sentenas lgicas como:
I. a pele humana no suporta altas temperaturas (ou algo mais simples
como queimei minha pele no ltimo contato com uma superfcie quente);

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

183

Aula 1 Lgica para Programao

II. a minha mo coberta de pele;


III. logo, a minha mo no suporta altas temperaturas.
Esse tipo de pensamento lgico se repete vrias e vrias vezes ao dia. E
graas Lgica nos mantemos longe de problemas.
Isso deixa claro que ns pensamos de forma lgica o tempo todo.
No entanto, temos uma grande dificuldade em formalizar este raciocnio
lgico. Um exemplo disso so aquelas situaes nas quais temos de
explicar a algum algo a ser feito. Muitas vezes, j fizemos essa mesma
tarefa inmeras vezes e, para ns, ela extremamente lgica. Porm
encontramos dificuldades em organizar e relatar o conjunto de passos que
devero ser realizados. Isso acontece porque no somos acostumados a
formalizar nosso pensamento.
Para o computador, a descrio de cada passo e seu correto encadeamento fundamental para que o programa funcione corretamente e que a
soluo seja alcanada. Por isso costuma-se dizer que o computador nunca
erra, so as pessoas que erram. Nesse caso, so as pessoas que formalizaram
a sua Lgica de Programao de maneira incorreta.
Nesse momento de nossos estudos, voc j deve ter percebido que a Lgica
para Programao no algo difcil ou impossvel, uma vez que apenas uma
tcnica para dizer ao computador o que deve ser feito para atingir a soluo
de um determinado problema.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Lgica para Programao

importante lembrar que a ordem na qual as instrues sero executadas


de fundamental importncia para a efetividade da soluo algortmica. Para
entendermos melhor, imaginemos como problema a ser resolvido o preparo
de uma carne assada. bvio que a sua soluo envolve, entre outras tarefas
menores, limpar a carne, temper-la e lev-la ao forno. Mas tambm obvio
que se a ordem dessas instrues for alterada certamente no iremos atingir a
soluo para o problema. Imagine se levssemos a carne ao forno e a temperssemos somente depois!
O algoritmo no a soluo do problema, mas uma forma de solucion-lo.
Assim, para um mesmo problema, podemos criar diferentes algoritmos usando
diferentes abordagens. Em outras palavras, podemos usar diferentes seqncias de instrues para resolver o mesmo problema. Em alguns casos, at
mesmo diferentes instrues. Quase sempre existe mais do que uma maneira
de resolver um problema, e essa escolha nossa. Qual ser ento a melhor
das escolhas?
Dados dois ou mais algoritmos para resolver o mesmo problema, sensato
escolher aquele que obtm uma soluo no menor tempo possvel e que utiliza
o menor espao para a representao dos dados do problema.
Apesar de sua nomenclatura pouco usual, usamos algoritmos em vrias
situaes cotidianas. Um exemplo comum so as receitas culinrias. Em
uma receita culinria descrevemos todos os ingredientes que faro parte
do prato, suas quantidades, a ordem em que sero usadas, suas transformaes (modo de preparo) at o preparo completo do prato. Dessa forma
possvel garantir que a aplicao correta do algoritmo resulte no prato
desejado.
importante esclarecer desde j que um algoritmo independe da linguagem
de programao que ser utilizada. Na verdade, uma vez que o algoritmo
seja desenvolvido de forma correta, poder ser implementado em diferentes
linguagens de programao sem maiores alteraes.
A construo de um algoritmo deve observar todos os passos necessrios execuo da atividade e evitar que passos desnecessrios sejam
executados ou que passos interdependentes sejam executados fora de
ordem.
Durante sua construo, um algoritmo constantemente revisto a fim de
identificar novas situaes ou excees a serem tratadas.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

185

Aula 1 Lgica para Programao

Quando temos um problema e precisamos construir um algoritmo para


resolv-lo, devemos passar pelas seguintes etapas:
a) definir o problema;
b) realizar um estudo da situao atual e verificar qual(is) a(s) forma(s) de
resolver o problema;
c) terminada a fase de estudo, descrever o algoritmo que dever, a princpio, resolver o problema;
d) analisar junto aos usurios se o problema ser resolvido. Se a soluo
no foi encontrada, ou surgirem excees a serem tratadas, dever ser
retornado para a fase de estudo para descobrir onde est a falha.
A fim de entender como um algoritmo construdo, vamos analisar a
construo de um algoritmo para o seguinte problema clssico, discutido por
vrios autores, inclusive em Forbellone e Eberspcher (2005, p. 4), por ser
um problema cotidiano e que no exige conhecimentos especficos: trocar
uma lmpada queimada. A partir desse exemplo, ser possvel evidenciar o
processo de encadeamento de idias at a soluo final do problema.
Inicialmente, poderamos construir o seguinte algoritmo bsico para solucionar o problema proposto:
I. pegue uma escada;
II. posicione-a embaixo da lmpada;
III. busque uma lmpada nova;
IV. suba na escada;
V. retire a lmpada velha;
VI. coloque a lmpada nova.
Se examinarmos esse algoritmo, veremos que ele permite solucionar o problema
da troca de uma lmpada queimada. Entretanto, se considerarmos as situaes nas
quais o algoritmo poder ser aplicado, perceberemos que o mesmo no ir tratar
a situao em que a lmpada no esteja queimada. Na verdade, mesmo que a
lmpada esteja funcionando, esse algoritmo ir troc-la por uma nova.
Para solucionar esse problema, necessrio alterar o algoritmo de modo
que a lmpada seja testada antes de efetuar a troca. Para isso, basta ligar o
interruptor e verificar se a lmpada est funcionando ou no. Intuitivamente,
faramos a seguinte alterao no algoritmo:

186

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Lgica para Programao

I. pegue uma escada;


II. posicione-a embaixo da lmpada;
III. busque uma lmpada nova;
IV. ligue o interruptor;
V. se a lmpada no acender, ento:
a) suba na escada;
b) retire a lmpada velha;
c) coloque a lmpada nova.
primeira vista, o algoritmo agora est correto. Ao introduzirmos um teste
seletivo, uma condio, no passo V, impomos que os passos a, b e c s devero
ser executados se o resultado do teste for verdadeiro. Nesse caso, se a lmpada
no acender. Os testes seletivos nos permitem tratar as excees e garantir que
determinados passos no sejam executados em vo, otimizando o algoritmo.
Esse mesmo algoritmo, apesar de funcional, ainda pode ser otimizado. Se
o reexaminarmos, perceberemos que, no caso de a lmpada no estar queimada, teremos executado os passos I, II e III em vo.
Para tratar essa situao, bastaria reposicionar os passos I, II e III para
que ocorram somente aps o teste seletivo, uma vez que s sero teis caso a
lmpada tenha de ser realmente trocada, ou seja, que ela esteja queimada.
Desse modo, o algoritmo seria novamente alterado, ficando:
VI. ligue o interruptor;
VII. 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.

Apesar de parecer completo, ou seja, permitindo solucionar o problema


da troca da lmpada queimada, este algoritmo no leva em considerao a
possibilidade de a nova lmpada no funcionar. Pois, nesse caso, seria neces-

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

187

Aula 1 Lgica para Programao

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.

Pensando sobre o assunto


No se aprende algoritmos copiando ou estudando outros algoritmos j feitos. Para
aprender algoritmos, necessrio constru-los e test-los.

1.4 Construindo algoritmos


Antes de construir um algoritmo, necessrio entender o modelo de processamento geral de um programa de computador. Este modelo representado
na figura 1.

188

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Lgica para Programao

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

Figura 1. Modelo geral de processamento de um programa de computador

Todo programa fundamentalmente opera sobre um conjunto de entrada


que representa os dados iniciais necessrios resoluo do problema. Essas
entradas so ento processadas a partir de um conjunto de regras j definidas
e, ao final, o programa gera um conjunto de sadas que representa o resultado
do processamento.
Assim, antes de iniciar a construo de um algoritmo, recomendado
seguir os seguintes passos:
1. identificao do problema: determinar o que se quer resolver ou qual
objetivo a ser atingido. Esse passo fundamental para a resoluo do
problema, pois no h como dizer ao computador o que fazer para
resolver o problema se nem sequer sabemos defini-lo;
2. identificao dos dados de entrada: determinar as informaes necessrias para os clculos que se seguiro;
3. identificao dos dados de sada: nesse passo so definidas as informaes que devero ser geradas como resultado do processamento.
neste passo que devemos definir inclusive o formato da sada como,
por exemplo, se ser em tela ou na forma de relatrio impresso;
4. identificao das regras e limitaes do problema ou das limitaes
do agente executante: nesse passo devemos identificar claramente
quais sero as regras a serem aplicadas na soluo. tambm
nesse passo que devemos definir as limitaes para o problema,
uma vez que o algoritmo pode ter de cobrir apenas parte de um
problema mais geral. Ainda possvel que seja necessrio definir
as limitaes do agente executante, como, por exemplo, definir as
limitaes em funo de pouca memria RAM do computador em
que o programa ir rodar;

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

189

Aula 1 Lgica para Programao

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

A lgica para programao torna o computador capaz de realizar


tarefas de forma autnoma e criativa, sem a necessidade da interferncia humana.

Um algoritmo representa uma seqncia lgica de instrues.

Cada instruo em um algoritmo faz com que o computador


execute uma ou um conjunto de tarefas especficas.

Para todo problema somente possvel criar um nico algoritmo


correto.

Uma vez que um algoritmo criado, no deve mais ser modificado.

Antes de iniciar a construo de um algoritmo, preciso definir a


linguagem de programao a ser usada.

190

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 1 Lgica para Programao

2. Comente a importncia dos dados de entrada, do processamento e dos


dados de sada para a construo de algoritmos.

Comentrio das atividades


Na atividade 1, caso voc tenha lido com ateno o material desta aula,
percebeu que a primeira alternativa obviamente falsa, uma vez que a lgica
para programao permite apenas determinar a seqncia de passos a ser
seguida para a soluo de um problema. Alm disso, como foi discutido, o
computador apenas segue essas instrues sem alteraes, no demonstrando
comportamento criativo ou autnomo. A segunda opo verdadeira, visto
que o algoritmo descreve uma seqncia ordenada ou lgica das tarefas que
o computador deve desempenhar. A terceira opo tambm verdadeira,
pois uma instruo representa uma ou um conjunto de tarefas especficas que
o computador dever desempenhar. A quarta opo falsa, uma vez que
um problema pode apresentar diferentes solues que daro origem a diferentes algoritmos. A quinta opo falsa, pois um algoritmo deve sempre ser
reexaminado a fim de identificar erros ou situaes inesperadas e, uma vez
identificado algum desses casos, o algoritmo dever ser modificado a fim de
tratar a situao levantada. A sexta e ltima opo falsa, pois um algoritmo
independe da linguagem de programao que ser mais tarde utilizada.
Para realizar a atividade 2, com base no que foi discutido nesta aula,
voc deve saber que de fundamental importncia identificar corretamente os
dados de entrada, o processamento e os dados de sada de um algoritmo. Sem
conhecer os dados de entrada, corremos o risco de no possuir dados suficientes
para uma soluo do problema. Alm disso correremos o risco de desconsiderar
algum detalhe importante sobre o problema que pode ser revelado por algum
dado de entrada ignorado. J os processamentos a serem realizados sobre
os dados de entrada so igualmente importantes. Eles nos diro o que fazer
ao longo do algoritmo. Alm disso, com os resultados dos processamentos, j
poderemos predizer alguns dos dados de sada do algoritmo. Os dados de
sada so importantes, pois representam o resultado final do algoritmo e esto
diretamente associados medida de eficcia do algoritmo. Se conhecermos os
dados de sadas, saberemos o que se quer do algoritmo.
Ao realizar as atividades com sucesso, voc teve oportunidade de alcanar
os objetivos propostos para esta aula de entender como a Lgica Formal e
Matemtica aplicada na Programao de Computadores e de compreender
a importncia da construo de algoritmos computacionais.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

191

Aula 1 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

193

Aula 2 Lgica para Programao

Na Linguagem Narrativa, os algoritmos so expressos diretamente em linguagem


natural no portugus, por exemplo. J o Fluxograma (ou Diagrama de Fluxo) uma
representao grfica que emprega formas geomtricas padronizadas para indicar
as diversas aes e decises que devem ser executadas para resolver o problema.
O Pseudocdigo emprega uma linguagem intermediria entre a linguagem natural
e uma linguagem de programao para descrever os algoritmos.
Clculo da Mdia de dois nmeros inteiros positivos
mdia = ( a + b)/2

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

No existe consenso entre os especialistas sobre qual a melhor maneira


de representar um algoritmo. Atualmente a maneira mais comum de representar
algoritmos por meio de pseudocdigo. Essa forma de representao tem a
vantagem de que o algoritmo pode ser escrito de uma forma que est prxima
de uma linguagem de programao de computadores, facilitando a criao do
programa.
Existem outras formas de representao conhecidas, porm pouco utilizadas,
como o Diagrama de Chapin ou Nassi-Shneiderman (N-S), que apresenta a soluo
do problema por meio de um diagrama de quadros com uma viso hierrquica e
estruturada. Essa forma no muito utilizada devido sua dificuldade em representar a recursividade.

2.1 Descrio Narrativa


Nessa forma de representao, os algoritmos so expressos diretamente em
linguagem natural.

194

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

195

Aula 2 Lgica para Programao

serem seguidos para a resoluo de problemas. E o ideal que um algoritmo


seja entendido da mesma forma por diferentes pessoas que o utilizarem.
Para que um fluxograma seja interpretado corretamente, necessrio
entender sua sintaxe e sua semntica. Sobre sintaxe de um fluxograma,
devemos entender como a correta utilizao dos seus smbolos grficos
mostrados na figura 2 e das expresses que podem ser escritas no seu interior. J a semntica diz respeito ao significado de cada smbolo, ou seja, como
interpret-lo corretamente. Com isso possvel entender e simular o algoritmo
representado.

Terminador

Documento

Referncia de pgina

Entrada Manual

Dados armazenados

Referncia fora da pgina

Dados

Exibio

Seta de
orientao do fluxo

Deciso

Preparao

Processamento

Figura 2. Simbologia bsica de um fluxograma

A interpretao de um fluxograma, via de regra, se d de cima para baixo


e da esquerda para a direita. importante seguir essa regra, pois garante que
o fluxo de instrues seja entendido corretamente.
Por se tratar de uma representao grfica, o fluxograma no se
mostra adequado para a representao de algoritmos maiores e/ou mais
complexos. Nesses casos, comum o uso do pseudocdigo como forma de
representao.
2.2.1 Simbologia bsica de um fluxograma
Estes so alguns dos smbolos mais conhecidos e utilizados ao longo dos
anos pelos profissionais da rea de informtica para a descrio de algoritmos
usando fluxograma e so descritos na norma internacional ISO 5807/1985.

196

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

Inicio

Terminador

Varivel

Entrada Manual

Utilizado para ler os dados necessrios ao programa.


Usado para representar dados, independente do tipo de
mdia, que sejam fornecidos manualmente, em tempo de
processamento. Permite representar a entrada de dados
via teclado, mouse, leitor de cdigo de barras ou qualquer outro dispositivo de entrada.
Utilizado para representar dados tanto de entrada quanto
de sada j definidos no prprio programa, como valores
de constantes.

Dados

Dados

Condio
SIM

Smbolo utilizado como ponto para indicar o incio e/ou


fim do fluxo de um programa. importante salientar que
um programa deve possuir apenas um terminador de
INCIO e outro de FIM.

NO

Deciso
Doc

Documento
Dados

Dados Armazenados
Varivel ou
mensagem

Exibio
Operaes

Preparao

Referncia de Pgina

Referncia fora da Pgina

Seta de orientao de fluxo


Processo

Processamento

Indica a deciso que deve ser tomada, indicando a


possibilidade de desvios para diversos outros pontos do
fluxo, dependendo do resultado de comparao de uma
condio estabelecida. Essa estrutura permite controlar o
fluxo de instrues em um fluxograma.
Utilizado para representar a utilizao de algum documento especfico contendo dados necessrios ao
algoritmo.
Usado para indicar dados que esto ou devero ser
armazenados pelo algoritmo.
utilizado quando se deseja que os dados sejam
impressos. Representa um dispositivo de sada como o
monitor ou a impressora.
Refere-se a um determinado grupo de operaes no
includas da diagramao.
Utilizado quando preciso particionar o diagrama.
Quando ocorrer mais de uma partio, colocada uma
letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao.
Especfico para indicar conexo do fluxo em outra
pgina.
Permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os smbolos ou blocos existentes.
Smbolo ou bloco que se utiliza para indicar clculos (algoritmos) a efetuar, atribuies de valores ou qualquer manipulao de dados que tenha um bloco especfico para sua
descrio.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

197

Aula 2 Lgica para Programao

2.2.2 Construindo um fluxograma


Para entendermos como um fluxograma criado para representar um
algoritmo, vamos discutir passo-a-passo a criao de um fluxograma para
representar um algoritmo que permita calcular a mdia final de um aluno
considerando que todo aluno realiza trs provas no semestre. O aluno considerado aprovado se a sua mdia for igual ou superior a 7,00, seno
considerado reprovado.
Antes de iniciarmos a construo do fluxograma, devemos formalizar o
algoritmo para solucionar o problema, de acordo com o que estudamos na
primeira aula.
evidente que este um problema de pouca complexidade e que envolve
poucas regras. Para resolver esse problema, fica claro que precisaremos
conhecer as trs notas do aluno, que devero ser informadas pelo usurio e,
em seguida, calcular a mdia por meio do clculo de mdia aritmtica simples
para a qual devemos aplicar a frmula mdia = (nota1+nota2+nota3)/3.
Aps o clculo da mdia, necessrio testar se o seu valor igual ou superior
ao valor 7,00 e, nesse caso, dever ser listada a mensagem Aprovado.
Em caso contrrio, dever ser listada a mensagem Reprovado. Agora que
conhecemos o algoritmo, possvel represent-lo como um fluxograma.
Inicialmente a forma mnima de um fluxograma dada pela juno de
seus terminadores de incio e fim, como mostrado na figura 3. Na verdade,
essa construo mnima executa absolutamente nada. Os smbolos de INICIO
e FIM, na verdade, no representam instrues de fato, mas so marcadores
essenciais que permitem a correta interpretao do fluxograma.
Inicio

Fim
Figura 3. Fluxograma mnimo

Entretanto, para nosso algoritmo, ser necessrio ler os dados de entrada,


nesse caso, as trs notas do aluno. Com isso, necessrio expandir o nosso
fluxograma, como mostra a figura 4. Por motivos didticos, para cada varivel
foi utilizado um smbolo de entrada manual. Na prtica, entretanto, comum a
utilizao de apenas um smbolo contendo todas as variveis a serem lidas.

198

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

Inicio

nota1

nota2

nota3

Fim
Figura 4. Fluxograma com leitura das notas

De posse do valor de cada uma das trs notas, possvel processar a


mdia do aluno. Vamos representar esse processamento utilizando o smbolo
de processo, como mostra a figura 5. Em um fluxograma, devemos sempre
representar a atribuio de valor a uma varivel por meio do smbolo ,
na forma varivel

valor. Em um fluxograma, a expresso varivel = valor

representa o teste se o valor da varivel igual ao valor informado do lado


direito da expresso e no uma atribuio.
Inicio

nota1
nota2
nota3

mdia

(nota1+nota2+nota3)/3

Fim
Figura 5. Fluxograma com o clculo da mdia

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

199

Aula 2 Lgica para Programao

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

mdia >= 7,00

NO

SIM

Aprovado

Reprovado

Fim

Figura 6. Fluxograma final

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

conjunto de instrues. Para representar esses casos em um fluxograma devemos


construir um desvio no fluxo de instrues que permita testar uma condio de
parada e, dependendo do seu resultado, retornar a um passo anterior a fim de
repetir o conjunto de instrues desejado.
A fim de compreender como tratar esse tipo de situao, vamos tomar
como exemplo a representao de um algoritmo que imprime todos os nmeros
pares positivos e menores do que um valor N informado. O fluxograma resultante mostrado na figura 7.
Inicio

N>0
SIM

N%2>0
SIM

N
NO
NO

N-1

Fim

Figura 7. Fluxograma para a impresso de nmeros pares


positivos e menores do que um valor N

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

201

Aula 2 Lgica para Programao

Nesse fluxograma possvel notar que, aps a leitura o valor N, este


ento testado para saber se ainda positivo. Em caso negativo, o programa
j encerrado, pois no haver valores pares positivos menores do que N.
Caso a condio de teste seja satisfeita, ou seja, retorne o valor verdadeiro,
esse valor testado para saber se um valor par. Para isso, testado o resto
da diviso do valor N por dois. Caso essa expresso retorne o valor zero, o
nmero par, seno impar. Caso a condio seja satisfeita N par o
valor de N ento exibido e, em seguida, decrementado de uma unidade.
Aps essa instruo, o fluxo ento desviado para o momento anterior ao
conjunto de passos que dever ser novamente repetido. Com isso conseguimos
garantir que esses passos sero executados at que a condio N > 0 retorne
o valor falso.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

INICIO (do ingls START) esta primitiva usada para identificar o


ponto inicial do algoritmo;
FIM (do ingls END) identifica o ponto final do algoritmo;
LEIA <mensagem>, <varivel> (do ingls INPUT) primitiva usada
para a leitura de dados do utilizador. Equivalente entrada de dados
manual do fluxograma;
IMPRIMA <mensagem>, <expresso> (do ingls OUTPUT) primitiva
usada para a apresentao de dados ao utilizador. Equivalente ao
smbolo de exibio do fluxograma;
<varivel> <expresso> atribuio do resultado da expresso
varivel indicada;
SE <condio> ENTAO (do ingls IF ... THEN)
<instrues a executar se condio verdadeira>
SENAO (do ingls ELSE)
<instrues a executar se condio falsa>
FIM SE (do ingls END IF) primitiva de controlo de fluxo equivalente
deciso dos fluxogramas;
ESCOLHA (<varivel>) (do ingls SWITCH)
CASO <valor1>: <instrues a executar>
CASO <valor2>: <instrues a executar>
...
CASO <valorN>: <instrues a executar>
CASOCONTRARIO: <instrues a executar>
FIM ESCOLHA primitiva de controlo de fluxo, usado para representar
uma estrutura de controle de seleo mltipla;
ENQUANTO <condio> FAA (do ingls WHILE)
<instrues a executar enquanto a condio for verdadeira>
FIM ENQUANTO (do ingls END WHILE) primitiva de controlo de
fluxo, sem equivalncia direta em fluxogramas, que implementa um
ciclo executado enquanto a condio referida seja verdadeira;
REPITA (do ingls REPEAT)
<instrues a executar enquanto a condio for verdadeira>

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

203

Aula 2 Lgica para Programao

ATE <condio> (do ingls UNTIL) primitiva de controlo de fluxo, sem


equivalncia direta em fluxogramas, que implementa um ciclo executado at que a condio referida seja verdadeira;
PARA <condio inicial> AT <condio final> FAA [PASSO
<incremento>] (do ingls FOR ... TO ... [STEP ...] DO)
<instrues a executar enquanto a condio final for falsa>

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;

VAR <nome da varivel> [,]: <tipo da varivel> (neste caso usado


uma reduo do termo VARIVEL do ingls VARIABLE) primitiva
utilizada na definio de variveis. Os tipos de variveis so discutidos em uma aula frente;
CONST <nome da constante> = <valor da constante> [,] (neste caso
usado uma reduo do termo CONSTANTE do ingls CONSTANT)
primitiva utilizada na definio de constantes. As constantes so
discutidas frente;
ESTRUTURA <nome da varivel>: <tipo da varivel> [,] (do ingls
STRUCT)
[<nome da varivel>: <tipo da varivel>]

FIM ESTRUTURA (do ingls END STRUCT) primitiva utilizada na definio de estruturas de variveis. Os tipos de variveis so definidos
frente;

FUNCAO <nome da funo> (<parmetros da funo>) (do ingls


FUNCTION)
<instrues da funo>
[RETORNA <variavel>] (do ingls RETURN)

FIM FUNCAO (do ingls END FUNCTION) primitiva utilizada na


definio de funes. Por parmetros entende-se uma lista dentro da
funo. Em certas situaes, como veremos mais frente, os parmetros podem ser utilizados para a funo exportar valores;

CHAMA <nome da funo> (<parmetros da funo>) (do ingls


CALL) primitiva utilizada para executar funes definidas com a
primitiva anterior.

204

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

Um exemplo de pseudocdigo mostrado a seguir.


ALGORITMO Media
VAR N1, N2, N3, Media : real
INICIO
LEIA N1, N2, N3
Media < (N1 + N2 + N3) / 2
SE Media >= 7,00 ENTAO
IMPRIMA Aprovado
SENAO
IMPRIMA Reprovado
FIM SE
FIM.
Uma grande vantagem da utilizao de pseudocdigo o fato de permitir
ao programador expressar as suas idias sem ter de se preocupar com a
sintaxe da Linguagem de Programao. Por outro lado, esse tipo de representao o que mais se aproxima da codificao final em uma Linguagem de
Programao e, por isso, a mais utilizada na prtica.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

205

Aula 2 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 2 Lgica para Programao

6. Sobre o algoritmo em pseudocdigo apresentado a seguir, correto


afirmar que:
ALGORITIMO A6;
VAR X: Inteiro;
INICIO
REPITA
LEIA (X);
SE (X < 0) ENTAO
IMPRIMA (O valor informado deve ser positivo)
SENAO
IMPRIMA (X*X);
FIM SE
ATE (X <= 0)
FIM

a) o pseudocdigo a forma de representao menos utilizada na prtica;


b) para esse algoritmo, caso o usurio informe um valor negativo, ser
emitida a mensagem O valor informado deve ser positivo e um novo
valor ser lido;
c) esse algoritmo no utiliza uma estrutura de deciso;
d) esse algoritmo no utiliza uma estrutura de repetio;
e) esse algoritmo imprime o quadrado de vrios nmeros informados
pelo usurio at que seja informado um valor negativo ou nulo.

Comentrio das atividades


Para resolver a atividade 1, com base no que foi estudado, existem vrias
formas, visto que a Descrio Narrativa no obedece a nenhuma regra,
apenas sendo uma adaptao da linguagem natural. Uma possvel resposta
para essa questo :
Repetir at que seja lido um nmero nulo
Ler nmero
Se o nmero for maior do que zero
imprimir Positivo
Seno se o nmero for menor do que zero
imprimir Negativo
Seno se o nmero for igual a zero
imprimir Nulo
Encerrar o programa

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

207

Aula 2 Lgica para Programao

Podemos ainda melhorar essa primeira soluo, suprimindo o teste se o


nmero for igual a zero, afinal, se o valor j no for maior e nem menor do que
zero s poder ser o prprio zero. Com isso diminuiremos a quantidade de tarefas
que o computador ter de executar. Dessa forma, teramos o seguinte algoritmo:
Repetir at que seja lido um nmero nulo
Ler nmero
Se o nmero for maior do que zero
imprimir Positivo
Seno se o nmero for menor do que zero
imprimir Negativo
Seno
imprimir Nulo
Encerrar o programa
Para resolver a atividade 2, tivemos de representar uma estrutura de
repetio que permita ler N valores at que um valor nulo seja informado. E
para cada valor devemos realizar testes condicionais para determinar qual
mensagem deve ser escrita e para onde deve ser desviado o fluxo de instrues. Uma resposta possvel para essa questo o seguinte fluxograma:
Inicio

N>0

NO

SIM

N<0

Positivo

SIM

NO

Positivo

N=0
SIM
Fim

208

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

NO

Nulo

Aula 2 Lgica para Programao

J na atividade 3, em pseudocdigo, uma soluo possvel para esse


problema :
ALGORITIMO A3;
VAR N: Inteiro;
INICIO
REPITA
LEIA (N);
SE (N > 0) ENTAO
IMPRIMA (Positivo)
SENAO
SE (N < 0) ENTAO
IMPRIMA (Negativo)
SENAO
IMPRIMA (Nulo)
FIM SE
FIM SE
ATE (N = 0)
FIM

Na atividade 4, de acordo com o que foi estudado sobre Descrio


Narrativa, voc deve ter reconhecido como opo incorreta a opo (d), pois
nesse tipo de representao no existem regras fixas e, por usar a linguagem
natural, duas pessoas distintas podero usar termos diferentes para descrever
um mesmo passo do algoritmo. A opo (a) correta, pois a Descrio
Narrativa utiliza a linguagem natural para descrever o conjunto de passos
do algoritmo. A opo (b), por sua vez, tambm correta, pois esse tipo de
representao pouco usado na prtica. A opo (c) correta e levanta um
dos principais problemas com esse tipo de representao, que a possibilidade de ambigidade, pois caso um passo seja ambguo, pode dar margem
a entendimentos distintos do algoritmo. Por ltimo, a opo (e) tambm est
correta, pois devemos utilizar frases curtas e simples a fim de manter a clareza
e facilitar a interpretao do algoritmo.
Considerando o que foi estudado nesta aula sobre fluxograma, voc deve
ter reconhecido como opo incorreta para a atividade 5 a opo (c), pois a
interpretao de um fluxograma deve ser sempre realizada de cima para baixo
e da esquerda para a direita. Voc deveria ter reconhecido ainda a opo (a)
como correta, pois o fluxograma exatamente uma representao grfica dos

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

209

Aula 2 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

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;

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

211

Aula 3 Lgica para Programao

os dados propriamente ditos, que correspondem s informaes que


devero ser processadas pelo computador.
A memria do computador pode ser entendida como uma seqncia finita
de gavetas que, em dado momento, guarda algum tipo de informao, como
um nmero, uma letra, uma palavra, uma frase, etc.
O computador, para poder trabalhar com alguma dessas informaes,
seja para ler seu contedo ou alter-lo, precisa saber exatamente onde, na
memria, o dado est localizado. Fisicamente, cada gaveta, ou cada posio
de memria esse o termo tcnico correto possui um endereo, ou seja, um
nmero, que indica o seu endereo na memria, em outras palavras, onde cada
informao est localizada. Esse nmero normalmente representado usando
notao hexadecimal, tendo o tamanho de quatro, ou mais bytes dependendo da arquitetura do computador. So exemplos de endereos fsicos:
End. Fsico

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

End. Lgico (varivel)

Contedo

7000:A210
3000:12BC
4100:0006

nome
valor
total

Paulo Srgio
345
99.834

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

Basicamente, uma varivel possui trs atributos: um nome (ou rtulo), um


tipo de dado associado mesma e um valor que representa a informao por
ela apontada. Uma vez definidos, o nome e o tipo de uma varivel no podem
ser alterados no decorrer de um programa.
Cada Linguagem de Programao define as suas regras para a criao
de identificadores de variveis. Todavia a maioria delas concorda que um
identificador de varivel deve ser formado por uma letra ou ento por uma
letra seguida de uma ou mais letras ou dgitos. Como regra, as Linguagens
de Programao no permitem o uso de espaos em branco ou de qualquer
outro caractere que no seja letra ou dgito, na formao de um identificador
de varivel.
Devemos sempre definir um nome significativo para as variveis em um
programa. Com isso muitas vezes possvel ter uma idia do contedo e
propsito de uma varivel mesmo sem inspecion-la. Um erro comum de
programadores iniciantes a utilizao de nomes de variveis como simples
letras, como a, b, c, x, y. Isso torna o programa difcil de ler e compreender.
Em alguns casos, nem mesmo o seu autor entende!
Algumas linguagens permitem o uso do caractere _ (underline) para
separar as palavras em um identificador. Assim possvel criar uma varivel
com o rtulo Nome_do_Cliente.
Existem alguns dados que no sofrem alterao em seu valor do incio
ao fim do programa. A esse tipo de informao convencionou-se chamar
de constante.
Conforme o seu tipo, a constante classificada como sendo numrica,
lgica e literal.
As constantes so muito utilizadas na programao principalmente em
situaes nas quais temos de referenciar um mesmo valor vrias vezes ao
longo do programa. Para esses casos, podemos definir um nome de constante
e atribuir-lhe um valor. A partir da basta referenciar o nome da constante e
implicitamente estaremos nos referenciando ao seu valor. A principal vantagem
dessa abordagem a possibilidade de alterar o valor da constante apenas
em sua definio e essa alterao ser automaticamente refletida em qualquer
outro local do programa em que a sua referncia usada. Em casos como
esse, sem o uso de constantes, ser necessrio alterar o valor em cada linha
do programa onde ele foi usado.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

213

Aula 3 Lgica para Programao

Um conceito importante sobre variveis diz respeito sua localidade


ou escopo. Uma varivel declarada no programa principal passa a ser
visvel em todo o programa e, por isso, so chamadas de variveis globais.
J uma varivel declarada dentro de uma funo ou procedimento, dita
como local, indicando que s ser visvel e conhecida dentro desse procedimento ou funo. Procedimentos e funes sero estudados na aula sobre
Modularizao.
Outro atributo caracterstico de uma varivel o tipo de dado que ela
pode armazenar. Esse atributo define a natureza das informaes contidas
na varivel.

3.1 Tipos de dados


Os dados so classificados de acordo com o tipo de informao neles
contida. Essa classificao no se aplica a nenhuma linguagem de programao especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria
das linguagens. Na verdade, essa classificao necessria para determinar
a poro de memria que ser necessria para armazenar o dado. Alm disso
essa classificao garante que a interpretao do contedo da posio de
memria seja feita de forma adequada.
3.1.1 Dados Numricos
Nessa classificao, esto todos os dados que faam referncia a valores.
Para o computador, existem diferentes formas de representar um valor, dependendo das suas caractersticas. Por exemplo, para armazenar um valor real
que possui casas decimais aps a vrgula necessrio um espao bem maior
de memria. J um valor inteiro ocupa bem menos espao.
Os dados numricos possuem uma subclassificao que os define
de acordo com a sua grandeza de representao. Entre as principais
subclasses temos:
inteiro os nmeros inteiros so aqueles que no possuem casas decimais nem so nmeros fracionrios, e podem ser positivos, negativos
ou zero. Exemplos de nmeros inteiros so 55 (inteiro positivo), 0
(zero inteiro) e -98 (inteiro negativo);
real os dados do tipo real so aqueles que possuem parte decimal
ou so nmeros fracionrios, e podem ser positivos, negativos ou zero.

214

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

Exemplos de dados do tipo real so 3.2 (real positivo), 0.00 (zero


real) e -19.76 (real negativo).
Na implementao particular de cada linguagem, esses tipos de
dados numricos so expandidos, dando origem a novos tipos de dados.
Normalmente, esses novos tipos permitem representar valores maiores ou
menores a fim de permitir um melhor uso do espao de memria disponvel
para execuo do programa. A Linguagem de Programao C, que ser
estudada nesse curso, por exemplo, apresenta para os nmeros inteiros os
tipos integer (inteiro tradicional) usado para representar nmeros entre
32768 at +32767 e ocupa dois bytes na memria; char (caractere que,
na verdade, um inteiro pequeno) usado para representar nmeros entre
0 e 255; word usado para representar nmeros inteiros positivos entre
0 e 65535 e ocupa dois bytes na memria; ShortInt usado para representar valores inteiros entre -128 e +128 e ocupa um byte na memria; e
LongInt usado para representar nmeros inteiros entre 2.147.483.648 at
2.147.483.648 e ocupa quatro bytes na memria. Existem diferentes tipos
para os valores reais tambm.
3.1.2 Dados literais (string)
Uma informao do tipo literal representa um conjunto de caracteres que
pode ser formado por letras, dgitos ou smbolos especiais.
O computador representa cada letra, dgito e smbolo especial como
um valor inteiro que varia de 0 a 255. Assim cada caractere tratado
internamente por esse valor. A correspondncia de valores para os caracteres fornecida por uma padronizao internacional conhecida como
Tabela ASCII.
A Tabela ASCII ISO 8859-1, tambm chamada Latim I, uma das
Tabelas ASCII estendidas, orientada especificamente para alguns idiomas
europeus ocidentais.
A correta visualizao dos caracteres dessa tabela depende de vrios
fatores tcnicos, inclusive da fonte utilizada. Em computadores atualizados,
provavelmente, ser possvel uma visualizao adequada sem problemas.
Observe que nem todos os nmeros da tabela correspondem a grafemas.
Cabe ressaltar que os valores de 0 a 31, 127 e 255 so reservados para funes
especiais de processamento e no representam caracteres imprimveis.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

215

Aula 3 Lgica para Programao

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

Figura 1 Tabela ASCII.


Fonte: <http://www.abusar.org>.

Essa conveno foi padronizada para possibilitar a migrao de programas


entre mquinas diferentes.
Cabe salientar que o comprimento de um dado do tipo literal dado pelo
nmero de caracteres nele contido. Logo, para armazenarmos um tipo de dado
literal precisamos reservar um espao contguo de memria igual ao comprimento do mesmo, destinando um byte para cada caractere de informao. O
literal Programao, por exemplo, possui comprimento igual a 11, ou seja,
possui 11 caracteres.
3.1.3 Dados lgicos
Um dado do tipo lgico s possui dois valores possveis: verdadeiro ou
falso. Dessa forma poderamos pensar em armazenar uma informao desse
tipo em apenas um nico bit. Todavia a menor poro de memria que se pode
acessar o byte (oito bits). Assim uma informao do tipo lgico armazenada em um byte de memria.

216

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

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.

3.2 Variveis estruturadas


Existem tipos especiais de varivel que permitem manipular mais de um
tipo de dados ao mesmo tempo.
Essa funcionalidade facilita a manipulao de grandes conjuntos de dados,
alm de diminuir a complexidade do programa e as possibilidades de erros.
Entre os tipos mais comuns, implementados na maioria das linguagens de
programao, esto os vetores e registros.
3.2.1 Variveis unidimensionais (vetores) e multidimensionais matrizes
Esse tipo de varivel contm vrios valores do mesmo tipo bsico. Assim
possvel utilizar um vetor ou matriz de inteiros, por exemplo.
Na verdade, um vetor uma coleo de elementos do tipo especfico e
com tamanho pr-definido (o nmero de elementos do vetor deve ser definido
pelo programador na declarao dessa estrutura).
O vetor uma coleo unidimensional e o acesso a cada elemento dado
por um ndice que representa a posio do elemento no vetor. Na maioria das
representaes de vetores, o acesso representado pelo nome da varivel do
tipo vetor seguido de um valor inteiro entre colchetes, representando o ndice.
A sintaxe para declarao desse tipo de varivel depende da linguagem de
programao que a implementa. No caso da linguagem Pascal, a declarao
notas: array[1..10] of integer usada para definir a varivel notas como sendo
do tipo vetor de inteiros, contendo 10 elementos desse tipo. J na linguagem
C, essa mesma varivel definida a partir da declarao int notas[10]. No
caso do Pascal, a declarao notas[1] permite acessar o valor do primeiro
elemento do vetor, enquanto notas[10], o ltimo. J na linguagem C, um vetor
indexado a partir do ndice zero. Com isso, para acessar o primeiro elemento
de um vetor em C, usada a declarao notas[0] e notas[9] para o ltimo.
Ao indexar um vetor, estamos tratando de um item individual, como se
fosse uma varivel isolada.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

217

Aula 3 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

Aqui usaremos uma notao mais genrica, independente da linguagem


de programao a ser usada. Usando essa notao, teramos a seguinte declarao do mesmo registro:
TIPO TAluno = REGISTRO
nome: CARACTERE;
idade: INTEIRO;
cpf: CARACTERE;
FIM REGISTRO
Nesse trecho de cdigo definida a estrutura do tipo registro chamada
TAluno. Essa estrutura agrega os campos char nome[80] usados para representar um literal com at 80 caracteres que armazena o nome do aluno, int
idade usado para armazenar a idade do aluno, e char cpf[11] usado para
representar um literal de at 11 caracteres que armazena o CPF do aluno. Em
seguida, declarado um vetor com 10 elementos do tipo TAluno.
A vantagem dessa abordagem que o acesso ao elemento alunos[0], por
exemplo, retorna um registro do tipo TAluno contendo todos os seus campos de
uma nica vez. Assim cada campo pode ser facilmente acessado individualmente
por sua descrio como alunos[0].nome, alunos[0].idade ou alunos[0].cpf.
Um bom programador deve dominar o uso dessas estruturas a fim de diminuir a complexidade na manipulao dos dados em um programa.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

219

Aula 3 Lgica para Programao

J um dado constante no sofre alterao no seu valor durante a execuo


do programa.

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.

Comentrio das atividades


Na atividade 1, de acordo com o que voc estudou sobre variveis e
constantes, deve reconhecer a opo (b) como a opo incorreta. Essa opo
apresenta o conceito contrrio de varivel. Voc deveria saber que o valor
de uma varivel pode ser alterado a qualquer momento da execuo de um

220

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 3 Lgica para Programao

programa. E exatamente essa variao de seu valor que d nome a esse


tipo de dado. A opo (a) est correta, pois as variveis servem de apontador
para as posies da memria RAM, onde esto os dados a serem manipulados
pelo programa. A opo (c) tambm apresenta um conceito correto sobre tipo
de dado, pois baseado no tipo do dado que o computador saber como
tratar a posio de memria apontada pela varivel. A opo (d) est correta,
inclusive por esse motivo que vetores e matrizes so considerados estruturas
de dados homogneos por tratar de dados do mesmo tipo. Por fim, a opo
(e) tambm est correta ao trazer a definio de um dado constante.
Na atividade 2, aps analisar os contedos a serem armazenados voc
deve ter concludo que a opo correta a opo (a), pois ela apresenta
para o contedo idade o tipo inteiro (afinal costumamos utilizar valores
inteiros positivos para a contar a passagem dos anos no usamos 3,4
anos de idade); para o contedo temperatura devemos usar casas decimais,
logo o tipo mais indicado o real; para o nome da cidade precisamos de um
literal ou caractere; para o nmero da carteira de identidade, na verdade,
poderamos usar um tipo caractere (isso permitiria armazenar os caracteres
de formatao, como ponto e hfen) ou como inteiro (sem formatao); j
para as notas de um aluno, uma nota normalmente expressa como um valor
real e como ser mais de uma nota (notas), o tipo de dado mais adequado
a esse caso um vetor de real, o que permitiria manipular todas as notas
de um aluno a partir de uma mesma varivel. Tomando como base essas
justificativas, voc deveria considerar as demais opes como incorretas,
pelos seguintes motivos: a opo (b) apresenta inadequao para o contedo
temperatura e para as notas do aluno; a opo (c) apresenta inadequao
para o nome da cidade; a opo (d) apresenta inadequaes para o nome
da cidade e as notas do aluno; e a opo (e) apresenta inadequaes para
o nmero da carteira de identidade.
Para solucionar a atividade 3, voc j deve saber que o uso de variveis
permite ao programador manipular de forma mais fcil os dados que esto
armazenados na memria. Sem o auxlio de variveis, toda vez que fosse necessrio algum dado da memria seria necessrio enderear a posio de memria
usando seu endereo fsico em notao hexadecimal. As variveis levam esse
nome em funo do seu comportamento, em que o valor de uma varivel (na
verdade, o contedo da posio de memria por ela referenciada) pode ser
alterado vrias vezes ao longo da execuo de um programa. J um dado do
tipo constante no tem o seu valor alterado do incio ao fim do programa.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

221

Aula 3 Lgica para Programao

Na atividade 4, voc deve ter se lembrado de que variveis do tipo


Registro facilitam a manipulao de dados relacionados, como, por exemplo,
o nome, a idade e o endereo de um aluno. Essa facilidade advm do fato de
que uma varivel do tipo registro, ao ser referenciada, disponibiliza todos os
dados associados de uma s vez. De outra forma, teramos de controlar cada
dado do aluno em variveis distintas e, para acessar os dados de um aluno,
teramos de realizar, na verdade, o acesso a trs variveis distintas. No caso
dos registros, cada informao sobre o aluno fica disponvel como um campo
da estrutura Registro.
Ao realizar as atividades propostas com sucesso, voc alcanou os objetivos desta aula de entender os conceitos de varivel e de constante e suas
utilizaes e de utilizar adequadamente cada tipo de dado disponvel.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Lgica para Programao

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

223

Aula 4 Lgica para Programao

De acordo com o nmero de termos sobre os quais os operadores atuam,


podemos classific-los em:
binrios: quando atuam sobre dois termos. Os operadores aritmticos
bsicos (adio, subtrao, diviso e multiplicao), por exemplo;
unrios: quando atuam sobre um nico termo. O sinal de negativo (-) na
frente de um nmero, cuja funo inverter seu sinal, por exemplo.

4.1 Operadores aritmticos


Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da adio, subtrao, multiplicao e diviso, grande parte
das linguagens de programao tambm disponibilizam o operador para a
operao de exponenciao. Os smbolos para os operadores aritmticos so
os listados a seguir.
OPERAO
Adio
Subtrao
Multiplicao
Diviso
Exponenciao
Resto da diviso inteira
Quociente da diviso inteira

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Lgica para Programao

importante salientar que, na maioria das Linguagens de Programao,


o tipo de dado resultante depende dos tipos de dados dos termos. 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
A+B

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

4.2 Operadores relacionais


Os operadores relacionais so utilizados para comparar dados em um
programa. Os valores a serem comparados podem estar armazenados em
constantes, variveis, valores numricos ou literais.
Os operadores relacionais so:
OPERAO
Igual a
Diferente de
Maior que
Menor que
Maior ou igual a
Menor ou igual a

SMBOLO
=
<> ou != (depende da linguagem)
>
<
>=
<=

Esses operadores sempre retornam valores lgicos (verdadeiro ou


falso). Se os termos forem numricos, a comparao feita com base

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

225

Aula 4 Lgica para Programao

no seu valor. Se os termos forem texto (literais), a comparao feita


lexicograficamente, ou seja, seguindo a ordem alfabtica. Se os termos
forem lgicos, apenas esto disponveis os operadores de igualdade e a
diferena.
Para estabelecer prioridades no que diz respeito a qual operao executar
primeiro, devemos utilizar os parnteses.
Vale ressaltar que no eficaz comparar valores do tipo real com os
operadores de igualdade em virtude de a representao em ponto flutuante ser
inexata em alguns casos.
Apesar de algebricamente correta, a expresso (1.0 / 3.0) + (1.0 / 3.0) +
(1.0 / 3.0) = 1 avaliada como falsa devido ao fato de 1.0 / 3.0 ter como resultado um valor que contm nmero infinito de casas decimais (3.3333333...).
O computador apenas capaz de utilizar um nmero finito de casas decimais
e, portanto, feito um arredondamento do valor de 1/3 em cada ocorrncia.
Para evitar os erros causados pela representao inexata de valores reais,
deve-se evitar utilizar as comparaes de igualdade com nmeros reais.

4.3 Operadores lgicos


Os operadores lgicos servem para combinar resultados de expresses,
retornando se o resultado final verdadeiro ou falso.
Esse tipo de operador amplamente usado na composio de expresses lgicas que so muito utilizadas nas estruturas de deciso e repetio
em um programa.
Os operadores lgicos so:
E (do ingls AND) uma expresso desse tipo verdadeira se todas
as condies forem verdadeiras;
OU (do ingls OR) uma expresso desse tipo verdadeira se uma ou
todas as condies forem verdadeiras;
NO (do ingls NOT) uma expresso desse tipo inverte o valor da
expresso ou condio, se verdadeira inverte para falsa e vice-versa.
Os operadores lgicos e relacionais so elementos de fundamental importncia na elaborao de um programa. Em todos os programas so utilizadas
expresses relacionais e lgicas para a tomada de decises e conseqente
desvio do fluxo do programa.

226

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Lgica para Programao

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

4.4 Operador de concatenao


Esse operador usado para concatenar, em outras palavras, juntar dois
valores ou variveis do tipo texto (literal). Normalmente utilizamos esse tipo de
operador para compor mensagens ao longo do programa.
Na maioria das Linguagens de Programao, o smbolo usado para a
concatenao o mesmo da adio. Assim a expresso Programar+
fcil teria como resultado o literal Programar fcil. comum utilizar a
concatenao em expresses envolvendo variveis. Caso a varivel seja
do tipo literal, esse operador pode ser usado diretamente; caso contrrio,
ser necessrio algum tipo de converso a fim de torn-lo um literal. Na
verdade, a maioria das linguagens de programao traz funes para
esse propsito.

4.5 Operador de atribuio


O operador de atribuio usado para definir o valor de uma varivel.
Na prtica, para executar essa operao, o computador preenche a posio
de memria apontada pela varivel com o valor posicionado do lado direito
do operador de atribuio.
A expresso custo 23 implica em atribuir o valor 23 varivel chamada
custo. comum o uso de expresses aritmticas ou relacionais no lado direito
desse operador. Nesses casos, o valor resultante da expresso transferido
para a varivel.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

227

Aula 4 Lgica para Programao

importante ressaltar que o termo do lado esquerdo do operador de


atribuio deve sempre ser um identificador de varivel, de outra forma no
haver onde armazenar o valor posicionado no lado direito.

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

a) Maior do que [ >]

b) Resto da diviso inteira [ MOD ]

c) Negao [NOT ]

d) Multiplicao [ * ]

e) OU lgico [ OU ]

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Lgica para Programao

2. Das alternativas apresentadas abaixo, indique aquela que no devolve um


valor lgico. Considere os seguintes valores para as variveis Media7,
PaisBrasil, Nota7.25, Valorverdadeiro e Opcao=a.
a) ((Nota >= Media) E (Opcao=b))
b) (((Nota + 1) > Media) OU (NAO Valor))
c) (((Media*2)-1) MOD 2)
d) (((Media DIV 7) = 1) OU (Nota >= Media))
e) (((Nota - Media) > 3) = Valor)
3. O algoritmo a seguir apresenta um problema discutido nesta aula. Identifique
o problema e sugira as alteraes necessrias para a sua correo.
ALGORITMO A3;
VAR

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.

Comentrio das atividades


Na atividade 1, com base no que voc estudou, deve ter ficado claro que
a opo correta a opo (c), pois a operao lgica de negao inverte o
valor lgico do nico termo sobre o qual opera. A opo (a) incorreta, pois
o operador maior que um operador binrio, pois compara dois valores,
retornando verdadeiro se o valor do lado esquerdo for maior do que o lado
direito. A opo (b) tambm incorreta, pois o operador de resto da diviso
inteira tambm um operador binrio. A opo (d) incorreta, pois apresenta

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

229

Aula 4 Lgica para Programao

a operao aritmtica de multiplicao que tambm binria. E, por fim, a


opo (e) tambm apresenta um operador binrio, pois o operador lgico OU
opera sobre dois termos lgicos.
Para voc responder a atividade 2, deve ter considerado a hierarquia das
operaes e os valores das variveis. Da bastou usar de substituio para
avaliar o resultado de cada expresso. Seguindo essa abordagem, voc deve
ter chegado concluso de que a nica alternativa que no devolve um valor
lgico a opo (c), pois, se substituirmos os valores das variveis e executarmos as operaes, teremos: (((Media*2)-1) MOD 2) (((7*2)-1) MOD 2)
((14 1) MOD 2) (13 MOD 2) 1. Ou seja, o resultado um valor
inteiro. Se analisarmos as outras expresses da mesma maneira, veremos que
todas resultam em um valor lgico: a opo (a) retorna ((Nota >= Media) E
(Opcao=b)) ((7.25 >= 7) E (a=b)) (verdadeiro E falso) falso; a
opo (b) retorna (((Nota + 1) > Media) OU (NAO Valor)) (((7.25 + 1) >
7) OU (NAO verdadeiro)) ((8.25 > 7) OU falso) verdadeiro OU falso
verdadeiro; a opo (d) retorna (((Media DIV 7) = 1) OU (Nota >= Media))
(((7 DIV 7) = 1) OU (7.25 >= 7)) ((1 = 1) OU (verdadeiro)) (verdadeiro
OU verdadeiro verdadeiro; e a opo (e) retorna (((Nota - Media) > 3) =
Valor) (((7.25 - 7) > 3) = verdadeiro) ((0.25 > 3) = verdadeiro) falso
= verdadeiro falso.
A partir da anlise do algoritmo apresentado na atividade 3, voc deve
ter notado que a instruo RESULTADO (A / B) * 5; apresenta um problema
quanto ao tipo de dado resultante da expresso e o tipo de dado da varivel
que recebe o valor da expresso. A varivel RESULTADO declarado como
sendo do tipo inteiro. Por outro lado, voc j deve saber que o operador de
diviso quando aplicado a dois valores reais, retorna como resultado um valor
tambm real; e o mesmo acontece com a multiplicao que segue. Assim o
resultado da expresso do tipo real. E, nesse caso, a varivel RESULTADO que
do tipo inteiro no pode receber esse valor. A soluo para esse problema
simples nesse algoritmo. Basta alterar o tipo de dado do resultado para real,
ou seja, declar-lo como VAR RESULTADO: real.
Na atividade 4, se voc utilizou a tcnica de substituio dos valores das
variveis e a resoluo de cada operao respeitando a hierarquia entre elas,
voc concluiu que ((((A MOD 5) > 5) OU (B/C >= 1)) E ((NAO ((A<50) E (B <>
C))) OU (C=5))) ((((23 MOD 5) > 5) OU (5/5 >= 1)) E ((NAO ((23<50) E
(5 <> 5))) OU (5=5))) (((3 > 5) OU (1 >= 1)) E ((NAO (verdadeiro E falso))
OU verdadeiro)) ((falso OU verdadeiro) E ((NAO falso) OU verdadeiro))

230

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 4 Lgica para Programao

(verdadeiro E (verdadeiro OU verdadeiro)) (verdadeiro E verdadeiro)


verdadeiro. Logo o valor para essa expresso lgica verdadeiro.
Ao realizar as atividades propostas, checando-as com os comentrios e
obtendo sucesso, voc est apto a reconhecer os principais Operadores da
Lgica para Programao, utilizando-os, e construir corretamente expresses
aritmticas e lgicas, avaliando-as. Parabns!

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


























UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

231

Aula 4 Lgica para Programao

232

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Lgica para Programao

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

233

Aula 5 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Lgica para Programao

Para a manipulao de arquivos, a maioria das Linguagens de Programao


implementam funes especficas para as principais operaes sobre arquivos:
ABRE, FECHA, COPIA, GRAVA, REMOVE, FIMDEARQUIVO, PROXIMO e
POSICIONE.
A operao ABRE (<varivel do tipo arquivo >) usada para abrir o
arquivo e posicionar o ponteiro de leitura no primeiro registro armazenado.
Na prtica, a implementao dessa operao envolve uma srie de verificaes para garantir que o arquivo existe, se o usurio do computador possui
direitos de acesso a ele, etc.
Ao trabalharmos com arquivos, devemos ter como prtica que sempre que
um arquivo no estiver sendo mais usado ele deve ser fechado para garantir
a integridade dos dados nele armazenados. Para fechar um arquivo devemos
usar a operao FECHA (<varivel do tipo arquivo >).
Ao manipular um arquivo, temos a necessidade de operar sobre os
campos dos registros contidos nele. Nesses casos, copiamos o contedo do
registro atual de um arquivo para outra varivel do tipo registro. A partir da
operamos sobre os campos do registro que recebeu os dados copiados. Nessa
situao usada a operao COPIA (<varivel do arquivo origem>, <varivel
do tipo registro>). importante lembrar que a varivel do tipo registro que
ir receber uma cpia dos dados deve ser do mesmo tipo dos registros do
arquivo, ou seja, armazenar registros contendo exatamente a mesma estrutura
os mesmos campos. Essa operao COPIA pode ser vista como uma leitura
do registro atual do arquivo.
O exemplo de algoritmo a seguir, representado em pseudocdigo,
demonstra o uso das operaes ABRE, FECHA e COPIA.
ALGORITMO arquivos;
TIPO TAluno = REGISTRO

nome: CARACTERE;

idade: INTEIRO;

cpf: CARACTERE;

FIM REGISTRO

TIPO TArqAluno = ARQUIVO DE TAluno;


VAR alunos: TArqAluno;

aux: TAluno;

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

235

Aula 5 Lgica para Programao

INICIO

ABRE(alunos);

COPIA(alunos, aux);

IMPRIMA(Nome: + aux.nome);

IMPRIMA(Idade: + aux.idade);

IMPRIMA(CPF: + aux.cpf);

FECHA(alunos);

FIM

Como a funo principal de um arquivo guardar informaes para que


no se percam com o desligamento do computador, a operao GRAVA (<varivel do tipo arquivo>, <varivel do tipo registro>) deve ser usada. Essa operao
diz ao computador que o registro (na verdade os dados armazenados) passado
por parmetro dever ser armazenado no arquivo. Na prtica, criado um
novo registro no final do arquivo e os dados so copiados para ele.
Certos algoritmos exigem em algum momento que um registro do arquivo
seja apagado. Isso possvel por meio da operao REMOVE (<varivel do
tipo arquivo >) que ir remover o registro atualmente referenciado pelo apontador do arquivo, mais conhecido como posio corrente.
Os arquivos de registros normalmente possuem uma caracterstica seqencial,
na qual cada novo registro inserido no final do arquivo, sem nenhuma ordenao. Essa caracterstica implica termos de buscar sequencialmente, ou seja, um
registro aps o outro. Para mover a posio corrente de um arquivo para o prximo
registro, devemos utilizar a operao PROXIMO (<varivel do tipo arquivo>).
A movimentao em um arquivo pode levar at o ltimo registro do arquivo
e, nesse caso, no haver um prximo registro a ser posicionado, e dizemos
que foi alcanado o final do arquivo. Em um algoritmo envolvendo arquivos
precisamos saber quando chegamos ao final do arquivo. Nesse caso, usamos
a operao FIMDEARQUIVO (<varivel do tipo arquivo>) que retorna um valor
lgico verdadeiro, indicando que o fim do arquivo foi alcanado; e falso,
indicando o contrrio.
O exemplo a seguir expande o anterior e demonstra como podemos
ler e gravar informaes em um arquivo. A primeira estrutura de repetio
ENQUANTO do algoritmo serve para inserir repetidamente novos registros
ao arquivo. Na prtica, enquanto o usurio responder S para a questo
INSERIR NOVO REGISTRO? (S/N) o conjunto de comandos que lem os
dados de um novo registro e grava-o no arquivo sero executados.

236

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Lgica para Programao

ALGORITMO arquivos;

TIPO TAluno = REGISTRO

nome: CARACTERE;

idade: INTEIRO;

cpf: CARACTERE;

FIM REGISTRO

TIPO TArqAluno = ARQUIVO DE TAluno;


VAR alunos: TArqAluno;

aux: TAluno;

resposta: CARACTERE;

INICIO

ABRE (alunos);

IMPRIMA INSERIR NOVO REGISTRO? (S/N)

LEIA (resposta);

ENQUANTO (resposta = S) FACA

LEIA (aux.nome);

LEIA (aux.idade);

LEIA (aux.cpf);

GRAVA (alunos, aux);

IMPRIMA INSERIR NOVO REGISTRO? (S/N)

LEIA (resposta);

FIM ENQUANTO

FECHA (alunos);

IMPRIME (Contedo do arquivo: );

ABRE (alunos);

ENQUANTO (NO FIMDEARQUIVO (alunos)) FACA

COPIA (alunos,aux);

IMPRIMA(Nome: + aux.nome);

IMPRIMA(Idade: + aux.idade);

IMPRIMA(CPF: + aux.cpf);

PROXIMO (alunos);

FIM ENQUANTO

FECHA (alunos);

FIM

A maioria das Linguagens de Programao j implementam estruturas


de arquivos que permitem, alm do acesso seqencial, que possamos
acessar um registro especfico do arquivo sem ter de percorrer os regis-

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

237

Aula 5 Lgica para Programao

tros que o antecedem. Esse tipo de arquivo conhecido como arquivo de


acesso randmico ou de acesso direto. Para ele, podemos usar a operao
POSICIONE (<varivel do tipo arquivo>, <chave>), que permite posicionar
como registro corrente o registro que possua como valor de campo o valor
passado como chave. Essa instruo muito til quando temos uma grande
quantidade de dados no arquivo e queremos realizar alguma busca por um
registro especfico.

5.3 Arquivos texto


Algumas vezes queremos armazenas dados sem nenhuma estrutura especfica, como no caso dos registros. Na verdade, queremos apenas armazenar
um conjunto de caracteres.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Lgica para Programao

2. Para esta atividade, considere a seguinte estrutura de arquivo:


Cdigo
1102
2004
5534
6676

Nome
Gionvani Del Gado
Maria das Dores
Joo Roberto
Selena da Conceio

Idade
34
23
20
18

Cidade
So Paulo
Curitiba
Curitiba
Belo Horizonte

Considere ainda que a linha marcada indique o registro corrente e que


a varivel alunos usada para manipular o arquivo. Nessas condies,
indique, entre as opes apresentadas a seguir, aquela que apresenta a
alternativa incorreta.
a) Aps ser executada a instruo COPIA (alunos, aux), o valor do campo
aux.Cidade Curitiba.
b) A instruo REMOVE (alunos) ir remover o aluno com nome Maria
das Dores.
c) A instruo PROXIMO (alunos) ir deslocar o registro corrente para o
aluno Joo Roberto.
d) A instruo POSICIONE (alunos, 6676) ir posicionar o registro
corrente no aluno Giovani Del Gado.
e) A seqncia de instrues PROXIMO (alunos); COPIA (alunos, aux);
aux.Idade = 27; GRAVA (alunos, aux); ir alterar a idade do aluno
Joo Roberto de 20 para 30.
3. Um arquivo de produtos tem os seguintes campos: Cdigo do produto,
Descrio, Quantidade em Estoque, Preo de custo, Margem Custo/
Venda. Apresente a definio desse arquivo.
4. Utilizando a estrutura criada na atividade anterior, desenvolva um algoritmo em pseudocdigo que permita calcular o valor total em estoque, considerando o preo de custo de cada produto e sua quantidade em estoque.

Comentrio das atividades


Na atividade 1, com base nos estudos que voc realizou sobre a estrutura de Arquivo, voc deve ter reconhecido a opo (d) como a opo
correta, uma vez que somente as sentenas I e IV esto corretas. Se voc
analisou cada sentena, deve ter notado que a I est correta, pois um arquivo
mantido em memria secundria (disco rgido, pen drive, etc); a II est
incorreta em conseqncia da avaliao da sentena anterior, pois uma

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

239

Aula 5 Lgica para Programao

vez que o arquivo mantm os dados em memria secundria, mesmo com o


encerramento do programa, os dados so mentidos; a III est parcialmente
correta, pois um arquivo representa realmente uma coleo de registros,
todavia no possui tamanho fixo; e a IV est correta, pois se um arquivo
um conjunto de registros, preciso definir o formato desses registros antes
de declarar o arquivo.
Usando os conceitos sobre as operaes usadas para a manipulao de
arquivos, discutidos nesta aula, voc deveria ter concludo que a nica alternativa incorreta na atividade 2 apresentada na opo (d), pois a operao
POSICIONE (alunos, 6676) iria realizar o acesso direto ao registro contendo
o valor 6676, o que levaria a posicionar o registro corrente no aluno Selena
da Conceio e no no Giovani Del Gado; a opo (a) est correta, pois
o registro corrente possui como valor do campo Cidade o valor Curitiba; a
opo (b) tambm est correta, pois a instruo REMOVE (alunos) iria remover
o registro corrente, nesse caso o aluno Maria das Dores; a opo (c) est
correta, pois a instruo PROXIMO (alunos) ir forar a movimentao do
registro corrente para o prximo registro do arquivo, em nosso caso o aluno
Joo Roberto; e a opo (e) tambm est correta, pois a instruo PROXIMO
(alunos) iria mover o registro corrente para o aluno Joo Roberto, a instruo
COPIA (alunos, aux) iria copiar o contedo do registro corrente para a varivel
aux, a instruo aux.Idade = 27 altera o valor do campo Idade para a varivel
aux e, por fim, a instruo GRAVA (alunos, aux) ir sobrepor as informaes
do registro corrente pelo contedo da varivel aux.
Seguindo as instrues da atividade 3 e o contedo discutido nesta aula,
voc criou um tipo de dado Registro para representar cada registro individual
do arquivo de produtos. Em seguida, voc definiu o arquivo propriamente dito,
como mostrado no trecho a seguir:
TIPO TProduto = REGISTRO
Codigo: inteiro;
Descricao: caractere;
Quantidade: inteiro;
PrecoCusto: real;
MargemVenda: real;
FIM REGISTRO;
TIPO TArqProduto = ARQUIVO DE TProduto;

240

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 5 Lgica para Programao

A atividade 4 envolveu os seus conhecimentos em arquivos, mas tambm


na representao de algoritmos em pseudocdigo. Em resumo, a soluo para
esse problema envolveu a leitura de todos os registros contidos no arquivo e
para cada um voc deve ter totalizado o valor total de custo. A frmula a ser
usada para o custo total de cada produto deve ter sido a multiplicao entre os
campos Quantidade e PrecoCusto. O algoritmo completo mostrado a seguir.
ALGORITMO arquivos;
TIPO

TProduto = REGISTRO

Codigo: inteiro;

Descricao: caractere;

Quantidade: inteiro;

PrecoCusto: real;

MargemVenda: real;

FIM REGISTRO;

TIPO TArqProduto = ARQUIVO DE TProduto;


VAR produtos: TArqProduto;

aux: TProduto;

total: real;

INICIO

ABRE (produtos);

total 0;

ENQUANTO (NO FIMDEARQUIVO (produtos)) FACA

COPIA (produtos,aux);

total total + aux.Quantidade * aux.PrecoCusto;

PROXIMO (produtos);

FIM ENQUANTO

FECHA (produtos);

IMPRIMA (O valor total em estoque de R$ + total);

FIM

A realizao das atividades lhe proporcionou a oportunidade de verificar


o alcance dos objetivos propostos para a aula de definir uma estrutura de
arquivos e de utilizar arquivos na construo de algoritmos.

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.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

241

Aula 5 Lgica para Programao

Anotaes








































242

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

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:

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

243

Aula 6 Lgica para Programao

seqencial ou bloco conjunto de comandos, normalmente separados


por ponto-e-vrgula, que so executados em uma seqncia linear de
cima para baixo e da esquerda para a direita;
deciso ou seleo a partir de um teste condicional, uma instruo ou
um conjunto de instrues podem ser executados ou no, dependendo
exatamente do resultado do teste efetuado;
repetio uma instruo ou o conjunto de instrues que ser executado
repetidamente, de acordo com o resultado de um teste condicional.
O domnio dessas estruturas um requisito fundamental para uma boa
programao de computadores, pois permite um melhor controle sobre a
seqncia de execuo das instrues e, na maioria das vezes, permite reduzir
sensivelmente a quantidade de instrues do algoritmo.

6.1 Estrutura seqencial ou bloco


Na estrutura seqencial os comandos de um algoritmo so executados em
uma seqncia pr-estabelecida. Cada comando executado somente aps o
trmino do comando anterior. Normalmente o caractere de ponto-e-vrgula serve
de separador entre cada instruo a fim de manter a clareza do algoritmo.
Em termos de fluxogramas, a estrutura seqencial caracterizada por um
nico fluxo de execuo (um nico caminho orientado) no diagrama. Em pseudocdigos, a estrutura seqencial caracteriza-se por um conjunto de comandos
dispostos ordenadamente.

6.2 Estrutura de deciso ou seleo


Durante a construo de algoritmos, so comuns situaes em que uma
instruo, ou conjunto de instrues, devam ser executados somente para uma
determinada situao. Em outros casos mais complexos, dependendo de uma
condio previamente estabelecida, caso essa seja verdadeira, um conjunto de
comandos dever ser executado e, caso seja falsa, um outro conjunto. Para esses
casos em que o fluxo de instrues deva ser controlado mediante a avaliao
de uma condio especfica, necessrio o uso de uma estrutura de deciso.
Um teste condicional baseado em lgica convencional e, portanto, deve
resultar em um valor verdadeiro ou falso. Esses testes podem ser formados
por operaes relacionais simples ou expresses lgicas mais complexas que
resultem em um valor lgico (verdadeiro ou falso).

244

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

As estruturas de seleo podem ser classificadas de quatro formas diferentes,


sendo essa classificao baseada na organizao lgica existente em cada
situao. Essa classificao diferencia uma estrutura de seleo como: seleo
simples, seleo composta, seleo encadeada e seleo de mltipla escolha.
Na seleo simples, uma instruo ou um conjunto de instrues executado somente se o teste condicional especificado retornar o valor verdadeiro.
Caso o resultado do teste seja falso, nenhuma das instrues delimitadas pela
estrutura de seleo ser executada, e a execuo das instrues ser desviada
para a instruo imediatamente seguinte estrutura de seleo.
A seguir mostrado um exemplo de algoritmo que utiliza a estrutura de
seleo simples. O algoritmo apresentado na forma de um fluxograma e na
forma de pseudocdigo. Nesse exemplo, lida uma varivel N e, em seguida,
utilizada a estrutura de seleo para verificar se o valor de N maior do
que zero. Caso esse teste condicional retorne verdadeiro, o fluxo desviado
para a instruo que imprime o valor da varivel N. No caso de ser retornado
um valor falso, o fluxo desviado para a prxima instruo. Nesse caso, a
instruo que finaliza o programa.
Inicio

ALGORITMO Selecao_Simples;
VAR N: Inteiro;
INICIO

N>0
SIM

LEIA N;

SE N>0 ENTAO

IMPRIMA N;

FIM SE

FIM

NO
N

Fim

Diferente da estrutura de seleo simples, na seleo composta uma


instruo ou um conjunto de instrues executado se o teste condicional
especificado retornar o valor verdadeiro e, caso o resultado do teste seja falso,
outra instruo ou um conjunto de instrues executado. Assim a seleo
composta permite desviar o fluxo para dois caminhos distintos.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

245

Aula 6 Lgica para Programao

A seguir mostrado um exemplo de algoritmo que utiliza a estrutura de


seleo composta. Nesse exemplo, lida uma varivel N e, em seguida,
utilizada a estrutura de seleo para verificar se o valor de N maior do que
zero. Caso esse teste condicional retorne verdadeiro, o fluxo desviado para
a instruo que imprime o valor da varivel N. No caso de ser retornado um
valor falso, a mensagem O valor de N deve ser positivo mostrada.
ALGORITMO Selecao_Composta;

Inicio

VAR N: Inteiro;
INICIO
LEIA N;

SE N>0 ENTAO
4IMPRIMA N;

N>0
SIM

SENAO
NO

IMPRIMA O valor de N deve


ser positivo;

O valor
de N deve
ser positivo

FIM SE
FIM

Fim

Uma instruo de seleo pode ser inserida dentro da outra, formando


uma estrutura de seleo encadeada, seja no bloco de instrues para o caso
verdadeiro ou falso.
O encadeamento dessas instrues tambm conhecido como aninhamento de instrues de seleo, no existindo limite de quantas estruturas de
seleo podem estar dentro de outra. Na verdade, esse limite imposto pela
prpria soluo lgica representada no algoritmo.
O aninhamento de instrues permite tornar uma soluo algortmica ainda mais
eficiente, uma vez que diminui a quantidade de testes condicionais individuais.
A seguir mostrado um exemplo de algoritmo que utiliza a estrutura de seleo
encadeada. Nesse exemplo, lida uma varivel N e, em seguida, utilizada a
estrutura de seleo para verificar se o valor de N maior do que zero. Caso esse
teste condicional retorne verdadeiro, o fluxo desviado para uma outra estrutura
condicional que testa se o valor par para isso utiliza a abordagem comum de

246

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

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

Outra estrutura de seleo, muito utilizada nas avaliaes de valores para


uma varivel ou valor individual, a seleo de mltipla escolha. Diferente das
estruturas discutidas anteriormente, nessa o teste condicional no retorna um
valor lgico, mas sim um valor inteiro, real ou caractere. Outra diferena est
no fato de que essa estrutura permite desviar o fluxo para n caminhos e no
somente para dois, como discutido at aqui.
Na prtica, para a expresso definida no teste condicional, verificada a sua igualdade com as opes definidas, em que sua veracidade
resultar na execuo de um bloco, ou de uma nica instruo especfica,
para cada opo.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

247

Aula 6 Lgica para Programao

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)

CASO 1: IMPRIMA Voc escolheu a opo 1;

CASO 2: IMPRIMA Voc escolheu a opo 2;

CASO 3: IMPRIMA Voc escolheu a opo 3;

CASOCONTRARIO: IMPRIMA Opo invlida;

FIM ESCOLHA

FIM

6.3 Estrutura de repetio


Existem situaes em um algoritmo nas quais necessitaremos de que uma
seqncia de comandos seja executada nenhuma, uma ou vrias vezes de
acordo com uma condio, ou de acordo com uma varivel de controle.
Por exemplo, se tivermos de criar um algoritmo para trocar os quatro pneus
de um carro, bvio que os passos necessrios para trocar um nico pneu
dever se repetir a cada pneu. Uma forma de resolver isso seria repetir o
mesmo conjunto de instrues para a troca de um pneu quatro vezes ao longo
do algoritmo. Isso tornaria o algoritmo grande, mas seria factvel uma vez que
sabemos que so exatamente quatro pneus.

248

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

249

Aula 6 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

dade de vezes que devemos repetir o conjunto de instrues. As repeties so


controladas por uma varivel de controle.
A seguir mostrado o mesmo exemplo de algoritmo para listar todos os
nmeros pares entre 1 e 10, agora usando uma estrutura de repetio do tipo
PARA...FAA.
ALGORITMO testePARA_FACA;
VAR N: inteiro;
INICIO
PARA N 1 AT 10 FAA
SE (N MOD 2 = 0) ENTAO
IMPRIMA N;
FIM SE
N N + 1;
FIM PARA
FIM

Inicio

N 1

N <= 10

SIM

N MOD 2 = 0

SIM

N
NO

NO

NN+1

Fim

6.3.3 Estrutura de repetio do tipo REPITA... AT


Nesse tipo de repetio, o conjunto de instrues referentes estrutura
executado e somente depois o teste condicional realizado. Com isso o

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

251

Aula 6 Lgica para Programao

conjunto de instrues referentes estrutura repetido pelo menos uma vez,


at que o teste condicional retorne verdadeiro. Fica claro ento que este tipo
de estrutura s deve ser usado em casos nos quais podemos garantir que o
conjunto de comando dever ser executado pelo menos uma vez.
A seguir mostrado, mais uma vez, o mesmo exemplo de algoritmo para
listar todos os nmeros pares entre 1 e 10, agora usando uma estrutura de
repetio do tipo REPITA...AT.
Inicio

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

sendo necessrio desvi-lo mediante determinadas circunstncias do prprio


algoritmo. Para esses casos, estudamos as estruturas de seleo ou deciso, que
permitem desviar o fluxo de instrues em um algoritmo a partir do resultado de
um teste condicional. Estudamos ainda as estruturas de repetio, que permitem
que uma ou um conjunto de instrues seja executado repetidas vezes sem a
necessidade de escrev-las vrias vezes.

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

253

Aula 6 Lgica para Programao

3. Escreva um algoritmo que imprima todos os nmeros entre 50 e 500 que,


dividido por 11, do resto igual a 5.
4. Utilizando as estruturas estudadas nesta aula, construa um algoritmo que a
srie de Fibonacci at o n-simo termo. O valor de N deve ser lido. A srie de
Fibonacci um problema clssico que impe a seguinte seqncia de valores:
1, 1, 2, 3, 5, 8, 13, 21, 34... etc. A seqncia sempre tem incio em 1, 1.

Comentrio das atividades


Na atividade 1, de acordo com o que voc estudou nesta aula sobre
Estruturas de Controle, deve ter concludo que a nica opo incorreta a opo
(d), pois um teste condicional deve sempre ser lgico, retornando um dos valores
verdadeiro ou falso. A opo (a) est correta, pois uma estrutura seqencial ou
bloco realmente dispe as instrues em ordem seqencial; a opo (b) tambm
est correta, pois a estrutura de seleo serve exatamente para desvio do fluxo
de instrues e a deciso de desviar ou no baseada na avaliao de um teste
condicional; a opo (c) correta, como voc estudou nesta aula, que, diferente
das estruturas de repetio do tipo ENQUANTO e REPITA, na estrutura PARA..
FACA necessrio indicar o nmero de vezes que o bloco de instrues dever
ser repetido; e a opo (e) est tambm correta, pois na estrutura de seleo
testado um valor constante, do tipo inteiro, real ou caractere.
Com base nos conceitos discutidos nesta aula, voc acompanhou o
fluxo de instrues do algoritmo a fim de simular a sua execuo para o
valor de N=9, na atividade 2. Os pontos crticos desse algoritmo esto nos
testes condicionais que so usados nas estruturas de controle. A instruo
ENQUANTO (N > 0) FACA implica na repetio do seu bloco de instrues
at que o valor da varivel N seja menor ou igual a zero. Em seguida, j no
bloco de repetio, a estrutura de seleo SE (N MOD 2 <> 0) ENTAO implica
em verificar se o resto da diviso do valor de N por dois diferente de zero.
Essa construo representa um modo clssico de testar se um determinado
valor mpar. J a partir dessas concluses, voc deveria concluir que esse
algoritmo imprime os valores mpares maiores do que zero e menores do que
N, se houver. Com isso a nica opo correta a opo (c).
Para esse algoritmo, na atividade 3, voc deve ter escolhido como estrutura
de repetio a estrutura do tipo PARA..FACA, afinal foi declarado o intervalo
de nmeros a serem testados e, por conseqncia, o nmero de repeties. A
seguir mostrada uma soluo algortmica para esse problema.

254

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 6 Lgica para Programao

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

Para solucionar a atividade 4, como discutido na aula sobre algoritmos,


existem diferentes formas de se construir um mesmo algoritmo. Aps analisar o
problema, voc deve ter percebido que a lgica dessa soluo deve partir da
srie inicial 1, 1 e, a partir da, o prximo elemento dado sempre pela soma
dos dois valores anteriores. A seguir so apresentadas duas formas de solucionar
o problema da seqncia de Fibonacci. A primeira utiliza a estrutura de repetio
do tipo PARA...FACA, e a segunda utiliza a estrutura ENQUANTO... FACA.
Soluo 01:
ALGORITMO FIBONACCI;
VAR

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

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

255

Aula 6 Lgica para Programao

Soluo 02:
ALGORITMO FIBONACCI;
VAR

anterior: inteiro;

atual: inteiro;

proximo: inteiro;

N: inteiro;

INICIO

LEIA (N);

atual 1;

anterior 1;

IMPRIMA (anterior);

ENQUANTO atual <= N FACA

IMPRIMA (atual);

proximo anterior + 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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Lgica para Programao

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,

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

257

Aula 7 Lgica para Programao

que a representao de um algoritmo nessa escala usando fluxograma fica


invivel e, mesmo usando pseudocdigo, teremos dificuldade em gerenciar um
conjunto to grande de instrues.
Uma soluo para problemas complexos a sua diviso sucessiva em
problemas menores a fim de obter uma soluo de custo mnimo. Essa idia
conhecida como Dividir para Conquistar o princpio bsico da tcnica de
anlise estruturada, chamada de Modularizao. Nessa tcnica, o problema
maior dividido em problemas menores, chamados de mdulos.
O segredo de uma boa modularizao est em identificarmos claramente
que mdulos devem existir no sistema. Devemos atribuir uma nica funo bem
definida a cada mdulo, minimizar as ligaes entre os mdulos e maximizar
a coeso interna de cada mdulo.
Essa tcnica apresenta inmeras vantagens para a programao. Vejamos.
1. Facilita a verificao de erros: pois , em princpio, simples identificar
o mdulo responsvel pelo erro, reduzindo-se assim o tempo gasto na
identificao de erros.
2. Permite testar os mdulos individualmente, em vez de se testar apenas
o programa completo, o que reduz a complexidade do teste e permite
comear a testar antes de se ter completado o programa.
3. Permite fazer a manuteno do programa (correo de erros, melhoramentos etc.) mdulo a mdulo e no no programa todo, o que reduz a
probabilidade de essa manuteno ter conseqncias imprevistas em
outras partes do programa.
4. Permite o desenvolvimento independente dos mdulos, o que simplifica
o trabalho em equipe, pois cada elemento ou cada sub-equipe tem a
seu encargo apenas alguns mdulos do programa.
5. Permite a reutilizao do cdigo desenvolvido, ou seja, que mdulos
individuais sejam utilizados para formar outro programa.
Um programador assume, ao longo do desenvolvimento de um programa,
dois papis distintos: por um lado fabricante, pois sua responsabilidade desenvolver mdulos; por outro utilizador, pois far com certeza uso de outros mdulos,
desenvolvidos por outros programadores ou por ele prprio no passado.
A modularizao em um algoritmo expressa por meio das unidades
atmicas: funes e procedimentos. Uma funo representa um conjunto de

258

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Lgica para Programao

instrues, com interface bem definida, que efetua um dado clculo e, na


maioria dos casos, devolve um valor. J um procedimento tambm representa
um conjunto de instrues, com interface bem definida, que faz qualquer coisa,
porm sem devolver valor algum. Algumas linguagens de programao, como
a linguagem C ou Java, no fazem distino entre procedimento e funo e
trata todo o processo de modularizao somente com o uso de funes.

7.1 Funes e procedimentos


As funes e os procedimentos permitem isolar trechos de cdigo
com objetivos bem definidos e torn-los reutilizveis onde quer que seja
necessrio. Uma vez definida, uma funo ou um procedimento podem ser
utilizados sem que seja necessrio conhecer o seu funcionamento interno.
Funes e procedimentos podem ser vistos como caixas pretas: uma vez
definidas (e corretas), devem ser usadas sem preocupaes quanto ao seu
funcionamento interno.
Na prtica, o uso de funes e procedimentos permite estender as funcionalidades de uma linguagem. Por exemplo, podemos definir uma funo que
receba um valor inteiro e retorne um literal contendo esse valor com um nmero
especfico de zeros esquerda. A partir de sua definio, poderamos fazer
uso dessa funo sempre que necessrio, sem ter de repetir o seu cdigo.
A seguir mostrado um algoritmo, representado em pseudocdigo, que
demonstra o uso de funes e procedimentos.
ALGORITMO Funcao_Procedimento;
CONST MAX = 99;
VAR Valor1, Valor2: Inteiro;
FUNCAO MAIOR (A, B: Inteiro)

SE (A>B) ENTAO

RETORNA (VERDADEIRO);

SENAO

RETORNA (FALSO);

FIM SE
FIM FUNCAO
PROCEDIMENTO VERIFICA (VALOR: inteiro)

SE (VALOR > MAX) ENTAO

IMPRIMA O valor excede o valor limite.

FIM SE
FIM PROCEDIMENTO

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

259

Aula 7 Lgica para Programao

INICIO

LEIA Valor1;

LEIA Valor2;

SE MAIOR(Valor1, Valor2) ENTAO

IMPRIMA (Valor1 + maior do que + Valor2);

VERIFICA (Valor1);

SENAO

IMPRIMA (Valor2 + maior do que + Valor1);

VERIFICA (Valor2);

FIM SE

FIM

Nesse exemplo, temos a declarao da funo MAIOR que verifica qual


o maior valor entre dois valores inteiros passados como parmetro da funo.
declarado ainda o PROCEDIMENTO VERIFICA, que testa se um valor inteiro
passado como parmetro inferior a um valor mximo definido pela constante MAX.
Esse exemplo ser usado para explicar os itens que seguem.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Lgica para Programao

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

7.4 Retorno e devoluo de dados


A maioria das linguagens de programao utiliza a palavra em ingls
RETURN que, em sua lngua de origem, apresenta dois significados distintos:
retornar (ou regressar) e devolver. J no portugus, utilizamos duas palavras
distintas: dizemos que uma funo (ou procedimento) retorna quando termina
a sua execuo e o fluxo de execuo regressa ao ponto de invocao, e que
uma funo, ao retornar, devolve um valor que pode ser usado na expresso
em que a funo foi invocada. Todavia, na representao algortmica em
pseudocdigo, usamos a palavra em portugus RETORNA para representar a
instruo de retorno ou devoluo de valor.
Uma funo termina quando o fluxo de execuo atinge uma instruo
de retorno. As instrues de retorno consistem na palavra chave RETORNA
seguida de uma expresso de retorno ou de uma expresso vazia que indicar
apenas o retorno, sem devoluo. A expresso tem de ser de um tipo de dados
compatvel com o tipo de devoluo da funo. O resultado da expresso o
valor devolvido ou calculado pela funo.

7.5 Variveis globais e locais


Uma observao cuidadosa dos exemplos anteriores revela que afinal o
programa principal no passa de uma funo. Mas uma funo especial que
automaticamente invocada j no incio da execuo do programa.
Assim sendo, verifica-se tambm que at agora s se definiram variveis
dentro de funes. s variveis que se definem no corpo de funes ou procedimentos, chamamos variveis locais. s variveis que se definem fora de qualquer funo ou procedimento, chamamos variveis globais. Os mesmos nomes
se aplicam no caso das constantes: h constantes locais e constantes globais.

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

261

Aula 7 Lgica para Programao

Devemos lembrar que os parmetros de uma funo ou procedimento so


variveis locais como quaisquer outras, exceto quanto sua forma de inicializao: os parmetros so inicializados implicitamente com o valor dos argumentos respectivos em cada invocao da funo ou procedimento.

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Aula 7 Lgica para Programao

IMPRIMA (O valor par.);


SENAO
IMPRIMA (O valor mpar.);
FIM SE
FIM
a) a funo E_PAR no possui parmetros;
b) a varivel nmero uma varivel global;
c) a varivel X local funo E_PAR;
d) a funo E_PAR possui um argumento inteiro;
e) a invocao de funo E_PAR (numero) ir devolver um valor lgico e por
isso diretamente usado como teste condicional para a instruo Se.
3. Com base no que foi estudado nesta aula, diferencie um argumento de um
parmetro.
4. Escreva um programa que determine o quadrado de um nmero inteiro
n. O nmero n deve ser pedido ao utilizador por meio de uma funo
chamada LERINTEIRO; e o seu quadrado dever ser calculado por meio
de outra funo, chamada QUADRADO.

Comentrio das atividades


Lanamos um desafio para voc: qual a resposta correta para a atividade 1?
Socialize com seus colegas e verifique na web-tutoria!
Na atividade 2, de acordo com os conceitos estudados nesta aula, voc
deve ter concludo que a opo incorreta a opo (a), pois a funo E_PAR
possui um parmetro inteiro declarado, sob a forma da varivel X. A opo
(b) est correta, uma vez que a varivel nmero declarada no programa
principal o que lhe d um carter global; a opo (c) tambm est correta,
pois a varivel X declarada dentro da funo, como um parmetro, e s
existe durante a execuo da funo; a opo (d) est correta, dado que a
funo E_PAR possui a varivel X declarada como parmetro, o que define a
necessidade de ser passado um argumento inteiro na sua invocao como
feito na instruo E_PAR (nmero); e, por fim, a opo (e) tambm est correta,
pois a funo E_PAR devolve sempre um valor verdadeiro ou falso.
Relembrando os conceitos estudados nesta aula, voc deve saber que um
argumento uma varivel que declarada entre os parnteses de uma declarao de funo ou procedimento, e indica a quantidade e o tipo de dado dos

UNITINS ANLISE E DESENVOLVIMENTO DE SISTEMAS 1 PERODO

263

Aula 7 Lgica para Programao

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

1 PERODO ANLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

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

Voc est recebendo o material da disciplina de Matemtica para


Computao. Esperamos que, no trmino do semestre, seja capaz de 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 e estudar as
Estruturas Matemticas relacionadas lgebra de Boole e suas funes.
Para tanto, apresentaremos os contedos divididos em sete aulas. Na
primeira, veremos a Teoria dos Conjuntos; na segunda, a Anlise e Simbolizao
de Proposies; e, na terceira, voc conhecer a Tabela-verdade.
e Equivalncia, o que ser visto na quarta aula; na quinta, analisaremos
Predicados e teremos uma introduo lgebra de Boole. A sexta aula ser
uma continuidade da quinta aula, pois trataremos das Funes Booleanas.
Para terminarmos os estudos referentes a esta disciplina, analisaremos as
Simplificaes de Funes e Mapas de Karnaugh.
Esperamos que, por meio dos contedos aqui apresentados, voc compreenda melhor esta disciplina e d continuidade aos seus estudos.
Desejamos bons estudos!
Prof. Luiz Cezar Sakr

Apresentao

A continuidade dos estudos se dar por meio das Relaes de Implicao

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

269

Aula 1 Matemtica para Computao

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

271

Aula 1 Matemtica para Computao

1.1 Representao e notao de conjunto


Os conjuntos so geralmente denotados por letras maisculas do alfabeto
latino e podem ter seus elementos totalmente explicitados, parcialmente explicitados (desde que esta apresentao parcial no comprometa seu entendimento), ou apresentados por meio de conceitos, caractersticas ou sentenas
matemticas que esclarecem como os elementos podero ser obtidos.
Exemplos:
A = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
A = {2, 4, 6, ..., 20}
A = {nmeros inteiros pares, de 2 inclusive a 20 inclusive}
A = {nmeros inteiros pares, positivos e menores ou igual a 20}
A = {x|x Z, x par e 2 x 20}
A = {x|x = 2n, n Z e 1 n 10}
(onde Z representa o conjunto dos nmeros inteiros)
B = {a, e, i, o, u}
B = {vogais}
B = {x|x vogal}

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.3 Conjunto vazio


Conjunto vazio o conjunto que no possui elementos. Representa-se por:
={}

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 1 Matemtica para Computao

A B, que se l: A est contido em B;


ou ainda
B A, que se l: B contm A.
Decorre que:
AA e A
Observao: O smbolo corresponde a no est contido.

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.

1.5 Unio de conjuntos


Dados dois conjuntos A e B, define-se como unio de A e B ao conjunto
A B formado por todos os elementos que pertencem a A ou B.
A B = {x|x A ou x B}
Decorre que:
AA=A e A=A

1.6 Interseo de conjuntos


Dados dois conjuntos A e B, define-se como interseo de A com B ao
conjunto A B formado por todos os elementos que pertencem a A e a B,
simultaneamente.
A B = {x|x A e x B}
Decorre que:
AA=A e A=

1.7 Diferena de conjuntos


Dados os conjuntos A e B, define-se como diferena entre A e B ao conjunto
A B formado por todos os elementos que pertencem a A, mas que no
pertencem a B.
A B = {x|x A e x B}

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

273

Aula 1 Matemtica para Computao

Exemplo
Considerando: A = {1, 2, 3, 4}

B = {1, 3, 5, 7, 9}

C = {1, 2}

tem-se, entre muitas expresses possveis, que:


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}

1.8 Conjunto das partes de um conjunto


O conjunto das partes de um conjunto qualquer formado por todos os
seus subconjuntos. Se um conjunto possuir n elementos, o total de subconjuntos
n

que ele admite igual a 2 .


Exemplo: seja o conjunto A = {2, 4, 8}, o qual possui trs elementos (n =3).
O nmero de subconjuntos de A igual a 23 = 8 e eles correspondem a:

; {2}; {4}; {8}; {2, 4}; {2,8}; {4,8}; A


Observaes:
os subconjuntos e A so ditos subconjuntos imprprios de A, os
demais so ditos subconjuntos prprios;
o conjunto vazio, , subconjunto de qualquer conjunto.

274

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 1 Matemtica para Computao

1.9 Diagramas de Euler-Venn


No sculo XVIII, Leonard Euler (1707-1783) introduziu a representao
grfica das relaes e operaes entre conjuntos, mais tarde ampliada por
John Venn (1834 1923), denominadas Crculos de Euler ou Diagramas de
Venn e de forma mais completa, Diagramas de Euler-Venn.
Exemplo
Considerando: A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8, 9}

C = {2, 4, 6, 8, 10}
A
3

5
4
7

6 8
9

10

tem-se, entre muitas igualdades possveis, que:


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}

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

275

Aula 1 Matemtica para Computao

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}

3. Preencher o Diagrama de Euler-Venn a seguir, considerando que:


A = {2, 1, 2, 3}, B = {3, 1, 2, 4}, C = {1, 1, 2, 4} e D = {4, 2, 1, 2}.
A

276

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 1 Matemtica para Computao

4. Aps analisar o Diagrama de Euler-Venn a seguir, indique a afirmativa


verdadeira.
A
5

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

Comentrio das atividades


Na atividade 1, o solicitado foi:
D=BAC
Como:
B = {1, 2, 3, 4, 5, 6, 7, 8, 9}
A = {x|x nmero inteiro positivo e par} = {2, 4, 6, 8, 10,...}
C = {x|x nmero inteiro positivo e mltiplo de 3} = {3, 6, 9, 12,...},
tem-se que:
A C = {2, 3, 4, 6, 8, 9, 10, 12, ...}
Portanto:
D = {1, 2, 3, 4, 5, 6, 7, 8, 9} {2, 3, 4, 6, 8, 9, 10, 12,...}

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

277

Aula 1 Matemtica para Computao

Sendo D a diferena entre dois conjuntos, seus elementos sero os elementos


do primeiro conjunto, que no esto no segundo.
Logo:
D = {1, 5, 7}
Na atividade 2, os conjuntos dados foram 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}.
A alternativa correta a ltima, (e) A B = C D {0, 1, 8, 9, 10}.
Pois:
A B = {1, 2, 3, 4, 5, 6, 7} {2, 3, 4, 5, 6, 7, 8}
A B = {2, 3, 4, 5, 6, 7}
E
C D = {0, 2, 4, 6, 8, 10} {1, 3, 5, 7, 9}
C D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
C D {0, 1, 8, 9, 10} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} {0, 1, 8, 9, 10}
C D {0, 1, 8, 9, 10} = {2, 3, 4, 5, 6, 7}
Logo:
A B = C D {0, 1, 8, 9, 10}
A alternativa (a) A B = C D {0, 1} no est correta, pois:
A B = {1, 2, 3, 4, 5, 6, 7} {2, 3, 4, 5, 6, 7, 8} = {}
1
C D {0, 1} = {0, 2, 4, 6, 8, 10} {1, 3, 5, 7, 9} {0, 1} = { } {0, 1} = {0, 1}

A alternativa (b) A D = C B no est correta, pois:


A D = {1, 2, 3, 4, 5, 6, 7} {1, 3, 5, 7, 9}
A D = {1, 2, 3, 4, 5, 6, 7, 9}
E
C B = {0, 2, 4, 6, 8, 10} {2, 3, 4, 5, 6, 7, 8}
C B = {0, 2, 3, 4, 5, 6, 7, 8, 10}
A alternativa (c) A B C = D no est correta, pois:

278

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 1 Matemtica para Computao

A B C = {1, 2, 3, 4, 5, 6, 7} {2, 3, 4, 5, 6, 7, 8} {0, 2, 4, 6, 8, 10}


A B C = {1, 2, 3, 4, 5, 6, 7, 8} {0, 2, 4, 6, 8, 10}
A B C = {1, 3, 5, 7}
E
D = {1, 3, 5, 7, 9}
A alternativa (d) A B = C D {0, 1, 9, 10} no est correta, pois:
A B = {1, 2, 3, 4, 5, 6, 7} {2, 3, 4, 5, 6, 7, 8}
A B = {2, 3, 4, 5, 6, 7}
E
C D {0, 1, 9, 10} = {0, 2, 4, 6, 8, 10} {1, 3, 5, 7, 9} {0, 1, 9, 10}
C D {0, 1, 9, 10} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} {0, 1, 9, 10}
C D {0, 1, 9, 10} = {2, 3, 4, 5, 6, 7, 8}
Na atividade 3, o preenchimento correto corresponde a:

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}

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

279

Aula 1 Matemtica para Computao

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 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 1 Matemtica para Computao

A alternativa (a) A B C = {1, 6} no est correta, pois A B C =


A

A alternativa (b) A B C = {3} no est correta, pois A B C =


A

1
3
6

A alternativa (d) B A B C = {4, 7} no est correta, pois B A B C =


A

6
7

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

281

Aula 1 Matemtica para Computao

A alternativa (e) C A B = {1, 6, 8, 9} no est correta, pois C A B =


A

8
10

Ao realizar as atividades propostas, voc alcanou os objetivos desta aula


de realizar operaes que envolvam conjuntos e representar operaes por
meio de Diagramas de Euler-Venn.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 2 Matemtica para Computao

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.

Observe nas suas leituras, observe sua volta o quanto as proposies


esto presentes no dia-a-dia.
Tambm importante que os contedos vistos na aula anterior tenham
sido assimilados, principalmente as operaes envolvendo conjuntos. Se ainda
permaneceram dvidas, retome sua leitura e refaa as atividades.

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

283

Aula 2 Matemtica para Computao

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 2 Matemtica para Computao

2.2 Princpios fundamentais da Lgica Matemtica


A Lgica Matemtica tem como princpios fundamentais o:
princpio da no-contradio: uma proposio no pode ser simult
neamente verdadeira e falsa;
princpio do terceiro excludo: toda proposio ou verdadeira ou
falsa, no h uma terceira opo.

2.3 Conectivos Lgicos


As proposies compostas, conforme j mencionado, so formadas pela
combinao de duas ou mais proposies. Estas combinaes ocorrem por
meio de Conectivos Lgicos.
Conectivos Lgicos so palavras utilizadas para compor proposies
dadas, formando assim novas proposies. Estas novas proposies, que
sero proposies compostas, tero seu valor lgico dependente dos valores
lgicos das proposies componentes e dos conectivos utilizados. Estudaremos
os seguintes conectivos:
conjuno, correspondente palavra e e ao smbolo ;
disjuno, correspondente palavra ou e ao smbolo ;
condicional, correspondente s palavras se... ento e ao smbolo ;
bicondicional, correspondente s palavras se e somente se e ao
smbolo ;
negao, correspondente palavra no e ao smbolo '. (Apesar de
ser denominado de conectivo, a negao no conecta proposies,
mas nega).
Apresentaremos a seguir as operaes lgicas sobre proposies que
envolvem os conectivos.

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

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

285

Aula 2 Matemtica para Computao

Exemplos:
a) q: 5 1 = 3

q': 5 1 3

b) p: O tringulo retngulo tem um ngulo reto.

p': O tringulo retngulo no tem um ngulo reto.

Pode-se exprimir a negao de outras maneiras:


falso que o tringulo retngulo tem um ngulo reto;
no verdade que o tringulo retngulo tem um ngulo reto.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 2 Matemtica para Computao

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

b) r : o Paran pertence a regio Sul

s : Braslia a Capital Federal

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

287

Aula 2 Matemtica para Computao

p se, e somente se, q ou p q

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.

e) t : Fortaleza mais populosa do que So Paulo.

2. Entre as proposies a seguir, identifique as compostas e o tipo de conectivo


lgico presente.

288

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 2 Matemtica para Computao

a) P : se o tringulo ABC eqiltero, ento os trs lados do tringulo


ABC so iguais.
b) Q : quatro par e dois menor do que cinco.
c) R : este lago profundo ou este lago est poludo.
4

d) s: (8 6) = (7 3)

e) T : Marte um planeta do sistema solar se, e somente se, o sol for um


satlite.
3. Qual o valor lgico da proposio P: se Foz do Iguau fica no Paran,
ento a Chapada Diamantina fica em Santa Catarina.
4. Qual o valor lgico da proposio R: 2 raiz da equao x2 7x + 10 = 0
se, e somente se, 4 for raiz da equao 2x 8 = 0.

Comentrio das atividades


Na atividade 1, so proposies: (a), (b), (c) e (e). A sentena (d) no
proposio porque ela no est especificada. Assim so as suas negaes:
2
2
2
a) p' : (a + b) a + 2ab + b ;

b) q': o sol no azul;

rad ;
2
d) t': Fortaleza no mais populosa do que So Paulo.

c) r': 90

Na atividade 2, so proposies compostas: (a), (b), (c) e (e). A proposio


(d) simples. So conectivos lgicos:
a) P : se o tringulo ABC eqiltero, ento os trs lados do tringulo
ABC so iguais. Condicional;
b) Q : quatro par e dois menor do que cinco. Conjuno;
c) R : este lago profundo ou este lago est poludo. Disjuno;
e) T : Marte um planeta do sistema solar se, e somente se, o sol for um
satlite. Bicondicional.
Na atividade 3, esperamos que voc tenha respondido que o valor lgico
a falsidade, assim:
P: se Foz do Iguau fica no Paran, ento a Chapada Diamantina fica em
Santa Catarina;

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

289

Aula 2 Matemtica para Computao

p: Foz do Iguau fica no Paran;


q: a Chapada Diamantina fica em Santa Catarina;
P (p,q) = p q;
Como V(p) = V e V(q) = F, V(P) = F.
J na atividade 4, o valor lgico a verdade:
R: 2 raiz da equao x2 7x + 10 = 0 se, e somente se, 4 for raiz da
equao 2x 8 = 0;
r: 2 raiz da equao x2 7x + 10 = 0;
s: 4 for raiz da equao 2x 8 = 0;
R (r, s) = r s;
Com V(r) = V e V(s) = V, V(R) = V.
Ao realizar as atividades, voc est apto a identificar proposies simples
e compostas, bem como a reconhecer o valor lgico de uma proposio.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 3 Matemtica para Computao

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!

3.1 Ordem e precedncia


Para obter uma expresso vlida ou uma frmula bem-formulada, fbf,
como comumente denominada, torna-se necessrio respeitar precedncias,
ou seja, uma ordem de aplicao dos conectivos lgicos.
Observe a ordem de precedncia.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

291

Aula 3 Matemtica para Computao

1. Para conectivos dentro de vrios parnteses, efetua-se primeiro as


expresses dentro dos parnteses mais internos.
2. Negao ( ' ).
3. Conjuno ( ) e disjuno ( ).
4. Condicional ( ).
5. Bicondicional ( ).
Logo, a expresso P Q' significa P (Q') e no (P Q)'.
E a expresso P Q R significa (P Q) R e no P (Q R).

Aconselha-se, no entanto, a utilizao sempre que possvel de parnteses


para reduzir erros de interpretao.
6. Em uma fbf com diversos conectivos, o ltimo a ser aplicado o conectivo principal.
Em P (Q R)', o conectivo principal .
Em ((P Q) R) (Q R'), o conectivo principal .

Para benefcio da clareza e facilidade da soluo, pode-se subdividir a fbf


em partes convenientes. Por exemplo, a fbf anterior poderia ser expressa da
seguinte forma: A B, onde A = ((P Q) R) e B = (Q R'), com solues
independentes de A e B e posterior soluo do conectivo A B.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 3 Matemtica para Computao

Construir a Tabela-verdade da proposio P (p, q) = (p q')'


p

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

3.3 Tautologia e contradio


Uma fbf que gera somente valores lgicos verdadeiros, independente dos
valores lgicos atribudos a suas letras, denominada uma tautologia.
Uma tautologia intrinsecamente verdadeira.
Uma tautologia p p'. Suponha que p corresponda proposio: hoje
vai ter sol. Conseqentemente, p' corresponder : hoje no vai ter sol. E a
disjuno, p p', ser sempre verdadeira, j que uma ou outra tem de acontecer (rever item 2.6 aula anterior). Ou teremos sol ou no teremos sol.
Exemplo:
Construir a Tabela-verdade da fbf: (p q) (q' p')
p

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

Em contrapartida, quando o valor lgico de uma proposio sempre


falso, ela denominada de contradio.
Uma contradio intrinsecamente falsa.
Uma contradio p p'. Suponha que p corresponda proposio: hoje
domingo. Conseqentemente, p' corresponder : hoje no domingo. E a
conjuno, p p', ser sempre falsa, j que uma das duas sempre ser falsa
independente de que dia for hoje (rever item 2.5 aula anterior).
Exemplo:
Construir a Tabela-verdade da fbf: (p p') (q q')
p

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

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

293

Aula 3 Matemtica para Computao

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?

a) P(p, q) = (p q') (p' q)

b) P(p, q) = ((p q) (p' q'))'

c) P(p, q, r) = (p q) (q r) (p r)

4. Entre as proposies a seguir, quais so contradies?


a) P(p, q) = (p' q)'

b) P(p, q) = p' q p

c) P(p, q) = (p q) (p q)'

d) P(p, q) = (p (p' q)'

Comentrio das atividades


Na atividade 1, esperamos que voc tenha chegado concluso de que a
proposio P(p, q) = (p q)' (q p)' possui a Tabela-verdade a seguir.
p

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 3 Matemtica para Computao

r'

p r'

q r'

p r' q r'

Na atividade 3, voc deve ter concludo que:


a) a proposio P(p, q) = (p q') (p' q) no tautologia, conforme
mostra a Tabela-verdade a seguir:
p

q'

p q'

p'

p' q

(p q') (p' q)

b) a proposio P(p, q) = ((p q) (p' q'))' no tautologia, conforme


mostra a Tabela-verdade a seguir:
p

p q p' q' p' q'

(p q) (p' q')

((p q) (p' q'))'

c) a proposio P(p, q, r) = (p q) (q r) (p r) uma tautologia,


conforme mostra a Tabela-verdade a seguir:
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

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

295

Aula 3 Matemtica para Computao

J na atividade 4, voc deve ter concludo que:


a) a proposio P(p, q) = (p' q)' no uma contradio, conforme
mostra a Tabela-verdade a seguir:
p

p'

p' q

(p' q)'

b) a proposio P(p, q) = p' q p no uma contradio, conforme


mostra a Tabela-verdade a seguir:
p

p'

p' q

p' q p

c) a proposio P(p, q) = (p q) (p q)' no uma contradio,


conforme mostra a Tabela-verdade a seguir:
p

pq

pq

(p q)'

(p q) (p q)'

d) a proposio P(p, q) = (p (p' q))' uma contradio, conforme


mostra a Tabela-verdade a seguir:
p

p'

p' q

p (p' q)

(p (p' q))'

As atividades foram pensadas para lhe proporcionar o alcance dos


seguintes objetivos: montar a Tabela-verdade, obtendo o valor lgico de uma
proposio composta, levando em considerao a ordem de precedncia dos
conectivos presentes e identificar tautologias e contradies.

Na prxima aula
Veremos as relaes de implicao e de equivalncia entre proposies.

296

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 4 Matemtica para Computao

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.

4.1 Independncia e Dependncia


Duas proposies so consideradas independentes quando, em suas tabelasverdade, ocorrem todas as quatro alternativas: VV, VF, FV, FF. Por exemplo:
p

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

297

Aula 4 Matemtica para Computao

Duas proposies so consideradas dependentes quando, em suas Tabelasverdade, uma ou mais alternativas no ocorrem. Por exemplo:
p

qp

Entre p e q p no ocorre a alternativa VF em uma mesma linha e, nesse


caso, diz-se que existe uma relao simples (uma das alternativas no ocorreu)
entre p e q p.
Quando duas alternativas no ocorrem, a relao dupla.

4.2 Relao de Implicao


Diz-se que uma proposio p implica uma proposio q quando, em suas
tabelas-verdade, no ocorre a alternativa VF (nessa ordem) em uma mesma
linha. Denotamos por p q.

Os smbolos e so diferentes. O primeiro representa uma


operao entre proposies, o condicional, dando origem a uma nova
proposio. O segundo indica apenas uma relao entre duas proposies.

Voltando ao ltimo exemplo, pode-se dizer ento que p q p.

4.3 Relao de Equivalncia


Diz-se que uma proposio p equivalente a uma proposio q quando,
em suas tabelas-verdade, no ocorrem as alternativas VF e FV em uma mesma
linha. Denotamos por p q.

Tal qual no item anterior, os smbolos e so diferentes.

Exemplo:
Verificar se p q (p' q')'

298

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 4 Matemtica para Computao

Tabela-verdade
p

pq

p'

q'

p' q'

(p' q')'

Comparando as Tabelas-verdade de p q e (p' q')', verifica-se que no


ocorrem VF nem FV em uma mesma linha, logo p q (p' q')'.
fcil concluir que duas proposies so equivalentes quando suas Tabelasverdade so iguais, pois teremos em uma mesma linha somente VV e FF.

4.4 Equivalncias notveis


Dupla negao:

(p')' p

As Tabelas-verdade a seguir confirmam a equivalncia.


p

p'

(p')'

Leis idempotentes:

ppp

ppp

As Tabelas-verdade a seguir confirmam a equivalncia.

Leis comutativas:

pp

pp

pqqp
pqqp

As Tabelas-verdade a seguir confirmam a equivalncia.


p

pq

qp

pq

qp

Leis associativas:

p (q r) (p q) r

p (q r) (p q) r

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

299

Aula 4 Matemtica para Computao

As Tabelas-verdade a seguir confirmam a equivalncia.


p

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:

(p q)' p' q'

(p q)' p' q'

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 4 Matemtica para Computao

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:

(p q)' p' q'

(p q)' p' q'

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

Comentrio das atividades


Na atividade 1, so Leis de De Morgan: (p q)' p' q'
(p q)' 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'

Na atividade 2, so Leis distributivas:

p (q r) (p q) (p r)

p (q r) (p q) (p r)

As Tabelas-verdade a seguir confirmam a equivalncia. As alternativas VF


e FV no ocorrem em uma mesma linha, as Tabelas-verdade so iguais.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

301

Aula 4 Matemtica para Computao

qr

p (q r)

pq

pr

(p q) (p r)

qr

p (q r)

pq

pr

(p q) (p r)

Na atividade 3, bicondicional: p q (p q) (q p).


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

pq

qp

pqqp

J na atividade 4, so condicionais:

(p q) (q' p')

(q p) (p' q')

As Tabelas-verdade a seguir confirmam a equivalncia. As alternativas VF


e FV no ocorrem em uma mesma linha, as tabelas-verdade so iguais.

302

pq

p'

q'

q' p'

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 4 Matemtica para Computao

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



















UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

303

Aula 4 Matemtica para Computao

304

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 5 Matemtica para Computao

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

305

Aula 5 Matemtica para Computao

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.

5.2 Operador binrio ou operaes binrias


Chama-se operador binrio ou operao binria a lei pela qual todo par
ordenado de elementos (x, y) levado a um terceiro elemento z. Os sinais aritmticos +, , , so exemplos de operadores binrios, mas, de maneira genrica, podemos representar um operador binrio pelos smbolos ,,, ,,
entre outros.

5.3 Propriedades das operaes


1 propriedade: seja A um conjunto. Diz-se que A fechado em relao
operao , se x y A, x, y A.
Exemplo: consideremos o conjunto Z dos nmeros inteiros. Se a, b Z,
ento a + b Z e a b Z, ou seja, a+ b e a b tambm so
nmeros inteiros. O conjunto Z fechado para a operao + e
para a operao ..

306

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 5 Matemtica para Computao

2 propriedade: o operador comutativo, se x y = y x, x, y A.


Exemplo: se a, b Z, ento a + b = b + a e a b = b a.
3 propriedade: o operador associativo, se x (x z) = (x y) z,
x, y, z A.
Exemplo: se a, b, c Z, ento a + (b + c) = (a + b) + c e a (b c) = (a b) c.
4 propriedade: o operador * distributivo em relao , se
x (y z) = (x y) (x z), x, y, z A.
Exemplo: se a, b, c Z, ento a (b + c) = (a b) + (a c).
5 propriedade: um elemento e um elemento neutro para a operao
se, e somente se, x e = e x = x, x A.
Exemplo: se a Z, ento a + 0 = 0 + a = a e a 1 = 1 a = a. Logo 0
o elemento neutro para a operao + e 1 o elemento
neutro para a operao . em Z.

5.4 Sistemas algbricos


Chama-se sistema algbrico, ou lgebra abstrata, ou simplesmente lgebra
a um conjunto no vazio munido de um ou mais operadores binrios sobre ele
definidos. Denotando o conjunto por A e os operadores por e , definidos
sobre A, tem-se que:
(A, ) ou (A, ) so lgebras com um operador (ou uma operao);
(A, , ) uma lgebra com dois operadores (ou duas operaes).
Uma lgebra pode satisfazer algumas, todas, ou nenhuma das propriedades dos operadores, assumindo denominaes diferentes, caso a caso,
como: semigrupo, monide, grupo, anel, corpo, espao vetorial, conforme as
propriedades satisfeitas pelo operador ou pelos operadores definidos sobre o
conjunto. Para ns, nesta disciplina, interessa os sistemas algbricos chamados
lgebras de Boole, que definiremos a seguir.

5.5 lgebra de Boole


Diz-se que um sistema algbrico (B, +, ) uma lgebra de Boole se, e
somente se, a, b, c B, valem os axiomas:
A1) a + b B
A2) a b B

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

307

Aula 5 Matemtica para Computao

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

No axioma (A9), o elemento a' denominado complemento de a.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

0
1

0
0
0

1
0
1

+
0
1

0
0
1

1
1
1

Aula 5 Matemtica para Computao

4. Verifique se o conjunto B4 = {0, a, b, 1} e os operadores a seguir correspondem a uma lgebra de Boole.

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

Comentrio das atividades


Na atividade 1, ao verificar as propriedades comutativa, associativa e
distributiva por meio da Tabela-verdade, voc deve ter concludo que:
Comutativa
p

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

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

309

Aula 5 Matemtica para Computao

Distributiva
p

qr

p (q r)

pq

pr

(p q) (p r)

qr

p (q r)

pq

pr

(p q) (p r)

Para realizar a atividade 2, voc deve ter relembrado o que operador


binrio. Chama-se operador binrio ou operao binria a lei pela qual
todo par ordenado de elementos (x, y) levado a um terceiro elemento z.
Nesta atividade, foi considerado o conjunto N dos nmeros naturais, logo: o
operador + binrio, pois a sua utilizao leva a um terceiro nmero natural.
O operador no binrio, pois sua utilizao nem sempre leva a um terceiro
nmero natural. O operador binrio, pois a sua utilizao leva a um terceiro
nmero natural. O operador no binrio, pois sua utilizao nem sempre
leva a um terceiro nmero natural.
Na atividade 3, voc deve ter chegado concluso de 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

310

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 5 Matemtica para Computao

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.

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

311

Aula 5 Matemtica para Computao

Anotaes








































312

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 6 Matemtica para Computao

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.

6.1 Funo Booleana


Seja B uma lgebra de Boole e sejam x1, ..., xn variveis tais que seus
valores pertencem a B. Chama-se Funo Booleana de n variveis a uma aplin

cao de B em B, satisfazendo as seguintes regras:


se para quaisquer valores de x1, ..., xn, (x1, ..., xn) = a, a B, ento
uma funo booleana. a funo constante;
se para quaisquer valores de x1, ..., xn , (x1, ..., xn) = xi para qualquer
i(i = 1, ..., n), ento uma funo booleana. a funo projeo;

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

313

Aula 6 Matemtica para Computao

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.

Chama-se constante (booleana) em B a qualquer elemento de uma lgebra de Boole B.


Chama-se varivel (booleana) em B ao smbolo que pode representar qualquer dos
elementos de uma lgebra de Boole B.

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.

6.2 Forma cannica


Demonstra-se que:
para uma funo booleana de uma varivel, a forma cannica para
todos os valores de x : (x) = (1)x + (0)x';

314

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 6 Matemtica para Computao

para uma funo booleana de duas variveis, a forma cannica para


todos os valores de x e y :
(x, y) = (1,1)xy + (1,0)xy' + (0,1)x' y + (0,0)x' y';
para uma funo booleana de n variveis, a forma cannica para
todos os valores de x1, ..., xn :

(x1, ..., xn) = (1, ..., n)x1 1x2 2 ...xn n.

Onde i assume valores 0 e 1, e x1 i interpretado como xi ou xi', conforme


i tem valor 0 ou 1.

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

Comentrio das atividades


Para a resoluo da atividade 1, os dados correspondem tabela a seguir.
x
0
a
a'
1

(x)
a'
a

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

315

Aula 6 Matemtica para Computao

Vimos que, se uma funo booleana de uma varivel, ento:


(x) = (1)x + (0)x'.
Utilizando os dados da tabela anterior, tem-se: (x) = ax + a'x'.
Na atividade 2, como (x) = x + x'a, tem-se que (1) = 1 e (0) = a, de
modo que a forma cannica de (x) = (1)x + (0)x' = 1x + ax'.
Na atividade 3, como (x, y) = x'y + xy' + y', tem-se que (1,1) = 0 e
(1,0) = (0,1) = (0,0) = 1, de modo que a forma cannica de
(x, y) = 0xy + 1xy' + 1x'y + 1x'y'.
J na atividade 4, como (x) = xx', e a forma cannica corresponde
(x) = (1)x + (0)x', tem-se: (x) = x'x + 0x' = xx' + 0x'.
A realizao das atividades lhe deu a oportunidade de determinar a
expresso de uma funo booleana e de escrever a forma cannica de uma
funo booleana.

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 7 Matemtica para Computao

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.

7.1 Mtodo algbrico


O mtodo algbrico apia-se em alguns teoremas das lgebras de Boole
para a simplificao de funes. Apresentaremos esses teoremas:
Teorema 1:

(a')' = a

Teorema 2:

ab + ab' = a

Teorema 3:

0'=1 e 1'=0

Teorema 4:

(a b)' = a' + b' e (a + b)' = a' b' (Teorema de Morgan)

Teorema 5:

ab + a'c + bc = ab + a'c

Teorema 6:

(a + b)(a' + c)(b + c) = ac + a'b

Teorema 7:

(a + b)(a' + c) = ac + a'b

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

317

Aula 7 Matemtica para Computao

7.2 Mtodo do Mapa de Karnaugh


O Mapa de Karnaugh uma forma modificada de Tabela-verdade e
permite representar graficamente uma funo booleana e, se for necessrio, simplific-la.
No caso de funes com uma varivel, o mapa ser formado por
duas clulas que correspondem a cada um dos valores 0 e 1 atribudos
varivel.
a

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

No caso de trs ou mais variveis, o procedimento similar.


00
01
11
10

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 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

Aula 7 Matemtica para Computao

Comentrio das atividades


Na atividade 1, voc deve ter concludo que minimizar a funo
y = a((b' + c')(b' + c)) + ab + (a' + b')(b + c') pelo mtodo algbrico corresponde utilizao dos teoremas vistos nesta aula, conforme a seguir:

y = a((b' + c')(b' + c)) + ab + (a' + b')(b + c')

y = a(bb' + bc + b'c' + cc') + ab + (a'b + a'c' + b'b + b'c')


y = abc + ab'c' + ab + a'b + a'c' + b'c'
y = ab + b'c' + a'b + a'c'
y = (a + a') b + b'c' + a'c'
y = b + b'c' + a'c'
y = b + c' + a'c'
y = b + c'(1 + a')
y = b + c'
Na atividade 2, voc deve ter percebido que representar a funo

y = abc' + ab'c' + abc + a'b'c por meio do Mapa de Karnaugh corresponde


montagem das clulas, conforme a seguir:
0
00
01
11
10

1
1

1
1
1

Para a atividade 3, representar a funo y = a'b'cd + ab'd + abc' + ac'd'


pelo Mapa de Karnaugh corresponde montagem das clulas, conforme a
seguir:
00
00
01
11
10

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

UNITINS Anlise e Desenvolvimento de Sistemas 1 PERODO

319

Aula 7 Matemtica para Computao

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

1 PERODO Anlise e Desenvolvimento de Sistemas UNITINS

También podría gustarte