-Lenguajes de Programación

download -Lenguajes de Programación

of 124

Transcript of -Lenguajes de Programación

  • 7/24/2019 -Lenguajes de Programacin

    1/124

    1

    LENGUAJES DE

    PROGRAMACIN

  • 7/24/2019 -Lenguajes de Programacin

    2/124

    2

    Unidad Didctica 0: Introduccin

    !"#a $: E% "&tudio d" %o& %"n'ua("& d" )ro'ra#acin

  • 7/24/2019 -Lenguajes de Programacin

    3/124

    Hardware

    3

    Memoria

    Di&)o&iti*o d" &a%ida

    Ratn

    Teclado

    Carcasa (tipo torre)

    Unidadde disquetes

    Unidadde CD-ROM

    Memoria principal

    y Unidad de Disco

    Duro

    (ambos dentro)

    Monitor

  • 7/24/2019 -Lenguajes de Programacin

    4/124

    Id"a& i#)ortant"&: Un )ro'ra#a "& una cad"na secuenciald" in&truccion"&

    La& in&truccion"& ord"nan a% ord"nador r"a%i+ar unaoperacin&o,r" uno& datos

    La& in&truccion"& &" "("cutan una tra& otra- aun.u" )u"d"/a,"r bifurcaciones condicionales u&ar un dato )arad"cidir "ntr" do& in&truccion"& di1"r"nt"& )or dond"continuar2

    E% co#)utador procesatanto in&truccion"& co#o &u& dato& La& in&truccion"& 3 %o& dato& &" a%#ac"nanjuntos"n

    #"#oria 4

    Unidad d" Contro% Unidad Arit#4tico5L'ica

    Unidad d" M"#oria

    Modelo Von NeumannUNIDAD CENTA! DE "#CE$AMIENT# DE DAT#$%C"U

  • 7/24/2019 -Lenguajes de Programacin

    5/124

    67u4 "nti"nd" %a co#)utadora8

    La computadora manipula nicamente informacin digital:

    Datos e instrucciones se codificancomo

    dgitos binarios(0s y 1s)

    Por qu no se usa una representacin de otro tipo? Problema tecnolgico (es ms fcil representar ceros y

    unos

    ! qu nos conduce la solucin adoptada para e"itar elproblema tecnolgico? La mquina slo puede traba#ar con cadenas de ceros y

    unos

    5

  • 7/24/2019 -Lenguajes de Programacin

    6/124

    &u' entiende la computadora8a $ (b % c&(d % e

    Pasos sumar byc' y guardar el resultado en una direccin dememoria temporalX

    sumar dy e' y guardar el resultado en una direccin dememoria temporal Y

    di"idir el contenido deXpor el de Yy guardar el resultado en

    la direccin de memoria dea

    Ejemplo de cdigo mquina codigop direccp) direccp* direcc+es

    ,,,, ,,,,),,, ,,,,)),, ,,,,))),

    ,,,, ,,,)),,, ,,,))),, ,,,)))),,),) ,,,)))), ,,,,))), ,,,,,),,

    6

  • 7/24/2019 -Lenguajes de Programacin

    7/124

    7

    ("or)u' estudiar len*uajes de pro*ramacin+

    La )r"'unta "& 6cu% "& %a *"nta(a d" "&tudiar una *ari"dadd" %"n'ua("& di1"r"nt"& .u" "& )oco )ro,a,%" .u" uno%%"'u" a uti%i+ar8:

    M"(orar %a /a,i%idad )ara d"&arro%%ar a%'orit#o& "1icac"&9M"(orar "% u&o d"% %"n'ua(" d" )ro'ra#acin di&)oni,%"9Acr"c"ntar "% )ro)io *oca,u%ario con con&truccion"&

    ti%"& &o,r" )ro'ra#acin9 ;ac"r )o&i,%" una #"(or "%"ccin d"% %"n'ua(" d"

    )ro'ra#acin9

  • 7/24/2019 -Lenguajes de Programacin

    8/124

    8

    ,re-e .istoria de los len*uajes de pro*ramacin/

    Desarrollo de los primeros len*uajes/!en*uajes basados en el c0lculo num'rico

    1Ejemplo/ 2#TAN34!en*uajes para ne*ocios 1Ejemplo/

    C#,#!34!en*uajes para Inteli*encia Artificial

    1Ejemplo/ !I$"34!en*uajes para sistemas 1Ejemplo/ C34

  • 7/24/2019 -Lenguajes de Programacin

    9/124

    9

    E*o%ucin d" %o&L"n'ua("& d" Pro'ra#acin

    D"c%arati*o&

  • 7/24/2019 -Lenguajes de Programacin

    10/124

    10

    E*o%ucin d" %o&L"n'ua("& d" Pro'ra#acinOri"ntado& a O,("to& "I#)"rati*o&

  • 7/24/2019 -Lenguajes de Programacin

    11/124

    11

    El papel de los len*uajes de pro*ramacin

    Inicia%#"nt" %o& %"n'ua("& &" )ro3"cta,an )ara "("cutar )ro'ra#a& con"1ici"ncia9 A #"diado& d" %o& a=o& &"&"nta %a )ro'ra#acin ca#,ia: La& #.uina& &on #"no& co&to&a& 3 au#"ntan %o& co&to& d" )ro'ra#acin9 Sur'" %a n"c"&idad d" tra&%adar )ro'ra#a& d" uno& &i&t"#a& a otro&9

    E% #ant"ni#i"nto d"% )roducto con&u#" #a3or"& r"cur&o& d" c#)uto9 La tar"a d"% %"n'ua(" d" a%to ni*"% "& %a d" 1aci%itar "% d"&arro%%o d" )ro'ra#a&corr"cto& )ara r"&o%*"r )ro,%"#a& "n a%'una r"a d" a)%icacin dada9

    Lo& %"n'ua("& d" )ro'ra#acin "*o%ucionan o d"(an d" u&ar&"9In1%u"ncia& .u" o,%i'an a %a r"*i&in d"% %o& %"n'ua("&: Ca)acidad d" %a& co#)utadora&9 A)%icacion"&: Lo& r".u"ri#i"nto& d" nu"*a& r"a& d" a)%icacin a1"ctan %o&

    di&"=o& d" nu"*o& %"n'ua("& 3 %a& r"*i&ion"& 3 a#)%iacion"& d" %o& #&anti'uo&9

    M4todo& d" )ro'ra#acin9 M4todo& d" i#)%"#"ntacin9 E&tudio& t"rico&9 E&tandari+acin9

  • 7/24/2019 -Lenguajes de Programacin

    12/124

    12

    Atributos de un buen len*uaje Claridad5 sencille6 7 unidad %"'i,i%idad2: La &inta>i& d"% %"n'ua(" a1"cta %a

    1aci%idad con %a .u" un )ro'ra#a &" )u"d" "&cri,ir- )or a )ru",a- 3 #& tard""nt"nd"r 3 #odi1icar9 #rto*onalidad: Ca)acidad )ara co#,inar *aria& caract"r?&tica& d" un %"n'ua(" "n

    toda& %a& co#,inacion"& )o&i,%"&- d" #an"ra .u" toda& "%%a& t"n'an &i'ni1icado9 Naturalidad para la aplicacin: La &inta>i& d"% )ro'ra#a d"," )"r#itir .u" %a

    "&tructura d"% )ro'ra#a r"1%"(" %a "&tructura %'ica &u,3ac"nt"9 Apo7o para la abstraccin: Una )art" i#)ortant" d" %a tar"a d"% )ro'ra#ador "&

    )ro3"ctar %a& a,&traccion"& ad"cuada& )ara %a &o%ucin d"% )ro,%"#a 3 %u"'oi#)%"#"ntar "&a& a,&traccion"& "#)%"ando %a& ca)acidad"& #& )ri#iti*a& .u")ro*"" "% %"n'ua(" d" )ro'ra#acin #io9

    2acilidad para -erificar pro*ramas: La &"nci%%"+ d" %a "&tructura &"#ntica 3&intctica a3uda a &i#)%i1icar %a *"ri1icacin d" )ro'ra#a&9

    Entorno de pro*ramacin: t"rno9

    Porta,i%idad d" )ro'ra#a& Co&to d" u&o:

    $9 Co&to d" "("cucin d"% )ro'ra#a9 @9 Co&to d" traduccin d" )ro'ra#a&9 9 Co&to d" cr"acin- )ru",a 3 u&o d" )ro'ra#a&9 B9 Co&to d" #ant"ni#i"nto d" %o& )ro'ra#a&: co&to tota% d"% cic%o d" *ida9

  • 7/24/2019 -Lenguajes de Programacin

    13/124

    13

    Dominios de aplicacin Aplicaciones de los a8os sesenta4 Durant" %a d4cada d" $0- ca&i

    toda %a )ro'ra#acin &" )od?a di*idir "n cuatro #od"%o& ,&ico& d"

    )ro'ra#acin: D" )roc"&a#i"nto d" n"'ocio& COOL29 Ci"nt?1ico&

  • 7/24/2019 -Lenguajes de Programacin

    14/124

    14

    Estandari6acin de los len*uajes

    Lo& "&tndar"& &on "n '"n"ra% d" do& c%a&"&: $9 Est0ndares patentadosDE PAC!O2: Son %a& d"1inicion"&"%a,orada& )or %a co#)a=?a .u" d"&arro%%o "% %"n'ua(" 3 .u" "& &u)ro)i"taria9

    @9 Est0ndares de consenso DE

  • 7/24/2019 -Lenguajes de Programacin

    15/124

    15

    Uso de estndares en forma eficaz E& n"c"&ario ocu)ar&" d" tr"& cu"&tion"&:

    #portunidad 6Cundo "&tandari+ar un %"n'ua("82: Lo d"&"a,%" &"r?a"&tandari+ar un %"n'ua(" %o &u1ici"nt"#"nt" )ronto )ara .u" ">i&ta&u1ici"nt" ">)"ri"ncia "n "% u&o d"% %"n'ua("- )"ro no d"#a&iado tard"-)ara no a%"ntar #uc/a& i#)%"#"ntacion"& inco#)ati,%"&9

    Conformidad 67u4 &i'ni1ica .u" un )ro'ra#a &" ad/i"r" a un "&tndar 3.u" un co#)i%ador co#)i%a un "&tndar82: Si ">i&t" un "&tndar )ara un%"n'ua("- &" &u"%" /a,%ar d" conformidad con r"&)"cto a "&" "&tndar9 Un

    )ro'ra#a "& conforme &i &%o uti%i+a caract"r?&tica& d"1inida& "n "%"&tndar9 Un compilador conformable "& uno .u"- cuando &" %" da un)ro'ra#a con1or#"- )roduc" un )ro'ra#a "("cuta,%" .u" '"n"ra %a &a%idacorr"cta9

    #bsolescencia 6Cundo "n*"("c" un "&tndar 3 c#o &" #odi1ica82: Lo&"&tndar"& &" ti"n"n .u" r"*i&ar cada a=o& 3 3a &"a r"no*ar&" od"&cartar&"9 Ca&i todo& %o& "&tndar"& r".ui"r"n co#)ati,i%idad /aciaatr& E% nu"*o "&tndar d"," inc%uir *"r&ion"& #& anti'ua& d"% %"n'ua("9E&to ti"n" "% )ro,%"#a d" .u" "% %"n'ua(" &" )u"d" /ac"r di1?ci% d" #an"(ara cau&a d" %a& nu#"ro&a& con&truccion"& o,&o%"ta&9

    Una caract"r?&tica "& obsolescente&i "& candidata a &"r d"&cartada "n %a)r>i#a *"r&in d"% "&tndar9

    Una caract"r?&tica desaprobada&" )u"d" *o%*"r o,&o%"&c"nt" "n "%)r>i#o "&tndar- )or %o cua% )u"d" &"r d"&cartada d"&)u4& d" do&

    r"*i&ion"&9

  • 7/24/2019 -Lenguajes de Programacin

    16/124

    16

    Efectos de los entornos sobre los len*uajes

    Cuatro c%a&"& '"n"ra%"& d" "ntorno& o,("ti*ocu,r" ca&i toda& %a& a)%icacion"& d")ro'ra#acin:d" )roc"&a#i"nto )or %ot"&- int"racti*o-d" &i&t"#a "#)otrado- 3

    d" )ro'ra#acin "ntorno int"racti*o29Cada uno )%ant"a di&tinto& r".u"ri#i"nto&&o,r" %o& %"n'ua("& ada)tado& a "&o&"ntorno&9

  • 7/24/2019 -Lenguajes de Programacin

    17/124

    17

    Entornos de procesamiento por lotes

    E% #& &i#)%" "ntorno o)"rati*o &" co#)on" &%o d"arc/i*o& ">t"rno& d" dato&9 Un )ro'ra#a to#a un ci"rtocon(unto d" arc/i*o& d" dato& co#o "ntrada- )roc"&a %o&dato& 3 )roduc" un con(unto d" arc/i*o& d" dato& d" &a%ida9E% no#,r" d" )roc"&a#i"nto )or %ot"& *i"n" )or.u" %o&dato& d" "ntrada &" r"n"n "n lote& d" arc/i*o& 3 &on)roc"&ado& "n %ot"& )or )ro'ra#a&9 Lo& arc/i*o& con&titu3"n %a ,a&" )ara ca&i toda %a "&tructura d" EKS9 Un "rror .u" t"r#in" %a "("cucin d"% )ro'ra#a "& ac")ta,%" aun.u"

    co&to&o9 No "& )o&i,%" %a a3uda ">t"rna )or )art" d"% u&uario )ara#an"(ar o corr"'ir "rror"& d" in#"diato9

    Car"ncia d" r"&triccion"& d" r"'u%acin d" ti"#)o9 No /a3 r"cur&o&)ara #onitor"ar o a1"ctar dir"cta#"nt" %a *"%ocidad d" "("cucin d"%)ro'ra#a9

  • 7/24/2019 -Lenguajes de Programacin

    18/124

    18

    Entornos interacti-os E% )ro'ra#a int"racta durant" &u "("cucin dir"cta con unu&uario "n una con&o%a d" *i&ua%i+acin- "n*iando

    a%t"rnati*a#"nt" &a%ida& /acia 4&ta 3 r"ci,i"ndo "ntrada&d"&d" "% t"c%ado o ratn )roc"&ador"& d" t">to- /o(a& d"c%cu%o- (u"'o&- "tc929

    La& caract"r?&tica& d" EKS int"racti*a& &on di1"r"nt"& d" %a&o)"racion"& ordinaria& con arc/i*o&9 E% )ro'ra#a d"," &"r ca)a+ d" '"&tionar "% #an"(o d" "rror"&9 La

    t"r#inacin d"% )ro'ra#a co#o r"&)u"&ta aun "rror no "&ordinaria#"nt" ac")ta,%" a di1"r"ncia d"% )roc"&a#i"nto )or %ot"&29

    Lo& )ro'ra#a& int"racti*o& d","n uti%i+ar con 1r"cu"ncia a%'n

    conc")to d" r"&triccion"& d" ti"#)o9 E% conc")to d" )ro'ra#a )rinci)a% &u"%" "&tar au&"nt"9 En &u %u'ar-"% )ro'ra#a &" co#)on" d" un con(unto d" &u,)ro'ra#a& 3 "%u&uario introduc" "% )ro'ra#a )rinci)a% co#o una &"ri" d"co#ando& "n "% t"r#ina%9

  • 7/24/2019 -Lenguajes de Programacin

    19/124

    19

    Entornos de sistemas incrustados 1empotrados3

    Un &i&t"#a d" co#)utadora .u" &" u&a )ara contro%ar )art" d"un &i&t"#a #& 'rand" co#o una )%anta indu&tria%- unaa"rona*"- "tc9- &" conoc" con "% no#,r" d" sistema decomputadora incrustado9 E% 1a%%o d" una a)%icacin "#)otrada)u"d" )on"r "n )"%i'ro %a *ida9 La &"'uridad d" 1unciona#i"nto3 corr"ccin &on atri,uto& )rinci)a%"&9 Su"%"n o)"rar &in un &i&t"#a o)"rati*o &u,3ac"nt" 3 &in arc/i*o& d""ntorno 3 di&)o&iti*o& d" EKS u&ua%"&9 E% )ro'ra#a d"," int"ractuar

    dir"cta#"nt" con %a #.uina9 E% #an"(o d" "rror"& ti"n" 'ran i#)ortancia9 Cada )ro'ra#a d"," "&tar

    )r")arado )ara #an"(ar todo& %o& "rror"& "n 1or#a int"rna- ado)tandoaccion"& a)ro)iada& )ara r"cu)"rar&" 3 continuar9 La int"rru)cin d"%

    )ro'ra#a no "& ac")ta,%" 3 no /a3 un u&uario "n "% "ntorno .u" )u"da)ro)orcionar %a corr"ccin int"racti*a d"% "rror9 O)"ran "n ti"#)o r"a%- dond" %a r"&)u"&ta %a& "ntrada& d"," )roducir&"

    "n int"r*a%o& d" ti"#)o r"&trin'ido&9 Su"%" &"r un &i&t"#a di&tri,uido- co#)u"&to )or #& d" una

    co#)utadora9

    Una *"+ iniciada& %a& tar"a&- &" "("cutan )or %o co#n d" 1or#a&i#u%tn"a " ind"1inida9

  • 7/24/2019 -Lenguajes de Programacin

    20/124

    20

    Entornos de pro*ramacin E& "% "ntorno "n "% cua% %o& )ro'ra#a& &" cr"an 3 &" )on"n a )ru",a9 Con&i&t" "n

    un con(unto d" /"rra#i"nta& "ditor- d")urador- *"ri1icador- '"n"rador"& d" dato&d" )ru",a- "tc92 d" a)o3o 3 un %"n'ua(" )ara in*ocar%a&9

    A% compilar por separadocada &u,)ro'ra#a "% co#)i%ador n"c"&ita in1or#acind": La "&)"ci1icacin d"% n#"ro- ord"n 3 ti)o d" )ar#"tro&9 La d"c%aracin d" ti)o d" dato&9 La d"1inicin d" un ti)o d" dato& )ara %a d"c%aracin %oca% d" *aria,%"&29

    Un )ro,%"#a co#n- "& "ncontrar- durant" "% "n&a#,%ado d"% )ro'ra#a 1ina%co#)%"to- .u" *ario& &u,)ro'ra#a& 3 otra& unidad"& d" )ro'ra#a ti"n"n nombresd" *aria,%"&2 i*uales9 M4todo& )ara "*itar "&t" )ro,%"#a:

    $9 !odo no#,r" co#)artido d"," &"r nico9 S" d","n u&ar con*"ncion"& )ara %aa&i'nacin d" no#,r"& d"&d" un )rinci)io9

    @9 D"1inir- "n "% %"n'ua("- r"'%a& d" #,ito- )ara ocu%tar no#,r"99 Lo& no#,r"& &" )u"d"n conoc"r a'r"'ando ">)%?cita#"nt" &u& d"1inicion"& d"&d" una

    ,i,%iot"ca ">t"rna /"r"ncia "n POO29 Caract"r?&tica& .u" a3udan a poner a prueba 7 depurar)ro'ra#a&9

    $9 Caract"r?&tica& )ara rastreod" "("cucin9:4 "untos de interrupcin9 Cuando &" a%can+a un )unto d" int"rru)cin durant" %a

    "("cucin d"% )ro'ra#a- %a #ia &" int"rru#)" 3 "% contro% &" tra&%ada a% )ro'ra#ador"n un t"r#ina%9

    ;4 Asertos: ">)r"&an r"%acion"& .u" d","n cu#)%ir&" "ntr" %o& *a%or"& d" %a& *aria,%"& "n"&" )unto d"% )ro'ra#a9

  • 7/24/2019 -Lenguajes de Programacin

    21/124

    21

    Marcos de ambiente Un a#,i"nt" d" a)o3o

    con&i&t" "n &"r*icio&d" in1ra"&tructura .u"&" conoc"n co#o#arco d" a#,i"nt"9

    E&t" #arco &u#ini&tra&"r*icio& co#o und")&ito d" dato&-int"r1a+ 'r1ica d"u&uario- &"'uridad 3&"r*icio& d"

    co#unicacin9 Lo&)ro'ra#a& &" "&cri,"nd" #odo .u" uti%ic"n"&to& &"r*icio&9

  • 7/24/2019 -Lenguajes de Programacin

    22/124

    22

    M0)uinas -irtuales Aun.u" /a3 #uc/o& ra&'o& .u" &" )odr?an d"&tacar

    co#o candidato& )ara 1or#ar )art" d" una d"1inicin d"%conc")to d" #.uina *irtua% a )artir d" a/ora MF2- unaMF &" )u"d" d"1inir &"nci%%a#"nt" co#o una ca)a d"a,&traccin .u" &")ara "% 1unciona#i"nto d" unord"nador d" &u /ardar"9 Ad"#&- %a& MF &" di*id"n"n abstractas o t"rica&- co#o &"r?a %a #.uina d"!urin' "% )ri#"r "("#)%o d" una MF2- 3 concretas o)rctica& a %a& .u" &" .ui"r" nor#a%#"nt" &" /ac"

    r"1"r"ncia a% /a,%ar d" MF29 En "&ta &"ccin &" tratarn%a& MF concr"ta& .u"- co#o &" *"r- &on ca)a& d"&o1tar" .u" (u"'an un )a)"% r"%"*ant" tanto "n "%1unciona#i"nto d" %o& %"n'ua("& co#)i%ado& co#oint"r)r"tado&9

  • 7/24/2019 -Lenguajes de Programacin

    23/124

    23

    Introduccin al concepto

    La& MF &" con&tru3"ron )ara &i#)%i1icar "%)roc"&o d"% contro% d"% /ardar" d" unord"nador )or.u" ">ti"nd"n 3 "n#a&caran %a

    1unciona%idad d"% /ardar" a tra*4& d")roc"di#i"nto& 3 dato& a,&tracto&9 S" )u"d"n id"nti1icar do& ti)o& d" MF

    concr"ta&:

    %a& .u" (u"'an un )a)"% "n %a )r")aracin d" un)ro'ra#a )ara &u "("cucin ti"#)o d" co#)i%acin23

    %a& .u" )"r#it"n %a "("cucin d" dic/o )ro'ra#a9 La1i'ura #u"&tra %a di1"r"ncia "ntr" %o& do& ti)o&:

  • 7/24/2019 -Lenguajes de Programacin

    24/124

    24

    E% )a)"% d" %a& #.uina& *irtua%"& "n %a co#)i%acin 3 %a "("cucin d" un )ro'ra#a9

  • 7/24/2019 -Lenguajes de Programacin

    25/124

    25

    Introduccin al concepto La& MF &u"%"n a)ar"c"r "n una ("rar.u?a9 U&a#o& %a ("rar.u?a d" MF d"

    co#)i%acin- )or "("#)%o- cada *"+ .u" in*oca#o& "% co#)i%ador d" C9 do& "("#)%o& #u3 co#un"& d"% )a)"% d" una MF "n %a ("rar.u?a d"MF d" "("cucin &on Po&tScri)t .u" d"1in" una MF )ara una i#)r"&ora23 MSDOS ,a(o MS indo& .u" d"1in" una MF .u" )"r#it" .u"anti'uo& )ro'ra#a& d" DOS 1uncion"n ,a(o indo&29 Po&tScri)t "& una MF .u" inc%u3" "% "&tado 'r1ico- %a ruta actua%- "% "&tado

    d"% diccionario 3- aun.u" &"a ,a&tant" co#)%"(o- )r"&"nta una *i&in d" a%to

    ni*"% d" #uc/o& ti)o& di&tinto& d" i#)r"&ora&- ai&%ando %a& caract"r?&tica& d"%a& i#)r"&ora& d" %a& a)%icacion"& .u" %a& u&an9 A %a /ora d" i#)%"#"ntar un %"n'ua(" d" )ro'ra#acin- %a& "&tructura&

    d" dato& 3 a%'orit#o& uti%i+ado& "n %a "("cucin d" un )ro'ra#a "&d"cir- %a &inta>i& 3 &"#ntica d" cada "&tructura2 d"1in"n %a& MFi#)%?cita#"nt"2 )ara "&t" %"n'ua("9 %a& d"ci&ion"& .u" to#a "%

    d"&arro%%ador a1"ctan tanto a %a traduccin co#o a %a "("cucin d" %o&)ro'ra#a& "&crito& "n "&t" %"n'ua("9 La& MF &" di&tin'u"n "ntr" &?&"'n tr"& crit"rio&: La conc")cin d" %a& MF .u" ti"n" "% d"&arro%%ador ,a&ada "n %a d"1inicin

    d"% %"n'ua("9 La& 1aci%idad"& di&)oni,%"& "n "% /ardar" d"% ord"nador9 La& d"ci&ion"& d" i#)%"#"ntacin to#ada& )or %o& d"&arro%%ador"&9

  • 7/24/2019 -Lenguajes de Programacin

    26/124

    26

    Introduccin al concepto

    Aun.u" &" )u"d" "&cri,ir un co#)i%ador )ara traducir o co#)i%ar2 un)ro'ra#a "&crito "n un %"n'ua(" d" a%to ni*"% dir"cta#"nt" a% cdi'o#.uina "n "% &"ntido d" no d")"nd"r d" nin'una otra )i"+a "n "%&i&t"#a )ara )roducir%o2- no "& nada co#n /ac"r%o /o3 "n d?a )or *aria&ra+on"&- do& d" %a& cua%"& &on: Cuando a)ar"+ca "n "% #"rcado "% &i'ui"nt" )roc"&ador )or "("#)%o- P"ntiu#

    IFd"&)u4& d" P"ntiu# III2- /a,r .u" #odi1icar "% co#)i%ador9 No ti"n" &"ntido r")"tir "% )roc"&o d" di&"=o 3 d"&arro%%o- .u" "& co&to&o-cuando 3a &" /a /"c/o %o #io #uc/a& *"c"& ant"& )ara otro& %"n'ua("&

    )ara una #.uina concr"ta9 Un ca&o %o con&titu3"n %o& co#)i%ador"& C- .u" 3a %%"*an #uc/o ti"#)o

    "n 1unciona#i"nto 3 &on #u3 "1ici"nt"& 3 "&ta,%"&9 Por %o tanto- /a3 *ario&%"n'ua("& co#o C a% #"no& "n %a& )ri#"ra& *"r&ion"&2 cu3o

    co#)i%ador tradu(o "% cdi'o 1u"nt" d" C a C )ara )od"r %u"'o u&ar "%co#)i%ador C "&tndar9 En '"n"ra%- &%o &" &u"%" r"di&"=ar un co#)i%adornu"*o d"&d" c"ro cuando %o& in'"ni"ro& d"% %"n'ua(" "&tn int"ntandoa%can+ar nu"*o& o,("ti*o& )ara "&" %"n'ua("- "n ca&o d" .u" *a3an #&a%% .u" "% #od"%o 1unciona% d" %o& co#)i%ador"& 3a di&)oni,%"& co#o- )or"("#)%o- "& "% ca&o d" Ja*a9

  • 7/24/2019 -Lenguajes de Programacin

    27/124

    27

    i&t" otro)roc"&o- .u" &" %%a#a int"r)r"tacin- .u" ti"n" #& .u" *"r con "% )a)"% d" %a& MF

    "n "% ti"#)o d" "("cucin .u" "n "% ti"#)o d" co#)i%acin9

  • 7/24/2019 -Lenguajes de Programacin

    28/124

    28

  • 7/24/2019 -Lenguajes de Programacin

    29/124

    29

    acta#"nt" .u4

    i#)%"#"ntacin d" %o& &"r*icio& "& n"c"&ario9 Un "("#)%o &"r?a %a ("rar.u?a d" MF .u"

    co#)on" "% &i&t"#a d" *"ntana& - dond" /a3una ca)a .u" d"1in" "% 1unciona#i"ntoind")"ndi"nt"#"nt" d" %o& di&)o&iti*o& 3-dir"cta#"nt" d",a(o- una ca)a .u" d"1in" "%

    1unciona#i"nto "n t4r#ino& d" %o& di&)o&iti*o&9A.u? d")"nd" d" %a ca)a .u" d")"nd" d" %o&di&)o&iti*o&- no d" una i#)%"#"ntacin "nconcr"to d" "&ta ca)a )or %o tanto- /a3*"r&ion"& d" )ara #uc/o& ti)o& d" /ardar"dond" %a nica di1"r"ncia "& %a i#)%"#"ntacind" %a ca)a r"%acionada con %o& di&)o&iti*o& %a&

    d"#& ca)a& &u)"rior"& &on id4ntica&29

  • 7/24/2019 -Lenguajes de Programacin

    30/124

    30

    !en*uajes intermedios

    Un %"n'ua(" int"r#"dio &" )u"d" d"1inirco#o una #an"ra d" r")r"&"ntar)roc"di#i"nto& 3 "&tructura& d" dato& .u"

    &ir*a co#o "ntrada )ara una MF "n a%'una)art" d" &u ("rar.u?a- "ntr" "% %"n'ua(" d""ntrada "% ni*"% #& a%to2 3 "% cdi'o

    "("cutado "n %a #.uina "% ni*"% #& ,a(o2tanto "n "% ti"#)o d" co#)i%acin co#o "n "%d" "("cucin9

  • 7/24/2019 -Lenguajes de Programacin

    31/124

    31

    !en*uajes intermedios

    Un %"n'ua(" int"r#"dio &" )u"d" d"1inirco#o una #an"ra d" r")r"&"ntar)roc"di#i"nto& 3 "&tructura& d" dato& .u"

    &ir*a co#o "ntrada )ara una MF "n a%'una)art" d" &u ("rar.u?a- "ntr" "% %"n'ua(" d""ntrada "% ni*"% #& a%to2 3 "% cdi'o

    "("cutado "n %a #.uina "% ni*"% #& ,a(o2tanto "n "% ti"#)o d" co#)i%acin co#o "n "%d" "("cucin9

  • 7/24/2019 -Lenguajes de Programacin

    32/124

    32

    !en*uajes intermedios Para con&id"rar "% )a)"% d" %o& %"n'ua("& int"r#"dio& 3 &u&

    *"nta(a& 3 d"&*"nta(a&- con*i"n" d"&tacar %a di1"r"ncia "ntr"%a traduccin d" un %"n'ua(" d" a%to ni*"% a cdi'o #.uinaant"rior#"nt" a &u "("cucin &u co#)i%acin2 3 &uint"r)r"tacin- "& d"cir- %a con*"r&in d" cada in&truccin d"%%"n'ua(" a cdi'o #.uina 3 &u "("cucin- una )or una- a%

    "("cutar "% )ro'ra#a9 E&t" )roc"&o &" r"a%i+a a tra*4& d"una MF d" int"r)r"tacin .u" &i#u%a un ord"nador cu3ocdi'o #.uina "& "% %"n'ua(" d" a%to ni*"% .u" "&t &i"ndoint"r)r"tado9 t?)ica#"nt"- "&ta MF &" con&tru3" a tra*4&d" un con(unto d" )ro'ra#a& d" cdi'o #.uina .u"

    r")r"&"nta %o& a%'orit#o& 3 "&tructura& d" dato& n"c"&ario&)ara %a "("cucin d" %a& in&truccion"& d"% %"n'ua(" d" a%toni*"%9 ;a3 *"nta(a& 3 d"&*"nta(a& "n cada #an"ra d"con*"rtir %o& %"n'ua("& d" a%to ni*"% a cdi'o #.uina- .u"&" )u"d"n r"&u#ir a&?:

  • 7/24/2019 -Lenguajes de Programacin

    33/124

    33

    !en*uajes intermedios

  • 7/24/2019 -Lenguajes de Programacin

    34/124

    34

    !en*uajes intermedios Estos dos casos representan los dos e?tremos

    por)ue5 como 7a se .a -isto5 e?iste tambi'n lo)ue se llama la compilacin parcial5 )ue es uname6cla de los dos enfo)ues5 donde se compilael len*uaje de alto ni-el a un len*uajeintermedio 1m0s cerca de las estructuraspresentes en el cdi*o m0)uina )ue las delcdi*o fuente3 7 lue*o se interpreta estelen*uaje al ejecutar el pro*rama4

    Como puede ima*inarse5 esta t'cnica combina

    las -entajas 7 des-entajas de los dos enfo)uesanteriores4 Un ejemplo de esta combinacine?iste en el len*uaje de pro*ramacin

  • 7/24/2019 -Lenguajes de Programacin

    35/124

    35

    !en*uajes intermedios Entr" otra& co&a&- Ja*a "#)"+ con %a id"a d" %i,"rar a%

    )ro'ra#ador d" %a& di1icu%tad"& d" )ortar &u a)%icacin anu"*a& )%ata1or#a& %o cua%- &i "% )ro'ra#a "&t #u3*incu%ado a a%'n a&)"cto d"% &i&t"#a o)"rati*o dond" 1u""&crito- )odr?a &"r #u3 di1?ci%9

    S" co#)i%ar "% cdi'o 1u"nt" d" Ja*a a un cdi'o ,3t"

    (bytecod"2 ant"& d" "("cutar%o9 a %a /ora d" corr"r "%)ro'ra#a- "&t" cdi'o- co#o %"n'ua(" int"r#"dio- &"r?a "%%"n'ua(" d" "ntrada )ara una MF- .u" con un con(unto d"%i,r"r?a& "% "ntorno d" "("cucin d" Ja*a- Jaa !untime oJRE2- %a int"r)r"tar?a )ara &u "("cucin9

    Por %o tanto- "&t" ,3t"cod" )odr?a corr"r "n cua%.ui"r/ardar" dond" /a3a una *"r&in d"% JRE di&)oni,%"9 Co#o"&t" ,3t"cod" "&t #& c"rca d"% ni*"% d" #.uina .u" d"un %"n'ua(" d" a%to ni*"%- %o& )ro'ra#a& corr"rn #&r)ida#"nt" .u" %o& )ro'ra#a& co#)%"ta#"nt"int"r)r"tado&- aun.u" #& d"&)acio .u" %o& )ro'ra#a&

    )r"*ia#"nt" co#)i%ado& a% cdi'o #.uina9

  • 7/24/2019 -Lenguajes de Programacin

    36/124

    36

    !en*uajes intermedios Co#o &" )u"d" *"r "n %a 1i'ura $- tanto %o&

    )ro'ra#a& co#)i%ado& )arcia%#"nt" a un%"n'ua(" int"r#"dio co#o Ja*a2 co#o %o&)ro'ra#a& "&crito& "n %"n'ua("& d" a%to ni*"%

    .u" &" int"r)r"tan co#o Li&)2 r".ui"r"n unaMF )ara int"r)r"tar "% )ro'ra#a9 La )rinci)a%*"nta(a d"% %"n'ua(" int"r#"dio "n "&t" ca&o"& &u )ro>i#idad a% ni*"% d"% cdi'o #.uina-

    "n "% &"ntido d" .u" &u)on" #"no& tra,a(o a%a /ora d" "("cutar%o 3- )or %o tanto- %o&)ro'ra#a& corr"n #& r)ida#"nt" .u" %o&)ura#"nt" int"r)r"tado&9

  • 7/24/2019 -Lenguajes de Programacin

    37/124

    37

    !en*uajes intermediosAd"#& d"% )a)"% d" %o& %"n'ua("&

    int"r#"dio& "n %a co#)i%acin )arcia%- &")u"d" d"&tacar &u )a)"% "n %a co#)i%acin"&tndar9 Co#o "("#)%o &" )u"d" con&id"rar

    C co#o %"n'ua(" int"r#"dio )ara un %"n'ua("co#)i%ado nu"*o9 Si "% autor d" un nu"*o%"n'ua(" d"cid" uti%i+ar C- )or "("#)%o- co#o&u %"n'ua(" int"r#"dio- &%o t"ndr .u"

    i#)%"#"ntar una MF )ara con*"rtir "% cdi'o1u"nt" d" &u %"n'ua(" a C- a/orrando #uc/otra,a(o9

  • 7/24/2019 -Lenguajes de Programacin

    38/124

    38

    !en*uajes intermedios

    La& -entajasd" uti%i+ar un %"n'ua(" tan "&ta,%"cidoco#o C co#o %"n'ua(" int"r#"dio &on: La 1aci%idad d" )ortar "% %"n'ua(" a una nu"*a #.uina

    &%o /a3 .u" t"n"r un co#)i%ador C di&)oni,%" a%%?29 La '"n"racin d" cdi'o #.uina "& una tar"a #u3

    co#)%"(a .u" r".ui"r" un conoci#i"nto )ro1undo d" %aar.uit"ctura d" %a #.uina "n cu"&tin Q 3 d" cada#.uina "n .u" &" .ui"r" una *"r&in d"% %"n'ua("9

    La 1aci%idad d" #odi1icar a%'n ra&'o d"% co#)orta#i"ntod"% %"n'ua(" "n a%'una #.uina "n concr"to )or "("#)%o-

    caract"r?&tica& d" #"#oria o r"ndi#i"nto Q &" )u"d"na=adir %i,r"r?a& C cu&to#i+ada& &in 'rand"& )ro,%"#a&29 La& )o&i,i%idad"& di&)oni,%"& )ara #a)"ar "&tructura&

    int"r#"dia& d"% nu"*o %"n'ua(" a "&tructura& d" dato& d"C9

  • 7/24/2019 -Lenguajes de Programacin

    39/124

    39

    !en*uajes intermedios %a& des-entajas&on:

    La d")uracin "& #u3 di1?ci% )or.u"- "ntr" otra& co&a&- %o&"rror"& .u" ocurr"n "n "% cdi'o C no &on #u3 1ci%"& d"%oca%i+ar "n %o .u" /a "&crito "% )ro'ra#ador ori'ina%#"nt""n "% nu"*o %"n'ua("9

    La& caract"r?&tica& d" r"ndi#i"nto 3 "1ici"ncia d"%

    %"n'ua(" "&tn d"t"r#inada& )or "% co#)i%ador C9 ;a,r oca&ion"& "n %a& .u" no ">i&ta una ,u"na

    traduccin "ntr" una "&tructura "n "% nu"*o %"n'ua(" 3 %a&"&tructura& d" dato& "n C- )or %o .u" /a,r una )4rdida d"

    "1ici"ncia "n "% )ro'ra#a r"&u%tant" co#o- )or "("#)%o-ocurr" "n %a #a3or?a d" %a& oca&ion"& "n .u" &" co#)i%an"&tructura& d" Pro%o' a C Q &%o &" )u"d" ">)r"&arit"racin "n Pro%o' uti%i+ando r"cur&in29

  • 7/24/2019 -Lenguajes de Programacin

    40/124

    40

    !a m0)uina -irtual de )r"&ion"&9

    La& )ri#"ra& *aria,%"& %oca%"& &on inicia%i+ada& con %o&)ar#"tro& actua%"&9 Cada *aria,%" %oca% o "%"#"nto d" %a)i%a "& una )a%a,ra .u" corr"&)ond" a un "nt"ro d" @ ,it&-a un )unto 1%otant" o a una r"1"r"ncia a o,("to )unt"ro29Para )unto& 1%otant"& do,%"& 3 "nt"ro& %ar'o& &" uti%i+an do&/u"co& d" %a )i%a9

  • 7/24/2019 -Lenguajes de Programacin

    41/124

    41

    !a m0)uina -irtual de

  • 7/24/2019 -Lenguajes de Programacin

    42/124

    42

    !a m0)uina -irtual de

  • 7/24/2019 -Lenguajes de Programacin

    43/124

    43

    Unidad Didctica $: Sinta>i& 3

    S"#ntica d" %o& L"n'ua("& d"Pro'ra#acin

    !"#a @: Sinta>i& 1or#a% d" %o& %"n'ua("& d")ro'ra#acin

  • 7/24/2019 -Lenguajes de Programacin

    44/124

    44

    F"r Sinta>i& 3 S"#ntica d"% r"&u#"n "n Pro,%"#a d" traduccin d" %"n'ua("&

    Ca)itu%o @2

  • 7/24/2019 -Lenguajes de Programacin

    45/124

    45

    Unidad Didctica @:Paradigmas y lenguajes

    !"#a B: D"&cri)cin d" %o& )aradi'#a& #&

    r")r"&"ntati*o&

  • 7/24/2019 -Lenguajes de Programacin

    46/124

    46

    "AADI@MA$ DE "#@AMACIN La c%a&i1icacin d" %o& %"n'ua("& at"ndi"ndo a &u&

    caract"r?&tica& intr?n&"ca& conduc" a %o& %%a#ado&)aradi'#a& d" )ro'ra#acin9 Un )aradi'#a d")ro'ra#acin "& un #od"%o d" )ro'ra#acin .u""n'%o,a a ci"rto& %"n'ua("& .u" co#)art"n: E%"#"nto& "&tructura%"&: 6con .u4 &" con1"ccionan %o&

    )ro'ra#a&8 E%"#"nto& #"todo%'ico&: 6c#o &" con1"cciona un )ro'ra#a8

  • 7/24/2019 -Lenguajes de Programacin

    47/124

    47

    Pro'ra#acin I#)"rati*a o

    Proc"dura%: :

  • 7/24/2019 -Lenguajes de Programacin

    48/124

    48

  • 7/24/2019 -Lenguajes de Programacin

    49/124

    49

  • 7/24/2019 -Lenguajes de Programacin

    50/124

    50

  • 7/24/2019 -Lenguajes de Programacin

    51/124

    51

    E("#)%o anotado

  • 7/24/2019 -Lenguajes de Programacin

    52/124

    52

  • 7/24/2019 -Lenguajes de Programacin

    53/124

    53

  • 7/24/2019 -Lenguajes de Programacin

    54/124

    54

  • 7/24/2019 -Lenguajes de Programacin

    55/124

    55

  • 7/24/2019 -Lenguajes de Programacin

    56/124

    56

  • 7/24/2019 -Lenguajes de Programacin

    57/124

    57

    A,&traccin 3 "nca)&u%a#i"nto

  • 7/24/2019 -Lenguajes de Programacin

    58/124

    58

    Pro'ra#acin I#)"rati*a o

    Proc"dura%: C D"&arro%%ado )or Ritc/i" 3 !/o#)&on "n "% @9

    Mu%tiu&o inicia%#"nt" )ara &i&t"#a&2 Sinta>i& co#)acta

    ;i&toria 0 !/o#)&on d"&arro%%a "n "%% Mu%tic&- &" cr"a un

    %"n'ua(" %%a#ado 9 0- "% )ro3"cto UNI a*an+a 3 "% %"n'ua(" &" .u"da

    )".u"=o- &" co#i"n+a a d"&arro%%ar C X@- C "& di&tri,uido con Uni> 3 #u3 u&ado "n %a&

    uni*"r&idad"&9 ANSI co#i"n+a a d"&arro%%ar un"&tndar

  • 7/24/2019 -Lenguajes de Programacin

    59/124

    59

    P"r&)"cti*a d"% %"n'ua(" C La )ro'ra#acin "n C &" co#)on" d":E% %"n'ua(" C- con un %i#itado nY d" "&tructura&

    d" contro%9 No /a3 )ri#iti*a& &i no &" u&an %a&%i,r"r?a&9

    E% )r")roc"&ador d" C Z2- "&to& "nunciado& no1or#an )art" d"% %"n'ua(" C 3 &on)r")roc"&ado& ant"& d" %a co#)i%acin9

    Lo& &u)u"&to& d" int"r1a+ C 9/2- %or arc/i*o&/"ad"r in1or#an a% u&uario d" %a& 1uncion"&inc%uidad "n una ,i,%iot"ca9

    La& ,i,%iot"ca& d" C9 Arc/i*o& o,( o %i,cont"ni"ndo %a i#)%"#"ntacin d" %a& 1uncion"&9

  • 7/24/2019 -Lenguajes de Programacin

    60/124

    60

    E("#)%o anotado

  • 7/24/2019 -Lenguajes de Programacin

    61/124

    61

    O,("to& d" dato&

    !i)o& d" dato& )ri#iti*o& Lo& no#,r"& d" *aria,%"& no )u"d"n co#"n+ar cond?'ito9 S"n&i,%" a #a35#in9

    Lo& dato& &on "nt"ro& c/ar- &/ort- %on'2-"nu#"rado& "nu#2 o 1%oat9 Lo& )unt"ro& &" d"c%aran

    con "% ti)o &"'uido d" [\9 No /a3 ,oo%"ano&9 !i)o& d" dato& "&tructurado&

    Arra3&- co#i"n+an "n 0 3 &" 'uardan )or 1i%a&9 !i)o& d"1inido& )or "% u&uario9 Struct ] ^9 Union- "& una d"1inicin d" ti)o &i tctica#"nt" con

    un &truct- )"ro todo& %o& co#)on"nt"& ocu)an %a#ia #"#oria9

  • 7/24/2019 -Lenguajes de Programacin

    62/124

    62

    R")r"&"ntacin d" a%#ac"na#i"nto

    Lo& ti)o& d" C "#)%"an ,&ica#"nt" %ar")r"&"ntacin /ardar" d" &u& dato&9

    Una *aria,%" d" ti)o arra3 "& ta#,i4n "%

    )unt"ro a% )ri#"r "%"#"nto d"% arra3 .u"co#i"n+a con "% ?ndic" 09 E& )o&i,%" inicia%i+ar cua%.ui"r *aria,%"

    d"c%arada "&ttica#"nt"9

  • 7/24/2019 -Lenguajes de Programacin

    63/124

    63

    Contro% d" &"cu"ncia

    E>)r"&ion"&9S" "#)%"a notacin in1i(a9 Co"rcion"&- )u"d"n &"r 1or+ada& /aci"ndo una ca&t unaria

    ant"& d" un *a%or9 A int2,

    Enunciado&9 Pu"d"n &"r ,%o.u"& d" &"nt"ncia& "ntr"%%a*"&9 Condiciona%- i1999t/"n999"%&"999 Condicina% #%ti)%"- &itc/999]ca&"9999ca&"999d"1au%t999^ It"rati*o&: /i%"- do - 1or9

    !ran&1"r"ncia d"% contro%: ,ra_- continu"- 'oto- r"turn9 D" )r")roc"&ador: Zd"1in"- Zinc%ud"- Zi1d"1- Zi1999Zund"1999Z"%&" C no ti"n" "nunciado& EKS- "&tn "n &tdio9/9

    S ,)ro'ra#a& G"&tin d"

  • 7/24/2019 -Lenguajes de Programacin

    64/124

    64

    Su,)ro'ra#a& 3 G"&tin d"a%#ac"na#i"nto #ain2 "& %a 1uncin d" "ntrada a% )ro'ra#a

    )rinci)a%9 Cada 1uncin ti"n" a&ociado un r"'i&tro d"

    acti*acin- .u" %a in*oca cuando "& %%a#ada9 No /a3 anida#i"nto d" 1uncion"&- )or %o .u" %a&

    *aria,%"& &on '%o,a%"& o %oca%"&9 La& '%o,a%"&d","n &"r d"c%arada& )or ">t"rn- )ara .u" &"a*i&ta& )or otro& #du%o&9 ">t"rn int i- (- _

    La& 1uncion"& d" C &%o to#an ar'u#"nto& )or*a%or9 Para &i#u%ar )a&o )or r"1"r"ncia /a3 .u")a&ar "% )unt"ro )or *a%or9

  • 7/24/2019 -Lenguajes de Programacin

    65/124

    65

    A,&traccin 3 "nca)&u%a#i"nto

    E% %"n'ua(" da 1aci%idad"& )ara %ad"1inicin d" ti)o&- )"ro no i#)%"#"nta "%

    ocu%ta#i"nto d" %a in1or#acin- d"#an"ra .u" &i &" ti"n" acc"&o a un &truct-ta#,i"n &" acc"d"r a todo& &u&

    co#)on"nt"&9 E% u&o d" ,i,%iot"ca& con int"r1ac"&/"ad"r ta#,i4n )"r#it" %a a,&traccin9

  • 7/24/2019 -Lenguajes de Programacin

    66/124

    66

    E*a%uacin d"% %"n'ua("

    C "& #u3 )ot"nt" 3 )o)u%ar:

  • 7/24/2019 -Lenguajes de Programacin

    67/124

    67

    L"n'ua("& 1unciona%"&: LISP

    09 McCart/3 "n "% MI! Mu3 u&ado "n IA En LISP %a r"cur&in &" "#)%"a a #"nudo

    co#o "&tructura d" contro%- %o .u" r"&ta"1ici"ncia a %a& "("cucion"&9

    La %ti#a& *"r&ion"& d" LISP inc%u3"n unr"co%"ctor d" ,a&ura

  • 7/24/2019 -Lenguajes de Programacin

    68/124

    68

    ;o%a Mundo "n LISP

  • 7/24/2019 -Lenguajes de Programacin

    69/124

    69

    P"r&)"cti*a d"% %"n'ua(" Int"racti*o u&ua%#"nt"2 Lo& dato& "n LISP &on #u3 r"&trin'ido&:

    `to#o& %it"ra%"& &?#,o%o&2 `to#o& nu#4rico&

    La "&tructura d" dato& ,&ica "& %a %i&ta9 Inc%u3")ri#iti*a& )ara &u #ani)u%acin9

    Lo& co#"ntario& co#i"n+an )or [\ Lo& )ar#"tro& d" 1uncin *an todo& )or *a%or o )or

    r"1"r"ncia &"'n %a c%a&i1icacin d" %a 1uncin9 LISP "& int"r)r"tado 3 u&a una "&tructura d" '"&tin d"

    a%#ac"na#i"nto "n #ont?cu%o con r"co%"ccin d",a&ura co#o a%#ac"na#i"nto )ri#ario )ara dato& 3)ro'ra#a&9

  • 7/24/2019 -Lenguajes de Programacin

    70/124

    70

    E("#)%o anotado

  • 7/24/2019 -Lenguajes de Programacin

    71/124

    71

    O,("to& d" dato& !i)o& d" dato& )ri#iti*o&: to#o&9 Cada to#o

    ti"n" una %i&ta d" )ro)i"dad"& a&ociada- acc"&i,%"a tra*4& d"% )unt"ro .u" a%#ac"na "% no#,r" d"%to#o9

    No &" di&tin'u"n #a35#in )ara id"nti1icador"&

    !i)o& d" dato& "&tructurado: %i&ta&9 !i"n"na&ociado un )unt"ro a% )ri#"r "%"#"nto car2 3 otroa% "%"#"nto &i'ui"nt" cdr29 Una %i&ta *ac?a a)untaa ni%9

    Para %a a&i'nacin &" uti%i+a &"t.> *a%29 R")r"&"ntacin 3 a%#ac"na#i"nto9

    Cada d"&cri)tor d" un o,("to d" dato& )ro)orciona ti)o 3 atri,uto&9 En %o& dato& "&tructurado& %i&ta&2 &" ti"n"n &%o )unt"ro& a )ri#"ro

    3 a &i'ui"nt"9

  • 7/24/2019 -Lenguajes de Programacin

    72/124

    72

    Contro% d" &"cu"ncia E% traductor LISP "& una 1uncin r"ad2 .u"

    to#a "% 1u"nt" d"% 1ic/"ro 3 %o int"r)r"ta9 La "("cucin d"% )ro'ra#a con&i&t" "n %a

    "*a%uacin d" %a& 1uncion"& cont"nida& "n "%#io9

    E>)r"&ion"&: Condiciona%O)"racion"& &o,r" to#o& "n )r"ord"n2: - 5- - KO)"racion"& &o,r" %i&ta&: con&- car- cdr- %i&t- r")%ac"-

    nu%%- ".ua%9O)"racion"& &o,r" )ro)i"dad"&: )ut- '"t9 Enunciado&: )ro'2 )ara "("cucin &"cu"ncia%9 Entrada 3 &a%ida: o)"n2- r"ad2- )rint29 D"1inicin d" 1uncion"&: d"1un- d"1in"9

  • 7/24/2019 -Lenguajes de Programacin

    73/124

    73

    G"&tin d" &u,)ro'ra#a&

    !r"& c%a&"& d" 1uncion"&:

  • 7/24/2019 -Lenguajes de Programacin

    74/124

    74

    G"&tin d" a%#ac"na#i"nto La #"#oria &" "&tructura "n 1or#a d" mont9culo- .u"

    #an"(a unidad"& d" una )a%a,ra d" ta#a=o 1i(o u&andouna %i&ta d" "&)acio& %i,r"& 3 un r"co%"ctor d" ,a&ura9

    Entorno d" r"1"r"ncia: Loca%- "& "% .u" &" da "n %a& %i&ta&- co#o a&ociacion"& d" to#o&

    r"%acionado& d" una d"t"r#inada #an"ra9

    G%o,a% o co#n- &" con&i'u" #"diant" a&ociacin d" un to#ocon una )ro)i"dad d"% #io .u" conti"n" un )unt"ro a% dato&r"1"r"nciado9 S" u&a &"t 3 &"t.9

    Pa&o d" )ar#"tro&: !rani&in )or *a%or- con&i&t" "n "*a%uar %a& ">)r"&ion"& d" una

    %i&ta d" )ar#"tro& 3 tranitir %o& *a%or"& r"&u%tant"&9 !rani&in )or no#,r"- tranitir %a& ">)r"&ion"& d" %a %i&ta d")ar#"tro& &in "*a%uar- 3 d"(ar .u" %a 1uncin %%a#ada %o& "*a%u"

    u&ando "*a%9 En 1uncion"& #acro %a trani&in )or no#,r" "& %anor#a9 Para 1uncion"& %a#,da &" )u"d" "&)"ci1icar %atrani&in )or no#,r" u&ando n%a#,da- "n %u'ar d" %a#,da9

  • 7/24/2019 -Lenguajes de Programacin

    75/124

    75

    " 39 %i&t > 3 +- d"*u"%*" %a %i&ta > 3 +29 .uot" >- no &" "*a%a >

    Pr"dicado& ato# >- d"*u"%*" !ru" &i > "& un to#o9 nu#,"r) >- d"*u"%*" !ru" &i > "& un n#"ro 'r"at"r) > 3- d"*u"%*" !ru" &i >V3

    %"&&) > 3- d"*u"%*" !ru" &i >3 nu%% >- d"*u"%*" !ru" &i > "& nu%o and > 3- d"*u"%*" > and 3 or > 3- d"*u"%*" > or 3 not >- d"*u"%*" not > ". > 3- d"*u"%*" !ru" &i >W3

  • 7/24/2019 -Lenguajes de Programacin

    76/124

    76

    K3 r"#aind"r29

    - i#)ri#" "% "%"#"nto >o)"n no#,r"arc/i*o- a,r" un arc/i*o 3 d"*u"%*"

    una )unt"ro a% #io

    r"ad- %"" d"% t"r#ina% un to#o/"%)- )ro)orciona a3uda trac"- tra+a %a 1uncin,3"- t"r#ina LISP

  • 7/24/2019 -Lenguajes de Programacin

    77/124

    77

    A,&traccin 3 "nca)&u%a#i"nto

    LISP- "n ori'"n- no inc%u3" caract"r?&tica& d"a,&traccin d" dato&9

    CLOS 1u" una a#)%iacin d" LISP conori"ntacin d" o,("to&9 Caract"r?&tica&: ;"r"ncia #%ti)%"

  • 7/24/2019 -Lenguajes de Programacin

    78/124

    78

    E*a%uacin d"% %"n'ua("

    LISP /a "*o%ucionado durant" #& d" 0a=o& 3 d"&arro%%ado )ara int"%i'"ncia

    arti1icia%- )"ro no "& ad"cuado )araa)%icacion"& con*"nciona%"&9 La& *"r&ion"& co#)i%ada& &on a%'o #&

    "1ici"nt"&9

  • 7/24/2019 -Lenguajes de Programacin

    79/124

    79

    Pro'ra#acin %'ica: PROLOG

    PROLOG "&t ori"ntado a %a r"&o%ucin d")ro,%"#a& #"diant" "% c%cu%o d" )r"dicado&-

    ,a&ado "n: Pr"'unta& a %a ,a&" d" dato& Pru",a& #at"#tica&

    E% )ro'ra#a PROLOG "&)"ci1?ca c#o d","

    &"r %a &o%ucin- "n *"+ d" dar "% a%'orit#o )ara&u r"&o%ucin9 La &o%ucin &" o,ti"n" #"diant",&.u"da a)%icando %a %'ica d" )r"dicado&9

  • 7/24/2019 -Lenguajes de Programacin

    80/124

    80

    ;i&toria

    Cou%#"rau"r $02 d"&arro%% un%"n'ua(" )ara /ac"r d"duccion"& d" t">to

    S" a)%ica un #"canio d" r"&o%ucin&o,r" )r"dicado& "&)"cia%"&- c%u&u%a& d";orn- %%a#ado uni1icacin9

    La di1u&in d"% %"n'ua(" &" )roduc" "n %o&X0- )"ro d" 1or#a #u3 %i#itada d",ido a%a 1a%ta d" a)%icacion"& "n dic/o %"n'ua("9

  • 7/24/2019 -Lenguajes de Programacin

    81/124

    81

    ;o%a #undo- "n PROLOG

  • 7/24/2019 -Lenguajes de Programacin

    82/124

    82

    P"r&)"cti*a d"% %"n'ua(" E% )ro'ra#a )ro%o' &" co#)on" d" uno& /"c/o&

    dato&2 3 un con(unto d" r"'%a&- "& d"cir- r"%acion"&"ntr" o,("to& d" %a ,a&" d" dato&9

    La "("cucin d"% )ro'ra#a car'ado "n #"#oria

    con&i&t" "n r"a%i+ar una )r"'unta d" 1or#aint"racti*a: "% int"r)r"t" '"n"rar )or in1"r"ncia %o&r"&u%tado& .u" &" d"duc"n a )artir d"% cont"nido d"%a ,a&" d" dato&9

    PROLOG ti"n" una &inta>i& 3 &"#ntica &i#)%"&9S%o ,u&ca r"%acion"& "ntr" %o& o,("to& cr"ado&- %a&*aria,%"& 3 %a& %i&ta&- .u" &on &u& "&tructura&,&ica&9

    Co#"ntario& "ntr" K K

    E("#)%o anotado

  • 7/24/2019 -Lenguajes de Programacin

    83/124

    83

    E("#)%o anotado

  • 7/24/2019 -Lenguajes de Programacin

    84/124

    84

    O,("to& d" dato& !i)o& d" dato& )ri#iti*o&: *aria,%"& 3 con&tant"&:

    Ent"ro& R"a%"& Caract"r"&

    Lo& id"nti1icador"& con #in&cu%a r")r"&"ntan /"c/o&-%o& .u" *an con #a3&cu%a *aria,%"&9

    E% a%canc" d" una *aria,%" "& %a r"'%a dond" a)ar"c"9 !i)o& d" dato& "&tructurado&:

    `to#o&: con&tant"& 3 *aria,%"& d" cad"na Li&ta&- r")r"&"ntada& "ntr" b

    !i)o& d"1inido& )or "% u&uario9 La& r"'%a& )arad"1inir r"%acion"& )u"d"n actuar co#o ti)o& d"

    u&uario

  • 7/24/2019 -Lenguajes de Programacin

    85/124

    85

    R")r"&"ntacin d" a%#ac"na#i"nto

    La& r"'%a& 3 /"c/o& &on a%#ac"nada& "n#"#oria co#o %i&ta& "n%a+ada&9 La "("cucin d" )ro%o' con&i&t" "n una

    ,&.u"da "n )ro1undidad d" un r,o%cont"ni"ndo toda& %a& )o&i,%"&&o%ucion"&9 Para cada una d" "%%a& &""*a%uar &u corr"ccin9 La ,&.u"da &")u"d" /ac"r #& "1ici"nt" #"diant" %a)oda d"% r,o% d" ,&.u"da cort"29

  • 7/24/2019 -Lenguajes de Programacin

    86/124

    86

    Contro% d" &"cu"ncia

    E% ord"n d" "*a%uacin "& &"cu"ncia% E?presiones- o)"racion"& arit#4tica& 3 o)"rador"&

    r"%aciona%"&9 Not29

    Enunciados Hec.os- r"%acion"& .u" &" ">)r"&an "n una con&u%ta9 Sontu)%a& con un no#,r" d" )r"dicado 3 uno& ar'u#"nto&9

    e*las- i#)%icaion"& .u" &" ">)r"&an "n una o)"racin con&u%t "re*untas- &uc"&in d" t4r#ino& .u" 1ina%i+an con un )unto9 Cortes- 2- 1u"r+a "% r"troc"&o "n %a ,&.u"da9 E&to )u"d"

    i#)"dir .u" &" "ncu"ntr"n ci"rta& &o%ucion"&- )"ro )u"d" /ac"r#& "1ici"nt" %a ,&.u"da9 Entrada 7 salida- n% 3 rit"9

    Su,)ro'ra#a& 3 '"&tin d" a%#ac"na#i"nto

  • 7/24/2019 -Lenguajes de Programacin

    87/124

    87

    Su,)ro'ra#a& 3 '"&tin d" a%#ac"na#i"nto PROLOG ti"n" do& #odo&:

    Modo con&u%ta- &" introduc"n nu"*a& r"%acion"& /"c/o&2 "n "% a%#ac"na#i"ntodin#ico d" %a ,a&" d" dato&9

    Modo& )r"'unta- &" "("cuta un int4r)r"t" ,a&ado "n )i%a& )ara "*a%uar %a& )r"'unta&d"% u&uario9

    A%canc" d" %a& *aria,%"&: A#,i"nt" %oca% d" r"1"r"ncia- toda& %a& *aria,%"& &on %oca%"& a %a r"'%a "n .u" "&tn

    d"1inida&9 La uni1icacin /ac" int"raccionar no#,r"& %oca%"& d" una r"'%a con %o& d"otra& r"'%a&9

    A#,i"nt" co#n d" r"1"r"ncia- todo& %o& dato& &on co#)artido&9 Pa&o d" )ar#"tro&- %a uni1icacin )ro)orciona "% )a&o d" )ar#"tro& "ntr" r"'%a&9

  • 7/24/2019 -Lenguajes de Programacin

    88/124

    88

    A,&traccin 3 "nca)&u%a#i"nto

    PROLOG no )ro)orciona "&ta&ca)acidad"&9

  • 7/24/2019 -Lenguajes de Programacin

    89/124

    89

    E*a%uacin d"% %"n'ua("

    PROLOG *a ,i"n )ara )ro,%"#a& d" r"%acion"&-)9"9 !rata#i"nto d"% %"n'ua(" natura%- 3 con&u%tad" ,a&"& d" dato&9

    A )"&ar d" .u" "& )o&i,%" d"&arro%%ar )ro'ra#a&&in "&)"ci1icar "% a%'orit#o d" r"&o%ucin a*"c"& /a3 .u" "c/ar #ano d" otro ti)o d")ro'ra#acin )ara /ac"r %o& )ro'ra#a& #&

    "1ici"nt"&- 3 a #"nudo &" "#)%"a "% cort" )ara%i#itar "% "&)acio d" ,&.u"da9

  • 7/24/2019 -Lenguajes de Programacin

    90/124

    90

    Unidad Didctica @:

    Paradigmas y lenguajes

    !"#a : E% )aradi'#a d" %a )ro'ra#acin ori"ntada a

    o,("to& POO2

  • 7/24/2019 -Lenguajes de Programacin

    91/124

    91

    PROG9 ORIEN!ADA A OJE!O

    F"r A)unt"& &o,r" %a POO

  • 7/24/2019 -Lenguajes de Programacin

    92/124

    92

    ;ERENCIA Con 1r"cu"ncia %a in1or#acin &" )a&a "ntr"co#)on"nt"& d" )ro'ra#a d" #an"ra i#)%?cita-

    a "&t" tra&)a&o d" in1or#acin %" %%a#a#o&/"r"ncia9

    La .erenciacon&i&t" "n %a r"c")cin "n unco#)on"nt" d" )ro'ra#a d" )ro)i"dad"& ocaract"r?&tica& d" otro co#)on"nt" d" acu"rdocon %a r"%acin "&)"cia% .u" ">i&t" "ntr" a#,o&co#)on"nt"&9

    La& r"'%a& d" a%canc" d" *aria,%"& &on una1or#a d" /"r"ncia9 La /"r"ncia #%ti)%" &" da cuando una c%a&"

    ti"n"n *aria& &u)"rc%a&"& d" %a& .u" /"r"da9

  • 7/24/2019 -Lenguajes de Programacin

    93/124

    93

    C%a&"& d"ri*ada&

    La /"r"ncia &" i#)%"#"nta "n %o& %"n'ua("& ori"ntado&a o,("to& a tra*4& d" c%a&"& d"ri*ada&- .u" /"r"dan)ro)i"dad"& 3 #4todo& d" &u& &u)"rc%a&"&9

    La *i&i,i%idad d" %o& o,("to& /"r"dado& d")"nd" d" %a1or#a "n .u" &" d"c%aran:

    PRIFA!E PULIC PRO!EC!ED

    I#)%"#"ntacin: En %a c%a&" d"ri*ada %o& no#,r"d"ri*ado& d" %a &u)"rc%a&" &" a'r"'an a% "&)acio9 Si "n %a d"1inicin /a3 una 1uncin con&tructora- /a3 .u" inc%uir

    "n %a d"c%aracin una %%a#ada a dic/a 1uncin9 E% o,("to 'uarda %a r"1"r"ncia d" %o& a)untador"& a toda& %a&

    )ro)i"dad"& 3 #4todo&- a "&to &" %%a#a "n1o.u" con ,a&" "nco)ia d" %a /"r"ncia u&ado "n C29

  • 7/24/2019 -Lenguajes de Programacin

    94/124

    94

    M4todo&

    La /"r"ncia d" #4todo& )ara cr"ar o,("to&nu"*o& )ro)orciona un )od"r adiciona% .u" *a#& a%% d"% &i#)%" "nca)&u%a#i"nto9

    En %a& c%a&"& d"ri*ada&- cuando &" .ui"r"ca#,iar uno d" %o& #4todo& /a3 do&)o&i,i%idad"&: R"d"1inir "% #4todo "n %a c%a&" d"ri*ada U&ar una 1uncin *irtua%- .u" &" "n%a+a

    din#ica#"nt" "n "% #o#"nto d" %%a#ada d"%&u,)ro'ra#a9

  • 7/24/2019 -Lenguajes de Programacin

    95/124

    95

    C%a&"& a,&tracta& S" u&a cuando %a &u)"rc%a&" d"1in" una "&)"ci" d"

    )%anti%%a )ara %a& &u,c%a&"&- aun.u" no )"r#it" .u" &"d"c%ar"n o,("to& "n "&ta d"1inicin9 E&to r".ui"r" .u"todo& %o& o,("to& .u" r".ui"r"n "&ta c%a&" &" d"1inan d"una &u,c%a&" d"ri*ada9

    No &" )u"d" cr"ar nin'n o,("to .u" t"n'a 1uncion"&*irtua%"& nu%a&- d"% ti)o: Firtua% *oid No#,r"D"!i)o2W0

    ;ERENCIA MIIN9 !a#,i4n &" %%a#a /"r"ncia d"incor)oracin- "n %a .u" &o%o &" d"1in" %a di1"r"ncia "ntr"

    %a c%a&" ,a&" 3 %a c%a&" d"ri*ada9 La& di1"r"ncia &" d"1in""n una c%a&" d"%ta: D"%tac%a&& ModPi%a ]^ C%a&& Pi%aNu"*a W c%a&& Pi%aE%"# d"%tac%a&& ModPi%a

    La *"nta(a "& .u" %a& c%a&" d"%ta &" )u"d"n adicionar a cua%.ui"r

    c%a&"9

    O,("to& 3 #"n&a("&

  • 7/24/2019 -Lenguajes de Programacin

    96/124

    96

    O,("to& 3 #"n&a("& E% %"n'ua(" S#a%%ta%_ )r"&"nta caract"r?&tica&:

    D"1inicin d" c%a&"9 D"1in" %a "&tructura int"rna 3 %otodo& .u" &" )u"d"n u&ar )ara cr"ar 3 #ani)u%aro,("to&9

    E("#)%ari+acin d" o,("to&9 S" cr"an o,("to&"&)"c?1ico& )ara cada d"1inicin d" c%a&"9

    Pa&o d" #"n&a("&9 Lo& #4todo& &" )a&an co#o#"n&a("& a un o,("to )ara %%"*ar a ca,o una accin9!i)o&: Un #"n&a(" unario "& un #4todo &in )ar#"tro&9 E% #"n&a(" ,inario &" u&a- )rinci)a%#"nt"- )ara o)"rador"&

    arit#4tico&9 Lo& #"n&a("& d" )a%a,ra c%a*" &" u&an )ara /ac"ra&i'nacion"& d" *a%or- )or "("#)%o- "n un arra3: Arra3 n": $0 at: )ut:B@

  • 7/24/2019 -Lenguajes de Programacin

    97/124

    97

    ;"r"ncia d" c%a&"&

    Si &" "n*?a un #"n&a(" a un o,("to conun #4todo .u" no "&t d"1inido "n &u

    c%a&" &" )a&a a %a c%a&" )ro'"nitora- 3 a&?&uc"&i*a#"nt"9 En %o& #4todo& d" )a%a,ra c%a*" "%

    )ar#"tro &" no#,ra d" 1or#a ">)%?cita"n %a d"c%aracin d"% #4todo

    Conc")to& d" a,&traccin

  • 7/24/2019 -Lenguajes de Programacin

    98/124

    98

    Conc")to& d" a,&traccin E% "nca)&u%a#i"nto "& un #"canio di*id" 3 *"nc"r&

    )ara )ro)orcionar contro% &o,r" "% )ro'ra#a "nd"&arro%%o9 La a,&traccin 3 %a /"r"ncia )u"d" &"r u&ada )ara

    i#)"dir a% )ro'ra#ador *"r "% cont"nido d" %o& o,("to&d" dato& .u" no con*"n'a9 La /"r"ncia-1unda#"nta%#"nt"- "& un #"canio )ara )a&arin1or#acin "ntr" o,("to& "n c%a&"& r"%acionada&9P"r#it": E&)"cia%i+acin- )ara .u" %o& o,("to& d"ri*ado& cont"n'an

    caract"r?&itica& d" otro& o,("to&9 D"&co#)o&icin- )"r#it" &")arar una a,&traccin "n &u&

    co#)on"nt"&9 Lo contrario "& %a a'r"'acin9 E("#)%ari+acin- "& "% )roc"&o d" cr"ar ocurr"ncia& d" unac%a&" &" trata d" un )roc"&o d" co)ia29

    Indi*idua%i+acin- o,("to& &i#i%ar"& &" a'ru)an con otro& )ara)ro)&ito& co#un"&9 E& %o contrario d" a'ru)a#i"nto9

  • 7/24/2019 -Lenguajes de Programacin

    99/124

    99

    POLIMOR

  • 7/24/2019 -Lenguajes de Programacin

    100/124

    100

    Unidad Didctica @:

    Paradigmas y lenguajes

    !"#a : La )ro'ra#acin c"ntrada "n %a r"d

  • 7/24/2019 -Lenguajes de Programacin

    101/124

    101

    F"r A)unt"& &o,r" %a PCR

  • 7/24/2019 -Lenguajes de Programacin

    102/124

    102

    Unidad Didctica :

    Mecanismos de los !"

    !"#a : !i)o&- d"c%aracion"& 3 contro%

  • 7/24/2019 -Lenguajes de Programacin

    103/124

    103

    Contro% d" &"cu"ncia La& "&tructura& )ara "% contro% d" %a &"cu"ncia

    &on d" ti)o&: E&tructura& .u" &" u&an "n ">)r"&ion"&: )r"c"d"ncia

    3 )ar4nt"&i&9

    E&tructura& .u" &" u&an "n "nunciado&:condiciona%"& " it"rati*o&9

    E&tructura& .u" &" u&an "n &u,)ro'ra#a&: %%a#ada&a &u,)ro'ra#a&9

    E&tructura& d" contro% ">)%?cita&- &on %a& .u" "%)ro'ra#ador u&a d" 1or#a o)tati*a #i"ntra&.u" %a& i#)%?cita& &on %a& .u" "% %"n'ua(" d"1in"9

    S"cu"ncia#i"nto "n ">)r"&ion"&

  • 7/24/2019 -Lenguajes de Programacin

    104/124

    104

    S"cu"ncia#i"nto "n ">)r"&ion"&

    La e-aluacin de e?presionesd")"nd" d" %a&)rioridad"& 3 d" %o& )ar4nt"&i&9 S" )u"d"r")r"&"ntar %a "*a%uacin "n una "&tructura d"r,o%9 !r"& rd"n"&: "refijo)o%aca )r"1i(a2- "% o)"rador ant"c"d" a %o& n

    o)"rando&9 S" )u"d" "*a%uar "n un &o%o ">a#"n d" %a ">)r"&in S" )u"d" u&ar )ara cua%.ui"r n#"ro d" o)"rando& !raduccin a cdi'o 1ci% 3 a%#ac"na#i"nto "n )i%a

    "ostfija- "% o)"rador &i'u" a &u& o)"rando&9 F"nta(a&

    )ar"cida& a %a )r"1i(a9 Infija- &%o "& ad"cuada )ara do& o)"rando&9R".ui"r" r"'%a& d" )r"c"d"ncia 3 )ar4nt"&i&9 La"*a%uacin &u"%" &"r d" i+.ui"rda a d"r"c/a- )"ro "n%a )ot"nciacin "& a% r"*4&9

    R")r"&"ntacin d" ">)r"&ion"& "n

  • 7/24/2019 -Lenguajes de Programacin

    105/124

    105

    R")r"&"ntacin d" ">)r"&ion"& "nti"#)o d" "("cucin

    E& n"c"&ario traducir %a& ">)r"&ion"& a una1or#a "("cuta,%": S"cu"ncia& d" cdi'o #.uina- .u" d","n /ac"r u&o

    d" %oca%i+acion"& a,&o%uta& d" %o& dato& 3 r"'i&tro&)ara 'uardar dato& int"r#"dio&9

    E&tructura& d" r,o%- %u"'o &" "("cutan u&andoint4r)r"t"& &o1tar"9

  • 7/24/2019 -Lenguajes de Programacin

    106/124

    106

    E*a%uacin d" ">)r"&ion"& "n r,o%

    S" )u"d"n )r"&"ntar a%'uno& )ro,%"#a&: R"'%a& d" *a%idacin uni1or#"9 I#)aci"nt"9 Con&i&t" "n "*a%uar todo& %o& o)"rando& .u"

    cu"%'an d" un o)"rador )ara %u"'o r"a%i+ar %a o)"racin9)r"&in- )"ro d"% #o#"nto d"%a )ri#"ra"*a%uacin a %a &"'unda ca#,ia &u *a%or )or un "1"ctoco%at"ra%- no &" )u"d" a/orrar &u c%cu%o9

    Condicion"& d" "rror- d"t"r#inada& o)"racion"& "n %a&"cu"ncia d" c%cu%o )u"d"n 1a%%ar di*i&in )or 029

    E>)r"&ion"& ,oo%"ana& "n cortocircuito9 Una "*a%uacini#)aci"nt" d" ">)r"&ion"& ,oo%"ana& )u"d" conducir aun "rror no )r"*i&to )or "% )ro'ra#ador9

    S"cu"ncia#i"nto con ">)r"&ion"&

  • 7/24/2019 -Lenguajes de Programacin

    107/124

    107

    S"cu"ncia#i"nto con ">)r"&ion"&no arit#4tica&

    E&t" ti)o d" o)"racion"& &on #u3 uti%i+ada& "n %"n'ua("&%'ico&: Concordancia d" )atron"& R""&critura d" t4r#ino& r"'%a& d" )roduccin2

    Uni1icacin- .u" con&i&t"- ant" una con&u%ta )r"dicadocont"ni"ndo *aria,%"&2- "n %a &u&titucin d" *aria,%"& )araconcordar )atron"& con'ru"nt"& con %a& r"'%a& 3 /"c/o& d" %a,a&" d" dato&9

    En %a i#)%"#"ntacion d" %a uni1icacin "n PROLOG %a&

    )i%a& d"&"#)"=an un )a)"% i#)ortant"9 Ad"#&- )ara "%r"corrido d"% r,o% d" ,&.u"da &" "#)%"a "%RE!ROCESO- &a%*o .u" &" "ncu"ntr" %a 1uncin cort"2-.u" /ac" .u" &" )rodu+ca &i"#)r" 1raca&o a% r"troc"d"r a%a %ti#a &o%ucin )%au&i,%"9

    Contro% d" &"cu"ncia #"diant"

  • 7/24/2019 -Lenguajes de Programacin

    108/124

    108

    Contro% d" &"cu"ncia #"diant""nunciado&

    A&i'nacion"& a o,("to& d" dato&9 E% *a%or d" %o& dato&)u"d" *ariar %a &"cu"ncia9 Enunciado d" a&i'nacin9 Su"%" &"r un o)"rador ,inario .u"

    a&i'na a %a *aria,%" i+.ui"rda "% r"&u%tado d" "*a%uar %a d"r"c/a9

    Enunciado d" "ntrada9 L""r dato& d"&d" un t"r#ina% u otro)"ri14rico9 Otra& o)"racion"& d" a&i'nacin9 La #& u&ada "& %a

    trani&in d" )ar#"tro&9

  • 7/24/2019 -Lenguajes de Programacin

    109/124

    109

    Contro% d" &"cu"ncia "&tructurado Enunciado& co#)u"&to&9 S"ri" d" "nunciado&.u" &" )u"d"n tratar co#o un &o%o "nunciado

    ,%o.u"&29 Enunciado& condiciona%"&- ">)r"&an a%t"rnancia

    d" do& o #& "nunciado&: I1 Ca&"

    Enunciado& d" it"racin- "& %" #"canio,&ico )ara %a r")"ticin d" un )roc"&o: R")"ticin &i#)%": )"r1or#

  • 7/24/2019 -Lenguajes de Programacin

    110/124

    110

    E% )ro,%"#a d"% contro% d"&"cu"ncia "&tructurado9

    La "&tructura )u"d" ir co#)%icndo&" )or: Enunciado d" it"racin con &a%ida& #%ti)%"&9 Condicion"& ">c")ciona%"& "rror"& 3 &u trata#i"nto2

    Pro'ra#a& )ri#o&- ti"n"n: Un &o%o arco d" "ntrada Un &o%o arco d" &a%ida Una& &o%a ruta d"% arco d" "ntrada a cada nodo- 3 d" cada nodo

    a% arco d" &a%ida

    E% t"or"#a d" %a "&tructura Jaco,ini2 "&ta,%"c" .u"todo& %o& )ro'ra#a& &" )u"d"n r""&cri,ir u&ando %o&"nunciado& d" %a )ro'ra#acin "&tructurada9

    Contro% d" &"cu"ncia "n %o&

  • 7/24/2019 -Lenguajes de Programacin

    111/124

    111

    Contro% d" &"cu"ncia "n %o&&u,)ro'ra#a&: L%a#adaKR"'r"&o &i#)%"

    !i"n"n "% #io "1"cto .u" &i &" co)ia "% cdi'od"% &u,)ro'ra#a "n %a %%a#ada ca%% r"'%a d"co)ia2: Lo& &u,)ro'ra#a& no )u"d"n &"r r"cur&i*o& S" r".ui"r"n "nunciado& ca%% ">)%?cito& Lo& &u,)ro'ra#a& &" d","n "("cutar )or co#)%"to

    "n cada %%a#ada !ran&1"r"ncia in#"diata d"% contro% "n "% )unto d"

    %%a#ada S"cu"ncia nica d" "("cucin

    Contro% d" &"cu"ncia "n %o&

  • 7/24/2019 -Lenguajes de Programacin

    112/124

    112

    &u,)ro'ra#a&: Su,)ro'ra#a &i#)%"

    L%a#adaKR"'r"&o E& )o&i,%" "% contro% &o,r" %o& dato&: !rani&in d" )ar#"tro& Faria,%"& %oca%"&

    Faria,%"& '%o,a%"& Para %a i#)%"#"ntacin "& n"c"&ario: La d"1inicin d"% &u,)ro'ra#a- "&ttica " in*aria,%"9 Un r"'i&tro d" acti*acin- ca#,iant"- .u" a%#ac"na:

    Dato& %oca%"& Par#"tro& Otro& "%"#"nto& d" dato&:

    A)untador a %a in&truccin )r"&"nt" CIP2 A)untador d"% a#,i"nt" )r"&"nt" CEP29 E% a#,i"nt" d"

    r"1"r"ncia "& "% r"'i&tro d" acti*acin9 Dir"ccin d" r"torno

    Contro% d" &"cu"ncia "n %o&

  • 7/24/2019 -Lenguajes de Programacin

    113/124

    113

    Contro% d" &"cu"ncia "n %o&&u,)ro'ra#a&: Su,)ro'ra#a& r"cur&i*o&

    La r"cur&i*idad "& un )roc"di#i"nto )ara "%contro% d" &"cu"ncia con&i&t"nt" "n .u" un)ro'ra#a &" %%a#a a &? #io- d" #an"ra .u"

    &" cr"a una &"'unda acti*acin d"% &u,)ro'ra#adurant" "% ti"#)o d" *ida d" %a )ri#"raacti*acin9

    I#)%"#"ntacin: No "& conc")tua%#"nt" di&tinto d"% ca&o ant"rior- &%o"& n"c"&ario di&)on"r d" "&)acio )ara %o& r"'i&tro& d"acti*acin d" %a& %%a#ada& r"cur&i*a& )i%a29

    Atri,uto& d"% contro% d" dato&

  • 7/24/2019 -Lenguajes de Programacin

    114/124

    114

    Atri,uto& d"% contro% d" dato& E& n"c"&ario- durant" %a "("cucin- conoc"r "% &i'ni1icado o *a%or d"

    cada id"nti1icador .u" a)ar"c" "n "% )ro'ra#a9 No#,r"&- &ir*"n )ara a&ociar un id"nti1icador a un dato9 C%a&"&:

    D" *aria,%"& D" )ar#"tro& 1or#a%"& D" &u,)ro'ra#a& Para ti)o& d"1inido& Para con&tant"& d"1inida& D" "nunciado& D" ">c")cion"& Para o)"racion"& )ri#ita& Para con&tant"& d" %it"ra%"&

    Un no#,r" co#)u"&to corr"&)ond" a una "&tructura d" dato&9

    S"'n "% a#,i"nt" d" r"1"r"ncia- cada ASOCIACIN r")r"&"nta %a)ar"(a d" un id"nti1icador 3 &u o,("to d" dato&9

    A ,i d 1 i

  • 7/24/2019 -Lenguajes de Programacin

    115/124

    115

    A#,i"nt"& d" r"1"r"ncia

    A#,i"nt" %oca% d" r"1"r"ncia: Par#"tro& 1or#a%"& Faria,%"& %oca%"& Su,)ro'ra#a& d"1inido&

    A#,i"nt" no %oca% d" r"1"r"ncia- &on id"nti1icador"& .u"&" )u"d"n u&ar d"&d" "% &u,)ro'ra#a- )"ro no &" cr"an"n 4%9

    A#,i"nt" '%o,a% d" r"1"r"ncia- "& %a )art" d"% a#,i"nt"no %oca%9 Una *aria,%" %oca% ocu%ta a %a '%o,a% d"% #io

    no#,r"9 A#,i"nt" )r"d"1inido d" r"1"r"ncia9 A%'uno&id"nti1icador"& &on )r"d"1inido& )or "% %"n'ua("

    A% tti di i

  • 7/24/2019 -Lenguajes de Programacin

    116/124

    116

    A%canc" "&ttico 3 din#ico

    E% a%canc" "&ttico d" un id"nti1icador)ara una a&ociacin "& "% con(unto d"

    acti*acion"& d" &u,)ro'ra#a "n %a&cua%"& %a a&ociacin "& *i&i,%"9 Una r"'%a d" a%canc" din#ico d"1in" %a&

    a&ociacion"& "n "% cur&o din#ico d"acti*acion"& d" &u,)ro'ra#a&9

    D t tid ,

  • 7/24/2019 -Lenguajes de Programacin

    117/124

    117

    Dato& co#)artido& "n &u,)ro'ra#a&

    Lo& o,("to& d" daot& &u"%"n &"rco#)artido& )ara %a co#unicacin con 3"ntr" %o& di&tinto& &u,)ro'ra#a&9En1o.u"&:A#,i"nt"& co#un"& ">)%?cito&A#,i"nt"& no ">)%?cito& con ,a&" a a%canc"

    din#icoA%canc"& "&ttico/"r"ncia

    Par#"tro& 3 trani&in d" )ar#"tro&

  • 7/24/2019 -Lenguajes de Programacin

    118/124

    118

    Lo& )ar#"tro& 3 r"&u%tado& tranitido& d"#an"ra e?pl9cita&on "% #4todo )rinci)a% )araco#)artir dato& "ntr" &u,)ro'ra#a&9

    "ar0metro real- "& una c%a&" d" o,("to d" dato&d"ntro d" un &u,)ro'ra#a .u" a)ar"c" d"c%arado"n "% "nca,"+a#i"nto9

    E% par0metro real"& "% o,("to d" dato& .u" &"co#)art" con "% &u,)ro'ra#a %%a#ado9 E% "&ta,%"ci#i"nto d" corr"&)ond"ncia "ntr" "%

    )ar#"tro r"a% 3 "% 1or#a% )u"d" &"r:

    Corr"&)ond"ncia d" )o&icin %o #& 1r"cu"nt"2 Corr"&)ond"ncia )or no#,r" ">)%?cito- a#,o&)ar#"tro& &" a)ar"an "n %a %%a#ada:

    Su, WV - WV @2

    M4todo& )ara tranitir )ar#"tro&

  • 7/24/2019 -Lenguajes de Programacin

    119/124

    119

    ) ) L%a#ada )or no#,r"- &" co)ia9 L%a#ada )or r"1"r"ncia- &" )a&a "% )unt"ro a%

    )ar#"tro r"a%9 L%a#ada )or *a%or Q r"&u%tado- &" co)ia 3

    caundo 1ina%i+a &" "&cri," "% *a%or r"&u%tado

    &o,r" "% )ar#"tro r"a%9 L%a#ada )or *a%or con&tant"- "% )ar#"tro r"a%

    &" )a&a a% 1or#a% co#o *a%or con&tant"- no &")u"d" #odi1icar9

    L%a#ada )or r"&u%tado- &" u&a &%o )aratran&1"rir un r"&u%tado d" r"'r"&o a% )ro'ra#a9No i#)orta &u *a%or inicia%9

    S ti d % t i i

  • 7/24/2019 -Lenguajes de Programacin

    120/124

    120

    S"#ntica d" %a trani&in Ind")"ndi"nt"#"nt" d" %a %ai#)%"#"ntacin %o& )ar#"tro& )u"d"n &"r:D" "ntrada IN2D" &a%ida OU!2D" "ntradaK&a%ida INKOU!2

    Lo nor#a% "& .u" %o& )ar#"tro& con ti)o&"%"#"nta%"& d" dato& ad#itan %a&

    )o&i,i%idad"&- 3 .u" %o& ti)o& d" dato&co#)u"&to& arra3& 3 r"'i&tro&2 &" )a&"n)or r"1"r"ncia9

    Su,)ro'ra#a& co#o )ar#"tro&

  • 7/24/2019 -Lenguajes de Programacin

    121/124

    121

    Su,)ro'ra#a& co#o )ar#"tro& Para tranitir un &u,)ro'ra#a co#o )ar#"tro a%

    &u,)ro'ra#a .u" &" %%a#a /a3 .u" t"n"r "ncu"nta .u": E% )ar#"tro r"a% "& "% no#,r" d"% &u,)ro'ra#a .u" &"

    tranit" E% )ar#"tro 1or#a% "&)"ci1ica "% ti)o d" &u,)ro'ra#a

    Proc"dur" 7>:int"'"r- 1unction R3-+:int"'"r2:int"'"r2 Pro,%"#a& a&ociado& con %o& )ar#"tro& d"

    &u,)ro'ra#a: F"ri1icacin "&ttica d" ti)o&- )u"& "n %a %%a#ada &" d"," /ac"r

    "&ta co#)ro,acin9 R"1"r"ncia& no %oca%"& *aria,%"& %i,r"&2- "& d"cir *aria,%"& .u"

    no ti"n"n "n%ac"& d"ntro d" %a d"1inicin d"% &u,)ro'ra#a9 Son n"c"&aria& r"'%a& d" a&ociacin #& r"ci"nt" )ara

    r"1"r"ncia& no %oca%"&9

    A ,i t %? it

  • 7/24/2019 -Lenguajes de Programacin

    122/124

    122

    A#,i"nt"& co#un"& ">)%?cito&

    Un a#,i"nt" co#n )ara co#)artir o,("to& d"dato& "& %a 1or#a #& &"nci%%a d" co#)artirdato& "ntr" &u,)ro'ra#a&9 %o.u" COMMON- d" 1ortran Pa.u"t"& "n ADA9 C%a&"& "n C 3 S#a%%!a%_- aun.u" no "& &u )rinci)a%

    o,("ti*o

    E& n"c"&ario d"1inir "% a%canc" 3 %a )rot"ccin)ara %o& a#,i"nt"& co#un"& ">)%?cito&

  • 7/24/2019 -Lenguajes de Programacin

    123/124

    123

    Unidad Didctica :

    Mecanismos de los !"

    !"#a X: M"canio& d" a,&traccin

  • 7/24/2019 -Lenguajes de Programacin

    124/124