Upload
fausto-jose-iocchi
View
215
Download
0
Embed Size (px)
Citation preview
8/16/2019 POO - Apruébala YA - C# - 7
1/79
Programación Orientada a Objetos en C#… Apruébala YA!!!
Programación Orientada a Objetos en C#:
Apruébala YA!!!
Be free… I'm free, I use Linux… Close your Windows, open your mind!!!
Editorial Mi-K-sita
7ª Edición (en español)
Ejemplares impresos: 1
Derechos reservados
Qeda totalmente apro!ada cal"ier copia parcial o completa de la
presente #$a% a&n sin el consentimiento de s ator'
op*le+t ,. !* /asto 0occhi
Programación Orientada a Objetos en:
Apruébala YA!!!
Edición ,.
8/16/2019 POO - Apruébala YA - C# - 7
2/79
Programación Orientada a Objetos en C#… Apruébala YA!!! Introduin
Introducción
2a presente #$a no es m3s "e eso: una guía para el se#imiento de lamateria Programación Orientada a Objetos% en donde se pretende llevarlode la mano por n recorrido !3sico de la materia (recerde adem3s de "e
el pro+esor es n facilitador % mostr3ndole el camino "e sted% como participante% de!e se#ir4 lo dem3s lo de!e hacer sted mismo)% nocoartando con esto "e sted lea otros te5tos acerca del mismo4 es m3s%se le invita a "e lo ha#a'
6e so!reentender3 ac3 "e *a sted centa con los conocimientos teóricosde la materia: conceptos tan !3sicos como el icio% el 8ensamiento% el8ensar% 6ilo#ismos% etc'% conceptos estos "e si !ien se los sa!e al caletrevendr$a !ien si intentase% en s tiempo li!re% tratar de entenderlos *cavilar al respecto' Qi93 piense "e para esta materia no es indispensa!le
estos conocimientos% pero4 "i;n sa!e<
En los dos primeros cap$tlos de esta #$a estaremos repasando losconceptos !3sicos de la 2ó#ica /ormal% como por ejemplo las operacionesde las "e dispone la ló#ica proposicional * las ta!las de verdad' Esto sehace *a "e la ló#ica proposicional es la m3s anti#a * simple de las+ormas de ló#ica' =tili9ando na representación primitiva del len#aje%permite representar * maniplar aserciones so!re el mndo "e nos rodea'2a ló#ica proposicional permite el razonamiento% a trav;s de nmecanismo "e primero eval&a sentencias simples * le#o sentenciascomplejas% +ormadas mediante el so de conectivos proposicionales% como
por ejemplo >?> * >@>' Este mecanismo determina la veracidad de nasentencia compleja% anali9ando los valores de veracidad asi#nados a lassentencias simples "e la con+orman'
El tema de los al#oritmos (crcial para esta materia)% an"e no se tocar3en esta #$a% es importante "e se domine% *a "e esta es na de las !ases+ndamentales para la ela!oración de pro#ramas de comptadoras4 seso!reentender3 "e *a sted posee cierto nivel de pericia en canto a estetema% por lo "e el pro+esor podr3% en al#&n momento% eval3rselo'
2os si#ientes cap$tlos contienen in+ormación primero% teórica% tocandotoda la parte de la historia de la comptación% conceptos !3sicos de lossistemas operativos% etc' 8osteriormente% se ir3 introdciendo al mndo dela pro#ramación orientada a o!jetos (8@@)'
En la presente #$a se tomar3 el len#aje A para ejempli+icar * e5plicarlos conceptos de la 8@@% sin decir esto "e dichos conceptos no pedanser aplicados en otros len#ajes "e cmplan con los re"erimientos de la8@@4 recerde "e este es na asi#natra en la cal sted aprender3 losconceptos de la 8@@ * s aplicación% m3s no es n crso de pro#ramación'
El <imo cap$tlo tiene na serie de ejercicios propestos' 6i steddispone del tiempo necesario% re&nase en #rpo% a ser posi!le (o inclso enla soledad de s ha!itación) * res;lvalos% para "e de esta manera iro!teniendo la pericia necesaria para poder apro!ar esta materia'
Bc3 se so!reentender3 "e *a sted centa con n len#aje depro#ramación denominado icrosot "isual tudio $%&' ())* (comom$nimo)% instalado en el comptador en el cal reali9ar3 los ejemplos *pr3cticas recomendadas en esta #$a' En caso de no contar con esto% se lerecomienda s ad"isición e instalación a la !revedad posi!le% *a "e sin;l no podr3 hacerle se#imiento a los diversos ejercicios ac3 e5plicados'
Espero "e la presente le sirva de a*da4 C5itos'
Edición ,. (
8/16/2019 POO - Apruébala YA - C# - 7
3/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I: L"ia #roposiional
+nidad I
Objeti,o:
8revio repaso * lectra acerca de la 2ó#ica 8roposicional% el participantecon+ormar3 na estrctra teórica * pr3ctica "e le permita lacomprensión de esta misma% as$ como del ra9onamiento ló#ico'
Contenido:
1' 2ó#ica 8roposicional1'1' 6im!oli9ación de proposiciones1',' El 3lclo 8roposicional como n 6istema B5iom3tico
1','1' 6i#nos primitivos1',',' e#las /ormativas1','' 6i#nos De+inidos
1','' a9onamiento 2ó#ico
Acti,idades del participante:
• eali9ar lectra previa so!re el tema% tili9ando la presente #$a *otros medios !i!lio#r3+icos'
• 0nteractar en clase'
• Disctir en #rpo'
• eali9ar las actividades propestas en clase'
&,aluación multidireccional:
• Evalación +ormativa: a trav;s de las discsiones de los conocimientose intervenciones en clase'
• Evalación smativa: a trav;s de n e5amen pr3ctico *Fo parcial'
-ógica Proposicional
.$ -ógica Proposicional
omo *a se de!e sa!er% la Lógica Proposicional es la m3s anti#a * simple
de las +ormas de ló#ica' =tili9ando na representación primitiva dellen#aje% permite representar * maniplar aserciones so!re el mndo "enos rodea' 2a ló#ica proposicional permite el ra9onamiento% a trav;s de nmecanismo "e primero eval&a sentencias simples * le#o sentenciascomplejas% +ormadas mediante el so de conectivos proposicionales% porejemplo >?> * >@>' Este mecanismo determina la veracidad de nasentencia compleja% anali9ando los valores de veracidad asi#nados a lassentencias simples "e la con+orman'
2a ló#ica proposicional pretende estdiar las +rases declarativas simples
(ennciados o proposiciones) "e son los elementos !3sicos de transmisiónde conocimiento hmano'
$%$% imboli/ación de proposiciones
ada proposición tiene na +orma ló#ica a la cal se le da n nom!re' 6edistin#en dos tipos de proposiciones: simples * compestas' =naproposición se denomina simple cando en ella no interviene nin#naconectiva ló#ica o t;rmino de enlace (*% o% no% si'''entonces'''% si * sólosi)' 6i se jntan na o varias proposiciones simples con n t;rmino deenlace% se +orma na proposición compesta'
2os t;rminos de enlace% >*>% >o>% >si''' entonces'''>% >si * sólo si> se sanpara nir dos proposiciones' En cam!io el t;rmino de enlace >no> se a#re#aa na sola proposición' 8or ejemplo:
Go* es jevesGa* clases de matem3ticas
Bm!as proposiciones son simples' on estas proposiciones se pedenconstrir proposiciones compestas tales como:
Edición ,. *
8/16/2019 POO - Apruébala YA - C# - 7
4/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I: L"ia #roposiional
Go* es jeves * ha* clases de matem3ticasGo* es jeves o ha* clases de matem3ticas6i ho* es jeves entonces ha* clases de matem3ticasGo* no es jeves
8ara representar las proposiciones se tili9an letra latinas ma*&sclas talescomo 8% Q% % etc' 8or ejemplo% sea:
8: Go* es jevesQ: Ga* clase de matem3ticas
2e#o la proposición:
Go* es jeves * ha* clase de matem3ticas
se podr$a sim!oli9ar as$:
8 * Q
En el len#aje corriente se tili9a tam!i;n la pala!ra >pero> o na >%> enve9 del t;rmino de enlace >*>' Ejemplo:
/i a la +eria% pero no hice compra al#na0n;s est3 en+erma% el martes ir; a visitarla
En el si#iente ejemplo se sa el t;rmino de enlace >o>:
Es tarde o est3 m* oscro
@tro #iro de >o> es:
@ es tarde o est3 m* oscro
En este <imo caso las dos >o> son parte del mismo t;rmino de enlace'
ando se sa el t;rmino de enlace: si%'''entonces'''' se o!tiene la
si#iente +orma:
6i entonces 6
Ejemplo:
6i madr#o entonces lle#o temprano
En este ejemplo pede sprimirse la pala!ra >entonces> * reempla9arse porna >%> as$:
6i madr#o% lle#o temprano
ando la pala!ra >no> se encentra en el interior de na proposiciónsimple% pede pasar inadvertida% pero se trata de na proposición
compesta' Ejemplo:
El d$a no est3 calroso
8ede presentarse como:
Ho ocrre "e el d$a est; calroso
Iam!i;n se san s$m!olos para representar los t;rminos de enlace% as$:
8ara la >*> se tili9a el s$m!olo (J)'8ara la >o> se tili9a el s$m!olo (v)'8ara el >no> se tili9a el s$m!olo ()'8ara el >si%4entonces4> se tili9a el s$m!olo ()'8ara el >si * sólo si> se tili9a el s$m!olo ()'
ando na proposición compesta tili9a el t;rmino de enlace >*> es naconjnción' 6i el enlace se hace mediante la conectiva >o> es nadis*nción' 6i se sa el t;rmino >no> es na ne#ación' ando la conectivaes >si'''entonces'''> es na proposición condicional% * si tili9a >si * sólo si>se tiene n !icondicional'
Edición ,. 0
8/16/2019 POO - Apruébala YA - C# - 7
5/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I: L"ia #roposiional
En proposiciones "e tienen m3s de n t;rmino de enlace es precisoindicar la manera de a#rparse% pes distintas a#rpaciones peden tenerdistintos si#ni+icados' En el len#aje corriente% las a#rpaciones sepresentan de acerdo a la colocación de ciertas pala!ras o mediante lapntación' En ló#ica% la a#rpación se indica por medio de par;ntesis'Ejemplo de esto es: @ los soldados encontraron cerrado el paso% o si temieron n ata"eenemi#o% se re+#iaron en las montañas' Este te5to se sim!oli9a de lasi#iente +orma:
8: 2os soldados encontraron cerrado el pasoQ: 2os soldados temieron n ata"e enemi#o: 2os soldados se re+#iaron en las montañas
2a proposición compesta es:
8 v (Q )
2a cal tiene n sentido distinto de la proposición:
(8 v Q)
ando no ha* l#ar a am!i#Ledades% peden omitirse los par;ntesis * seadopta na convención con respecto a la dominancia relativa de losdiversos conectivos' 2a convención es:
>> * >> dominan a >J> * >v>
as$:
6 8 v si#ni+ica 6 (8 v ) 8 Q J si#ni+ica 8 (Q J )
on esta convención% no est3 claro lo "e si#ni+ica% por ejemplo:
8 J Q v ó 8 Q
B"$% es necesario sar par;ntesis para aclarar% en el primer caso% si setrata de:
(8 J Q) v ó 8 J (Q v )
* en el se#ndo caso% di+erenciar entre:
(8 Q) * 8 (Q )
$%&% &l C1lculo Proposicional como un istema A2iom1tico
1','1' ignos primiti,os
6on si#nos primitivos a"ellos "e tili9amos para con+ormar naproposición' 8or ejemplo:
•Letras latinas, tanto en minúsculas como mayúsculas'
•Signos lógicos: >>% >v>% >J>'
•Signos de puntuación: >(> * >)>'
De las scesiones de si#nos "e es posi!le constrir% ha* espec$+icamentenas "e tienen sentido dentro de la teor$a' Iales scesiones sedenominan% t;rminos * +órmlas' 2os t;rminos se identi+ican con los
o!jetos de la teor$a * las +órmlas e5presan relaciones entre los o!jetos'2a especi+icación de los t;rminos * las +órmlas% se hace a trav;s de lassi#ientes re#las:
1',',' 3eglas 4ormati,as
34.: al"ier letra es n t;rmino'34(: 6i es na +órmla% entonces es na +órmla% la cal se
denomina ne#ación de '34*: 6i 8 * Q son +órmlas% entonces 8 v Q es na +órmla la cal se
denomina dis*nción ló#ica de 8 * Q'
Edición ,. 5
8/16/2019 POO - Apruébala YA - C# - 7
6/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I: L"ia #roposiional
%ota: En las /, * /% las letras ma*&sclas se san para desi#nar+órmlas% no corresponden a si#nos del len#aje'
1','' ignos 6einidos
=na ve9 esta!lecidas las re#las de +ormación de +órmlas se peden
introdcir a!reviaciones con el +in de simpli+icar la escritra' Estasa!reviaciones son el o!jeto de las de+iniciones matem3ticas'
6einición: 6ean * 6 +órmlas% entonces:
•2a +órmla ( v 6) se denota a!reviadamente como J 6 * se llamaconjunción lógica de * 6% la cal se lee > * 6'
•2a +órmla v 6 se denota como 6 * se llama condicional de * 6'2a +i#ra ló#ica del condicional% responde a conectar dosproposiciones mediante el es"ema >si'''% entonces'''>' 8ara leer na
proposición de la +orma 6% se pede sar al#nas de las si#ientese5presiones:
6i entonces 6 es s+iciente para 66 es necesario para 6 siempre "e sólo si 6
B la +órmla se le llama antecedente% * a la +órmla 6 consecuente'
ando el condicional es verdadero se dice "e e5iste implicación *en este caso se lee la e5presión como:
implica 6
la cal se denota:
6
•2a +órmla ( 6) J (6 ) se denota por 6 * se llama
!icondicional de * 6' Esta e5presión se pede leer (o entender) devarias maneras% entre ellas:
si * sólo s$ 6 es s+iciente * necesario para 6
ando el !icondicional es verdadero% se dice "e ha* equivalencia.En este caso se lee:
e"ivale a 6
* se denota:
6
%ota: 2os criterios para decidir so!re la verdad del condicional * el!icondicional se ver3n m3s adelante'
1','' 3a/onamiento -ógico
Dedcción' 2a dedcción ló#ico matem3tica consiste en lo si#iente: Bpartir de na serie de +órmlas admitidas como ciertas% * denominadasaiomas, !ipótesis o premisas% se o!tiene otra +órmla llamada conclusióno tesis% mediante la aplicación de re#las ló#icas precisas' El procesomediante el cal se pasa de las hipótesis (premisas) a la tesis% reci!e elnom!re de demostración'
=n teorema es na +órmla "e +i#ra dentro de na demostración' Esdecir% n teorema es na +órmla "e es o !ien n a5ioma% o !ien% naconsecencia de ;ste'
=na +órmla se dice "e es falsa si s ne#ación es n teorema'=na teor$a es contradictoria cando se tiene na +órmla "e esverdadera * +alsa a la ve9' Esto es: * son teoremas de la teor$a'
8ara demostrar "e na +órmla es n teorema se desarrolla el si#iente
Edición ,. 7
8/16/2019 POO - Apruébala YA - C# - 7
7/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I: L"ia #roposiional
proceso:
• 6e enncian los a5iomas de la teor$a' 8ara la ló#ica proposicional seesta!lecen catro a5iomas% "e son:
A.$ Axioma de idempotenia$ 6ea 8 na +órmla% entonces% la+órmla:
8 v 8 8 es n a5ioma
A($ Axioma de adunin$ 6ean 8 ? Q +órmlas% entonces% la +órmla:
8 8 v Q es n a5ioma
A*$ Axioma de onmutati(idad $ 6ean 8% Q * +órmlas% entonces% la
+órmla:
8 v Q Q v 8 es n a5ioma
A0% Axioma de adiin$ 6ean 8% Q * +órmlas% entonces% la +órmla:
(8 Q) ( v 8 v Q) es n a5ioma
• 6e +ijan las >re#las ló#icas> "e permiten dedcir dicha +órmla a partirde los a5iomas' Estas re#las son llamadas re#las de valide9 () * son
las si#ientes:
3".: Dadas las +órmlas * 6N si 6 * son verdaderas% entonces 6es verdadera'
3"(: 6i * 6 son +órmlas e"ivalentes% se pede sstitirla na por laotra en cal"ier parte del proceso demostrativo'
• 6e hace na demostración de la +órmla % "e consiste en o!tener a como <ima +órmla de la lista% por aplicación reiterada de 1 * ,'
Edición ,. 8
8/16/2019 POO - Apruébala YA - C# - 7
8/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
+nidad II
Objeti,o:
8revio repaso * lectra acerca de la Ia!la de erdad * la nidad anterior%el participante +ormali9ar3 e5presiones * ra9onamientos ló#icos% los
evalar3 por completo e in+erir3 so!re ss resltados'
Contenido:
,' Ia!las de erdad','1' @peradores 2ó#icos'
,'1'1' He#ación','1',' Dis*nción','1'' onjnción','1'' ondicional'
,'1'O' Picondicional',',' 8ropiedades * 8ostlados',','1' onmtativa',',',' Distri!tiva',','' Elemento Hetro',','' Elemento 0nverso'
,'' 8ro!lemas reseltos'
Acti,idades del participante:
• eali9ar lectra previa so!re el tema% tili9ando la presente #$a *otros medios !i!lio#r3+icos'
• 0nteractar en clase'• Disctir en #rpo'• eali9ar las actividades propestas en clase * en esta nidad'
&,aluación multidireccional:
• Evalación +ormativa: a trav;s de las discsiones de los conocimientose intervenciones en clase'
• Evalación smativa: a trav;s de n e5amen pr3ctico *Fo parcial'
Edición ,. 9
8/16/2019 POO - Apruébala YA - C# - 7
9/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
'ablas de "erdad
($ 'ablas de "erdad
Estas ta!las peden constrirse haciendo na interpretación de los si#nos
ló#icos % J% v% % % as$ como: no% *% o% si4entonces% s$ * sólo si%respectivamente' 2a interpretación corresponde al sentido "e estasoperaciones tienen dentro del ra9onamiento'
8ede esta!lecerse na correspondencia entre los resltados de estasta!las * la dedcción ló#ico matem3tica' En consecencia% las ta!las deverdad constit*en n m;todo de decisión para che"ear si naproposición es o no n teorema'
8ara la constrcción de la ta!la se asi#nar3 el valor 1 (no) a na
proposición cierta * (cero) a na proposición +alsa' Esta ha sido lamanera niversal en "e se ha e5presado% * todo esto #racias a eor#ePoole (1.1O-1.R)% "i;n +e la persona "e ideó el 3l#e!ra "e lleva snom!re' El presentó el primer tratamiento sistem3tico de la ló#ica% * paraello desarrolló n sistema al#e!raico% conocido ahora como Sl#e!ra dePoole' Bdem3s de ss aplicaciones al campo de la ló#ica% el 3l#e!ra dePoole ha tenido dos aplicaciones importantes: el tratamiento de conjntosmediante las operaciones de nión e intersección "e ha servido de !ase ala teor$a de la pro!a!ilidad * el diseño de circitos di#italescom!inacionales'
Bn"e en el 3l#e!ra de Poole en realidad se tili9an otros s$m!olos paralos operadores% vamos a mantener ac3 los s$m!olos de las proposicionesló#icas' 2o "e s$ se tomó ac3 de dicha 3l#e!ra son los valores * 1 parala notación de al#o /also o ierto% respectivamente' Esto se hace paraevitar con+siones m3s adelante'
&%$% Operadores -ógicos
E5isten nas cinco operaciones !3sicas "e operan so!re las proposicionesló#icas% como *a lo hemos visto anteriormente' Estdiemos ahora la Ia!lade erdad para cada no de ellos'
,'1'1' %egación: El valor de verdad de la ne#ación es el contrario de la
proposición ne#ada'
8 8
1
1
,'1',' 6isunción: 2a dis*nción solamente es +alsa si lo son ss doscomponentes' Esta operación es ampliamente conocida con el
nom!re del operador >@>'
8 Q 8 v Q
1 1 1
1 1
1 1
,'1'' Conjunción: 6olamente si las componentes de la conjnción sonciertas% la conjnción es cierta' Esta operación es conocidatam!i;n !ajo el nom!re de >?>'
J
Edición ,. ;
8/16/2019 POO - Apruébala YA - C# - 7
10/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
,'1'' Condicional: El condicional solamente es +also cando elantecedente es verdadero * el consecente es +also' De la verdadno se pede se#ir la +alsedad'
8 Q 8 Q
1 1 1
1
1 1
1
,'1'O'
8/16/2019 POO - Apruébala YA - C# - 7
11/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
i) p sólo si "j) p sin em!ar#o "U) p s+iciente para "l) p siempre "e "m) a veces p% siempre "n) p a no ser "e "
6olción:
a) p→ q
b) p ∧ q
c) p
d) p ∧ q
e) p→ q
f) q → p
g) p ∧ q
h) p→ q
i) p→ q
j) p ∧ q
k) p→ q
l) q → p
m) ( p ∨ ¬ p) ∧ q ≡ q
n) ¬ q → p
,'',' /ormali9ar los si#ientes ra9onamientos:
>6i el resltado o!tenido es sperior al previsto en O nidades%ser3 de!ido a no ha!er reali9ado el proceso a la temperatraadecada o a la e5istencia de errores en los c3lclos +inales'>
>El an3lisis reali9ado% innecesario si nos dejamos llevar por laprecipitación% se torna necesario si nos paramos a re+le5ionarso!re el mensaje "e se pretende transmitir'>
>El c3ncer no lo#rar3 crarse a no ser "e se lo#re determinar scasa * se consi#a encontrar +3rmacos adecados o !ien para
prevenirlo o para crarlo'>
6olción:
p T esltado o!tenido menor al previsto en O nidades'" T Ga!er reali9ado el proceso a la temperatra adecada'r T E5istencia de errores en los c3lclos +inales'
(¬q ∨ r ) → p
p T Bn3lisis reali9ado es necesario'" T Hos dejamos llevar por la precipitación'r T Hos paramos a re+le5ionar so!re el mensaje "e se pretendetransmitir'
(q → ¬ p) ∧ (r → p)
p T El c3ncer lo#rar3 crarse'" T 6e lo#ra determinar s casa'r T 6e consi#e encontrar +3rmacos adecados para prevenirlo's T 6e consi#e encontrar +3rmacos adecados para crarlo'
¬ (q ∧ (r ∨ s))→ ¬ p ≡ p → (q ∧ (r ∨ s))
,''' /ormali9ar tili9ando las conectivas V¬, ∨, ∧W el si#ienteennciado: >6i p entonces " *% en caso contrario% si p1 entonces "1*% en caso contrario r1'>
6olción:
( p → q) ∧ (¬ p→ (( p1→ q1) ∧ (¬ p1→ r 1)))
,''' /ormali9ar el si#iente ennciado donde hemos notado >si pentonces " * en caso contrario r> de la si#iente +orma:
p→ q;r
Edición ,. ..
8/16/2019 POO - Apruébala YA - C# - 7
12/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
Hormali9ar dicho ennciado'
6olción:
( p → q) ∧ (¬ p → r )
/orma normal conjntiva: (¬ p ∨ q) ∧ ( p ∨ r )
,''O' ompr;!ese si los si#ientes ra9onamientos son correctos o no:
a' >6i Bntonio #anó la carrera% entonces Paltasar o arlos +eronlos se#ndos' 6i Paltasar +e se#ndo% entonces no #anóBntonio' 6i Demetrio +e se#ndo% no lo +e arlos' Bntonio#anó la carrera' 8or tanto% Demetrio no +e se#ndo>'
!' >Ho llora% r$e' 6i no llora% r$e sólo si tiene n j#ete' Hnca
tiene n j#ete cando se est3 riendo si no come ncaramelo' 2e#o come n caramelo'>c' >an "iere a Mar$a si * sólo si Mar$a "iere a an * promete
casarse con ;l' Mar$a no "iere a an si an no "iere aMar$a' Mar$a promete casarse con an si * sólo si anpromete casarse con Mar$a' 8or tanto% an "iere a Mar$a *Mar$a no "iere a an>'
d' >6i ha nevado ser3 di+$cil condcir' 6i no es +3cil condcirlle#ar; tarde si no sal#o temprano' Ga nevado' 2e#o saldr;temprano'>
e' >6i no lleve sal#o al campo' 6i sal#o al campo respiro' 8or
tanto% respiro si * sólo si no lleve'>+' >6i n monte se "ema al#o t*o se "ema' Bl#o t*o se "ema
si * sólo si eres descidado' 6i eres descidado no mereces "ete +eliciten' 8or tanto si no mereces "e te +eliciten entonceses "e n monte se "ema'>
#' >El Ministro 8oplar de Econom$a * Gacienda ha hecho lassi#ientes declaraciones:B la prensa: >6i los impestos s!en% la in+lación !ajar3 si * sólosi no se deval&a el Pol$var'>B la radio: >6i la in+lación !aja o si el Pol$var no se deval&a% los
impestos no s!ir3n'>B la tele: >@ !ien !aja la in+lación * se deval&a el Pol$var% o!ien los impestos de!en s!ir'>omo consecencia% p!lica n in+orme en el "e ase#ra: >2osimpestos de!en s!ir% pero la in+lación !ajar3 * el Pol$var nose devalar3'>
/e consecente con ss declaraciones a los medios decomnicación'
h' >Es s+iciente XhisU* para "e chocolate' hocolate si * solo sijamón' Ho #ine!ra a menos "e chocolate' YhisU*' Es posi!lea+irmar: (1) "e !e!ió #ine!ra< (,) "e no tomó chocolate
i' >6i no especi+ico las condiciones iniciales mi pro#rama nocomen9ar3' Ga!r; pro#ramado n ciclo in+inito solo si mipro#rama no termina' Pasta "e el pro#rama no comience o no+inalice para "e +alle' De ah$ "e sea necesario no solamenteespeci+icar las condiciones iniciales sino tam!i;n no pro#ramar
n ciclo in+inito para "e el pro#rama no +alle'>j' >6i ,O divisiones son s+icientes% el #eneral #anar3 la !atallaNpor otra parte% o se sministran alas de apo*o a;reo t3ctico%o el #eneral no #anar3 la !atalla' Bdem3s% no es cierto "esean s+icientes ,O divisiones * "e se va*an a sministrar alas de apo*o a;reo t3ctico' onclsión: no son s+icientes ,Odivisiones'>
6olción:
a' 60 es v3lido% Bntonio #anó la carrera'!' E6 v3lido% come n caramelo'c' El ra9onamiento H@ es v3lido% *a "e pede darse el caso de
"e nin#no de los dos "iera al otro% * las premisas ser$anciertas% pero la conclsión /alsa'
d' El ra9onamiento H@ es v3lido por"e pede darse el caso deH@ salir temprano * lle#ar tarde ha!iendo nevado * siendodi+$cil condcir' mpli;ndose todas las premisas'
e' H@ es v3lido% pedo salir al campo% lloviendo * respirar' 2e#ono se dedce "e respire si * sólo si no lleve'
+' H@ es v3lido'
Edición ,. .(
8/16/2019 POO - Apruébala YA - C# - 7
13/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
#' H@ es correcto'h' H@ se pede dedcir nin#no de los dos% ni "e !e!iese
ine!ra ni "e no tomase chocolate'i' El ra9onamiento E6 correcto'j' El ra9onamiento E6 correcto'
,''R' 2e di#o a n ami#o: >ando sal#o sin para#as% lleve' andoest3 despejado% no lleve' 6e#&n el hom!re del tiempo% mañanaestar3 despejado o har3 nie!la' De todos modos saldr; sinpara#as>' Entonces mi ami#o responde: >Entonces mañana%adem3s de llover% ha!r3 nie!la>' ómo lo spo<
6olción:
Bm!as e5presiones se dedcen ló#icamente sponiendo "e todaslas +rases sean erdaderas% se pede compro!ar "e sólo e5iste
esa posi!ilidad'
,''7' Don an Ienorio% hi9o las si#ientes declaraciones% con respectoa las doncellas 0n;s% ana * Mar$a% "e le costaron la vida' Qi;no "i;nes son las asesinasBmo a la <ima de las tres' 6i amo a0n;s pero no a Mar$a% entonces tam!i;n amo a ana' @ amo aMar$a * a ana o no amo a nin#na' 6i amo a Mar$a% entoncesamo a 0n;s>' (se spone "e la asesina era a";lla a la "e Donan no ama!a)'
6olción:
Hin#na de ellas era la asesina% pes las ama!a a las tres'
,''.' En n jicio el +iscal ar#menta: >6i el acsado es clpa!le%entonces ten$a n testi#o>' B ello% el a!o#ado de+ensor respondióinmediatamente: >Eso es +also>' El acsado decidió cam!iar dea!o#ado de+ensor' Es ló#ica la decisión tomada por el acsado<8or ";<
6olción:
6i es /alsa la sentencia >6i el acsado es clpa!le entonces ten$an testi#o>% por la ta!la de verdad de la implicación% elantecedente es erdadero * el consecente /also% le#o elantecedente es erdadero% es decir% el acsado ser$a clpa!le'
,''Z' Bnali9ar la coherencia ló#ica (no teoló#ica) del si#ientera9onamiento: >6i Dios e5iste es todo amor * omnipotencia' 6i Dioses incapa9 de erradicar el s+rimiento del mndo entonces no esomnipotente' Dios no es amor o est3 dispesto a erradicar els+rimiento del mndo' Dios es capa9 de erradicar el s+rimientodel mndo * est3 dispesto a ello solo si no e5iste s+rimiento enel mndo' E5iste s+rimiento en el mndo' 8or tanto: Dios noe5iste>'
6olción:
El ra9onamiento es correcto en t;rminos ló#icos'
,''1' >6i la Pella Drmiente despierta% los ha!itantes del castillotam!i;n lo har3n' 6i el pr$ncipe la !esa% despertar3' El pr$ncipe la!esar3 si est3 de !en ver' @ la !esa o no se despierta nadie'omo esto es n cento% la princesa% a pesar de llevar 1 añosdormida si#e de m* !en ver' 6i la princesa se despierta secasar3n% vivir3n +elices * comer3n perdices si no estamos en veda'Estamos en veda>' 6e casan< 6on +elices< omen perdices<
6olción:
6e casan% viven +elices% pero no comen perdices por"e estamosen veda'
,''11' 2os dos carteles si#ientes est3n col#ados respectivamente a laperta de las ha!itaciones 1 * ,' =no de los carteles dice laverdad * el otro cartel miente' 6a!iendo "e en la mismaha!itación no pede ha!er na dama * n ti#re% * "e pede
Edición ,. .*
8/16/2019 POO - Apruébala YA - C# - 7
14/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad II: )ablas de *erdad
ha!er dos damas * dos ti#res% se pide decidir ló#icamente ";perta se de!e a!rir para li!erar a la dama (si es "e e5iste)'Bm!as ha!itaciones est3n ocpadas'
BIE2 1: En esta ha!itación ha* na dama * en la otra n ti#re'BIE2 ,: En na de estas ha!itaciones ha* na dama * en na
de estas ha!itaciones ha* n ti#re'
6olción:
2a &nica +orma de "e n cartel di#a la verdad * otro mienta es"e el artel 1 mienta * el artel , di#a la verdad' on lo calha!r$a n ti#re en la ha!itación 1 * na dama en la ha!itación ,'
,''1,' 0#al al pro!lema anterior% pero ahora sponiendo "e los doscarteles si#ientes dicen am!os la verdad o mienten am!os'
Dedcir en "; ha!itación ha* na dama% sa!iendo% como antes%"e pede no ha!erla'
BIE2 1: Bl menos en na de estas ha!itaciones ha* na dama'BIE2 ,: Ga* n ti#re en la otra ha!itación'
6olción:
2a &nica posi!ilidad es "e los dos carteles di#an la verdad *ha!r$a na dama en la ha!itación , * n ti#re en la ha!itación 1'
,''1' Discrso so!re los estdios de 6istemas en clase de 2ó#ica:>6eñoras% señores% !enas tardes: Es hora de "e recapacitemosso!re los estdios de sistemas en v$speras de la #radación ennestra =niversidad' 6e sa!e "e si las comptadoras ha!lasen lossist;micos (0n#' En sistemas) no e5istir$an' 8or otra parte% en la<ima renión del onsejo de =niversidades% ;ste a+irmó "e:>'''la =niversidad #radar3 sist;micos mientras las comptadorasno ha!len'''>N a+irmación "e nos parece m* correcta% si !ien locierto es "e las comptadoras no ha!lan pero los sist;micos
e5isten' B la vista de todo ello nos pre#ntamos: Es% por tanto%coherente "e la =niversidad e5pida t$tlos de 0n#enieros de6istemas en la actalidad<
6olción:
6$% se si#e "e la niversidad e5penda t$tlos de 6istemas a partirde las premisas' El ra9onamiento es correcto'
Edición ,. .0
8/16/2019 POO - Apruébala YA - C# - 7
15/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
+nidad III
Objeti,o:
8revio repaso% lectra e investi#ación% el participante recordar3 la historiade la comptación% as$ como enmerar3 las di+erentes #eneraciones del
comptador * los sistemas operativos' Iam!i;n reconocer3 los diversoslen#ajes de pro#ramación * relacionar3 ss paradi#mas'
Contenido:
' Gistoria de la omptación''1' 8rocesamiento de datos'',' 2as O #eneraciones del comptador''' omptador''' 6istemas operativos'
'O' 2en#ajes de 8ro#ramación''R' 0nt;rpretes * compiladores''7' 8aradi#mas de la 8ro#ramación''.' riterios del len#aje'
Acti,idades del participante:
• eali9ar lectra previa so!re el tema% tili9ando la presente #$a *otros medios !i!lio#r3+icos'
• 0nteractar en clase'• Disctir en #rpo'• eali9ar las actividades propestas en clase'
&,aluación multidireccional:
• Evalación +ormativa: a trav;s de las discsiones de los conocimientose intervenciones en clase'
• Evalación smativa: a trav;s de n e5amen pr3ctico *Fo parcial'
=istoria de la Computación
*$ =istoria de la Computación
+%$% Procesamiento de datos
El ori#en de la comptación sr#e de la necesidad consecente del hom!repor reali9ar c3lclos nm;ricos * procesar in+ormación% "e le permitiera+acilitar ss tareas cotidianas' 8re!a de ello son los nmerosos *novedosos inventos creados "e han conllevado al desarrollo de latecnolo#$a actal' En la historia sr#ieron mchos inventos% nevos *aplica!les% pero sólo al#nos de ellos marcaron na !recha en el desarrollode la comptación% los cales son:
'1'1' $astón con muescas: es n instrmento de madera con +orma de!astón * con hendidras ad*acentes% c*a +ncionalidad se !asa!a
en llevar el conteo de al#&n hecho espec$+ico% sin sistemasdecimales% como lo conocemos ho* en d$a% sólo da!a n indicio delas veces "e sced$a al#&n evento'
'1',' %baco #!ino: es n instrmento "e permitió crear la estrctradel primer sistema nm;rico (decimal)% * con ello% podermaniplar los n&meros con ma*or propiedad * precisión' onsta!acon n mecanismo "e permit$a asi#nar las nidades% decenas *centenas del n&mero "e se "er$a representar'
'1'' $las Pascal &'.())*: /e n cient$+ico "e lo#ró crear na m3"inasmadora a trav;s de n sistema de en#ranajes mec3nicos dedistintos tamaños% en donde cada no de ellos representa!a nanidad espec$+ica'
'1'' +otfred on Leibnitz &'.(')*: Iomó la idea de 8ascal * lo#ró crearna m3"ina% "e adem3s de smar * restar% mltiplica!a *divid$a'
'1'O' -erman -ollerit &'.)*: onstr*ó na m3"ina% c*a +nción erala de interpretar na serie de tarjetas per+oradas% en donde el
Edición ,. .5
8/16/2019 POO - Apruébala YA - C# - 7
16/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
pnto de per+oración si#ni+ica!a n estado verdadero &true ó '*, *el pnto de no per+oración +also &false ó )*' Esta serie de 1[s * [sera procesada * nos da!a na in+ormación espec$+ica' Estastarjetas +eron sadas en el censo reali9ado en EE== para ese año'
'1'R' /012# &'.34(*: /lectronical 0umerical 1ntegrator and #alculador,
+e el primer comptador creado por el hom!re en 8ensilvania%compesto por 1.' t!os al vac$o% pesa!a tres toneladas *ocpa!a n espacio de apro5imadamente 1O mts,' Estecomptador pod$a ejectar 1' operaciones por se#ndo% todana maravilla para ese entonces' 2os pro#ramadores de estasmacrocomptadoras de!$an conocer a +ondo el hardXare de lamisma para poder maniplarlas con precisión'
+%&% -as 5 generaciones del computador
B partir de la creación de EH0B% comen9ó na carrera tecnoló#ica pormejorar los procesos de cómpto% amentando s velocidad *compati!ilidad% * por spesto% redciendo s tamaño * complejidad' 8araello se crearon nevas tendencias * tecnolo#$as "e dejaron hellas en eldesarrollo de la comptación'
','1' Primera +eneración &'.34(5'.366*: esta #eneración la con+ormaronlas macrocomptadoras como EH0B% "e tra!aja!an en len#aje!inario * ocpa!an #randes espacios +$sicos'
',',' Segunda +eneración &'.3665'.3(7*: este +e el primer salto
histórico en el desarrollo de la comptación' 6e creó el transistor%"e lo#ró simlar el comportamiento de centenares de t!os alvac$o en n solo componente electrónico' 6e redjo nota!lementeel tamaño de los comptadores% el len#aje sado era elensam!lador (nemónicos) * los dispositivos de almacenamientoesta!an hechos de material +erroma#n;tico'
','' 8ercera +eneración &'.3(75'.39)*: esta #eneración se !asó en laredcción del tamaño del comptador m3s "e en el amento dela velocidad% miniatri9ando an m3s los componentes
actalmente tili9ados'
','' #uarta +eneración &'.39)5'.36*: esta #eneración representó else#ndo #ran salto histórico en el desarrollo de la comptación' 6elo#ró crear chips de silicio "e lo#ra!an inte#rar a millones detransistores "e redc$an nota!lemente el tamaño del comptador
* amenta!a indiscti!lemente s velocidad de procesamiento'8ara esta ;poca eran accesi!les a las personas * eranmedianamente compati!les'
','O' :uinta +eneración &2;os 3)*: a partir de los Z% el desarrollo de lacomptación se ha en+ocado mcho m3s en la creación deso+tXare "e permitan procesar el conocimiento e+icientemente%se crea la inteli#encia arti+icial * los sistemas e5pertos(reconocedor de hellas% im3#enes% voces% etc')' 2acompati!ilidad entre so+tXare * hardXare es total en esta
#eneración'+%+% Computador
Es n sistema electrónico r3pido * e5acto "e manipla datos de entrada%los procesa * #enera datos de salida se#&n las ordenes de n pro#rama deinstrcciones almacenadas en s memoria' Est3 compesto por dos !lo"esesenciales: -ard
8/16/2019 POO - Apruébala YA - C# - 7
17/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
procesos internos ejectados en la 8=' 2a = tra!aja en dosciclos: ciclo de identi+icación * locali9ación% * ciclo de ejección'
2a nidad aritm;tica ló#ica% se encar#a de reali9ar todas lasoperaciones aritm;ticas (\ - ] F) * comparar valores para o!tenerresltados de verdadero o +also'
2a nidad de memoria principal es tili9ada por la 8= para #ra!ar* e5traer in+ormación% *a sea en +orma temporal o permanente'E5isten dos tipos de memoria !3sicas: BM (Aandom 2ccess?emory*% es la llamada memoria del sario% de!ido a "e elpro#ramador pede leer * escri!ir datos en la misma' Estamemoria es temporal% *a "e mantiene ss datos siempre * candoest; conectada a n sministro de ener#$a% s in+ormación esvol3til' @M (Aead Only ?emory*% es la memoria del +a!ricante%ss datos son permanentes * no peden ser modi+icados mediante
pro#ramación'
'',' Soft
8/16/2019 POO - Apruébala YA - C# - 7
18/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
manera "e si la comptadora tviese m3s de no le ser$a in&til' Elejemplo m3s t$pico de este tipo de sistemas es el D@6 * Mac@6'
ultiproceso: =n sistema operativo mltiproceso se re+iere aln&mero de procesadores del sistema% "e es m3s de no * ;ste escapa9 de sarlos todos para distri!ir s car#a de tra!ajo'
eneralmente estos sistemas tra!ajan de dos +ormas: sim;trica oasim;tricamente' ando se tra!aja de manera asim;trica% elsistema operativo selecciona a no de los procesadores el calj#ar3 el papel de procesador maestro * servir3 como pivote paradistri!ir la car#a a los dem3s procesadores% "e reci!en elnom!re de esclavos' ando se tra!aja de manera sim;trica% losprocesos o partes de ellos (threads) son enviados indistintamente acal"iera de los procesadores disponi!les% teniendo%teóricamente% na mejor distri!ción * e"ili!rio en la car#a detra!ajo !ajo este es"ema'
6e dice "e n thread es la parte activa en memoria * corriendo den proceso% lo cal pede consistir de n 3rea de memoria% nconjnto de re#istros con valores espec$+icos% la pila * otrosvalores de conte5to' =n aspecto importante a considerar en estossistemas es la +orma de crear aplicaciones para aprovechar losvarios procesadores' E5isten aplicaciones "e +eron hechas paracorrer en sistemas monoproceso "e no toman nin#na ventaja amenos "e el sistema operativo o el compilador detecte seccionesde códi#o paraleli9a!le% los cales son ejectados al mismo tiempoen procesadores di+erentes' 8or otro lado% el pro#ramador pede
modi+icar ss al#oritmos * aprovechar por s$ mismo esta +acilidad%pero esta <ima opción las m3s de las veces es costosa en horashom!re * m* tediosa% o!li#ando al pro#ramador a ocpar tanto om3s tiempo a la paraleli9ación "e a ela!orar el al#oritmo inicial'
+%.% -enguajes de Programación
En in+orm3tica% es cal"ier len#aje arti+icial "e pede tili9arse parade+inir na secencia de instrcciones para s procesamiento por nordenador o comptadora' Es complicado de+inir "; es * "; no es n
len#aje de pro#ramación' 6e asme #eneralmente "e es la tradcción delas instrcciones a n códi#o "e comprende la comptadora * "e de!eser completamente sistem3tica' Hormalmente es la comptadora la "ereali9a la tradcción'
'O'1' Lenguaje de maquina: istos a m* !ajo nivel% los
microprocesadores procesan e5clsivamente señales electrónicas!inarias' Dar na instrcción a n microprocesador spone enrealidad enviar series de nos * ceros espaciadas en el tiempo dena +orma determinada' Esta secencia de señales se denominacódi#o m3"ina' El códi#o representa normalmente datos *n&meros e instrcciones para maniplarlos'
'O',' Lenguajes de bajo nivel: =n modo m3s +3cil de comprender elcódi#o m3"ina es dando a cada instrcción n nemónico% comopor ejemplo STORE% ADD o JUMP' Esta a!stracción da como
resltado el ensam!lador% n len#aje de m* !ajo nivel "e esespec$+ico de cada microprocesador'
2os len#ajes de !ajo nivel permiten crear pro#ramas m*r3pidos% pero "e son a mendo di+$ciles de aprender' M3simportante es el hecho de "e los pro#ramas escritos en n !ajonivel son pr3cticamente espec$+icos para cada procesador' 6i se"iere ejectar el pro#rama en otra m3"ina con otra tecnolo#$a%ser3 necesario rescri!ir el pro#rama desde el principio'
'O'' Lenguajes de alto nivel: 8or lo #eneral se piensa "e los
ordenadores son m3"inas "e reali9an tareas de c3lclos oprocesamiento de te5tos' 2a descripción anterior es sólo na +ormam* es"em3tica de ver na comptadora' Ga* n alto nivel dea!stracción entre lo "e se pide a la comptadora * lo "erealmente comprende' E5iste tam!i;n na relación compleja entrelos len#ajes de alto nivel * el códi#o m3"ina'
2os len#ajes de alto nivel son normalmente +3ciles de aprenderpor"e est3n +ormados por elementos de len#ajes natrales%como el in#l;s' En PB60% el len#aje de alto nivel m3s conocido%
Edición ,. .9
8/16/2019 POO - Apruébala YA - C# - 7
19/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
los comandos como:
IF (CONTADOR = 10) THEN STOP
peden tili9arse para pedir a la comptadora "e pare siCONTADOR es i#al a 10' 8or des#racia para mchas personas esta
+orma de tra!ajar es n poco +rstrante% dado "e a pesar de "elas comptadoras parecen comprender n len#aje natral% lohacen en realidad de na +orma r$#ida * sistem3tica'
+%/% Intérpretes compiladores
2a tradcción de na serie de instrcciones en len#aje ensam!lador (elcódi#o +ente) a n códi#o m3"ina (o códi#o o!jeto) no es n procesom* complicado * se reali9a normalmente por n pro#rama especialllamado compilador ' 2a tradcción de n códi#o +ente de alto nivel a n
códi#o m3"ina tam!i;n se reali9a con n compilador% en este caso m3scomplejo% o mediante n int;rprete' =n compilador crea na lista deinstrcciones de códi#o m3"ina% el códi#o o!jeto% !as3ndose en n códi#o+ente' El códi#o o!jeto resltante es n pro#rama r3pido * listo para+ncionar% pero "e pede hacer "e +alle el ordenador si no est3 !iendiseñado' 2os int@rpretes% por otro lado% son m3s lentos "e loscompiladores *a "e no prodcen n códi#o o!jeto% sino "e recorren elcódi#o +ente na l$nea cada ve9' ada l$nea se tradce a códi#o m3"ina* se ejecta' ando la l$nea se lee por se#nda ve9% como en el caso delos pro#ramas en "e se retili9an partes del códi#o% de!e compilarse denevo' Bn"e este proceso es m3s lento% es menos sscepti!le deprovocar +allos en la comptadora'
+%0% Paradigmas de la Programación
=n paradi#ma se pede considerar como na colección de caracter$sticasa!stractas "e cate#ori9an n #rpo de len#ajes "e son aceptados *tili9ados por n #rpo de pro+esionales' 2os pro#ramas de comptadora setili9an para resolver pro!lemas% * ha ha!ido miles de años de tra!ajomatem3tico para tal +in' 2os len#ajes de pro#ramación est3nespeci+icados por re#las para +ormar instrcciones correctas%
or#ani93ndolas en módlos% someterlas hacia n compilador% el caltradce el códi#o en len#aje comprensi!le para na m3"ina enparticlar% * +inalmente ejecta el pro#rama% es decir% someter la entradahacia la comptadora% la cal la trans+orma en na salida de acerdo conlas instrcciones en el pro#rama'
'7'1' Paradigmas 1mperativos. /acilitan c3lclos por medio de cam!iosde estado' Entendemos por estado la condición de na BM oB2MBEHBM0EHI@'
'7',' Paradigma de procedimientos. Est3 constitido por !lo"es depro#ramas "e +orman n archivo plano% donde cada !lo"e si#ea s predecesor% constr*;ndose as$ n pro#rama lineal' Es nejemplo de este paradi#ma el len#aje de pro#ramación /@IBH'
'7'' Paradigma estructurado en bloques. Est3 constitido por 3m!itos
anidados% es decir% los !lo"es peden estar anidados dentro deotros !lo"es * peden contener ss propias varia!les' 6onejemplos de este paradi#ma los len#ajes: BDB% B2@2R% 8B6B2%B2@2R. * '
'7'' Paradigma basado en objetos. Descri!e a los len#ajes "esoportan o!jetos en interacción% tales como BDB (8BQ=EIE6)%M^D=2B (M^D=2@6)% 6MB22IB2K (@PEI@6)% * adem3s pedensoportar BP6IB0^H% EHB86=2B0^H * 8@20M@/06M@'
'7'O' Paradigma orientado a objetos. Descri!e a los len#ajes "e est3n
!asados en o!jetos * adem3s soportan clases de o!jetos * laherencia de atri!tos de n o!jeto padre por parte de ss hijos'6on ejemplos de este paradi#ma los len#ajes: \\% @!ject 8ascal* ava'
'7'R' Paradigma del procesamiento en paralelo. El t;rmino 8BB2E2@implica las posiciones de procesadores m<iples% mientras "e@H=EHIE s#iere "e los procesos se est3n ejectando en+orma simlt3nea' Este paradi#ma descri!e los len#ajes "esoportan el so de procesadores m<iples% la cooperación entre
Edición ,. .;
8/16/2019 POO - Apruébala YA - C# - 7
20/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
procesos * el potencial para +alla parcial% es decir% no o m3sprocesos peden +allar sin hacer peli#rar todo el pro*ecto' 6onejemplos de este paradi#ma los len#ajes: oncrrent % 8ascal 6%BDB% @BM * -20HDB'
'7'7' Paradigma de la programación lógica. 2a pro#ramación ló#ica est3
!asada en n s!conjnto del c3lclo de predicados% incl*endoinstrcciones escritas en +ormas conocidas como cl3slas deG@H% a trav;s del c3lclo de estos predicados "e proporcionana5iomas * re#las de in+erencia se peden dedcir nevos hechos apartir de hechos conocidos' =na cl3sla de G@H permite "esolo n nevo hecho sea dedcido en cal"ier instrcción simple'=n sistemas de estas cl3slas permite n m;todo particlarmentemec3nico de demostración llamado resolción' =n pro#rama!asado en ló#ica se compone de na serie de a5iomas o hechos%re#las de in+erencia * n teorema o cestión por demostrarse' 2a
salida es cierta si los hechos soportan o apo*an la cestión * es+alsa en el caso contrario'
'7'.' Paradigma funcional. 2os len#ajes pramente +ncionales operansolamente a trav;s de +nciones' =na +nción develve sólo nvalor% dada na lista de par3metros'
'7'Z' Paradigma del lenguaje de bases de datos. 2as propiedades "edistin#en a los len#ajes diseñados para tratar con !ases de datosson la persistencia * la administración de cam!ios' =n sistema deadministración de !ases de datos incl*e n 2en#aje Descriptor
de Datos (DD2) * n 2en#aje Maniplador de Datos (DM2)'
+%1% Criterios del lenguaje
2os criterios del len#aje son caracter$sticas interrelacionadas sadas paraconsiderar si n len#aje tiene m;ritos% es decir% si este es con+ia!le *e+iciente'
'.'1' Sintais: Ga!lar de sinta5is es ha!lar de la +orma del len#aje%ha!lar de la +orma del len#aje es ha!lar de na colección de
instrcciones +ormadas al se#ir n conjnto de re#las "edi+erencian los pro#ramas v3lidos de los no v3lidos' 8ero la sinta5ispor s$ misma no da si#ni+icado a n len#ajeN meramente de+ine lacolección de +rases * sentencias "e son com!inaciones v3lidas delos caracteres de n len#aje'
'.',' SemBntica: Descri!e de manera precisa lo "e si#ni+ica naconstrcción particlar' ada len#aje de pro#ramación podr$ainterpretar de manera distinta dos instrcciones escritase5actamente i#al'
'.'' #omprobabilidad : 2a pre!a de "e n pro#rama +ncionacorrectamente involcra tres pasos "e descri!en scompro!a!ilidad% estos son: la compro!ación de "e el pro#ramacmple con la intención del pro#ramador% pro!ar "e elcompilador tradce de manera correcta a códi#o de m3"ina la
sinta5is * la sem3ntica del pro#rama en el len#aje empleado% *compro!ar "e la m3"ina misma +nciona correctamente'
'.'' #onfiabilidad : El pro#rama se considera con+ia!le si se comportacomo es annciado * prodce los resltados "e el sario espera'8ara los len#ajes de pro#ramación% la con+ia!ilidad por lo #eneralse re+iere a los mecanismos "e promeven la escritra%mantenimiento * depración de pro#ramas correctos% * els!si#iente manejo de e5cepciones cando n pro#rama seejecta'
'.'O' 8raducción rBpida: 2os pro#ramas "e son escritos en n len#ajede!en tradcirse a n len#aje "e la m3"ina peda reconocer *por <imo a n códi#o de m3"ina "e peda ejectarse enrealidad% la tradcción del códi#o +ente de!e ser lo m3s r3pido *optimo posi!le'
'.'R' #ódigo fuente eficiente: E5iste n !alance comparativo entre eltra!ajo "e el pro#ramador de!e hacer * el tra!ajo "e elcompilador pede hacer' 2en#ajes de m* alto nivel donde lospro#ramas maniplan estrctras complejas tales como re#istros%
Edición ,. ()
8/16/2019 POO - Apruébala YA - C# - 7
21/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad III: istoria de la omputain
listas% relaciones o conjntos dependen de compiladores deoptimi9ación por e+iciencia (ejectan varios pasos del an3lisissem3ntico)% en contraparte los len#ajes "e ejectan la #ama delos parecidos al % donde el pro#ramador pede tra!ajar m*cerca de la 8=% pdiera a#ili9ar el proceso de compilación% sinem!ar#o el pro#ramador de!e tener nociones de la m3"ina en
cestión'
'.'7' Ortogonalidad : En n len#aje las varia!les aleatorias seconsideran orto#onales si son independientes entre s$' Es en estesentido de independencia "e las caracter$sticas de n len#aje seconsideran orto#onales' on esto "eremos decir "e loscomponentes son independientes entre s$ * "e se comportan en lamisma manera en cal"ier circnstancia'
'.'.' 8ransportabilidad : =n len#aje es transporta!le si ss pro#ramas
peden compilarse * ejectarse en di+erentes m3"inas sin tener"e rescri!ir el códi#o +ente'
Edición ,. (.
8/16/2019 POO - Apruébala YA - C# - 7
22/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I": Introduin a la #ro"ramain 2rientada a 2betos
+nidad I"
Objeti,o:
8revio repaso% lectra e investi#ación% * la indcción prestada por el+acilitador% el participante de+inir3 los diversos conceptos !3sicos *
necesarios de la pro#ramación orientada a o!jetos'
Contenido:
' 8ro#ramación @rientada a @!jetos''1' onceptos de la 8@@'
'1'1' @!jeto''1',' lase''1'' Encapslación''1'' B!stracción'
'1'O' 8olimor+ismo''1'R' Gerencia'',' De+inición de lases * @!jetos'
Acti,idades del participante:
• eali9ar lectra previa so!re el tema% tili9ando la presente #$a *otros medios !i!lio#r3+icos'
• 0nteractar en clase'• Disctir en #rpo'• eali9ar las actividades propestas en clase'
&,aluación multidireccional:
• Evalación +ormativa: a trav;s de las discsiones de los conocimientose intervenciones en clase'
• Evalación smativa: a trav;s de n e5amen pr3ctico *Fo parcial'
Programación Orientada a Objetos
0$ Programación Orientada a Objetos
2a pro#ramación orientada a o!jetos% ha tomado las mejores ideas de la
pro#ramación estrctrada (no sa!e lo "e es la pro#ramaciónestrctrada
8/16/2019 POO - Apruébala YA - C# - 7
23/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I": Introduin a la #ro"ramain 2rientada a 2betos
clase contiene toda la in+ormación necesaria para crear nevoso!jetos'
'1'' &ncapsulación: Es na t;cnica "e permite locali9ar * ocltar losdetalles de n o!jeto' 2a encapslación previene "e n o!jetosea maniplado por operaciones distintas de las de+inidas' 2a
encapslación es como na caja ne#ra "e esconde los datos *solamente permite acceder a ellos de +orma controlada'
2as principales ra9ones t;cnicas para la tili9ación de laencapslación son:
• Mantener a salvo los detalles de representación% si solamentenos interesa el comportamiento del o!jeto'
• Modi+icar * ajstar la representación a mejores solcionesal#or$tmicas o a nevas tecnolo#$as de so+tXare'
'1'' Abstracción: En el sentido m3s #eneral% na a!stracción es narepresentación concisa de na idea o de n o!jeto complicado' Enn sentido m3s especi+ico% la a!stracción locali9a * oclta losdetalles de n modelo o diseño para #enerar * maniplar o!jetos'
'1'O' Polimorismo: 6i#ni+ica "e n nom!re se pede tili9ar paraespeci+icar na clase #en;rica de acciones% es decir% podemosañadir +nciones distintas a n solo nom!re (+nción *Fo m;todo) operador'
'1'R' =erencia: 2a herencia es n proceso mediante el cal n o!jeto(hijo) pede ad"irir las propiedades de otro o!jeto (padre)'
omo resmen de los conceptos e5pestos anteriormente% podemos decirdos cosas' B sa!er:
1) 2os o!jetos son encapslaciones de a!stracciones en la 8@@',) 2a nidad de encapslación en la 8@@ es el o!jeto'
Bhora% la #ran pre#nta: C#ómo diferenciar una clase de un objetoD... =na
clase es n tipo * n o!jeto es na instancia de ese tipo' Bdem3s% la clasees n concepto est3tico% es decir% na clase es n elemento reconoci!le enel te5to del pro#rama'
=n o!jeto es n concepto pramente din3mico% el cal pertenece% no alte5to del pro#rama% sino a la memoria de la comptadora% donde los
o!jetos ocpan n espacio en tiempo de ejección na ve9 "e ha*a sidocreado'
-%&% 6einición de Clases Objetos
8ara crear n o!jeto% es preciso de+inir primero s +orma #eneral% es decir%de!emos de+inir la clase a la cal pertenece el o!jeto a crear% para ellotili9amos la pala!ra reservada class'
6einición de la clase: na clase es n tipo de+inido por el sario "e
determina la estrctra de los datos * las operaciones asociadas a estetipo'
2as clases son como plantillas o modelos "e descri!en como se constr*enciertos tipos de o!jetos' ada ve9 "e se constr*e n o!jeto de na clasese crea na instancia de esa clase% por consi#iente los o!jetos soninstancias de clases'
2a +orma #eneral de la declaración de na clase es:
class
8/16/2019 POO - Apruébala YA - C# - 7
24/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I": Introduin a la #ro"ramain 2rientada a 2betos
cal"ier tipo% incl*endo otras clases'
?iembros de la clase pri(ateE
2os miem!ros de la clase private tienen el m3s estricto control deacceso' 6ólo la clase misma pede tener acceso a n miem!ro private' En
este ejemplo nadie pede sar la clase *a "e todo es private'
class Pr*,!d! % private *n& ,!r1 private ,o*d Fn"*on1() private ,o*d Fn"*on()/
#&!&*" ,o*d m!*n() % 22 Se "re! ob3e&o1 de "!#e Pr*,!d!4 Pr*,!d! ob3e&o1 = new Pr*,!d!()
ob3e&o14,!r1 = 5 22 !""e#o no ,!*do +or #er +r*,!&e4 ob3e&o14Fn"*on1() 22 !""e#o no ,!*do +or #er +r*,!&e4
ob3e&o14Fn"*on() 22 !""e#o no ,!*do +or #er +r*,!&e4/
8ara poder tener acceso necesitar$a "e las +nciones miem!ro +erandeclaradas en la sección public'
?iembros de la clase publiE
8ara tili9ar los datos * +nciones miem!ro de na clase en otra "e noten#a relación al#na% se de!en declarar las +nciones * datos en lasección public'
class Pb*"! % public *n& ,!r1 public ,o*d Fn"*on1() public ,o*d Fn"*on()/
#&!&*" ,o*d m!*n() % Pb*"! ob3e&o1 = new Pb*"!() 22 Se "re! ob3e&o16 "!#e Pb*"!4
ob3e&o14,!r1 = 5 22 !""e#o ,7*do4 ob3e&o14Fn"*on1() 22 !""e#o ,7*do4 ob3e&o14Fn"*on() 22 !""e#o ,7*do4/
al"ier miem!ro "e se declare en la sección public% hace posi!le elacceso ilimitado de dicho miem!ro desde cal"ier clase *Fo m;todo +erade la clase "e la declare'
?iembros de la clase proteted E
ando se de+ine na clase "e se tili9a s!si#ientemente como clase de!ase para otras clases (clase padre)% se pede hacer "e los miem!rosest;n accesi!les solo para +nciones de las clases derivadas mediante elso de la pala!ra clave protected '
onsidere las clases si#ientes% se#&n s jerar"$a:
class An*m!e# % protected *n& N+!&!# protected *n& No3o# protected ,o*d de#+!8!r#e()/
class Perro6 An*m!e# % protected #&r*n. r!8! protected ,o*d A#*.n!r_P!&!#() % 22 !""e#o ! "!m+o N+!&!# de An*m!e# ,7*do +or #er protected 4 &9*#4N+!&!# = : //
#&!&*" ,o*d m!*n() % Perro P1 = new Perro() 22 Se "re! P1 de "!#e Perro4 P14r!8! = ;P!#∨ 22 !""e#o no ,7*do +ore ! n"*>n
22 m!*n() no &*ene re!"*>n "on !22 "!#e Perro4
/
2os campos prote#idos sólo peden ser accedidos por las +ncionesmiem!ros de esa clase * las +nciones miem!ro de las clases derivadas(clases hijas)'
#onstructores de una claseE
=n constrctor es na +nción especial "e es miem!ro de esa clase * "etiene el mismo nom!re de la clase' Es m* +recente "e na cierta partede n o!jeto necesite na iniciación antes de "e peda ser tili9adaN
Edición ,. (0
8/16/2019 POO - Apruébala YA - C# - 7
25/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad I": Introduin a la #ro"ramain 2rientada a 2betos
como el re"isito de iniciación es tan +recente% A permite "e loso!jetos se den a s$ mismos valores iniciales cando se crean' Estainiciación atom3ticamente se lleva a ca!o mediante el so de na +nciónde constrcción o constrctor'
8or ejemplo% si tenemos na clase "e simle el tan"e de #asolina de n
carro el constrctor de!er$a ser al#o como el códi#o "e se mestra acontinación' En dicho códi#o se coloca el modi+icador this para hacermención a n miem!ro (!ien sea campo o +nción)% de la clase actal'omo se podr3 o!servar% al principio de la creación del o!jeto (en elconstrctor)% sponemos "e el tan"e del carro est3 completamentelleno'
class T!ne % protected *n& T*+o?!#o*n! protected *n& C!n&*d!d?!#o*n! protected ,o*d T!ne(*n& T*+o?!#) % this4T*+o?!#o*n! = T*+o?!#
this4C!n&?!#o*n! = 100 22 100 e# ! m7@*m! "!n&*d!d //
2a +nción de constrcción de n o!jeto se invoca cando se crea elo!jeto' Esto si#ni+ica "e se invoca cando se ejecta la declaración delo!jeto' omo lo dice el nom!re% n constrctor es na +nción "e setili9a para constrir n o!jeto de na clase dadaN esto pede implicar lapresencia de di+erentes escenarios'
1) reación de o!jetos con iniciación de+inida'
,) reación de o!jetos con iniciación especi+ica') reación de o!jetos copiando otro o!jeto'
ada no de estos procesos implica n tipo di+erente de constrctor' =nconstrctor tiene el nom!re de la clase a la "e pertenece'
Festructores de una claseE
2os destrctores entran en la misma cate#or$a "e los constrctores' 6etili9an para reali9ar ciertas operaciones "e son necesarias cando *a no
se tili9a n o!jeto como es la li!eración de memoria'
E5isten al#nas di+erencias importantes entre los constrctores * losdestrctores:
1) 2os destrctores peden ser virtales% los constrctores H@'
,) B los destrctores no se les pede mandar ar#mentos') 6ólo se pede declarar n destrctor para na clase dada'
El destrctor se nom!ra como la clase (o sea% con el mismo nom!re)% peroeste va precedido de na tilde (_)'
class T!ne% protected *n& T*+o?!#o*n! protected *n& C!n&*d!d?!#o*n!
protected ,o*d T!ne()
% this4C!n&?!#o*n! = 0 //
El destrctor se tili9a% #eneralmente% para desechar cal"ier espacio dememoria asi#nado al o!jeto'
Edición ,. (5
8/16/2019 POO - Apruébala YA - C# - 7
26/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
+nidad "
Objeti,o:
8revio repaso de la nidad 0 * la lectra e investi#ación% anado con laindcción prestada por el +acilitador% el participante emplear3 s
conocimiento para reali9ar pro#ramas de comptación !3sicos% en los "eresolver3 pro!lemas variados'
Contenido:
O' Bspectos 2;5icos'O'1' omentarios'O',' 2iterales'O'' @peradores'O'' aria!les * tipos de datos'
O'O' 0nstrcciones'O'O'1' 0nstrcciones !3sicas'O'O',' 0nstrcciones condicionales'O'O'' 0nstrcciones iterativas'O'O'' 0nstrcciones de salto'
Acti,idades del participante:
• eali9ar lectra previa so!re el tema% tili9ando la presente #$a *otros medios !i!lio#r3+icos'
• 0nteractar en clase'• Disctir en #rpo'• eali9ar las actividades propestas en clase'
&,aluación multidireccional:
• Evalación +ormativa: a trav;s de las discsiones de los conocimientose intervenciones en clase'
• Evalación smativa: a trav;s de n e5amen pr3ctico *Fo parcial'
6atos imples &structuras de Control
5$ Aspectos -é2icos
=na ve9 ad"irida la ló#ica de pro#ramación% es necesario conocer n
so+tXare de desarrollo (len#aje de pro#ramación)% el cal tili9aremospara transcri!ir de +orma sistem3tica el so+tXare "e se desea crear' 8araello de!emos sa!er cómo +nciona el len#aje a tili9ar% es decir% conocerss aspectos l;5icos% como declarar ss instrcciones% asi#naciones% ciclos%+nciones% etc'
omo *a se dijo en al#&n momento% el o!jetivo de esta #$a est3 orientadaa la enseñan9a de los conceptos de la 8@@% * para esto nos apo*aremos enn len#aje de pro#ramación denominado A% propio del pa"ete depro#ramación Microso+t isal 6tdio 'HEI'
.%$% Comentarios
=n comentario es te5to "e se incl*e en el códi#o +ente para +acilitar slectra a los pro#ramadores * c*o contenido es% por de+ecto%completamente i#norado por el compilador' 6elen sarse para inclirin+ormación so!re el ator del códi#o% para aclarar el si#ni+icado o elpor"; de determinadas secciones de códi#o% para descri!ir el+ncionamiento de los m;todos de las clases% etc'
En A ha* dos +ormas de escri!ir comentarios' 2a primera consiste en
encerrar todo el te5to "e se desee comentar entre caracteres /* * */si#iendo la si#iente sinta5is:
/*
8/16/2019 POO - Apruébala YA - C# - 7
27/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
Bhora !ien% ha* "e tener cidado con el hecho de "e no es posi!leanidar comentarios de este tipo' Es decir% no vale escri!ir comentarioscomo el si#iente:
2B Comen&!r*o "on&enedor 2B Comen&!r*o "on&en*do B2 B2
Esto se de!e a "e como el compilador i#nora todo el te5to contenido enn comentario * sólo !sca la secencia */ "e marca s +inal% i#norar3 else#ndo /* * cando lle#e al primer */ considerar3 "e ha aca!ado elcomentario a!ierto con el primer /* (no el a!ierto con el se#ndo) *pasar3 a !scar códi#o' omo el */ sólo lo admite si ha detectado antesal#&n comentario a!ierto * a&n no cerrado (no mientras !sca códi#o)%cando lle#e al se#ndo */ considerar3 "e ha ha!ido n error *a "eencontrar3 el */ donde espera!a encontrar códi#o'
Dado "e mchas veces los comentarios "e se escri!en son m* cortos *
no selen ocpar m3s de na l$nea% A o+rece na sinta5is alternativa m3scompacta para la escritra este tipo de comentarios en las "e seconsidera como indicador del comien9o del comentario la pareja decaracteres // * como indicador de s +inal el +in de l$nea' 8or tanto% lasinta5is "e si#en estos comentarios es:
22 mo e#"r*b*r "omen&!r*o# !bre,*!do# de n! ne!
Estos comentarios de na sola l$nea s$ "e peden anidarse sin nin#&npro!lema' 8or ejemplo% el si#iente comentario es per+ectamente v3lido:
22 Comen&!r*o "on&enedor 22 Comen&!r*o "on&en*do
.%&% -iterales
=n literal es la representación e5pl$cita de los valores "e peden tomarlos tipos !3sicos del len#aje' B continación se e5plica c3l es la sinta5is
con "e se escri!en los literales en A des#los3ndolos se#&n el tipo devalores "e representan:
•Literales enteros: =n n&mero entero se pede representar en A tantoen +ormato decimal como he5adecimal' En el primer caso !astaescri!ir los d$#itos decimales (-Z) del n&mero nos tras otros%
mientras "e en el se#ndo ha* "e preceder los d$#itoshe5adecimales (-Z% a-+% B-/) con el pre+ijo )2' En am!os casos esposi!le preceder el n&mero de los operadores > ó ? para indicar si espositivo o ne#ativo% an"e si no se pone nada se considerar3 "e espositivo' Ejemplos de literales enteros son % O% \1O% -,% 51B% -51a%etc'
•Literales de cadena: =na cadena no es m3s "e na secencia decaracteres encerrados entre comillas do!les' 8or ejemplo ;Ho!mndo;% ;"!m*>n;% etc' El te5to contenido dentro estos literalespede estar +ormado por cal"ier n&mero de literales de car3cter
concatenados * sin las comillas simples% an"e si incl*e comillasdo!les ;stas han de escri!irse sando secencias de escape por"e sino el compilador las interpretar$a como el +inal de la cadena'
•Literal nulo: El literal nulo es n valor especial "e se representa en A con la pala!ra reservada null * se sa como valor de las varia!les deo!jeto no iniciali9adas para as$ indicar "e contienen re+erenciasnlas'
.%+% Operadores
=n operador es n s$m!olo +ormado por no o m3s caracteres% "e permitereali9ar na determinada operación entre no o m3s datos * prodce nresltado% "e !ien podremos% por ejemplo% asi#n3rselo a al#na varia!ledeclarada previamente'
B continación se descri!en c3les son los operadores inclidos en ellen#aje% clasi+icados se#&n el tipo de operaciones "e permiten reali9ar%an"e ha* "e tener en centa "e A permite la rede+inición delsi#ni+icado de la ma*or$a de los operadores% se#&n el tipo de dato so!re el
Edición ,. (8
8/16/2019 POO - Apruébala YA - C# - 7
28/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
"e se apli"en% por lo "e lo "e a"$ se centa se corresponde con lossos m3s comnes de los mismos:
• Operaciones aritm@ticas: 2os operadores aritm;ticos son los t$picos desma (+)% resta (-)% prodcto (*)% división (/) * módlo (%)'
• Operaciones lógicas: 6e incl*en operadores "e permiten reali9ar lasoperaciones ló#icas t$picas: !nd (&& * &)% or (|| * |)% no& (!)'
2os operadores && * || se di+erencian de & * | en "e los primeros reali9anevalación pere9osa * los se#ndos no' 2a evalación pere9osa consiste en"e si el resltado de evalar el primer operando permite dedcir elresltado de la operación% entonces no se eval&a el se#ndo * se develvedicho resltado directamente% mientras "e la evalación no pere9osaconsiste en evalar siempre am!os operandos' Es decir% si el primeroperando de na operación && es +also se develve false directamente%sin evalar el se#ndoN * si el primer operando de na || es cierto sedevelve true directamente% sin evalar el otro'
• Operaciones relacionales: 6e han inclido los tradicionales operadores de
i#aldad (==)% desi#aldad (!=)% ma*or "e (> )% menor "e ( n "om+e#&!&em+er!&r! = 1 22 U#!ndo !#*.n!"*>n "om+e#&!&em+er!&r! 22 U#!ndo *n"remen&o
6i el operador ++ se coloca tras el nom!re de la varia!le (como en elejemplo anterior)% develve el valor de la varia!le antes de
incrementarla% mientras "e si se coloca delante% develve el valor de;sta después de incrementarlaN * lo mismo ocrre con el operador --' 8orejemplo:
" = b 22 Se !#*.n! ! " e ,!or de b ' e.o #e *n"remen&! b" = b 22 Se *n"remen&! e ,!or de b ' e.o #e !#*.n! ! "
2a ventaja de sar los operadores ++ * -- es "e en mchas m3"inas sonm3s e+icientes "e el resto de +ormas de reali9ar smas o restas de nanidad% pes el compilador pede tradcirlos en na &nica instrcción encódi#o m3"ina'
• Operaciones con cadenas: 8ara reali9ar operaciones de concatenación decadenas se pede sar el mismo operador "e para reali9ar smas% *a"e en A se ha rede+inido s si#ni+icado para "e cando se apli"eentre operandos "e sean cadenas o "e sean na cadena * n car3cterlo "e ha#a sea concatenarlos' 8or ejemplo% ;Ho!; ; mndo;develve ;Ho! mndo;% * ;Ho! mnd; o tam!i;n'
• Operaciones de acceso a arreglos: =n arreglo es n conjnto ordenadode o!jetos de tamaño +ijo' 8ara acceder a cal"ier elemento de este
Edición ,. (9
8/16/2019 POO - Apruébala YA - C# - 7
29/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
conjnto se aplica el operador post+ijo @ so!re el arre#lo para indicarentre corchetes la posición "e ocpa el o!jeto al "e se desea accederdentro del conjnto' Es decir% este operador se sa as$:
[
8/16/2019 POO - Apruébala YA - C# - 7
30/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
%ota: 8ara poder convertir na cadena en n&mero es necesario colocarla +nción In&54P!r#e(n;)*n& @ = 5
2a especi+icación de n valor inicial tam!i;n com!inarse con la de+iniciónde m<iples varia!les separadas por comas en na misma l$nea' 8orejemplo% las si#ientes de+iniciones son v3lidas:
Per#on! +1 = neL Per#on!(;Jo#K; Q:5Q)
Edición ,. *)
8/16/2019 POO - Apruébala YA - C# - 7
31/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
+ = neL Per#on!(;J!n; 1 Q:1)*n& @ = 5 ' =
? son tratadas por el compilador de +orma completamente e"ivalentes aha!erlas declarado como:
Per#on! +1 = neL Per#on!(;Jo#K; Q:5Q)
Per#on! + = neL Per#on!(;J!n; 1 Q:1)*n& @ = 5*n& ' =
2os tipos de datos !3sicos son ciertos tipos de datos tan com&nmentetili9ados en la escritra de aplicaciones "e en A se ha inclido nasinta5is especial para tratarlos' 8or ejemplo% para representar n&merosenteros de , !its con si#no se tili9a el tipo de dato '(ste)nt,de+inido en la P2 (li!rer$a propia del len#aje A)% an"e a la hora decrear n o!jeto a de este tipo "e represente el valor , se sa la si#ientesinta5is:
S'#&em4In&5 ! =
omo se ve% no se tili9a el operador new para crear o!jeto'(ste)nt,% sino "e directamente se indica el literal "e representa elvalor a crear% con lo "e la sinta5is necesaria para crear entero de estetipo se redce considera!lemente' Es m3s% dado lo +recente "e es el sode este tipo tam!i;n se ha prede+inido en A el alias int para el mismo%por lo "e la de+inición de varia!le anterior "eda as$ de compacta:
*n& ! =
%ota: El valor "e por de+ecto se da a los campos de tipos !3sicosconsiste en poner a cero toda el 3rea de memoria "e ocpen'Esto se tradce en "e los campos de tipos !3sicos nm;ricos seiniciali9an por de+ecto con el valor % los de tipo bool lo hacen conalse% los de tipo cBar con b[% * los de tipo string * objectcon null'
'(ste)nt, no es el &nico tipo de dato !3sico inclido en A' En el
espacio de nom!res '(ste) se han inclido todos los "e a continación semestran en la si#iente ta!la'
'ipo 6escripción
8/16/2019 POO - Apruébala YA - C# - 7
32/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
instrcciones es:
8/16/2019 POO - Apruébala YA - C# - 7
33/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
.
El si#ni+icado de esta instrcción es el si#iente: se eval&a la e5presiónfcondicióng% "e ha de devolver n valor ló#ico' 6i es cierta (develvetrue) se ejectan las finstrcciones0+g% * si es +alsa (alse) se ejectanlas finstrccionesElseg' 2a rama else es opcional% * si se omite * lacondición es +alsa se se#ir$a ejectando a partir de la instrcción
si#iente al i ' En realidad% tanto finstrcciones0+g comofinstrccionesElseg peden ser na &nica instrcción o n !lo"e deinstrcciones'
=n ejemplo de aplicación de esta instrcción es esta variante delGolaMndo:
#*n. S'#&em
"!## Ho!MndoI % +b*" #&!&*" ,o*d M!*n(S&r*n.G !r.#) % * (!r.#4en.&9 $ 0) %
Con#oe4r*&e*ne(;Ho! %0/; !r.#G0)/ e#e % Con#oe4r*&e*ne(;Ho! mndo;)/
//
6i ejectamos este pro#rama sin nin#&n ar#mento veremos "e elmensaje "e se mestra es Ho! Mndo% mientras "e si loejectamos con al#&n ar#mento se mostrar3 n mensaje de!ienvenida personali9ado con el primer ar#mento indicado'
• 1nstrucción swit4: 2a instrcción sDitcB permite ejectar nos otros !lo"es de instrcciones se#&n el valor de na cierta e5presión'6 estrctra es:
switch "n$# case
8/16/2019 POO - Apruébala YA - C# - 7
34/79
8/16/2019 POO - Apruébala YA - C# - 7
35/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
• continueF: 0ndica "e se ha de a!ortar la ejección de lasfinstrccionesg * reevalarse la fcondicióng del !cle% volvi;ndosea ejectar las finstrccionesg si es cierta o pas3ndose a ejectar lainstrcción si#iente al DBile si es +alsa'
• 1nstrucción do…w4ile: 2a instrcción do$$$DBile es na variante
del DBile "e se sa as$:
do
8/16/2019 POO - Apruébala YA - C# - 7
36/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
omo en el resto de instrcciones hasta ahora vistas% enfinstrccionesg pede ser tanto na &nica instrcción como n !lo"ede instrcciones' Bdem3s% las varia!les "e se de+inan enfiniciali9acióng ser3n visi!les sólo dentro de esas finstrccionesg'
2a si#iente clase es e"ivalente a la clase GolaMndoYhile *a vistasolo "e hace so del or para compactar m3s s códi#o:
#*n. S'#&em
"!## Ho!MndoFor % +b*" #&!&*" ,o*d M!*n(S&r*n.G !r.#) % * (!r.#4en.&9 $ 0) or (*n& !"&! = 0 !"&! < !r.#4en.&9 !"&!) Con#oe4r*&e*ne(;Ho! %0/; !r.#G!"&!) e#e Con#oe4r*&e*ne(;Ho! mndo;) //
Bl i#al "e con DBile% dentro de las finstrccionesg del or tam!i;npeden inclirse instrcciones continueF * breaEF "e pedan alterarel +ncionamiento normal del !cle'
O'O'' Instrucciones de salto
2as instrcciones de salto permiten variar el orden normal en "e seejectan las instrcciones de n pro#rama% "e consiste en ejectarlas natras otra en el mismo orden en "e se h!iesen escrito en el códi#o
+ente' 8osteriormente se descri!ir3n c3les son las instrcciones de saltoinclidas en A:
• 1nstrucción brea5: ?a se ha visto "e la instrcción breaE sólopede inclirse dentro de !lo"es de instrcciones asociados ainstrcciones iterativas o instrcciones sDitcB e indica "e se deseaa!ortar la ejección de las mismas * se#ir ejectando a partir de lainstrcción si#iente a ellas' 6e sa as$:
brea0
• 1nstrucción ontinue: ?a se ha visto "e la instrcción continuesólo pede sarse dentro del !lo"e de instrcciones de na instrccióniterativa e indica "e se desea pasar a reevalar directamente lacondición de la misma sin ejectar el resto de instrcciones "econtviese' 2a evalación de la condición se har$a de la +orma ha!ital:
si es cierta se repite el !cle * si es +alsa se contin&a ejectando por lainstrcción "e le si#e' 6 sinta5is de so es as$ de sencilla:
continue
• 1nstrucción return: Esta instrcción se sa para indicar c3l es elo!jeto "e ha de devolver n m;todo' 6 sinta5is es la si#iente:
return
8/16/2019 POO - Apruébala YA - C# - 7
37/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad ": 3atos simples y estruturas de ontrol
omo en la ma*or$a de los len#ajes% el so de ;sta instrcción no serecomienda por"e di+iclta innecesariamente la le#i!ilidad del códi#o* sele ser +3cil simlarla sando instrcciones iterativas * selectivascon las condiciones apropiadas' 6in em!ar#o% en A se incl*e por"epede ser e+iciente sarla si se anidan mchas instrcciones * para
redcir ss e+ectos ne#ativos se le han impesto nas restricciones:
• 6ólo se peden eti"etar instrcciones% * no directivaspreprocesador% directivas using o de+iniciones de miem!ros% tipos oespacios de nom!res'
• 2a eti"eta indicada no peda pertenecer a n !lo"e deinstrcciones anidado dentro del !lo"e desde el "e se sa el gotoni "e eti"ete a instrcciones de otro m;todo di+erente a a";l enel cal se encentra el goto "e la re+erencia'
8ara eti"etar na instrcción de modo "e peda ser destino de nsalto con goto !asta precederla del nom!re con el "e se la "ieraeti"etar se#ido de dos pntos (:)'
8or ejemplo% el si#iente códi#o demestra cómo sar goto * de+inirna eti"eta' Este pro#rama de ejemplo lo "e hace es mostrar porpantalla todos los ar#mentos "e se le pasen como par3metros%an"e si al#no de +ese salir entonces se dejar$a de mostrarar#mentos * se a!orta la ejección de la aplicación' ;ase adem3s"e este ejemplo pone de mani+iesto na de las tilidades de lainstrcción nla% *a "e si no se h!iese escrito tras la eti"eta +in el
pro#rama no compilar$a en tanto "e toda eti"eta ha de preceder aal#na instrcción (an"e sea la instrcción nla)'
#*n. S'#&em
"!## Ho!Mndo?o&o % +b*" #&!&*" ,o*d M!*n(#&r*n.G !r.#) % or (*n& *=0 *
*n6 //
Hótese "e% al +in * al ca!o% los sos de goto dentro de instrccionessDitcB "e se vieron al estdiar dicha instrcción% no son m3s "evariantes del so #eneral de goto% *a "e deault: no es m3s "e naeti"eta * case fvalorg: pede verse como na eti"eta n tanto
especial c*o nom!re es case se#ido de espacios en !lanco * n valor'En am!os casos% la eti"eta indicada ha de pertenecer al mismo sDitcB"e el goto sado * no vale "e ;ste no la conten#a pero la conten#aal#&n sDitcB "e conten#a al sDitcB del goto'
Edición ,. *8
8/16/2019 POO - Apruébala YA - C# - 7
38/79
8/16/2019 POO - Apruébala YA - C# - 7
39/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad "I: 3atos ompuestos6 arre"los 7tablas8 y adenas
on esta <ima sinta5is es posi!le cam!iar din3micamente el n&mero deelementos de na varia!le de tipo arre#lo sin m3s "e irle asi#nandonevos arre#los' Ello no si#ni+ica "e n arre#lo se peda redimensionarconservando los elementos "e tviese antes del cam!io de tamaño% sino"e ocrre todo lo contrario: cando a na varia!le de tipo arre#lo se leasi#na n arre#lo de otro tamaño% ss elementos anti#os son sobrescritos
por los nevos'
6i se crea na arre#lo con la sinta5is hasta ahora e5plicada todos sselementos tendr$an el valor por de+ecto de s tipo de dato' 6i "eremosdarles otros valores al declarar el arre#lo% hemos de indicarlos entre llavessando esta sinta5is:
ftipoDatosg@ fnom!reBrre#log T neD ftipoDatosg@ HfvaloresgF
Gan de especi+icarse tantos fvaloresg como n&mero de elementos se desee
"e ten#a el arre#lo% * si son m3s de no se han de separar entre s$mediante comas (G) Hótese "e ahora no es necesario indicar el n&mero deelementos de el arre#lo (an"e pede hacerse si se desea)% pes elcompilador pede dedcirlo del n&mero de valores especi+icados' 8orejemplo% para declarar n arre#lo de catro elementos de tipo int convalores O% 1% % se podr$a hacer lo si#iente:
*n&G !rre.o = neL *n&G % 1 : 0/
0nclso se pede compactar a&n m3s la sinta5is declarando el arre#lo as$:
*n&G !rre.o = % 1 : 0/
B la hora de acceder a los elementos almacenados en n arre#lo !astaindicar entre corchetes% * a continación de la re+erencia a la misma% laposición "e ocpe en el arre#lo el elemento al "e acceder' ando seha#a ha* "e tener en centa "e en A las arre#los se inde5an desde % lo"e si#ni+ica "e el primer elemento de el arre#lo ocpar3 s posición %el se#ndo ocpar3 la posición 1% * as$ scesivamente para el resto deelementos' 8or ejemplo% an"e es m3s ine+iciente% el arre#lo declarado
en el <imo +ra#mento de códi#o de ejemplo tam!i;n podr$a ha!ersede+inido as$:
*n&G !rre.o = neL *n&G:
!rre.oG0 = !rre.oG1 22 Por dee"&o #e *n*"*!*8> ! 0 e.o !9or! 22 e ,!or de !rre.oG1 +!#! ! #er 1!rre.oG = !rre.oG0 X !rre.oG1 22 !rre.oG +!#! ! ,!er : 22 +e# : = 1
22 E "on&en*do de !rre.o #er7 % 1 : 0/ +e# !rre.oG522 #e *n*"*!*8> +or dee"&o ! 04
Ga* "e tener cidado a la hora de acceder a los elementos de na arre#lo*a "e si se especi+ica na posición sperior al n&mero de elementos "epeda almacenar el arre#lo se prodcir3 na e5cepción o error de tipostem$OutO
8/16/2019 POO - Apruébala YA - C# - 7
40/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad "I: 3atos ompuestos6 arre"los 7tablas8 y adenas
*n&GG den&!do = neL *n&GG%neL *n&G %1 / neL *n&G %5 : //
omo se indica e5pl$citamente c3les son los elementos del arre#lodeclarado no hace +alta indicar el tamaño del mismo% por lo "e ladeclaración anterior es e"ivalente a:
*n&GG den&!do = neL *n&GG %neL *n&G %1 / neL *n&G %5 : //
Es m3s% i#al "e como se vio con los arre#los nidimensionales tam!i;n esv3lido hacer:
*n&GG den&!do = %neL *n&G %1 / neL *n&G %5 : //
6i no "isi;semos indicar c3les son los elementos de los arre#loscomponentes% entonces tendr$amos "e indicar al menos c3l es el n&merode elementos "e podr3n almacenar (se iniciali9ar3n con valores porde+ecto) "edando:
*n&GG den&!do = %neL *n&G neL *n&G5/
6i no "eremos crear los arre#los componentes en el momento de crear elarre#lo dentado% entonces tendremos "e indicar por lo menos c3l es eln&mero de arre#los componentes posi!les (cada na valdr$a null)% con lo"e "edar$a:
*n&GG den&!do = neL *n&GG
Es importante señalar "e no es posi!le especi+icar todas las dimensionesde n arre#lo dentado en s de+inición si no se indica e5pl$citamente elvalor inicial de ;stas entre llaves' &s decirG esta declaración esincorrecta:
*n&GG den&!do = neL *n&GG
Esto se de!e a "e el tamaño de cada arre#lo componente pede serdistinto * con la sinta5is anterior no se pede decir c3l es el tamaño decada na' =na opción h!iese sido considerar "e es O para todas como se
hace en ava% pero ello no se ha implementado en A * ha!r$a "edeclarar el arre#lo de% por ejemplo% esta manera:
*n&GG den&!do = %neL *n&G neL *n&G)
/inalmente% si sólo "eremos declarar na varia!le de tipo arre#lo dentado
pero no "eremos indicar s n&mero de elementos% (le#o la varia!levaldr$a null)% entonces !asta poner:
*n&GG den&!do
Ga* "e precisar "e an"e en los ejemplos hasta ahora presentes se hanescrito ejemplos !asados en arre#los dentados de sólo dos niveles deanidación% tam!i;n es posi!le crear arre#los dentados de cal"ier n&merode niveles de anidación' 8or ejemplo% para na arre#lo de arre#los dearre#los de enteros de , elementos en la "e el primero +ese na arre#lodentado +ormada por dos arre#los de O enteros * el se#ndo elemento+ese na arre#lo dentado +ormada por na arre#lo de enteros * otra de se podr$a de+inir as$:
*n&GGG den&!do = neL *n&GGG %neL *n&GG %neL *n&G neL *n&G/neL *n&GG %neL *n&G: neL *n&G5//
B la hora de acceder a los elementos de na arre#lo dentado lo &nico "eha* "e hacer es indicar entre corchetes c3l es el elemento e5acto de lasarre#los componentes al "e se desea acceder% indic3ndose n elementode cada nivel de anidación entre nos corchetes di+erentes perocoloc3ndose todas las parejas de corchetes jntas * ordenadas de elarre#lo m3s e5terna a la m3s interna' 8or ejemplo% para asi#nar el valor 1al elemento carto del arre#lo "e es elemento primero del arre#lo "e eselemento se#ndo del arre#lo dentado declarada en <imo l#ar se har$a:
den&!doG1G0G5 = 10
/%+% Arreglos multidimensionales
=n arreglo multidimensional o matri/ es a"ella c*os elementos se
Edición ,. 0)
8/16/2019 POO - Apruébala YA - C# - 7
41/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad "I: 3atos ompuestos6 arre"los 7tablas8 y adenas
encentran or#ani9ados en na estrctra de varias dimensiones' 8arade+inirlas se tili9a na sinta5is similar a la sada para declarar arre#losnidimensionales pero separando las di+erentes dimensiones mediantecomas (G) 8or ejemplo% na arre#lo mltidimensional de elementos de tipoint "e conste de 1, elementos pede tener ss elementos distri!idos endos dimensiones +ormando na estrctra 5 similar a na matri9 de la
+orma:
1 5 : Q Y 10 11 1
Este arre#lo se podr$a declarar as$:
*n&G m&*d*m = neL *n&G5: %%15:/ %Q/ %Y10111//
En realidad no es necesario indicar el n&mero de elementos de cadadimensión del arre#lo *a "e peden dedcirse de los valorese5pl$citamente indicados entre llaves% por lo "e la de+inición anterior essimilar a esta:
*n&G m&*d*m = neL *n&G %%15:/ %Q/ %Y10111//
0nclso pede redcirse a&n m3s la sinta5is necesaria "edando tan sólo:
*n&G m&*d*m = %%15:/ %Q/ %Y10111//
6i no "eremos indicar e5pl$citamente los elementos del arre#lo aldeclararla% podemos o!viarlos pero a&n as$ indicar el tamaño de cadadimensión del arre#lo (a los elementos se les dar$a el valor por de+ecto des tipo de dato) as$:
*n&G !rre.oM&*d*men#*on! = neL *n&G5 :
Iam!i;n podemos no especi+icar ni si"iera el n&mero de elementos delarre#lo de esta +orma (arre#loMltidimensional contendr$a ahora null):
*n&G !rre.oM&*d*men#*on!
Hótese "e tanto las arre#los dentados como las arre#losmltidimensionales peden ser tili9adas tanto para representarestrctras matriciales como para% en #eneral% representar cal"ierestrctra de varias dimensiones'
omo los arre#los dentados son arre#los de arre#los% cada no de sselementos pede ser n arre#lo de n tamaño di+erente' Bs$% con lasarre#los dentados podemos representar matrices en las "e cada colmnaten#a n tamaño distinto (por el aspecto >aserrado> de este tipo dematrices es por lo "e se les llama arre#los dentados)% mientras "esando arre#los mltidimensionales sólo es posi!le crear matricesrectan#lares o cadradas'
2as estrctras aserradas peden simlarse sando matrices
mltidimensionales con todas ss colmnas del tamaño de la colmna m3s#rande necesaria% an"e ello implica desperdiciar mcha memoria so!retodo si los tamaños de cada colmna son m* di+erentes * el arre#lo es#rande' De todos modos% las estrctras m3s comnes "e se san en lama*or$a de aplicaciones selen ser rectan#lares o cadradas'
2os tiempos "e se tardan en crear * destrir arre#los dentados sonsperiores a los "e se tardan en crear * destrir arre#losmltidimensionales' Esto se de!e a "e las primeras son arre#los dearre#los mientras "e las se#ndas son n &nico arre#lo'
8or ejemplo% para crear na arre#lo dentado 11 ha* "e crear 11arre#los (el arre#lo dentado m3s las 1 arre#los "e contiene)% mientras"e para crear na crear na arre#lo !idimensional 1% 1 ha* "ecrear na &nica arre#lo'
/%-% -a clase stem$Arra
En realidad% todos los arre#los "e de+inamos% sea cal sea el tipo deelementos "e conten#an% son o!jetos "e derivan de stem$Arra' Es
Edición ,. 0.
8/16/2019 POO - Apruébala YA - C# - 7
42/79
Programación Orientada a Objetos en C#… Apruébala YA!!! +nidad "I: 3atos ompuestos6 arre"los 7tablas8 y adenas
decir% van a disponer de todos los miem!ros "e se han de+inido para estaclase% entre los "e son destaca!les:
R''1' -engtB: ampo de sólo lectra "e in+orma del n&mero total