Академический Документы
Профессиональный Документы
Культура Документы
1. Introduccion
IFIF v memoriX itsD ytesD plrs F F F F F F F IFPF sdenti(doresF F F F F F F F F F F F F F F F F F F IFQF gonepto de 4progrm4F F F F F F F F F F F F F IFQFIF istrutur de un progrmF F F F F F F F IFQFPF elgoritmoF F F F F F F F F F F F F F F F F IFRF gonepto de 4funin4F F F F F F F F F F F F F F IFRFIF goneptos generlesF F F F F F F F F F F F IFRFPF xomreD lor de retorno y ergumentos IFRFQF v funin min@ A F F F F F F F F F F F IFSF okens F F F F F F F F F F F F F F F F F F F F F F F IFSFIF lrs lve del g F F F F F F F F F F F IFSFPF sdenti(dores F F F F F F F F F F F F F F IFSFQF gonstntes F F F F F F F F F F F F F F F F IFSFRF yperdoresF F F F F F F F F F F F F F F F F IFSFSF seprdores F F F F F F F F F F F F F F F F IFSFTF gomentrios F F F F F F F F F F F F F F F IFTF venguje g F F F F F F F F F F F F F F F F F F F F IFUF piheros F F F F F F F F F F F F F F F F F F F F F F IFVF vetur y esritur de dtosF F F F F F F F F F F IFWF reompildor y ompildor en vinuxF F F F F F IFWFIF gompildor F F F F F F F F F F F F F F F F IFWFPF wkeF F F F F F F F F F F F F F F F F F F F IFWFQF rjndo on iliotesF F F F F F F F IFWFRF vinux vinker uirks F F F F F F F F F F F IFWFSF heugging vinux epplitionsF F F F F F IFWFTF gF F F F F F F F F F F F F F F F F F F F F PFIF PFPF PFQF PFRF PFSF PFTF PFUF PFVF QFIF QFPF QFQF QFRF pses en l resoluion de prolemsF F F F hiseo de progrmsF F F F F F F F F F F F rogrmin modulrF F F F F F F F F F F rogrmin estruturd F F F F F F F F eorem de l progrmin estruturdX epresention gr( de los lgoritmosF F higrms de )ujo F F F F F F F F F F F F F higrms de nssiEsheidermn @xEAF F F grteres @tipo hrAF F F F F F F xmeros enteros @tipo intA F F F F xmeros enteros @tipo longA F F F xmeros reles @tipo )otA F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F de un funin F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F T T U V V W W IH II II IP IP IP IQ IQ IQ IR IS IT IT IT IU IU IW IW PH
2. programacion estructurada.
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F estruturs sisF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F I F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
22
PP PQ PQ PR PS PS PT PU QT QU QU QU
35
NDICE GENERAL
P QV QW RH
QFSF xmeros reles @tipo douleA F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F QFTF hurin y visiilidd de ls vrilesX wodos de lmenmientoF F F F F F F F F F F F F F F F QFUF gonversiones de tipo implits y explits@stingA F F F F F F F F F F F F F F F F F F F F F F F
4. Constantes
RFIF gonstntes numris F F F F F F F F RFIFIF gonstntes entersF F F F F F RFIFPF gonstntes de punto )otnte RFPF gonstntes rter F F F F F F F F F RFQF gdens de rteres F F F F F F F F RFRF gonstntes de tipo inumerin F F RFRFIF guli(dor onst F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
41
RI RI RP RP RQ RQ RR
SFIF yperdores F F F F F F F F F F F F F F F F SFIFIF yperdores ritmtios F F F F F SFIFPF yperdores de signin F F F F SFIFQF yperdores inrementles F F F F SFIFRF yperdores relionles F F F F F SFIFSF yperdores lgios F F F F F F F F SFIFTF ytros operdores F F F F F F F F SFPF ixpresiones F F F F F F F F F F F F F F F F SFPFIF ixpresiones ritmtis F F F F F SFPFPF ixpresiones lgis F F F F F F F SFPFQF ixpresiones generles F F F F F F SFQF egls de preedeni y soitividd F SFRF entenis F F F F F F F F F F F F F F F F SFRFIF entenis simplesF F F F F F F F F SFRFPF enteni v nul F F F F F F SFRFQF entenis ompuests o loques TFIF fifuriones F F F F F F F F F F F F TFIFIF yperdor ondiionl F F F TFIFPF enteni if F F F F F F F F F TFIFQF enteni if FFF else F F F F F TFIFRF enteni if FFF else mltiple TFIFSF enteni swith F F F F F F TFIFTF entenis if nidds F F F TFPF fules F F F F F F F F F F F F F F F F TFPFIF enteni while F F F F F F TFPFPF enteni for F F F F F F F F TFPFQF enteni do FFF while F F F TFQF entenis rekD ontinueD goto F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
45
RS RS RT RT RU RU RV RW RW RW RW SH SH SH SH SI
52
SP SP SP SP SQ SQ SR SR SR SS SS ST SU SU SV SV SW TH TI TP TP
UFIF unteros F F F F F F F F F F F F F F F F F F F F UFIFIF gonepto de puntero o puntdor F F UFIFPF yperdores direin @8A e indirein UFIFQF eritmti de punterosF F F F F F F F F UFIFRF untero nulo F F F F F F F F F F F F F F UFPF etoresD mtries y dens de rteres F UFPFIF elin entre vetores y punteros F F UFPFPF elin entre mtries y punteros F F UFPFQF sniilizin de vetores y mtriesF F
F F F F @BA F F F F F F F F F F F F
57
NDICE GENERAL
Q F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F TQ TQ TQ TR TR TT TT TU TU TW
UFPFRF yhixegsx hi vse F F F F UFPFRFIF elgoritmo de l uruj F UFPFSF fihe ix vse F F F F F F UFPFSFIF fsqued seuenil F F F UFQF dens de rteresF F F F F F F F F F F F F UFQFIF helrin de vriles de den UFQFPF sniilizin de vriles de den UFQFQF vige hi gehixe F F F F F UFRF istruturs F F F F F F F F F F F F F F F F F F UFSF ipos de(nidos por el usurio F F F F F F F
8. Funciones.
VFIF VFPF VFQF VFRF VFSF VFTF VFUF
tilidd de ls funionesF F F F F F F F F F F F F he(niin de un funinF F F F F F F F F F F F F helrin y llmd de un funin F F F F F so de rgumentos por vlor y por refereni F v funin min@A on rgumentos F F F F F F F xmeros letoriosF F F F F F F F F F F F F F F F puniones pr dens de rteres F F F F F VFUFIF punin strlen@A F F F F F F F F F F F F F VFUFPF punin strt@A F F F F F F F F F F F F F VFUFQF puniones strmp@A y stromp@A F F F F VFUFRF punin strpy@A F F F F F F F F F F F F F VFVF unteros omo vlor de retorno F F F F F F F F VFWF so de rrys omo rgumentos un funin VFIHF unteros funionesF F F F F F F F F F F F F F F VFIIF roedimientosF F F F F F F F F F F F F F F F F F F VFIPF puniones reursivsF F F F F F F F F F F F F F F F VFIQF vlmds l sistem F F F F F F F F F F F F F F F WFIF WFPF WFQF WFRF WFSF punin printf@A F F F F F F F F F punin snf@AF F F F F F F F F F F wros gethr@A y puthr@A F F ytrs funiones de entrdGslid eeso pntll en vinux F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
71
UI UI UP UR US UT UU UU UU UU UV UV UV UW UW VH VH VI VP VR VR VS VV VW WH WI WQ
9. Funciones de entrada/salida.
81
10.El preprocesador.
IHFIF gomndo 5inludeF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHFPF gomndo 5de(neF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IHFQF gomndos 5ifdefD 5ifndefD 5elseD 5endifD 5undef F F F F F F F F F F F F F F F F F F F F F F F F IIFIF grein desde l lne de omndos F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IIFPF sntroduin l uso de l herrmient wke F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFIF qestin dinmi de l memoriF F F F F F F F F F F F F F F F F F IPFPF iqve hi pxgsyxewsixy hi ve elqxeglx hi IPFQF wtries dinmisF F F F F F F F F F F F F F F F F F F F F F F F F IPFRF vists enlzds F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFSF yiegsyxi ix vse ixveehe F F F F F F F F F F IPFSFIF helrin de un nodo F F F F F F F F F F F F F F F F F F IPFSFPF untero de eer y ol F F F F F F F F F F F F F F F F IPFSFQF il puntero nulo F F F F F F F F F F F F F F F F F F F F F F F F F F F F F wiwyse F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
88
91 96
WT WU WV WV WV WW WW WW
NDICE GENERAL
R F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F WW IHH IHI IHP IHP IHP IHP IHQ IHQ IHQ IHR IHR IHR IHT IHU IHV IHW IIH IIH III IIP IIP IIP
IPFSFRF il operdor E b de selein de un miemro F F F F F F F F IPFTF gonstruion de un list enlzd en form linel F F F F F F F F F IPFUF list de listsF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFVF yperiones lists dolemente enlzds F F F F F F F F F F F F F F IPFVFIF helrin de un list dolemente enlzd F F F F F F F IPFVFPF snsertr un elemento en un list dolemente enlzd F F IPFVFQF upresin de un elemento en un list dolemente enlzd IPFWF vse gsgvei F F F F F F F F F F F F F F F F F F F F F F F F IPFWFIF snsertr un elemento en un list irulr F F F F F F F F F F IPFWFPF upresin de un elemento en un list irulr F F F F F F F IPFIHF struturs dinmisF F F F F F F F F F F F F F F F F F F F F F F F F F i IPFIIF struturs dinmis tpis F F F F F F F F F F F F F F F F F F F F F i IPFIIFIFgyveF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFIIFPFsveF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFIIFQFeroles F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IPFIIFRFiwix hi hipsxsgsyxi F F F F F F F F F F F F F F IPFIIFSFeroles finriosF F F F F F F F F F F F F F F F F F F F F F F F F IPFIIFTFyiegsyxi ix fyvi flxely F F F F F F F F IPFIIFUFeorrido preorden F F F F F F F F F F F F F F F F F F F F F F IPFIIFVFeorrido enorden F F F F F F F F F F F F F F F F F F F F F F F IPFIIFWFeorrido postorden F F F F F F F F F F F F F F F F F F F F F F IPFIIFIHF rofundidd de un rol inrio F F F F F F F F F F F F F F F IPFIIFIIF fyv fsxeIH hi fihe F F F F F F F F F F F F
13.Ficheros
IQFIF plujosF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQFPF untero psvi F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQFQF piheros de eerF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQFRF efs psgriy F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQFSF gsii psgriy F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IQFTF igse hi geegii gehixe ix igixgsevi IQFUF vige hi geegii gehixe ix igixgsevi F IQFVF ysgsyx ix psgriy igixgsevi fsxesy F F F F F F IQFWF igse vige ix fsxesy F F F F F F F F F F F F F F F IRFIF enlisisF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IRFPF hiseoF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F IRFQF rues e integrinF F F F F F F F F F F F F F F F F F F F F F F F F F F IRFRF eri(in y depurin de un progrmF F F F F F F F F F F F F F F F IRFSF pllos ms freuentesF F F F F F F F F F F F F F F F F F F F F F F F F F F IRFTF houmentin y mntenimientoF F F F F F F F F F F F F F F F F F F F F IRFUF iv gsgvy hi she hiv ypeiF F F F F F F F F F F F F F F F IRFVF wyhy pywevi hi ispsgegsx hi yqewe IRFWF itps estleer l extitud @orreinA de un progrmF F F F F IRFIHF egyi ix ve gevsheh hiv ypei F F F F F F F F F p F F F F F F F F F F F F F F F F F F F F
115
IIS IIS IIT IIU IIV IIV IIV IIW IPH IPI IPI IPP IPP IPQ IPR IPR IPS IPS IPT
14.Gestion de calidad.
121
127
128 129
NDICE GENERAL
IVFIF or tipoF F F F F F F F F F F F F F F F F F F F F F IVFIFIF pxgsyxi hi gegi F F F IVFIFPF gomproin lfti y de dgitos IVFIFQF lireris de entrdF F F F F F F F F F F IVFIFRF vireri tringFh F F F F F F F F F F F F IVFIFSF lireri mthFh F F F F F F F F F F F F F IVFIFTF puniones letoris F F F F F F F F F F IVFIFUF vireri timeFhF F F F F F F F F F F F F F IVFIFVF hvsfFr F F F F F F F F F F F F F F F IVFPF or orden lfetioF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
F F F F F F F F F F F F F F F F F F F
130
IQH IQH IQI IQI IQI IQP IQP IQQ IQR IQR
19.Diseo de programas.
IWFIF egun el interfzF F F F IWFIFIF extoF F F F F F IWFIFPF entnsF F F F IWFIFQF snterrupionesF IWFPF egun el usoF F F F F F IWFPFIF tuegosF F F F F IWFPFPF hiseoF F F F F IWFPFQF gomuniionF IWFQF istrutur siF F F
137
Captulo 1
Introduccion
n progrm es un onjunto de rdenes pr un ordendorF ists rdenes se le deen dr en un ierto lengujeD que el ordendor se pz de omprenderF il prolem es que los lengujes que relmente entienden los ordendores resultn difiles pr nosotrosD porque son muy distintos de los que nosotros emplemos hitulmente pr hlrF isriir progrms en el lenguje que utiliz internmente el ordendor @llmdo lenguje mquin o digo mquinA odi(r en odigo mquin es un trjo duroD tnto l hor de rer el progrm omo @espeilmenteA en el momento de orregir lgn fllo o mejorr lo que se hizoF or esoD en l prti se emplen lengujes ms preidos l lenguje humnoD llmdos lengujes de lto nivelF xormlmenteD estos son muy preidos l idiom inglsD unque siguen uns regls muho ms estritsF
1.2. Identicadores.
v memori de un omputdor onst de un onjunto enorme de plrsD en el que se lmenn dtos y progrmsF vs neesiddes de memori de d tipo de dto no son homognes @por ejemploD un rter lfnumrio oup un yteD mientrs que un nmero rel on IT ifrs oup V ytesAD y tmpoo lo son ls de los progrmsF edemsD el uso de l memori mi lo lrgo del tiempo dentro inluso de un mism sesin de trjoD y que el sistem reserv o lier memori medid que l v neesitndoF gd posiin de memori puede identi(rse medinte un nmero o un direinD y ste es el modo ms sio de referirse un determind informinF xo esD sin emrgoD un sistem modo o prtioD por l nul relin nemotni que un direin de memori suele tener on el dto ontenidoD y porque !omo se h diho ntes! l direin fsi de un dto mi de ejeuin ejeuinD o inluso en el trnsurso de un mism ejeuin del progrmF vo mismo ourre on prtes onrets de un progrm determindoF hds ls itds di(ultdes pr referirse un dto por medio de su direin en memoriD se h heho hitul el uso de identi(doresF n identi(dor es un nomre simlio que se re(ere un dto o progrm determindoF is muy fil elegir identi(dores uyo nomre gurde estreh relin on el sentido fsioD mtemtio o rel del dto que representnF es por ejemploD es lgio utilizr un identi(dor llmdo T
CAPTULO 1.
INTRODUCCION
slrioruto pr representr el oste nul de un empledoF il usurio no tiene nun que preouprse de direiones fsis de memoriX el sistem se preoup por l por medio de un tlD en l que se relion d identi(dor on el tipo de dto que represent y l posiin de memori en l que est lmendoF il gD omo todos los dems lengujes de progrminD tiene sus propis regls pr elegir los identi(doE resF vos usurios pueden elegir on grn liertd los nomres de sus vriles y progrmsD teniendo siempre uiddo de respetr ls regls del lenguje y de no utilizr un onjunto de plrs reservds @keywordsAD que son utilizds por el propio lengujeF ws delnte se explirn ls regls pr elegir nomres y ules son ls plrs reservds del lenguje gF fste deir por hor que todos los identi(dores que se utilien hn de ser delrdos por el usurioD es deirD hy que indir explitmente qu nomres se vn utilizr en el progrm pr dtos y funionesD y qu tipo de dto v representr d uno de ellosF ws delnte se volver sore estos oneptosF
CAPTULO 1.
INTRODUCCION
1.3.2. Algoritmo.
n lgoritmo es un mtodo pr resolver un prolemF eunque l populrizin del trmino h slegdo on el dvenimiento de l er informtiD lgoritmo proviene de wohmmed elEuhowirizmiD mtemtio pers que vivi durnte el siglo s y lnz grn reputin por el enunido de ls regls pso pso pr sumrD restrD multiplir y dividir nmeros deimlesY l trduin l ltn del pellido en l plr lgorismus deriv posteriormente en lgoritmoF il profesor xiklus irth Einventor de slD wodulEP y yeronE titul uno de sus ms fmosos lirosD elgoritmos C istruturs de dtos a rogrmsD signi(ndonos que slo se puede llegr relizr un uen progrm on el diseo de un lgoritmo y un orret estrutur de dtosF vos psos pr l resoluin de un prolem sonX IF hiseo del lgoritmo que desrie l seueni ordend de psosD sin migeddesD que onduen l soluin de un prolem ddoF @enlisis del prolem y desrrollo del lgoritmoFA PF ixpresr el lgoritmo omo un progrm en un lenguje de progrmin deudoF @pse de odi(E inFA QF ijeuin y vlidin del progrm por l omputdorF r llegr l relizin de un progrm es neesrio el diseo previo de un lgoritmoD de modo que sin lgoritmo no puede existir un progrmF vos lgoritmos son independientes tnto del lenguje de progrmE in en que se expresn omo de l omputdor que los ejeutF in d prolem el lgoritmo se puede expresr en un lenguje diferente de progrmin y ejeutrse en un omputdor distintY sin emrgoD el lgoritmo ser siempre el mismoF esD por ejemploD en un nlog on l vid diriD un reet de un plto de oin se puede expresr en espolD ingls o frnsD pero ulquier que se el lengujeD los psos pr l elorin del plto se relizrn sin importr el idiom del oineroF in l ieni de l omputin y en l progrminD los lgoritmos son ms importntes que los lengujes de progrmin o ls omputdorsF n lenguje de progrmin es tn slo un medio pr expresr un lgoritmo y un omputdor es slo un proesdor pr ejeutrloF nto el lenguje de progrmin omo l omputdor son los medios pr otener un (nX onseguir que el lgoritmo se ejeute y se efete el proeso orrespondienteF hd l imporE tni del lgoritmo en l ieni de l omputinD un speto muy importnte ser el diseo de lgoritmosF e l ensenz y prti de est tre se dedi grn prte de este liroF il diseo de l myor de los
CAPTULO 1.
INTRODUCCION
lgoritmos requiere retividd y onoimientos profundos de l tni de l progrminF in eseniD l soluin de un prolem se puede expresr medinte un lgoritmoF vs rterstis fundmentles que dee umplir todo lgoritmo sonX n lgoritmo dee ser preiso e indir el orden de relizin de d psoF n lgoritmo dee estr de(nidoF i se sigue un lgoritmo dos veesD se dee otener el mismo resultdo d vezF n lgoritmo dee ser (nitoF i se sigue un lgoritmoD se dee terminr en lgn momentoY o seD dee tener un nmero (nito de psosF v de(niin de un lgoritmo dee desriir tres prtesX intrdD roeso y lidF in el lgoritmo de reet de oin itdo nteriormente se tendrX intrdX ingredientes y utensilios empledosF roesoX elorin de l reet en l oinF lidX terminin del pltoF
CAPTULO 1.
INTRODUCCION
IH
funionn orretmenteF n funin es pz de mntener un grn independeni on el resto del progrmD mnteniendo sus propios dtos y de(niendo muy lrmente l interfz o omuniin on l funin que l h llmdo y on ls funiones ls que llmD y no teniendo ningun posiilidd de eso l informin que no le ompeteF vs funiones de g estn implementds on un prtiulr uiddo y riquezD onstituyendo uno de los spetos ms potentes del lengujeF is muy importnte entender ien su funionmiento y sus posiiliddesF
CAPTULO 1.
INTRODUCCION
II
ontienen el digo de l funinF v primer senteni delr l vrile resultdoD que es tmin de tipo douleF hespus vendrn ls sentenis neesris pr lulr resultdo omo se elevdo exponenteF pinlmenteD on l senteni return se devuelve resultdo l progrm o funin que h llmdo powerF gonviene notr que ls vriles se y exponente hn sido delrds en l eer @primer lneA de l de(niinD y por tnto y no he flt delrrls despusD omo se h heho on resultdoF gundo l funin es llmdD ls vriles se y exponente reien sends opis de los vlores del primer y segundo rgumento que siguen l nomre de l funin en l llmdF n funin dee ser tmin delrd ntes de ser llmdF edems de l llmd y l de(niinD est tmin l delrin de l funinF se ver ms delnte dnde se puede relizr est delrinF v delrin de un funin se puede relizr por medio de l primer lne de l de(niinD de l que pueden suprimirse los nomres de los rgumentosD pero no sus tiposY l (nl dee inluirse el punto y om @YAF or ejemploD l funin power se puede delrr en otr funin que l v llmr inluyendo l lne siguienteX doule power@douleD douleAY v delrin de un funin permite que el ompildor hequee el nmero y tipo de los rgumentosD s omo el tipo del vlor de retornoF v delrin de l funin se onoe tmin on el nomre de prototipo de l funinF
1.5. Tokens
ixisten seis lses de omponentes sinttios o tokens en el voulrio del lenguje gX lrs lveF sdenti(doresF gonstntesF gdens de rteresF yperdoresF eprdoresF il ompildor desompone el texto fuente o progrm en d uno de sus tokensD y prtir de est desomE posiin gener el digo ojeto orrespondienteF il ompildor ignor tmin los sngrdos l omienzo de ls lnesF
CAPTULO 1.
INTRODUCCION
IP
1.5.2. Identicadores
n identi(dor es un nomre on el que se he refereni un funin o l ontenido de un zon de l memori @vrileAF gd lenguje tiene sus propis regls respeto ls posiiliddes de elein de nomres pr ls funiones y vrilesF in exs g ests regls son ls siguientesX IF n identi(dor se form on un seueni de letrs @minsuls de l l zY mysuls de l e l Y y dgitos del H l WAF PF il rter surydo o undersore @A se onsider omo un letr msF QF n identi(dor no puede ontener espios en lnoD ni otros rteres distintos de los itdosD omo por ejemplo @BDYFXECD etF AF RF il primer rter de un identi(dor dee ser siempre un letr o un @AD es deirD no puede ser un dgitoF SF e he distinin entre letrs mysuls y minsulsF esD ws es onsiderdo omo un identi(dor distinto de ms y de weeF TF exs g permite de(nir identi(dores de hst QI rteres de longitudF ijemplos de identi(dores vlidos son los siguientesX tiempoD distniID soeD sD veloidddelluz or el ontrrioD los siguientes nomres no son vlidosF IvlorD tiempoEtotlD dolres6D 7(nl in generl es muy onsejle elegir los nomres de ls funiones y ls vriles de form que permitn onoer simple vist qu tipo de vrile o funin representnD utilizndo pr ello tntos rteres omo sen neesriosF isto simpli( enormemente l tre de progrmin y !sore todo! de orrein y mntenimiento de los progrmsF is ierto que los nomres lrgos son ms loriosos de telerD pero en generl result rentle tomrse es peque molestiF
1.5.3. Constantes
vs vriles pueden mir de vlor lo lrgo de l ejeuin de un progrmD o ien en ejeuiones distints de un mismo progrmF edems de vrilesD un progrm utiliz tmin onstntesD es deirD vlores que siempre son los mismosF n ejemplo tpio es el nmero D que vle QFIRISWPTSRF iste vlorD on ms o menos ifrs signi(tivsD puede preer muhs vees en ls sentenis de un progrmF in g existen distintos tipos de onstntesX
CAPTULO 1.
INTRODUCCION
IQ
IF gonstntes numrisF on vlores numriosD enteros o de punto )otnteF e permiten tmin onsE tntes otles @nmeros enteros en se VA y hexdeimles @se ITAF PF gonstntes rterF gulquier rter individul enerrdo entre pstrofos @tl omo 99D 99D 9A9D 9C9D etFA es onsiderdo por g omo un onstnte rterD o en relidd omo un nmero entero pequeo @entre H y PSSD o entre EIPV y IPUD segn los sistemsAF ixiste un digoD llmdo digo egssD que estlee un equivleni entre d rter y un vlor numrio orrespondienteF QF gdens de rteresF n onjunto de rteres lfnumrios enerrdos entre omills es tmin un tipo de onstnte del lenguje gD omo por ejemploX 4espio4D 4isto es un den de rteres4D etF RF gonstntes simlisF vs onstntes simlis tienen un nomre @identi(dorA y en esto se preen ls vrilesF in emrgoD no pueden mir de vlor lo lrgo de l ejeuin del progrmF in g se pueden de(nir medinte el preproesdor o por medio de l plr lve onstF in gCC se utiliz preferentemente est segund formF ws delnte se vern on ms detlle estos distintos tipos de onstntesD s omo ls onstntes de tipo enumerinF
1.5.4. Operadores.
vos operdores son signos espeilesD veesD onjuntos de dos rteresD que indin determinds operiones relizr on ls vriles yGo onstntes sore ls que tn en el progrmF il lenguje g es prtiulrmente rio en distintos tipos de operdoresX ritmtios @CD ED BD GD 7AD de signin @aD CaD EaD BaD GaAD relionles @aaD `D bD `aD baD 3aAD lgios @88D ||D 3A y otrosF or ejemploD en l senteniX espio a espioiniil C HFS B elerion B tiempo B tiempoY pree un operdor de signin @aA y dos operdores ritmtios @C y BAF min los operdores sern vistos on muho ms detlle en prtdos posterioresF
1.5.5. separadores
vos seprdores onstn deX uno o vrios espios en lnoD tuldoresD rteres de nuev lne @denomindos 4espios en lno4 en onjuntoAD y tmin los omentrios esritos por el progrmdor se emplen pr seprr los dems tokensY por lo dems son ignordos por el ompildorF u ppel dole es yudr l ompildor desomponer el progrm fuente en d uno de sus tokens y yudr l progrmdor l her el progrm ms legileF is onveniente introduir espios en lno inluso undo no son estritmente neesriosD on ojeto de mejorr l legiilidd de los progrmsF
1.5.6. Comentarios
il lenguje g permite que el progrmdor introduz omentrios en los (heros fuente que ontienen el digo de su progrmF vos omentrios son ignordos por el ompildor por lo ul l misin de los omentrios es servir de expliin o lrin sore mo est heho el progrmD de form que pued ser entendido por un person diferente @o por el propio progrmdor lgn tiempo despusAF il progrm funion extmente igul sin ellosF vos rteres @GBA se emplen pr iniir un omentrio introduido entre el digo del progrmD el omentrio termin on los rteres @BGA todo lo que este entre ellos es ignordo por el ompildorF xo se puede introduir un omentrio dentro de otroF odo texto introduido entre los smolos de omienzo @GBA y (nl @BGA de omentrio son siempre ignordos por el ompildorF or ejemploX vrileI a vrilePY GB in est lne se sign vrileI el vlor ontenido en vriE leP BG
CAPTULO 1.
INTRODUCCION
IR
vos omentrios pueden tur tmin omo seprdores de otros tokens propios del lenguje gF n fuente freuente de errores no espeilmente difiles de detetr l progrmr en gD es el olvidrse de errr un omentrio que se h ierto previmenteF il lenguje exs g permite tmin otro tipo de omentriosD tomdo del gCCF odo lo que v en ulquier lne del digo detrs de l dole rr @GGA y hst el (nl de l lneD se onsider omo un omentrio y es ignordo por el ompildorF r omentrios ortosD est form es ms mod que l nteriorD pues no hy que preouprse de errr el omentrio @el (n de lne t omo ierreAF gomo ontrprtidD si un omentrio oup vris lnes hy que repetir l dole rr @GGA en d un de ls lnesF gon este segundo proedimiento de introduir omentriosD el ltimo ejemplo podr ponerse en l formX vrileI a vrilePY GG in est lne se sign vrileI el vlor ontenido en vriE leP
1.6. Lenguaje C
gules son ls rterstis que hen tn populr este lenguje de progrmin e idneo omo primer lenguje de progrmin en ls rrers profesionles de progrmdor @de pliiones y de sistemsA y del ingeniero de softwrec odemos itr lguns muy soreslientesX is muy portle @trnsportle entre un grn nmero de pltforms hrdwre y pltforms sofwreD sistems opertivosAF ixisten numerosos ompildores pr todo tipo de pltforms sore los que orrren los mismos proE grms fuentes o on ligers modi(ionesF is verstil y de jo nivelD por lo que es idneo pr tres reltivs l progrmin del sistemF e pesr de ser un exelente lenguje pr progrmin de sistemsD es tmin un e(iente y potente lenguje pr pliiones de propsito generlF is un lenguje pequeoD por lo que es reltivmente fil onstruir ompildores de g y dems es tmin fil de prenderF odos los ompildores suelen inluir potentes y exelentes iliotes de funiones omptiles on el estndr exsF vos diferentes frintes suelen dir sus ompildores funionliddes diverss que umentn l e(ieni y poteni de los mismos y onstituye un notle ventj respeto otros lengujesF il lenguje present un interfz exelente pr los sistems opertivos nix y indowsD junto on el y reditdo vinuxF is un lenguje muy utilizdo pr l onstruin deX sistems opertivosD ensmldoresD progrms de omuniionesD intrpretes de lengujesD ompildores de lengujesD editores de textosD ses de dtosD utiliddesD ontroldores de redD etF g es un lenguje ompildoX ntes de ejeutr un progrm esrito por nosotrosD suministrmos su odigo fuente @en un (hero on extension F un ompildor de gF il ompildor lee y nliz todo el progrmF i el progrm est orretmente esrito segun l de(niion del lengujeD el ompildor gener un nuevo (hero on su trduion odigo de mquinD y si noD muestr los errores que h detetdoF r ejeutr el progrm utilizmos el nomre del (hero generdoF i no modi(mos el odigo fuenteD no he flt que lo ompilemos nuevmente pr volver ejeutr el progrmX st on volver ejeutr el (hero generdo por el ompildorF r ejeutr sumtorioFD por ejemploD primero hemos de usr un ompildor pr produir un nuevo (hero llmdo sumtorioD luego podemos ejeutr el progrm esriiendo sumtorio en l line de ordenes nixF
CAPTULO 1.
INTRODUCCION
IS
v prinipl ventj de ompilr los progrms es que se gn en veloidd de ejeuionD y que undo el progrm se ejeut est ompletmente trduido odigo de mquin y se horr el proeso de trduion simultne que onllev interpretr un progrmF eroD demsD omo se trdue odigo de mquin en un fse independiente de l fse de ejeuionD el progrm trdutor puede dedir ms tiempo intentr enontrr l mejor trduion posileD l que proporione el progrm de odigo de mquin ms rpido @o que onsum menos memoriAF in g l indention @espiosD sltos de line y tuldoresA es solutmente super)uX indentmos los progrms unimente pr herlos ms legilesF in g se se donde empiez y donde un loque porque ste est enerrdo entre un llve iert @{A y otr errd @}A y d senteni est otd por omills @YAD pero no se pone despues de errr un llve @}AD hy un exepin est normX ls onstruiones strutD uy llve de ierre dee ir seguid de un punto y omF uiz hys reprdo en que ls lines que empiezn on 5inlude son espeiles y que ls trtmos de form diferenteX no se puede jugr on su formto del mismo modo que on ls demsX d senteni 5inlude dee oupr un line y el rter 5 dee ser el primero de l l lineF il ompildor es el elemento ms rterstio del lenguje gF gomo y se h diho nteriormenteD su misin onsiste en trduir lenguje de mquin el progrm g ontenido en uno o ms (heros fuenteF il ompildor es pz de detetr iertos errores durnte el proeso de ompilinD envindo l usurio el orrespondiente mensje de errorF il preproesdor es un omponente rterstio de gD que no existe en otros lengujes de progrminF il preproesdor t sore el progrm fuenteD ntes de que empiee l ompilin propimente dihD pr relizr ierts operionesF n de ests operiones esD por ejemploD l sustituin de onstntes simlisF esD es posile que un progrm hg uso repetids vees del vlor QFIRISWPTSRD orrespondiente l nmero F is posile de(nir un onstnte simli llmd s que se de(ne omo QFIRISWPTSR l omienzo del progrm y se introdue luego en el digo d vez que he fltF in relidd s no es un vrile on un determindo vlorX el preproesdor heque todo el progrm ntes de omenzr l ompilin y sustituye el texto s por el texto QFIRISWPTSR d vez que lo enuentrF vs onstntes simlis suelen esriirse ompletmente on mysulsD pr distinguirls de ls vrilesF il preproesdor reliz muhs otrs funiones que se irn viendo medid que se vy explindo el lengujeF vo importnte es reordr que t siempre por delnte del ompildor @de h su nomreAD filitndo su tre y l del progrmdorF xosotros usremos un ompildor onreto de gX gF u form de uso ms si es estX g (heroF Eo (hero ejeutle v opion Eo es revitur de outputD es deir slidD y ell le sigue el nomre del (hero que ontendr l trduion odigo mquin del progrmF hees tener presente que diho (hero solo se gener si el progrm g est orretmente esritoF gon ojeto de mntener el lenguje lo ms senillo posileD muhs sentenis que existen en otros lengujesD no tienen su orrespondiente ontrprtid en gF or ejemploD en g no hy sentenis pr entrd y slid de dtosF is evidenteD sin emrgoD que st es un funionlidd que hy que urir de lgun mnerF il lenguje g lo he por medio de funiones preprogrmds que se venden o se entregn junto on el ompildorF ists funiones estn grupds en un onjunto de lirers de digo ojetoD que onstituyen l llmd lirer estndr del lengujeF v llmd dihs funiones se he omo otrs funiones ulesquierD y deen ser delrds ntes de ser llmds por el progrm @ms delnte se ver mo se he esto por medio de l diretiv del preproesdor 5inludeAF
1.7. Ficheros
il digo de ulquier progrm esrito en g se lmen en uno o ms (herosD en el diso del ordendorF v mgnitud del progrm y su estrutur intern determin o onsej sore el nmero de (heros utilizrF gomo se ver ms delnteD l divisin de un progrm en vrios (heros es un form de ontrolr su mnejo y su modulriddF gundo los progrms son pequeos @hst SHIHH lnes de digoAD un solo (hero suele strF r progrms ms grndesD y undo se quiere mntener ms independeni entre los distintos suprogrmsD es onveniente reprtir el digo entre vrios (herosF eurdese dems que d vez que
CAPTULO 1.
INTRODUCCION
IT
se introdue un mio en el progrm hy que volver ompilrloF v ompilin se reliz nivel de (heroD por lo que slo los (heros modi(dos deen ser ompildos de nuevoF i el progrm est reprtido entre vrios (heros pequeos est operin se reliz muho ms rpidmenteF eurdese tmin que todos los (heros que ontienen digo fuente en g deen terminr on l extensin @FAD omo por ejemploX produtoFD soluionFD etF
CAPTULO 1.
INTRODUCCION
IU
1.9.2. Make.
v myor prte del desrrollo de progrms neesit de vrios rhivos fuenteD por l simple rzon de que no es prtio usr miles de lines de odigo en un solo rhivoF gomo un proyeto grnde puede inluir muhos rhivos fuenteD seri un desperdiio reompilr todo si solo se h modi(do un rhivo de un progrm que y h sido ompildo @sin emrgoD esto ourre si se us g en l line de omndosAF v utilidd mke eler el desrrollo de softwre determinndo utomtimente que rhivos deen ser reompildos despues de her miosF wke tmien elimin l neesidd de esriir lines de omndo lrgs pr reonstruir los progrmsD y que lmen todos los omndos neesrios y los invo undo se neesitnF eunque wke tiene un funionliddD su uso es stnte simpleF wke est sdo en ojetivosD los ules son onjuntos de direiones pr mntener omponentes @ojet (lesD lirriesD etFA de un progrmF vos ojetivos espei(n el nomre del omponente rstrerD un list de rhivos fuente y otros ojetivos de los que depende el omponenteD y un list de omndos pr reonpilr el ojetivoF vs instruiones pr onpilr un omponente se llmn reglsD y l list de rhivos de los que depende el omponente se llmn dependenisF gundo se llm mke sore un ierto ojetivoD heque que que ls dependenis de los ojetivos se omprueenF i lgun de ls dependenis mio desde l ultim ompilionD se ejeutn ls regls del ojetivoF wke tmien reunstruye reursivmente ulquier rhivo ntiudo en l list de dependenisF isto es extremdmente onveniente en un proyeto grnde y modulrF wke us ojetivos y regls en un rhivo llmdo wke(le or mke(leF iste rhivo puede ontener ulquier numero de ojetivosF i mke se inii sin omndosD utomtimente intent reonstruir el primer ojetivo que enuentrF gonsider the following mke(leX progrmX (leIF (lePF grphisF g E (leIF (lePF g (leIFo (lePFo grphisF Elhv Eo progrm grphisFX grphisF drwF g E grphisF drwF r rs grphisF grphisFo drwFo rnli grphisF iste rhivo desrie omo ompilr un ejetule llmdo progrm y un iliote estti llmd grpE hisFF progrm depends on (leIFD (lePFD nd grphisF E if ny of these hve een modi(ed sine progrm ws lst uiltD mke will reuild progrmF grphisF is lso trgetD nd it depends on grphisF nd drwFF he indented lines under eh trget re rulesF sf progrm needs to e reuiltD wke will exeute the two rules tht hve een providedF hese lines must e indented with t hrtersY spes will not workF wke is rther prtiulr out syntxF he mke utility provides onvenient ess to environment vrilesF wke(les n setD omineD nd retrieve environment vriles s text stringsD nd inlude these vriles in trgets nd rulesF st is ommon to use the vrile gg to represent the g ompiler ommnd @whih in our se is gAD gpveq to represent the stndrd set of ommnd line options to pss to the ompilerD nd vhpveq to represent the options to pss to the linker @whih is normlly just the g ompilerD ut sometimes expliitly invoked with the ld ommndAF por exmpleD the previous mke(le n e rewritten s follows to tke dvntge of vrile sustitutionX ggag gpveqaEyP E Ell Epednti vsfaElhv Elpthred progrmX (leIF (lePF grphisF 6@ggA 6@gpveqA E (leIF (lePF 6@ggA (leIFo (lePFo grpE hisF 6@vsfA Eo progrm grphisFX grphisF drwF 6@ggA 6@gpveqA E grphisF drwF r rs grphisF grpE hisFo drwFo rnli grphisF
CAPTULO 1.
INTRODUCCION
IV
seprte (le nd is never diretly linked into n pplitionF hred lirries re linked t runtime y the operting system9s dynmi linkerF tti lirries re extremely simple to rete nd useF yne you hve reted the ojet (les you wish to pkge s lirryD omine them with the r ommndX 6 r rs somethingF (leIFo (lePFo (leQFo r is simple rhiving utilityF he r option spei(es n operting modeX it tells r to dd the given (les to the rhiveD repling ny existing (les with the sme nmesF spei(es tht the rhive should e reted if it does not lredy existF pinllyD s informs r tht this is n rhive of ojet (les @ieD stti lirryA nd tht symol tle should e ddedF yptionllyD you n leve out the s )g nd use the rnli utility to dd the symol tleY the resulting (le will e equivlentF o use stti lirryD pss it to g just s you would pss norml ojet (leF g will reognize the F (le extension s n rhive of ojet (lesF hred lirries re it more omplex to mnge thn stti lirriesD ut they re worth the extr e'ort in mny sesF hred lirries re not stored in exeutles tht use themY they re independent (lesD nd they re linked into exeutles t runtimeF sn mny ses shred lirries n e updted without reompiling progrms tht depend on themF st is possile for the operting system to lod shred lirry into memory oneD for use y multiple pplitionsF hred lirries follow very spei( nming sheme designed to keep inomptile versions seprteF ih shred lirry should e given unique se nme @or sonmeA of the form lipoofrFsoFnD where n is mjor relese numerF he mjor relese numer should e inremented whenever kwrds omptiility is rokenF winor version nd relese numers re dded to the end of the se nmeD so tht the (nl nme looks something like lipoofrFsoFPFIFQF he ldon(g utility is responsile for imposing snity upon the vrious versions of lirry tht might existF st serhes for lirries in ertin set of diretoriesD usully spei(ed in GetGldFsoFonf or the environment vrile vh vsfe erF por eh lirry it (nds with nme in the form liomethingFsoFmFnFr D it retes symoli link for liomethingFsoFmF sf two lirries hve the sme se nmeD ldon(g retes symoli link to the lter versionF epplitions referene these symoli links rther thn the full nmes of the lirriesF sf new relese of lirry is instlledD the symoli link is updted y ldon(g nd ll pplitions tht use the lirry will utomtilly referene the new versionF hred lirries re simple to reteF pirstD ompile your soures into ojet (les with the Efsg )g @this uses g to output positionEindependent odeD whih is more pltle to the dynmi linkerAF henD link with g9s Eshred )gF ou will lso need to inform the linker of the sonme you wish to useF o see how this is doneD tke look t the following exmpleX 6 g Efsg E fooF rF 6 g Eshred ElDE sonmeDlipoofrFsoFI fooFo rFo Eo lipoofrFsoFIFIFI 6 instll Em HUSS lipoofrFsoFIFIFI GusrGli 6 ldon(g 6 ln Es GusrGliGlipoofrFsoFI GusrGliGlipoofrFso he (rst ommnd produes the ojet (les fooFo nd rFoD nd the seond retes the shred lirryF xote the use of the El )g to send options diretly to the linkerF he lirry is then instlled to the stndrd lotion with resonle set of permissions @noteX this step will require write permission to GusrGliAD nd ldon(g is exeuted to set up the proper symoli linkF pinllyD nother symoli link is reted to the se nme of the lirryF his llows the lirry to e linked into progrm with the Elpoofr g optionF hred lirries re extremely verstileF yne they re linked into n pplitionD they t s prt of the progrmD exept tht the tul linking is done t runtimeF hred lirries n lso e mnully loded nd essed vi the dlopen g interfeF o link properly instlled shred lirry into n pplitionD use g9s El optionF por instneD to link with GusrGliGlipoofrFso @whih is symoli link to GusrGliGlipoofrFsoFIAD speify ElpoofrF sf the lirry resides in nonstndrd diretory @suh s the lirries in GusrGIITGliAD use the Ev option @EvGusrGIITGliAF hen the pplition is runD the runtime linker ttempts to lote the lirry @y nmeA nd mth its symols with the symols the pplition thinks it should hveF sf ny symols re missingD the linker reports n errorD nd the pplition fils to lodF ytherwiseD the shred lirry eomes prt of the pplitionF dlopenGdlsym is nother pproh to using shred lirriesF his interfe llows shred ojet (les to e opened nd essed mnullyF por exmpleD suppose tht lifooFso is shred ojet (le ontining funtion rF he following exmple will open the (le nd ll the funtionX 5inlude `dlfnFhb GB dlfnFh provides the dlopen@A interfe BG int min@A { void BhndleY void @BrA@voidAY GB ypen the lirry nd sve the hndle BG
CAPTULO 1.
INTRODUCCION
IW
hndle a dlopen@4lifooFso4DvhxyAY if @hndle aa xvvA { GB dlerror@A returns n error messge BG printf@4dlopen filedX 7sn4Ddlerror@AAY return IY }Y GB ettempt to (nd the ddress of r@A BG r a dlsym@hndleD4r4AY if @r aa xvvA { printf@4dlsym filedX 7sn4Ddlerror@AAY return IY }Y GB qoodD we found r@AD so ll it BG r@AY GB glose lifooFso BG dllose@hndleAY return HY } he vh xy )g in dlopen mens tht dlopen should ttempt to resolve ll symols tht the shred lirry depends on immeditely @shred lirries n depend on other lirriesD so this is serious onernAF he other option is vh veD whih instruts the dynmi linker to resolve symols s they re enounE teredF ometimes dynmilly loded lirry needs to ess symols in the prent pplitionF o llow these symols to e resolvedD ompile the pplition with the Erdynmi option nd the !exportEdynmi linker option @the orret syntx is EwlD!exportEdynmiAF he Erdynmi option llows unresolved symols in shred lirry to e mthed with symols in the prent pplitionD nd the !exportEdynmi option instruts the linker to generte extr symol informtion suitle for this purposeF
CAPTULO 1.
INTRODUCCION
PH
foo st is good ide to disle optimiztion when deugging @tht isD do not use the Eyn ompiler optionAF elthough g nd gd llow you to deug optimized exeutlesD the results might e it surprising @sine optimiztionD y de(nitionD hnges the internls of progrmAF elthough the EfomitEfrmeEpointer ompiler option is sometimes used in the hope of improving performneD this option is inomptile with deugging in most ses @s it uses the ompiler to omit the instrutions tht usully keep trk of n importnt piee of informtionAF gompiling n exeutle for deugging will inrese its size nd most likely derese its performneY exeutles intended for puli relese should not e ompiled for deuggingF qx gd is the primry deugger for vinuxF st llows you to singleEstep progrmsD inspet vriles while progrms re runningD nd nlyze ore (les @memory dump (les generted utomtilly when pplitions rshD 'etiontely dued ore piesAF gd is n extremely powerful toolD ut its interfe is likely to throw eginners for loopF gd is textEsed intertive deuggerF yne progrm is loded into the deuggerD gd epts ommnds to diret the progrm9s opertionF here re lots of ommndsD ut there is lso nie online help filityF imply type help for n indexF
1.9.6. CVS.
gollortion is the only wy to get lrge progrmming tsk omplished in ny resonle mount of timeD ut oordintion n eome di0ult with even two or three developers working on projetF sn prtiulrD re must e tken to ensure tht one progrmmer9s work does not overwrite nother9sF st is lso importnt to keep development nd relese versions of piee of softwre seprteF hese prolems re ddressed y version ontrol softwreF he pilities of these tools vryD ut we will disuss the most populr toolD the gonurrent ersion ystem @gAF g is tool for mnging repositoriesD whih re simply diretory trees of soure ode with it of extr ontrol informtionF ih projet in repository is lled moduleF wodules re initilly imported into the repositoryD nd dditionl (les my e susequently ddedF sndividul developers my hek out modulesD mke hngesD nd ommit the updted (les k into the mster soure repository when they re (nishedF g keeps reord of the hnges mde to eh (leD nd llows individul (les or entire trees to e tgged with version designtionsF hevelopers n lso rete seprte rnhes of soure tree if they intend to mke sustntil nd possily dngerous modi(tionsF uessful rnhes n lter e merged k into the min soure treeF ht if two developers mke @on)itingA modi(tions to the sme (lec ome version ontrol systems physilly prevent this with strong (le lokingD ut g llows itF sn the se of on)itD g will prevent the most reent modi(tion from eing ommitted to the repositoryD ut insted will provide the developer with rejet (le listing the soure ode lines in questionF he developer must then merge his hnges with the other developer9s hnges y hnd nd then reEommit the (leF his would oviously e ontinuous hssle without it of oordintion etween developersY g does not reple ommunition nd mngementF st is est to void on)its in th (rst pleD ut sometimes they re inevitleF g is free toolD nd this hs plyed role in its lmost universl eptne in the vinux development ommunityF pree softwre would not e where it is tody without gF e frief g utoril e will now work through omplete exmple of using g to mnge smll projetF uppose tht we hve four (lesX wke(leD fooFD fooFhD nd minFF hese onstitute smll progrmE ming projetD ut their ontents re not relevnt for our purposesF e would like to rete g module out of these (les so tht other developers n join inF por now we9ll ssume tht ll developers hve lol ess to the mhine hosting the repositoryD though it is possile to use g remotelyF greting g wodule he (rst step is to rete repositoryD if one does not lredy existF e repository n host ny numer of modulesD nd it is ommon for softwre tems to use one entrl repository for ll of their projets @this filittes routine kupsD mong other thingsAF o rete repositoryD set the gyy environment vrile to suitle lotion nd type vs initF his will rete the g repository diretory nd initilize severl importnt ontrol (lesF he lotion of gyy is not espeilly importntD ut mke sure tht your ount hs write ess to itF sf repository lredy existsD mke sure the gyy environment vrile is set to the repository9s lotionF 6 export gyyaGhomeGoverodeGvs 6 vs init rning ho not rete g repository in the sme diretory s projet you wish to dd to the repositoryF his would result in n in(nite loopF g is remrkly rinded out some thingsD ut useful tool nonethelessF xow we need to import the initil set of soure (les to the repositoryF essuming tht we re in the projet9s diretory nd tht gyy is set orretlyD we use the ommnd vs import Em 4ome desriptive omE
CAPTULO 1.
INTRODUCCION
PI
ment4 projnme vendor lelD where projnme is the nme of the projet @foor for nowAD vendor is the nme of the orgniztion responsile for the projet @whih doesn9t mtter too muh to usAD nd lel is n indition of the softwre9s progressD suh s initil or strtF his ommnd will opy the projet9s (les into the g repository under the given projet nmeF he projet is now ontrolled y gD nd the originl (les my e sfely deletedF por the purposes of our tutorilD the orret import ommnd is vs import Em 4g ixmple4 exmple xyz strtF his must e exeuted from the diretory ontining the four soure (lesD nd gyy must point to the initilized repositoryF 6 vs import Em 4g ixmple4 exmple xyz strt x x x x exmpleGfooFh exmpleGfooF exmpleGminF exmpleGwke(le xo on)its reted y this import orking ith g rojet yne projet is in gD multiple developers n sfely ess the projet9s (les without too muh fer of olliding with one notherF ih developer should mke his own working opy of the projet @with the vs hekout ommndAF por our tutorilD swith to new diretory nd type vs hekout exmpleF g will opy the four exmple (les to new diretory lled exmpleF ou my now mke ny modi(tions you wish to the (lesD nd other developers min join in y heking out their own opies of the projetF rning ry to void editing (les in g repository diretlyF his defets the whole purpose of gD nd doing so is likely to use mssive hedhes for the next person to ommit his working opy to the repositoryF gEontrolled (les re mrked redEonly to help prevent this from hppeningF g is not designed to e nuisne @quite the oppositeD tullyAD ut it requires it of oopertion from its usersF hen you hve (nished mking modi(tions to projet9s (lesD you should ommit them k into the repository for everyone else to useF por exmpleD suppose tht we hve orreted n error in fooFD nd we wnt to integrte this modi(tion k into the mster soure treeF prom the diretory ontining our working opyD we would type vs ommit Em 4hesription of hngesF4F 6 vs ommit Em 4pixed typoF4 vs ommitX ixmining F gheking in fooFY GhomeGoverodeGtestvsGexmpleGfooFDv `! new revisionX IFIY previous revisionX IFH done fooF fut wht if someone hs mde on)iting modi(tions to the mster opy of fooFc st would e d to simply overwrite their hngesY they my hve spent lot of time on themF g oviously doesn9t know how to rewrite soure ode to integrte hnges @eyond ertinD very limited extentAD so we must intervene nd merge the hnges ourselvesF he trnstion might look something like thisX time intervlF ixeuted properlyD this fools the humn eye into pereiving smooth movement rther thn disrete stepsF ih sreen updte in n nimtion sequene is lled frmeD nd the numer of frmes drwn in set period of time is lled the frmerteF he qulity of n nimtion depends oth on the frmerte nd on the distne eh nimted ojet moves etween frmesF pooling the eye is not esyF sf itmp moves too quikly or ompleted frmes re not displyed frequently enoughD the illusion will egin to rek downD nd the viewer will egin to see eh frme s seprte imgeF his jittery nimtion n eome very distrtingD nd so it must e voided t ll ostsF
Captulo 2
programacion estructurada.
2.1. Fases en la resolucion de problemas.
il proeso de resoluin de un prolem on un omputdor ondue l esritur de un progrm y su ejeuin en l mismF eunque el proeso de diser progrms es un proeso retivoD se puede onsiderr un serie de fses o psos omunesD que generlmente deen seguir todos los progrmdoresF vs fses de resoluin de un prolem on omputdor sonX enlisisF il prolem se nliz teniendo presente l espei(in de los requisitos ddos por el liente de l empres o por l person que enrg el progrmF hiseoF n vez nlizdo el prolemD se dise un soluin que onduir un lgoritmo que resuelv el prolemF godi(in @implementinAF v soluin se esrie en l sintxis del lenguje de lto nivel @por ejemploD gA y se otiene un progrmF ijeuinD veri(in y depurinF il progrm se ejeutD se omprue rigurosmente y se eliminn todos los errores @denomindos ugs D en inglsA que puedn preerF wntenimientoF il progrm se tuliz y modi(D d vez que se neesrioD de modo que se umpln tods ls neesiddes de mio de sus usuriosF houmentinF isritur de ls diferentes fses del ilo de vid del softwreD esenilmente el nE lisisD diseo y odi(inD unidos mnules de usurio y de refereniD s omo norms pr el mntenimientoF vs dos primers fses onduen un diseo detlldo esrito en form de lgoritmoF hurnte l terer etp @odi(inA se implement el lgoritmo en un digo esrito en un lenguje de progrminD re)ejndo ls ides desrrollds en ls fses de nlisis y diseoF v fse de ompilin y ejeuin trdue y ejeut el progrmF in ls fses de veri(in y depurin el progrmdor us errores de ls etps nteriores y los eliminF gompror que mientrs ms tiempo se gste en l fse de nlisis y diseoD menos se gstr en l depurin del progrmF or ltimoD se dee relizr l doumentin del progrmF n lgoritmo es un mtodo pr resolver un prolem medinte un serie de psos preisosD de(nidos y (nitosF grterstis de un lgoritmoX preiso @indir el orden de relizin en d psoAD de(nido @si se sigue dos veesD otiene el mismo resultdo d vezAF (nito @tiene (nYun nmero determindo de psosAF
PP
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PQ
n lgoritmo dee produir un resultdo en un tiempo (nitoF vos mtodos que utilizn lgoritmos se deE nominn mtodos lgortmiosD en oposiin los mtodos que implin lgn juiio o interpretin que se denominn mtodos heurstiosF vos mtodos lgortmios se pueden implementr en omputdorsY sin emrgoD los proesos heurstios no hn sido onvertidos filmente en ls omputdorsF in los ltimos os ls tnis de inteligeni rti(il hn heho posile l implementin del proeso heurstio en omputdorsF ijemplos de lgoritmos sonX instruiones pr montr en un iiletD her un reet de oinD otener el mximo omn divisor de dos nmerosD etF vos lgoritmos se pueden expresr por formuE lsD digrms de pujo o xE y pseudodigosF ist ltim representin es l ms utilizd en lengujes estruturdos omo gF
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PR
d un de ls ules ejeut un ni tividd o tre y se odi(n independientemente de otros mduE losF gd uno de estos mdulos se nliznD odi(n y ponen punto por seprdoF gd progrm ontiene un mdulo denomindo progrm prinipl que ontrol todo lo que suedeY se trns(ere el ontrol suE mdulos @posteriormente se denominrn suprogrmsAD de modo que ellos puedn ejeutr sus funionesY sin emrgoD d sumdulo devuelve el ontrol l mdulo prinipl undo se hy ompletdo su treF i l tre signd d sumdulo es demsido omplejD ste deer romperse en otros mdulos ms pequeosF il proeso suesivo de sudivisin de mdulos ontin hst que d mdulo teng solmente un tre espe( que ejeutrF ist tre puede ser entrdD slidD mnipulin de dtosD ontrol de otros mdulos o lgun ominin de stosF n mdulo puede trnsferir temporlmente el ontrol otro mduloY sin emrgoD d mdulo dee eventulmente devolver el ontrol l mdulo del ul se reie origiE nlmente el ontrolF vos mdulos son independientes en el sentido en que ningn mdulo puede tener eso direto ulquier otro mdulo exepto el mdulo l que llm y sus propios sumdulosF in emrgoD los resultdos produidos por un mdulo pueden ser utilizdos por ulquier otro mdulo undo se trns(er ellos el ontrolF hdo que los mdulos son independientesD diferentes progrmdores pueden trjr simultnemente en diferentes prtes del mismo progrmF isto reduir el tiempo del diseo del lgoritmo y posterior oE di(in del progrmF edemsD un mdulo se puede modi(r rdilmente sin fetr otros mdulosD inluso sin lterr su funin priniplF v desomposiin de un progrm en mdulos independientes ms simples se onoe tmin omo el mtodo de divide y veners @divide nd onquerAF e dise d mE dulo on independeni de los demsD y siguiendo un mtodo sendente o desendente se llegr hst l desomposiin (nl del prolem en mdulos en form jerrquiF puniones is un onjunto de sentenis que relizn un tre espe( y puede ser de(nido medinte HDIDFFFDn prmetrosF
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PS
vos mdulos se disen de modo desendente gd mdulo se odi( utilizndo ls tres estruturs de progrmin sisX seueniD selein y repetiin v progrmin estruturd se uxili de los reursos strtos en lugr de los reursos onretos de que dispone un determindo lenguje de progrminF hesomponer un progrm en trminos de reursos strtosD segn hijkstrD onsiste en desomponer un determind in omplej en trminos de un nmero de iones ms simples pes de ejeutrls o que onstituyn instruiones de omputdors disponilesF il diseo desendente @topEdownA es el proeso medinte el ul un prolem se desompone en un serie de niveles o psos suesivos de re(nmiento @stepwiseAFv metodolog desendente onsiste en efetur un relin entre ls suesivs etps de estruturin de modo que se relionsen uns on otrs medinte entrds y slids de informinF is deirD se desompone el prolem en etps o estruturs jerrquisD de form que se puede onsiderr d estrutur desde dos puntos de vistX qu hec y mo lo hec
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PT
om de desiines y mi(in
gint mgnti
hiso mgntio
gonetor de pgin
vnes de )ujo
enotin
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PU
il uso de )ehs signi( que l j no neesit ser esrit dejo de su predeesorF in emrgoD usr demsido de est )exiilidd ondue digrms de )ujo omplidos e ininteligilesF
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PV
esultdo a PBQ honde edd y resultdo son vriles de tipo entero y esttur de tipo rel que se supone delrds previmenteF n signin tiene tres prtesD un vrileD el signo igul y l expresin uyo vlor se sign l vrileF v vrile siempre v l izquierd del igulD mientrs que l expresin siempre estr l derehF ijemplosX interoX D a IH aBPCV in este ejemploD l vrile ontendr el vlor PVF snstruin veer v instruin vii se utiliz pr envir informin desde un dispositivo de entrd de dtos hi l memoriF in l memori los dtos son uidos medinte el identi(dor @nomre de vrileA utilizdo omo omplemento de l instruin viiF in digrm xE l instruin de entrd se represent sX veer `list de identi(dores de vrilesb ijemploX veer D honde 44 y 44 son ls vriles que reiirn los vlores y que deen herse delrdo previmenteF snstruin isriir ist instruin permite envir dtos desde l memori hi un dispositivo de slid omo l pntll o l impresorF v informin que se env puede ser onstnte o tmin el ontenido de vrilesF isriir `list de onstntes y vrilesb ijemploX isriir D gundo se esrien ms de un vrile es neesrio seprrls on oms @DA y los mensjes se esrien entre omills doles 4 4F i un vrile es esrit entre omills se mostrr el identi(dor y no el ontenidoF ijemplosX IF hiser un lgoritmo pr lulr el re y el permetro de un retngulo he(niin del prolem glulr re y permetro de un retngulo enlisis del prolem r desrrollr este prolem es neesrio onoer ls frmuls pr otener tnto el re omo el permetro de un retnguloF e a se y h a lturD ls frmuls utilizr sonX ere a B h ermetro a P B @ C hA htos de entrdX y h @se y lturA htos de slidX re y permetro roesosX re a B h ermetro a P B @ C hA hiseo de l soluin sniio interoX D hD D p veer D h aBh p a P @ C hA isriir 4reX4D isriir 4permetroX4D p pin lgoritmo PF n mestro dese ser que porentje de homres y que porentje de mujeres hy en un grupo de estudintesF he(niin del prolem
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
PW
glulr porentje de homres y mujeres en un grupo enlisis del prolem htos tener en uentX xmero homres xmero mujeres otl estudintes orentje homres orentje mujeres htos de entrdX nmero homresD nmero mujeres htos slidX porentje homresD porentje mujeres roesosX tot estudintes a nmF homres C nmF wujeres orFhomres a nmF romres G tot estudintesBIHH orFhomres a nmF mujeres G tot estudintesBIHH hiseo de l soluin sniio interoX nummD numhD totest elX porhD porm veer nummD numh totest a numm C numh porm a numm G totest B IHH porh a numh G totest B IHH isriir 4porentje mujeresX4D porm isriir 4porentje homresX4D porh pin lgoritmo QF n profesor prepr tres uestionrios pr un evluin (nlX eD f y gF e se que se trd S minutos en revisr el uestionrio eD V en revisr el uestionrio f y T en el gF v ntidd de exmenes de d tipo se entrn por teldoF gunts hors y untos minutos se trdr en revisr tods ls evluionesc he(niin del prolem glulr el tiempoD en hors y minutosD requerido pr li(r exmenesF enlisis del prolem e tienen tres tipos de exmen eD fD g y el tiempo en minutos requerido pr d tipo sonX eaS faV gaT il tiempo en minutos dee ser onvertido horsD I hor a TH minutos r psr de minutos hors se reliz operin divisin enterD pr onoer los minutos exedentes se utiliz l operin mduloF htos de entrdX nmero exmenes tipo eD f y g htos de slidX hors y minutos requeridos roesosX otl e a nmero tipo e B S otl f a nmero tipo f B V otl g a nmero tipo g B T iempo totl a totl e C totl f C totl g rors a tiempo totl G TH winutos a tiempo totl wod TH hiseo de l soluin sniio interoX numD numD numD totDtotD totD totminD horsD minutos veer numD numD num tot a num B S tot a num B V tot a num B T
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
QH
totmin a tot C tot C tot hors a totmin G TH minutos a totmin wod TH isriir 4trdrX4DhorsD 4hors y4D minutosD 4minutos4 pin lgoritmo QF istruturs seueniles vs estruturs de deisin o tmin llmds de selein permiten que el lgoritmo tome deisiones y ejeute u omit lgunos proesos dependiendo del umplimiento de un ondiinF e pueden mnejr tres tipos de deisionesX simpleD dole y mltipleF heisin simple y dole n deisin es simpleD undo solo se tiene determindo los psos seguir si el resultdo de l ondiin es verdderoD mientrs que si es flsoD l ejeuin del lgoritmo ontin despus de l estrutur ondiionlF n deisin undo se tiene un urso de in pr el so que el resultdo de l omprin se verddero y otro pr undo se flsoF in digrm de ghpin el smolo pr representr un deisin es el siguienteX r ver el gr(o seleione l opin 4hesrgr4 del men superior ysrvese que en l prte inferior se tienen los udros que indin dos posiiliddes de inD el onjunto de instruiones I o el onjunto de instruiones PD solo uno de los dosF i se trtse de un deisin simpleD solo se tendr instruiones en ls js que se uin dejo de l lusul iD mientrs que ls que estn jo xo estrn vsF ijemplosX IF e dese un lgoritmo pr otener el vlor soluto de un nmero he(niin del prolem inontrr el vlor soluto de un nmero enlisis del prolem r enontrr el vlor soluto del nmero es neesrio reordr que pr los enteros positivos el vlor es el mismoD mientrs que pr los enteros negtivos es neesrio mirlos de signoF htos de entrdX nmero htos de slidX vlor soluto roesoX nmero a nmero B @EIA hiseo de l soluin PF hdos dos nmeros ul es myorc y ul es menorc he(niin del prolem sdenti(r el myor y menor de dos nmeros enlisis del prolem htos de entrdX numID numP htos slidX myorD menor roesoX omprin hiseo de l soluin QF n empres dese lulr los nuevos slrios de sus empledos de l siguiente formX quienes gnn hst 6 SHHFHHH tendrn un inremento del IH 7D quienes devengn ms de 6 SHHFHHH y hst VHHFHHH reiirn un umento del V 7 y los dems del S 7F gul ser el vlor del umentoc gul ser el vlor del nuevo sueldoc he(niin del prolem glulr el vlor inrementr y el vlor del nuevo sueldo de los empledosF enlisis del prolem il porentje de inremento en el sueldo depende del vlor del sueldo tulD los sueldos ms jos tienen un myor inrementoX IH 7 pr sueldo `a 6 SHHFHHH V 7 pr 6 SHHFHHH ` sueldo `a 6 VHHFHHH S 7 pr sueldo b VHHFHHH htos de entrdX sueldo htos de slidX umentoD nuevo sueldo roesoX umento a sueldo B porentje donde porentje a SD V o IH 7
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
QI
nuevo sueldo a sueldo C umento hiseo de l soluin heisin mltiple wuhs deisiones deen tomrseD no solo entre dos lterntivsD sino de un onjunto myorF istos sos ien pueden soluionrse utilizndo ondiionles doles niddosY sin emrgoD en fvor de l lridd del lgoritmo y l filidd pr el progrmdorD es mejor utilizr un estrutur de deisin mltipleD l ul es fil de llevr un lenguje de progrminD y que stos inluyen lgun instruin on este (nF v deisin mltiple determin el vlor de un vrile y dependiendo de ste sigue un urso de inF is importnte tener en uent que solo se veri( l ondiin de iguldd entre l vrile y l onstnteF in digrm xE l estrutur de selein mltiple tiene l formX ijemploX un distriuidor de motoilets tiene un promoin de (n de o que onsiste en los siguienteF vs motos mr ryxhe tienen un desuento del S 7D ls de mr mh del V 7 y ls uzuki el IH 7D ls de otrs mrs el P 7 he(niin del prolem glulr el vlor del desuento y el vlor pgr por l motoiletF enlisis del prolem orentje desuento a S 7 pr motos rond orentje desuento a V 7 pr motos mh orentje desuento a IH 7 pr motos uzuki orentje desuento a P 7 pr motos otrs mrs htos de entrdX mrD vlor htos de slidX desuentoD vlor pgr roesoX desuento a vlor B porentje lor neto a vlor E desuento hiseo de l soluin RF istruturs de deisin SF istruturs de repetiin in l soluin de lgunos prolems es neesrio ejeutr repetids vees un instruin o un onjunto de instruionesF in lgunos sosD el nmero de repetiiones se onoe on nterioriddD mientrs que en otrs depende de lulos o estdos de vriles que se dn dentro de l soluin del prolemF r soluionr este tipo de prolems se utiliz un tipo de estruturs ls que se onoen omo estruturs de repetiinD ules o ilosF n ilo onsiste en un grupo de iones que se ejeutn repetids vees dependiendo del umplimiento de un ondiinF gilo wientrs iste ilo onsiste en un onjunto de instruiones que se repiten mientrs se umpl un ondiinF he igul mner que en los ondiionlesD l ondiin es evlud y retorn un vlor lgioD que puede ser verddero o flsoF in el so del ilo mientrs ls instruiones ontenids en l estrutur de repetiin se ejeutrn solmente si l evlur l ondiin se gener un vlor verdderoY es deirD si l ondiin se umpleY en so ontrrioD se ejeutr l instruin que pree despus de pin mientrsF e difereni de otros ilosD el ilo mientrs omienz evlundo l expresin ondiionlD si el resultdo es verddero se ejeutrn ls instruiones que estn entre el mientrs y el (n mientrsD l enontrrse l lne (n mientrs se volver evlur l ondiinD si se umple se ejeutrn nuevmente ls instruiones y s suesivmente hst que l ondiin deje de umplirseD en uyo soD el ontrol del progrm ps l lne que pree despus de (n mientrsF i en l primer psd por el ilo mientrs l ondiin no se umple ls instruiones que estn dentro del ilo no se ejeutrn ni un sol vezF in digrm de ghpin @xEAD est estrutur tiene l presentinX ijemplosX IF n lgoritmo pr mostrr los nmeros del I l IHF he(niin del prolem wostrr listdo de nmeros de I IHF enlisis del prolem
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
QP
htos de entrdX ninguno htos de slidX nmero roesoX ninguno hiseo de l soluin iste es un lgoritmo muy trivil pero permite revisr l pliin de l estrutur de repetiin wientrsF vo primero tener en uent es l delrin e iniilizin de l vrileX num a IF in este so no solo se est delrndo un vrile de tipo enteroD sino tmin se est signndo un vlor iniilD que ser el primer nmero mostrdoF v ondiin o expresin relionl on l ul se implement el ilo es num `a IHD ddo que num inii en ID l primer vez que se enuentr l instruin mientrsD l expresin es verdderD por tnto se ejeutn ls instruiones que preen l interior del iloF hespus de her mostrdo el ontenido de l vrile numD ste miD se inrement en IF PF veer n nmeros y enontrr el vlor promedioD el myor y el menor he(niin del prolem inontrr el promedioD el myor y el menor de vrios nmeros enlisis del prolem r soluionr este prolemD lo primero que hy que plnter es mo se sr undo terminr l letur de dtosD y que no se espei( l ntidd de nmeros que sern ingresdos y en el plntemiento del prolem no se d ningun ondiin que permit ser undo terminr el iloF iste tipo de prolems es muy omnF ry dos forms de ordr este ejeriioD l primer onsiste en preguntr l usurio on untos nmeros dese trjr y gurdr diho vlor en un vrile que se utilizr pr estleer el iloF v segund onsiste en preguntr despus de leer d dtoD si se dese ingresr otroF in este ejeriio se utilizr l primer estrtegiF htos de entrdX ntidd de nmerosD nmero htos de slidX promedioD myor y menor roesosX sum a sum C nmero promedio a sum G ntidd de nmeros hiseo de l soluin QF v serie pioni omienz on los nmerosX HD ID ID PD QD SD VD IQD PID FFF e requiere un lgoritmo pr generr los primeros IH nmerosF he(niin del prolem qenerr los IH primeros nmeros de l serie (oni enlisis del prolem v serie (oni se gener prtir de dos vlores iniiles que son el H y el ID que l sumrse dn omo resultdo IF il siguiente nmero se otiene sumndo el ltimo nmero otenido on el nteriorD en este so I C I a PD luego ser P C I a Q y s suesivmenteF htos de entrdX ninguno htos de slidX serie (oni roesosX aH aI faC hiseo de l soluin gilo r iste iloD l igul que los demsD permite ejeutr repetids vees un instruin o un grupo de ellsD pero difereni de otrs instruiones de repetiinD st mnej el vlor iniilD el vlor de inremento o deremento y el vlor (nl de l vrile de ontrol omo prte de l instruinF gundo l ejeutrse un lgoritmo se enuentr un instruin pr l vrile de ontrol @ontdorA tom el vlor iniilD se veri( que el vlor iniil no sorepse el vlor (nl y luego se ejeutn ls instruiones del iloF el enontrr l instruin (n prD se produe el inremento y se vuelve veri(r que l vrile de ontrol no hy superdo el lmite dmitidoD y se vuelven ejeutr ls instruiones que estn dentro del iloD y s suesivmente tnts vees omo se neesrio hst que se supere el vlor (nl estleidoF
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
il ilo pr termin en el momento en que l vrile de ontrol @ontdorA soreps el vlor (nlY es deirD que l iguldd est permitid y ls instruiones se ejeutn undo el ontdor es igul l vlor (nlF iste ilo puede presentrse de tres mnersX l primer es l ms omnD undo se produe un inremento de I en d iterinD en uyo so no es neesrio esriir explitmenteF in digrm xEX il segundo so de utilizin del ilo r es undo el inremento es diferente de ID en uyo so se esriir l plr inrementr seguid del vlor sumr en d iterinF in terer lugrD el ilo pr no siempre se inrement desde un vlor iniil hst un vlor myorD puede sueder que se requier que se disminuy desde un vlor iniil ltoD hst un vlor menorF in este so ser su(iente on esriir derementr en vez de inrementrF ijemplosX IF smprimir los nmeros del I l IH he(niin del prolem smprimir nmeros del I l IH enlisis del prolem htos de entrdX ninguno htos de slidX nmeros @I FFF IHA roesoX ninguno hiseo de l soluin PF smprimir los nmeros del S l SH on intervlos de SF he(niin del prolem smprimir nmeros de ino en ino enlisis del prolem htos de entrdX ninguno htos de slidX nmeros roesoX ninguno hiseo de l soluin QF hdo un nmero n mostrr los nmeros menores o igul steD en orden desendente he(niin del prolem smprimir nmeros en orden desendente enlisis del prolem htos de entrdX nmero htos de slidX nmeros roesoX ninguno hiseo de l soluin RF un lgoritmo que lee IH nmeros y muestr l sumtoriD el promedioD el nmero myor y el nmero menorF he(niin del prolem veer IH nmeros y sumrlosD determinr el promedioD el nmero menor y el nmero myorF enlisis del prolem htos de entrdX nmero htos de slidX sumtoriD promedioD nmero menor y nmero myor roesoX sum a sum C nmero promedio a sum G IH hiseo de l soluin v utilizin deud e ingenios de ls estruturs presentds permite el diseo de lgoritmos de eptle nivel de omplejiddD omo se h mostrdo en los ejemplosF ysrvese que d estrutur permite inluir ls nterioresD en el ltimo ejemplo se h utilizdo todos los oneptos presentdos en este doumentoF vos digrms xE permiten representr de form senill los psos que onformn un lgoritmo y por su ominin de texto e imgen son muy files de interpretrY no ostnteD es reomendle que quien se inii en el diseo de lgoritmos onoz otrs tnis omo el pseudodigo y el digrm de )ujoF
CAPTULO 2.
PROGRAMACION ESTRUCTURADA.
QR
pinlmenteD es menester notr que el diseo de lgoritmos no solo requiere onoer metodologs de representinD sino tmin desrrollr el pensmiento lgio pr generr soluiones y esto se onsigue medinte el desrrollo de ejeriiosF
Captulo 3
signed hr unsigned hr
int
signed int signed short int signed long int unsigned int unsigned short int unsigned long int
htos reles )ot doule long doule v plr hr he refereni que se trt de un rter @un letr mysul o minsulD un dgitoD un rter espeilD FFFAF v plr int indi que se trt de un nmero enteroD mientrs que )ot se re(ere un nmero rel @tmin llmdo de punto o om )otnteAF vos nmeros enteros pueden ser positivos o negtivos @signedAD o ien esenilmente no negtivos @unsignedAY los rteres tienen un trtmiento muy similr los enteros y dmiten estos mismos uli(doresF in los dtos enterosD ls plrs short y long hen refereni l nmero de ifrs o rngo de dihos nmerosF in los dtos reles ls plrs doule y long puntn en est mism direinD unque on un signi(do ligermente diferenteD omo ms delnte se verF ist nomenltur puede simpli(rseX ls plrs signed e int son ls opiones por defeto pr los nmeros enteros y pueden omitirseF eurdese que en g es neesrio delrr tods ls vriles que se vyn utilizrF n vrile no delrd produe un mensje de error en l ompilinF gundo un vrile es delrd se le reserv QS
CAPTULO 3.
QT
memori de uerdo on el tipo inluido en l delrinF is posile iniilizrD dr un vlor iniilD ls vriles en el momento de l delrinY y se ver que en ierts osiones el ompildor d un vlor iniil por defetoD mientrs que en otros sos no se reliz est iniilizin y l memori soid on l vrile orrespondiente ontiene sur informti @ominiones sin sentido de unos y erosD resultdo de operiones nteriores on es zon de l memoriD pr otros (nesAF euerd que en g tod vrile usd en un progrm dee delrrse ntes de ser usdF helrr l vrile onsiste en drle un nomre @identi(dorA y signrle un tipoF
CAPTULO 3.
QU
CAPTULO 3.
QV
vos omputdores trjn en se PF or eso un nmero de tipo )ot se lmen en R ytes @QP itsAD utilizndo PR its pr l mntis @I pr el signo y PQ pr el vlorA y V its pr el exponente @I pr el signo y U pr el vlorAF is interesnte ver qu lse de nmeros de punto )otnte pueden representrse de est formF in este so hy que distinguir el rngo de l preisinF v preisin he refereni l nmero de ifrs on ls que se represent l mntisX on PQ its el nmero ms grnde que se puede representr esD
223 = 8,388,608
lo ul quiere deir que se pueden representr todos los nmeros deimles de T ifrs y l myor prte !unque no todos! de los de U ifrs @por ejemploD el nmero WFPIQFRST no se puede representr on PQ itsAF or eso se die que ls vriles tipo )ot tienen entre T y U ifrs deimles equivlentes de preisinF espeto l exponente de dos por el que hy que multiplir l mntis en se PD on U its el nmero ms grnde que se puede representr es IPUF il rngo vendr de(nido por l poteniD
252 = 4,503,599,627,370,496
lo ul represent entre IS y IT ifrs deimles equivlentesF gon respeto l rngoD on un exponente de IH its el nmero ms grnde que se puede representr ser del orden de P elevdo P elevdo IH @que es IHPRAX
CAPTULO 3.
QW
CAPTULO 3.
RH
Captulo 4
Constantes
e entiende por onstntes quel tipo de informin numri o lfnumri que no puede mir ms que on un nuev ompilin del progrmF gomo y se h diho nteriormenteD en el digo de un progrm en g pueden preer diversos tipos de onstntes que se vn explir ontinuinF vs onstntes se de(nen on l diretiv 5de(neF esiX 5de(ne gyxexi vlor gd line 5de(ne solo puede ontener el vlor de un onstnteF yserv que no hy operdor de signion entre el nomre de l onstnte y su vlor y o que l line no on punto y omF is prole que omets ms de un vez el error de esriir el operdor de signion o el punto y omF xo es oligtorio que el nomre de l onstnte se esri en mysulsD pero s un onvenio u % mplimente doptdoF
RI
CAPTULO 4.
CONSTANTES
RP
is prole que no hy neesidd de utilizr onstntes otles y hexdeimlesD pero onviene onoer su existeni y ser interpretrls por si hiier fltF v ventj de los nmeros expresdos en se V y se IT proviene de su estreh relin on l se P @ V y IT son potenis de PAD que es l form en l que el ordendor lmen l informinF
CAPTULO 4.
CONSTANTES
RQ
del digo egss @sin emrgoD 9HHU9 es l representin otl del rter 9U9AD que es el sonido de lertF il exs g tmin dmite seuenis de espe hexdeimlesD por ejemplo 9xI9F
CAPTULO 4.
CONSTANTES
RR
enum plo {orosD opsD espdsD stos} rtID rtPD rtQY donde rtID rtP y rtQ son vriles que slo pueden tomr los vlores orosD opsD espds y stos @equivlentes respetivmente HD ID P y QAF
Captulo 5
CAPTULO 5.
RT
CAPTULO 5.
RU
CAPTULO 5.
RV
he flt evlur expresionPD y de heho no se evlF elgo preido ps on el operdor ||X si expresionI es verdderD y no he flt evlur expresionPF vos operdores 88 y || se pueden ominr entre s !quizs grupdos entre prntesis!D dndo vees un digo de ms difil interpretinF @PaaIA || @EIaaEIA GG resultdoa I @PaaPA 88 @QaaEIA GG resultdoa H @@PaaPA 88 @QaaQAA || @RaaHA GG resultdoa I @@TaaTA || @VaaHAA 88 @@SaaSA 88 @QaaPAA GG resultdoa H
CAPTULO 5.
RW
representd por l vrile de tipo puntero vrileI se reuper y se sign l vrile vriE leQF gomo y se h indidoD ls vriles puntero y los operdores direin @8A e indirein @BA sern explidos on muho ms detlle en un sein posteriorF
5.2. Expresiones
hn preido lgunos ejemplos de expresiones del lenguje g en ls seiones preedentesF n expresin es un ominin de vriles yGo onstntesD y operdoresF v expresin es equivlente l resultdo que proporion l plir sus operdores sus operndosF or ejemploD ICS es un expresin formd por dos operndos @I y SA y un operdor @el CAY est expresin es equivlente l vlor TD lo ul quiere deir que ll donde est expresin pree en el progrmD en el momento de l ejeuin es evlud y sustituid por su resultdoF n expresin puede estr formd por otrs expresiones ms senillsD y puede ontener prntesis de vrios niveles grupndo distintos trminosF in g existen distintos tipos de expresionesF
CAPTULO 5.
SH
@ E BPFHA 88 @ 3a dA e su vezD el operdor de signin @aAD dems de introduir un nuevo vlor en l vrile que (gur su izdD dej tmin este vlor disponile pr ser utilizdo en un expresin ms generlF or ejemploD supngse el siguiente digo que iniiliz I ls tres vriles D y X a a a IY que equivle X a @ a @ a IAAY in reliddD lo que se h heho h sido lo siguienteF in primer lugr se h signdo un vlor unidd Y el resultdo de est signin es tmin un vlor uniddD que est disponile pr ser signdo Y su vez el resultdo de est segund signin vuelve quedr disponile y se puede signr l vrile F
5.4. Sentencias
vs expresiones de g son uniddes o omponentes elementles de uns entiddes de rngo superior que son ls sentenisF vs sentenis son uniddes ompletsD ejeutles en s mismsF se ver que muhos tipos de sentenis inorporn expresiones ritmtisD lgis o generles omo omponentes de dihs sentenisF
CAPTULO 5.
SI
Captulo 6
6.1. Bifurcaciones
6.1.1. Operador condicional
il operdor ondiionl es un operdor on tres operndos @ternrioA que tiene l siguiente form generlX expresionI c expresionP X expresionQY ixpliinX e evl expresionIF i el resultdo de dih evluin es true @5HAD se ejeut expresionPY si el resultdo es flse @aHAD se ejeut expresionQF
6.1.2. Sentencia if
ist senteni de ontrol permite ejeutr o no un senteni simple o ompuest segn se umpl o no un determind ondiinF ist senteni tiene l siguiente form generlX if @expresionA senteniY ixpliinX e evl expresionF i el resultdo es true @5HAD se ejeut senteniY si el resultdo es flse @aHAD se slt senteni y se prosigue en l lne siguienteF ry que reordr que senteni puede ser un senteni simple o ompuest @loque { FFF }AF
CAPTULO 6.
SQ
expI c expP X expQ e evl l expresin 4expI4F i tiene vlor distinto de eroD se evl l expresin 4expP4 y su resultdo ser el vlor de l expresinF i 4expI4 tiene vlor eroD se evl 4expQ4 y su resultdo ser el vlor de l expresinF v senteniX x a @ y`z A c y X z Y iene un efeto equivlente X if @ y ` z A xayY else xazY
CAPTULO 6.
SR
swith @expresionA { se expresionteIX senteniIY rekY se expresiontePX senteniPY rekY defultX senteniQY }
6.2. Bucles
edems de ifurionesD en el lenguje g existen tmin vris sentenis que permiten repetir un serie de vees l ejeuin de uns lnes de digoF ist repetiin se relizD ien un nmero determindo de veesD ien hst que se umpl un determind ondiin de tipo lgio o ritmtioF he modo genrioD ests sentenis se les denomin ulesF vs tres onstruiones del lenguje g pr relizr ules son el whileD el for y el doFFFwhileF in generlD nos interesr usr while undo puede que l prte repetitiv no se llegue repetir nun @por ejemploX undo leemos un (heroD si el (hero est voD no hr dtos que leerAF he igul modoD doFFFwhile ser lo deudo undo demos repetir l menos un vez @por ejemploD pr pedir un lve de esoD se le dee preguntr l menos un vez l usurioD o quiz ms veesD si l tele orretmenteAF in unto forD es equivlente un whileD pero l sintxis hitul de l oren for he que se espeilmente til undo semos extmente unts vees queremos que se repit @por ejemploX IH vees ser for @iaIY i`aIHY iCCAAF
CAPTULO 6.
SS
ixpliinX e evl expresiondeontrol y si el resultdo es flse se slt senteni y se prosigue l ejeuE inF i el resultdo es true se ejeut senteni y se vuelve evlur expresiondeontrol @evidentemente lgun vrile de ls que intervienen en expresiondeontrol hr tenido que ser modi(dD pues si no el ule ontinur inde(nidmenteAF v ejeuin de senteni prosigue hst que expresiondeontrol se he flseD en uyo so l ejeuin ontin en l lne siguiente senteniF in otrs plrsD sentenE i se ejeut repetidmente mientrs expresiondeontrol se trueD y se dej de ejeutr undo expreE siondeontrol se he flseF ysrvese que en este so el ontrol pr deidir si se sle o no del ule est ntes de senteniD por lo que es posile que senteni no se llegue ejeutr ni un sol vezF
CAPTULO 6.
ST
Captulo 7
7.1. Punteros
ixisten dos oneptos importntes soidos d eld o posiin de memoriX su direin y su onE tenidoF gd eld o yte tiene soid un ni direin que indi su posiin reltiv en memori y medinte l ul se puede eder l posiin pr lmenr o reuperr informinF v informin lE mend en un posiin de memori es su ontenidoF v pigur IFT muestr un memoE ri de omputdor que onst de IFyHH posiiones en memori on direiones de y WWWF il ontenido de ests direiones o poE siiones de memori se llmn plrsD de modo que existen plrs de VD ITDQP y TR itsF or onsiguienteD si trj on un mquin de QP itsD signi( que en d posiin de memori de su omputdor puede lojr QP itsD es deir QP dgitosD ien eros o unosF iempre que un nuev informin se lmen en un posiinD se destruye @despreeA ulE quier informin que en ell huier y no se puede reuperrF v direin es permnente y niD el ontenido puede mir mientrs se ejeut un progrmF v memori entrl de un omputdor puede tener desde unos entenres de millres de ytes hst millones de ytesF gomo el yte es un unidd elementl de lmenmientoD se utilizn mltiplos pr de(nir el tmo de l memori entrlX uiloEyte @uf o uA igul IFHPR ytes @P9AEprtiE mente se tomn IFHHHE y wegyte @wf o wA igul IFHPR x IFHPR ytes @P9A Eprtimente se onsider un IFHHHFHHHEF
CAPTULO 7.
SV
lo ul quiere deir que prtir de este momentoD l vrile dire podr ontener l direin de ulquier vrile enterF v regl nemotni es que el vlor l que punt dire @es deir BdireD omo luego se verAD es de tipo intF vos punteros longD hrD )ot y doule se de(nen nlogmente los punteros intF
CAPTULO 7.
SW
p a p C IY p a p C iY p Ca IY pCCY
CAPTULO 7.
TH
CAPTULO 7.
TI
donde tnto ls (ls omo ls olumns se numern tmin prtir de HF v form de eder los elementos de l mtriz es utilizndo su nomreD seguido de ls expresiones enters orrespondientes los dos sundiesD entre orhetesF in g tnto los vetores omo ls mtries dmiten los tipos de ls vriles eslres @hrD intD longD )otD douleD etFAD y los modos de lmenmiento utoD extern y sttiD on ls misms rterstis que ls vriles normles @eslresAF xo se dmite el modo registerF vos rrys stti y extern se iniilizn ero por defetoF vos rrys uto pueden no iniilizrseX depende del ompildor onreto que se est utilizndoF vs mtries en g se lmenn por (lsD en posiiones onseutivs de memoriF in iert formD un mtriz se puede ver omo un vetor de vetoresE(lF i un mtriz tiene x (ls @numerds de H xEIA y w olumns @numerds de H l wEIAD el elemento @iD jA oup el lugrX posiinelemento@HD HA C i B w C j e est frmul se le llm frmul de direionmiento de l mtrizF in g pueden de(nirse rrys on tntos sundies omo se deseeF or ejemploD l senteniD doule QSUY helr un hipermtriz on tres sundiesD que podr verse omo un onjunto de Q mtries de dimensin @SxUAF in l frmul de direionmiento orrespondienteD el ltimo sundie es el que vr ms rpidmenteF
CAPTULO 7.
TP
CAPTULO 7.
TQ
doule vT a {IFD PFD QFD QFD PFD IF}Y )ot d a {IFPD QFRD SFI}Y GG dQ est implito int fIHH a {H}Y GG todo se iniiliz H int hIH a {ID PD Q}Y GG restntes elementos H int mtQP a {{ID P}D {QD R}D {SD T}}Y eurdese queD l igul que ls vriles eslres orrespondientesD los rrys on modo de lmenmiento externl y stti se iniilizn ero utomtimente en el momento de l delrinF in emrgoD esto no est grntizdo en los rrys utoD y el que se hg o no depende del ompildorF
CAPTULO 7.
TR
CAPTULO 7.
TS
vs dens se delrn omo vetores de rteresD si que dees proporionr el numero mximo de rteres que es pz de lmenrX su piddF ist denD por ejemploD se delr on pidd pr lmenr IH rteresX hr IHY uedes iniilizr l den on un vlor en el momento de su delrionX hr IH a 4den4Y remos delrdo omo un vetor de IH rteres y lo hemos iniilizdo signndole l den 4den4F pijteX hemos lmendo en un den de menos de IH rteresF xo hy prolemX l longitud de l den lmend en es menor que l pidd de F e simple vistD 4den4 oup T ytesD pues ontmos en ell T rteresD pero no es s %F in reliddD 4den4 oup U ytesX los T que orresponden los T rteres que ves ms uno orrespondiente un rter nulo l (nlD que se denomin termindor de den y es invisileF euerdD puesD que hy dos vlores reliondos on el tmo de un denX su piddD que es l tll del vetor de rteresY su longitudD que es el numero de rteres que ontieneD sin ontr el termindor de l denF v longitud de l den dee ser siempre estritmente menor que l pidd del vetor pr no desordr l memori reservdF por que tod est ompliion del termindor de denc vo norml l trjr on un vrile de tipo den es que su longitud vri onforme evoluion l ejeuion del progrmD pero el tmo de un vetor es (joF or ejemploD si hor tenemos en el texto 4den4 y n ms trde deidimos gurdr en ell el texto 4texto4D que tiene un rter menosD il truo del termindor h permitido que l den derezF odemos onseguir tmien que rez voluntdF F F pero siempre que no se rese l pidd del vetorF ue ourre si intentmos iniilizr un zon de memori reservd pr solo IH hrs on un den de longitud myor que Wc istremos ometiendo un grvisimo error de progrmion queD posilementeD no detete el o ompildorF vos rteres que no en en se esrien en l zon de memori que sigue l zon oupd por l vrileF puede que modi(ques el ontenido de otrs vriles o que trtes de esriir en un zon que te est vetdD on el onsiguiente orto de l ejeuion del progrmF gomo result que en un vrile on pidd prD por ejemploD VH rteres solo en relmente UW rteres prte del nuloD doptremos un urios prti l delrr vriles de den que nos permitir lmenr los VH rteres @dems del nuloA sin rer un onstnte onfusion on respeto l numero de rteres que en en ellsX 5inlude `stdioFhb 5de(ne wevyx VH int min@voidA { hr den wevyxCI Y GB eservmos VI rteresX VH rteres y el termindor BG return HY } vos identi(dores de vetores esttios se onsidern punteros inmutles yD (n de uentsD ls dens son vetores esttios r efetur un opi de un denD hs de herlo rter rterF 5de(ne wevyx IH int min@voidA { hr originl wevyxCI a 4den4Y hr opiwevyxCIY int iY for @i a HY i `a wevyxY iCCA { opii a originl iY if @opii aa 9H9A rekY }
CAPTULO 7.
TT
return HY } iste progrmD pide dos dens y onten l segund l primerX 5inlude `stdioFhb 5de(ne wevyx VH int min@voidA { hr wevyxCID wevyxCIY int longD longY int iY printf @4sntrodue un texto @mxF 7d rsFAX 4D wevyxAY gets@AY printf @4sntrodue otro texto @mxF 7d rsFAX 4D wevyxAY gets@AY long a strlen@AY long a strlen@AY for @iaHY i`longY iCCA longCi a iY longClong a 9H9Y printf @4gontenion de mosX 7s4D AY return HY }
CAPTULO 7.
TU
vs dens texto y textodemo pueden ontener VH y PSR rteres respetivmente ms el rter nuloF v terer denD dentestD se delr on un espei(in de tipo inomplet y se omplet slo on el iniilizdorF hdo que en el literl hy QT rteres y el ompildor de el rter 9H9D un totl de QU rteres se signrn dentestF ehor ienD un den no se puede iniilizr fuer de l delrinF or ejemploD si trt de her nden a 4efg4 Y g le dr un error l ompilrF v rzn es que un identi(dor de denD omo ulquier identi(dor de rry se trt omo un vlor de direinD omo un puntero onstnteF gmo se puede iniilizr un den fuer de l delurinc ws delnte se verD pero podemos indir que ser neesrio utilizr un funin de den denomind strpy @ A F
7.4. Estructuras
n estrutur es un form de grupr un onjunto de dtos de distinto tipo jo un mismo nomre o identi(dorF or ejemploD supngse que se dese diser un estrutur que gurde los dtos orresponE dientes un lumno de primeroF ist estruturD l que se llmr lumnoD deer gurdr el nomreD l direinD el nmero de mtrulD el telfonoD y ls nots en ls IH signtursF gd uno de estos dtos se denomin miemro de l estruturF il modelo o ptrn de est estrutur puede rerse del siguiente modoX strut lumno { hr nomreQIY hr direionPIY unsigned long nomtriulY unsigned long telefonoY )ot notsIHY }Y
CAPTULO 7.
TV
il digo nterior re el tipo de dto lumnoD pero n no hy ningun vrile delrd on este nuevo tipoF ysrvese l neesidd de inluir un rter @YA despus de errr ls llvesF r delrr dos vriles de tipo lumno en g se dee utilizr l senteni inluyendo ls plrs strut y lumno @en gCC st utilizr l plr lumnoAX strut lumno lumnoID lumnoPY GG esto es g lumno lumnoID lumnoPY GG esto es g CC donde tnto lumnoI omo lumnoP son un estruturD que podr lmenr un nomre de hst QH E rteresD un direin de hst PH rteresD el nmero de mtrulD el nmero de telfono y ls nots de ls IH signtursF min podrn herse de(nido lumnoI y lumnoP l mismo tiempo que se de(n l estrutur de tipo lumnoF r ello str her hehoX strut lumno { hr nomreQIY hr direionPIY unsigned long nomtriulY unsigned long telefonoY )ot notsIHY } lumnoID lumnoPY r eder los miemros de un estrutur se utiliz el operdor punto @FAD preedido por el nomre de l estrutur y seguido del nomre del miemroF or ejemploD pr dr vlor l telefono del lumno lumnoI el vlor WHQRSTD se esriirX lumnoIFtelefono a WHQRSTY y pr gurdr l direin de este mismo lumnoD se esriirX lumnoIFdireion a 4gG enny vne IDPEe4Y in este soD nuevolumno es un estrutur de tipo lumnoD y lseQHH es un vetor de estruturs on espio pr lmenr los dtos de QHH lumnosF il nmero de mtrul del lumno PTR podr ser edido omo lsePTRFnomtriulF vos miemros de ls estruturs pueden ser vriles de ulquier tipoD inluyendo vetores y mtriesD e inluso otrs estruturs previmente de(nidsF vs estruturs se diferenin de los rrys @vetores y mtriesA en vrios spetosF or un prteD los rrys ontienen informin mltiple pero homogneD mientrs que los miemros de ls estruturs pueden ser de nturlez muy diferenteF edemsD ls estruturs permiten ierts operiones gloles que no se pueden relizr on rrysF or ejemploD l senteni siguienteX lsePWV a nuevolumnoY he que se opien todos los miemros de l estrutur nuevolumno en los miemros orrespondientes de l estrutur lsePWVF ists operiones gloles no son posiles on rrysF e pueden de(nir tmin punteros estrutursX strut lumno BptY pt a 8nuevolumnoY ehorD el puntero pt punt l estrutur nuevolumno y esto permite un nuev form de eder sus miemros utilizndo el operdor )eh @EbAD onstituido por los signos @EA y @bAF esD pr eder l telfono del lumno nuevolumnoD se puede utilizr ulquier de ls siguientes sentenisX ptEbtelefonoY @BptAFtelefonoY
CAPTULO 7.
TW
donde el prntesis es neesrio por l myor prioridd del operdor @FA respeto @BAF vs estruturs dmiten los mismos modos utoD extern y stti que los rrys y ls vriles eslresF vs regls de iniilizin ero por defeto de los modos extern y stti se mntienenF or lo demsD un estrutur puede iniilizrse en el momento de l delrin de modo nlogo omo se iniilizn los vetores y mtriesD por medio de vlores enerrdos entre llves {}F or ejemploD un form de delrr e iniilizr l vez l estrutur lumnonuevo podr ser l siguienteX strut lumno { hr nomreQIY hr direionPIY unsigned long nomtriulY unsigned long telefonoY )ot notsIHY } lumnonuevo a {4wike mith4D 4n wrtn VUD Po e4D TPRIWD RPIUWR}Y dondeD omo no se proporion vlor pr ls notsD sts se iniilizn eroF vs estruturs onstituyen uno de los spetos ms potentes del lenguje gF in est sein se h trtdo slo de her un reve presentin de sus posiiliddesF gCC generliz este onepto inluyendo funiones miemro dems de vriles miemroD llmndolo lseD y onvirtindolo en l se de l progrmin orientd ojetosF ls n vrile de tipo estrutur sirve pr muy pooD lo relmente interesnte son ls tlsD es deir los rrys de estruturs gonsideriones iempre que neesite informin de distinto tipo neesito un estrutur gundo lmene informin del mismo tipo @pueden ser registrosA uyo tmo mximo es onoido de ntemno uso rrys @vetoresA
CAPTULO 7.
UH
evwxy lumnosweevwxyY hr nomprofesorwexywY }Y typedef strut lse gveiY typedef strut lse BgveiY gon est de(niin se ren ls utro plrs reservds pr tiposD denominds evwxy @un estruE turAD evwxy @un puntero un estruturAD gvei y gveiF ehor podr de(nirse un funin del siguiente modoX int ndelse@evwxy unlumnoD gvei lseA { evwxy otrolumnoY otrolumno a @evwxyA mllo@sizeof@evwxyAAY otrolumnoEbedd a PQY FFF lseEblumnosHalumnoY FFF return HY } il omndo typedef yud prmetrizr un progrm ontr prolems de portiliddF qenerlmente se utiliz typedef pr los tipos de dtos que pueden ser dependientes de l instlinF min puede yudr doumentr el progrm @es muho ms lro pr el progrmdor el tipo evwxyD que un tipo delrdo omo un puntero un estrutur omplidAD hindolo ms legileF
Captulo 8
Funciones.
8.1. Utilidad de las funciones.
gomo se expli un funin es un prte de digo independiente del progrm prinipl y de otrs funionesD que puede ser llmd envindole unos dtos @o sin envirle ndAD pr que relie un determind tre yGo proporione unos resultdosF vs funiones son un prte muy importnte del lenguje gF in los prtdos siguientes se desrien los spetos ms importntes de ls funionesF ods ls vriles delrds en el uerpo de un funin son 4loles4 es funinX lo existen durnte l ejeuin del loque en el que se hn delrdoF rte esenil del orreto diseo de un progrm de ordendor es su modulriddD esto es su divisin en prtes ms peques de (nlidd muy onretF in g ests prtes de digo reien el nomre de funionesF vs funiones filitn el desrrollo y mntenimiento de los progrmsD evitn erroresD y horrn memori y trjo inneesrioF n mism funin puede ser utilizd por diferentes progrmsD y por tnto no es neesrio reesriirlF edemsD un funin es un prte de digo independiente del progrm prinipl y de otrs funionesD mnteniendo un grn independeni entre ls vriles respetivsD y evitndo errores y otros efetos olterles de ls modi(iones que se introduznF wedinte el uso de funiones se onsigue un digo limpioD lro y elegnteF v deud divisin de un progrm en funiones onstituye un speto fundmentl en el desrrollo de progrms de ulquier tipoF vs funionesD y ompildsD pueden gurdrse en lirersF vs lirers son onjuntos de funiones ompildsD normlmente on un (nlidd nlog o reliondD que se gurdn jo un determindo nomre lists pr ser utilizds por ulquier usurioF
CAPTULO 8.
FUNCIONES.
UP
el mismo (heroD si l de(niin est por dejo de donde se utiliznAD delrndols on l plr lve externF il digo ejeutle es el onjunto de instruiones que deen ejeutrse d vez que l funin es llE mdF v list de rgumentos on tiposD tmin llmdos rgumentos formlesD es un list de delriones de vrilesD preedids por su tipo orrespondiente y seprds por oms @DAF vos rgumentos formles son l form ms nturl y diret pr que l funin rei vlores desde el progrm que l llmD orresponE dindose en nmero y tipo on otr list de rgumentos Elos rgumentos tulesE en el progrm que reliz l llmd l funinF vos rgumentos formles son delrdos en el enezmiento de l funinD pero no pueden ser iniilizdos en lF gundo un funin es ejeutdD puede devolver l progrm que l h llmdo un vlor @el vlor de retornoAD uyo tipo dee ser espei(do en el enezmiento de l funin @si no se espei(D se supone por defeto el tipo intAF i no se dese que l funin devuelv ningn vlorD el tipo del vlor de retorno deer ser voidF v senteni return permite devolver el ontrol l progrm que llmF uede her vris sentenis return en un mism funinF i no hy ningn returnD el ontrol se devuelve undo se lleg l (nl del uerpo de l funinF ve plr lve return puede ir seguid de un expresinD en uyo so st es evlud y el vlor resultnte devuelto l progrm que llm omo vlor de retorno @si he fltD on un onversin previ l tipo delrdo en el enezmientoAF vos prntesis que englon l expresin que sigue return son opttivosF il vlor de retorno es un vlor nioX no puede ser un vetor o un mtrizD unque s un puntero un vetor o un mtrizF in emrgoD el vlor de retorno s puede ser un estruturD que su vez puede ontener vetores y mtries omo elementos miemrosF gomo ejemplo supngse que se v lulr menudo el vlor soluto de vriles de tipo douleF n soluin es de(nir un funin que rei omo rgumento el vlor de l vrile y devuelv ese vlor soluto omo vlor de retornoF v de(niin de est funin podr ser omo sigueX doule vlors@doule xA { if @x ` HFHA return ExY else return xY } in lgunos lengujes de progrmin se llm proedimientos @en ingls proedureA o surutins ls funiones que no devuelven ningn vlorD y se reserv el nomre funin pr ls que s dn un resultdoF
CAPTULO 8.
FUNCIONES.
UQ
gCC es un poo ms restritivo que gD y olig delrr explitmente un funin ntes de llmrlF v form generl del prototipo de un funin es l siguienteX tipovlorderetorno nomrefunion@list de tipos de rgumentosAY ist form generl oinide sustnilmente on l primer lne de l de(niin Eel enezmientoED on dos peques diferenisX en vez de l list de rgumentos formles o prmetrosD en el prototipo st inluir los tipos de dihos rgumentosF e pueden inluir tmin identi(dores ontinuin de los tiposD pero son ignordos por el ompildorF edemsD un segund difereni es que el prototipo termin on un rter @YAF gundo no hy rgumentos formlesD se pone entre los prntesis l plr voidD y se pone tmin void preediendo l nomre de l funin undo no hy vlor de retornoF vos prototipos permiten que el ompildor relie orretmente l onversin del tipo del vlor de retornoD y de los rgumentos tules los tipos de los rgumentos formlesF v delrin de ls funiones medinte los prototipos suele herse l omienzo del (heroD despus de los 5de(ne e 5inludeF in muhos sos !prtiulrmente en progrms grndesD on muhos (heros y muhs funiones!D se puede rer un (hero @on l extensin FhA on todos los prototipos de ls funiones utilizds en un progrmD e inluirlo on un 5inlude en todos los (heros en que se utilien dihs funionesF v llmd un funin se he inluyendo su nomre en un expresin o senteni del progrm prinipl o de otr funinF iste nomre dee ir seguido de un list de rgumentos seprdos por oms y enerrdos entre prntesisF e los rgumentos inluidos en l llmd se les llm rgumentos tulesD y pueden ser no slo vriles yGo onstntesD sino tmin expresionesF gundo el progrm que llm enuentr el nomre de l funinD evl los rgumentos tules ontenidos en l llmdD los onvierte si es neesrio l tipo de los rgumentos formlesD y ps opis de dihos vlores l funin junto on el ontrol de l ejeuinF il nmero de rgumentos tules en l llmd un funin dee oinidir on el nmero de rgumentos formles en l de(niin y en l delrinF ixiste l posiilidd de de(nir funiones on un nmero vrile o indetermindo de rgumentosF iste nmero se onret luego en el momento de llmrlsF vs funiones printf@A y snf@AD que se vern en l sein siguienteD son ejemplos de funiones on nmero vrile de rgumentosF gundo se llm un funinD despus de relizr l onversin de los rgumentos tulesD se ejeut el digo orrespondiente l funin hst que se lleg un senteni return o l (nl del uerpo de l funinD y entones se devuelve el ontrol l progrm que reliz l llmdD junto on el vlor de retorno si es que existe @onvertido previmente l tipo espei(do en el prototipoD si es neesrioAF eurdese que el vlor de retorno puede ser un vlor numrioD un direin @un punteroAD o un estruturD pero no un mtriz o un vetorF v llmd un funin puede herse de muhs formsD dependiendo de qu lse de tre relie l funinF i su ppel fundmentl es lulr un vlor de retorno prtir de uno o ms rgumentosD lo ms norml es que se llmd inluyendo su nomre seguido de los rgumentos tules en un expresin ritmti o de otro tipoF in este soD l llmd l funin he el ppel de un operndo ms de l expresinF ysrvese mo se llm l funin seno en el ejemplo siguienteX a d B sin@lphA G PFHY in otros sosD no existir vlor de retorno y l llmd l funin se hr inluyendo en el progrm un senteni que onteng solmente el nomre de l funinD siempre seguido por los rgumentos tules entre prntesis y terminndo on un rter @YAF or ejemploD l siguiente senteni llm un funin que multipli dos mtries @nxnA e y fD y lmen el resultdo en otr mtriz gF ysrvese que en este so no hy vlor de retorno @un poo ms delnte se trt on detlle l form de psr vetores y mtries omo rgumentos de un funinAX prodmt@nD eD fD gAY ry tmin sos intermedios entre los dos nterioresD omo suede por ejemplo on ls funiones de enE trdGslid que se vern en l prxim seinF hihs funiones tienen vlor de retornoD reliondo de ordinrio on el nmero de dtos ledos o esritos sin erroresD pero es muy freuente que no se hg uso de diho vlor y que se llmen l modo de ls funiones que no lo tienenF v delrin y l llmd de l funin vlors@A ntes de(nidD se podr relizr de l form siguienteF upngse que se re un (hero prueF on el siguiente ontenidoX
CAPTULO 8.
FUNCIONES.
UR
GG (hero prueF 5inlude `stdioFhb doule vlors@douleAY GG delrin void min @voidA { doule zD yY y a EQHFVY z a vlors@yA C yByY GG llmd en un expresion } v funin vlors@A reie un vlor de tipo douleF il vlor de retorno de dih funin @el vlor soluto de yAD es introduido en l expresin ritmti que lul zF v delrin @doule vlors@douleAA no es estritmente neesri undo l de(niin de l funin est en el mismo rhivo usrF que min@AD y dih de(niin est ntes de l llmdF rototipo de ls funiones il prototipo de l funin es l delrin de l funin gontienen l eer de l funin termind en Y eomendle pr que el ompildor relie omproiones
CAPTULO 8.
FUNCIONES.
US
5inlude `stdioFhb void min@voidA { doule aIFHD aPFHY void permutr@douleD douleAY printf@4 a 7lfD a 7lfn4D D AY permutr@D AY printf@4 a 7lfD a 7lfn4D D AY } gompilndo y ejeutndo este progrm se ve que y siguen teniendo los mismos vlores ntes y despus de l llmd permutr@AD pesr de que en el interior de l funin los vlores s se hn permutdo @es fil de ompror introduiendo en el digo de l funin los printf@A orrespondientesAF v rzn est en que se hn permutdo los vlores de ls opis de y D pero no los vlores de ls propis vrilesF vs vriles podrn ser permutds si se reiiern sus direiones @en reliddD opis de dihs direionesAF vs direiones deen reiirse en vriles punteroD por lo que los rgumentos formles de l funin deern ser punterosF n versin orret de l funin permutr@A que ps direiones en vez de vlores ser omo sigueX void permutr@doule BxD doule ByA { doule tempY temp a BxY Bx a ByY By a tempY } que puede ser llmd y omprod de l siguiente formX 5inlude `stdioFhb void min@voidA { doule aIFHD aPFHY void permutr@doule BD doule BAY printf@4 a 7lfD a 7lfn4D D AY permutr@8D 8AY printf@4 a 7lfD a 7lfn4D D AY } el menismo de pso de rgumentos medinte direiones en lugr de vlores se le llm pso por refereniD y deer utilizrse siempre que l funin de devolver rgumentos modi(dosF n so de prtiulr inters es el pso de rrys @vetoresD mtries y dens de rteresAF iste punto se trtr on ms detlle un poo ms delnteF fste deir hor que omo los nomres de los rrys son punteros @es deirD direionesAD dihos dtos se psn por refereniD lo ul tiene l ventj diionl de que no se gst memori y tiempo pr psr ls funiones opis de ntiddes grndes de informinF n so distinto es el de ls estrutursD y onviene tener uiddoF or defeto ls estruturs se psn por vlorD y pueden representr tmin grndes ntiddes de dtos @pueden ontener rrys omo miemrosA de los que se relizn y trnsmiten opisD on l onsiguiente prdid de e(ieniF or est rznD ls estruturs se suelen psr de modo explito por refereniD por medio de punteros ls mismsF
CAPTULO 8.
FUNCIONES.
UT
es puesD l funin min@A se le pueden psr rgumentos y tmin puede tener vlor de retornoF il primero de los rgumentos de min@A se suele llmr rgD y es un vrile int que ontiene el nmero de plrs que se telen ontinuin del nomre del progrm undo ste se ejeutF il segundo rgumento se llm rgvD y es un vetor de punteros rter que ontiene ls direiones de l primer letr o rter de dihs plrsF e ontinuin se present un ejemploX int min@int rgD hr BrgvA { int ontY for @ontaHY ont`rgY ontCCA printf@4il rgumento 7d esX 7sn4D ontD rgvontAY printf@4n4AY return HY }
CAPTULO 8.
FUNCIONES.
UU
ntes de her ningun llmd rnd@AF r usr rnd@A y srnd@AD deermos dir otro (hero nuestr list de inludesD el llmdo stdliX 5inlude `stdliFhb i dems queremos que l semill se tome prtir del reloj interno del ordendor @que es lo ms rzonleAD deeremos inluir tmin timeX 5inlude `timeFhb mos ver un ejemploD que muestre en pntll un nmero l zr entre I y IHX 5inlude `stdioFhb 5inlude `stdliFhb 5inlude `timeFhb min@A { int nY srnd@time@HAAY n a rnd@A 7 IH C IY printf@4n nmero entre I y IHX 7dn4D nAY }
CAPTULO 8.
FUNCIONES.
UV
CAPTULO 8.
FUNCIONES.
UW
donde el prntesis @BA es neesrio pr que se 4puntero vetor de tmo IH4D es deirD puntero punteroF in prntesis ser 4vetor de tmo IHD uyos elementos son punteros4D por l myor prioridd del operdor sore el operdor BF v delrin de l funin prod@A se puede her en l formX void prod@intD doule IHD doule xD doule yAY o ienD void prod@int nD doule @BAIHD doule BxD doule ByAY r l llmd st simplemente utilizr los nomres de los rgumentosX doule IHIHD xIHD yIHY FFF prod@n(lsD D xD yAY FFF in todos estos sos es un puntero punteroD mientrs que x e y son punterosF
8.11. Procedimientos.
gundo se delr tipo 4void4X e puede invor l funin omo si fuer un senteni sltrlines @IHAY xo se puede poner l funin en un expresin donde se requier un vlorF
CAPTULO 8.
FUNCIONES.
VH
Captulo 9
Funciones de entrada/salida.
e difereni de otros lengujesD g no dispone de sentenis de entrdGslidF in su lugr se utilizn funiones ontenids en l lirer estndr y que formn prte integrnte del lengujeF vs funiones de entrdGslid @snputGyutputA son un onjunto de funionesD inluids on el ompildorD que permiten un progrm reiir y envir dtos l exteriorF r su utilizin es neesrio inluirD l omienzo del progrmD el rhivo stdioFh en el que estn de(nidos sus prototiposX 5inlude `stdioFhb donde stdio proviene de stndrdEinputEoutputF
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VP
n nmero entero positivoD que indi l nhur mnim del mpo en rteresF n signo @EAD que indi linemiento por l izd @el defeto es por l dhAF n punto @FAD que sepr l nhur de l preisinF n nmero entero positivoD l preisinD que es el no mximo de rteres imprimir en un stringD el no de deimles de un )ot o douleD o ls ifrs mnims de un int o longF n uli(dorX un @hA pr short o un @lA pr long y doule e ontinuin se inluyen lgunos ejemplos de uso de l funin printf@AF il primer ejemplo ontiene slo textoD por lo que st on onsiderr l dendeontrolF printf@4gon ien ones por ndDnviento en pop tod velDn4AY il resultdo sern dos lnes on ls dos primers estrofs de l fmos poesF xo es posile prtir deE ndeontrol en vris lnes on rteres introD por lo que en este ejemplo podr her prolems pr dir ms estrofsF n form lterntivD muy senillD lr y ordendD de esriir l poes ser l siguienteX printf@4 7sn 7sn 7sn 7sn4D 4gon ien ones por ndD4D 4viento en pop tod velD4D 4no ruz el mr sino vuelD4D 4un velero ergntnF4AY in este so se estn esriiendo R dens onstntes de rteres que se introduen omo rgumentosD on formto 7s y on los orrespondientes sltos de lneD y que en l indention es lireF n ejemplo que ontiene un onstnte y un vrile omo rgumentos es el siguienteX printf@4in el o 7s gn 7ld ptsFn4D 4IWWQ4D ene(iosAY donde el texto IWWQ se imprime omo den de rteres @ 7sAD mientrs que ene(ios se imprime on formto de vrile long @ 7ldAF is importnte her orresponder ien los formtos on el tipo de los rgumentosD pues si no los resultdos pueden ser muy diferentes de lo esperdoF v funin printf@A tiene un vlor de retorno de tipo intD que represent el nmero de rteres esritos en es llmdF 5inlude `stdioFhb min@A { )ot x a IPFSTY printf@4il vlor de x es 7f4D xAY printf@4 pero lo podemos esriir on P deimles 7SFPf4D xAY printf@4 o solo on uno 7SFIf4D xAY printf@4 o on U ifrs 7UFIf4D xAY printf@4 o linedo l izquierd 7EUFIf4D xAY printf@4 o sin deimles 7PFHf4D xAY printf@4 o solo on un ifr 7IFHf4D xAY }
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VQ
donde xID xPD FFF son los rteres de onversinD mostrdos en l l VFPD que representn los formtos on los que se esper enontrr los dtosF v funin snf@A devuelve omo vlor de retorno el nmero de onversiones de formto relizds on xitoF v den de ontrol de snf@A puede ontener rteres dems de formtosF hihos rteres se utilizn pr trtr de detetr l preseni de rteres idntios en l entrd por teldoF i lo que se dese es leer vriles numrisD est posiilidd tiene esso intersF e vees hy que omenzr l den de ontrol on un espio en lno pr que l onversin de formtos se relie orretmenteF in l funin snf@A los rgumentos que siguen l dendeontrol deen ser psdos por refereniD y que l funin los lee y tiene que trsmitirlos l progrm que l h llmdoF r elloD dihos rgumentos deen estr onstituidos por ls direiones de ls vriles en ls que hy que depositr los dtosD y no por ls propis vrilesF n exepin son ls dens de rteresD uyo nomre es y de por s un direin @un punteroAD y por tnto no dee ir preedido por el operdor @8A en l llmdF rter rteres ledos rgumento ulquier rter hr B dD i entero deiml on signo int B u entero deiml sin signo unsigned int o entero otl unsigned int xD entero hexdeiml unsigned int eD iD fD gD q nmero de punto )otnte )ot s den de rteres sin 9 9 hr hDl pr shortD long y doule v modi(dor pr long doule or ejemploD pr leer los vlores de dos vriles int y doule y de un den de rteresD se utilizrn l senteniX int nY doule distniY hr nomrePHY snf@4 7d 7lf 7s4D 8nD 8distniD nomreAY en l que se estlee un orrespondeni entre n y 7dD entre distni y 7lfD y entre nomre y 7sF ysrvese que nomre no v preedido por el operdor @8AF v letur de dens de rteres se detiene en unto se enuentr un espio en lnoD por lo que pr leer un lne omplet on vris plrs hy que utilizr otrs tnis diferentesF in los formtos de l den de ontrol de snf@A pueden introduirse orhetes FFFD que se utilizn omo sigueF v senteniD snf@4 7ef nt4D sAY GG se leen solo los rteres indidos lee rteres hst que enuentr uno diferente de @9e9D9f9D9 9D9n9D9t9AF in otrs plrsD se leen slo los rteres que preen en el orheteF gundo se enuentr un rter distinto de stos se detiene l letur y se devuelve el ontrol l progrm que llm snf@AF i los orhetes ontienen un rter @AD se leen todos los rteres distintos de los rteres que se enuentrn dentro de los orhetes ontinuin del @AF or ejemploD l senteniD snf@4 7n4D sAY lee todos los rteres que enuentr hst que lleg l rter nuev lne 9n9F ist senteni puede utilizrse por tnto pr leer lnes ompletsD on lnos inluidosF eurdese que on el formto 7s l letur se detiene l llegr l primer delimitdor @rter lnoD tuldor o nuev lneAF is responsilidd del progrmdor psr orretmente los dtos snf F n error que puede tener grves onseuenis onsiste en psr inorretmente l direin de memori o en l que dejr el vlor leidoF iste progrmD por ejemploD es erroneoX snf @4 7d4D AY
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VR
v funin snf no est reiiendo l direion de memori en l que reside D sino el vlor lmendo en F i snf interpret diho vlor omo un direion de memori @os o que heAD gurdr en ell el numero que le de teldoF el ompildor no neesrimente u detetr el error3 il resultdo es tstro(oF ytro error tipio l usr snf onsiste en onfundir el tipo de un vrile yGo l mr de formto que le orrespondeF or ejemploD imgin que es un vrile de tipo hrF iste intento de letur de su vlor por teldo es erroneoX snf @4 7d4D 8AY e snf le estmos psndo l direion de memori de l vrile F rst hi ienF eroD solo oup un yte y snf le estmos diiendo que rellene R ytes on un numero entero prtir de es direin de memoriF ytro error de onseuenis grvisimsF v mr de formto deud pr leer un numero de tipo hr huier sido 7hhdF u snf @4 7hhd4D 8AY
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VS
r slo letur @redA w esritur desde el omienzo del rhivo @writeA esritur did l (nl del rhivo @ppendA rC letur y esritur wC esritur y letur r slo letur @rhivo inrioA w esritur desde el omienzo del rhivo @rhivo inrioA esritur did l (nl del rhivo @rhivo inrioA il puntero pf devuelto por fopen@A ser xvv @aHA si por lgun rzn no se h onseguido rir el (hero en l form desedF vos prototipos de ls funiones fsnf@A y fprintf@A tienen l formX int fprintf@psvi BfpD 4den de ontrol4D tipo rgID tipo rgPD FFFAY int fsnf@psvi BfpD 4den de ontrol4D 8rgID 8rgPD FFFAY y l form generl de llmr dihs funionesD que es ompletmente nlog l form de llmr printf@A y snf@AD es l siguienteX fprintf@fpD 4dendeontrol4D otrosrgumentosAY fsnf@fpD 4dendeontrol4D otrosrgumentosAY vos rgumentos de fsnf@A se deen psr por refereniF n vez que se h termindo de trjr on un (heroD es onveniente errrlo medinte l funin flose@AD en l formX flose@fpAY ixisten tmin uns funiones llmds sprintf@A y ssnf@A que son nlogs fprintf@A y fsnf@AD susE tituyendo el puntero (hero por un puntero un den de rteres lmend en l memori del ordendorF es puesD ests funiones leen yGo esrien en un den de rteres lmend en l memoE riF ry otrs funiones similres fprintf@A y fsnf@AD ls funiones fred@A y fwrite@AD que leen y esrien en diso rhivos inriosD respetivmenteF gomo no se relizn onversiones de formtoD ests funiones son muho ms e(ientes que ls nteriores en tiempo de gF vs 4funiones4 put@D fpA y get@fpA son simismo mros de(nids en stdioFh que esrien o leen un rter de un (hero determindo por un puntero (hero @psvi BfpAF ixisten tmin funiones pr eder un (hero de modo diretoD es deirD no seuenilF il eso seuenil lee y esrie ls lnes un detrs de otrD en su orden nturlF il eso direto permite leer y esriir dtos en ulquier ordenF vs funiones remove@A y renme@A se utilizn pr orrr o mir el nomre un (hero desde un progrmF ixisten en g ms funiones y mros nlogs ls nterioresF r ms detlles sore l utilizin de tods ests funionesD onsultr un mnul de gF
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VT
printw pr esriir en pntllF gon todo estoD un primer ejemplo serX 5inlude `ursesFhb min@A { initsr@AY ler@AY move@IHDIHAY printw@4hol4AY refresh@AY geth@AY endwin@AY } n detlle importnteX l hor de ompilr hy que dir l opin de que enle l lirer nursesD ien desde ls opiones de nuestro entorno de desrrollo @si usmos ejutD uhevelop o lgn otroAD o ien desde l lne de omndosX ejemploF !lnurses Eo si queremos esriir en pntll usndo oloresD tendremos que deir que queremos omenzr el modo de olor on strtolor@AY durnte l iniilizinF iso sD ntes deermos ompror on si hsolors@A si nuestro terminr puede mnejr olores @tenemos de(nid un onstnte pevi pr poder omprorloAF intones podrmos de(nir nuestros pres de olor de fondo y de primer plnoD on initpirD sX initpir@ID gyvygexD gyvyfveguAY @nuestro pr de olores I ser texto zul lro sore fondo negroAF r usr estos oloresD ser muy preido lo que y onoemosX ttron@gyvyes@IAAY si queremos ompror ls tels extendidsD hrmos keypd@stdsrD iAY durnte l iniilizin y en uerpo del progrm y podrmos usr rdenes omo tel a geth@AY if @tel aa uivipA FFF mos ver un ejemplo que junte todo estoX 5inlude `ursesFhb min@A { int telY initsr@AY if@hsolors@A aa peviA { endwin@AY printf@4u terminl no permite usr olores3n4AY exit@IAY } strtolor@AY rek@AY noeho@AY keypd@stdsrD iAY ler@AY initpir@ID gyvygexD gyvyfveguAY ttron@gyvyes@IAAY
CAPTULO 9.
FUNCIONES DE ENTRADA/SALIDA.
VU
mvddstr@PDIHD4hol4AY ttro'@gyvyes@IAAY refresh@AY tel a geth@AY if @tel aa uivipA printw@4rs pulsdo izquierd4AY geth@AY endwin@AY }
Captulo 10
El preprocesador.
vs lines que empiezn on un plr predeid por el rter 5 son espeilesF vs plrs que empiezn on 5 se denominn diretivsF il ompildor no lleg ver nun ls lines que empiezn on un diretivF ue queremos deir extmente on que no lleg verlsc il ompildor g esD en reliddD un progrm que ontrol vris etps en el proeso de trduion de g odigo de mquinF he momentoD nos interes onsiderr dos de ellsX el preproesdor el trdutor de g odigo de mquin @el ompildor propimente dihoAF il preproesdor del lenguje g permite sustituir mros @sustituin en el progrm de onstntes simlis o textoD on o sin prmetrosAD relizr ompiliones ondiionles e inluir rhivosD todo ello ntes de que empiee l ompilin propimente dihF il preproesdor de g reonoe los siguientes omndosX 5de(neD 5undef 5ifD 5ifdefD 5ifndefD 5endifD 5elseD 5elif 5inlude 5prgm 5error vos omndos ms utilizdos sonX 5inludeD 5de(neF
VV
CAPTULO 10.
EL PREPROCESADOR.
VW
CAPTULO 10.
EL PREPROCESADOR.
WH
on lo que el resultdo serX a @s C rBsAY il resultdo es orreto por l myor prioridd del operdor @BA respeto l operdor @CAF gundo se de(ne un mro on rgumentos onviene ser muy uiddoso pr prever todos los posiles resultdos que se pueden lnzrD y grntizr que todos son orretosF in l de(niin de un mro pueden utilizrse mros de(nids nteriormenteF in muhs osionesD ls mros son ms e(ientes que ls funionesD pues relizn un sustituin diret del digo desedoD sin perder tiempo en opir y psr los vlores de los rgumentosF is reomendle tener presente que el omndo 5de(neX xo de(ne vrilesF us prmetros no son vrilesF in el preproesmiento no se reliz un revisin de tiposD ni de sintxisF lo se relizn sustituiones de digoF is por ests rzones que los posiles errores seldos por el ompildor en un lne de digo fuente on 5de(ne se deen nlizr on ls sustituiones y relizdsF or onvenin entre los progrmdoresD los nomres de ls mros se esrien on mysulsF ixisten tmin muhs mros prede(nids lguns vriles interns del sistemF hei peh de ompilin psvi xomre del rhivo vsxi xmero de lne swi ror de ompilin e puede de(nir un mro sin textosustituir pr utilizrl omo sel lo lrgo del progrmF or ejemploX 5de(ne gywryve v utilidd de est lne se oservr en el siguiente prtdoF
Captulo 11
CAPTULO 11.
WP
int min@A { printf@4istmos en el uerpo del progrmFn4AY uno@AY dos@QAY return HY } el ompildor nos d un mensje de errorD diiendo que no onoe ls funiones 4uno@A4 y 4dos@A4F xo deer ser nuestro soD si l ompilr le hemos indido los fuentes en el orden orreto @gg xy hy iAD pero puede ourrir si se los indimos en otro ordenD o ien si tenemos muhos fuentesD que dependn los unos de los otrosF v form de evitrlo ser indindole que ess funiones existenD y que y le llegrn ms trde los detlles en onreto sore mo funionnF r deirle que existenD lo que hrmos ser inluir en el progrm prinipl los prototipos de ls funiones @ls eersD sin el desrrolloA que se enuentrn en otros mdulosD sX 5inlude `stdioFhb GB rototipos de ls funiones externs BG void uno@AY void dos@int numeroAY int min@A GB guerpo del progrm BG { printf@4istmos en el uerpo del progrmFn4AY uno@AY dos@QAY return HY } ist mism soluin de poner los prototipos l prinipio del progrm nos puede servir pr sos en los queD teniendo un nio fuenteD quermos delrr el uerpo del progrm ntes que ls funiones uxiliresX 5inlude `stdioFhb GB rototipos de ls funiones BG void uno@AY void dos@int numeroAY int min@A GB guerpo del progrm BG { printf@4istmos en el uerpo del progrmFn4AY uno@AY dos@QAY return HY } void uno@A { printf@4punin unon4AY } void dos@int numeroA { printf@4punin dosD on el prmetro 7dn4D numeroAY } in iertos ompildores puede que tengmos prolems on este progrm si no inluimos los prototipos l prinipioD porque en 4min@A4 se enuentr l llmd 4uno@A4D que no hemos delrdoF el poner los prototipos ntesD el ompildor y se qu tipo de funin es 4uno@A4 @sin prmetrosD no devuelve ningn vlorD etFAD y que los dtos onretos los enontrr ms delnteF he hehoD si quitmos ess dos lnesD este progrm no ompil en uro gCC IFHI ni en ymnte gCC TFHD porque undo se enuentr en 4min@A4
CAPTULO 11.
WQ
l llmd 4uno@A4D d por supuesto que v ser un funin de tipo 4int4F gomo despus le deimos que es 4void4D protestF @in mioD qggD que suele ser ms exigenteD en este so se limit visrnosD pero ompil el progrm sin prolemsAF v soluin hitul en estos sos en que hy que delrr prototipos de funiones @espeilmente undo se trt de funiones omprtids por vrios fuentesA suele ser grupr estos fuentes en 4(heros de eer4F or ejemploD podrmos rer un (hero llmdo itiwvyFr que ontuvieseX GB itiwvyFr BG void uno@AY void dos@int numeroAY GB rototipos de ls funiones BG y en el fuente prinipl esriirmosX 5inlude `stdioFhb 5inlude 4ejemploFh4 int min@A { printf@4istmos en el uerpo del progrmFn4AY uno@AY dos@QAY return HY } equ es importnte reordr l difereni en l form de indir los dos (heros de eerX `stdioFhb e indi entre orhetes ngulres porque el (hero de eer es propio del ompildor @el ordendor lo usr en los diretorios del ompildorAF 4ejemploFh4 e indi entre omills porque el (hero r es nuestro @el ordendor lo usr en el mismo diretorio que estn nuestros fuentesAF pinlmenteD onviene her un onsiderinX si vrios fuentes distintos neesitrn eder itiwE vyFrD deermos evitr que este (hero se inluyese vris veesF isto se suele onseguir de(niendo un vrile simli l primer vez que se enlzD de modo que podmos ompror prtir de entones si dih vrile est de(nidD on 5ifdefD sX GB itiwvyFr mejordo BG 5ifndef itiwvyr 5de(ne itiwvyr void uno@AY void dos@int numeroAY GB rototipos de ls funiones BG 5endif
CAPTULO 11.
WR
siguiente textoX ifeFiiX xyFg hyFg iFg geyFg gg EeifeFii xyFg hyFg iFg geyFg is deirX nuestro ojetivo es onseguir un (hero llmdo ifeFiiD que queremos rer prtir de vrios (heros llmdos xyFgD hyFgD iFg y geyFgF v orden que queremos dr es l que pree en l segund lneD y que permiteD medinte el ompildor ggD rer un ejeutle llmdo ifeFii prtir de utro fuentes on los nomres nterioresF @v opin 4Ee4 de uro gCC permite indir el nomre que queremos que teng el ejeutleY si noD se llmr xyFiiD porque tomr su nomre del primero de los fuentesAF r qu nos sirve estoc he momentoD nos permite horrr tiempoX d vez que telemos weuiD se lee el (hero weuipsvi y se ompr l feh @y horA del ojetivo on l de ls dependenisY si el (hero ojetivo no existe o si es ms ntiguo que lgun de ls dependenisD se reliz l orden que pree en l segund lne @de modo que evitmos esriirl omplet d vezAF in nuestro soD d vez que teleemos weuiD ourrir un de ests tres posiiliddes i no existe el (hero ifeFiiD se re uno nuevo utilizndo l orden de l segund lneF i y existe y es ms reiente que los utro fuentesD no se reompil ni se he ndD todo qued omo estF i y existeD pero se h modi(do lguno de los fuentesD se reompilr de nuevo pr otener un (hero ifeFii tulizdoF iso sD estmos dndo por supuesto vris oss si evidentesX ue tenemos l herrmient weui y est esile @en el diretorio tul o en el erAF ue hemos redo el (hero weuipsviF ue existen los utro (heros fuente xyFgD hyFgD iFg y geyFgF ue existe el ompildor gg y est esile @en el diretorio tul o en el erAF ymos mejorndo este weuipsvi rudimentrioF v primer mejor es que si l list de dependenis no e en un ni lineD podemos prtirl en dosD emplendo l rr invertid ifeFiiX xyFg hyFg 5yjetivo y dependenis iFg geyFg 5 ws dependenis gg EeifeFii xyFg hyFg iFg geyFg 5yrden dr el rer el weuipsvi hmos gndo en veloidd de teleo y en que no se reompilse todo nuevmente si no se h modi(do ndF ero en unto un fuente se modi(D nuestro weuipsvi reompil todos otr vezD unque los dems no hyn midoF isto podemos mejorrlo diendo un pso intermedio @l rein d (hero ojeto yftA y ms ojetivos @d (hero yftD prtir de d (hero fuenteAD sX 5 greion del (hero ejeutle prueFexeX unoFoj dosFoj tresFoj t EeprueFexe unoFoj dosFoj tresFoj 5 greion de los (heros ojeto unoFojX unoF t E unoF dosFojX dosF t E dosF tresFojX tresF t E tresF istmos detllndo los psos que normlmente se dn l ompilrD y que muhos ompildores relizn en un ni etpD sin que nosotros nos demos uentX primero se onvierten los (heros fuente @(heros on extensin gA digo mquin @digo ojetoD (heros on extensin yftA y (nlmente los (heros ojeto se enlzn entre s @y on ls iliotes propis del lengujeA pr dr lugr l progrm ejeutle @en wshos y indows normlmente sern (heros on extensin iiAF es onseguimos que undo modi(quemos un nio fuenteD se reompile slo este @y no todos los demsD que pueden ser muhosA y despus se pse diretmente l proeso de enlzdoD on lo que se puede gnr muho en veloidd si los mios que hemos heho l fuente son pequeosF @xotX l opin 4E4 de uro gCC es l que le indi que slo ompile los (heros de g yftD pero sin enlzrlos despusAF i tenemos vrios weuipsvi distintos @por ejemploD d uno pr un ompildor diferenteD o pr versiones ligermente distints de nuestro progrmAD nos interesr poder utilizr nomres distintosF isto se onsigue on l opin 4Ef4 de l orden weuiD por ejemplo si telemos weui Efife l herrmient weui usr un (hero de on(gurin llmdo ife o ien ifeFweuF odemos mejorr ms n estos (heros de on(gurinF or ejemploD si preedemos l orden por dD dih orden no preer esrit en pntll ifeFiiX xyFg hyFg iFg geyFg dgg EeifeFii xyFg hyFg iFg geyFg si preedemos l orden por 8 D se repetir pr los (heros indidos omo 4dependenis4F ry que usrlo en onjunin on l mro 6BBD que he refereni todos los (heros dependientesD o 6cD que se re(ere los (heros que se hyn modi(do despus que el ojetivoF opieguriddX unoF dosF tresF 8opy 6BB Xfuentes n ltim onsiderinX podemos rer nuestrs propis mrosD on l intenin de que nuestro weuipsvi resulte ms fil de leer y de mntenerD de modo que un versin ms legile de nuestro primer (hero serX pixi a unoF dosF tresF gywsv a t prueFexeX 6@pixiA 6@gywsvA EeprueFexe 6@pixiA is deirD ls mros se de(nen poniendo su nomreD el signo igul y su de(niinD y se emplen preedindols de 6 y enerrndols entre prntesisF ero todv hy ms que no hemos vistoF vs herrmients weui suelen permitir otrs posiiliddesD omo l omproin de ondiiones @on ls diretivs 43if4D 43else4 y similresA o l relizin de operiones @on los operdores estndr de gX CD BD 7D b#bD etAF uien quier profundizr en estos y otros detllesD puede reurrir l mnul de l herrmient weui que inorpore su ompildorF elgun difereni en vinuxc osF lo hy que
CAPTULO 11.
WS
reordr que en los sistems nix se distingue entr mysuls y minsulsD por lo que l herrmient se llm mkeD y el (hero de dtos wke(le o mke(le @preferile l primer nomenlturD on l primer letr en mysulsAF he igul modoD el nomre del ompildor y los de los fuentes se deen esriir dentro del wke(le extmente omo se hyn redo @hitulmente en minsulsAF
Captulo 12
Gestion de memoria.
12.1. Gestin dinmica de la memoria.
egn lo visto hst horD l reserv o signin de memori pr vetores y mtries se he de form utomti on l delrin de dihs vrilesD signndo su(iente memori pr resolver el prolem de tmo mximoD dejndo el resto sin usr pr prolems ms pequeosF esD si en un funin enrgd de relizr un produto de mtriesD sts se dimensionn pr un tmo mximo @IHHD IHHAD on dih funin se podr lulr ulquier produto de un tmo igul o inferiorD pero un en el so de que el produto se por ejemplo de tmo @QD QAD l memori reservd orresponder l tmo mximo @IHHD IHHAF is muy til el poder reservr ms o menos memori en tiempo de ejeuinD segn el tmo del so onreto que se vy resolverF e esto se llm reserv o gestin dinmi de memoriF ixisten en g dos funiones que reservn l ntidd de memori desed en tiempo de ejeuinF hihs funiones devuelvenD es deirD tienen omo vlor de retornoD un puntero l primer posiin de l zon de memori reservdF ists funiones se llmn mllo@A y llo@AD y sus delrionesD que estn en l lirer stdliFhD son omo sigueX void Bmllo@int nytesA voidBllo@int ndtosD int tmodtoA v funin mllo@A us en l memori el espio requeridoD lo reserv y devuelve un puntero l primer elemento de l zon reservdF v funin llo@A neesit dos rgumentosD el numero de elds de memori deseds y el tmo en ytes de d eldY se devuelve un puntero l primer eld de memoriF v funin llo@A tiene un propiedd diionlX iniiliz todos los loques eroF ixiste tmin un funin llmd free@A que dej lire l memori reservd por mllo@A o llo@A y que y no se v utilizrF ist funin us omo rgumento el puntero devuelto por llo@A o mllo@AF v memori no se lier por defetoD sino que el progrmdor tiene que lierrl explitmente on l funin free@AF il prototipo de est funin es el siguienteX void free@void BA e ontinuin se present un ejemplo de gestin dinmi de memori pr el produto de mtriz por vetor {y}a{x}F ry que tener en uent que reservndo memori por seprdo pr d (l de l mtrizD no se grntiz que ls (ls estn ontigus en l memoriF or otr prteD de est form se pueden onsiderr (ls de distinto tmoF il nomre de l mtriz se delr omo puntero vetor de punterosD y los nomres de los vetores omo punterosF upngse que x es un onstnte simli prede(nid on el nmero de (lsF GG delriones doule BBD BxD ByY void prod@int D doule BBD doule BD doule BAY FFF GG reserv de memori pr l mtriz a llo@xD sizeof@doule BAAY WT
CAPTULO 12.
GESTION DE MEMORIA.
WU
for @iaHY i`xY iCCA iallo@xD sizeof@douleAAY FFF GG reserv de memori pr los vetores x e y x a llo@xD sizeof@douleAY y a llo@xD sizeof@douleAY FFF prod@xD D xD yAY FFF GG de(niion de l funion prod@A void prod@int xD doule BBmtD doule BxD doule ByA {FFF} gon gestin dinmi de memori es ms fil utilizr mtries de(nids omo vetores de punteros que mtries utntis @tmin sts podrn utilizrse on memori dinmiX str reservr memori pr ls x (ls l vez y signr onvenientemente los vlores l vetor de punteros iAF il ejemplo nterior quedr del siguiente modoX GG delriones doule BBD BxD ByY void prod@int D doule BBD doule BD doule BAY FFF GG reserv de memori pr el vetor de punteros a llo@xD sizeof@doule BAAY GG reserv de memori pr tod l mtriz H a llo@xBxD sizeof@douleAAY GG signin de vlor pr los elementos del vetor de punteros for @iaIY i`xY iCCA i a iEICxY GG el resto del progrm ser idntio FFF
CAPTULO 12.
GESTION DE MEMORIA.
WV
iCCA { mtila@douleBAmllo@mBsizeof@douleAAYGB(l de m elementos B G s I WF od memori reservd on lgun de ls funiones de signin de memori se puede lierr on l funin free @ A F r lierr l memori de l mtriz dinmi mtX doule BBmtY for @iayY i`nY iCCA i free@mtil A Y
CAPTULO 12.
GESTION DE MEMORIA.
WW
CAPTULO 12.
GESTION DE MEMORIA.
IHH
de onstruir un list enlzd y rer un puntero de eer ptrEez un nodo x o d o D el operdor B de indirein plido un vrile puntero represent el ontenido del nodo puntdo por ptrEezFis deirD Bpt rEez es un tipo de dto ~ o d o F el igul que on ulquier ojetoD se puede eder los dos miemros de BptrEez en l pigur IRFSF or ejemploD l senteni siguiente esrie los dtos del nodo eerF p r intf @4 7lf4D@BptrEdezdA FdtoAY @BptrEezA miemro d t o del nodo dpuntddo por ptrEez reuin vos prntesis son neesrios lrededor de l primer prte de l expresin @ 4ptrEezA y que los operdores unitrios que preen l dereh tienen prioridd ms lt que los operdores unitrios que preen en el ldo izquierdo @el steriso de indireinAF in los prntesisD el signi(do de pt rEe v produir un error de sintxisD l intentr evlur ptrEezFdto ntes de l indirein o desrefereniF s E b m signi( lo mismo que tilizndo el operdor de selein Eb @ BpA Fm s se pueden imprimir los dtos del primer nodo de l list printf @4 7lf4 ptrEezEbdtoA Y D irror no de los errores tpios en el trtmiento de punteros es esriir l expresin Bp o ien pEb undo el vlor del puntero p es el puntero nuloD y que omo se se el puntero nulo no punt ndF
CAPTULO 12.
GESTION DE MEMORIA.
IHI
ixvegi nodoD prinipioD (nY nodo a mllo@ sizeof@iviwixyA AY nodo Eb dto a 9e9Y nodo a xvvY prinipio a (n a nodoY nodo a mllo @ sizeof@iviwixyA AY nodo Eb dto a 9f9Y nodo Eb siguiente a xvvY (n Eb siguiente a nodoY (n a (n Eb siguienteY etirr un elemento nodo a prinipioY prinipio a prinipio Eb sigY nodo Eb siguiente a xvvY void ypionQ @ixvegi pA { if @ paaxvv A printf@4xo hy elementos en oln4AY else listr@pAY } void listr @ixvegi pA { while @ pEbsig 3a xvv A { printf@4 74D pEbdtoAY papEbsigY } printf@4 74D pEbdtoAY printf@4n4AY } void leerden@hr BsD int lonA { int iaHY while @ @siagethr@AA 3a 9n9 A if @ i`@lonEIA A iCCY sia9H9Y } void mensje@A { printf@4rogrm gyven4AY printf@4iste progrm permite mnejr un golX 4AY printf@4vist endendn4AY printf@4on disiplin pspy @primero en entrrD 4AY printf@4primero en slirAn4AY } void preguntr@A { printf@4nue opion @ IEenidirD PEetirrD 4AY printf@4QEvistrD RE erminrA c n4AY }
CAPTULO 12.
GESTION DE MEMORIA.
IHP
ijemplo xomre sdiom pri ult i se quiere lmenr l informin de l medlls onseguids por los distintos pses en un olimpidF r d ps se quiere ser su nomreD su idiom y l informin de ls medlls onseguidsF he d medll de d ps se quiere onoer el nomre del deportist que l onsiguiD el nomre de l prue en l que l onsigui y el tipo de medll @oroD plt o roneA
CAPTULO 12.
GESTION DE MEMORIA.
IHQ
en el puntero trs del nodo orrrF vos psos seguirX IF fsqued del nodo que ontiene el dtoF e h de tener l direin del nodo eliminr y l direin del nteriorF PF il puntero delnte del nodo nterior tiene que puntr l puntero delnte del nodo eliminrD esto en el so de no ser el nodo eerF QF il puntero trs del nodo siguiente orrr tiene que puntr l puntero trs del nodo eliminrD esto en el so de no ser el nodo ltimoF RF in so de que el nodo eliminr se el primeroD ezDse modi( ez pr que teng l direin del nodo siguienteF SF or ltimoD se lier l memori oupd por el nodoF v odi(in se present en l siguiente funinX void eliminr @xodoBB ezD item entrdA xodoB tulY int enontrdo a yY itul BezY G B ~ u i ede squed B G while @@tul3axvvA 8 8 @3enontrdoAA E enontrdo a @tulEbdto a E entrdAY if @3enontrdoA tul a tul E b deldritY s G B inle de nodo nterior on s i q i i i ~ n t eB G if @tul 3 a xvvA i G B e distinque entre q u e el nodo sed el eer o del resto de l list B G if @tul a a 4ezdA i 4ez a tulEbdelnteY if @tulEbdelnte 3 a xvvA tulEbdelnteEbtrs a xvvY I else if @tulEbdelnte 3 a xvvA G B xo es el iiltimo nodo B G { tul E b trs Ebdelnte a tul E b delnteY tul E b delnte E b trds a tul E b trsY i else { G B ltimo nodo B G tul E b trs E b delnte a xvvY free@tuIAY i }
CAPTULO 12.
GESTION DE MEMORIA.
IHR
l E b i g u i n t E Y d t o if @3enontrdoA aa e n t r d A Y { tul a tul E b siguienteY I I enontrdo a @tulEbsiyui~enteEbdto a entrdAY a G B inle de nodo nterior on s i g i i i e n t e B G if @enontrdoA { xodoB p Y p a tulEbsiguienteY G B xodo il eliminr B G if @Bv a a @BvAEbsiguienteA G B vist on un solo nodo B G Bv a xvvY else { if @ p aa BvA i Bv a tulY G B e o r r el elemento referenido por vY el nuevo eso s d list es el nterior B G } tulEbsiguiente a pEbsiquienteY i f r e e @s Y i }
CAPTULO 12.
GESTION DE MEMORIA.
IHS
permitids en un ol sonX y y y y grein de un ol vF eri(in de que un ol estd vF edir un dto l (nl de un olF iliminin de los dtos de l ez de l olF es igul que ls pilsD ls ols se pueden implementr utilizndo rrys o lists enlzdsF in est sein se onsider l iinplementin utilizndo rrysF v de(niin de un old h de ontener un rry pr lmenr los elementos de l olD y dos mrdores o punteros @vrilesA que mntienen ls posiiones frente y (nl de l ol Y es deirD un mrdor puntndo l posiin de l ez de l ol y el otro l primer espio vo que sigue l (nl de l olF gundo un elemento se de l olD se veri( si el inrdor (nl punt un posiin vlidD entones se de el elemento l ol y se inrement el mrdor (nl en IF gundo un elemento se elimin de l olD se he un prue pr ver si l ol est v yD si no es sD se reuper el elemento de l posiin puntd por el mrdor @punteroA de ez y ste se inrement en IF iste proedimiento funion ien hst l primer vez que el puntero de ez o eer lnz el extremo del rry y el rry qued o ien vo o ien llenoF n ol dee mnejr diferentes tipos de dtosY por est irunstniD se de(ne en primer lugr el tipo genrio ipohtoFv lse gol ontiene un list @listAuyo mximo tmo se determin por l onstnte wxmF e de(nen dos tipos de vriles puntero o mrdoresD frente y f iFndIF sts son los punteros de eer y ol o (nl respetivmenteF vs operiones tpis de l ol sonX snsertrDiliminrDviD l lenDy prenteuF snsertr tom un elernento del tipo ipohto y IH insert en el (nl de l olF iliminr elimin @quitA y devuelve el elemento de l ez o frente de l olF v operin prente devuelve el vlor del elemento en el frente de l olD sin eliminr el elemento yD por tntoD no modi( l olF v operin vi omprue si l ol est vD es neesrio est omproin ntes de eliminr un elementoF llen omprue si l pil est llenD est omproin se reliz ntes de insertr un nuevo miemroF i ls preondiiones pr snsertr y iliminr se violnD el progrm dee imprimir un mensje de error y terminrF ispei(in del tipo ol v delrin del tipo de dto gol y los prototipos de ls operiones de l ol se lmen en un rhivo de eer 4olrryFh4F 5inlude `stdioFhb 5inlude `stdliFhb 5de(ne wx9i9m Iy y typedef strut i int frenteY int (nlY ipohto listwxmY }golY G B yperiones del t i p o de dtos g o l B G G B operiones de modiiin d l ol B G void grergol@golB A Y G B iniiliz l ol omo v i d B G void snsertr@golB Dipohvo elementoAY ipohto iliminr@golB A Y void forrrol @golB A Y G B eso sd ol B G ipohto prente@goI A Y G B mtodos de veri(in del estdo de l ol B G inI vongitud@goI AY inI vi@goI A Y int llen@goI AY v delrin que se h heho del tipo gol ontiene un rry pr el lmenmiento de los elementos de l ol y dos mrdores o punterosX uno puntndo l posiin de l ez o eer de l ol y l otr l primer espio vo ontinuin del (nl de l olF gundo un elemento se de l olD se he un test @prueA pr ver si el mrdor (nl punt un posiin vlidD ontinuin se de el elemento l ol y el mrdor (nl se inrement en IF gundo se quit @eliminA un elemento de l olD se reliz un test @prueA pr ver si l ol est vD y si no es sD se reuper el elemento que se enuentr en l posiin puntd por el mrdor de ez y el mrdor de ez se inrement en IF iste proedimiento funion ien hst l primer vez que el mrdor (nl lnz el (nl del rryF i durnte este tiempo se hn produido eliminionesD hr espio vo l prinipio del rryF in emrgoD puesto que el mrdor (nl punt l extremo del rryD implir que l ol est llen y ningn dto ms se dirF e pueden desplzr los dtos de modo que l ez de l ol vuelve l prinipio del rry d vez que esto suedeD pero el desplzmiento de dtos es ostoso en trminos de tiempo de omputdorD espeilmente si los dtos lmendos en el rry son estruturs de dtos grndesF il medio ms e(ienteD sin emrgoD pr lmenr un ol en un rryD es utilizr un tipo espeil de rry que junte el extremo (nl de l ol on su extremo ezF l rry se denomin rry irulr y permite que el rry ompleto se utilizr pr lmenr elementos de l ol sin neesidd de que ningn dto se despleF yperiones de l ol n ol permite un onjunto limitdo de operionesD pr iniilizr l olD pr dir un nuevo elemento @ snsertrA o quitrGeliminr u n elemento @iliminrAF il tipo gol proporion tmin frenteDque permite ver el primer elemento de l olF r est implementinD on rry irulrD el tipo ol es el siguienteX 5de(ne wxm IHH typedef strut int frenteY int (nlY ipohto listwxmY }golY grerol v primer operin que se reliz sore un ol es iniilizrl pr que ontinuin puedn dirse elementos l olF void grergol@golB A i Ebfrente a y Y Eb(nl a y Y I snsertr entes de que omiene el proeso de inserinD el ndie (nl punt l ltimo elemento insertdoF il nuevo elemento se sit en l posiin siguienteF il lulo de ls posiiones suesivs se onsigue
CAPTULO 12.
GESTION DE MEMORIA.
IHT
medinte el operdor resto @ 7 A F hespus de situr el elemento de l listD el ndie (nl se dee tulizr pr puntr en l siguiente posiinF G B insertr elemento en l ol B G void snsertr@golB sipohto elementoA { G B terminr si l ol est8 llen B G if @llen@AA i puts @4desordmiento old4A Y exit @IAY s G B signr elemento d listd y t u d l i z r (nl B G Ebtinl a @Eb(nl C IA8 wdxdmY Eblistd Ebf inll a elementoY iliminr v operin ~l iminr orr o elimin un elemento del frente de l olD un posiin que se referenE i por el ndie fr enteFgomienz el proeso de eliminin vnzndo frente y que se estlei que refereni l nterior elementoF frente a @frentEe C IA 7 wxmY in el modelo irulrD l ez se dee volver posiionr en el siguiente elemento de l list utilizndo el operdor resto @ 8 A F il digo fuente esX G B orrr elemento del frente de sd old y devuelve su vlor ipohto iliminr@golB A i ipomto duxY GBsi list est vD trminr ev progrm B G @vid@sbAA if { puts@4gIiminuFinde uni old v4A Y exit @IAY I G B dvdnzuFI frente y devolvr primero d e l frente B G Ebfrente a @ E b t r e n t C I A 7 wdx9sdmyY ux a E b l ~ t ~ E b f r e n t Y ieturn uxY t prente v operin i9rente otiene el elemento del frente de l olD un posiin que se refereni por el ndie frenteF ipohto prente@goI A i i p o h t o uxY GBsi l ol e s t 8 viiD tprminiir el progrm B G if @vi@@IA A puts @4ilemento rente de und o l d v u F 4 A Y exit @IAY vi vs operiones que preguntn por el estdo de l ol pueden implementrse preguntndo por los mpos frente y f inuFIFv operin oviF prue si l ol no tiene elementosF int vi@goI yA s return @F r e n t e f aa yF f vt9kilA Y i llen v operin HI s e n d prue si l ol no puede ontener ms elementosF int llen@goId A i return @Ffrente a X @gAF(iiuFlClAwx9rmgAAY I
12.11.2. PILA.
vist endendD on disiplin vspyF n pil @stkA es un olein ordend de elementos los que slo se puede eder por un nio lugr o extremo de l pilF vos elementos de l pil se den o quitn @orrnA de l mism slo por su prte superior @imA de l pilF ste es el so de un pil de pltosD un pil de lirosD etF vs operiones que sirven pr de(nir un pil y poder mnipulr su ontenido son ls siguientes @no tods ells se implementn l de(nir un pilAF ipo de dtoY hto que se lmen en l pilF snsertr @pushAY snsertr un dto en l pilF uitr @popAY r @quitrA un dto de l pilF il vY gompror si l pil no tiene elementosF il llenY gompror si l pil est llen de elementosF vimpir pilY uitr todos sus elementos y dejr l pil vF mo de l pilY xmero de elementos mximo que puede ontener l pilF gimY ytiene el elemento im de l pilF n pil se puede implementr medinte rmys o medinte lists enlzdsF n implementin estti se reliz utilizndo un rry de tmo (jo y un implementin dinmi medinte un list enlzdF in g pr de(nir un pil on rrys se utiliz un estruturF vos miemros de l estrutur pil inluyen un list @rryA y un ndie o puntero l im de l pilY dems un onstnte on el mximo nmero de elementosF il tipo pil junto l onjunto de operiones de l pil se pueden enerrr en un rhivo de inlusin @pi hAF es utilizr un rry pr ontener los elementos de l pil hy que tener lF en uent que el tmo de l pil no puede exeder el nmero de elementos del rry y l ondiin pil llen ser signi(tiv pr el diseoF il mtodo usul de introduir elementos en un pil es de(nir elfondo de l pil en l posiin y del rry y sin ningn elemento en su interiorD es deirD de(nir un pil viY ontinuinD se vn introduiendo elementos en el rry @en l pilA de modo que el primer elemento dido se introdue en un pil v y en l posiin yD el segundo elemento en l posiin I D el siguiente en l posiin P y s suesivmenteF gon ests operiones el puntero @puntdorA que punt l im de l pil se v inrementndo en I d vez que se de un nuevo elementoY es deirD el puntero de l pil lmen el ndie del rry que se est utilizndo omo im de l pilF vos lgoritmos de introduir insertr dushA y quitr sr @ p o p A dtos de l pil utilizn el ndie del rry omo puntero de l pil sonX snsertr @ p u s h A IFveri(r si l pil no e s t llenF PFsnrementr en I el puntero de l pilF cFelmenr elemento en l posiin del puntero de l pilF uitr @popA IFsi l pil no est vF PFveer el elemento de l posiin del puntero de l pilF QFherementr en I el puntero de l pilF in el so de que el rry que de(ne l
CAPTULO 12.
GESTION DE MEMORIA.
IHU
pil teng mnioil elementosD ls posiiones del rryD es deirD el ndie o puntero de l pilD estrn omprendids en el rngo y mnioilEI elementosD de modo que en un pil llen el puntero de l pil punt mnioilE I y en un pil viu el puntero de l pil punt E I D y que yD terimenteD ser el ndie del primer elementoF ispei(in del tipo pil v delrin de un pil inluye los dtos y operiones y itdos nteriorE menteF IF htos de l pil @tipo i poutED que es onveniente de(nirlo medinte typedefAF PF eri(r que l pil no est llen ntes de intentr insertr o poner @`#`push A elemento en l un A pil Y veri(r que un pil no est v ntes de intentr quitr sr @ q m p ~un elemento de l pilF i ests preondiiones no se umplen se dee visulizr un mensje de error y el progrm dee terminrF Q F r9 i I aivf devuelve s @verdderoA si l pil est v y y @flsoA en so ontrrioF RF i i d l l n d devuelve I @verdderoA si l pil est llen y y @flsoA en so ontrrioF ists funiones se utilizn pr veri(r ls operiones del prrfo PF S F vDi m p i r 9 i ~ F e lirnpi o v l pilD dejndol sin elementos y disponile pr otrs tresF I TF ~ i r n ~devuelve el vlor situdo en l im de l pilD pero no se derernent el puntero de l D~D pilD y que l pil qued inttF yperiones de veri(in del estdo de l pil e dee proteger l integridd de l pilD pr lo ul el tipo i I h de proporionr operiones que omprueen el estdo de l pilX pil vi o pil llenuF esimismo se h de de(nir un operin que resture l ondiin iniil de l pilD que fue determind por el onstrutor greri l @im de l pil E s A D vimpirpilF v funin ilvi omprue @veri(A si l im de l pil es EIF in ese soD l pil est v y se devuelve un I @verdderoAY en so ontrrioD se devuelve y @flsoAF G B veri(r pil v B G int ilid@IId A { GBdevuelve el vlor lgio rrsultdnte de expresin im return Fim a a E I Y i aa EI B G v funin ilvlen omprue @veri(A si l im es wxmilEsF in ese soD l pil est llen y se devuelve un I @verdderoAY en so ontrrioD se devuelve y @flsoAF G B veri(r si l pil est l l e n i B G int ilvlen @il A i G B devuelve vlor l q i o de sd e x p r e i r i i m d return Fim a a wxmilEIY I or ltimo l operin vimpir i 9 g a a wxdrndilEI BG reiniiliz l im su vlor iniil on l pil v @EIAF I ~ ~ I G B quitr todos los elementos d c l p i l B G i void vimpiril@ilB A { Ebim a EIY i
12.11.3. Arboles
il rol es unDestrutur de dtos muy importnte en informti y en ienE is de l omputinF vos roles son estruturs no lineles ontrrio que l los rrys y ls lists enlzds que onstituyen estruturs linelesF vos roles son muy utilizdos en informti pr representr frmuls lgeris omo un mtodo e(iente pr squeds grndes y omplejsD lis ts dinmis y pliiones diverss tles omo inteligeni rti(il o lgoE ritmos de ifrdoF gsi todos los sistems opertivos lmenn sus rhivos en roles o estruturs similres rolesF edems de ls pliiones itE dsD los roles se utilizn en diseo de ompildoresD proeso de texto y lgoE ritmos de squedF in el ptulo se estudir el onepto de rol generl y los tipos de roE les ms usulesD inrio y inrio de squedF esimismo se estudirn lguE ns pliiones tpis del diseo y onstruin de rolesF n rol onst de un onjunto (nito de elementosD denomindos nodos y un onjunto (nito de lnes dirigidsD denominds rmsD que onetn los nodosF il nmero de rms soido on un nodo es el grdo del nodoF he(niin IX n rol onst de un onjunto (nito de elementosD llmdos nodos y un onjunto (nito de lnes dirigidsD llmds rmsD que onetn los nodosF he(niin PX n rol es un onjunto de uno o ms nodos tles queX IF ry un nodo disedo espeilmente llmdo rzF PF vos nodos restntes se dividen en nPo onjuntos disjuntos tles que DFFF Den donde d uno de estos onjuntos es un rolF e cDFFF se les denomin suroles del rzF i un rol no est voD entones el primer nodo se llm rzF ysrvese en l de(niin P que el rol h sido de(nido de modo reursivo y que los suroles se de(nen omo rolesF edems del rz exif Xn muhos trminos utilizdos en l desripin de los triutos de un rolF in l pigur ITFRD el nodo e es el rzF tilizndo el onepto de roles genelgiosD un nodo puede ser onsiderdo omo pdre si tiene nodos suesoresF istos nodos suesores se llmn hijosF or ejemploD el nodo f es el pdre de los hijos i y pF il pdre de r es el nodo hF n rol puede representr diverss generiones en l fmiliF vos hijos de un nodo y los hijos de estos hijos se llmn desendientes y el pdre y uelos de un nodo son sus sendientesF or ejemploD los nodos iD pD s y t son desendientes de fF gd nodo no rz tiene un nio pdre y d pdre tiene ero o ms nodos hijosF hos o ms nodos on el mismo pdre se llmn hermnosF
CAPTULO 12.
GESTION DE MEMORIA.
IHV
n nodo sin hijosD tles omo iD sD tD q y r se llmn nodos hojF il nivel de un nodo es su distni l rzF il rz tiene un distni ero de s mismD por lo que se die que el rz est en el nivel yF vos hijos del rz estn en el nivel s D sus hijos estn en el nivel P y s suesivmenteF n os importnte que se prei entre los niveles de nodos es l relin entre niveles y hermnosF vos hermnos estn siempre l mismo nivelD pero no todos los nodos de un mismo nivel son neesrimente hermnosF or ejemploD en el nivel P @pigF ITFSAD g y h son hermnosD l igul que lo son qD r e sD pero h y q no son hermnos y que ellos tienen diferentes pdresF ixisten vris forms de diujr los triutos de los roles y sus nodosF n mino es un seueni de nodos en los que d nodo es dyente l siguienteF gd nodo del rol puede ser lnzdo @se lleg lA siguiendo un nio mino que omienz en el rzF in l pigur ITFSD el mino desde el rz l hoj sD se represent por epsF snluye dos rms distints ep y psF v ltur o profundidd de un rol es el nivel de l hoj del mino ms lrgo desde l rz ms unoF or de(niin9 l ltur de un rol vo es yF v pigur ITFS ontiene nodos en tres niveles X yD I y PF u ltur es Q F n rol se divide en surolesF n surol es ulquier estrutur onetd por dejo del rzF gd nodo de un rol es l rz de un surol que se de(ne por el nodo y todos los desendientes del nodoF il primer nodo de un surol se onoe omo el rz del surol y se utiliz pr nomrr el surolF edemsD los suroles se pueden sudividir en surolesF in l pigur ITFSD fgh es un surol l igul que i y pqrsF ysrvese que por est de(niinD un nodo simple es un surolF or onsiguienteD el surol f se puede dividir en suroles g y h mientrs que el surol p ontiene los suroles qD r e sF e die que qD rD sD g y h son suroles sin desendientesF il onepto de surol ondue un de(niin reursiv de un rolF n rol es un onjunto de nodos queX IF y ien es voD o ien PF iene un nodo determindo llmdo rz del que jerrquimente desienden ero o mh surolesD que son tmin rolesF n rol est equilirdo undoD ddo un nmero mximo de k hijos pr d nodo y l ltur del rol hD d nodo de nivel I ` h E I tiene extmente k hijosF il rol est equilirdo perfetmente undo d nodo de nivel I ` h tiene extmente k hijosF epresentin de un rol eunque un rol se implement en un lenguje de progrmin omo g medinte punterosD undo se h de representr en ppelD existen tres forms diferentes de representinF v primer es el digrm o rt de orgnizin utilizd hst hor en ls diferentes (gursF il trmino que se utiliz pr est notin es el de rol generlF epresentin en niveles de profundidd iste tipo de representin es el utilizdo pr representr sistems jerrquios en modo texto o nmero en situiones tles omo fturinD gestin de stoks en lmenesD etF or ejemploD en ls pigurs ITFV y ITFW se prei un desomposiin de un omputdor en sus diversos omponentes en un estrutur rolF ytro ejemplo podr ser un distriuin en rol de ls piezs de un tiend de remios de utomviles distriuids en niveles de profundidd segn los nmeros de prte o digos de d repuesto @motorD ujD terD pilotoD froD emelleedorD etFAF epresentin de list ytro formto utilizdo pr representr un rol es l list entre prntesisF st es l notin utilizd on expresiones lgerisF in est representinD d prntesis ierto indi el omienzo de un nuevo nivelY d prntesis errdo omplet un nivel y se mueve hi rri un nivel en el irolF v notin en prntesis de l pigur ITFQ esX e @ @ D hA D i D p D @qDrDsAAF
CAPTULO 12.
GESTION DE MEMORIA.
IHW
por rms del propio rolD esto es su vez un rolF e un surol de un rol eX si pr d nodo n de eD e ontiene tmin todos los desendientes de n en eF e se llm un surol ompleto de eF n rol est equilirdo undoD ddo un nmero mximo u de hijos de d nodo y l ltur del rol hD d nodo de nivel k ` hEI tiene extmente u hijosF il rol est equilirdo perfetmente entre d nodo de nivel s`h tiene extmente u hijosF
CAPTULO 12.
GESTION DE MEMORIA.
IIH
myores que lF 5inlude `stdioFhb 5inlude `stdliFhb strut rol { GB il tipo se en sX BG int dtoY GB E un dto @enteroA BG strut rolB hijoszqY GB E puntero su hijo izquierdo BG strut rolB hijoherY GB E puntero su hijo dereho BG }Y void isriir@strut rol BpuntA { if @puntA GB i no hemos llegdo un hoj BG { isriir@puntEbhijoszqAY printf@4 7d 4DpuntEbdtoAY isriir@puntEbhijoherAY }Y GB GB GB wir l izqd reursivmente BG isrie el dto del nodo BG luego mir por l dereh BG }Y void snsertr@strut rol BBpuntD int vlorA { strut rol B tula BpuntY if @tul aa xvvA GB i hemos llegdo un hoj BG { Bpunt a @strut rol BA mllo @sizeof@strut rolAAY GB eservmos memori BG tula BpuntY tulEbdto a vlorY GB qurdmos el dto BG tulEbhijoszq a xvvY GB xo tiene hijo izquierdo BG tulEbhijoher a xvvY GB xi dereho BG } else GB i no es hoj BG if @tulEbdto b vlorA GB enuentr un dto myor BG snsertr@8tulEbhijoszqD vlorAY GB wir por l izquierd BG else GB in so ontrrio @menorA BG snsertr@8tulEbhijoherD vlorAY GB wir por l dereh BG }Y GB guerpo del progrm BG int min@A { strut rol Brol a xvvY snsertr@8rolD SAY snsertr@8rolD QAY snsertr@8rolD UAY snsertr@8rolD PAY snsertr@8rolD RAY snsertr@8rolD VAY snsertr@8rolD WAY isriir@rolAY return HY }
CAPTULO 12.
GESTION DE MEMORIA.
III
si no es vio entones iniio v e r los dtos en el r i G de reorden @surol iGquierdo del r r i l z de A reorden @surol dereho del r d i v de A (n egl in el reorrido preordenD el rz se proes ntes que los suroles izquierdo y derehoF i utilizmos el reorrido preorden del rol de l pigur ITFPP se visit primero el rz @nodo e AF e ontinuin se visit el surol izquierdo de eD que onst de los nodos fD h y i F hdo que el surol es su vez un rolD se visitn los nodos utilizndo el orden x s h F or onsiguienteD se visit primero el nodo fD despus h @izquierdoA yD por ltimoD i @derehoAF e ontinuin se visit el surol dereho de eD que es un rol que ontiene los nodos D p y he nuevo siguiendo el orden xshD se visit primero el nodo gD ontinuin p @izquierdoA yD por ltimoD q @derehoAF in onseueni el orden del reorrido preorden pr el rol de l pigur ITFPP es qF eEfEhEiEgEpEqF n re(nmiento del lgoritmo esX lgoritmo preyrden @vl riU `puntero nodosbA eorrer un rol inrio en seueni nodoEizdoEdho re riz es el nodo de entrd del rol o surol ost d nodo se proes en orden I si @riz no es nuloA I proesr @rizA P preyrden @riz E b urolzdoA Q preyrden @riz E b surolhho P return v funin preorden muestr el digo fuente en g del lgoritmo y itdo nteriormenteF il tipo de los dtos es enteroF typedef int ipoilementoY strut nodo { ipoilemento dtosY strut nodo BhijoEizdoD BhijoEdhoY }Y typedef strut nodo xodoY void preorden @xodo B p A s if @A i printf @4 7d 4 D p E b ddtosA Y reyrden@p E b hijoEizdoAY reyrden@p E b hijoEdhoAY I I qr(s de ls llmds reursivs de preorden il reorrido reursivo de un rol se puede mostrr gr(mente por dos mtodos distintosX I A pseo preorden del rolY PA reorrido lgortmioF n medio gr(o pr visulizr el reorrido de un rol es imginr que se est dndo un pseo lrededor del rol omenzndo por l rz y siguiendo el sentido ontrrio ls gujs del relojD un nodo ontinuin de otro sin psr dos vees por el mismo nodoF il mino seldo por un lne ontinu que omienz en el nodo I @pigF ITFPI A muestr el reorrido preorden ompletoF in el so de l pigur ITFPP el reorrido es e r h i g p qF il otro medio gr(o de mostrr el reorrido lgortmio reursivo es similr ls diferentes etps del lgoritmoF es l primer llmd proes l rz del rol e F e ontinuin se llm reursivmente proesr surol izquierdoD proes el nodo fF v terer llmd proes el nodo hDque es un surol formdo por un nio nodoF in ese puntoD se llm en preordenD on un puntero nuloD que produe un retorno inmedito l surol pr proesr su surol derehoF heido que el surol dereho de h es tmin nuloD se vuelve l nodo f de modo que v proesr @visitrA su surol derehoD iF hespus de proesr el nodo iD se hen dos llmds msD un on el puntero izquierdo null de i y otr on su puntero dereho nullF gomo el surol h sido totlmente proesdoD se vuelve l rz del rol y se proes su surol derehoD gF hespus de proesr g D llm pr proesr su surol izquierdo p F e hen dos llmds on nullD vuelve l nivel donde est el nodo 9 pr proesr su rm dereh q F en se relizn dos llmds msD un l surol izquierdo null y otr l surol derehoF intones se retorn en el rolD se onluye el reorrido del rolF
CAPTULO 12.
GESTION DE MEMORIA.
IIP
del rolF void enorden @xodo BpA s if @A I enorden@p Eb hijoEizqdoAY printf @4 7d 4Dp E b dtosA Y enorden @p Eb hijoEdhoAY G B reorrer surol izquierdo B G G B visitr l rz B G G B reorrer surol dereho B G }}
CAPTULO 12.
GESTION DE MEMORIA.
IIQ
insert omo un hoj del rolF vos restntes elementos se pueden situr filmenteF n propiedd de los roles inrios de squed es que no son nios pr los mismos dtosF yiegsyxi i x fyvi flxely hi fihe he lo expuesto se dedue que los roles inrios tienen nturlez reursiv y en onseueni ls operiones sore los roles son reursivsD si ien siempre tenemos l opin de relizrls de formc itertivF ists operiones sonX y fsquedu de un nodoF snserin de un nodoF ueorrio de un rolF forrudo de un nodoF fsqued v squed de un nodo omienz en el nodo rz y sigue estos psosX IF v lve usd se ompr on l lve del nodo rzF PF i ls lves son igulesD l squed se detieneF QF i l lve usd es myor que l lve rzD l squed se renud en el surol derehF i l lve usd es menor que l lve rzD l squed se renud on el surol izquierdoF fusr un informin espe( i se dese enontrr un nodo en el rol que onteng l informin sore un person espe(F v funin usr tiene dos prmetrosD un puntero l rol y un nmero de intrul pr l person requeridF gomo resultdoD l funin devuelve un puntero l nodo en el que se lmen l informin sore es personY en el so de que l informin sore l person no se enuentr se devuelve el vlor yF il lgoritmo de squed es el siguienteX IF gompror si el rol est voF in so (rmtivo se devuelve yF i l rz ontiene l personD l tre es filX el resultdo esD simplementeD un puntero l rzF PF i el rol no est voD el surol espe(o depende de que el nmero de mtrul requerido es ms pequeo o myor que el nmero de mtrul del nodo rzF QF v funin de squed se onsigue llmndo reursivmente l funin usr on un puntero l surol izquierdo o dereho omo prinetroF il digo g de l funin u s r F esX xodoB usr @xodoB p D i int usddoA if @ 3 p A return y Y else i f @usdo a a p E b nummdtA return pY else if @usdo ` p E b nummdtA return usr @ p E b i z d i i D usdoAY else G return usr @ p E b d h D usdoAY i snsertr un nodo n rtersti fundmentl que dee poseer el lgoritmo de inserin es que el rol resultnte de un inserin en un rol de squed h de ser tmin de squedF in eseniD el lgoritmo de inserin se poy en l lolizin de un elementoD de modo que si se enuentr el elemento @luveA usdoD no es neesrio her ndY en so ontrrioD se insert el nuevo elemento justo en el lugr donde h do l squed @es deirD en el lugr donde hr estdo en el so de existirAF entes de insertr V hespus de insertr V pigur ITFPTF snserin en un rol inrio de squedF or ejemploD onsidrese el so de dir el nodo V l rol de l pigur ITFPTF e omienz el reorrido en el nodo rz PSY l posiin V dee estr en el surol izquierdo de PS @V ` PSAF in el nodo IHD l posiin de V dee estr en el surol izquierdo de IHD que est tulmente voF il nodo V se introdue omo un hijo izquierdo del nodo I yF punin insertr @ A v funin insertr que pone nuevos nodos es senillF e deen delrr tres rE gumentosX un puntero l rz del rolD el nuevo nomre y nmero de mtrul de l personF v funin rer un nuevo nodo pr l nuev person y lo insert en el lugr orreto en el rol de modo que el rol permnez omo inrio de squedF v operin de inserin de un nodo es un extensin de l operin de squedF vos psos seguir sonX IF esignr memori pr un nuev estrutur nodoF PF fusr en el rol pr enontrr l posiin de inserin del nuevo nodoD que se olor omo nodo hojF QF inlzr el nuevo nodo l rolF il digo g de l funinX void insertr @xodoBB rizD int nuevomtD hr BnuevoEnomreA i if @ 3 @BrizAA Briz a grerxodo@nuevoEmtD nuevoEnomreA Y else if @nuevomt i @BrizA E b nummtA insertr @8@@BrizA E b izdAD nuevomtD nuevoEnomreAY else insertr @ 8 @ @BrizA E b dhAD nuevomtD nuevoEnomreAY I i el rol est voD es fil insertr l entrd en el lugr orretoF il nuevo nodo es l rz del rol y el puntero riz se pone puntndo ese nodoF il prmetro riz dee ser un prmetro refereni y que dee ser ledo y tulizdoD por es rzn se delr puntero puntero @xodoB BA F i el rol no est voD se dee elegir entre insertr el nuevo nodo en el surol izquierdo o derehoD dependiendo de que el nmero de mtrul de IP nuev person se ms pequeo o myor que el nmero de mtrul en l rz del rolF iliminin v operin de eliminin de un nodo es tmin un extensin de l operin de squedD si ien ms omplej que l inserin deido que el nodo suprimir puede ser ulquier y l operin de supresin dee mntener l estrutur de rol inrio de squed despus de l eliminin de dtosF vos psos seguir sonX IF fusr en el rol pr enontrr l posiin de nodo eliminrF PF ejustr los punteros de sus nteesores si el nodo suprimir tiene menos de P hijosD o suir l posiin que ste oup el nodo ms prximo en lve @inmeditmente superior o inmeditmente inferiorA on ojeto de mntener l estrutur de rol inrioF eorridos de un rol ixisten dos tipos de reorrido de los nodos de un rolX el reorrido en nhur y el
CAPTULO 12.
GESTION DE MEMORIA.
IIR
reorrido en profundiddF in el reorrido en nhur se visitn los nodos por nivelesF r ello se utiliz un estrutur uxilir tipo ol en l que despus de mostrr el ontenido de un nodoD empezndo por el nodo rzD se lmenn los punteros orrespondientes sus hijos izquierdo y derehoF he est form si reorremos los nodos de un nivelD mientrs mostrmos su ontenidoD lmenmos en l ol los punteros todos los nodos del nivel siguienteF il reorrido en profundidd se reliz por uno de tres mtodos reursivosX preordenD inorden y postordenF il primer mtodo onsiste en visitr el nodo rzD su rol izquierdo y su rol derehoD por este ordenF il reorrido inorden visit el rol izquierdoD ontinuin el nodo rz y (nlmente el rol derehoF il reorrido postorden onsiste en visitr primero el rol izquierdoD ontinuin el dereho y (nlmente el rzF preorden en orden postorden z szdo szdo szdo z hho hho hho z heterminin de l ltur de un rol v lturu de un rol depender del riterio que se sig pr de(nir diho oneptoF esD si en el so de un rol que tiene nodo rzD se onsider que su ltur es ID l ltur del rol es PD y l ltur del rol es RFor ltimoD si l ltur de un rol on un nodo es I D l ltur de un rol vo @el puntero es x v v A es yF v ltur de un rol es I ms que l myor de ls lturs de sus suroles izquierdo y derehoF
Captulo 13
Ficheros
13.1. Flujos.
n )ujo @stremA es un strin que se re(ere un )ujo o orriente de dtos que )uyen entre un origen o fuente @produtorA y un destino o sumidero @onsumidorAF intre el origen y el destino dee existir un onexin o nl @`#`pipeFA por l que irulen los dtosF v pertur de un rhivo supone estleer l onexin del progrm on el dispositivo que ontiene l rhivoD por el nl que omuni el rhivo on el progrm vn )uir ls seuenis de dtosF ry tres )ujos o nles iertos utomtimenteX extern psvi BstdinY extern psvi BstdoutY extern psvi BstderrY ists tres vriles se iniilizn l omenzr l ejeuin del progrm pr dmitir seuenis de rteresD en modo textoF u ometido es el siguienteX stdin stdout stderr soi l entrd estndr @teldoA on el progrmF soi l slid estndr @pntllA on el progrmF soi l slid de mensjes de error @pntllA on el progrmF es undo se ejeut printf @4glle wyorAF Y se esrie en stdoutD en pntllY si se 8xA dese leer un vrile enter on snf@4 7d4D Y se ptn los dgitos de l seueni de entrd 9sA stdinF il eso los rhivos se he on un ufetE intermedioF e puede pensr en el u'er omo un rry donde se vn lmenndo los dtos dirigidos l rhivoD o desde el rhivoY el hufer se vuel undo de un form u otr se d l orden de virloF or ejemploD undo se llm un funin pr leer del rhivo un denD l funin lee tntos rteres omo quepn en el ufetEF e ontinuin se otiene l den del uferY un posterior llmd l funin otendr l siguiente den del u'er y s suesivmente hst que se quede vo y se llene on un llmd posterior l funin de leturF il lenguje g trj on rhivos on uferD y est disedo pr eder un mpli gm de dispositivosD de tl form que trt d dispositivo omo un seueniD pudiendo her seuenis de rteres y seuenis inrisF gon ls seuenis se simpli( el mnejo de rhivo en gF
CAPTULO 13.
FICHEROS
IIT
unsigned hr Bu'erD BurpY unsigned istempY short tokenY }psviY il detlle de los mpos del tipo psvi puede mir de un ompildor otroF el progrmdor le interes ser que existe el tipo psvi y que es neesrio de(nir un puntero psvi por d rhivo proesrF wuhs de ls funiones pr proesr rhivos son del tipo psvi BD y tienen rgumento@sA de ese tipoF
CAPTULO 13.
FICHEROS
IIU
5 inlude `stdioFhb min@ A { psvi BfpY FFF fp a fopen @ 4dtos4D 4r4 AY FFF flose @ fp AY FFF }
CAPTULO 13.
FICHEROS
IIV
pX isrie el ontenido de l den puest omo primer prmetro de l funinF il rter nulo no se esrie en el (heroF i se produe lgn error devuelve iyp y si todo v ien devuelve un vlor no negtivoF v eer `stdioFhbF int fputs@vriledenDpuntero(heroAY int fputs@textoDpuntero(heroAY psxpX isrie en el (hero ulquier tipo de vlorD densD nmeros y rteresF ist funin tiene el mismo formto que printfF ry que indirle el punteroD el identi(dor de formto y nomre de l vriles o vriles esriirF geer `stdioFhbF fprintf@puntero(heroDtextoAY fprintf@puntero(heroidenti(dorDvrAY fprintf@puntero(hident@esAformtoDvrile@sAAY
CAPTULO 13.
FICHEROS
IIW
lrsr@AY if@@punt(hafopen@4hlFtxt4D4r4AAaaxvvA { printf@4irror en l pertur4AY exit@HAY } printf@4IFvii vie e vien4AY printf@4PFvii gehixenn4AY printf@4ilegir opionX 4AY snf@4 7d4D8optAY 1ush@stdinAY lrsr@AY swith@optA { se IX letr@AY rekY se PX frse@AY rekY } geth@AY flose@punt(hAY } void letr@voidA { hr taHY for@Yt3aiypYA { taget@punt(hAY printf@4 74DtAY } } void frse@voidA { hr frseQIY fgets@frseDQHDpunt(hAY printf@4 7s4DfrseAY }
CAPTULO 13.
FICHEROS
IPH
piypX hetermin el (nl de un (hero inrioF e utiliz siempre que se relizn onsultsD informes y listdosD v soido un ule que reorre todo el (heroF geer `stdioFhbF piiuX it el indidor del rhivo en l posiin indid por l vrile de tipo long @en segunE do terminoA desde el lugr que le indiquemos medinte el terer termino de l funin @medinte un onstnteAF hevuelve !I si hy errorD si no hy error devuelve l nuev posiinF v geer es `ioFhbF feof@puntero(heroAY vrlongafseek@puntero(heroDlongdesplDintorigenAY iiui hesde el prinE ipio del (hero iiug hesde l posiin tulF iiuixh hesde el (nl del (hero
Captulo 14
Gestion de calidad.
14.1. Anlisis.
v primer etp en l produin de un sistem de softwre es deidir extmente qu se supone h de her el sistemF ist etp se onoe tmin omo nlisis de requisitos o espei(iones y por est irunstni muhos trtdists suelen sudividir l etp en otrs dosX enlisis y de(niin del prolemF ispei(in de requisitosF v prte ms difil en l tre de rer un sistem de softwre es de(nir ul es el prolemD y ontinuin espei(r lo que se neesit pr resolverloF xormlmente l de(niin del prolem omienz nlizndo los requisitos del usurioD pero estos requisitosD on freueniD suelen ser impreE isos y difiles de desriirF e deen espei(r todos los spetos del prolemD pero on freueni ls persons que desrien el prolem no son progrmdores y eso he impreis l de(niinF v fse de espei(in requiere normlmente l omuniin entre los progrmdores y los futuros usurios del sistem e iterr l espei(inD hst que tnto el espei(dor omo los usurios estn stisfehos de ls espei(iones y hyn resuelto el prolem normlmenteF in l etp de espei(iones puede ser muy til pr mejorr l omuniin entre ls diferenE tes prtes implids onstruir un prototipo o modelo senillo del sistem (nlY es deirD esriir un progrm prototipo que simule el omportmiento de ls prtes del produto softwre desedoF or ejemploD un progrm senillo Einluso ine(ienteEpuede demostrr l usurio l interfz propuesE t por el nlistF is mejor desurir ulquier di(ultd o mir su ide originl hor que despus de que l progrmin se enuentre en estdo vnzdo oD inlusoD termindF il modeldo de dtos es un herrmient muy importnte en l etp de de(niin del prolemF ist herrmient es muy utiE lizd en el diseo y onstruin de ses de dtosF eng presente que el usurio (nlD normlmenteD no onoe extmente lo que dese que hg el sistemF or onsiguienteD el nlist de softwre o progrmdorD en su soD dee intertur on el usurio pr enontrr lo que el usurio deser que hg el sistemF in est etp se dee responder pregunts tles omoX gules son los dtos de entrdc u dtos son vlidos y qu dtos no son vlidos9 c uin utilizr el sistemX espeilists uli(dos o usurios ulesquier @sin forminAc u interfes de usurio se utilizrnc Dgules son los mensjes de error y de detein de errores deselesc gmo dee tur el sisE tem undo el usurio omet un error en l entrdc u hiptesis son posilesc ixisten sos espeilesc Dgules el formto de l slidc u doumentin es neesric u mejors se introduirn EprolementeEl progrm en el futuroc Dgmodee ser de rpido el sistemc gd unto tiempo h de mirse el sistem despus que se hy entregdoc il resultdo (nl de l fse de nlisis es un espei(in de los requisitos del s6wreF H H SS hesripin del prolem previ y detlldmenteF rototipos de progrms que pueden yudr resolver el prolemF
14.2. Diseo.
v espei(in de un sistem indi lo que el sistem dee herF v etp de diseo del sistem indi mo h de herseF r un sistem pequeoD l etp de diseo puede ser tn senill omo esriir un lgoritmo en pseudodigoF r un sistem grndeD est etp inluye tmin l fse de diseo de lgoritmosD pero inluye el diseo e interin de un nmero de lgoritmos diferentesD on freueni slo osquejdosD IPI
CAPTULO 14.
GESTION DE CALIDAD.
IPP
s omo un estrtegi pr umplir todos los detlles y produir el diE go orrespondienteF is preiso determinr si se pueden utilizr progrms o suprogrms que y existen o es preiso onstruirlos totlmenteF il proyeto se h de dividir en mdulos utilizndo los prinipios de diseo desE endenteF e ontinuinD se dee indir l interin entre mdulosY un digrm de estruturs proE porion un esquem lro de ests reliones9F in este puntoD es importnte espei(r lrmente no slo el propsito de d mduloD sino tmE in elpujo de duros entre mdulosF or ejemploD se dee responder ls siguientes preguntsX u dtos estn disponiles l mdulo ntes de su ejeuinc u supone el mduloc u hen los dtos despus de que se ejeut el mduloc or onsiguienteD se deen espei(r en detlle ls hiptesisD entrd y slid pr d mduloF n medio pr relizr ests espei(iones es esriir un preE ondiinD que es un desripin de ls ondiiones que deen umplirse l prinipio del mdulo y un postondiinD que es un desripin de ls ondiiones l (nl de un mduloF or ejemploD se puede desriir un suprogrm que orden un list @un rryA de l form siguienteX suprogrm ordenr @eD nA {yrden un list en orden sendente} preondiinX e es un rry de n enterosD I`a n `a wxF postondiinX evII `a evPI ` F F F ` a enD n es inlterle} or ltimoD se puede utilizr pseudodigo pr espei(r los detlles del lgoritmoF is importnte que se emplee stnte tiempo en l fse de diseo de sus progrmsF il resultdo (nl de diseo desE endente es un soluin que se fil de trduir en estruturs de ontrol y estruturs de dtos de un en F lenguje de progrmin espe(o E nuestro soD gE il gsto de tiempo en l fse de diseo ser horro de tiempo undo se esri y depur su proE grmF
CAPTULO 14.
GESTION DE CALIDAD.
IPQ
imprime un mensje de errorF Q F irrores lgiosF e produen en l lgi del progrm y l fuente del error suele ser el diseE o del lgoritmoF istos errores son los ms difiles de detetrD y que el progrm puede funionr y no produir errores de ompilin ni de ejeuinD y slo puede dvertir el error por l otenin de resultdos inorretosF in este so se dee volver l fse de diseo del lgoritmoD modi(r el lgoritmoD mir el progrm fuente y ompilr y ejeutr un vez msF v veri(in o ompilirn de un progrm es el proeso de ejeuin del progrm on un mpli vriedd de dtos de entrdD llmdos dtos de rest o pruehuD que determinrn si el progrm tiene errores in ug AF r relizr l veri(in se dee desrrollr un mpli gm de dtos de testX vloE res normles de entrdD vlores extremos de entrd que omprueen los lmites del progrm y vlores de entrd que omprueen spetos espeiles del progrmF v depurin es el proeso de enontrr los errores del progrm y orregir o eliminr dihos erroresF gundo se ejeut un progrmD se pueden produir tres tipos de erroresX IF irrores de ompilinF e produen normlmente por un uso inorreto de ls regls del lenE guje de progrmin y suelen ser errores de sintusisF i existe un error de sintxisD l ompuE tdor no puede omprender l instruinD no se otendr el progrm ojeto y el ompildor imprimir un list de todos los errores enontrdos durnte l ompilinF PF irrores de ejeuinF istos errores se produen por instruiones que l omputdor puede omprender pero no ejeutrF ijemplos tpios sonX divisin por ero y res udrds de nmeE ros negtivosF in estos sos se detiene l ejeuin del progrm y se imprime un mensje de errorF Q F irrores lgiosF e produen en l lgi del progrm y l fuente del error suele ser el diseE o del lgoritmoF istos errores son los ms difiles de detetrD y que el progrm puede funionr y no produir errores de ompilin ni de ejeuinD y slo puede dvertir el error por l otenin de resultdos inorretosF in este so se dee volver l fse de diseo del lgoritmoD modi(r el lgoritmoD mir el progrm fuente y ompilr y ejeutr un vez msF
CAPTULO 14.
GESTION DE CALIDAD.
IPR
gurd en el (hero erroresFtxt los mensjes de errorF ist polti de seprr los mensjes de informin y los mensjes de error es fil de llevr nuestros progrmsF fst on que los mensjes de error no los mndemos pntll on rdenes omo printfD sino que los mndemos un (hero espeil llmdo stderr @slid estndr de erroresAF goneptos sios sore depurin v depurin es el nlisis de un progrm pr desurir fllosF il nomre en ingls es deugD porque esos fllos de progrmin reien el nomres de ugs @ihosAF r eliminr esos fllos que hen que un progrm no se omporte omo deerD se usn uns herrmients llmds depurdoresF istos nos permiten vnzr pso pso pr ver mo vnz relmente nuestro progrmD y tmin nos dejn ver los vlores de ls vrilesF gomo nuestros onoimientos y nos permiten her progrms de un iert omplejiddD es el momento de ver forms de desurir dnde estn los posiles erroresF vo hremos desde vrios entornos distintosF
CAPTULO 14.
GESTION DE CALIDAD.
IPS
de proyetos @nlist o ingeniero de softwreA y los progrms pueden tener ms de IHHFHHH lnes de digoF il desrrollo de un uen sistem de softwre se reliz durnte el ilo de vid que es el perodo de tiempo que se extiende desde l onepin iniil del sistem hst su eventul retird de l omerE ilizin o uso del mismoF vs tividdes humns relionds on el ilo de vid implin proE esos tles omo nlisis de requisitosD diseoD implementinD odi(inD pruesD veri(inD doumentinD mntenimiento y evoluin del sistem y osoleseniF in eseni el ilo de vid del softwre omienz on un ide iniilD inluye l esritur y depurin de progrmsD y ontin durnte os on orreiones y mejors l softwre originlRF il ilo de vid del softwre es un proeso itertivoD de modo que se modi(rn ls suesivs etE ps en funin de l modi(in de ls espei(iones de los requisitos produidos en l fse de diseE o o implementinD o ien un vez que el sistem se h implementdoD y prodoD pueden preer errores que ser neesrio orregir y depurrD y que requieren l repetiin de etps nterioresF v pigur PFIQ muestr el ilo de vid de softwre y l disposiin tpi de sus diferentes etps en el sistem onoido omo ilo de vid en sdD que supone que l slid de d etp es l entrd de l etp siguienteF
CAPTULO 14.
GESTION DE CALIDAD.
IPT
while @ j `a nEIA um a um C e j l Y j a jClY I GBinvrinteX um es l sum de los elementos e y e j E l B G vos siguientes utro puntos hn de ser verdderosX IF il invrinte dee ser iniilmente verdderoD ntes de que omiene l ejeuin por priE mer vez del uleF in el ejemplo nteriorD um es y y j es y iniilmenteF in este soD el invrinte signi( que um ontiene l sum de los elementos e y I e j E I s D que es verE dd y que no hy elementos en este rngoF PF n ejeuin del ule dee mntener el invrinteF isto es si el invrinte es verddero ntes de ulquier iterin del uleD entones se dee demostrr que es verddero despus de l iterinF in el ejemploD el ule de e j s um y ontinuin inrement j en s F or onsiguienteD despus de un ejeuin del uleD el elemento dido ms reientemente um es e j E I s Y esto es el invrinte que es verddero despus de l iterinF QF il invrinte dee pturr l extitud del lgoritmoF isto esD dee demostrr que si el invE rinte es verddero undo termin el uleD el lgoritmo es orretoF gundo el ule del ejemE plo terminD j ontiene n y el invrinte es verdderoX um ontiene l sum de los elementos e y s e jEIs D que es l sum que se trt de lulrF RF il ule dee terminrF isto esD se dee demostrr que el ule termin despus de un nmeE ro (nito de iterionesF in el ejemploD j omienz en y y ontinuin se inrement en I en d ejeuin del uleF or onsiguienteD j eventulmente exeder n on independeni del vlor de n F iste heho y l rtersti fundmentl de while grntizn que el ule termiE nrF v identi(in de invrintes de ulesD yud esriir ules orretosF e represent el invrinte omo un omentrio que preede d uleF rogrmin segur ontr fllos n progrm es seguro ontr fllos undo se ejeut rzonlemente por ulquier que lo utilieF r onseguir este ojetivo se hn de ompror los errores en dtos de entrd y en l lgi del proE grmF upongmos un progrm que esper leer dtos enteros positivos pero lee E PSF n mensje tpio visulizr nte este error suele serX irror de rngo in emrgoD es ms til un mensje tl omo esteX EPS no es un nmero vlido de os or fvor vuelv introduir el nmero ytrs regls prtis onsiderr sonX gompror dtos de entrd no vlidos snf @4 7f 7d4DqrupoDxumeroA Y FFF if @xumero ba y A g r e g r xumero totl else m n e j r el error gd suprogrm dee ompror los vlores de sus prmetrosF esD en el so de l funin umsntervlo que sum todos los enteros omprendidos entre m y nF int umsntervlo @int mDint nA preondiion X m y n son enteros tles que m ia n postondiionX hevuelve umsntervlo a mC@mClAC F F F C n m y n son inlterles i n t umDsndieY um a y Y f o r @sndiea mY sndieian YsndieCCA um a um C sndieY return umY
Captulo 15
Programacion Multimedia.
15.1. Librerias SDL.
imple hiretwedi vyer @hvA es un onjunto de iliotes desrrollds on el lenguje g que proE porionn funiones sis pr relizr operiones de diujdo PhD gestin de efetos de sonido y msiD y rg y gestin de imgenesF nder vinuxD one n use sdlEon(g to determine wht ompiler nd linker )gs re required for hvF sdlEon(g !)gs will print out the ompiler )gs sdlEon(g !lis will print out the linker )gs por exmpleD ompile nd link ginst the hv lirry o gCC sdltestF Eo sdltest sdlEon(g !)gs !lis enother exmple tht uses the hvmixer lirryD s well o gCC sdltestF Eo sdltest sdlEon(g !)gs !lis Elhvmixer
15.2. Metodos.
oxelD pixelD texelF
IPU
Captulo 16
Programacion opengl.
IPV
Captulo 17
IPW
Captulo 18
IQH
CAPTULO 18.
IQI
ixisten funiones que sirven pr mir rteres mysuls minsuls o vieversF tolower @A gonvierte el rter minsulD si y no lo esF toupper@A gonvierte el rter mysulD si y no lo esF
CAPTULO 18.
IQP
strprk @ A hrB strprk@onst hrB slD onst hrB sPAY hevuelve l direin de l primer ourreni en sIde ulquier de los rteres de s PD hevuelve xvv si ninguno de los rteres de s P pree en s l F strrhr @ hrB strrhr@onst hrB s D int AY hevuelve un puntero l ltim ourreni de en sFhevuelve xvv si no est en sF v squed l he en sentido inversoD desde el (nl de l den l pnmer rterD hst que enuentr el rter F strspn@A sizeEt strspn@onst hrB slD onst hrB sPAY hevuelve l longitud de l suden izquierd @ s l y A F F F A ms lrg de s l que ontiene nimente rteres de l den sPF strstr @ A hr Bstrstr@onst hr BsID onst hr BsPAY fus l den sP en si y devuelve un puntero los rteres donde se enuentr sP strtok @ A hrB strtok@hrB slD onst hrB sPAY enliz l den s I en tokens @omponentes lxiosAD stos delimitdos por rteres de l den sPFv llmd iniil s trtok @ sID sP A devuelve l direin del primer token y sit xvv l (nl del tokenF hespus de l llmd iniilD d llmd suesiv strtok @xvvD sP A devuelve un puntero l siguiente token enontrdo en s l F ists llmds min l den s l D reemplzndo d seprdor on el rter xvvF
CAPTULO 18.
IQQ
semi I IdF i el vlor de semiII es ID se reiniiliz el generdor de nmeros letoriosF gundo se llm l funin rnd ntes de her un llmd l funin srndDse gener l mism seueni que si se huiese llmdo l funin srnd on el rgumento semiIl tomndo el vlor IF rndom @numA v mro rndom gener un nmero letorio dentro de un rngo espei(do @y y el lmite superior espei(do por el rgumento numAF hevuelve un nmero entero entre y y numEIF GB progrm pr generr enontrr el myor de IH nmeros letorios entre y y IHHH 4G 5inlude `stdioFhb 5inlude `stdliFhb 5inlude `timeFhb 5inlude `onioFhb 5de(ne yi IHHH 5de(ne we@xDyA @ @xAb@yAc X @yA @xA A int min @voidA i int mxDiY lrsr @ A Y rndomize @ A Y mx a rndom@HiAY for @iaPY i`aIHY i C C A i int yY y a rndom@HiAY mx a we@mxDyAY s printf@4iI myor nmero letorio generdoX 7d4D mxAY return y Y I in este otro ejemplo de generin de nmeros letoriosD se (j l semill en SH y se gener un nmero letorioF 5inlude `stdioFhb 5inlude `stdliFhi 5inlude `onioFhb int min @voidA i lrsr @ A Y srnd@SHAY printf@4iste es un nmero letorioX 7d4DrndyA Y return y Y }
CAPTULO 18.
IQR
strut tmD que gurd l informin desglosd del dD el mesD el oD l horD etF vos priniples mpos que ontiene son stosX int int int int int int int int tmhourY tmmdyY tmminY tmmonY tmseY tmwdyY tmydyY tmyerY GB GB GB GB GB GB GB GB hor @H E PQA BG hi del mes @I E QIA BG winutos @H E SWA BG wes @H E II X H a ineroA BG egundos @H E SWA BG hi de l semn @H E T X H a homingoA BG hi del o @H E QTSA BG eo menos IWHH BG y el modo de usrls se ve en el fuente nteriorX printf@4in onretoD l hor esX 7PdX 7HPdX 7HPdn4D fehEbtmhourD fehEbtmminD fehEbtmseAY di'time lul l difereni entre dos fehsF mktime re un dto de tipo strut tm B prtir de otro inompletoF is til por ejemplo pr ser el d de l semn si onoemos el dD mes y oF
18.1.8. STDLIB.H
g inluyen un serie de funiones de utilidd que se enuentrn en el rhivo de eer hvsfFr y que se listn ontinuinF s@nAD ls@nA int s @int nA long ls@Iong nA devuelven el vlor soluto de nF div@numD denomA divEt div@int numD i n t denomA glul el oiente y el resto de numDdividido por denom y lmen el resultdo en q u o t y remD miemros int de l estrutur divEtF il siguiente ejemplo lul y visuliz el oiente y el resto de l divisin de dos enterosF 5inlude `stdliFhb 5inlude `stdioFhb int min @voidA { divEt resultdoY resultdo a div@lTD RAY print f @ 4goiente 7d4D resultdoFquot A Y printf @4esto d4D resultdoFremA Y return H Y } div @nunD denomA glul el oiente y resto de num dividido por denom y lmen los resultdos de quot y remD miemros long de l estrutur ldivEtF typedef strut { long int quotY long int remY } ldivEtY G B oiente B G G B resto BG resultdo a ldiv@ITHHvD RHvAY
CAPTULO 18.
IQS
eil@dAD mthFhX edondeo superior de d lok@AD timeFhX hevuelve l hor del reloj del ordendorF r psr segundosD dividir por l onstnte gvyguiig os@douleAD mthFhX hevuelve el oseno de d exit@uAD stdliFh X gerrr todos los rhivos y u'ersD terminndo el progrmF exp@dAD mthFhX ilevr e l poteni d @eaPFUUIVPFFFA expIH@dAD mthFhX elev IH l poteni de d fs@douleAD mthFhX hevuelve el vlor soluto de d flose@fAD stdioFhX gierr el rhivo fF feof@fAD stdioFhX hetermin si se h enontrdo un (n de rhivoF fget@fAD stdioFhX veer un rter del rhivo fF fgets@sDiDfAD stdioFhX veer un den sD on i rteresD del rhivo f )oor@douleAD mthFhX hevuelve un vlor redondedo inferiormente dF fmod@douleDdouleAD mthFhX hevuelve el resto de dIGdP @on el mismo signo de dIA fopen@sIDsPAD stdioFhX ere un rhivo llmdo sID pr un operin del tipo sPF hevuelve el puntero l rhivo iertoF fprintf@fDFFFAD stdioFhX isrie dtos en el rhivo fF fput@DfAD stdioFhX isrie un rter en el rhivo fF free@pAD mlloFhX vier un loque de memori l que punt pF fsnf@fDFFFAD stdioFhX vee dtos del rhivo fF get@fAD stdioFhX ver un rter del rhivo fF gethr@AD stdioFhX vee un rter desde el dispositivo de entrd estndrF log@douleAD mthFhX hevuelve el logritmo nturl de dF logIH@douleAD mthFhX hevuelve el logritmo en se IH de dF logP@douleAD mthFhX hevuelve el logritmo en se P de dF mllo@nAD mlloFhX eserv n ytes de memoriF hevuelve un puntero l prinipio del espio reserE vdoF pow@douleDdouleAD mthFhX hevuelve dI elevdo l poteni dPF printf@FFFAD stdioFhX isrie dtos en el dispositivo de slid estndrF rnd@voidAD stdliFh X hevuelve un vlor letorio positivoF round@xAD mthFhX redondeo l entero ms proximo xF snf@FFFAD stdioFhX intrd por teldoF sin@douleAD mthFhX hevuelve el seno de dF sqrt@douleAD mthFhX hevuelve l rz udrd de dF
CAPTULO 18.
IQT
strmp@sIDsPAD stringFhX gompr dos dens lexiogr(menteF stromp@sIDsPAD stringFhX gompr dos dens lexiogr(menteD sin onsiderr mysuls o miE nsulsF strpy@sIDsPAD stringFhX gopi l den sP en l den sI strlen@sIAD stringFhX hevuelve el nmero de rteres en l den sF system@sAD stdliFh X s l orden s l sistem opertivoF tn@douleAD mthFhX hevuelve l tngente de dF time@pAD timeFhX hevuelve l tngente de dF toupper@AD stdliFh X onvierte un letr mysulF
Captulo 19
Diseo de programas.
19.1. Segun el interfaz.
19.1.1. Texto. 19.1.2. Ventanas. 19.1.3. Interrupciones.
19.2.2. Diseo.
simulion
19.2.3. Comunicacion.
IQU
Diccionario.
Letra A
elgoritmoF ethlonF
Letra B
fus fyteF
Letra C
ghEywF gompilxaidn gompildorF gomputdorF g ghe
Letra D
hisqueteF hhF hiso duro
Letra E
iioF
Letra H
rrdwre rertzio
Letra I
snlF sntrpreteF snternet IQV
CAPTULO 19.
DISEO DE PROGRAMAS.
IQW
Letra L
venguje de progrminF venguje ensmldorF venguje mquinF
Letra M
wemoriF wemori uxilirF wemori entrlF wiroproesdorF wrF wdemD wonitorF
Letra O
yrdendorF
Letra P
entiumF ortiliddF roesdor uertosF
Letra S
softwreF
Letra U
nidd gentrl de roesoF
Letra V
ideo
Bibliograa.
eprend g omo si estuvier en primeroF isuel superior de ingenieros industrilesF niversidd de xvrrF tvier tlon qri de l puente y otrosF sntroduon l progrmon on gF heprtmento de vengujes y istems snformtios niversitt tume sF endrs wrzl e ssel qri gy hi vixqeti 4g4F engel ls gentro de glulo niversidd de rgoz inero E IWWI sfx VREUUQQEPQPEH gurso de gD xho gnes
IRH