resumen de la asignatura de programación 2012/2013

31
7/23/2019 Resumen de la asignatura de Programación 2012/2013 http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 1/31 FUNDAMENTOS DE PROGRAMACIÓN RAFAEL LÓPEZ NAVARRO CURSO 2011/2012 UNED

Upload: chache

Post on 18-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 1/31

FUNDAMENTOS DEPROGRAMACIÓNRAFAEL LÓPEZ NAVARRO

CURSO 2011/2012 UNED

Page 2: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 2/31

TEMA 1 -.- INTRODUCCIÓN

1.1- Programación e ingeniería e! "o#$%are&'() e" (n a!gori$mo* Conjunto de pasos necesarios para resolver undeterminado problema.Los aloritmos deben ser! " Correctas" Claros " E#cientes

&'() e" (n +rograma* Es la implementaci$n o codi#caci$n de undeterminado aloritmo en uso de al%n lenuaje de proramaci$n.,eng(ae e +rogramación Conjunto de s&mbolos ' relas para crearproramas. &Programación e ingeniería e! "o#$%are*Programación ( En eneral se encara de desarrollar proramas a pe)ue*aescala. Ingeniería e! "o#$%are ( Conjunto de etapas necesarias paradesarrollar proramas a ran escala ' deran calidad.E$a+a" e !a ingeniería e! "o#$%areAn+lisis,ise*oCodi#caci$nPruebas ' -antenimiento

- Com+i!aore" / in$er+re$e" &'() e" (n $ra(c$or* Es un prorama )uetraduce el c$dio uente de un prorama a un c$dio )uepueda entender la CP/. 0a' dos tipos de traductores!

• Compiladores• 1nt2rpretes

- Moe!o" a0"$rac$o" e +rogramación

Actualmente e3isten dierentes modelos de proramaci$n 4o paradimas deproramaci$n5!

" Proramaci$n uncional" Proramaci$n l$ica" Proramaci$n imperativa" -odelo de 6ujo de datos" Proramaci$n orientada a objetos 4POO5

-O0e$io" e !a +rogramación• CORREC1ÓN! /n prorama debe reali7ar el tratamiento esperado8 ' no

producir resultados err$neos.• CLAR1,A,! Pr+cticamente todos los proramas 9an de ser modi#cadosdespu2s de 9aber sido desarrollados inicialmente. Es undamental )uesus descripciones sean claras ' +cilmente inteliibles por otras personas.

• EF1C1ENC1A! /na tarea de tratamiento de inormaci$n puede serproramada de mu' dierentes maneras sobre un computadordeterminado8 es decir8 9abr+ muc9os proramas distintos )ue producir+nlos resultados deseados.

Page 3: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 3/31

TEMA 2 -.- E,EMENTOS34ASICOS

2.1 - No$ación 4NF 50ac6(+"-Na(r Form7Es el conjunto de relas ramaticales en las )ue se basa un lenuaje deproramaci$n. Para describir estas relas se utili7an una seria de metas&mbolos!

!!( -eta s&mbolo de de#nici$n

: -eta s&mbolo de alternativa; < -eta s&mbolo de repetici$n

= > -eta s&mbolo de opci$n4 5 -eta s&mbolo de arupaci$n

Las relas ?NF tendr+n dos tipos de elementos!• Elemento terminal! @on elementos )ue orman parte del lenuaje C"• Elemento no terminal! Est+n de#nidos a partir de los elementos

terminales a partir de las relas de producci$n.

 2.2 Ti+o" +ree8nio"• Ti+o en$ero 5in$7 Este tipo puede tomar valores positivos ' neativos. El

rano de valores )ue puede tomar depende de la plataorma4combinaci$n de procesador8 sistema operativo ' compilador5 utili7ada.Para poder controlar los valores m+3imo ' m&nimo )ue podemos utili7ar noes preciso recordar estos valores8 podemos utili7ar las constantesINT3MA9 ' INT3MIN )ue est+n en la librer&a :!imi$".;<

 

Ti+o rea! 5=oa$7Este tipo puede tomar valores positivos ' neativos8 ' puede tener una

parte decimal. Es una representaci$n no e3acta. El rano de valores )uepuede tomar depende de la plataorma 4combinaci$n de procesador8sistema operativo ' compilador5 utili7ada.

 

Ti+o car>c$er 5c;ar7Lo utili7aremos para manejar caracteres imprimibles! BAB8 BaB8 B?B8BbB8 ... .BB8B;B8 .... ' no imprimibles! RED/RN8 E@CAPE8 F8 F8 .... 1nclu'ela pr+ctica totalidad de caracteres utili7ados en el -undoPara 9acer reerencia a un car+cter de la mesa del c$dio ascii podemos9acer uso de la unci$n c9ar435! c9ar4G5  Decla Return c9ar4H5

tecla E@CAPE c9ar4IJ5

letra BAB Dambi2n podemos 9acer reerencia al luar de la tabla )ue ocupa uncar+cter en uso de la unci$n int4c5!

int 4BZB5K

@i 9acemos uso de la librer&a :c$/+e.;< podemos utili7ar las siuientesunciones para a manejar caracteres!-i"a!+;a5c7Comprueba si c es una letra o no i"a"cii5c7Comprueba si ces un car+cter A@C11 "i"0!an65c7Comprueba si c es un espacio en blancoo tabulaci$n i"cn$r!5c7Comprueba si c es un car+cter de control o noi"igi$5c7Comprueba si c es un d&ito decimal 4 .. K5 o no

""""$o!o%er5c7

Pasa a min%scula el car+cter c-$o(++er5c7Pasa a ma'%scula el car+cter c

Page 4: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 4/31

2.? E@+re"ione" ari$m)$ica"@i no se utili7an par2ntesis el orden de prioridad en una e3presi$n es!

. Operadores multiplicativos M . Operadores aditivos "

2. O+eracione" e e"cri$(ra "im+!e"El procedimiento print est+ en la librer&a :"$io.;< ' sirve para mostrar oescribir por pantalla un valor!

Eem+!o"print 4B1ntroduce tu nombre!B5 print 4B"""" ?ienvenido a este prorama

