paul j. deitel e harvey m. deitel -...

74
Como programar Em C Paul J. Deitel e Harvey M. Deitel

Upload: leque

Post on 13-Feb-2019

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

Como

programar

Em

C

Paul J. Deitel e Harvey M. D eitel

Page 2: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

Í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

Page 3: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 4: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 5: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 6: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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!

Page 7: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 8: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 9: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 10: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 11: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 12: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 13: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 14: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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 .

Page 15: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 16: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 17: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 18: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 19: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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 .

Page 20: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 21: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 22: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 23: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 24: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 25: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 26: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 27: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 28: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 29: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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.

Page 30: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 31: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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?

Page 32: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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

Page 33: Paul J. Deitel e Harvey M. Deitel - joinville.ifsc.edu.brjoinville.ifsc.edu.br/~rafael.berti/Programação/1. Linguagem C... · de que o livro apresenta um grande número de programas

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