Upload
leque
View
224
Download
2
Embed Size (px)
Citation preview
Como
programar
Em
C
Paul J. Deitel e Harvey M. D eitel
Índice Cap ítu lo 01 ï Co n ceit o s da Co mp u taçã o
Cap ítu lo 02 ï In trod u ção à pr o grama çã o em C
Cap ítu lo 03 ï Des e n v olvim en to da P rog rama ção Es tr u tu rad a
Cap ítu lo 04 ï Co n tro le d o p rog rama
Cap ítu lo 05 ï F un çõ es
Cap ítu lo 06 ï Arr ays
Cap ítu l o 07 ï P on teir o s
Cap ítu lo 08 ï Cara cteres e str in g s
Cap ítu lo 09 ï F ormatação d e En tr ad a/S aíd a
Cap ítu lo 10 ï Es tr utu ras, Un iõ es , Man ip u laçõ es de Bit s e En u meraçõ es
Cap ítu lo 11 ï P ro ces s a men to de arq u ivos
Cap ítu lo 12 ï Es tr utu ra d e dados
Cap ítu lo 13 ï O p ré - p ro ces s ad or
Apênd ice A ï Bib li o teca - p ad rão
Apênd ice B ï P rece d ên cia d e Op erad o res e As s o ciativ id ad e
Apênd ice C ï Co n ju n to de Caracter es AS CII
Apênd ice D ï S is temas de n u meraç ão
1 Conceitos de Computação
Obje tivo s
¶ Entender os con ceit os b á sicos do comput ador.
¶ Fami li ariz ar - se com os diferent es ti pos de li ngua gens de pro gr amaç ão.
¶ Fami li ariz ar - se com a his tória da li ngu a gem de p r ogr amaç ão C.
¶ C onhecer Bibl iot eca P ad rão da li n gua gem C (C S tandard Libr ar y).
¶ Entender o ambi ent e e de senvolvi mento de pro gra mas C.
¶ C ompreender po r que é a propriado apr ende r C no prim eiro curso de
programa ção.
¶ C ompreender po r que a li ngua gem C forne ce uma base par a estudo s futuros
de pro gram ação em ger al e em parti cula r par a o C ++.
As coisas são se mp re melh ores n o c o me ço.
Blai se Pascal
Gran d es p en sa men tos e xigem g ran d es li n gu agen s.
Arist ófanes
Nossa vid a é d esp erd içada em d e talhes. S imp li f iq u e, simp li f iqu e.
Henry Thoreau
Su mário
1.1 Introdu ção
1.2 O que É um C omput ador?
1.3 Or ganiz ação dos C omput adores
1.4 P rocessamento em Lot es (Bat ch P rocessi n g), Mult iprogr amaç ão e
Tempo C omparti lha do ( Timesharing)
1.5 C omput ação P essoal, C omput ação Dist ribuída e C omput ação
C li ente/S ervidor
1.6 Lin gua gens de Máquina, Lin gua gens Assembl y e Lin gua gens de Alto
nível.
1.7 A Hist ória do C
1.8 A Bibl iot eca P ad r ão (St a ndard Libra r y) do C
1.9 Outras Li n gua gens d e Al to Nível
1.10 P rogr amaç ão Estruturad a
1.11 Os Fundamentos do Am biente C
1.12 Observa ções G erais s obr e o C e Este Livro
1.13 C oncurrent C
1.14 P rogr amaç ão Orientad a a Objetos e C+ +
Resumo - T erminol ogia - Práti cas Recomendá vei s de Programação - Di cas de
Portabi li dade - Dicas de Perfor mance - Exer cício s de Revisão - R espost as dos
Exercícios de Revisão - Exercícios - L eit ura Re c o mendada
1 .1 Intro duçã o
Bem - vindo ao C! T rab alhamos m uit o duro para c riar o que sin c eram ente
esperamos s e r uma mane ira inst rutiva e diverti da de aprendiz ado. O C é u ma lingua gem
difícil , normalm ente ensi nada ap enas pa ra os pro gramador es ex perientes, e, sendo
assi m, este livro não tem sim il ar entre os l ivros - te x to de C:
Este livro é ac ons elhável para pesso as int eress adas em aspectos t é cnicos e c om
pouca ou nenhu ma ex periência de pro grama ção.
Este livro também é acon selhável par a pro gr amad ores ex perientes que d ese jam
um t ratamento profundo e rigo roso da li n gua gem.
C omo um li vro po de despertar o int er esse de amb os os grupos? A respost a é que
o tema centr al do l ivro c oloca em destaqu e a obte nção de clareza nos pro gramas atr avés
de técnic as comprovad as de pro gram ação estrutur ada. Quem n ão é pro gra mador
aprende rá a pro gr amar "c erto" d esde o iní cio. Tent a mos escrev er d e uma m aneira clar a
e sim ples. O li vro conté m m uit as il ustrações. Talvez o aspecto m ais i mportante seja o
de que o li vro apr esenta um grand e número d e pr ogr amas práti cos em C e most ra as
saídas produz idas quand o eles fore m ex ecutados em um comput ador.
Os quatro prim eiros c apít ulos apresentam os fund a mentos da comput ação, d a
programa ção de com putadores e da li n gua gem de programa ção C. As an áli ses estão
inseridas em um a int rodu ção à pro gra mação d e co mput adores usando um método
estruturado. Os prin cipi antes em pro grama ção qu e fiz eram nos sos cursos n os
informaram que o m ateri al desses capít ulos apr ese nta uma base sól ida pa ra as técni cas
mais avançad as da lin gua gem C . Norm alm ente os programador es ex perient es lêem
rapidamen te os qu atro pr im eiros capít ulos e então descobrem qu e o modo c om o qual o
assunt o é tratado no Capí tul o 5 é rigoroso e fas cinante. Eles gostam particu larmente da
maneira det alhada como s ão anali sados os pon teiros, strings, arquivos e est ruturas de
dados nos capít ulos q ue s e se guem.
Mui tos program adores e x perientes nos dis seram que aprovam nos so m od o de
apresent ar a p ro gra maçã o estruturada. Fr eqüente mente eles costum am pro gr amar em
uma lingua gem estrutura da como o P ascal, m as, p or nunca te rem si do apr e sentados
formalmente à p ro gram a ção estrutur ada, não escr evem o m elhor códi go po ssí vel. À
medida que apr ende rem C com este livro, eles po derão ap rimorar s eu esti lo de
programa ção. D essa for ma, quer voc ê seja um pr incipiante, quer sej a um programador
ex perie nte, há mui to aqui para inform á - lo, di verti - l o e esti mul á - lo.
A maioria das pesso as es tá fami li ariz ada com as c oisas ex cit antes que os
comput adores f az em. Ne ste curso, voc ê apr ender á a manda r os comput ado res faz er em
essas coisas. É o soft w are (i.e., as inst ruçõ es esc ritas para mand ar o compu tador re ali z ar
ações e toma r de cisões) q ue controla os comput ad ores (ch a mados freqüent emente de
hardw are), e uma das li n gua gens de des envolvi mento de softwa re mais po pulares
atualmente é o C. Este te x to fornece uma int roduç ão à pro gr amaç ão em A NS I C , a
versão pa droniz ada em 1 989 tanto nos EUA, atrav és do Americ an Nati onal S tandards
Insti tut e (A NS I), como e m t odo o mundo, através da Intern ati onal S tandard s
Or ganiz ati on ( IS O).
O uso de comput ador es e stá aumentando em quas e todos os campos de tra balho.
Em um a era n a qual os c ustos crescem const ante mente, os custos com a c omput ação
dim inuí ram drasti cament e devido aos ex cit antes d esenvolvi mentos em t ecn ologia de
software e hard war e. Os comput adores que pod e m t er ocupad o sal as enor mes e custado
mi lhões de dólares 25 an os atrás a gor a podem est ar grav ados na su perfície de chips d e
sil ício menores do que u ma unha e que t alvez custem alguns dól a res c ada. Ir onica mente,
o si lí cio é um dos m ateriais m ais abundantes na T erra ð ele é um componente da a reia
comum . A tecnolo gia do chip de sil ício tornou a c omput ação tão e conômi c a que
aprox im adamente 150 mi lhões de comput ador es de uso geral estão sendo e mpregados
em t odo o mundo, ajudando as pessoas no co mérci o, indús tria, gove rno e e m suas vidas
particular es. Est e número pode dobrar facil mente e m alguns anos.
A lingua gem C pode ser ensinada em um primeiro curso de pro grama ção, o
públi co pretendido por es te livro? P ensamos que sim . Dois anos atrás, a ceit a mos este
desafio quando o P as cal estava sol ida mente estab elecido como a li n gua ge m dos
prim eiros cursos de ciênc ia da comput aç ão. Escr ev emos C omo Programar e m C, a
prim eira ediç ão deste liv r o. Centenas de universid ades em todo o m undo usaram C omo
Programar em C. C ursos baseados n ess e li vro se provaram t ão eficient es q uanto seus
predec essores b aseados n o P ascal. Não fo ram obs e rvadas di fe ren ças si gnific ati vas,
ex ceto que os alunos esta vam m ais m oti vados por saberem qu e er a mais pro vável usar o
C do que o P ascal em seu s cursos m ais avan çados e em suas c arr eiras. Os alunos que
aprendem o C também sa bem que estar ão mais pre para dos para ap rend er o C + + mais
rapidamente. O C + + é u m sup erconjunt o da li ngu agem C que se des ti na ao s
programador es que d esej am escr ever p ro gramas o rientados a objetos. F alar emos m ais
sobre o C++ n a S eção 1. 14.
Na re ali dade, o C + + est á rec ebendo tanto int er es se que incluím os um a
int rodução detalhad a ao C + + e pro gramaç ão orie ntada a objetos. Um f enô meno
int eressante que o corr e n o campo das li ngu a gens de pr o gram ação é que atualmente
mui tos do s revendedores principais s im plesmente comercializ am um produ to que
combi na C /C ++, em vez de ofer ec er produtos sep arados. Isto dá aos usuári os a
capa cida de de conti nuar programando em C se de sejarem e d epois m igr are m
gr adualm ente p ara o C + + quando a char em aprop riado.
Ago ra voc ê já sab e de tu do! Você está prest es a i niciar uma jornad a fas cin ante e
gr ati ficador a. À medida que for em f rente, s e voc ê deseja r entra r em conta to conosco,
envie - nos um e - mail pa ra d eitel@w orl d .std.com pela Intern et. Envi darem os t odos os
esforços p ara o fer ece r u ma respost a r ápida. Bo a sorte!
1 .2 O qu e É u m C o mputado r?
Um computador é um di sposi ti vo capaz de reali z ar cálculos e tom ar d ecisõe s
lógicas com um a veloci dade mi lhões ou mesmo bi lhões de vez es mais rápid a do que os
seres hum anos. P or ex em plo, m uit os dos computadores pessoais de hoj e po dem reali z ar
dez enas de mil hões de op eraçõ es arit métic as por s egundo. Uma pessoa util i z ando uma
calculador a de mes a pod eria leva r dé cadas p ara re ali z ar o mesmo n úmero de opera ções
que um poderoso comput ador pessoal pod e re ali z ar em se gundos. (Asp ecto s para
reflex ão: C omo você sab eria se a pessoa f ez as op eraçõ es cor retam ente? Como você
saberia se o com putador fez as opera ções corr eta mente? ) Os mais rápidos
supercomputadores de h oje podem reali z ar c ente nas de bil hões de ope raç ões por
segundo ð qu ase tantas operaçõ es quanto c enten as de pessoas pod eriam r eali z ar em um
ano! E os comput ador es que permitem t rilhões de inst ruções por se gundo já se
encontram em funcionam ento em laboratórios de p esqui sa.
Os comput adores pro cess am dados sob o controle de conjunt os de inst ruçõe s
chamados programas de computador. Estes pro gr amas conduz em o compu tador atrav és
de um conjunto ordenado de açõ es espe cific ado po r pessoas ch amadas prog ramadores
de computador.
Os vários dis posi ti vos (como t eclado, tela, discos, memória e unidades d e
processamento ) que cons ti tuem um s ist ema computacional são ch amados de hardw are.
Os programas ex ecutado s em um com putador s ão chamados de soft w are. O custo d o
hardwa re dim inui u drasti camente nos úl ti mos ano s, che gando a o ponto de os
comput adores pesso ais s e tornar em um a uti li dade. In feli z mente, o custo d o desen -
volvi mento de software t em cres cido constanteme nte, à medida que os p ro gr amador es
desenvolvem apli ca ções cada v ez mais poderosas e compl ex as, sem serem capaz es de
faz er as melhori as corr es pon dentes na tecnolo gia necessá ria pa ra ess e dese nvolvi mento.
Neste liv ro você aprend e rá métodos de de senvolvi mento de softwar e que p odem reduz ir
subst ancialmente seus cu stos e acele rar o p rocesso de desenvolvi mento de a pli cações
poderosas e d e alt o nível. Estes métodos incluem programação estr utura da,
refi namento pas so a passo t op - down {descendente ), funcionali zação e, fina lm ente, pr o -
gramação ori entada a obj etos.
1 .3 Org a ni za çã o dos Co mpu tado re s
Ind ependent emente das d iferen ças no asp ecto físi c o, prati camente todos os
comput adores podem se r consi derados como di vidi dos em seis unidades lógi cas ou
seções. S ão el as:
1. Uni d ade de en trada (in pu t u nit ). Esta é a seç ão d e "rec epção " do comput a dor. Ela
obtém as infor mações (d ados e pro gr amas de comput ador) dos vários dispo sit ivos de
entrad a (input de vices ) e as coloca à dispo sição de outras uni dades pa ra que possam ser
processa d as. A maior p ar te das informaçõ es é fo rn ecida aos comput adores atualmente
através d e teclados como os de máquinas de es cre ver.
2. Uni dade de saí da (ou tput u n it ). Esta é a seção de "ex pedição " do comput a dor. Ela
leva as infor mações qu e f oram proc essadas p el o c omput ador e as envi a aos vários
dispo sit ivos de saí da (out put devices ) p ara to rná - la s di sponí veis para o uso no ambi ente
ex terno ao comput ador. A maioria das inform açõ es é forn ecida p elo comp utador atrav és
de ex ibi ção na tela ou im pressão em pa pel.
3. Uni dade de m em ória (mem ory un it). Este é a seç ão de "armaz en amento" do
comput ador, com a cesso rápido e c apacid ade r elat ivamente baix a. Ela cons erva as
informações qu e for am f orneci das através d a unid ade de entrada p ar a que p ossam estar
im ediatamente dispo nív e is para o pro cessamento quando se fiz er ne cessá rio. A unidade
de memória também con serva as info rmaçõ es que já foram pro cessad as até que sejam
enviadas pa ra os di sposi ti vos de saída pela unidad e de saída. Fr eqüentemen te a unidade
de memória é chamad a d e memória (m emory ), me mória pri nci pal ou memória pri mária
(primar y memor y ).
4. Uni dade ari tm éti ca e lógi ca (arithm eti c an d logi c u n it , ALU). Esta é a seç ão de
"f abrica ção " do comput a dor. Ela é a responsáv el pela re ali z ação dos cál cu los como
adição, subt ra ção, mul ti pli ca ção e divi são. Ela con tém os m ecanism os de de cisão que
permitem ao comput ador , por ex empl o, comparar dois i tens da unidade de memória
para det erminar s e são i guais ou não.
5. Uni dade cen tral de proc essam en to, UC P (cen tral processi n g u n it , C PU). Esta é a
seção "admi nist rati va" d o comput ador. Ela é o co ordenador do comput ado r e o
responsável p ela supervis ão do funcionamento d as outras seções. A CP U informa à
unidade de entr ada qu an do as informaçõ es devem ser li das na unidade d e memória,
informa à A LU quando a s informações d a unidade de memória dev em ser u ti li z adas em
cálculos e inform a à unid ade de saíd a quando as in formaçõ es devem se r env iadas da
unidade de memória p ar a determi nados di sposi ti vos de saída.
6. Uni dade de m em ória s ecu n dári a (secon dary stor age u n it ). Esta é a seç ão de
"a rmaz enamento " de alt a capa cidade e de lon go pr az o do comput ador. Os p rogramas ou
dados que não esti verem sendo usados ati vamente por outras uni dades s ão c olocados
normalm ente em di sposi ti vos de memória secund á ria (como di scos) até que sejam out ra
vez necessários, p ossi vel mente horas, di as, mes es ou até mesmo anos mais tarde.
1 .4 Process a me nt o e m Lo tes (Ba t c h Pro cess ing ) ,
M ultiprog ra ma çã o e Te mpo Co mp a rtilhado (Ti mes ha ring )
Os prim eiros comput ador es eram capaz es de re ali zar apen as um trabalho ou
taref a de c ada v ez . Esta forma de fun cionamento de comput adores é ch amada
freqüent emente de p roce ssamento em lot es de usu ário único. O comput ado r ex ecuta um
único pro grama d e c ada vez enquanto process a da dos em gru ¬pos ou l o tes (batches).
Nesses prim eiros si stema s, ge ralm ente os usuá rios enviavam suas tar ef as ao centro
comput acional em pi lhas de cartõ es per furados. Fr eqüentemente os usu ário s precisavam
espera r horas antes que a s saídas im pressas fosse m l evadas par a seus loc ai s de trabalho.
À medida que os comput adores se torn aram m ais poderosos, tornou - se evidente
que o process amen¬to e m l otes de usuário único raram ente util iz ava com eficiênci a os
recursos do comput ador. Em vez diss o, im aginava - se que mui tos t rabalhos ou ta ref as
poderiam ser ex ecutados de modo a comparti lha r os re¬cu rsos do comput a dor e assi m
conse guir uti li z á - lo m elhor. Isto é cham ado mul ti programa ção. A mult ipro gr amaç ão
envolve as "oper açõ es" si mul tâneas de muit as tare fas do comput ador ð o c omput a¬dor
comp artilha seus r ecurso s entre as ta ref as que ex igem sua atenç ão. Co m os prim eiros
sis temas de mult iprogra mação, os usuá rios ainda enviavam seus pro grama s em pil has
de cartõ es per furados e e spe¬rav am horas ou di as para obte r os result ados.
Nos anos 60, vár ios grup os de indús trias e univers idades foram pi onei ros na
uti li z ação do conceit o de ti mesharing (t empo com partilhado). Tim esharin g é um caso
especial de mul ti pro gr amação no qu al os u suários podem t er ac esso ao com putador
através d e dispo sit ivos de entrad a/saída ou termi n ais. Em um s ist ema comput acional
tí pico de ti mesharing, po de haver d ez enas de usu á rios comparti lhando o co mput ador ao
mesmo t empo. Na re ali dade o comput ador n ão at ende a todos os usuários
sim ult anea¬mente. Em v ez diss o, ele ex ecuta uma peq uena p arte da t are fa de um
usuário e então p assa a fa z er a tare fa do próx im o usuário. O comput ador faz ist o tão
rapidamente qu e pode ex ecutar o s erviço de cad a usuário várias v ez es por segundo.
Assim , parece que as ta re fas dos us uários estão s e ndo ex ecutad as si mul taneamente.
1 .5 Co mpu taçã o Pess o a l, Co mputa çã o Distribuída e
Co mpu taçã o Clie nte/Servido r
Em 1997, a Apple C omput er tornou popular o f en ômeno da comput aç ão pe ssoal.
Inici alm ente, ist o era um sonho de quem a tinha co mo um hobby. C o mput adores
tornaram - s e suficientem e nte baratos pa ra se rem co mprados para uso pessoa l ou
comercial. Em 1981, a IBM, a maior v endedor a de comput adores do m un do, criou o
IB M P C (P ersonal C omput er, comput ador p essoal ). Do dia par a a noit e, li te ralm ente, a
comp utação p essoal se to rnou comum no comér cio, na indúst ria e em or ga niz ações
gove rnamentais.
Mas esses comput ador es eram uni dades "autônomas" ð as pessoas f az iam suas
taref as em seus pró prios equipamentos e então t ra nsportavam os discos de um l ado para
o utro para comparti lhar a s infor mações. Embor a o s primeiros comput adore s pessoais
não fossem suficientem e nte poderosos par a se rem comparti lhados por vá rios usuários,
esses equipamentos p odi am ser li gados entr e si e m redes de comput adores , algumas
vez es at ravés d e li nhas te lefônicas e al gumas vez e s em redes loc ais de or ga ni z ações.
Isto l evou ao fenômeno d a computação dis tri buída, na qual a c ar ga d e trab a lho
comput acional de uma o r ganiz aç ão, em vez de se r reali z ada ex clusi vamente em um a
inst alação c entral d e info rmáti ca, é dist ribuída em redes pa ra os l oc ais (si tes) nos quais
o trabalho re al da or ganiz ação é ef etuado. Os com putadores pessoais eram
suficientemente pod eros os para manipular as ex igências comput a cionais de cada
usuário em particula r e a s tarefa s b ásicas d e comu nicações d e passa r as inf ormações
eletronicament e de um l u ga r par a outro.
Os comput adores p essoai s mais poderosos de hoje são tão poderosos quant o os
equipamentos d e mi lhões de dólares d e apen as um a déc ada atr ás. Os equipa mentos
desktop (comput adores d e mesa) mais pod e rosos ð chamados w orkstati ons ou estações
de traba lho ð fornec em capa cidades eno rmes a u su ários is olados. As infor mações são
comparti lhadas f acil ment e em red es de comput ado res onde al guns d eles, os chamados
servidores de a rqui vos (f il e servers ), of ere cem um depósi to comum de pro gramas e
dados que podem se r usa dos pelos comput adores cli entes (cli ents ) dist ribuídos ao longo
da rede, d aí o t ermo co m putação cli ente/servidor. O C e o C ++ torna ram - s e as
li ngua gens p ref eridas de programa ção pa ra a cria ç ão de softwa re desti nado a sis temas
operacion ais, redes d e co mput adores e apli c açõ es di stribuí das cliente/servidor.
1 .6 Ling ua g ens de Má quina , Ling u a g ens Ass e mbly e
Ling ua g ens de Al to Nív el
Os programado res es crev em i nstruções em vá rias li ngua gens de pro gramaç ã o,
algumas entendidas di retamente pelo computado r e outras que ex igem pass os
int ermediários de tradu ç ão. C entenas de lin gua ge ns comput acionais estão atualmente
em uso . Estas podem ser divi didas em t rês ti po s ge rais:
1. L in gu agen s d e máq u in a
2. L in gu agen s ass emb ly
3. L in gu agen s d e alto n ível
Qualquer comput ado r po de entende r apen as sua p rópria li nguagem de máq uina.
A lingua gem de máquina é a "li ngu a gem natur al" de um determinado comp utador. Ela
está rela cionada in ti mam ente com o projeto de h ar dware d aquele comput ad or.
Geralm ente as li ngu a gen s de máquina consi stem e m st rings de números (re duz idos em
últ im a análi se a ls e Os) que diz em ao comput ado r para reali z ar uma d e su as opera ções
mais elementares d e c ada vez . As li ngua gens d e máquina são dep endentes d e máquina
(não - padroni zadas, ou machine depend ent ), i.e., u ma determi nada li n gua ge m de
máquina só pode ser us a da com um ti po de comp utador. As li ngu a gens de máquina são
compl icadas pa ra os hum anos, como s e pode v er n o trecho se guint e d e um programa em
li ngua gem d e máquina q ue adiciona o p a gamento de horas ex tras ao s alário base e
armaz ena o r esult ado no pagamento bruto.
+1300042774
+1400593419
+1200274027
À medida que os comput adores se torn aram m ais populares, fic ou claro qu e a
programa ção em l in gua gem de máquina e ra sim plesmente muit o lenta e ted iosa para a
maioria dos pro gram ador es. Em vez de usar strin gs de números que os com putadores
podiam entender dir etam ente, os pro gr amadores c o meçar am a usar abr evia ções
p arecid as com palav ras e m i nglês par a rep resent ar as opera ções el ementa re s de um
comput ador. Estas abr evi ações fo rmar am a base d as li nguagens ass embly. Foram
desenvolvi dos programas t radut ores, chamados a ssemblers, par a conve rter programas
em l ingua gem as sembl y para li n gua gem d e máqui na na velocid ade dit ada p elo
comput ador. O tre cho de um progr ama em l in gua gem assembl y a se guir ta mbém som a
o pagamento de hor as ex tras ao salá rio base e arm az ena o re sult ado em pa gamento
bruto, porém i sto é feit o de uma for ma m ais clar a do que o pro gram a equiv alente em
li ngua gem d e máquina.
L OAD BAS E
ADD EXTRA
S T ORE BRUTO
O uso do comput ador au mentou rapidamente com o advento das li ngu a gen s
assembl y, mas elas ain da ex igiam mui tas inst ruções para reali z ar mes mo a s tarefas m ais
sim ples. P ara acel era r o processo de p ro gram ação , foram desen volvi das li nguagens de
alt o nível, nas quais pod iam ser esc ritas inst ruções sim ples para re ali z ar tar efas
fundamentais. Os pro gra mas tradutores que conve rtiam programas d e li n gu agem de alt o
nível em l ingua gem de máquina são ch amados co mpilador es. As lin gua ge ns de alt o
nível permitem aos pro gr amadores escr ever instru ções que se p are cem com o idi oma
inglês comum e contêm a s not ações matemáti c as n ormalmente usadas. Um programa d e
folha de pa gamento em u ma lingua gem de alt o nível poderia cont er uma ins trução como
esta:
B ru to = Base + Extra
Obviamente, as li n gua ge ns de alt o nível são mui to m ais desejáveis do pon to de
vist a do programador do que as li ngu a gens de m á quina ou assembl y. O C e o C++ estão
entre as li n gua gens de alt o nível mais poderosas e mais ampl amente usadas.
1. 7 A His tória do C
O C foi desenvolvi do a p artir de duas li n gua gens a nteriores, o BC P L e o B. O
BC P L foi d esenvolvi do e m 19 67 por Marti n Ri cha rds como um a li ngu a gem para
escrev er softw are d e sis temas oper acionais e compi ladores. Ken Thompso n modelou
mui tos recursos em sua li ngua gem B com base em recursos si mi lares do B C P L e usou o
B par a cri ar as p rimeiras versões do si stema o pe ra cional UN IX n as ins tala ções do Bell
Labo ratories em 1970, e m um comput ador DEC P DP - 7. Tanto o BC P L co mo o B er am
li ngua gens "sem t ipos " ( "t ypeless ") ð todos os i te ns de dados ocupav am u ma "pal avra "
na memória e a respons a bil idade de li dar com um it em de dados como um número
int eiro ou real, por ex empl o, recaía sob re os om br os do programador.
A lingua gem C foi desen volvi da a partir do B por Dennis R it chie, do Bell
Labo ratories, e im pleme n tada ori ginalmente em u m computador DEC P DP - 11, em
1972. De in ício o C se tornou ampl amente conh ec ido como a li ngua gem de
desenvolvi mento do si stema opera cional UN IX . H oje em di a, prati c a mente todos os
gr andes si stemas ope raci onais estão esc ritos em C e/ou C ++ . Ao lon go das duas úl ti mas
décad as, o C ficou disponí v el para a m aioria dos comput adores. O C i ndep ende do
hardwa re. Ela borando u m projeto cuidadoso, é p ossí vel escrev er pro gram as em C que
sejam portáteis par a a ma ioria dos comput adores. O C usa muit os dos i mportantes
conceit os do BC P L e do B ao mesmo t empo que a diciona ti pos de dados e outros
recursos pod erosos.
No final da dé cada d e 70, o C evolui u e che gou ao que se cham a a gor a de "C
tradicional". A publi caç ã o em 1978 do l ivro de Ke rnighan e R it chie, T he C
Programming L anguage, fez com que essa lin gua gem r ec ebesse muit a at e nção. Esta
publi cação se to rnou um dos li vros de informática mais bem - sucedidos de t odos os
tempos.
A rápida ex pansão do C em vários t ipos d e comp utadores (al gumas v ez es
chamados de plat aforma s de hardw are ) levou a mui tas variante s. Elas e ra m si mi lares,
mas freqüent emente inco mpatíveis. Isto foi um pr oblema sério par a os des envolvedores
de pro gram as que pr ecisa vam criar um código qu e fosse ex ecutado em vá ri as
plataformas. Ficou cla ro que era n ec essário um a v ersão pad rão do C . Em 1 9 83, foi
criado o comi tê té cnico X3J 11 sob o American N ati onal S tandards Com mi tt ee on
C omput ers and Informati on P rocessi ng (X3) p ara "forn ec er à li n gua gem um a definição
inequívoca e indep endent e de equipam ento". Em 1 989, o padrão foi aprova do. O
documento é conh ecido c omo ANS I/ IS O 9899:19 90. P ode - se pedir cópias desse
documento para o Ameri can Nati onal S tanda rds Instit ute, cujo endere ço co nsta no
P refácio a este tex to. A segund a ediç ão do li vro d e Kerni ghan e R it chie, p ubli cada em
1988, reflete esta ve rsão, chamada ANS I C , a gor a usada em t odo o mundo ( Ke88).
Dicas d e p ortabi li d ad e 1.1
C omo o C é uma lingua gem i ndependente d e hard ware e ampl amente
dispo nível, as aplicaçõ es escritas em C podem se r ex ecutadas com pouc a
ou nenhuma modificaç ão em um a grande v aried ad e de sis temas
comput acionais.
1. 8 A Biblio teca Padr ã o (Standa rd Lib ra ry ) do C
C omo você aprend erá no C apít ulo 5, os program a s em C consist em em módul os
ou elementos chama dos funções. Voc ê pode pro gr amar todas as funções d e que p recis a
para fo rmar um pro gram a C , mas a maioria dos pr ogr amador es C ti ra prove it o de um
ex celente conjunt o de fu nções cham ado C Standar d L ibrar y (Bibl iot eca P a drão do C ).
Dessa form a, há na reali d ade duas pa rtes a s erem a prendidas no "mun do" do C . A
prim e ira é a li ngu a gem C em si , e a se gunda é com o usar as fun ções do C S tandard
Libr ar y. Ao lon go deste l ivro, anali saremos m uit a s dessas funçõ es. O Apên dice A
(condensado e ad aptado do documento padrão do ANS I C ) rela ciona todas as funções
dispo níveis na bibl iot eca padrão do C . A lei tura do li vro de P lauge r (P 192) é obrigatória
para os pro gramado res q ue nec essi tam de um ente ndim en to profundo das f unções da
bibl iot eca, de como i mpl ementá - las e como us á - l a s para es crev er códi gos p ortáteis.
Neste curso vo cê se rá esti mul ado a usar o método dos bl ocos de const rução para
criar pro gramas. Evite rei nventar a roda. Us e os el ementos ex ist entes ð isto é chamado
reuti li zação de sof tw are e é o se gr edo do c ampo de desenvolvi mento da pr ogr amaç ão
orientada a obj etos. Ao p rogramar em C , você usa rá normalm ente os s e guint es bl ocos
de const ruç ão:
Å Funções d a C S tandard Librar y (bibl iot eca p adr ão)
Å Funções criad as por voc ê mesmo
Å Funções criad as por outr as pessoas e colocad as à sua dispos ição
A vanta gem de cria r suas próprias funçõ es é qu e v ocê sabe rá ex atamente co mo
elas funcionam. Vo cê po derá ex ami nar o código C . A desvanta gem é o esf orço
demorado que s e faz nec essário par a projeta r e d e senvolver novas fun ções.
Usar fun ções ex ist entes e vit a reinventar a roda. N o caso das f un ções st and ard do
ANS I, vo cê sab e que ela s foram desenvolvi das cu idadosamente e s abe que, por estar
usando funções di sponí v eis em prati camen te toda s as impl ementações do ANS I C , seus
programas te rão uma gr a nde possi bil idade de ser e m portáteis.
Dica d e d ese mp en h o 1.1
Usar as fun ções d a bibl iot eca standa rd do C em ve z de você esc reve r suas
próprias versõ es si mi lare s pode melho¬ra r o dese mpenho do pro grama
porque essas funções for am desenvolvi das cuidad osamente por pesso al
eficiente.
Dicas d e p ortabi li d ad e 1.2
Usar as fun ções d a bibl iot eca pad rão do C em vez de escr ever su as
próprias versõ es si mi lare s pode melhorar a porta ¬ bil idade do programa
porque essas funções estão colocad as em pr ati ca mente todas as
im plementações do ANS I C .
1 .9 Outras Li ng ua g ens de Al to Nív el
C entenas de lin gua gens d e alt o nível foram d esenv olvi das, mas apenas al gu mas
conse guiram gr ande a ceit ação. O F ORTRAN (FOR mul a TRANslator) foi de senvolvi do
pela IBM entre 1954 e 1 957 para se r usado em ap li cações ci entí ficas e d e e ngenh aria
que ex igem c álculos m atemáti cos compl ex os. O F ORTR AN ainda é mui to usado.
O C OBOL (COmmon Bu siness Oriented Lan gu a ge) foi desenvolvi do em 1 959
por um grupo d e f a bricantes de comput ador es e us uários gov ern amentais e indus triais.
O COBO L é usado princi palm ente par a apli ca ções comerciais qu e nec essi ta m de uma
manipulação pr ecisa e efi ciente de gr andes vol ume s de dados. Hoje em di a, mais de
metade de todo o s oftw ar e comer cial ainda é pro gr amada em C O BO L. Mais de um
mi lhã o de pessoas estão empre gad as como pro gr a madores de CO BO L.
O Pascal foi desenvolvi d o quase ao mesmo t empo que o C. Ele desti nava - s e ao
uso acadêmi co. Fa laremo s mais s obre o P ascal na próx im a seção.
1 .10 Prog ra ma çã o Est rutura d a
Durante os anos 60, enor mes esforços p ara o d ese nvolvi mento de software
encontra ram grand es di fi culdades. Os c rono gram a s de desenvolvi mento de software
normalm ente estav am atr asados, os custos super av am em mui to os orçamen tos e os
produtos finais nã o er am confiáveis. As p essoas co meçar am a pe rceb er que o
desenvolvi mento era um a ati vidade mui to m ais c ompl ex a do que haviam im aginado. A
ati vidade de pesqui sa dos anos 60 result ou na evol ução da programa ção est rutur ada ð
um m étodo di scipl inado de escr ever p ro gram as cl aros, niti damente cor reto s e fác eis de
modi ficar. Os C apít ulos 3 e 4 descr evem os fund a mentos da pro grama ção estruturada.
O restante do tex to anali sa o desenvolvi men to de programas em C estrutur a dos.
Um dos result ados m ais t angív eis dessa pesqui sa f oi o desenvolvi mento da
li ngua gem P asc al de pro gr amaç ão pelo P rofesso r Nicklaus W irth em 1971. O P ascal,
que rec ebeu este nome e m hom enagem ao matem áti co e fil ósofo Blaise P a scal, que
viveu no século XV II, de sti nava - se ao ensino da p rograma ção e strutur ada e m ambientes
acad êmi cos e se tornou r apidamente a li n gua gem prefe rida pa ra a int rodu ç ão à
programa ção em m uit as universidades. In feli z mente, a li ngu a gem c are cia de mui tos
recursos n ecess á rios para torná - la útil em aplica çõ es comer ciais, i ndust r iais e
gove rnamentais, e portan to não foi ampla mente ac eit a nesses ambi entes. P o ssi velm ente
a hist ória re gist ra qu e a grande im portân cia do Pas cal foi sua es colha pa ra s ervir de b ase
para a li n gua gem de pro gramaç ão Ada.
A lingua gem Ada foi des envolvi da sob a respons a bil idade do Depart ament o de
Defes a dos EUA ( United S tates Department of D e fense, ou DO D) dur ante os anos 70 e
iní cio dos anos 80. C entenas de lingu a gens di fe ren tes estavam sendo usad as para
produz ir os im ensos s ist emas de comando e contro le de softwar e do DO D. O DOD
desejava uma úni ca li n gu agem que pudess e atend e r a suas ne cessi dad es. O P ascal foi
escolhi do como base, ma s a lingua gem Ada fin al é muit o diferente do Pasc al. A
li ngua gem Ad a re ceb eu e ste nome em hom ena gem a Lad y Ada Lovela ce, fil ha do poeta
Lord e B yr on. De um a maneira geral, La d y Lovel ace é consi der ada a primeira pessoa do
mundo a escr ever um pro gr ama de comput ador, no iní cio do s éculo X IX. U ma
cara cteríst ica im portant e da li ngua gem Ada é cha mada multi tarefa (mult it asking); ist o
p ermite aos pro gr amador es especifi car em a oco rrê ncia sim ult ânea de mui ta s ativi dades.
Outras li ngu a gens de alt o nível ampl amente usada s que anali samos ð incl uindo o C e o
C ++ ð permitem ao pro gr amador escr ever p ro gr amas que r eali z em apena s um a
ati vidade. S a ber e mos n o futuro se a li n gua gem Ad a conse guiu atin gir seus objetivos de
produz ir software confiá vel e reduz ir subst ancial mente os custos de desen volvi mento e
manutenção d e softwar e.
1.11 Os Fu n d amen tos d o A mb iente C
Todos os si stemas C são c onst it uídos geralm ent e de três part es: o ambi ente , a
li ngua gem e a C S tandar d Libr ar y. A a náli se a se guir ex pli ca o ambi ente tí pico de
desenvolvi mento do C , mos trado na Fi gur a 1.1.
Normalmente os pro gr a mas em C passam por sei s fases pa ra se rem ex ecut ado s
(Fi gura 1.1 ). São elas: ed ição, pré - proc essamento, compilação, linking (li gação ),
carregamento e ex ecuçã o. C oncentrar - nos - emos aqui em um si stema tí pico do C
baseado em U N IX. Se vo cê não esti ver usando um sis tema UN IX, consul te o manual de
seu si stema o u per gunte ao seu prof essor como r e ali z ar estas tare fas em se u ambi ente.
A prim eira f ase consi ste na edição d e um arquivo. Isto é reali z ado com um
programa edit or. O pro gramador di git a um pro gr ama em C com o editor e faz as
corre ções ne cessá rias. O prog rama é então armaz e nado em um dispo sit ivo de
armaz enamento se cundár io como um di sco. Os nomes de pro gram as em C devem t er a
ex tensão .c. Dois edit ore s mui to usados em si stemas UN IX s ão o vi e o e macs. Os
pacotes de soft war e C /C ++ como o Borland C+ + para IB M P C s e compatí veis e o
S ym antec C + + pa ra Appl e Macint osh possuem edi tores embuti dos que se a daptam
perfeit am ente ao ambi ent e de pro gr amaç ão. P arti mos d o princípi o de que o leitor sabe
edit ar um pro gram a.
A se guir, o pro gr amador emi te o comando de com p il ar o progr ama. O
compi lador traduz o pro grama em C par a o códi go de li ngua gem de máquin a (também
chamado de código - objet o). Em um sis tema C , um programa pré - proc essador é
ex ecutado autom ati came nte antes de a fase d e tra dução come çar. O pré - pr ocessador C
obedec e a com andos esp eciais cham ados direti va s do pré - processador que indi cam que
devem ser r eali z adas det erminadas manipul a ções no programa antes da co mpi lação.
Estas manipu lações consi stem normalm ente em i nclui r outros arquivos no a rquivo a ser
compi la do e subst it uir sím bolos especiais por tex to de pro gram a. As direti vas mais
comuns do pré - pro cessad or são anali sad as nos pri meiros capít ulos; uma an áli se
detalhada d e todos os rec ursos do pré - pro cessado r está present e no C apít ulo 13. O pré -
processado r é a ti vado aut omaticamente pelo comp il ador antes de o pro gram a ser
convertido par a li ngu a ge m de máquina.
A quarta f ase é chamad a li nking. Normalmente os programas em C cont êm
refe rênci as a fun ções de f ini das em outros locais, c omo nas bibl iot ecas padr ão ou nas
bibl iot ecas de um grupo de pro gram ado res que es tejam t rabalhando em um determi nado
projeto. Assim , o código - objeto produz ido pelo com pil ador C contém normalmente
"lacun as " devido à f alt a dessas funçõ es. Um li nke r faz a li ga ção do código - objeto com o
código d as funçõ es que e stão falt ando par a produz ir uma imagem e xecutá ve l (sem a
falt a de qualqu er pa rte). Em um sis tema tí pico baseado em UN IX, o coma ndo para
compi lar e li nkar um pro gr ama é cc. P or ex empl o, para compi la r e li nkar u m progr ama
chamado b e m vin d o. c digit e
cc bemv i ndo .c
no prompt do UN IX e p r essi one a tecl a R eturn (o u Enter). Se o pro grama f or compi lado
e li nkado corr etamente, s erá produz ido um arquiv o chamado a.ou t. Este a r quivo é a
im agem ex ecutável de no sso progr ama b e mvin d o. c.
A quin ta fase é cham ada carregamento. Um pro gr ama deve s er colo cado n a memória
antes que possa se r ex ecu tado pela prim eira vez . Is to é feit o pelo carregado r (roti na de
carga ou l oader ), que ap anha a im a gem ex ecutáv el do di sco e a tr ansfer e p ara a
memória.
Fin alm ente, o comput ado r, sob o controle de su a C P U, ex ecuta as ins truções do
programa, uma após a ou tra. P ara car re ga r e ex ecu tar o pro gram a em um sis tema UN IX
digit amos a.ou t no prom pt do UN IX e apertamos a tecla Return.
A maioria dos pro gr amas em C rece b e ou envia d a dos. Determi nadas funçõ es do
C receb em seus dados de entrada a partir do stdi n (o dispo sit ivo padrão de entrad a, ou
stand ard i nput device ) q ue normalm ente é d efini do como o t eclado, mas q ue pode esta r
associado a outro dispos i ti vo. Os dados s ão envia dos para o stdou t (o disp osit ivo
padrão de saí da, ou stand ard out put device ), qu e normalm ente é a t ela do comput ador,
mas que pode esta r assoc iado a outro dispos it ivo. Quando diz emos q ue um pro grama
fornec e um result ado, no rmalm ente quer emos d iz er que o r esult ado é ex ibi do na tela.
Há também um dispo sit ivo padrão de erros (stan dard error d evice ) ch amado
stderr. O disposi ti vo stderr (norm alm ente associ a do à tela) é us ado par a ex ibi r
mensagens de erro. É co mum não enviar os dados re gu - lar es de saíd a, i.e., stdou t para a
tela e manter s tderr asso ciado a el a par a que o us uário possa ser info rmad o
im ediatamente dos er ros.
1. 12 Observ a çõ es G er a is so bre o C e Este Liv ro
O C é uma lingua gem di f ícil. Algumas vez es, os p rograma dor es ex periente s
ficam or gulhos os de c riar uti li z ações estranhas, di storcidas e compl ic adas d a li ngua gem.
Isto é um a péssi ma re gra de pro gram a ção. Ela faz com que os pro gr amas fi quem
difíceis de ler, com grand e probabil idade d e se co mportarem de man eira i mprevist a e
mais di fíceis de testar e d epurar erros. Est e li vro s e desti na a pro gramado re s ini ciantes,
portanto damos ênfas e à elabora ção de p ro gram as claros e b em - estrutur ado s. Um de
nossos objetivos principais neste liv ro é faz er com que os pro gram as fi que m claros
através d a uti li z ação de técnicas comprovad as de programa ção estrutur ada e das mui tas
práti cas r ecomend áveis, de pro gram arão men cion adas.
B oas p ráticas d e p rograma ção 1.1
Escreva s eus pro gr amas em C de uma maneir a sim ples e objetiva.
Algumas v ez es is to é cha mado K IS (do ingl ês "k e ep it sim ple" [ que pode
ser traduz ido por "m ante nha a sim pli cidade "] ). Não "compli que" a
li ngua gem t ent ando sol uções "estranh as".
Você pode ouvi r que o C é uma lingu a gem portáti l e que os pro gr am as esc r it os
em C podem ser ex e cuta dos em m uit os comput adores di fer entes. A portabi li dade é um
objetivo ilus ório. O documento pa drão do A NS I ( An90) li sta 11 pá ginas de questões
deli cadas sobr e portabil i dade. Fo ram es critos l ivros compl etos s obre o ass unto de
portabil idade no C (J a89) (R a90).
Dicas d e p ortabi li d ad e 1.3
Embora seja possí vel es c rever p ro gram as portáteis , há mui tos problemas
entre as di f erent es im plementa¬çõ es do C e os di f erentes comput adores
que tornam a port abil idade um objetivo di fícil de ati ngir. Si mpl es¬mente
escrev er pro gramas em C não garant e a port abil idade.
Fiz emos u ma pesqui sa c uidadosa do documento padrão do A NS I C e
ex ami namos n ossa apres enta ção quanto aos asp ec tos de compl etude e pr eci são.
Entretanto, o C é uma lingua gem m uit o rica e poss ui algumas suti lez as e al guns
assunt os avanç ados que não anali samos. S e voc ê precisar conhe cer d etalhe s técnicos
adicionais s obre o A NS I C , sugerimos a leit ur a do próprio documento padr ão do ANS I
C ou o manual de ref er ên ci a de K erni ghan e R it chi e (Ke88 ).
Lim it amos n osso estudo ao ANS I C . Mui tos recur sos do ANS I C não s ão
compatíveis com i mpl e mentações anti gas do C , portanto você pode vi r a de scobrir que
alguns pro gramas men ci onados neste tex to não funcionam com compil ador es antigos do
C .
B oas p ráticas d e p rograma ção 1.2
Lei a os m anuais da v ersã o do C que esti ver usand o. Co nsul te
freqüent emente estes m a nuais para se ce rtifi car d o conhecim ento do rico
conjunt o de recu rsos do C e de que eles estão s en do usados corr etamente.
B oas p ráticas d e p rograma ção 1.3
S eu comput ador e compi lador são bons m estres. S e você n ão esti ver certo
de como funciona um rec urso do C , escrev a um pr ogr ama de test e que
uti li z e aquele recurso, co mpi le e ex ec ute o pro gr a ma, e veja o qu e
acontec e.
1. 13 Co ncurren t C
Foram des envolvi das out ras versõ es do C atrav és de um esforço contí nuo de
pesqui sa no B ell Labora tories. Gehani (Ge89) d es envolveu o C oncurrent C ð um
superco njunt o do C que inclui recursos p ara espec ificar a o corr ência d e diversas
ati vidades em par alelo. Lingua gens como o C oncu rrent C e r ecur sos de sist emas
operacion ais que suporta m paralelism o em aplica ções do usuário se to rnar ão cad a vez
mais popul ares na p róx im a décad a, à medida q ue o uso de multi processador es (i.e.,
comput adores com mais de uma CP U) aumentar. Normalmente cu rsos e li vros - tex to de
sis temas operacion ais (D e90) tra tam do assunt o de pro gram ação p aral ela d e uma
maneira consi stente.
1 .14 Pro g ra ma çã o Orien tada a Ob jeto s e C+ +
Outro superconjunt o do C , especificam ente o C+ +, foi desenvolvi do por
S troustrup (S t86) no Bell Labo ratories. O C++ fo r nece mui tos re cursos que tornam a
li ngua gem C mais "atra e nte". P orém o m ais i mpo rtante é que ela fo rnec e r ecursos pa ra a
programação ori entada a obj etos.
Objetos são basicament e componentes r euti li z áveis de softwar e que modela m
it ens do m undo real. Est á ocorrendo um a revoluç ã o na comuni dade d e soft ware.
Desenvolver so ftwar e de modo rápido, cor reto e e conômi co perman ece um objetivo
utópi co, e ist o acontec e e m um a época n a qual a d emanda por so ftwar e nov o e poderoso
está cr escendo.
Os desenvolvedor es de s oftware estão des cobrind o que usar um projeto e
método de im plementaçã o modul ares e orient ados a objetos pode faz er co m que os
grupos d e desenvolvi men to se tornem 10 a 100 ve z es mais produti vos do que seria
possí vel com técnicas co nvencionais de pro grama ção.
Mui tas lin gua gens ori entadas a objetos fo ram des envolv idas. A opini ão ge ral é
de que o C++ s e torna rá a li ngua gem dom inante p ara a im plement ação d e s ist emas a
partir de me ados a final d os anos 90.
Mui tas pessoas acr edit a m que a melhor estr até gi a educ acional hoje é ente nder
perfeit am ente o C e depo is estud ar o C++.
1 .15 Res umo
Å É o software (i.e., as ins tr uções que voc ê es crev e p ara ord enar ao comput ad or a
reali z ação d e açõ es e a to mada de de cisões) que co ntrola os comput adores ( chamados
freqüent emente de h ardw are).
Å ANS I C é a ve rsão da li n gua gem de pro grama ção C padroniz ada em 1989 t anto nos
Estados Unidos , através do American Nati onal S tandards Insti tut e (A NS I), como em
todo o m undo, através da Inte r nati onal S tandards Or ganiz ati on ( IS O).
Å Os comput adores qu e po dem t er ocupado s a las en ormes e custado mi lhões de dólares
há 25 anos podem a go ra estar conti dos na supe rfíc ie de chips d e sil ício men ores do que
uma unha e que t alvez cu stem alguns dól ar es c ada um.
Å Aprox im adamente 150 mi lhões de comput adores d e uso geral estão em ativi dade em
todo o m undo, ajudando as pessoas nos ne gó cios, i ndúst ria, gove rno e em s uas vi das
pessoais. Est e número po de dobrar facil mente em alguns an os.
Å Um comput ador é um di s posi ti vo capaz de reali z ar cálculos e tom ar d ecisõe s lógicas
com um a rapi dez mi lhões, ou mesmo bi lhões, de vez es maior do que os se res hum anos.
Å Os comput adores pro cess am dados sob o controle de pro gram as computaci onais.
Å Os vários dis posi ti vos (como t eclado, tela, discos, memória e unidades d e
processamento ) que cons ti tuem um s ist ema compu tacional são ch amados de hardw are.
Å Os programas ex ecutado s em um comput ador são chamados de so ftwar e.
Å A unidade de entrada é a seção de "rec epç ão" do c omput ador. Atualmente a maioria
das informaçõ es é fo rnec ida aos comput ador es atr avés de te clados como os de máquinas
de escr ever.
Å A unidade de s aída é a s e ção de "ex pedição " do co mput ador. Atualmente, a maioria
das informaçõ es é fo rnec ida pelos comput adores a través de ex ibi ção na tela ou
im pressão em papel.
Å A unidade de memóri a é a seção d e "arm az ename nto" do comput ador e é c hamada
freqüent emente de memó ria, memória princip al ou m emória primária.
Å A unidade aritméti c a e ló gic a (a rithm eti c and logi c unit , A LU) r eali z a os c álculos e
tom a decisões.
Å A unidade c entral de p ro cessamento, UC P (c entra l processi n g unit ) é a r es ponsável
pela coord ena ção do com putador e pela sup ervisão do funcionamento de out ras seçõ es.
Å Normalmente, os pro gr a mas ou dados que não esti verem sendo usados ati vamente
por outras uni da des são c olocados em di sposi ti vos de armaz enam ento secu ndário (como
discos) até que s ejam no va mente ne cessários.
Å No process amento de lot es de usuário úni co (singl e - user b atch pro cessi n g), o
comput ador ex ecuta um programa sim ples de cad a vez enquanto proc essa os dados em
grupos ou lotes (b atches ) .
Å A mult iprogram ação env olve a re ali z ação "sim ult ânea " de v árias ta ref as n o
comput ador ð este com partilha seus re cursos ent re as tar ef as.
Å Timesharing (tempo com partilhado) é um c aso esp ecial de mul ti pro grama çã o na qual
os usuários t êm acesso a o comput ador por int erm édio de t erminais. P are ce que os
usuários estão ex ecutand o programas sim ult anea mente.
Å C om a comput ação dist ri buída, o poder comput a cional de uma or ganiz aç ão é
dist ribuído através de um a rede p ar a os l ocais (si te s) nos quais o t rabalho r e al da
organiz ação é re ali z ad o.
Å Os servidores d e arquivo armaz enam pro gr amas e dados que podem se r
comparti lhados por comp u tadores clientes dist ribu ídos ao longo da rede, d a í o t ermo
comput ação cli ente/servi dor.
Å Qualquer comput ado r po de entende r diretament e sua própria lin gua gem d e m áquina.
Å Geralm ente, as li ngu a gen s de máquina consi stem e m st rings de números (re duz idos
em úl ti ma aná li se a ls e Os) que mandam o comput ador re ali z ar suas oper ações mais
elementar es, um a por vez . As li ngua gens de máqui na depend em do equipa mento.
Å Abreviaçõ es semelhant es ao idi oma inglês fo rma m a base das li n gua gens assembl y.
Os assemblers (montado r es) traduz em os pro gr amas em l ingua gem assemb l y par a
li ngua gem d e máquina.
Å Os compi ladores traduz e m os progr amas em l in gu agem de alt o nível pa ra li ngua gem
de máqu ina. As li ngu a ge ns de alt o nível contêm p alavras em i nglês e notaç ões
matemáticas conv encion ais.
Å O C é conhecido como a li ngua gem d e desenvolvi mento do si stema operaci onal
UN IX.
Å É possí vel escrev er pro gr amas em C que sejam po rtáveis par a a maioria do s
comp utadores.
Å O padrão ANS I C foi apr ovado em 1989.
Å O FORTR AN ( FORm ula TRANslator) é usado e m aplicações mat emática s.
Å O COBO L (C Ommon B usiness Oriented Lan gu a ge ) é usado p rincipalmen te em
apli caçõ es comer ci ais qu e ex ij am m anipul ação pr ecisa e eficiente d e gr a nd es vol umes
de dados.
Å P rogr amaç ão estruturad a é um m étodo di scipl inado de escr ever p ro gram as que sejam
claros, vi sivel mente co rr etos e fá ceis de se rem m odificados.
Å O Pascal desti nava - se ao ensino de pro gr amação e struturada em ambient es
acad êmi cos.
Å A Ada foi des envolvi da s ob o patrocíni o do Depa r tamento de Def esa dos E stados
Unidos (Unit ed S tates" D epartment of D efens e, D OD) usando o P asc al co mo base.
Å A multi tarefa (multi tasking) d a li ngu a gem Ada p e rmite aos pro gram adores
especific arem ati vidades paralelas .
Å Todos os si stemas em C consist em em três partes: o ambi ente, a li n gua gem e as
bibl iot ecas padrão. As fu nções da bibl iot eca n ão s ão parte d a li ngu a gem C em si ; elas
reali z am opera ções como entrada/saíd a de dados e cálculos m atemáti cos.
Å P ara ser em ex ecut ados, o s programas em C pass a m ger alm ente por s eis fas es:
edição, pr é - pro cessament o, compi lação, li nking (liga ção), ca rre gamento e e x ecução.
Å O pro gramado r di git a um programa com um edit or e faz as cor re ções ne cess árias.
Å Um compi lador traduz um progr ama em C pa ra li ngua gem de máquina (ou código -
objeto).
Å Um pré - pro cessado r obe dece a direti vas que indi c am normalm ente que out ros
arquivos devem se r inclu ídos n o arquivo a ser co mpi lado e que sím bolos especiais
devem ser subst it uídos por tex to de progr ama.
Å Um li n ker liga o código - objeto ao códi go de fun ç ões que estejam f alt ando de modo a
produz ir uma im agem ex ecutável ( com t odas as p artes ne cessári as).
Å Um loader ( car re gado r) a panha uma ima gem ex ecutável do di sco e a tr ansf ere pa ra a
memória.
Å Um comput ador, sob con trole de sua CP U, ex ecuta, uma a uma, as ins truçõ es de um
programa.
Å Determi nadas funções do C (como scan f ) receb em dados de stdi n (o disposi ti vo
padrão de en trada) que n ormalmente é atribuí do a o teclado.
Å Os dados são enviados a stdou t (o disposi ti vo padrã o de saíd a) que no rmal mente é a
tela do com putador.
Å Há ainda um dis posi ti vo padrão de erro chamado stderr. O disposi ti vo stderr
(normalmente a tel a) é us ado para ex ibi r mensage ns de erro.
Å Embora seja possí vel es c rever p ro gram as portáteis , há mui tos proble mas en tre as
diferentes im ple mentaçõ es do C e os di fer entes co mput adores que podem f az er com que
a portabil idade sej a difíci l de conse guir.
Å O Concurrent C é um s u perconjunt o do C que inc lui recursos pa ra esp ecifi car a
reali z ação d e várias ati vidades em pa ralelo.
Å O C++ forn ec e re cursos para a re ali z ação de pro gramaç ão orientad a a obje tos.
Å Objetos s ão basicament e componentes reuti li z áveis de softwar e que modela m i tens
do mundo real.
Å A opinião geral é d e que o C++ se torna rá a li n gua gem dom inante p ara
im pleme ntação de sis tem as a partir d e meados a fi nal dos anos 90.
1.16 Terminologia
Ada
A LU
ambi ente
ANS I C
assembler
Bibl iot eca pad rão do C ( C S tandard
Libr ar y)
C
C + +
carr e gador (loade r)
clarez a
cli ente
C OBO L
códi go - o bjeto
compi lador
comput ação cli ente/servi dor
comput ação dist ribuída
comput ador
comput ador pessoal (p ers onal computer;
P C )
C oncurrent C
C P U
dados
dependente d e máquina d ispos it ivo de
entrada dispo sit ivo de saí da edit or
entrada p adrão (standard input , stdi n)
entrada/saíd a (input /out put, I/O)
erro pad rão (stand ard err or, stderr)
estação d e trab alho (wor kstati on)
ex ecutar um pro gram a
ex tensão .c
FORTR AN
função
funcionaliz ação
im agem ex ecutável
independente d a máquina
li ngua gem assembl y (ass embl y lan gu a ge )
li ngua gem d e alt o nível
li ngua gem d e máquina
li ngua gem d e pro gr amaç ão
li ngua gem n atural do co mput ador
li nker
memória
memória prim ária ou me mória principal
método dos bl ocos de co nstrução
(buildi ng block app roach )
mul ti processador
mul ti programa ção
mul ti t arefa (mul ti tasking)
objeto
P ascal
plataforma d e hardw ar e
portabil idade
pré - pro cessado r C
processamento d e lot es ( batch proc essi ng)
programa armaz enado
programa d e comput ador
programa tr adutor
programa ção estrutur ada
programa ção orient ada a objetos
p rogramador de comput a dor
refinamento top - down e m etapas
reuti li z ação de softwa re r odar um
programa
saída padr ão (standa rd o utput , stdo ut)
servidor de a rquivos
software
supercomput ador
taref a
tela
tempo comparti lhado (ti mesharin g)
termi nal
unidade aritméti ca e ló gica, UA L
(arithm eti c and lo gic unit , A LU) unidade
de entrad a unidade d e me mória
unidade de pro cessament o central, UC P
(centr alprocessi n g unit , C P U) unidade de
saída unidades ló gicas U N IX
Práticas Recomendáveis de Programação
1.1 Escreva s eus p ro gr amas em C de uma maneira si mpl es e objetiva. Algum as vez es ist o
é ch amado K IS (do in glês "keep it sim ple" [ que pode s er t raduz ido por "mantenh a a sim pli cidade"] ). Não "co mpl ique" a li n gua gem t e ntando soluções " estranh as".
1.2 Lei a os manuais da ver são do C que esti ver usando. C onsul te freqüent emente estes manuais par a se certifi ca r do conh ecim ento do ri c o conjunt o de r ecursos d o C e de qu e eles estão sendo us ados c orretament e.
1.3 S eu comput ador e compi lador são bons m estres. S e você n ão esti ver certo d e como
funciona um re curso do C , escreva um p ro grama de teste que uti li z e esse r ecurso, compi le e ex ecute o pro grama, e v eja o que acon tece.
Dicas de Portabilidade
1.1 Em face de o C ser uma li ngua gem indep e ndente de ha rd war e e ampl amente dispo nível, as a pli cações escri tas em C podem ser ex ecutadas com pouca ou nenhuma modi ficação em um a gra nde varied ade de sis tema s, comput acionais.
1.2 Usar as funçõ es da bibl iot eca padr ão do C em vez de escreve r suas próprias versões sim il ares pode melhorar a portabil idad e do progr ama porque estas f unções estão colocadas em prati cam en te todas as impl ementaçõ es do ANS I C .
1.3 Embora seja possí vel escreve r pro gramas portá teis, há mui tos problemas entre as
diferentes im plementaç ões do C e os difer entes comput ado res qu e tornam a portabil idade um objetiv o difícil de ati ngir. S im plesmente esc rev er pro gramas em C não garant e a port abil idade.
Dica de Performance
1.1 Usar as funções da bibl iot eca padrão do C em vez de você escrever s uas próprias
versões sim il ares pod e melhorar o d ese mpenho do pro gram a porqu e e ssas funçõe s foram desenv olvi das cui dadosamente por p esso al eficiente.
Exercí ci os de Rev isão
1.1 P reencha as lacun as em c ada uma das s entenç as a seguir.
a) A companhia que criou o fen ômeno da comput açã o pessoal foi ___ ______ ______.
b) O comput ador que v ali dou o uso da comput ação p essoal n o comér cio e na i ndúst ria foi o
_______________ .
c) Os comput adores pro cess am dados sob o controle de um conjunto de inst ruções chamados ____________ ___ .
d) As seis uni dades lógi cas do comp utador s ão _____ __________ , _______________ ,
_______________ , _______________ , _______________ e _______________.
e) _______________ é u m caso espe cial de mul ti programa ção na qu al os u suários t êm acesso ao
comput ador atr avés de di sposi ti vos chamados termi nais.
f). As tr ês classes d e li nguagens anali sad as neste c apít ulo são _______________ , ____________
e _______________ .
g) Os programas qu e traduz em os programas em l inguagem de alt o nível pa ra li ngua gem d e máquina são cham ados _ ______________ .
h) O C é mui to conhecido c om o a li ngua gem de dese nvolvi mento do si stema operacion al
_______________ .
i) Este livro apres enta a v ersão do C ch amada ___ ____________ C , que foi padroniz ada
recent emente pelo Am eri can Nati onal S tanda rds Instit ute.
j) A lingua gem _______________ foi desenv olvi da por W irth para ensin ar programa ção
estruturada n as uni versid ades.
k) O Dep artamento de D efesa dos Est a dos Unidos (DOD) d esenvolveu a li ngua gem Ada com um
recurso chamado ______ _________ que permite a os programador es espe cif icarem m uit as
ati vidades p ar a ser em ex ecutadas em par alelo.
1.2 P reencha as lacun as em c ada uma das s entenç as a seguir sob re o ambi ent e C .
a) Os programas em C são digit ados normalm ente e m um comput ador usand o um progr ama
_______________ .
b) Em um sis tema C , um progr ama _____________ __ é ex ecutado autom ati c amente antes d e a
fase de tr aduç ão come çar .
c) Os dois t ipos m ais comuns de direti vas de um pr é - process ador são ______ _________ e
_______________ .
d) O pro grama __________ _____ combi na a saída d o compi lador com vári as funções da bibl iot eca par a p roduz ir uma im agem ex ecutável.
e) O pro grama _______________ transf ere a im a gem ex ecutável do dis co para a memória.
f) P ara ca rre gar e ex ecutar o programa compi lado mais rec entemente em um sis tema UN IX, digit e _______________ .
Respostas dos Exe rc ícios de Revisão
1.1 a) Apple
b) IBM P e rsonal C omput er
c) pro gr amas de comput a dor
d) unidade de entrad a, un idade de saí da, unidade d e memória, unidade arit mética e
lógica (A LU), unidade d e process amento cent ral ( C P U), unidade de a rmaz enamento
secundário,
e) tempo compa rtilhado ( ti mesharing).
f) li ngu a gens de máqui na , li ngua gens assembl y, li ngua gens de alt o nível.
g) compi ladores.
h) UN IX.
i) ANS I.
j) Pascal.
k) mul ti tarefa (mul ti tasking).
1.2 a) edit or.
b) pré - p rocess ador.
c) inclui ndo outros arqu i vos a serem c ompi lados, subst it uindo s ímbol os especiais por
tex to de program a.
d) li nker.
e) ca rre gador (lo ader ).
f) a. ou t.
Exercí ci os
1.3 C lassifique cada um dos seguint es it ens como h ar dware ou so ftwar e
a) C P U
b) compi lador C
c) A LU
d) processado r C
e) unidade de entr ada
f) um progr ama edit or d e te x tos
1.4 P or que você pod eria des ejar es crev er um pro gr a ma em um a li ngu a gem i ndependente
da máquina em vez de e m um a li ngua gem d epen dente da máquina? P or que uma
li ngua gem d ependent e da máquina poder ia s er mai s apropriada p ar a esc reve r
determi nados t ipos d e pr ogr amas?
1.5 P rogr amas tradutor es co mo os assemblers e comp il adores conve rtem pro gr amas de uma
li ngua gem ( chama da li nguagem - fonte ) par a outra (chamad a li ngu a gem - obj eto).
Determi ne quais d as decl a raçõ es a se gui r são ve rd adeiras e quais as f alsas:
a) Um compi lador traduz pr ogr amas em l in gua gem d e alt o nível para li n gua ge m - objeto.
b) Um assembler traduz pro gr amas em l in gua gem - fo nte para p ro gramas em l ingua gem -
objeto.
c) Um compi lador conve rte programas em l in gua ge m - fonte par a pro gr amas em
li ngua gem - obj eto.
d) Geralm ente, as li ngu a gen s de alt o nível são depen dentes da máquina.
e) Um programa em l ingua gem d e máquina ex ige tr adução antes de pode r se r ex ecutado no comput ado r.
1.6 P reencha as lacun as em c ada uma das fras e s a se guir:
a) Disposi ti vos dos quais os usuários têm acesso a sis temas computacionais t im esharin g (tempo compartilhado) s ão chamados geralm ent e _______________ .
b) Um programa d e comput ador que conv erte p ro gra mas em l ingua gem asse mbl y par a li ngua gem d e máquina é chamado ____________ ___ .
c) A unidade ló gica do comput ador, que r eceb e infor mações do ex terior pa ra uso desse comput ador, é ch amada _______________ .
d) O processo d e inst ruir o comput ador par a resolv er problemas espe cíficos é chamado
_______________ .
e) Que ti p o de li ngu a gem c omput acional usa abr evia ções como as do i diom a i nglês
para inst ruçõ es em li ngu agem de máquina? _______________
f) Quais s ão as seis uni dad e s lógicas do comput ador? _______________ .
g) Que unidade ló gic a do co mput ador envia pa ra os v ários dis posi ti vos as informações
que já for am proces sadas por ele, pa ra que essas i nformaçõ es poss am ser u ti li z adas em
um ambiente ex terno ao comput ador? _______________
h) O nome geral d e um pro gr ama que convert e pro gramas esc ritos em uma d etermi nada li ngua gem comput ac iona l para li ngu a gem de m áq uina é _______________ .
i) Que unidade ló gic a do comp utador conse rva as i nformaçõ es? _______________ .
j) Que unidade ló gic a do comput ador re ali z a os cá lculos? _______________ .
k) Que unidad e lógic a do co mput ador toma decisõ es lóg ic as? _______________ .
1) A abr eviaç ão usada no rmalm ente par a a unidad e de controle do comput a dor é
_______________ .
m) O nível de li ngu a gem comput acional mais con veniente par a o pro gr ama dor escr ever
programas f ácil e r apida mente é _____________ __ .
n) A l ingu a gem computa cional desti nada aos n e gócios m ais ut il iz ada atualmente
_______________.
o) A única li n gua gem qu e um computador pode e ntender diret amente é
_______________ cham ada do comput ador .
p) Que unidad e lógic a do comput ador coord ena as ativi dades d e todas as ou tras
unidades lógic as? _______________
1.7 Diga s e cad a uma das d e clara ções se guint es é ver dadeira ou falsa. Ex pli que suas
respost as.
a) As lin gua gens de máquin a são ger alm ente dep end entes do equipamento (m áquina) onde são ex ecutadas.
b) O tim eshari ng (tempo co mparti lhado) faz com qu e vários usuários r ealm en te
ex ecutem programas sim ul taneamente em um co mput ador.
c) C omo out ras li ngua gens de alt o nível, o C é ger alm ente consi der ado indep endente da máquina.
1.8 Anali se o si gnific ado de cada um dos se guint es no mes do ambi ente UN IX:
a) stdi n
b) stdou t
c) stderr
1.9 Qual é o principal recu rs o fornecido p elo C oncurr ent C que não está dispo nível no
ANS I C ?
1.10 P or que atualmente est á sendo dedicad a tanta at en ção à pro grama ção ori entada a
objetos em ge ral e ao C+ + em part icula r?
Le it ura Recomendada
(An 90) ANSI, A m erican Nation al S tan dards for In form ati on S ystem s ð
Program mi n g Lan gu age C (A NSI d ocum en t A NS I/I S O 9899: 1990), New York , NY:
A merican Na tiona l S tand ard s In stitu te, 1990.
Este é o documento que define o ANS I C . Ele está disponí vel para v enda n o American
Nati onal S tandards Insti tut e, 1430 Bro adwa y, N e w York, Ne w York 1001 8.
( De90) D eitei, H . M. Op erati n g S ystem s (Secon d E d ition ), Read in g, MA: Ad d ison -
Wesley Pu b li sh in g Comp an y, 1990. Um li vro - tex to para o cur so t radicional de ci ência da comput aç ão em si ste mas
operacion ais. Os C apít u los 4 e 5 apres entam uma ampl a análi se de p ro gra mação
sim ult ânea (conco rrent e).
(Ge89 ) Geh an i, N.,eW. D. Roo me, The Con cu r ren t C Programm in g Lan gu age,
S u mmit, N J: S il icon Pr ess, 1989.
Este é o li vro que de fine o Con current C ð um su perconjunt o da li n gua ge m C que
permite aos pro gr ama dores especifi car em a ex ecu ção par alela d e várias ati vidades.
In clui também um resum o do C oncurrent C + + .
(Ja89) Jaesch k e, R., P ortab il it y an d th e C Langu age, In d ian ap oli s, IN: Hayd en
B ook s, 1989.
Este livro anali sa a criaç ã o de pro gram as portáteis em C . J aeschke trabalhou nos
comi tês dos padrões AN S I e IS O.
(Ke88 ) Kern igh an , B. W . e D. M. Rit ch ie, The C Programm in g Lan guage (Se con d
E d ition ), En glew ood Cliff s, NJ: Pr en tice Hal l, 1988.
Este livro é o clássico no assunt o. Ele é ampl ament e usado em cu rsos e semi nários de C
para pro grama dores ex pe rientes e inclui um ex cele nte manual de r efe rênci a. R it chie é o
autor da li ngu a gem C e u m dos criadores do si ste ma opera cional UN IX .
(P192 ) Plau ger, P.J., The S tan dard C Library, E n glew ood Clif f s, NJ: Pr en tice
Hal l, 1992.
Define e d emons tra o uso de funções d a bibl iot eca padrão do C . P lau ger tr a balhou como
chefe do sub comi tê da bi bli ote ca, no comi tê que d esenvolveu o pad rão AN S I C . e
trabalha como coorden ad or do comi tê IS O no que diz respeito ao C.
(Ra90) Rabi n ow itz, H.,eC. S ch aap , Portabl e C , E n glew ood Clif f s, NJ: Pr en tice
Hal l, 1990.
Este livro foi desenvolvi do para um cu rso sobre p ortabili dade re ali z ado na AT&T Bell
Labo ratories. R abinowit z está no Artificial Int ell igence La borator y d a NY N EX
C orporati on, e S chaap é um di retor da Delft C ons ult ing C orporati on.
(Ri78) Ritch ie, D. M.; S . C. John son ; M. E. L esk ; e B . W. Ke rn igh an , "UNI X
T ime - S h arin g S yste m: T h e C Prog ra mmin g L an gu age" , The Bell S ystem Tech n ical
Jou rn al, Vol. 57, No. 6, Par t 2, Ju ly - Augu st 1978, pp . 1991 - 2019.
Este é um dos arti gos clá ssi cos que apres entam a l ingua gem C . Ele foi publ icado em
uma edição especial do B ell S ystem T echnical Jou rnal dedicado ao "UN IX Time -
S haring S ystem".
(Ri84) Ritch ie, D. M., " T h e UNIX Sy ste m: Th e E volu tion of th e UNIX Ti me -
S h arin g S ystem" , A T&T B ell Laboratori es Tech n ical Jou rn al, Vol. 63, No. 8, Pa rt 2,
Octob er 1984, p p . 1577 - 1593.
Um arti go clássico sobre o si stema operacion al U N IX. Este a rtigo foi publi cado em um a
edição esp ecial do Bell S ystem T echnical Journal int eiramente dedic ado ao "The UN IX
S ystem".
(Ro84) Rosle r, L., " T h e UNIX Sy ste m: Th e E v olu tion of C ð Past an d F u tu re',
A T&T B e ll Laboratori es Tech n ical Jou rn al, Vol. 63, No. 8. Pa rt 2, Oc tober 1984,
p p . 1685 - 1699.
Um ex celente arti go pa ra vir após o (Ri 78) par a o leitor int eressado em con hecer a
hist ória do C e as raíz es dos esforços p ara p adron iz ação do ANS I C . Foi p ubli cado em
uma edição especial do B ell System T echnical Jou rnal int eiramente dedica do ao "Th e
UN IX S ystem".
(St84) S trou stru p , B., " T h e UNIX Sy ste m: Da t a Abs traction i n C" , A T&T B ell
Laborator ies Tech n ical Jou rn al, Vol. 63, No. 8, Par t 2, Octobe r 1984, p p . 1701 -
1732 .
O artigo clássico que apr esenta o C++ . Foi publ ic ado em um a ediç ão espe c ial do Bell
System T echnical Journa l int eiramente dedic ado a o "The UN IX S ystem ".
(St91) S trou stru p , B., The C+ +Programm in g Lan gu age (Secon d E d ition ), Read in g,
MA: Add ison - Wesley S eries in Co mp u ter S cie n ce, 1991.
Este livro é a r efe rência que define o C+ +, um s u perconjunt o do C que inc lui vários
melhoramentos em rel aç ão ao C, espe cialmente r ecursos pa ra pro grama çã o orientada a
objetos. S troustrup desenvolveu o C+ + na AT &T Bell Lab or atories.
T on d o, C. L., e S . E. Gimp el, The C A n sw er B ook, E n glew ood Clif f s, NJ: Pren tic e
Hal l, 1989.
Este livro ím par forne ce respost as aos ex ercí cios em Kerni ghan e R it chie ( Ke88). Os
autores demonstra ram ex empl os de esti los de pro gramaç ão e demons tr a ram criati vidade
em seus métodos de resol ução dos problemas e de cisões de projeto. Tondo está na IB M
C orporati on e na Nov a U niversit y em Ft. Laude rd ale, Flórida. Gimpel é u m consult or.