""" Q n B5

Cuando a parte de te3to )ueremos mostrar valores num2ricos8 la unci$nprint necesita saber el tipo de datos )ue tiene )ue escribir para saberc$mo las 9a de escribir. El ormato o orma de utili7ar esta unci$n es!

print 4Bcadena con ormatosB8 valor8 valorG8 ... valorN5

No$a no es obliatorio el sino de de principio del especi#cador8 ' eltipo de datos )ue se )uiere mostrar. Esto es lo m+s normal ' lo )ue se veen esta asinatura. En caso de )ue se )uiera especi#car m+s los datos desalida se utili7an los dem+s par+metros8 )ue est+n entre Bcorc9etesB.

,o" $i+o" ;a0i$(a!e"/na cadena de caracteres! s/n car+cter! c Valor real con o sin notaci$n e3ponencial8 con unn%mero dado de decimales de precisi$n .Los ceros ' puntos decimalsalen si es necesario! Valor real con notaci$n e3ponencial e ="> ddd. eValor real 4punto #jo5 de la orma ="> dddd.dddd. Entero decimal 4un entero5! d

No$a B1.?# real en coma #ja )ue reserva espacios ' unaprecisi$n de G decimales

2. - ESTRUCTURA DE UN PROGRAMA EN C C -CA4ECERA DE, PROGRAMA

M Nombre del prorama. Autor M M ,escripci$n del prorama M ,,AMADAS EN ,I4RERAS H 

include SnombreTlibreria.9UDEFINICIONES DE CONSTANTES

const tipo nombreTconstante ( valorDEC,ARACIÓN DE FUNCIONEStipoTdato unci$n A 4par+metros5tipoTdato unci$n ? 4par+metros5

DEC,ARACIÓN DE AIA4,ES G,O4A,ESint a 6oat b

FUNCIÓN PRINCIPA,tipoTdato main 45 ;

Page 5: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 5/31

instrucciones<

TEMA ? -.- CONSTANTES H ARIA4,ES

?.1- IDENTIFICADORESCual)uier dato )ue se utili7a en un prorama tiene asociada los siuientesatributos!1denti#cador Dipo Valor

Reg!a" +ara ien$i8caor"Palabra ormada por caracteres alab2ticos o num2ricos"No valen los espacios en blanco ni sinos de puntuaci$n"Es necesario )ue comience por una letra"Pueden utili7arse las J letras ma'%sculas ' min%sculas del alabeto inl2s8la barra de subra'ado ' los d&itos de a K.

?.2 - CONSTANTES@on datos )ue mantienen su valor durante toda la ejecuci$n del prorama.La orma de declarar una constante es!

Con"$ $i+ nom0re Ja!orK

?.?- ARIA4,ES@on datos )ue pueden ir variando su valor durante la ejecuci$n delprorama.

La orma de declarar la variable es!$i+oDearia0!e nom0rearia0!eK

?.- ,ECTURA DE ARIA4,ES 5SCANF7Para leer variables desde el teclado 9acemos uso de la unci$n scan )ueest+ en la librer&a Sstdio.9U

@can 4dW8Xa5  lee un valor entero por teclado8 el valor se asinaa la variable int a

TEMA -.- METODO,OGA 1

.1 L DESCOMPOSICIÓN EN SU4PRO4,EMAS5REFINAMIENTOSSUCESIOS7

A la 9ora de resolver problemas complejos lo mejor es intentardescomponer el problema en subproblemas m+s pe)ue*os ' m+s +ciles deresolver.Consiste en e3presar inicialmente el prorama a desarrollar como una

acci$n lobal8 )ue si es necesario se ir+ descomponiendo en acciones m+s

Page 6: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 6/31

sencillas 9asta llear a acciones simples )ue puedan ser e3presadasdirectamente como sentencias del lenuaje de proramaci$n.Cada paso de re#namiento consiste en descomponer cada acci$n complejaen otras m+s simples. Esta descomposici$n e3ie!

o 1denti#car las acciones componentes.o 1denti#car la manera de combinar las acciones componentes para

conseuir el eecto lobal.

.2 L ASPECTOS DE ESTI,O• Encolumnado• Comentarios• Elecci$n de nombres• /so correcto de ma'%sculas ' min%sculas• Constantes con nombre.

TEMA -.- ESTRUCTURAS DE CONTRO,

.1 L Programación e"$r(c$(raaEs una metodolo&a de proramaci$n )ue undamentalmente trata deconstruir proramas )ue sean +cilmente comprensibles./n prorama no solo debe uncionar correctamente8 sino )ue ademYasdebe estar escrito de manera )ue se acilite su compresi$n posterior.

"Re+re"en$ación e !a e"$r(c$(ra e (n +rogramaLa estructura de los proramas imperativos se representa

tradicionalmente mediante diagramas de fujo llamados en inles fow-

chart. Estos diaramas contienen dos elementos b+sicos8 correspondientesa acciones ' condiciones. Las acciones son rect+nulos ' las condicionesson rombos. Las condiciones e)uivalen a preuntas a las )ue se puederesponder @1W o NOW.

El fujo de control durante la ejecuci$n del prorama se re6eja mediantel&neas o v&as )ue van de un elemento a otro. Las acciones tienen una solav&a de entrada o comien7o ' una de terminaci$n o salida. Las condicionestienen una v&a de entrada8 ' dos v&as de salida marcadas son @1W ' NOW.

La proramaci$n estructurada recomienda descomponer las accionesusando las estructuras m+s sencillas posibles8 )ue son!

• Sec(encia secuencia de acciones.• Se!ección consiste en ejecutar una acci$n u otra.• I$eración repetici$n de una acci$n mientras )ue se cumpla una

determinada condici$n. 4?ucle5

@1 NO Acci$n

Page 7: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 7/31

.2 - ESTRUCTURAS 4SICAS EN C-• Sen$encia IF• Sen$encia I,E• Sen$encia FOR

TEMA -.- METODO,OGA 2.1 L DESARRO,,O CON ES'UEMAS DE SE,ECCIÓN E ITERACIÓN

@e tiente G posibilidades a la 9ora de re#nar una acci$n compuesta!• Orani7arla como secuencia de acciones• Orani7arla como selecci$n entre acciones alternativas.• Orani7arla como iteraci$n de acciones.

1.1 ES'UEMAS DE SE,ECCIÓNConsiste en plantear una acci$n compuesta como la reali7aci$n de unaacci$n entre varias posibles8 dependiendo de ciertas condiciones.Para desarrollar un es)uema de selecci$n debemos identi#car suselementos componentes. Por tanto 9abr+ )ue!

• 1denti#car cada una de las alternativas del es)uema8 ' las accionescorrespondientes.

• 1denti#car las condiciones para seleccionar una alternativa u otra.

1.2 ES'UEMAS DE ITERACIÓN/na iteraci$n o bucle consiste en la repetici$n de una acci$n o rupo deacciones 9asta conseuir el resultado deseado.

• 1denti#car las acciones %tiles a repetir8 ' las variables necesarias.Precisar el sini#cado de estas variables al comien7o ' #nal de cadarepetici$n.

• 1denti#car c$mo actuali7ar la inormaci$n al pasar de cada iteraci$n ala siuiente.

• 1denti#car la condici$n de terminaci$n.• 1denti#car los valores iniciales de las variables8 ' si es necesaria

aluna acci$n para asin+rselos antes de entrar en el bucle. .2L ERIFICACIÓN DE PROGRAMAS

/n prorama es correcto si produce siempre los resultados esperados deacuerdo con la especi#caci$n del prorama. /na orma de veri#car unprorama es mediante ensa'os. Consiste en ejecutar el prorama con unosdatos preparados de antemano ' a los )ue sabemos cu+l ser+ el resultadocorrecto. @i con la ejecuci$n del prorama con estos datos se obtienen losresultados esperados no podemos a#rmar )ue el prorama sea correcto 'a)ue puede tener un caso concreto ' no probado )ue d2 resultadosinesperados. La %nica orma de veri#car un prorama es con una

demostraci$n ormal utili7ando la l$ica de predicados.

Page 8: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 8/31

.?- EFICIENCIA DE PROGRAMAS. COMP,EQIDAD.El coste )ue tiene un prorama va a estar en unci$n de los recursos )ueconsume. Recursos son la memoria8 el tiempo de procesador ' el tiempo )uetarda en ejecutarse. Nosotros s$lo nos #jaremos en el tiempo )ue tarda unaloritmo en ejecutarse8 )ue vendr+ en unci$n del n%mero de instrucciones)ue ejecuta.

TEMA -.- FUNCIONES H PROCEDIMIENTOS

.1 CONCEPTO DE SU4PROGRAMAEs una parte de un prorama. Como mecanismo de proramaci$n8 unsubprorama es una parte de un prorama )ue se desarrolla por separado 'se utili7a invoc+ndolo mediante un nombre simb$lico.

.2 FUNCIONES

/na unci$n permite arupar un conjunto de instrucciones en un blo)ue )uet&picamente reali7ar+ una tarea concreta. @u estructura en C tiene dospartes!

• El encabe7amiento de la unci$n• El cuerpo de la unci$n

 //encabezamiento de la unción (descripción)

tipoTresultado nombreTuncion 4listaTarumentos o par+metros5;

declaraci$n de variablesinstrucciones.<

Al enca0eamien$o de una unci$n se de#ne el nombre de la unci$n ' elmodo en el )ue se le va a transerir inormaci$n.Ti+o3re"(!$ao representa el tipo de dato 4void8 int8 c9ar8 6oat5 )uedevuelve la unci$n al m$dulo )ue le 9a llamado.Nom0re3#(ncion 0ace reerencia al nombre )ue utili7aremos para llamar ala unci$n desde otro m[dulo.,i"$a3arg(men$o" Es un listado de variables o de valores )ue el modulo

)ue llama le pasa a la unci$n para )ue realice operaciones con ellos.

A!g(na" #(ncione" +ree8nia",i0rería c$/+e.;c9ar toupper 4c9ar c5Convierte es ma'%sculac9ar tolo\er 4c9ar c5Convierte es min%sculabool isblan] 4c9ar c5Comprueba si c es un espacio en blanco o tabulaci$nbool isdiit 4c9ar c5Comprueba si c es un n%mero entre ' Kbool isalp9a 4c9ar c5Comprueba si c es un car+cter o no,i0rería ma$;.;6oat Dan 46oat 35 Danente 4356oat cos 46oat 35Coseno 4356oat sen 46oat 35@eno 435

Page 9: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 9/31

6oat po\ 46oat 38 6oat '5Potencia 3 ^6oat s)rt 46oat 35Ra&7 cuadrada de 3

.? L PROCEDIMIENTOS@on subproramas )ue reali7an una cierta tarea o acci$n. No devuelvennin%n valor.

. L PASO DE ARGUMENTOS O PARAMETROS A FUNCIONES HPROCEDIMIENTOS

Cuando una unci$n llama a otra unci$n para )ue se ejecute 9a' unintercambio de inormaci$n entre las dos unciones. Este intercambio deinormaci$n se lleva a cabo mediante el uso de par+metros o arumentos.@e pueden clasi#car en!

• Par>me$ro" ac$(a!e" son variables locales )ue pertenecen a launci$n )ue reali7a la llamada ' el valor 4contenido5 o la direcci$n dememoria de esta variable es enviada a la unci$n invocada.

• Par>me$ro" #orma!e" son variables locales8 )ue pertenecen al

m$dulo invocado8 )ue reciben el valor o la direcci$n de memoria de lospar+metros actuales del m$dulo )ue lo invoca en el momento de serejecutada la llamada.

 Denemos dos ormas de pasarle los arumentos a una unci$n o unprocedimiento

• Por a!or @e env&a una copia del valor )ue tienen cada uno de lospar+metros actuales en el momento de reali7ar la llamada. Estavaloraci$n son recoidos por los par+metros ormales del m$duloinvocado. En este caso el m$dulo invocado no puede modi#car el valororiinal de las variables actuales.

Por re#erencia en este caso8 el m$dulo invocado8 en luar detrabajar con los valores de las variables actuales8 trabaja sobre lasdirecciones de las variables locales. Por tanto en este caso el m$duloinvocado puede modi#car los valores de las variables actuales delm$dulo )ue 9ace la llamada. Este uso orece menos seuridad )ue elpaso por valor.

. L ARIA4,ES ,OCA,ES H G,O4A,ESaria0!e !oca! Es a)uella )ue su uso est+ restrinido a la unci$n )ue la 9adeclarado8 se dice entonces )ue la variable es local a esa unci$n. Estoimplica )ue esa variable s$lo va a poder ser manipulada en esa secci$n8 ' no

se podr+ 9acer reerencia uera de esa secci$n. Cual)uier variable )ue sede#ne dentro de las claves del cuerpo de una unci$n se interpreta como unavariable local en esa unci$n.aria0!e g!o0a! es a)uella )ue se de#ne uera del cuerpo de cual)uierunci$n8 normalmente al principio del prorama8 tras la de#nici$n de losarc9ivos de biblioteca8 de la de#nici$n de constantes ' antes de cual)uierunci$n. El +mbito de una variable lobal son todas las unciones )uecomponen el prorama8 cual)uier unci$n puede acceder a esas variablespara leer ' escribir en ellas.

Page 10: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 10/31

. L RECURSIIDAD DE SU4PROGRAMASCuando un subprorama 9ace una llamada a s& mismo se dice )ue es unsubprorama recursivo. 4aloritmo del actorial51nt FactorialRecursivo 4int n5 ;  1 4nS(5;  Return   < else ;

  return n M FactorialRecursivo4n"5  <  <

. Pro0!ema" a! ($i!iar "(0+rograma"El uso inadecuado de las variables )ue pasamos como arumentos puededar luar a alunos problemas!

 

E#ec$o" "ec(nario".Cuando un subprorama modi#ca aluna variable e3terna8 se dice )ueest+ produciendo eectos secundarios o laterales. El concepto al eectolateral ser&a la transparencia reerencial. @iempre )ue llamamos a unsubprorama con los mismo par+metros se debe obtener el mismoresultado.

 

Ree8nición e e!emen$o".Cuando a un subprorama se de#ne una variable local da iual elnombre )ue eleimos8 'a )ue al ser local s$lo aecta al propiosubprorama. El problema viene cuando el nombre de la variable local)ue eleimos es lo mismo )ue una variable lobal. Aparte de sacarresultados incorrectos8 se pierde muc9o en claridad.

 

Do0!e re#erencia5a!ia"ing7

@e produce cuando una misma variable se reerencia con dos nombresdierentes. @e puede dar los siuientes casos!. Cuando un subprorama utili7a una variable e3terna )ue tambi2n

se le pasa como arumento.. Cuando para utili7ar un subprorama se pasa la misma variable en

dos o m+s arumentos.

TEMA -.- METODO,OGA ?

.1-OPERACIONES A4STRACTAS

Los subproramas constitu'en un primer paso 9acia la metodolo&a deproramaci$n basada en abstracciones. Los subproramas permiten de#niroperaciones abstractas./na abstracci$n es una visi$n simpli#cada de una cierta entidad8 de la )ues$lo consideramos sus elementos esenciales8 prescindiendo en lo posible delos detalles. Las entidades )ue podemos abstraer para materiali7arlas comosubproramas osn8 en enral8 oeraciones 4 acci$n o unci$n5.E"+eci8cación _ue 9ace la operaci$n 4 punto de vista de )uien la invoca5

Rea!iación C$mo se 9ace la operaci$n 4punto de vista de )uien la ejecuta5.

Page 11: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 11/31

La especi#caci$n consiste en indicar cu+l es el nombre de la operaci$n 'cuales son sus arumentos.La reali7aci$n debe suministrar toda la inormaci$n necesaria para poderejecutar la operaci$n 4c$dio5.

.2-DESARRO,,O USANDO A4STRACCIONESDe"arro!!o e"cenen$e desarrollo por re#namientos sucesivos8 teniendo encuenta adem+s la posibilidad de de#nir operaciones abstractas. En cada etapade re#namiento de una operaci$n 9abr+ )ue optar por una de las alterativassiuientes!

• Considerar la operaci$n como operaci$n terminal8 ' codi#carlamediante sentencias del lenuaje de proramaci$n

• Considerar la operaci$n como operaci$n compleja8 ' descomponerla enotras m+s sencillas.

• Considerar la operaci$n como operaci$n abstracta8 ' especi#carla8escribiendo m+s adelante el subprorama )ue la reali7a.

Resultar+ ventajoso de#nir una operaci$n como abstracta si se consiue alunade las ventajas siuientes!

• Evitar me7clar en un determinado ramento de prorama operacionescon un nivel de detalle mu' dierente.

• Evitar escribir repetidamente ramentos de c$dio )ue realicenoperaciones an+loas.

Re($i!iación @i la operaci$n identi#cada como operaci$n abstracta tiene uncierto sentido en s& misma8 es mu' posible )ue resulte de utilidad en otros

proramas8 adem+s de en a)u2l para el cual se 9a desarrollado. La escritura deotros proramas )ue se utilicen esa misma operaci$n resulta mas sencilla8 'a)ue se aprovec9a el c$dio de su de#nici$n8 )ue 'a estaba escrito.Los procedimientos ' unciones cuanto mas en2ricos sean en sucomportamiento8 m+s reutili7ables son. /n procedimiento o unci$n esreutili7able si podemos aplicarlo no s$lo al prorama para el )ue est+ dise*ado8sino )ue tambi2n a otros proramas en los )ue se re)uiere un procedimiento ounci$n similar.

De"arro!!o a"cenen$e Consiste en ir creando subproramas )ue realicenoperaciones sini#cativas de utilidad para el prorama )ue se intenta construir89asta )ue #nalmente sea posible escribir el prorama principal8 de manerarelativamente sencilla8 apo'+ndose en los subproramas desarrollados 9astaese momento.

.? L PROGRAMAS RO4USTOSCual)uier prorama deber ser!

o Correc$o Los resultados )ue d2 son los esperados.o C!aro Cual)uier proramador pueda entender como est+ estructurado.o E8cien$e _ue consume los m&nimos recursos en cuanto a tiempo '

memoria. @e dice )ue un prorama es robusto si controla sus operacionesaun)ue le introducimos datos incorrectos ' err$neos.

Page 12: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 12/31

-Programación a !a e#en"ia Es una orma de dise*o deensivo aplicada aldise*o de proramas )ue busca aranti7ar el comportamiento de todo elementode una aplicaci$n ante cual)uier situaci$n de uso por incorrecta o imprevisible)ue 2sta pueda parecer. En eneral8 esto supone multiplicar las comprobaciones)ue 9acen en todos los m$dulos proramados8 con la consiuiente penali7aci$nen cara de procesador8 tiempo ' aumento de la complejidad del c$dio.Las t2cnicas de proramaci$n deensiva se utili7an especialmente en

componentes cr&ticos8 en los )ue un mal uncionamiento8 'a sea por descuido opor un ata)ue malicioso8 podr&a tener consecuencias raves. La proramaci$ndeensiva es un eno)ue )ue busca mejorar el sot\are ' el c$dio uente8 ent2rminos de!

o Calidad8 reduciendo el n%mero de allos de sot\are '8 en consecuencia8problemas.

o 0aciendo el c$dio uente comprensible 4el c$dio uente debe ser leible' comprensible8 a prueba de una auditor&a de c$dio.

o 0acer )ue el sot\are se comporte de una manera predecible a pesar deentradas o acciones de usuario inesperadas.

.?.1 Tra$amien$o e e@ce+cione"Ante la posibilidad de errores con los datos )ue se opera a un prorama8 9a')ue considerar dos actividades dierentes!

a5 ,etecci$n de situaci$n de error"b5 Correcci$n de la situaci$n de error.

En C" la sentencia $;ro% provoca una terminaci$n de un subprorama parae3cepci$n!oi o+eracion 5arg(men$o"7 ... ....V

  accion1i# 5error17   $;ro% e@ce+cion1K W Fina!ia con (na e@ce+ción W   V ...  accion2 i# 5error27   $;ro% e@ce+cion2K W Fina!ia con (na e@ce+ción W V ...V

TEMA X -.- DEFINICIÓN DE TIPOSA parte de los tipos de datos prede#nidos en C" 4int8 c9ar8 6oat..5 elproramador tambi2n puede de#nirse sus propios tipos de datos con el uso de lainstrucci$n $/+ee#Y por ejemplo

•  D'pede int DipoEdad•  D'pede c9ar Dipo@e3o•  D'pede 6oat DipoAltura

/na ve7 declarados los tipos se pueden de#nir ' declarar variables de esos tipos)ue acabamos de de#nir8 por ejemplo ser&a valido!

 DipoEdad edad8 edad•  Dipo@e3o se3o

Page 13: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 13/31

•  DipoAltura altura ` podr&amos utili7ar estas variables como las variables )ue 9emos visto 9astaa9ora!

• Edad( edad • @e3o ( 0• Altura ( 8H

X.1 TIPO ENUMERADOPodemos de#nir una lista de valores con los tipos prede#nidos ' con los tipos)ue el proramador cree. Esta lista tomar valores num2ricos autom+ticamenteempe7ando por el valor ' 9asta n".

•  D'pede enum ;Lunes8-artes8-iercoles8ueves8Viernes8@abado8,omino<Los tipos enumerados se consideran tipos ordinales 4al iual )ue los int ' c9ar58'a )ue tienen un orden establecido de antemano.Como los tipos enumerados son ordinales8 podemos utili7arlos encomparaciones como por ejemplo!

 1 4 mes U( ulio5 ; <Para 9acer reerencia al luar )ue ocupa un elemento en la lista lo 9acemos as&!1nt 4abril5UGPodemos ir pasando de un elemento a otro de una lista enumerada de lasiuiente manera!,ia( jueves,ia ( tipodia4int4dia55

Ti+o +ree8nio 0oo!El tipo prede#nido bool se puede considerar como un tipo enumerado con dosvalores!

 D'pede enum bool ;alse8true<@e cumple )ue alse( ' true(.

X.2 TIPOS ESTRUCTURADOS/n tipo estructurado de datos8 o estructura de datos8 es un tipo cu'os valores seconstru'en arupando datos de otros tipos m+s sencillos. Los elementos deinormaci$n )ue interan un valor estructurado se denominan componentes.

 Dodos los tipos estructurados se de#nen8 en %ltimo t2rmino8 a partir de tipossimples combinados.

X.? TIPO FORMACION H SU NECESIDADEstas estructuras se denominan en2ricamente ormaciones 4en inles arra'5 'permiten la enerali7aci$n de la declaraci$n8 reerencia ' manipulaci$n decolecciones de datos todos del mismo tipo.

X. TIPO ECTOREst+ constituido por una serie de valores8 todos ellos del mismo tipo8 a los )uese les da un nombre com%n )ue identi#ca a toda la estructura lobalmente.Cada valor concreto dentro de la estructura se distinue por su &ndice o n%merode orden )ue ocupa en la serie.DEC,ARACIÓN @e declara de la siuiente orma!

Page 14: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 14/31

typede Tipolemento Tipo!ector"#umlemtos$donde Typo!ector  es el nombre del nuevo tipo de vector )ue se declara '#umlementos es un valor constante )ue indica el n%mero de elementos )ueconstitu'en el vector. El tama*o del arra' estar+ comprendido entre 'NumElementos". Tipolemento corresponde al tipo de dato de cada uno de loselementos del vector ' puede ser cual)uier tipo de dato prede#nido del lenuajeo de#nido por el proramado.

INICIA,IZACIÓN En el caso de un vector la iniciali7aci$n aecta a todos suselementos ' por tanto la notaci$n es alo especial ' en ella se indica el valorinicial de todos los elementos arup+ndolos entre llaves ;..< ' separ+ndolos porcomas 485.

 DipoAenda aenda/no ( ; Lunes8 -artes8 -i2rcoles8 ueves8 Viernes..<OPERACIONES CON ECTORES La ma'or&a de las operaciones interesantescon vectores 9a' )ue reali7arlas operando con sus elementos uno por uno. Lareerencia a un elemento concreto de un vector se 9ace mediante el nombre delvector seuido8 entre corc9etes8 del &ndice del elemento reerenciado.Vector/no=> rase=G>/n elemento de un vector puede ormar parte de cual)uier e3presi$n conconstantes8 variables u otros elementos.

X. ECTOR DE CARACTERESLas cadenas de caracteres son en realidad vectores de caracteres. En C"cual)uier tipo vector cu'a declaraci$n sea de la orma!

T/+ee# c;ar Nom0re [N\Kse considera una cadena o strin8 con independencia de su lonitud particular8esto es8 del valor de N. Es un vector en el )ue se pueden almacenar te3tos dedierentes lonitudes 4si caben5. Para distinuir la lonitud %til en cada momentose reserva siempre espacio para un car+cter m+s8 ' si 9ace )ue toda cadenatermine con car+cter nulo Q situado al #nal.

T/+ee# c;ar Caena2[21\K

FUNCIONESS$rc+/5 c1Yc2 7   Copia c en c

 

S$rca$ 5 c1Yc2 7  Concatena c a continuaci$n de c 

S$r!en5 c1 7   ,evuelve la lonitud de c 

S$rcm+ 5 c1Yc2 7  Compara c ' c

X. TIPO TUP,A H SU NECESIDADOtra orma de construir un dato estructurado consiste en arupar elementos deinormaci$n usando el es)uema de tupla o areado. En este es)uema el datoestructurado est+ ormado por una colecci$n de componentes8 cada uno de loscuales puede ser de un tipo dierente.Por ejemplo8 una ec9a se escribe 9abitualmente como un dato compuesto delos elementos8 d&a8 mes ' a*o.Tupla% Colecci$n de elementos componentes8 de dierentes tipos8 cada uno delos cuales se identi#ca por un nombre.

/n aspecto importante del empleo de datos estructurados corresponde al puntode vista de abstracci$n. /na tupla8 como cual)uier otro dato compuesto8 puede

Page 15: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 15/31

verse de orma abstracta como un todo8 prescindiendo del detalle de suscomponentes. La posibilidad de 9acer reerencia a toda la colecci$n deelementos mediante un nombre %nico correspondiente al dato compuestosimpli#ca en muc9os casos la escritura del prorama )ue lo maneja.

X. TIPO REGISTRO 5STRUCT7Los es)uemas de tupla pueden usarse en proramas en C" de#ni2ndolos comoestructuras del tipo reistro o struct. /n reistro struct es una estructura dedatos ormada por una colecci$n de elementos de inormaci$n llamadoscampos.DEFINICIÓN DE REGISTROS se 9ace utili7ando la palabra clave struct!

 D'pede struct Dipo"reistro ;  Dipo"campo nombre"campo  Dipo"campo nombre"campo  .

  <Cada una de las parejas Dipo"campo ' nombre"campo8 separadas por punto 'coma8 de#ne un campo o elemento componente ' su correspondiente ipo.Adem+s 9a' )ue tener en cuenta )ue la estrucutra acaba siempre con punto 'coma!

 D'pede enum Dipo-es ;  Enero8 ebrero

  <ARIA4,ES DE TIPO REGISTRO H SU INICIA,IZACIÓN Para declaravariables de tipo reistro es necesario 9aber reali7ado previamente la deinici$ndel tipo del reistro. No se permite declarar variables de tipo an$nimo.

 DipoFec9a a'er8 9o' DipoPunto punto8 punto DipoFec9a 9o' ( ; 8-ar7o8K<

USO Al manejar datos estructurados de tipo reistro se dispone de dosposibilidades. Operar con el dato completo8 o bien operar con cada campo porseparado. Las posibilidades de operar con el dato completo son bastantelimitadas. La %nica operaci$n admisible es la de asinaci$n. En estasasinaciones debe cumplirse la compatibilidad de tipos. No es su#ciente lacompatibilidad estructural8 es decir8 dos estructuras con los mismos campos noson compatibles si sus de#niciones se 9acen por separado.

ACCESO A UNA ESTRUCTURA ,ado )ue los campos de una estructura seprocesa eneralmente de orma individual8 deber+ poder acceder a cada uno deestos campos individualmente. Para acceder a un determinado campo parapoder leer o escribir en 2l 9aremos! variable.campo

Page 16: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 16/31

TEMA 1-.- AMP,IACIÓN DE ESTRUCTURAS DECONTRO,

1.1 ESTRUCTURAS COMP,EMENTARIAS DE ITERACIÓN

1.1.1 Re+e$ición "en$encia DOA veces resulta mas natural comprobar la condici$n )ue controla las

iteraciones al #nali7ar cada una de ellas8 en luar de 9acerlo al comien7o delas mismas. La condici$n )ue controla las repeticiones es una e3presi$n cu'oresultado es un valor de tipo bool. @i el resultado es true se vuelve a ejecutarla acci$n ' cuando el resultado es alse #nali7a la ejecuci$n de la estructura.,o ;  Operaciones.  Print 4otra operaci$nW5  @can4W Xtecla5< \9ile 4tecla(( s5

1.1.2 Sen$encia con$in(eEsta sentencia dentro de cual)uier bucle 4\9ile8 or o do5 #nali7a la iteraci$nen curso e inicia la siuiente iteraci$n. A veces dependiendo de la evoluci$nde los c+lculos reali7ados en una iteraci$n8 no tiene sentido completar laiteraci$n )ue se est+ reali7ando ' resulta m+s adecuado iniciar una nueva.For 4int i ( i S N i5;  1 4vectorCoe#cientes=i> (( 5;

Continue  <calculo ( calculo vectorCoe#cientes=i>

<

1.2 ESTRUCTURAS COMP,EMENTARIAS DE SE,ECCIÓNEl i es una estructura de selecci$n pero cuando tenemos )ue 9acer muc9os ianidades se vuelve inestable ' di&cil de entender para resolver este problemautili7aremos el switch.

1.2.1 Sen$encia SITCCuando la selecci$n entre varios casos alternativos depende del valor )uetoma una determinada variable o del resultado #nal de una e3presi$n8 es

necesario reali7ar comparaciones de esa misma variable o e3presi$n contodos los valores )ue puede tomar8 uno por uno8 para decidir el camino atomar.

@\itc9 4e3presion5 ;Case valor!

Acci$n A?rea]

Case valor!Case valorG!

Accion ??rea]

<

Page 17: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 17/31

La sentencia comien7a con la palabra clave switch ' a continuaci$n8 entrepar2ntesis8 se indica la e3presi$n8 despu2s8 para cada valor )ue puede tomarla variable utili7aremos la palabra clave case seuido del valor )ue puedatomar ' dos puntos 4!5 ` despu2s la sentencia a reali7ar8 ' para cerrar el caseutili7aremos un brea]. El manual de estilo de C" impone )ue cada acci$n#nali7a siempre con la sentencia brea] para )ue #nalice la sentencia s\it9despu2s de cada acci$n. El uso del brea] es obliatorio para C" ' opcional

para CC.

TEMA 11-.- ESTRUCTURAS DE DATOS

11.1 ARGUMENTOS DE TIPO ECTOR A4IERTOLos vectores con un tama*o inde#nido se denominan vectores abiertos. En C"los arumentos de tipo vector abierto se especi#can de manera similar a unadeclaraci$n de tipo vecotr8 omitiendo el tam*o e3plicito pero no los corc9etes4^M5! const int V= >

El precio )ue 9a' )ue paar por disponer de esat acilidad es tener )ue pasarsiempre la lonitud concreta del vector como arumento8 en cada llamada.

EscribirVectorAbierto 4vector,os8 NumeroElementos5

11.2 FORMACIONES ANIDADAS. MATRICES

11.2.1 Dec!aración e ma$rice" / ("o e "(" e!emen$o"Las matrices son estructuras de tipo ormaci$n 4arra'5 de dos o m+sdimensiones. /na orma sencilla de plantear la de#nici$n de estas estructurases considerarlas como vectores cu'os elementos son a su ve7 vectores. Los

vectores multidimensionales m+s utili7ados son los bidimensionales omatrices8 los cuales vendr+n de#nidos por dos &ndices 4 normalmente8 #la 'columna5.DEFINICIÓN const int NF1LA@(

Const int NCOL(J D'pede int DipoElemento D'pede DipoElemento DipoFila =NCOL> D'pede DipoFila Dipo-atri7 =NF1LA@>

/na ve7 tenemos de#nido el Dip-atri7 'a podemos de#nir una variable de esetipo!

 Dipo-atri7 tabla8 tablaLa de#nici$n de tipos )ue 9emos 9ec9o la podr&amos simpli#car!

 D'pede int Dipo-atri7 => =J> Dipo-atri7 tabla8tabla

OPERACIONES Las operaciones con elementos individuales de una matridpueden 9acerse directamente8 de orma an+loa a la operaci$n con variablessimpes de ese tipo. En cambio las operaciones lobales con matrices 9an deplantearse de manera similar a las operaciones lobales con vectores. Eneneral se operar+ elemento a elemento8 o a lo sumo por #las completas.

Page 18: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 18/31

11.? E, ES'UEMA UNIÓN0a' aplicaciones en las )ue resultar&a deseable )ue el tipo de un dato variasese%n las circunstancias. @i las posibilidades de variaci$n son un conjunto #nitode tipos8 entocnes se puede decir )ue el tipo del dato corresponde a unes)uema )ue es la uni$n de los tipos particulares posibles. Cada uno de los tiposparticulares constitu'e una variante o alternativa del tipo uni$n. Comosituaciones t&picas en las )ue se pueden aplicar los es)uemas uni$n tenemos!

• ,atos )ue pueden representarse de dierentes maneras.• Proramas )ue operan indistintamente con varias clases de datos.• ,atos estructurados con elementos opcionales.

Ejemplo! numeroTeneral ( entero : racci$n : real

11.?.1 E! $i+o (nión/n tipo uni$n se de#ne como una colecci$n de campos alternativos8 de talmanera )ue cada dato particular s$lo usar+ uno de esos campos en unmomento dado8 dependiendo de la alternativa aplicable. La de#nici$n essimilar a la de un areado o struct8 usando a9ora la palabra clave uni$n!

 D'pede uni$n DipoNumero ;1nt valorEnteroFloat valorReal

 DipoFraccion valorRacional<La reerencia a los elementos componentes se 9ace tambi2n como en lostipos struct!

 Diponumero numero8 otro8 raccion8 raccionNumero.valorentero ( GGOtro.valorreal ( 6oat 4numero.valorentero5Fraccion.valorracional ( raccion.valorracional

Como se 9a dic9o8 s$lo una de las variantes puede estar viente en unmomento dado. @i asinamos valor a una de ellas ser+ 2sta la )ue e3ista apartir de ese momento8 al tiempo )ue dejan de e3istir las dem+s.

11.?.2 Regi"$ro" con arian$e"El 9ec9o de )ue un dato de tipo uni$n deba ir acompa*ado de inormaci$ncomplementaria para saber cu+l es la variante aplicable 9ace )ue los tiposuni$n apare7can casi siempre ormando parte de estructuras mas complejas./n ejemplo es lo )ue se denomina como reistros con variantes. @e trata deareados o tuplas en los )ue 9a' una colecci$n de campos #jos8 aplicablesen todos los casos8 ' campos variantes )ue se de#nen se%n el es)uema

uni$n. Adem+s suele reservarse un campo #jo para indicar e3pl&citamentecual es la variante aplicable en cada momento8 a esto se le llamadiscriminante.

typedef enum ClaseNumero {Enter, Real, Fracción};

typedef struct TipoFraccio {

int numerador;

int denominador;

}

typedef union TipoValor {

int valorEnter;

float valorReal;

TipoFraccio valorracional; };  typedef struct TipoNumero {

Page 19: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 19/31

ClaseNumero clase;Campo discriminante

TipoValor valor; }

void EscriureNumero (TipoNumero n) {

switch (n.clase) {

case Enter print! ("# d", n.valor.valorEnter); break;

case Real print! ("# !", n.valor.valorReal); break;

case !racción print! ("# d $# d", n.valor.valorRacional.numerad oro,

n.valor.valorRacional.denominador); break; default: print! (%&&&&&'); }

}

TEMA 12 -.- ES'UEMAS TIPICOS DE OPERACIÓN CONFORMACIONES

12.1 ES'UEMAS DE RECORRIDOConsiste en reali7ar cierta operaci$n con todos ' cada uno de los elementos deuna ormaci$n. Aplicable a vector con cual)uier dimensi$n ' m+trices. El ormam+s eneral del es)uema de recorrido ser&a!

1niciar operaci$n9ile 4)uedan elementos sin tratar5;

Eleir uno de ellos ' tratarlo<completar operaci$n

La terminaci$n del elemento \9ile est+ aranti7ada 'a )ue el n%mero deelementos )ue altan por tratar es un valor #nito no neativo8 )ue vadisminu'endo en cada iteraci$n.

Para el recorrido de matrices necesitaremos dos or por ejemplo!For 4int( iSNi5;For 4int j( jSN j5;  Z =i>=j>(<

<

12.1.1 Recorrio no !inea!En ciertos casos el elemento a procesar debe eleirse reali7ando ciertosc+lculos ' el contador de iteraciones sirve undamentalmente para

contabili7ar el avance del recorrido ' detectar el #nal del bucle.

12.2 4US'UEDA EN UN ECTOR/na operaci$n de b%s)ueda de un elemento en un vector consiste en!

" ,eterminar si el elemento pertenece o no al vector." En caso de )ue el elemento pertene7ca al vector determinar cu+l es su

luar o posici$n en el vector.,os de los m2todos m+s usuales de b%s)ueda en vectores son! ?%s)ueda secuencial o lineal ?%s)ueda binario o dicot$mica.

4US'UEDA SECUENCIA, consiste en e3plorar secuencialmente 4recorrer5un vector desde el primer elemento 9asta el %ltimo ' comprobar si aluno de

Page 20: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 20/31

los elementos del vector contiene el valor buscado 4comparar cada elementocon el elemento a buscar5.4US'UEDA 4INARIO o ico$ómico" re)uiere8 para el peor de los casos4 cuando el elemento a buscar es el %ltimo o no se encuentra5 recorrer todo elvector ' 9acer un n%mero de comparaciones iual al tama*o del vector.Para vectores con muc9os elementos esta b%s)ueda )ui7+s no sea mu'conveniente.

La b%s)ueda binaria re)uiere menos comparaciones 4iteraciones5 )ue lasecuencial8 pero para reali7ar la b%s)ueda es necesario )ue el vector est2previamente ordenado.

La b%s)ueda binario consiste en!• En la primera repetici$n anali7amos el elemento central del vector• @i el valor a buscar coincide con este central 'a se 9a acabado de

buscar.• @i el valor a buscar es menor )ue el central se buscar+ en el tramo

i7)uierdo al central en uso de la misma t2cnica8 ' sino se buscar+ enel tramo derec9o.

En la seunda repetici$n el tramo a buscar es la mitad 4i7)uierda oderec9a al central5 del vector ' el elemento a evaluar es el centralde este nuevo tramo.

Estos pasos se repetir+n 9asta )ue encontremos el elemento o 9asta )ue eltramo a buscar se reduce a un elemento ' basta.

12.? INSERCIONEl problema )ue se plantea a)u& es insertar un nuevo elemento en una colecci$nde elementos ordenados8 manteniendo el orden de la colecci$n. Denemoselementos almacenados en un vector8 ocupando posiciones desde el principio

9asta el #nal )uedando libre alunos elementos del #nal.La operaci$n se puede reali7ar de orma iterativa8 e3aminando los elementosempe7ando por el #nal 9asta encontrar uno )ue sea inerior o iual al )ue se)uiere insertar. Los elementos ma'ores )ue el )ue se )uiere insertar se vanmoviendo una posici$n 9acia delante8 con lo )ue va )uedando un 9uevo enmedio del vector. Al encontrar un elemento menor )ue el nuevo8 se copia el

nuevo elemento en el9ueco )ue 9a' en esemomento.

12. ORDENACIÓN POR INSERCIÓN DIRECTAA)u& se aborda una soluci$n para la ordenaci$n de datos almacenados en unvector. El m2todo m+s sencillo es el de ordenaci$n por inserci$n directa. Est+basado en el es)uema de inserci$n mostrado en el apartado anterior. Ejemplo!

)ueremos ordenar un vector v de die7 elementos 4 a K5 ' )ue inicialmente estadesordenado8 ;8J8G88IJ8K8GI8H88J< Para comen7ar el primer elemento

Page 21: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 21/31

45 'a est+ ordenado consio mismo. Lueo e3traemos el seundo elemento4J5 ' se enera un 9ueco 8 )ue se puede utili7ar para ampliar la parte del vector'a ordenada. El m2todo de ordenaci$n consiste en insertar el elemento e3tra&doen su luar correspondiente entre los elementos 'a ordenador. Este proceso serepite con el tercero ' sucesivamente.

12. SIMP,IFICACIÓN DE ,AS CONDICIONES DE CONTORNOLa proramaci$n de operaciones con vectores8 reali7adas elemento a elemento8e3ie con recuencia reali7ar un tratamiento especial de los elementos e3tremosdel vector o8 en eneral8 de los elementos del contorno de una ormaci$n. Acontinuaci$n veremos alunas t2cnicas particulares para evitar la necesidad dedetectar de manera e3plicita si se 9a lleado a un elemento del contorno 'oreali7ar con 2l un tratamiento especial.

12..1 T)cnica e! cen$ine!a

Por ejemplo8 en el procedimiento eneral de b%s)ueda es necesariocomprobar en cada iteraci$n una condici$n doble! si no se 9a alcan7adotodav&a el #nal del vector8 ' si se encuentra el elemento buscado. La doblecondici$n del bucle complica el c$dio ' supone un tiempo adicional en laejecuci$n de cada operaci$n.La t2cnica centinela consiste en incluir el dato a buscar en el vector antes decomen7ar la b%s)ueda. El vector se amplia en . @e colocal al #nal si lab%s)ueda es 9acia delante ' viceversa. Este actuar+ de centinela ' aseura)ue la b%s)ueda nunca acaba de manera inructuosa. El es)uema deb%s)ueda se simpli#ca a una condici$n !

&nicar operación(colocar centinela)While (no se encuentre un elemento aceptable) "

legir siguiente elemento y 'er si es aceptable$completar operación ( si se ha encontrado el centinela indicare allo en labs*ueda)

TEMA 1? -.- PUNTEROS H ARIA4,ES DINMICASLos tipos de datos ' variables vistas 9asta a9ora se llaman est+ticas8 por)ue sutama*o se especi#ca al inicio por el proramador. El compilador reserva unespacio en memoria constante para la variable est+tica durante toda laejecuci$n del prorama. En ocasiones no se puede conocer el tama*o de lasvariables8 en estos casos 9abr+ )ue 9acer uso de variables in>mica". Estasestructuras se caraceri7an por la reserva ' liberaci$n de memoria )ue se reali7adurante la ejecuci$n del prorama8 ' este espacio puede variar.

Page 22: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 22/31

1?.1 ,A ESTRUCTURA SECUENCIAPuede de#nirse como un es)uema de datos del tipo iterativo8 pero con unn%mero variable de componentes. La estructura secuencia resulta parecida auna ormaci$n con n%mero variable de elementos. 0a' tipos de operaciones!

O+eracione" e con"$r(cción • A*adir o retirar componentes al principio de la secuencia.• A*adir o retirar componentes al #nal de la secuencia.• A*adir o retirar componentes en posiciones intermedias de la

secuencia.O+eracione" e acce"o

 

Acceso secuencial! las componentes deben tratarse una por una8en el orden en )ue aparecen en la secuencia.

 

Acceso directo! se puede acceder a cual)uier componentedirectamente indicando su posici$n8 como en una ormaci$n ovector.

Para el caso de acceso secuencial8 el tratamiento de una secuencia se reali7aempleando un cursor. El cursor es una variable )ue se*ala a un elemento de la

secuencia. El acceso8 inserci$n o eliminaci$n de componentes de la secuencia se9ace actuando sobre el elemento se*alado por el cursor. Para actuar sobre elcursor se suelen plantear las siuientes operaciones!

• &niciar% Pone el cursor se*alando al primer elemento•  +'anzar% El cursor pasa a se*alar al siuiente elemento.• ,in% Es una unci$n )ue indica si el cursor 9a lleado al #nal de la

secuencia.

1?.2 ARIA4,ES DINAMICAS./na manera de reali7ar estructuras de datos ilimitadas es mediante el empleo

de variables din+micas. No se declara como tal8 sino )ue se crea en el momentonecesario8 ' se destru'e cuando 'a no se necesita. No tienen nombre8 sino )uese desinan mediante otras variables llamadas punteros o reerencias.

1?.2.1 P(n$ero"@on variables simples cu'o contenido es precisamente una reerencia a otravariable. El valor de un puntero no es representable como n%mero o te3to.En su luar usaremos una representaci$n r+#ca en la )ue utili7aremos una6ec9a para enla7ar una variable de tipo puntero con la variable a la )ue 9ace

reerencia.

Dec!aración e +(n$ero" El tipo de puntero especi#ca en realidad el tipode variable a la )ue puede apuntar.

T/+ee# tipo"de"variableM tipo"puntero/na ve7 declarado el tipo8 se pueden declarar variables puntero de dic9otipo. /na variable puntero se puede usar para desinar la variable apuntadamediante la notaci$n!MpunteroEjemplo!

 D'pede intM tpTentero DpTentero pe

Mpe ( GGprint 4dW8Mpe5

Puntero Variableapuntada

Page 23: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 23/31

Estas sentencias asinan el valor GG a la variable din+mica se*alada por elpuntero pe8 ' lueo la imprime.Para poder detectar si un puntero se*ala realmente o no a otra variable8e3iste el valor especial N/LL 4no es una palabra clave8 esta dentro de lalibrer&a stdlib.95 Este valor es compatible con cual)uier tipo de puntero8 eindica )ue el puntero no se*ala a ninuna variable. @e usar+ para iniciali7arlas variables de tipo puntero al comien7o del prorama!

1 4Mpe f( N/LL5 ;Mpe ( GGprint 4dW8 Mpe5

<

1?.2.2 U"o e aria0!e" in>mica"Las variables din+micas no tienen reservado el espacio en memoria )uetienen las dem+s variables8 sino )ue se crean a partir de punteros en elmomento en )ue se indi)ue. /na ve7 creadas siuen e3istiendo inclusodespu2s de )ue termine la ejecuci$n del subprorama donde se crean. @ecrean as&!

 D'pede Dipo"de"variableM tipo"puntero Dipo"puntero punteroPuntero ( ne\ tipo"de"variable

El operador ne\ crea una variable din+mica del tipo indicado ' devuelve unareerencia )ue puede asinarse aun puntero de tipo compatible.La variable din+mica se crea a base de reservarle el espacio necesario enuna 7ona eneral de memoria estionada din+micamente. En principio no sepuede asumir )ue la variable reci2n creada tena un valor concreto8 iual)ue las variables normales )ue se declaran sin un valor inicial e3plicito./na ve7 creadas siuen e3istiendo 9asta )ue el proramador no especi#)ue)ue 'a no se necesita. Para ello e3iste la sentencia delete8 )ue permitedestruir la variable din+mica!

,elete puntero

1?.? REA,IZACIÓN DE SECUENCIAS MEDIANTE PUNTEROS o ,i"$aen!aaaLos punteros son un elemento de proramaci$n de mu' bajo nivel. Los lenuajesde proramaci$n simb$licos deber&an evitar su empleo8 sustitu'endo pormecanismos mas potentes de declaraci$n de estructuras de datos8 )uepermitiesen de#nir directamente estructuras din+micas ilimitadas.

Para crear una secuencia ilimitada tendremos )ue recurrir al empleo devariables din+micas ' punteros8 enla7ando cada elemento de la secuencia con elsiuiente. Cada elemento de la secuencia se materiali7a como un reistro condos campos! el primero contiene el valor de una componente8 ' el seundo esun puntero )ue se*ala al siuiente. El %ltimo apuntar+ a N/LL./na lista es una esctructura de datos din+mica ormada por un conjunto deelementos8 llamados nodos8 del mismo tipo ' almacenados en la memoriaprincipal siuiendo una secuencia l$ica.Podemos distinuir!

• ,i"$a" con$ig(a" @on a)uellas en las )ue los elementos se uardan enposiciones de memoria contiuas8 de orma )ue e)uivalen a tablas o

vectores unidimensionales . Las operaciones )ue podemos 9acer en unalista contiua son!

Page 24: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 24/31

o Ordenarlao ?uscar un elementoo A*adir un elementoo Eliminar un elemento

o ?orrar la lista completao Copiar una lista orien a un

destinoo Concatenar varias listaso ,ividir una lista en sublistas

Page 25: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 25/31

o

• ,i"$a" en!aaa" @on a)uellas en la )ue los elementos se encuentranalmacenados en posiciones de memoria no contiuas. Cada nodo ese)uivalente a un struct 4reistro5 ' est+ ormado por dos campos!o Campo valor8 )ue es el campo )ue contiene el datoo Campo siuiente! es el campo )ue act%a de enlace con el siuiente

nodo de la lista en secuencia l$ica.o Para de#nir un nodo!o  D'pede struct tiponodo ;o  DipoTelemento valor!o  DiponodoM siuienteo <o

o

o 1?. PUNTEROS H PASO DE ARGUMENTOSo  Como cual)uier otro dato8 un puntero puede pasarse como arumento

a un subprorama. Por deecto8 los datos de tipo puntero se pasancomo arumentos por valor. @i se desea usar un subprorama paramodi#car datos de tipo puntero8 entonces 9abr+ )ue pasar el punteropor reerencia.

o

o 1?..1 Pa"o e arg(men$o" meian$e +(n$ero"o En eneral el valor de un puntero en s& mismo no es sini#cativo8 sino )ueel puntero es s$lo un medio para desinar la variable apuntada. ,esde unpunto de vista conceptual el paso de un puntero como arumento puede serconsiderado e)uivalente a pasar como arumento la variable apuntada.o La di#cultad reside en el 9ec9o de )ue pasar un puntero por valor no evita)ue el subprorama pueda modi#car la variable apuntada.o

o

o TEMA 1-.- TIPOS A4STRACTOS DE DATOS 5TAD7o Conce+$o @i identi#ca el concepto de tipo de dato con el del conjunto

de valores )ue pueden tomar los datos de este tipo.o /n eno)ue mas moderno de la proramaci$n trata de asociar la idea

de tipo de datos con la clase de valores8 abstractos8 )ue pueden tomarlos datos. Esto )uiere decir )ue la representaci$n o codi#caci$nparticular de los valores no cambia8 el tipo del dato considerado.

o

o En el eno)ue actual de la proramaci$n se identi#can los tipos dedatos de orma completamente abstracta8 lleando a la idea de tipoabstracto de datos 4DA,5. Esto )uiere decir )ue un prorama )ue useese tipo de datos no deber&a necesitar nin%n cambio por el 9ec9o demodi#car la representaci$n o codi#caci$n de los valores de ese tipo. @ianali7amos con cuidado )ue necesita un prorama para poder usardatos de un tipo8 encontramos )ue 9ace alta!

o 0acer reerencia al tipo en s&8 mediante un nombre8 para poder de#nirvariables8 subproramas8 etc.

Page 26: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 26/31

o 0acer reerencia a alunos valores particulares8 eneralmente comoconstantes con nombre.

o 1nvocar operaciones de manipulaci$n de los valores de ese tipo8 bienusando operadores en e3presiones aritm2ticas o bien mediantesubproramas.o El conjunto de todos estos elementos constitu'e el tipo abstracto de

datos 4DA,5!o /n tipo abstracto de datos es una arupaci$n de una colecci$n de

valores ' una colecci$n de operaciones de manipulaci$n.o Es importante comprender )ue estas colecciones son cerradas8 es decir

s$lo se deben poder usar los valores abstractos ' las operacionesdeclaradas para ese tipo. Adem+s los detalles de c$mo se representanlos valores ' c$mo se implementan las operaciones pueden estarocultos para )uien utili7a el tipo abstracto.

o

o 1.1 REA,IZACIÓN DE TIPOS A4STRACTOS EN C-o DEFINICION ,e esta manera se pueden de#nir tipos abstractos de

datos8 'a )ue!o Los campos de datos sirven para almacenar el contenido de inormaci$n

del dato abstracto.o Los subproramas permiten de#nir operaciones sobre esos datos.o La posibilidad de declarar ciertos elementos como privados permite

ocultar detales de implementaci$n8 ' dejar visible s$lo la intera7 del tipoabstracto.o

o Ejemplo de TAD

o typedef struct Tipounto {

o !loat ;

o !loat *;

o  void +eer ();

o  void Escriir ();

o  !loat -istancia (Tipounto p);

o ;

o

o A parte de de#nir dentro del reistro los procedimientos ' uncionesestos subproramas deben implementarse uera del reistro 4ueradel .95 de la siuiente manera!

o void Tipounto+eer( ) {o  print! ("Coordenada &");

o scan! ("# !", / );

o  print! ("Coordenada 0&");

o scan! ("# !", / *);

o }

o void TipountoEscriir( ) {

o  print! (1(#!, #!)2, , *);

o }

o !loat Tipounto-istancia (Tipounto p) {

o  !loat delta, delta0;o delta 3 p.;

Page 27: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 27/31

o delta0 3 *p.*;

o }

o return s4rt (delta 5 delta 6 delta0 5 delta0);

o }

o

o 1.2 OCU,TACIÓNo Para )ue un tipo sea realmente abstracto 9ar&a alta )ue los detalles de

implemtenaci$n no ueran visibles. Danto en los campos como en losprocedimientos. En el caso anterior del DipoPunto los campos 3 e ' sonvisibles en todo momento8 ' pueden uncionar consultados 'modi#cados por el c$dio )ue usa el tipo.

o Para permitir esta ocultaci$n los tipos "$r(c$ admiten la posibilidad dedeclara ciertos elementos componentes como privados8 utili7ando lapalabra clave +ria$e para delimitar una 7ona de declaracionesprivadas dentro de la estructura.

o Ejemplo

o

t*pede! struct Tipo-ata {o void pone (int d7a, int mes, int a8o);

o int -7a ();

o int 9es ();

o int :8o ();

o void +eer ();

o  ool EsCorrecta (int d7a, int mes, int a8o);

o ........

o  private

o int d7a, mes, a8o;

o

};o +as variales dia, mes * a8o slo son visiles (accesiles) desde las !unciones *

 procedimientos 4ue estn de!inidos dentro de la estructura, *a 4ue estn de!inidas con el

modi!icador  private.

o

o 1.? METODO,OGA 4ASADA EN A4STRACCIONESo La t2cnica de proramaci$n estructurada8 basada en re#namientos

sucesivos8 puede ampliarse para contemplar la descomposici$nmodular de un prorama. La metodolo&a de desarrollo ser+esencialmente la misma )ue se 9a presentado anteriormente. La

dierencia es )ue a9ora disponemos tambi2n de un nuevo mecanismode abstracci$n8 )ue son los $i+o" a0"$rac$o" e a$o".

o En cual)uier caso el desarrollo deber+ atender tanto a la orani7aci$nde las operaciones como a la de los datos sobre los )ue operan8 demanera )ue 9abr+ )ue ir reali7ando simult+neamente las siuientesactividades!

o 1denti#car las operaciones a reali7ar8 ' re#narlas.o 1denti#car las estructuras de inormaci$n ' re#narlas.

o 1.?.1 De"arro!!o +or re8namien$o 0a"ao en a0"$raccione"o En cada etapa de re#namiento de una operaci$n 9a' )ue optar por una delas alternativas siuientes!

Page 28: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 28/31

o Considerar la operaci$n como operación terminal ' codi#carlamediante sentencias del lenuaje de proramaci$n

o Considerar la operaci$n como operación compleja ' descomponerla enotras m+s sencillas.

o Considerar la operaci$n como operación abstracta ' especi#carla8escribiendo m+s adelante el subprorama )ue la reali7a.

o A9ora podemos reormular estas opciones para las estructuras de datos

a utili7ar!o Considerar el dato como un dato elemental ' usar directamente un

tipo prede#nido del lenuaje para representarlo.o Considerar el dato como un dato complejo ' descomponerlo en otros

m+s sencillos 4como reistro8 uni$n o ormaci$n5.o Considerar el dato como un dato abstracto ' especi#car su intera78

dejando para m+s adelante los detalles de su implementaci$n.

o TEMA 1 -.- MÓDU,OSo CONCEPTO un m$dulo es un ramento de prorama desarrollado deorma independiente 4dise*ado ' compilando de orma independiente

del prorama )ue lo va a utili7ar5. El concepto de m$dulo est+&ntimamente asociado a la abstracci$n de datos. Cuando utili7amos unm$dulo a un prorama8 solo 9a' )ue saber )ue 9ace el m$dulo ' susunciones8 pero no tenemos por )u2 saber c$mo esta implementado.

o La ra7$n de e3iir compilaci$n por separado para los distintos m$dulosde un prorama obedece a la necesidad de limitar la complejidad dea)uello )ue est+ siendo elaborado por una persona en un momentodado. El proramador podr+ concentrarse en el m$dulo prescindiendoen parte de c$mo se utili7a ese modulo desde el resto del prorama.

o El concepto de m$dulo esta &ntimamente liado al concepto deabstracci$n.

o ESPECIFICACIÓN H REA,IZACIÓN Al iual )ue en cual)uierelemento abstracto8 en un m$dulo podemos distinuir!

o La especi#caci$n del modulo es todo lo )ue se necesita para poder usarlos elementos de#nidos en 2l. 4)ue 9ace el m$dulo5 4intera75

o La reali7aci$n del modulo consistir+ en la reali7aci$n de cada uno de loselementos abstractos contenidos en dic9o modulo.4como lo 9ace5.

o 1.1.1 Com+i!ación "e+araao

Los lenuajes de proramaci$n )ue permiten proramar usandom$dulos pueden emplear diversas t2cnicas para de#nirlos e invocar loselementos de#nidos en ellos.

o ompilación separada% El prorama est+ ormado por varios #c9erosuente8 cada uno de los cuales se compila por separado.

o ompilación segura% Al compilar un #c9ero uente el compiladorcomprueba )ue el uso de elementos de otros m$dulos es consistente conla intera7.

o cultación% Al compilar un #c9ero uente el compilador no usa inormaci$nde los detalles de reali7aci$n de los elementos de otros m$dulos.

Page 29: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 29/31

o 1.1.2 De"com+o"ición mo(!aro La posibilidad de compilar m$dulos de orma separada permite repartir

el trabajo de desarrollo de un prorama8 a base de reali7ar sudescomposición modular. Los dierentes m$dulos pueden serencarados a proramadores dierentes ' racias a ello todos puedentrabajar al mismo tiempo.

o ,e esta orma se puede desarrollar en un tiempo ra7onable los randes

proramas correspondientes a las aplicaciones de 9o' dia8 )ue totali7ancientos de miles o millones de sentencias.

o La descomposici$n modular puede re6ejarse en un diarama deestructura.

o

o

o

o

o

o

o En este diarama se representa cada m$dulocomo un rect+nulo8 con el nombre delm$dulo en su interior.

o Las l&neas indican las relaciones de uso8 pueden llevar punta de 6ec9asi es necesario indicar e3presamente cu+l es el sentido de la relaci$n.Normalmente no es necesario8 pues8 como en este caso8 un m$dulo )ueusa otro se dibuja por encima de 2l. Las l&neas se interpretan en ladirecci$n de arriba abajo.

o El objetivo de la inenier&a de sot\are es acilitar el desarrollo de unaaplicaci$n de orma orani7ada8 de manera )ue muc9as personaspuedan colaborar simult+neamente en un mismo pro'ecto. Para )ue ladescomposici$n en m$dulos sea adecuada8 desde un punto de vista8conviene )ue los m$dulos resulten tan independientes unos de otroscomo sea posible. Esta independencia se anali7a se%n dos criterios8denominados acoplamiento y cohesión.

o El acoplamiento entre m$dulos indica cu+ntos elementos distintos ocaracter&sticas de uno o varios m$dulos 9an de ser tenidos en cuenta a lave7 al usar un m$dulo desde otro. Este acoplamiento debe reducirse a unm&nimo.

o La co9esi$n indica el rado de relaci$n )ue e3iste entre los distintoselementos de un mismo m$dulo8 ' debe ser lo ma'or posible. Esto )uiere

decir )ue dos elementos &ntimamente relacionados deber&an ser de#nidosen el mismo m$dulo8 ' )ue un mismo m$dulo no debe incluir elementossin relaci$n entre s&.o

o 1.2 MÓDU,OS EN C-o /n prorama descompuesto en m$dulos se escribe como un conjunto

de #c9eros uente relacionados entre s&8 ' )ue pueden compilarse porseparado. Cada #c9ero uente constitu'e as& una unidad decompilaci$n.

o

C ,

?

A

Page 30: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 30/31

o 1.2.1 Proce"o e com+i!ación "im+!eo /n #c9ero uente es un #c9ero de te3to )ue contiene el c$dio de una

unidad de compilaci$n8 es decir8 es posible invocar el compiladord+ndole como entrada solo ese #c9ero uente.

o La compilaci$n de un #c9ero uente produce un #c9ero objeto )uecontiene la traducci$n del c$dio C" a instrucciones de m+)uina. Los#c9eros uente tienen la e3tensi$n .c++8 los #c9eros objeto la e3tensi$n

.o.o

o

o

o

o

o

o 1.2.2 Mó(!o +rinci+a!o Cuando se descompone un prorama en m$dulos uno de ellos debe ser

el m$dulo principal uno de ellos 9a de ser el prorama principal 4main5.o

o 1.2.? Mó(!o" no +rinci+a!e"o No permiten enerar un prorama ejecutable por s& solos 4 sin main5.

Est+n destinados a ser usados por el prorama principal. 0a' )uedistinuir los elementos p%blicos ' los privados. La distinci$n de estoselementos se 9ace repartiendo el c$dio del modulo en dos #c9erosuente separados! un #c9ero intera7 4.95 o #c9ero de cabecera8 ' un#c9ero de implementaci$n 4.cpp5.

o Los #c9eros de cabecera 4.95 se deben incluir en los #c9eros de

implenteaci$n 4cpp5 ' esto se 9ace con la directiva include )ue sirvepara 9acer reerencia a un #c9ero uente desde otro8 ' tiene comopar+metro el nombre dl #c9ero &sico 4.95 inclu'endo la e3tensi$n.

o 1.2. U"o e mó(!o"o Para usar los elementos p%blicos de#nidos en un m$dulo 9a' )ue incluir

la intera7 de ese m$dulo en el c$dio donde se va'a a utili7ar8 con ladirectiva include. La novedad a9ora es )ue los nombres de los#c9eros de la propia aplicaci$n deben escribirse entre comillas 4.W5 'no entre +nulos 4SU5. Con esto se indica al compilador )ue debebuscar dic9os #c9eros en donde reside el c$dio uente de la aplicaci$n

' no donde est+ instalada.o

o 1.2. Dec!aración / e8nición e e!emen$o" +]0!ico"o En la declaración de un elemento 9a' )ue especi#car lo necesario para

)ue el compilador pueda compilar correctamente el c$dio )ue usadic9o elemento.

o En la denición de un elemento 9a' )ue especi#car lo necesario para)ue el compilador enere el c$dio del propio elemento.

o Los tipos ' constantes se especi#can totalmente en el #c9ero de intera7.

No 9a' declaraci$n ' de#nici$n separadas.

.e3e.o -ontadorcompilador..cpp

Page 31: Resumen de la asignatura de Programación 2012/2013

7/23/2019 Resumen de la asignatura de Programación 2012/2013

http://slidepdf.com/reader/full/resumen-de-la-asignatura-de-programacion-20122013 31/31

o Las variables se de#nen de la manera 9abitual en el #c9ero deimplementaci$n8 inclu'endo la especi#caci$n de valor inicial en su caso.En el #c9ero de intera7 se pone adem+s una declaraci$n )ue indica el tipo' el nombre de la variable8 sin indicar valor inicial8 ' precedida de lapalabra clave e3tern.

o Los subproramas se de#nen de la manera 9abitual en el #c9ero deimplementaci$n ' permiten al compilador enerar el c$dio objeto del

subprorama. En el #c9ero de intera7 se pone adem+s una declaraci$n enorma de prototipo o cabecera de subprorama s$lo con el tipo8 nombre 'arumentos.o

o 1.? DEPENDENCIAS ENTRE FICEROSo Las relaciones de uso entre m$dulos se corresponden8 con las directivas

include usadas en un #c9ero uente para 9acer visibles los elementosde otro8 ' )ue pueden aparecer en el #c9ero .cpp 'o en el .9. Larecomendaci$n es!

o /n #c9ero 333.9 debe incluir otros '''.9 )ue use directamente.o /n #c9ero 333.cpp debe incluir su propio 333.9 ' otros '''.9 )ue use

directamente.o

o 1.?.1 Da$o" enca+"(!ao"o Cuando de#nimos un tipo abstracto de datos8 lueo 9a' )ue declarar

variables de ese tipo para poder trabajar con ellas.o Los datos encapsulados nos permiten declarar dentro de un m$dulo

una variable ' evitar una declaraci$n e3plicita e3terna.o Por ejemplo8 el m$dulo de implementaci$n pondr&amos!

o @tatic /ntipo valor1nternoo @tatic void OperacionG 4 5 ;o ..valor interno..o <o void Operacion 4 5 ;o ..valor interno.o <o void Operacion 4 5 ;o .valor interno.o <

o 0a' )ue recordar )ue por deecto las variables ' subproramasde#nidos en el nivel m+s e3terno de un m$dulo son lobales pordeecto. Para )ue sean tratados como locales 9a' )ue poner delante deellos la palabra static.