Programacion I
Programacion I
1.1 OBJETIVO DEL MODULO Conocer, comprender y aplicar todos los aspectos bsicos relacionados con los fundamentos de la programacin, aplicados a ejercicios sencillos de la vida real a travs de soluciones funcionales que permitan resolver o mejorar una problemtica. 1.2 TIPOS DE DATOS 1.2.1 DATOS Y TIPOS DE DATOS Un dato es la expresin general que describe los objetos con los cuales opera una computadora. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple caracter, tal como a! o un valor numrico tal como "#. $l tipo de dato determina la naturale%a del conjunto de valores que puede tomar un objeto. &e acuerdo a lo anterior, los datos que puede procesar una computadora se clasifican en simples y compuestos. 'a principal caracter(sticas de los tipos de datos simples es que ocupan solo una casilla de memoria. )or otra parte, los tipos de datos compuestos se caracteri%an por el *ec*o de que utili%an un conjunto de casillas de memoria. 'os tipos de datos compuestos se estudiaran en el +odulo ,,,, por lo que nos enfocaremos de momento en los tipos de datos simples, los cuales se clasifican en tres tiposa. .umricos b. /lfanumricos c. 'gicos $l tipo de dato numrico es el conjunto de los valores numricos. $stos pueden representarse en dos formas distintasa. .umrico entero- son todos los n0meros positivos o negativos, sin parte fraccionaria o parte decimal. $stos n0meros constan de un signo 12,34 y d(gitos 15674. )or ejemplo89, 37, 5, ":;, 3#<= b. .umrico real- son n0meros que constan de una parte entera y una parte decimal, teniendo siempre un punto decimal y pueden ser positivos o negativos. )or ejemplo8.":"=, 35.5;, 89;7.:", 3<#.8#" Nota: cuando se omite el signo en un tipo de dato numrico, se asume que el n0mero es positivo. $l tipo de dato alfanumrico en el caso de los tipos de datos simples, es el tipo caracter, que no es ms que el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipo caracter contiene un solo caracter. $l contenido que pueden tener estos tipos de datos sona. Caracteres alfanumricos 1/, > ,C, 6, ?, @, AB a, b , c, 6, x, y, %4 b. Caracteres numricos 15, ", #, 6, 9, ;, 74 c. Caracteres especiales 12, 3, C, D, E, F, G, H, I, J, K, L, etc.4
Lenguaje de Programacin I 2
Como se puede apreciar, es posible representar n0meros como caracteres, pero esto *ace que se pierda su propiedad matemtica, es decir, no es posible *acer operaciones con ellos. Todos los caracteres sin excepcin, deben delimitarse por comillas simples 1 !4 o dobles 1KM4, pero en esta asignatura se utili%aran comillas simples. )or ejemploN!, +!, 2!, O3 , 5!, "!, etc. )or 0ltimo, tenemos los tipos de datos lgicos, conocidos tambin como booleanos. Pon aquellos que solo pueden tener uno de dos valores posibles- verdadero (true) o falso (false), ya que por lo general representan el resultado de una comparacin. $stos datos no pueden tomar los dos valores al mismo tiempo, o es verdadero o es falso, pero no ambos a la ve%. )or ejemploComparacin #5 G "5 /! R a! ;5 FR ;5 #< FG #< Resultado Qerdadero Nalso Qerdadero Nalso
Nota: la longitud o el tamaSo de los tipos de datos depender de las limitaciones del *ardTare de la computadora utili%ada y del lenguaje de programacin que se implemente. 1.2.2 IDENTIFICADORES, CONSTANTES Y VARIABLES 'os datos que procesara una computadora, ya sean simples o compuestos, se deben almacenar en casillas o celdas de memoria para utili%arlos posteriormente. / estas casillas o celdas de memoria se les asigna un nombre para reconocerlas, al que se le llama identificador, el cual se puede formar por medio de letras, d(gitos y el caracter subrayado o guion bajo 1U4. 'os identificadores son muy importantes ya que nos sirven para identificar un objeto dentro de la memoria de la computadora, que de otra forma, tendr(amos que saber la direccin de donde se encuentre almacenado el objeto, que es un n0mero *exadecimal, por lo que es ms fcil asignarle un nombre, el cual tambin tiene un tipo de dato asociado. / continuacin se presentan algunas reglas generales para la asignacin de nombres como identificadores". &ebe comen%ar con una letra 1de la A a la Z o de la a a la z4. #. 'os dems caracteres pueden ser letras, d(gitos o el s(mbolo de subrayado. 8. 'as letras no deben de llevar tilde. :. Pe recomienda *acer una diferencia entre letras may0sculas y min0sculas. <. .o debe contener espacios en blanco. =. .o puede coincidir con palabras reservadas propias del lenguaje de programacin utili%ado. 9. 'a longitud se recomienda de 8 caracteres como m(nimo y #<< como mximo. ;. $l nombre del identificador debe ser significativo. 7. Pe debe especificar su tipo de dato. "5. .o es recomendable que exista ms de un objeto con un identificador igual que otro.
Lenguaje de Programacin I 3
)ara comprender mejor la aplicacin de estas reglas, a continuacin se presentan algunos ejemplos de identificadores tanto validos como no validosIdentificadores validos )recio/rticulo &ireccion )rimer/pellido TotalUQentas Identificadores no validos )recio /rticulo &ireccin "/pellido Total3Qentas
Un punto importante es que los identificadores deben ser nombres significativos, para esto *ay que tomar en cuenta lo que se desea representar, por ejemploEnunciado )orcentaje de aumento del salario actual )recio de un articulo .0mero de estudiantes de informtica .0mero de carnet de un estudiante Pueldo neto de un empleado Cuota mensual de colegiatura Identificador )orcentaje/umento )recio/rticulo .um$st,nf Carnet$studiante Pueldo.eto Cuota+ensual
)or otra parte, tenemos las constantes, que son datos que no cambian durante la ejecucin de un algoritmo o programa. )ara nombrar las constantes utili%amos identificadores, y estas pueden ser de cualquiera de los tipos de datos existentes- entero, real, caracter, etc. 'as constantes deben declararse antes de ser utili%adas para *acer una reserva de memoria donde se guarde el valor que ser utili%ado como constante, y ese valor permanece invariable durante su uso. )or ejemplo), R 8.":"= Temperatura R 85 )orcentaje R 5.# Wenero R N! +es R "5 contiene el valor de V representa una temperatura de 85 grados cent(grados contiene un porcentaje de #5L representa el gnero femenino contiene el decimo mes, o sea octubre
)or 0ltimo, tenemos las variables, que son objetos que pueden cambiar su valor durante la ejecucin de un algoritmo o programa. )ara nombrar las variables tambin se utili%an identificadores, y al igual que las constantes, estas pueden ser de cualquiera de los tipos de datos existentes. $s recomendable declarar las variables antes de ser utili%adas para que estn listas al momento de recibir un valor, y dic*o valor puede cambiar tantas veces como sea necesario. Xay que tener en cuenta que cada valor que se le asigne a una variable, debe ser del tipo de dato que se *a definido para dic*a variable, con el cuidado de que toda variable contiene 0nicamente el 0ltimo valor asignado. Tomando en consideracin todo esto al momento de querer resolver un problema a travs de un algoritmo o programa, *ay que determinar dos cosas fundamentales Cuantas y cules son las variables necesarias para solucionar el problema. $l tipo de dato que pueden almacenar cada una de las variables.
/ continuacin se presentan algunos ejemplos de variables con sus respectivos identificadores, tipos de datos y contenidoLenguaje de Programacin I 4
Tipo de dato Yeal Caracter >ooleano $ntero Caracter Yeal $ntero >ooleano
Contenido Total de ventas anuales obtenidas. ,dentifica el gnero del estudiante. $l estado del cliente. Cantidad de producto vendido. $specifica la categor(a del cliente. Pueldo del empleado. $dad del estudiante. $l resultado de *acer una apuesta.
$l contenido se refiere a una breve descripcin del propsito de la variable, por lo que se *ace necesario entender claramente las variables que se utili%aran para resolver un problema. 1.2.3 EJERCICIOS PROPUESTOS ". &etermina el tipo de dato de los siguientes datosDato #.9";##; C! 3""5 falso 37.;" ";77 H! "5.5 verdadero 5 Tipo de dato
#. $xpresa ejemplos de datos diferentes a los ejemplos para los tipos de datos solicitados. Entero Real Caracter
8. &etermina el resultado lgico de las siguientes comparacionesComparacin 3" G 5 N! FG f! 8." R 8."" "5.5 FR "5.5 3 R U! "#5 GR ""7 # R #! " FG 3" < F 3< 8! R 8!
Lenguaje de Programacin I
Resultado
:. &etermina cules de los siguientes identificadores son validos y por qu. Identificador /umentoPalario LQenta )eso.eto "#+eses )recioU/rticulo .0meroCliente Wenero$mpleado )romedioD+ensual Cantidad3Total &escuentoUNinal Valido ( i!"o) #$or %u&'
<. &efine tres constantes con su respectivo identificador, valor y descripcinB que representen diferentes tipos de datos. Identificador Valor Descripcin
=. /signa a cada variable el tipo de dato y el contenido que corresponda. Identificador $stado$studiante )orcentaje/umento .umeroUClientes Wenero)ersona )romedioU/nual Cantidad$mpleados 'etra,nicial.ombre $stado)roducto CalificacionUNinal Pigno+oneda Tipo de dato Contenido
9. &etermina cul es el valor final asignado a la variable ( si A R 8 y ) R #. Asi*naciones ?R" ?R/2> ?R"2? ?R/ ?R> ?R? ?R8 ?R?Z/ ?R?2>Z#
Lenguaje de Programacin I 6
Valor final de (
1.3 OPERADORES 'os operadores son necesarios para reali%ar operaciones. &istinguimos entre operadores aritmticos, relacionales y lgicosB as( como tambin, existen en algunos lenguajes de programacin como CI y otros, los operadores simplificados y los operadores de incremento y decremento. 1.3.1 OPERADORES ARITMTICOS 'os operadores aritmticos nos permiten reali%ar operaciones entre operandos- n0meros, constantes o variables. $l resultado de una operacin aritmtica siempre es un n0mero. $s importante tener en cuenta el tipo de dato de los operandos 1enteros o reales4, ya que casi siempre de esto depende la exactitud de una operacin y un correcto resultado. / continuacin se presentan los operadores aritmticos con algunos ejemplos en donde *ay que observar cuidadosamente los resultados. Pea ( una variable de tipo entero y V una variable de tipo real+perador 2 3 C i*nificado Puma Yesta +ultiplicacin E,emplos ? R :.< 2 8 Q R :.< 2 8 ? R :.< 3 8 Q R :.< 3 8 ? R :.< C 8 Q R :.< C 8 QR:C8 ?R:D8 ? R :.5 D 8.5 QR:D8 Q R :.5 D 8 ?R<L# Q R 1< L #4 D # Q R 1<.5 L #.54 D # Resultados ?R9 Q R 9.< ?R" Q R ".< ? R "# Q R "8.< Q R "#.5 ?R" ?R" Q R ".5 Q R ".88 ?R" Q R 5.5 Q R 5.<
&ivisin
+dulo
/*ora que se conocen los operadores aritmticos, se presentan los operadores aritm&ticos simplificados con ejemplos de aplicacin y su correspondiente equivalencia, as( como tambin, el resultado de dic*os ejemplos, considerando que ( es una variable de tipo entero. +perador aritm&tico 2 3 C D L -orma simplificada 2R 3R CR DR LR E,emplos ?R= ? 2R 8 ?R< ? 3R # ?R: ? CR # ?R7 ? DR 8 ?R; ? LR = E%uivalencias ?R= ?R?28 ?R< ?R?3# ?R: ?R?C# ?R7 ?R?D8 ?R; ?R?L= Resultados ?R= ?R7 ?R< ?R8 ?R: ?R; ?R7 ?R8 ?R; ?R#
Nota: observar que el operador mdulo 1L4 proporciona como resultado el residuo de la divisin 1D4.
Lenguaje de Programacin I 7
Tenemos adems, los operadores de incremento . decremento que su aplicacin es muy importante porque simplifican la escritura de programas, sobre todo cuando se utili%an variables para contar. Pe pueden utili%ar antes o despus de la variable, siendo los resultados diferentes, es decir, si se utili%a antes de la variable, el valor de sta se incrementa o decrementa en " antes de ser utili%adoB y si se utili%a despus de la variable, el valor de sta se incrementa o decrementa en " despus de ser utili%ado. Pi ( y / son variables de tipo entero, se tiene que+perador +peracin ?R< @ R ?22 22 ,ncremento ?R< @ R 22? ?R8 @ R ?33 33 &ecremento ?R8 @ R 33? 1.3.2 OPERADORES RELACIONALES 'os operadores relacionales se utili%an para comparar dos operandos, que pueden ser n0meros, caracteres, constantes o variables. 'as constantes o variables, a su ve%, pueden ser de los tipos de datos expuestos anteriormente. / continuacin se presentan los operadores relacionales con ejemplos de su uso y el resultado de dic*os ejemplos. Considerar que RE es una variable de tipo booleano. +perador RR [R F G FR GR 1.3.3 OPERADORES L ICOS )or otra parte tenemos los operadores lgicos o booleanos, los cuales permiten formular condiciones complejas a partir de condiciones simples, siendo el resultado de una condicin un valor booleano 1falso o verdadero4. $n la siguiente tabla se muestran los operadores lgicos, ejemplos de su uso y los resultados de dic*os ejemplos, considerando que ( es una variable de tipo booleano. +perador [ JJ \\ +peracin .egacin 1not4 Conjuncin 1and4 &isyuncin 1or4 E,emplos ? R [19 G "<4 ? R 1< G #4 JJ 1# FR 84 ? R 1# FR "4 \\ 18 G #4 Resultados ? R verdadero ? R verdadero ? R verdadero +peracin ,gual a &iferente de +enor que +ayor que +enor o igual que +ayor o igual que E,emplos Y$P R *! RR n! Y$P R a! [R b! Y$P R 9 F "< Y$P R ## G "" Y$P R "< FR # Y$P R 8< GR #5 Resultados Y$P R falso Y$P R verdadero Y$P R verdadero Y$P R verdadero Y$P R falso Y$P R verdadero E,emplos ?R< @R< ?R= ?R< @R= ?R= ?R8 @R8 ?R# ?R8 @R# ?R# Resultados
Nota: los valores booleanos verdadero y falso, se pueden representar por " y 5 respectivamente.
Lenguaje de Programacin I 8
'as definiciones de estas operaciones se resumen en una tabla conocida como tabla de verdad. Pean $ y 0 variables de tipo booleano, entonces tenemos que$ Qerdadero " Qerdadero " Nalso 5 Nalso 5 0 Qerdadero " Nalso 5 Qerdadero " Nalso 5 (1$) Nalso 5 Nalso 5 Qerdadero " Qerdadero " (10) Nalso 5 Qerdadero " Nalso 5 Qerdadero " ($ 22 0) Qerdadero " Qerdadero " Qerdadero " Nalso 5 ($ 33 0) Qerdadero " Nalso 5 Nalso 5 Nalso 5
&e acuerdo a la tabla anterior, si $ es un valor verdadero, entonces su negacin 1!4 resulta un valor falso, y si $ es un valor falso, entonces su negacin resulta un valor verdadero. $l operador conjuncin 1""4 producir un resultado verdadero cuando cada una de las condiciones tienen valor verdaderoB de lo contrario, el resultado ser falso. $l operador disyuncin 1##4 genera un valor verdadero en todos los casos, excepto cuando todas las condiciones sean falsas. 'as expresiones que estn constituidas por n0meros, constantes o variables y operadores lgicos o relacionalesB son llamadas e4presiones l*icas o booleanas. $l valor que pueden tomar estas expresiones es " 1en caso de ser verdaderas4 5 1en caso de ser falsas4. $s importante tener en cuenta que cuando se utili%an los operadores de relacin con valores lgicos, el valor falso es menor que el valor verdadero. )or ejemplo, considerar que ( es una variable de tipo booleanoX = (5 < 2) > (8 > 5) = falso > verdadero = falso X = (5 > 2) > (8 < 5) = verdadero > falso = verdadero 1.3.$ PRIORIDADES DE LOS OPERADORES )or 0ltimo, y luego de *aber presentado los diferentes operadores 1aritmticos, relacionales y lgicos4, a continuacin se presenta la tabla de jerarqu(a de los mismos. Cabe destacar que por lo general, las expresiones se eval0an de i%quierda a derec*a, incluso si existen operadores con igual nivel de prioridad en una expresin. +peradores 14 [, 22, 33 C, D, L 2, 3 RR, [R, F, G, FR, GR JJ, \\ 2R, 3R, CR, DR, LR 5erar%u6a +ayor
+enor
$l operador ( ) es asociativo y tiene la prioridad ms alta, es decir, todas aquellas operaciones o expresiones que se encuentren entre parntesis, se reali%aran primero. Pi existen expresiones entre parntesis anidados, se eval0an de adentro *acia fuera, es decir, el parntesis mas interno se eval0a primero *asta llegar al parntesis mas externo.
Lenguaje de Programacin I 9
/ continuacin se presenta un par de ejemplos de la aplicacin de las prioridades de los operadores, considerando que ( es una variable de tipo entero. Qerifica y compara el resultado manualmente y en una calculadora o computadora. Ejemplo 1 X = !" # (2 $ (% & ')) ( (() $ ) & 2) ( 8 $ 2) * X=1 1.3.% E&PRESIONES AL OR'TMICAS 'as expresiones matemticas o algebraicas se deben escribir o convertir en formato lineal para que puedan ser entendidas por la computadora, y una ve% convertidas son denominadas e4presiones al*or6tmicas. $sto obliga al uso frecuente de parntesis que indiquen el orden de evaluacin correcta de las operaciones. )or ejemploE4presin al*ebraica / R Vr# E4presin al*or6tmica / R 8.":"= C r C r m R 1y# Z y"4 D 1x# Z x"4 Un aspecto importante en las expresiones algor(tmicas es la operacin de asi*nacin, que es el modo de asignarle valor a una variable mediante el signo u operador igual 174. $ste signo tiene, en el caso de los algoritmos o programas, una connotacin un poco diferente a la que se la da en matemticas. $l signo igual 174 significa que la computadora va a reali%ar o ejecutar lo que est a la derec*a del signo y lo va almacenar en la variable que se encuentra a la i%quierda de ste. &e acuerdo a lo anterior, se puede deducir claramente que a la i%quierda del signo igual 174 solo puede *aber una variable y al lado derec*o de ste puede *aber una constante, una variable una expresin. / continuacin se establecen algunas reglas para la asignacin". Una variable en el lado derec*o de una sentencia de asignacin debe tener un valor antes de que la sentencia de asignacin se ejecute. )or ejemploPi ( no tiene un valor antes de que se ejecute / R ( 2 ", se producir un error lgico. 'a solucin ser(a asignar un valor a ( que podr(a ser ( R #, luego / R # 2 ", cuyo resultado es / R 8. #. $n la i%quierda de una sentencia de asignacin solo puede existir una solo variable, por lo que no ser(a vlido *acer lo siguientePueldo 2 Comision R PueldoTotal Compra Z &escuento R 885."< 8. /l lado derec*o del signo igual 174 puede *aber una constante, una variable o una expresin, por lo tanto es vlido *acer lo siguiente/umento R Pueldo C 5.# PueldoTotal R Pueldo 2 /umento :. 'a computadora siempre resuelve lo de la derec*a del signo igual 1R4 y su resultado lo almacena en la variable que est a la i%quierda de ste. 'a operacin de asignacin es destructiva, por lo que si una variable ten(a un valor asignado antes de asignarle uno nuevo, ste se destruye, conservando a*ora el nuevo valor, ra%n por la cual *ay que tener muc*o cuidado al momento de manipular el valor de una variable.
Lenguaje de Programacin I 10
1.3.( EJERCICIOS PROPUESTOS ". Calcula manualmente el valor aritmtico de las siguientes expresionesE4presin 1## L ;4 D 8 9L:29D: ; 2 "# C < L # Z "" 9D828Z:C:D#C# "; D # 2 1= C #4 L 9 Z # C # D # ; 2 # C 1"; Z # C #4 2 8 C = D # 1"5 C 1"# 3 :4 D =4 C ; 2 "" D 8 C = Z < C 7 "< D 8 C 19 2 1=; Z < C 8 2 17 L < D #4 D 84 D <4 ; C 9 C 19 L : C #4 D = C : Z 85 2 "8 L 9 L < C 7 2 ; 1"; D # 2 1= C #4 L 9 Z # C # D #4 C 19 D 8 2 8 C : D # C #4 #. &etermina manualmente el valor lgico de las siguientes expresionesE4presin 18 C # C = D : D 84 G 18 C # C : D #4 JJ 1< G 7 D 84 [1# C # RR : D # \\ 1"< Z "54 C ; G :4 \\ [1# RR "4 "5 L # C 8 2 < [R #5 JJ < L 8 C 8 L # FR "< 1< C < 2 "5 L = D #4 GR 18 C 8 D 8 2 84 11"< L = C # C 94 G 9 2 ; C 8 L <4 \\ [1< C #4 [1[118 Z 13844 C # F 18 Z 1384 C #4 \\ 8 L # C 8 G =44 18 GR : JJ < G 8 JJ 8 F < JJ 8 G 84 \\ [1: GR : \\ #5 G <4 [1< GR 9 C #4 \\ 185 Z ; C # D : [R 8 C # D #4 1"< GR 9C# JJ ; G 8 JJ "< G =4 \\ [1#" F < 2 #: D 8 C #4 [119 C 8 D # C :4 G 1"# D # C = GR "< C # D "9 RR "<44 Resultado Resultado
8. &etermina por qu las siguientes expresiones algor(tmicas no son validas y escribir las correctas. E4presin al*or6tmica @# Z @" R m C 1?# Z ?"4 /RVCrCr Q R 5.8888V 1r C r4C* )# R )" Z * C# R /# 2 ># #$or %u& no es v8lida' olucin
:. Convierte en expresiones algor(tmicas las siguientes expresiones algebraicasE4presin al*ebraica $ R mc Q R ^Vr#* / R V1Y# Z r#4 @ R @5 2 Q5T 3 "D#gT#
#
E4presin al*or6tmica
Lenguaje de Programacin I
11
1.$ PROBLEMAS Y AL ORITMOS 'os *umanos efectuamos cotidianamente series de pasos, procedimientos o acciones que nos permiten alcan%ar alg0n resultado o resolver alg0n problema. $stas series de pasos, procedimientos o acciones, comen%amos a aplicarlas desde que empie%a el d(a, cuando, por ejemplo, decidimos baSarnos. )osteriormente, cuando tenemos que ingerir alimentos tambin seguimos una serie de pasos que nos permiten alcan%ar un resultado espec(fico- tomar el desayuno. 'a *istoria se repite innumerables veces durante el d(a. $n realidad todo el tiempo estamos aplicando algoritmos para resolver problemas. Un problema es algo que representa una dificultad, una situacin que surge cuando existe la necesidad de un cambio positivo, situacin que necesita ser transformada de un estado a otro. Un al*oritmo es un conjunto de pasos, procedimientos o acciones que nos permiten alcan%ar un resultado o resolver un problema. +uc*as veces aplicamos un algoritmo de manera inadvertida, inconsciente o automtica. $sto ocurre generalmente cuando el problema al que nos enfrentamos lo *emos resuelto con anterioridad un gran n0mero de veces. Pupongamos, por ejemplo, que tenemos que abrir una puerta. 'o *emos *ec*o tantas veces que dif(cilmente nos tomamos la molestia de enumerar los pasos para alcan%ar este objetivo. 'o *acemos de manera automtica. 'o mismo ocurre cuando nos subimos a un automvil, lustramos nuestros %apatos, *ablamos por telfono, nos vestimos, cambiamos la llanta de un automvil o simplemente cuando tomamos un vaso con agua. $n la siguiente figura se pueden observar las etapas que se deben seguir para resolver alg0n problema.
'a etapa de an8lisis del problema sirve para comprender y definir claramente la naturale%a del problema. 'a etapa de construccin del al*oritmo especifica la secuencia lgica de pasos para la solucin del problema en base al anlisis reali%ado previamente. 'a etapa de verificacin del al*oritmo consiste en seguir los pasos exactos especificados en la construccin del algoritmo para ver si la solucin resuelve verdaderamente el problema. 'a definicin del problema est dada por el enunciado del problema, el cual debe ser claro y completo para poder conocer exactamente lo que se desea que *aga la computadoraB mientras que esto no se comprenda, no tiene caso pasar a la siguiente etapa. )ara poder definir con precisin el problema, se requiere que las especificaciones 1datos4 de entrada y salida sean descritas con detalle. Una buena definicin del problema, junto con una descripcin detallada de las especificaciones de entrada y salida, son los requisitos ms importantes para llegar a una solucin efica%.
Lenguaje de Programacin I 12
'os datos de entrada representan la operacin o accin que permite el ingreso de los datos del problema. $l procesamiento de los datos representa la operacin o conjunto de operaciones cuyo objetivo es obtener la solucin del problema. 'a impresin de resultados o datos de salida representa una operacin o conjunto de operaciones que permite comunicar al exterior la solucin obtenida. )or otra parte, las caracter(sticas que deben tener los algoritmos son las siguientes". $recisin. 'os pasos a seguir en el algoritmo se deben precisar claramente. #. Determinismo. &ado un conjunto de datos de entrada idnticos, el algoritmo siempre debe arrojar los mismos resultados. 8. -initud. ,ndependientemente de la complejidad del algoritmo, siempre debe tener una longitud finita. 1.$.1 AN)LISIS DEL PROBLEMA $l anlisis del problema es la etapa fundamental para resolver un problema. $sta fase requiere normalmente el mximo de imaginacin y creatividad por parte del analista, ya que de esto depende la construccin de un buen algoritmo. 'os elementos que debe poseer el anlisis del problema son los siguientes". Variables de salida. Pon los datos de salida que se entregan como resultado al usuario y constituyen la salida de informacin desde la computadora. #. Variables de entrada. Pon los datos de entrada que se solicitan al usuario para generar las variables de salida y constituyen la entrada de informacin *acia la computadora. 8. $roceso. $s el procedimiento que transforma las variables de entrada en las variables de salida, efectuando clculos de acuerdo con una secuencia de operaciones establecidas. $n este punto podr(an utili%arse variables de proceso, pero esto depender de cada problema. $xisten < pasos a seguir para llevar a cabo un buen anlisis del problema son los siguientesa. )lantear el problema de forma breve, clara y precisa para tener un panorama general de steB tanto de forma textual como grafica 1definicin del problema4. b. $xaminar cuidadosamente el problema a fin de identificar los datos o resultados que se esperan obtener 1variables de salida4. c. ,dentificar los datos de entrada que se suministran y que puedan ser 0tiles para obtener la solucin 1variables de entrada4. d. ,dentificar los procedimientos necesarios que permitan transformar los datos de entrada en datos de salida 1proceso4. e. Qerificar la solucin del problema con datos de prueba 1corrida4, comen%ado por asignar valores a las variables de entrada, luego calcular las variables de proceso si existenB y por 0ltimo, determinar las variables de salida.
Lenguaje de Programacin I 13
)ara cada variable o constante se deben definir los identificadores y tipos de datos apropiados al momento de efectuar el anlisis del problema, lo que facilitar la construccin del algoritmo posteriormente. / continuacin se presenta un par de ejemplo para comprender mejor la aplicacin del anlisis del problema. 1.$.2 EJEMPLOS PROPUESTOS ". Un supermercado ofrece un descuento de <L sobre el total de la compra y un cliente desea saber cunto pagar finalmente por su compra. Polucina. D*+,-,.,/- 0*1 23o41*5a _btener la cantidad de dinero que tendr que pagar el cliente si el supermercado ofrece un <L de descuento sobre el total de la compra. Total de la compra b. Va3,a41*6 0* 6a1,0a Identificador Total)ago Tipo de dato Yeal Descripcin Contiene la cantidad de dinero a pagar por el cliente ya con el descuento aplicado. )Y_C$P_ Total a pagar
c. Va3,a41*6 0* *-t3a0a Identificador TotalCompra d. P3o.*6o $n este problema se utili%ar la siguiente variable de proceso para calcular el descuentoIdentificador &escuento Tipo de dato Yeal Descripcin Yepresenta la cantidad de descuento a aplicar a la compra del cliente. Tipo de dato Yeal Descripcin Contiene la cantidad de dinero de la compra efectuada por el cliente.
&escuento R TotalCompra C 5.5< Total)ago R TotalCompra 3 &escuento e. Co33,0a TotalCompra "55.55 Variables &escuento "55.55 C 5.5< R <.55 Total)ago "55.55 Z <.55 R 7<.55
'a variable de proceso Descuento no es indispensable en la solucin del problema, ya que el total a pagar se puede calcular directamente de la siguiente formaTotal)ago R TotalCompra Z 1TotalCompra C 5.5<4 _bservar que todas las variables son de tipo real, porque se utili%an para manejar valores monetarios y para lo cual se requieren decimales.
Lenguaje de Programacin I 14
#. &ada una cantidad monetaria en euros, convertirla a dlares considerando que `".55 R H".#<. Polucina. D*+,-,.,/- 0*1 23o41*5a Convertir cierta cantidad de euros a dlares, tomando en cuenta que `".55 R H".#<. Cantidad de euros b. Va3,a41*6 0* 6a1,0a Identificador &olares Tipo de dato Yeal Descripcin Contiene la cantidad de dlares convertidos a partir de cierta cantidad de euros. )Y_C$P_ Cantidad de dlares
c. Va3,a41*6 0* *-t3a0a Identificador $uros d. P3o.*6o $n este problema no se requieren variables de proceso porque el resultado se puede obtener directamente a partir de los datos de entrada. &olares R $uros C ".#< e. Co33,0a Variables $uros #<.55 &olares #<.55 C ".#< R 8".#< Tipo de dato Yeal Descripcin Contiene la cantidad de euros que se desea convertir a dlares.
8. Pe *an reali%ado 8 exmenes en el primer periodo de la asignatura de 'enguaje de )rogramacin , y se desea saber cul es el promedio de las calificaciones de un estudiante. Polucina. D*+,-,.,/- 0*1 23o41*5a Calcular el promedio de 8 calificaciones de un estudiante del ,TY. Calificaciones b. Va3,a41*6 0* 6a1,0a Identificador )romedio Tipo de dato Yeal Descripcin Contiene el promedio de las 8 calificaciones de un estudiante. )Y_C$P_ )romedio
c. Va3,a41*6 0* *-t3a0a Identificador Calificacion" Calificacion# Calificacion8 Tipo de dato Yeal Yeal Yeal Descripcin Contiene la calificacin del examen ". Contiene la calificacin del examen #. Contiene la calificacin del examen 8.
15
Lenguaje de Programacin I
d. P3o.*6o $n este problema se utili%ar una variable de proceso, aunque es de aclarar que esta variable de proceso no es necesaria en realidad porque el promedio de las calificaciones se podr(a obtener directamente con las variables de entrada, pero para *acer de forma ms ordenada las operaciones, se *ar de esta manera. Identificador Puma Tipo de dato Yeal Descripcin Contiene la suma de las 8 calificaciones.
Puma R Calificacion" 2 Calificacion# 2 Calificacion8 )romedio R Puma D 8 e. Co33,0a Variables Calificacion" ;.< Calificacion# 7.5 Calificacion8 7.< Puma ;.< 2 7.5 2 7.< R #9.5 )romedio #9.5 D 8 R 7.5
:. Un vendedor recibe un sueldo base ms un "5L extra por comisin de sus ventas, el vendedor desea saber cunto dinero obtendr por concepto de comisiones por las dos ventas reali%adas en el mes y el total que recibir tomando en cuenta su sueldo base y comisiones. Polucina. D*+,-,.,/- 0*1 23o41*5a Calcular la comisin 1"5L4 y el sueldo total que recibir un vendedor tomando en cuenta que *a reali%ado dos ventas y que recibe un sueldo base. Pueldo base y ventas b. Va3,a41*6 0* 6a1,0a Identificador Comision PueldoTotal Tipo de dato Yeal Yeal Descripcin Contiene la cantidad de comisin que recibir el vendedor por las dos ventas reali%adas en el mes. Contiene el sueldo total que recibir el vendedor. )Y_C$P_ Comisin y suelto total
c. Va3,a41*6 0* *-t3a0a Identificador Pueldo>ase Qenta" Qenta# d. P3o.*6o $n este problema no se requieren variables de proceso porque los datos de entrada son suficientes para calcular los datos de salida, adems, uno de los datos de salida se utili%a para calcular otro resultado, tal como se muestra a continuacinComision R 1Qenta" 2 Qenta#4 C 5."5 PueldoTotal R Pueldo>ase 2 Comision
Lenguaje de Programacin I 16
Descripcin Contiene el sueldo base que recibe el vendedor cada mes. Contiene el monto de la primera venta. Contiene el monto de la segunda venta.
e. Co33,0a Pueldo>ase :55.55 Qenta" <5.55 Qenta# 9<.55 Variables Comision 1<5.55 2 9<.554 C 5."5 R "#.<5 PueldoTotal :55.55 2 "#.<5 R :"#.<5
<. Pi al recibir como datos la longitud y el peso de un objeto expresados en pies y libras, se desean convertir a metros y ailogramos respectivamente, tomando en cuenta que" pie R 5.57#75 metros " libra R 5.:<8<7 ailogramos Polucina. D*+,-,.,/- 0*1 23o41*5a Convertir la longitud y el peso de un objeto dados en pies y libras, a metros y ailogramos respectivamente.
'ongitud en pies y peso en libras
)Y_C$P_
b. Va3,a41*6 0* 6a1,0a Identificador +etros bilogramos Tipo de dato Yeal Yeal Descripcin Contiene la longitud del objeto convertida a metros. Contiene el peso del objeto convertido a ailogramos.
c. Va3,a41*6 0* *-t3a0a Identificador )ies 'ibras d. P3o.*6o $n este problema no se requieren variables de proceso porque para reali%ar las conversiones no se requieren ms que los datos de entrada. Qeamos a continuacin+etros R )ies C 5.57#75 bilogramos R 'ibras C 5.:<8<7 e. Co33,0a )ies #5.55 'ibras "5.55 Variables +etros #5.55 C 5.57#75 R ".;<;5 bilogramos "5.55 C 5.:<8<7 R :.<8<7 Tipo de dato Yeal Yeal Descripcin Contiene la longitud del objeto expresada en pies. Contiene el peso del objeto expresado en libras.
1.$.3 EJERCICIOS PROPUESTOS )ara cada uno de los problemas planteados desarrollar el anlisis del problema aplicando los < pasos. ". &ada la altura y la base de un tringulo, calcular su superficie sabiendo quePuperficie R 1>ase C /ltura4 D #
Lenguaje de Programacin I 17
#. Un empleado desea saber el ingreso total y el promedio mensual de los sueldos del primer trimestre del aSo. 8. /l recibir como datos el radio y la altura de un cilindro, calcular el rea y su volumen as(crea R # C V C Yadio C /ltura Qolumen R V C Yadio# C /ltura :. Una persona compr un terreno en una playa, la extensin del terreno est dada en acres y la persona desea saber la extensin del mismo pero en *ectreas. Considerar lo siguiente" acre R :5:9 m# " *ectrea R "5,555 m# <. /l recibir como datos las coordenadas de los puntos )", )# y )8 que corresponden a los vrtices de un tringulo, calcular su per(metro, sabiendo que para cada punto existe un valor en ? y un valor en @B considerando adems, que la distancia entre dos puntos se calcula as(-
=. &ados como datos dos n0meros reales, se desea calcular la suma, la resta, la multiplicacin y la divisin de dic*os n0meros. 9. Una tienda desea saber el cambio que se le debe entregar al cliente al tener como datos el costo de una venta y la cantidad de dinero entregada para su pago. ;. /l recibir como dato el radio de un circulo, calcular el rea y la longitud de la circunferencia, sabiendo quecrea R V C Yadio# Circunferencia R # C V C Yadio 7. Calcular el sueldo neto de un trabajador, al cual se le aplican los siguientes descuentos- Yenta R "5L, /N) R =L e ,PPP R 8L. Tambin, se desea saber el total de descuentos. "5. &eterminar la nota final de un estudiante, la cual depende de lo siguiente- Tareas R #5L, )ortafolio R #<L, 'aboratorio R #<L y $xamen R 85L. "". &ados como datos los valores de los dos catetos de un tringulo rectngulo, calcular el valor de la *ipotenusa. "#. Calcular el n0mero de segundos que *ay en un determinado n0mero de d(as. "8. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. _btener el porcentaje que cada persona invierte con respecto a la cantidad total invertida. ":. $n un *ospital existen tres reas- ginecolog(a, pediatr(a y traumatolog(a. Pe desea obtener el monto que recibir cada rea sabiendo que el presupuesto anual del *ospital se reparte conforme a lo siguiente Winecolog(a )ediatr(a :5L <5L
Traumatolog(a "5L
"<. Puponer que un individuo desea invertir su capital en un banco y desea saber cunto dinero ganar despus de un mes si el banco paga a ra%n de #L mensual.
Lenguaje de Programacin I 18
1.% DIA RAMAS DE FLUJO $l dia*rama de flu,o representa la esquemati%acin grfica de un algoritmo. $n realidad muestra grficamente los pasos o procesos a seguir para alcan%ar la solucin de un problema. 'a construccin correcta del mismo es muy importante, ya que a partir de ste se escribe el programa en un lenguaje de programacin determinado. $s de aclarar que el diagrama de flujo se debe construir de manera independiente del lenguaje de programacin utili%ado. $l diagrama de flujo representa la solucin del problema. $l programa representa la implementacin en un lenguaje de programacin. 1.%.1 SIMBOLO IA DE LOS DIA RAMAS DE FLUJO / continuacin, se presentan los s(mbolos que se utili%arn, junto con una explicacin de los mismos. dstos satisfacen las recomendaciones de la ,nternational -rgani.ation for /tandardi.ation 1,P_4 y el 0merican 1ational /tandards ,nstit2te 1/.P,4. 6mbolo Descripcin Pe utili%a para marcar el inicio 1start4 y el +,- 1end4 del diagrama de flujo. Pe utili%a para introducir los datos de entrada, es decir, expresa lectura. /lgunas veces tambin se utili%a para la impresin de resultados. Yepresenta un proceso. $n su interior se colocan asignaciones, operaciones aritmticas, etc. Pe utili%a para representar una decisin. $n su interior se almacena una condicin, y, dependiendo del resultado, se sigue por una de las ramas o caminos alternativos. $ste s(mbolo se utili%a con pequeSas variaciones en las estructuras selectivas if e if9else, as( como en las estructuras repetitivas for, :;ile y do9:;ile, ambas sern anali%adas en el siguiente mdulo. Pe utili%a para representar una decisin m<ltiple 1s3itc44, que se anali%ar en el siguiente mdulo. $n su interior se almacena un selector, y, dependiendo del valor de dic*o selector, se sigue por una de las ramas o caminos alternativos. Pe utili%a para representar la impresin de un resultado, es decir, expresa escritura.
$xiste softTare para construir diagramas de flujo, por lo que la simbolog(a podr(a cambiar un poco con respecto a los s(mbolos estndar presentados anteriormente. )or ejemplo, el programa RA$T+R que se utili%ar en esta asignatura, posee algunas variantes en la simbolog(a, pero en general, se apega bastante bien para los propsitos de ste curso. / continuacin se muestra la simbolog(a utili%ada por RA$T+R6mbolo Descripcin $l s(mbolo tart representa el inicio del diagrama de flujo. Pe muestra por defecto, por lo que no es necesario agregarlo. $l s(mbolo End representa el fin del diagrama de flujo. Pe muestra por defecto, por lo que no es necesario agregarlo. $ste s(mbolo se llama Input y representa la entrada de datos. $ste s(mbolo se llama Assi*nment y representa un proceso o asignacin. $ste s(mbolo se llama +utput y representa la salida de datos. $ste s(mbolo se llama election y representa una decisin. $s utili%ado para las estructuras selectivas if e if9else.
$l s(mbolo =oop representa un ciclo. $s utili%ado para las estructuras repetitivas for, :;ile y do9:;ile.
/ continuacin se presentan las etapas que se deben seguir en la construccin de un diagrama de flujo.
Lenguaje de Programacin I
20
$l diagrama de flujo debe ilustrar grficamente los pasos o procesos que se deben seguir para alcan%ar la solucin de un problema. 'os s(mbolos presentados, colocados en los lugares adecuados, permiten crear una estructura grfica flexible que ilustra los pasos a seguir para alcan%ar un resultado espec(fico. $l diagrama de flujo facilita entonces la escritura del programa en un lenguaje de programacin. / continuacin se presenta el conjunto de reglas para la construccin de diagramas de flujo". Todo diagrama de flujo debe tener un inicio y un fin. #. 'as l(neas utili%adas para indicar la direccin del flujo del diagrama deben ser rectas- verticales u *ori%ontales. 8. Todas las l(neas utili%adas para indicar la direccin del flujo del diagrama deben estar conectadas. 'a conexin puede ser a un s(mbolo que exprese lectura, proceso, decisin, impresin, conexin o fin del diagrama. :. $l diagrama de flujo debe construirse de arriba *acia abajo y de i%quierda a derec*a. <. 'a notacin utili%ada en el diagrama de flujo debe ser independiente del lenguaje de programacin. 'a solucin presentada se puede escribir posteriormente en diferentes lenguajes de programacin. =. /l reali%ar una tarea compleja, es conveniente poner comentarios que expresen o ayuden a entender lo que *ayamos *ec*o. 9. Pi la construccin del diagrama de flujo requiriera ms de una *oja, debemos utili%ar los conectores adecuados y enumerar las pginas correspondientes. ;. .o puede llegar ms de una l(nea a un s(mbolo determinado. Un diagrama de flujo muestra, como se seSal anteriormente, la esquemati%acin grfica de un algoritmo. Pu correcta construccin es importante, porque a partir del mismo se debe escribir el programa en un lenguaje de programacin determinado. $s conveniente comen%ar a desarrollar una *abilidad y una capacidad de ra%onamiento que permita, en la medida que se practique, obtener la solucin a los problemas planteados. /ntes de presentar los diagramas de flujo de los ejemplos de la seccin ".:.# que sern reali%ados en 5067-5, en su versin :.5.:.5558 y el cual puede descargarse gratuitamente de la siguiente direccin Teb, veremos algunos aspectos importantes referentes a esta *erramienta. *ttp-DDraptor.martincarlisle.comD )ara agregar una nueva figura del panel de s(mbolos 1 .mbols4 en un diagrama de flujo, existen dos formas muy sencillas de *acerlo". Peleccionamos la figura deseada y luego *acemos clic en la posicin donde la queremos agregar. #. /rrastramos la figura deseada *asta la posicin donde la queremos agregar. Una ve% que *emos agregado una nueva figura al diagrama de flujo, esta se debe configurar dependiendo de la figura que se trate, *aciendo doble clic sobre sta y agregando los parmetros necesarios en los campos requeridos. Qeamos a continuacin cmo se configuran las figuras a utili%ar en los ejemplos y ejercicios de ste mdulo, que son los s(mbolos ,np2t8 /tatement y -2tp2tB posteriormente se trataran el resto de s(mbolos en los siguientes mdulos de la asignatura.
Lenguaje de Programacin I 21
$sta es la ventana de entrada para configurar la figura Input. $n el campo $rompt >ere se debe escribir entre comillas dobles 1K M4 un mensaje para solicitar un dato de entrada. $n el campo Variable >ere se debe escribir el nombre de la variable donde se guradara el dato de entrada. Pi todo esta bien, se debe *acer clic sobre el botn Done y listo.
$sta es la ventana de entrada para configurar la figura tatement. $n el campo et se debe escribir el nombre de la variable que se quiere calcular. $n el campo to se debe escribir la expresin u operacin que se asignara a la variable. Pi todo esta bien, se debe *acer clic sobre el botn Done y listo.
$sta es la ventana de entrada para configurar la figura +utput. $n el campo +utput >ere se debe escribir entre comillas dobles 1K M4 un mensaje para indicar el resultado, seguido del simbolo 2 y luego la variable que se quiere mostrar. Pi todo esta bien, se debe *acer clic sobre el botn Done y listo.
Lenguaje de Programacin I
22
)ara ejecutar el diagrama de flujo, se puede *acer de dos formas diferentes". Xacemos clic sobre el botn E4ecute to Completion #. )resionamos la tecla -? )ara detener la ejecucin del diagrama de flujo por alguna ra%on antes que finalice, podemos presionar el botn top 1.%.2 EJEMPLOS PROPUESTOS $laborar los diagramas de flujo de los ejemplos de la seccin ".:.# tomando en cuenta el anlisis del problema reali%ado. ".
_bservar que en la ventana @asterConsole se muestran los resultados de la corrida del diagrama de flujo y es aqu( donde se deben verificar los datos de salida para ver si son los correctos. #.
Lenguaje de Programacin I
23
8.
:.
Lenguaje de Programacin I
24
_bservar que en el diagrama de flujo anterior existen dos figuras +utput, ya en este problema se requieren dos datos de salida, por lo que se *ace necesario marcar la opcin End current line en la ventana de entrada de la primera figura +utput, tal como se muestra a continuacin.
'a opcin End current line se utili%a para que la siguiente salida se muestre en una nueva l(nea en la ventana @asterConsole, tal como se muestra en la corrida del diagrama de flujo. <.
1.%.3 EJERCICIOS PROPUESTOS Construir el diagrama de flujo en formato estndar y en 5067-5 para todos los ejercicios propuestos en la seccin ".:.8 y tomando en cuenta el anlisis del problema reali%ado para cada ejercicio.
Lenguaje de Programacin I 25
1.( PRO RAMAS Un pro*rama es un conjunto de instrucciones que sigue la computadora para alcan%ar un resultado espec(fico. $l programa se escribe en un lenguaje de programacin a partir del diseSo de un diagrama de flujo escrito con anterioridad. Cada lenguaje de programacin est constituido por un conjunto de reglas particulares que son necesarias respetar para construir los programas. Xay cientos de lenguajes de programacin, pero slo unos cuantos *an dejado *uella, volvindose muy populares, tal es el caso de CA, que ser el lenguaje de programacin a utili%ar en esta asignatura por ser de propsito general. 9: es un lenguaje de programacin de alto nivel orientado a objetos, cuya metodolog(a es de las ms recientes y exitosas en materia de programacin. Un programa escrito en lenguaje de alto nivel recibe el nombre de pro*rama fuente o cdi*o fuente. Un programa fuente escrito en 9: debe ser compilado 1traducido4 a leng2aje m;<2ina, al que se le denomina pro*rama e,ecutableB lo que significa que existirn por lo menos dos arc*ivos cuando se escriba alg0n programa- arc4ivo f2ente = arc4ivo ejec2table> )ara crear programas en 9: existen diversas *erramientas llamadas IDE 1Entorno de ?esarrollo ,ntegrado4, que pueden ser gratuitas o de pago. Una de las ms conocidas y utili%adas es el ,&$ Visual tudio, el cual ser utili%ado en esta asignatura en su versin #55; o #5"5, y que puede ser descargado del 9entro de descargas de @/?1 en su versin gratuita yDo de evaluacin en la siguiente direccin Teb*ttp-DDmsdn.microsoft.comDes3esDaa<95857 'a tarea intelectual, la que requiere de un pensamiento profundo, de una capacidad de ra%onamiento flexible y cr(tica, corresponde a la construccin del diagrama de flujo, que representa la solucin detallada del problema. 'a escritura o codificacin del programa, por otra parte, puede resultar una tarea sencilla si conocemos las reglas que constituyen el lenguaje de programacin. Qeamos a continuacin el primer programa escrito en 9:. /l abrir Ais2al /t2dio 1versin #5"54, se presentara una pantalla similar a la siguiente-
Lenguaje de Programacin I
26
'uego seleccionamos un "uevo pro.ecto ya sea desde la $a*ina principal o desde el men0 Arc;ivo. Pe mostrara la siguiente ventana donde marcamos Aplicacin de consola, asignamos un nombre para nuestro proyecto, en este caso es $rimer$ro*rama y *acemos clic en el botn Aceptar, tal como se muestra a continuacin-
/l crear un nuevo proyecto tambin se crea una solucin que por defecto tiene el mismo nombre del proyecto. $sta sol2cin es ubicada por defecto en un nuevo directorio dentro de la carpeta $ro,ects de Ais2al /t2dio, cuyo nombre es tambin el mismo de la sol2cin, tal como se muestra en el E4plorador de soluciones de la siguiente pantalla donde adems, nos presenta una plantilla bsica para un programa de consola, que es el arc*ivo $ro*ramBcs.
$ditamos la plantilla del arc*ivo 6rogram>cs de tal manera que nos quede el programa similar al siguienteLenguaje de Programacin I 27
'as l(neas de "3: representan un encabe%ado de comentario que sirve para documentar el arc*ivo fuente, ya que es una buena practica de programacin utili%ar comentarios al inicio del cdigo fuente para incorporar informacin acerca del programa 1autor, descripcin, fec*a, etc.4. Un comentario en Ais2al 9: debe comen%ar con !C y terminar con C! independientemente de la cantidad de l(neas que contenga y puede utili%arce en cualquier parte del programa, siendo ignorado por la computadora al momento de compilar y ejecutar el programa. 'a l(nea < incorpora el espacio de nombres .stem a travs de la directiva usin*, que contiene las clases basicas para un programa, como por ejemplo la clase Console 1l(nea "8 y ":4. $n otras palabras un espacio de nombres es una biblioteca de clases con diferentes propositos para ser utili%adas en un programa. Una clase es un conjunto de instrucciones que contiene metodos y propiedades y es la base de la programacin oritentada a objetos 1$++4. 'a l(nea 9 es el espacio de nombres 1namespace4 propio de nuestro pro=ecto, cuyo nombre es igual al del proyecto que *emos creado. 'a l(nea ; representa me diante una llave de apertura, el inicio de las instrucciones que corresponden al espacio de nombres 6rimer6rograma y la l(nea "9 representa el fin del espacio de nombres mediante una llave de cierre. 'a l(nea 7 es la clase por defecto que se crea para nuestro espacio de nombres, la cual tiene por nombre $ro*ram y que puede ser modificado a nuestra conveniencia. 'a l(nea "5 representa el inicio de las instrucciones de la clase y la l(nea "= representa el fin de sta. 'a l(nea "" representa el metodo principal del programa llamado @ain(), el cual debe estar dentro de una clase, en este caso se encuentra dentro de la clase 6rogram. 'a l(nea "# indica el inicio de las instrucciones del metodo @ain(), siendo la l(nea "< el indicador del fin de este. $l metodo @ain() se establece como static porque no forma parte de un objeto como tal, y sirve unicamente para indicar al programa donde tiene que comen%ar. /dems, ste no devuelve ning0n valor, por lo que se declara como void y tampoco recibe argumentos, dejando vacios los parentesis.
Lenguaje de Programacin I 28
'a l(nea "8 indica a la computadora que realice una accin, es decir, que imprima en la pantalla la cadena de caracteres incluida entre comillas dentro del mBtodo ConsoleBDrite=ine(). $n algunas ocasiones, a una cadena de caracteres se le llama mensaje. _bservar el punto y coma que se encuentra al final de esta l(nea. 'a l(nea "< es el mBtodo ConsoleBRead=ine78, que se utili%a en este caso para detener la ejecucin del programa *asta que se presione la tecla Enter, por lo que siempre debe incluirse antes de la llave de cierre del bloque del mBtodo principal @ain(). _bservar el punto y coma que se encuentra al final de esta l(nea. Tambin se puede utili%ar el mtodo ConsoleBReadEe.() para este propsito. )ara ejecutar el programa lo podemos *acer de 8 formas diferentes". Peleccionando el menC Depurar y *acemos clic sobre la opcin Iniciar depuracin. #. Xaciendo clic sobre el botn 8. )resionando la tecla -? /l ejecutar el programa anterior, se tendr(a en pantalla el resultado siguienteque se encuentra en la barra de *erramientas estandar.
Todas las l(neas de cdigo que finali%an con un punto y coma 194, son llamadas instrucciones, que indican una accin a reali%ar, por lo que un punto y coma especifica la terminacin de una instruccin. $stas instrucciones por lo general estn contenidas dentro de un bloque de cdigo 1e f4. /*ora bien, surge la siguiente pregunta gcmo convertir un diagrama de flujo en un programa o viceversah $sto depende de la *abilidad de cada programador, pero existen algunas analog(as que se pueden tomar en cuenta para llevar a cabo esta tarea. )or ejemplo, para convertir el programa anterior en un diagrama de flujo, basta con observar y entender lo que *ace el programa- imprimir un mensa,e en pantalla. $sto se *ace fcilmente en 5067-5 utili%ando la figura -2tp2t. _bserva que la figura para la impresin de resultados en un diagrama de flujo equivale al mBtodo 9onsole>DriteEine() de 9:, y las llaves que contienen las instrucciones del mtodo @ain(), equivalen a las figuras /tart y End respectivamente, as(-
Lenguaje de Programacin I
29
/ntes de entrar en materia en cuanto a la construccin de programas, es necesario conocer algunos elementos sintcticos del lenguaje 9: y se recomienda encarecidamente investigar sobre buenas prcticas o tpicos de programacin que ayuden a escribir programas de forma clara y profesional. 1.(.1 SECUENCIAS DE ESCAPE 'as secuencias de escape producen efectos importantes en la impresin de resultados a travs de los mtodos 9onsole>DriteEine() y 9onsole>Drite(). 'as secuencias de escape ms comunes sonecuencia de escape in it ia i! ii iM 1.(.2 TIPOS DE DATOS Toda variable que se utilice en un programa, se deber declarar de preferencia al principio del programa y asignarle el tipo de dato respectivo. 'os tipos de datos en 9: son los siguientesTipo sbyte s*ort int long byte us*ort uint ulong float double decimal c*ar string bool Descripcin .0mero entero de ; bits. .0mero entero de "= bits. .0mero entero de 8# bits. .0mero entero de =: bits. .0mero entero sin signo de ; bits. .0mero entero sin signo de "= bits. .0mero entero sin signo de 8# bits. .0mero entero sin signo de =: bits. .0mero real de precisin simple de 8# bits. .0mero real de precisin doble de =: bits. .0mero real de 7= bits. Caracter Unicode de "= bits. Cadena de caracteres. Qalor booleano 1trueDfalse4 TamaFo (b.tes) " # : ; " # : ; : ; "# # .D/ " Ran*o 3"#; a "#9 38#9=; a 8#9=9 3#":9:;8=:; a #":9:;8=:9
37##889#58=;<:99<;5; a 7##889#58=;<:99<;59
Descripcin )ermite agregar una nueva l(nea. )ermite tabular *ori%ontalmente. ,ndica un sonido de alerta del sistema. ,mprime un apostrofe. ,mprime una diagonal invertida. ,mprime unas comillas.
5 a #<< 5 a =<<8< 5 a :#7:7=9#7< 5 a ";::=9::598957<<"="< 3:< 8; /proximadamente j".< x "5 a j8.: x "5 38#: 85; /proximadamente j<.5 x "5 a j".9 x "5 3#; #; /prox. j".5 x "5 a j9.7 x "5 Cualquier caracter Unicode. Cualquier cantidad de caracteres. true o false
'os tipos de datos numricos ms utili%ados en un programa son los siguientes $ntero- int Yeal- double
1.(.3 EJEMPLOS PROPUESTOS )ara practicar la conversin de diagrama de flujo a programa, consideremos los diagramas de flujo de los ejemplos de la seccin ".<.# para escribirlos en lenguaje 9:.
Lenguaje de Programacin I 30
".
$n la l(nea "8 se muestra otra forma de utili%ar comentarios en un programa, y es a travs de la doble pleca 1DD4 al inicio de la l(nea. $ste formato es adecuado para escribir comentarios cortos de solo una l(nea. Como se aclar anteriormente, los comentarios son ignorados por el programa y su 0nica utilidad es para documentar el cdigo fuente. _bservar que todas las variables consideradas para resolver el problema *an sido declaradas antes de ser utili%adas 1l(nea ":4, tomando en cuenta el identificador y el tipo de dato que se defini en el anlisis del problema. $sto se *ace inmediatamente despus del comien%o del bloque del mtodo principal @ain(), es decir, despus de la llave de apertura 1e4. $s de notar que en lenguaje 9:, es posible declarar ms de una variable en una misma instruccin, siempre y cuando sean del mismo tipo, como en este caso que todas son de tipo do2ble, y al final se coloca un punto y coma 1B4 para indicar el fin de la instruccin. /l anali%ar el cdigo fuente de este programa, se puede deducir que la figura utili%ada para la entrada de datos 1,np2t4 en un diagrama de flujo, equivale a dos instrucciones 1l(nea "= y "94- 9onsole>Drite() para mostrar el mensaje y 9onsole>5eadEine() para leer el valor introducido y asignrselo a la variable. $s de suma importancia nombrar a las variables tal como se *an declarado, de lo contrario 9: detectar y mostrar un error. 'a diferencia entre el mtodo 9onsole>Drite() y 9onsole>DriteEine() es que el primero mantiene el cursor al final de la l(nea, en cambio el segundo, despla%a el cursor *asta el inicio de la siguiente l(neaB pero ambos mtodos se utili%an para mostrar un mensaje en pantalla. $s necesario tomar en cuenta que cuando se captura un dato por medio del mtodo 9onsole>5eadEine(), este se lee como una cadena de texto, por lo que se *ace necesario convertirlo cuando se trate de un valor numrico, de lo contrario no se podr utili%ar para reali%ar un clculo. $sto se puede *acer fcilmente a travs de los siguientes mtodosLenguaje de Programacin I 31
ConvertBToDouble() para convertir una cadena de texto a un n0mero real. ConvertBToIntGH() para convertir una cadena de texto a un n0mero entero.
_bservar que en la l(nea "9 se *an fusionado dos instrucciones. 'a primera consiste en leer el dato ingresado por medio del mtodo 9onsole>5eadEine(), y la segunda, convertir a n0mero real el valor le(do a travs del mtodo 9onvert>7o?o2ble(). Cada proceso en un diagrama de flujo 10ssignment4, equivale a una instruccin en lenguaje 9:, tal como se muestra en la l(nea "7. $s de recordar que para utili%ar una variable, sta ya debe contar con un valor asignado, de lo contrario de producir un error o un resultado incorrecto. Tal como se anali% anteriormente, para imprimir un resultado en lenguaje 9:, se utili%a el mtodo 9onsole>DriteEine(), que equivale a la figura -2tp2t en un diagrama de flujo. )ara este ejemplo observar la l(nea #", en donde se manda a imprimir en pantalla el total a pagar, tal como se reali%a en 5067-5. $n la l(nea ## se utili%a el mtodo 9onsole>5eadFe=() para evitar que la ventana se cierre al ejecutar el programa. 'a diferencia entre el mtodo 9onsole>5eadFe=() y el mtodo 9onsole>5eadEine() es que el primero espera a que se presiona cualquier tecla del teclado para terminar la ejecucin del programa, en cambio el segundo, detiene la ejecucin del programa *asta que se presione la tecla Enter. _bservar a continuacin la corrida del programa-
#.
Lenguaje de Programacin I
32
8.
$n este programa existen : variables en total y todas son de tipo do2ble 1l(nea ":4. _bservar que cuando se declara ms de una variable del mismo tipo en una misma instruccin, estas deben estar separadas por una coma 1,4 y al final el punto y coma 194. _bservar nuevamente que por cada figura ,np2t de un diagrama de flujo, se necesita un mtodo 9onsole>Drite() para imprimir el mensaje y un mtodo 9onsole>5eadEine() para capturar el valor de la variable, reali%ando su respectiva conversin. Qeamos a continuacin la corrida del programa-
Lenguaje de Programacin I
33
:.
)or cada dato de salida se debe utili%ar un mtodo 9onsole>DriteEine(), as( como en un diagrama de flujo de flujo que se utili%a el s(mbolo -2tp2t para cada dato. $sto tambin sirve para que el cdigo sea ms claro, tal como se puede apreciar en las l(neas #= y #9. $l resultado en pantalla del programa anterior es-
_bservar el efecto en pantalla que producen las secuencias de escape :- y :t que se encuentra en los mtodos 9onsole>DriteEine() de las l(neas #= y #9. .otar adems, que las secuencias de escape se pueden combinar. 'a secuencia de escape :- lo que *ace es insertar una nueva l(nea y la secuencia de escape :t se utili%a para agregar una tabulacin *ori%ontal, es por esta ra%n que los resultado que genera el programa aparecen un tanto despla%ados a la derec*a. .o es indispensable utili%ar secuencias de escape en un programa, ya que sirven 0nicamente para darle una vistosidad diferente a la impresin de resultados, sin afectar los datos.
Lenguaje de Programacin I 34
<.
Como se seSal antes, las variables deben utili%arse siempre con el mismo identificador con que se declaran, ya que lenguaje 9: distingue entre letras may0sculas y min0sculas, por ejemplo, para 9: no es lo mismo la variable =ibras que la variable libras, porque la primera inicia con una letra may0scula y la segunda con una letra min0scula. Pe recomiendo tener muc*o cuidado con esto. $l resultado en pantalla del programa anterior es el siguiente-
)ara finali%ar con los ejemplos, observar que en todos los programas se *a utili%ado sangr(a despus de abrir un bloque de cdigo a travs de una llave. 'a sangr(a es el espacio que existe entre el inicio de una l(nea y el inicio de una instruccin. Pe utili%a para indicar cules son las instrucciones que corresponden a un determinado bloque. $n realidad, la sangr(a no afecta en nada a la ejecucin del programa porque es ignorada al igual que los comentarios. $l propsito de su uso es una buena prctica de programacin para darle mayor claridad y profesionalidad a los programas. $n este caso no nos tenemos que preocupar por darle sangr(a a las instrucciones, ya que Ais2al /t2dio lo *ace automticamente por nosotros.
Lenguaje de Programacin I 35
1.(.$ EJERCICIOS PROPUESTOS $laborar en lenguaje 9:, los programas de los diagramas de flujo elaborados para los ejercicios propuestos en la seccin ".<.: 1.; BIBLIO RAF'A >ell, &ouglas y )arr, +iae. CI para estudiantes, )rimera $dicin. )earson $ducacin, +xico #5"5. &eitel, Xarvey +. y &eitel, )aul k. Como programar en CI, Pegunda $dicin. )earson $ducacin, +xico #559. /rc*er, Tom. / fondo CI, )rimera $dicin. +cWraT3XillD,nteramericana de $spaSa, #55". koyanes /guilar, 'uis. Nundamentos de programacin Z /lgoritmos, $structuras de datos y _bjetos, Tercera edicin. +cWraT3XillD,nteramericana de $spaSa, #558.
Lenguaje de Programacin I
36