You are on page 1of 36

SALESIANOS

INSTITUTO TCNICO RICALDONE DEPARTAMENTO DE SISTEMAS INFORMTICOS PRIMER AO DE SISTEMAS INFORMTICOS

LENGUAJE DE PROGRAMACIN I PRIMER PERIODO

MODULO I: FUNDAMENTOS DE PROGRAMACIN

INSTRUCTOR: ING. DANIEL CARRANZA SAN SALVADOR, EL SALVADOR 2012

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 12. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar un objeto. De acuerdo a lo anterior, los datos que puede procesar una computadora se clasifican en simples y compuestos. La principal caractersticas de los tipos de datos simples es que ocupan solo una casilla de memoria. Por otra parte, los tipos de datos compuestos se caracterizan por el hecho de que utilizan un conjunto de casillas de memoria. Los tipos de datos compuestos se estudiaran en el Modulo III, por lo que nos enfocaremos de momento en los tipos de datos simples, los cuales se clasifican en tres tipos: a. Numricos b. Alfanumricos c. Lgicos El tipo de dato numrico es el conjunto de los valores numricos. Estos pueden representarse en dos formas distintas: a. Numrico entero: son todos los nmeros positivos o negativos, sin parte fraccionaria o parte decimal. Estos nmeros constan de un signo (+,-) y dgitos (09). Por ejemplo: 37, -9, 0, 148, -256 b. Numrico real: son nmeros que constan de una parte entera y una parte decimal, teniendo siempre un punto decimal y pueden ser positivos o negativos. Por ejemplo: 3.1416, -0.08, 3789.41, -52.321 Nota: cuando se omite el signo en un tipo de dato numrico, se asume que el nmero es positivo. El 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. El contenido que pueden tener estos tipos de datos son: a. Caracteres alfanumricos (A, B ,C, , X, Y, Z; a, b , c, , x, y, z) b. Caracteres numricos (0, 1, 2, , 7, 8, 9) c. Caracteres especiales (+, -, *, /, ^, <, >, $, #, &, , %, etc.)
Lenguaje de Programacin I 2

Como se puede apreciar, es posible representar nmeros como caracteres, pero esto hace que se pierda su propiedad matemtica, es decir, no es posible hacer operaciones con ellos. Todos los caracteres sin excepcin, deben delimitarse por comillas simples () o dobles (), pero en esta asignatura se utilizaran comillas simples. Por ejemplo: F, M, +, -, 0, 1, etc. Por ltimo, tenemos los tipos de datos lgicos, conocidos tambin como booleanos. Son 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. Estos datos no pueden tomar los dos valores al mismo tiempo, o es verdadero o es falso, pero no ambos a la vez. Por ejemplo: Comparacin 20 > 10 A = a 80 <= 80 25 <> 25 Resultado Verdadero Falso Verdadero Falso

Nota: la longitud o el tamao de los tipos de datos depender de las limitaciones del hardware de la computadora utilizada y del lenguaje de programacin que se implemente. 1.2.2 IDENTIFICADORES, CONSTANTES Y VARIABLES Los datos que procesara una computadora, ya sean simples o compuestos, se deben almacenar en casillas o celdas de memoria para utilizarlos posteriormente. A 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, dgitos y el caracter subrayado o guion bajo (_). Los identificadores son muy importantes ya que nos sirven para identificar un objeto dentro de la memoria de la computadora, que de otra forma, tendramos que saber la direccin de donde se encuentre almacenado el objeto, que es un nmero hexadecimal, por lo que es ms fcil asignarle un nombre, el cual tambin tiene un tipo de dato asociado. A continuacin se presentan algunas reglas generales para la asignacin de nombres como identificadores: 1. Debe comenzar con una letra (de la A a la Z o de la a a la z). 2. Los dems caracteres pueden ser letras, dgitos o el smbolo de subrayado. 3. Las letras no deben de llevar tilde. 4. Se recomienda hacer una diferencia entre letras maysculas y minsculas. 5. No debe contener espacios en blanco. 6. No puede coincidir con palabras reservadas propias del lenguaje de programacin utilizado. 7. La longitud se recomienda de 3 caracteres como mnimo y 255 como mximo. 8. El nombre del identificador debe ser significativo. 9. Se debe especificar su tipo de dato. 10. No es recomendable que exista ms de un objeto con un identificador igual que otro.
Lenguaje de Programacin I 3

Para comprender mejor la aplicacin de estas reglas, a continuacin se presentan algunos ejemplos de identificadores tanto validos como no validos: Identificadores validos PrecioArticulo Direccion PrimerApellido Total_Ventas Identificadores no validos Precio Articulo Direccin 1Apellido Total-Ventas

Un punto importante es que los identificadores deben ser nombres significativos, para esto hay que tomar en cuenta lo que se desea representar, por ejemplo: Enunciado Porcentaje de aumento del salario actual Precio de un articulo Nmero de estudiantes de informtica Nmero de carnet de un estudiante Sueldo neto de un empleado Cuota mensual de colegiatura Identificador PorcentajeAumento PrecioArticulo NumEstInf CarnetEstudiante SueldoNeto CuotaMensual

Por otra parte, tenemos las constantes, que son datos que no cambian durante la ejecucin de un algoritmo o programa. Para nombrar las constantes utilizamos identificadores, y estas pueden ser de cualquiera de los tipos de datos existentes: entero, real, caracter, etc. Las constantes deben declararse antes de ser utilizadas para hacer una reserva de memoria donde se guarde el valor que ser utilizado como constante, y ese valor permanece invariable durante su uso. Por ejemplo: PI = 3.1416 Temperatura = 30 Porcentaje = 0.2 Genero = F Mes = 10 contiene el valor de representa una temperatura de 30 grados centgrados contiene un porcentaje de 20% representa el gnero femenino contiene el decimo mes, o sea octubre

Por ltimo, tenemos las variables, que son objetos que pueden cambiar su valor durante la ejecucin de un algoritmo o programa. Para nombrar las variables tambin se utilizan identificadores, y al igual que las constantes, estas pueden ser de cualquiera de los tipos de datos existentes. Es recomendable declarar las variables antes de ser utilizadas para que estn listas al momento de recibir un valor, y dicho valor puede cambiar tantas veces como sea necesario. Hay que tener en cuenta que cada valor que se le asigne a una variable, debe ser del tipo de dato que se ha definido para dicha variable, con el cuidado de que toda variable contiene nicamente el ltimo valor asignado. Tomando en consideracin todo esto al momento de querer resolver un problema a travs de un algoritmo o programa, hay que determinar dos cosas fundamentales: Cuantas y cules son las variables necesarias para solucionar el problema. El tipo de dato que pueden almacenar cada una de las variables.

A continuacin se presentan algunos ejemplos de variables con sus respectivos identificadores, tipos de datos y contenido:
Lenguaje de Programacin I 4

Identificador Total_Ventas Genero EstadoCliente CantidadProducto Categoria Sueldo_Empleado EdadEstudiante Interruptor

Tipo de dato Real Caracter Booleano Entero Caracter Real Entero Booleano

Contenido Total de ventas anuales obtenidas. Identifica el gnero del estudiante. El estado del cliente. Cantidad de producto vendido. Especifica la categora del cliente. Sueldo del empleado. Edad del estudiante. El resultado de hacer una apuesta.

El contenido se refiere a una breve descripcin del propsito de la variable, por lo que se hace necesario entender claramente las variables que se utilizaran para resolver un problema. 1.2.3 EJERCICIOS PROPUESTOS 1. Determina el tipo de dato de los siguientes datos: Dato 2.718228 C -110 falso -9.81 1899 $ 10.0 verdadero 0 Tipo de dato

2. Expresa ejemplos de datos diferentes a los ejemplos para los tipos de datos solicitados. Entero Real Caracter

3. Determina el resultado lgico de las siguientes comparaciones: Comparacin -1 > 0 F <> f 3.1 = 3.11 10.0 <= 10.0 - = _ 120 >= 119 2 = 2 1 <> -1 5 < -5 3 = 3
Lenguaje de Programacin I

Resultado

4. Determina cules de los siguientes identificadores son validos y por qu. Identificador AumentoSalario %Venta PesoNeto 12Meses Precio_Articulo NmeroCliente GeneroEmpleado Promedio/Mensual Cantidad-Total Descuento_Final Valido (Si/No) Por qu?

5. Define tres constantes con su respectivo identificador, valor y descripcin; que representen diferentes tipos de datos. Identificador Valor Descripcin

6. Asigna a cada variable el tipo de dato y el contenido que corresponda. Identificador EstadoEstudiante PorcentajeAumento Numero_Clientes GeneroPersona Promedio_Anual CantidadEmpleados LetraInicialNombre EstadoProducto Calificacion_Final SignoMoneda Tipo de dato Contenido

7. Determina cul es el valor final asignado a la variable X si A = 3 y B = 2. Asignaciones X=1 X=A+B X=1+X X=A X=B X=X X=3 X=XA X=X+B2
Lenguaje de Programacin I 6

Valor final de X

1.3 OPERADORES Los operadores son necesarios para realizar operaciones. Distinguimos entre operadores aritmticos, relacionales y lgicos; as como tambin, existen en algunos lenguajes de programacin como C# y otros, los operadores simplificados y los operadores de incremento y decremento. 1.3.1 OPERADORES ARITMTICOS Los operadores aritmticos nos permiten realizar operaciones entre operandos: nmeros, constantes o variables. El resultado de una operacin aritmtica siempre es un nmero. Es importante tener en cuenta el tipo de dato de los operandos (enteros o reales), ya que casi siempre de esto depende la exactitud de una operacin y un correcto resultado. A continuacin se presentan los operadores aritmticos con algunos ejemplos en donde hay que observar cuidadosamente los resultados. Sea X una variable de tipo entero y V una variable de tipo real: Operador + * Significado Suma Resta Multiplicacin Ejemplos X = 4.5 + 3 V = 4.5 + 3 X = 4.5 - 3 V = 4.5 - 3 X = 4.5 * 3 V = 4.5 * 3 V=4*3 X=4/3 X = 4.0 / 3.0 V=4/3 V = 4.0 / 3 X=5%2 V = (5 % 2) / 2 V = (5.0 % 2.0) / 2 Resultados X=7 V = 7.5 X=1 V = 1.5 X = 12 V = 13.5 V = 12.0 X=1 X=1 V = 1.0 V = 1.33 X=1 V = 0.0 V = 0.5

Divisin

Mdulo

Ahora que se conocen los operadores aritmticos, se presentan los operadores aritmticos simplificados con ejemplos de aplicacin y su correspondiente equivalencia, as como tambin, el resultado de dichos ejemplos, considerando que X es una variable de tipo entero. Operador aritmtico + * / % Forma simplificada += -= *= /= %= Ejemplos X=6 X += 3 X=5 X -= 2 X=4 X *= 2 X=9 X /= 3 X=8 X %= 6 Equivalencias X=6 X=X+3 X=5 X=X-2 X=4 X=X*2 X=9 X=X/3 X=8 X=X%6 Resultados X=6 X=9 X=5 X=3 X=4 X=8 X=9 X=3 X=8 X=2

Nota: observar que el operador mdulo (%) proporciona como resultado el residuo de la divisin (/).
Lenguaje de Programacin I 7

Tenemos adems, los operadores de incremento y decremento que su aplicacin es muy importante porque simplifican la escritura de programas, sobre todo cuando se utilizan variables para contar. Se pueden utilizar antes o despus de la variable, siendo los resultados diferentes, es decir, si se utiliza antes de la variable, el valor de sta se incrementa o decrementa en 1 antes de ser utilizado; y si se utiliza despus de la variable, el valor de sta se incrementa o decrementa en 1 despus de ser utilizado. Si X y Y son variables de tipo entero, se tiene que: Operador Operacin X=5 Y = X++ ++ Incremento X=5 Y = ++X X=3 Y = X--Decremento X=3 Y = --X 1.3.2 OPERADORES RELACIONALES Los operadores relacionales se utilizan para comparar dos operandos, que pueden ser nmeros, caracteres, constantes o variables. Las constantes o variables, a su vez, pueden ser de los tipos de datos expuestos anteriormente. A continuacin se presentan los operadores relacionales con ejemplos de su uso y el resultado de dichos ejemplos. Considerar que RES es una variable de tipo booleano. Operador == != < > <= >= 1.3.3 OPERADORES LGICOS Por 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 (falso o verdadero). En la siguiente tabla se muestran los operadores lgicos, ejemplos de su uso y los resultados de dichos ejemplos, considerando que X es una variable de tipo booleano. Operador ! && || Operacin Negacin (not) Conjuncin (and) Disyuncin (or) Ejemplos X = !(7 > 15) X = (5 > 2) && (2 <= 3) X = (2 <= 1) || (3 > 2) Resultados X = verdadero X = verdadero X = verdadero Operacin Igual a Diferente de Menor que Mayor que Menor o igual que Mayor o igual que Ejemplos RES = h == n RES = a != b RES = 7 < 15 RES = 22 > 11 RES = 15 <= 2 RES = 35 >= 20 Resultados RES = falso RES = verdadero RES = verdadero RES = verdadero RES = falso RES = verdadero Ejemplos X=5 Y=5 X=6 X=5 Y=6 X=6 X=3 Y=3 X=2 X=3 Y=2 X=2 Resultados

Nota: los valores booleanos verdadero y falso, se pueden representar por 1 y 0 respectivamente.
Lenguaje de Programacin I 8

Las definiciones de estas operaciones se resumen en una tabla conocida como tabla de verdad. Sean P y Q variables de tipo booleano, entonces tenemos que: P Verdadero 1 Verdadero 1 Falso 0 Falso 0 Q Verdadero 1 Falso 0 Verdadero 1 Falso 0 (!P) Falso 0 Falso 0 Verdadero 1 Verdadero 1 (!Q) Falso 0 Verdadero 1 Falso 0 Verdadero 1 (P || Q) Verdadero 1 Verdadero 1 Verdadero 1 Falso 0 (P && Q) Verdadero 1 Falso 0 Falso 0 Falso 0

De acuerdo a la tabla anterior, si P es un valor verdadero, entonces su negacin (!) resulta un valor falso, y si P es un valor falso, entonces su negacin resulta un valor verdadero. El operador conjuncin (&&) producir un resultado verdadero cuando cada una de las condiciones tienen valor verdadero; de lo contrario, el resultado ser falso. El operador disyuncin (||) genera un valor verdadero en todos los casos, excepto cuando todas las condiciones sean falsas. Las expresiones que estn constituidas por nmeros, constantes o variables y operadores lgicos o relacionales; son llamadas expresiones lgicas o booleanas. El valor que pueden tomar estas expresiones es 1 (en caso de ser verdaderas) 0 (en caso de ser falsas). Es importante tener en cuenta que cuando se utilizan los operadores de relacin con valores lgicos, el valor falso es menor que el valor verdadero. Por ejemplo, considerar que X es una variable de tipo booleano: X = (5 < 2) > (8 > 5) = falso > verdadero = falso X = (5 > 2) > (8 < 5) = verdadero > falso = verdadero 1.3.4 PRIORIDADES DE LOS OPERADORES Por ltimo, y luego de haber presentado los diferentes operadores (aritmticos, relacionales y lgicos), a continuacin se presenta la tabla de jerarqua de los mismos. Cabe destacar que por lo general, las expresiones se evalan de izquierda a derecha, incluso si existen operadores con igual nivel de prioridad en una expresin. Operadores () !, ++, -*, /, % +, ==, !=, <, >, <=, >= &&, || +=, -=, *=, /=, %= Jerarqua Mayor

Menor

El operador ( ) es asociativo y tiene la prioridad ms alta, es decir, todas aquellas operaciones o expresiones que se encuentren entre parntesis, se realizaran primero. Si existen expresiones entre parntesis anidados, se evalan de adentro hacia fuera, es decir, el parntesis mas interno se evala primero hasta llegar al parntesis mas externo.
Lenguaje de Programacin I 9

A continuacin se presenta un par de ejemplos de la aplicacin de las prioridades de los operadores, considerando que X es una variable de tipo entero. Verifica y compara el resultado manualmente y en una calculadora o computadora. Ejemplo 1: X = -4 * (2 + (3 6)) / ((9 + 9 2) / 8 + 2) X=1 1.3.5 EXPRESIONES ALGORTMICAS Las expresiones matemticas o algebraicas se deben escribir o convertir en formato lineal para que puedan ser entendidas por la computadora, y una vez convertidas son denominadas expresiones algortmicas. Esto obliga al uso frecuente de parntesis que indiquen el orden de evaluacin correcta de las operaciones. Por ejemplo: Expresin algebraica A = r2 Expresin algortmica A = 3.1416 * r * r m = (y2 y1) / (x2 x1) Un aspecto importante en las expresiones algortmicas es la operacin de asignacin, que es el modo de asignarle valor a una variable mediante el signo u operador igual (=). Este signo tiene, en el caso de los algoritmos o programas, una connotacin un poco diferente a la que se la da en matemticas. El signo igual (=) significa que la computadora va a realizar o ejecutar lo que est a la derecha del signo y lo va almacenar en la variable que se encuentra a la izquierda de ste. De acuerdo a lo anterior, se puede deducir claramente que a la izquierda del signo igual (=) solo puede haber una variable y al lado derecho de ste puede haber una constante, una variable una expresin. A continuacin se establecen algunas reglas para la asignacin: 1. Una variable en el lado derecho de una sentencia de asignacin debe tener un valor antes de que la sentencia de asignacin se ejecute. Por ejemplo: Si X no tiene un valor antes de que se ejecute Y = X + 1, se producir un error lgico. La solucin sera asignar un valor a X que podra ser X = 2, luego Y = 2 + 1, cuyo resultado es Y = 3. 2. En la izquierda de una sentencia de asignacin solo puede existir una solo variable, por lo que no sera vlido hacer lo siguiente: Sueldo + Comision = SueldoTotal Compra Descuento = 330.15 3. Al lado derecho del signo igual (=) puede haber una constante, una variable o una expresin, por lo tanto es vlido hacer lo siguiente: Aumento = Sueldo * 0.2 SueldoTotal = Sueldo + Aumento 4. La computadora siempre resuelve lo de la derecha del signo igual (=) y su resultado lo almacena en la variable que est a la izquierda de ste. La operacin de asignacin es destructiva, por lo que si una variable tena un valor asignado antes de asignarle uno nuevo, ste se destruye, conservando ahora el nuevo valor, razn por la cual hay que tener mucho cuidado al momento de manipular el valor de una variable.
Lenguaje de Programacin I 10

Ejemplo 2: X = ((9 + 8 7 / 1 * ((6 - 2) * 2) / 7) / 3) * 2 X=6

1.3.6 EJERCICIOS PROPUESTOS 1. Calcula manualmente el valor aritmtico de las siguientes expresiones: Expresin (22 % 8) / 3 7%4+7/4 8 + 12 * 5 % 2 11 7/3+34*4/2*2 18 / 2 + (6 * 2) % 7 2 * 2 / 2 8 + 2 * (18 2 * 2) + 3 * 6 / 2 (10 * (12 - 4) / 6) * 8 + 11 / 3 * 6 5 * 9 15 / 3 * (7 + (68 5 * 3 + (9 % 5 / 2) / 3) / 5) 8 * 7 * (7 % 4 * 2) / 6 * 4 30 + 13 % 7 % 5 * 9 + 8 (18 / 2 + (6 * 2) % 7 2 * 2 / 2) * (7 / 3 + 3 * 4 / 2 * 2) 2. Determina manualmente el valor lgico de las siguientes expresiones: Expresin (3 * 2 * 6 / 4 / 3) > (3 * 2 * 4 / 2) && (5 > 9 / 3) !(2 * 2 == 4 / 2 || (15 10) * 8 > 4) || !(2 == 1) 10 % 2 * 3 + 5 != 20 && 5 % 3 * 3 % 2 <= 15 (5 * 5 + 10 % 6 / 2) >= (3 * 3 / 3 + 3) ((15 % 6 * 2 * 7) > 7 + 8 * 3 % 5) || !(5 * 2) !(!((3 (-3)) * 2 < (3 (-3) * 2) || 3 % 2 * 3 > 6)) (3 >= 4 && 5 > 3 && 3 < 5 && 3 > 3) || !(4 >= 4 || 20 > 5) !(5 >= 7 * 2) || (30 8 * 2 / 4 != 3 * 2 / 2) (15 >= 7*2 && 8 > 3 && 15 > 6) || !(21 < 5 + 24 / 3 * 2) !((7 * 3 / 2 * 4) > (12 / 2 * 6 >= 15 * 2 / 17 == 15)) Resultado Resultado

3. Determina por qu las siguientes expresiones algortmicas no son validas y escribir las correctas. Expresin algortmica Y2 Y1 = m * (X2 X1) A=*r*r V = 0.3333 (r * r)*h P2 = P1 h C2 = A2 + B2 Por qu no es vlida? Solucin

4. Convierte en expresiones algortmicas las siguientes expresiones algebraicas: Expresin algebraica E = mc V = r2h A = (R2 r2) Y = Y0 + V0T - 1/2gT2
2

Expresin algortmica

Lenguaje de Programacin I

11

1.4 PROBLEMAS Y ALGORITMOS Los humanos efectuamos cotidianamente series de pasos, procedimientos o acciones que nos permiten alcanzar algn resultado o resolver algn problema. Estas series de pasos, procedimientos o acciones, comenzamos a aplicarlas desde que empieza el da, cuando, por ejemplo, decidimos baarnos. Posteriormente, cuando tenemos que ingerir alimentos tambin seguimos una serie de pasos que nos permiten alcanzar un resultado especfico: tomar el desayuno. La historia se repite innumerables veces durante el da. En 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 algoritmo es un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Muchas veces aplicamos un algoritmo de manera inadvertida, inconsciente o automtica. Esto ocurre generalmente cuando el problema al que nos enfrentamos lo hemos resuelto con anterioridad un gran nmero de veces. Supongamos, por ejemplo, que tenemos que abrir una puerta. Lo hemos hecho tantas veces que difcilmente nos tomamos la molestia de enumerar los pasos para alcanzar este objetivo. Lo hacemos de manera automtica. Lo mismo ocurre cuando nos subimos a un automvil, lustramos nuestros zapatos, hablamos por telfono, nos vestimos, cambiamos la llanta de un automvil o simplemente cuando tomamos un vaso con agua. En la siguiente figura se pueden observar las etapas que se deben seguir para resolver algn problema.

La etapa de anlisis del problema sirve para comprender y definir claramente la naturaleza del problema. La etapa de construccin del algoritmo especifica la secuencia lgica de pasos para la solucin del problema en base al anlisis realizado previamente. La etapa de verificacin del algoritmo consiste en seguir los pasos exactos especificados en la construccin del algoritmo para ver si la solucin resuelve verdaderamente el problema. La 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 haga la computadora; mientras que esto no se comprenda, no tiene caso pasar a la siguiente etapa. Para poder definir con precisin el problema, se requiere que las especificaciones (datos) 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 eficaz.
Lenguaje de Programacin I 12

Un algoritmo consta de tres secciones o mdulos principales:

Los datos de entrada representan la operacin o accin que permite el ingreso de los datos del problema. El procesamiento de los datos representa la operacin o conjunto de operaciones cuyo objetivo es obtener la solucin del problema. La impresin de resultados o datos de salida representa una operacin o conjunto de operaciones que permite comunicar al exterior la solucin obtenida. Por otra parte, las caractersticas que deben tener los algoritmos son las siguientes: 1. Precisin. Los pasos a seguir en el algoritmo se deben precisar claramente. 2. Determinismo. Dado un conjunto de datos de entrada idnticos, el algoritmo siempre debe arrojar los mismos resultados. 3. Finitud. Independientemente de la complejidad del algoritmo, siempre debe tener una longitud finita. 1.4.1 ANLISIS DEL PROBLEMA El anlisis del problema es la etapa fundamental para resolver un problema. Esta fase requiere normalmente el mximo de imaginacin y creatividad por parte del analista, ya que de esto depende la construccin de un buen algoritmo. Los elementos que debe poseer el anlisis del problema son los siguientes: 1. Variables de salida. Son los datos de salida que se entregan como resultado al usuario y constituyen la salida de informacin desde la computadora. 2. Variables de entrada. Son los datos de entrada que se solicitan al usuario para generar las variables de salida y constituyen la entrada de informacin hacia la computadora. 3. Proceso. Es el procedimiento que transforma las variables de entrada en las variables de salida, efectuando clculos de acuerdo con una secuencia de operaciones establecidas. En este punto podran utilizarse variables de proceso, pero esto depender de cada problema. Existen 5 pasos a seguir para llevar a cabo un buen anlisis del problema son los siguientes: a. Plantear el problema de forma breve, clara y precisa para tener un panorama general de ste; tanto de forma textual como grafica (definicin del problema). b. Examinar cuidadosamente el problema a fin de identificar los datos o resultados que se esperan obtener (variables de salida). c. Identificar los datos de entrada que se suministran y que puedan ser tiles para obtener la solucin (variables de entrada). d. Identificar los procedimientos necesarios que permitan transformar los datos de entrada en datos de salida (proceso). e. Verificar la solucin del problema con datos de prueba (corrida), comenzado por asignar valores a las variables de entrada, luego calcular las variables de proceso si existen; y por ltimo, determinar las variables de salida.
Lenguaje de Programacin I 13

Para 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. A continuacin se presenta un par de ejemplo para comprender mejor la aplicacin del anlisis del problema. 1.4.2 EJEMPLOS PROPUESTOS 1. Un supermercado ofrece un descuento de 5% sobre el total de la compra y un cliente desea saber cunto pagar finalmente por su compra. Solucin: a. Definicin del problema Obtener la cantidad de dinero que tendr que pagar el cliente si el supermercado ofrece un 5% de descuento sobre el total de la compra. Total de la compra b. Variables de salida Identificador TotalPago Tipo de dato Real Descripcin Contiene la cantidad de dinero a pagar por el cliente ya con el descuento aplicado. PROCESO Total a pagar

c. Variables de entrada Identificador TotalCompra d. Proceso En este problema se utilizar la siguiente variable de proceso para calcular el descuento: Identificador Descuento Tipo de dato Real Descripcin Representa la cantidad de descuento a aplicar a la compra del cliente. Tipo de dato Real Descripcin Contiene la cantidad de dinero de la compra efectuada por el cliente.

Descuento = TotalCompra * 0.05 TotalPago = TotalCompra - Descuento e. Corrida TotalCompra 100.00 Variables Descuento 100.00 * 0.05 = 5.00 TotalPago 100.00 5.00 = 95.00

La 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 forma: TotalPago = TotalCompra (TotalCompra * 0.05) Observar que todas las variables son de tipo real, porque se utilizan para manejar valores monetarios y para lo cual se requieren decimales.
Lenguaje de Programacin I 14

2. Dada una cantidad monetaria en euros, convertirla a dlares considerando que 1.00 = $1.25. Solucin: a. Definicin del problema Convertir cierta cantidad de euros a dlares, tomando en cuenta que 1.00 = $1.25. Cantidad de euros b. Variables de salida Identificador Dolares Tipo de dato Real Descripcin Contiene la cantidad de dlares convertidos a partir de cierta cantidad de euros. PROCESO Cantidad de dlares

c. Variables de entrada Identificador Euros d. Proceso En este problema no se requieren variables de proceso porque el resultado se puede obtener directamente a partir de los datos de entrada. Dolares = Euros * 1.25 e. Corrida Variables Euros 25.00 Dolares 25.00 * 1.25 = 31.25 Tipo de dato Real Descripcin Contiene la cantidad de euros que se desea convertir a dlares.

3. Se han realizado 3 exmenes en el primer periodo de la asignatura de Lenguaje de Programacin I y se desea saber cul es el promedio de las calificaciones de un estudiante. Solucin: a. Definicin del problema Calcular el promedio de 3 calificaciones de un estudiante del ITR. Calificaciones b. Variables de salida Identificador Promedio Tipo de dato Real Descripcin Contiene el promedio de las 3 calificaciones de un estudiante. PROCESO Promedio

c. Variables de entrada Identificador Calificacion1 Calificacion2 Calificacion3 Tipo de dato Real Real Real Descripcin Contiene la calificacin del examen 1. Contiene la calificacin del examen 2. Contiene la calificacin del examen 3.
15

Lenguaje de Programacin I

d. Proceso En este problema se utilizar 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 podra obtener directamente con las variables de entrada, pero para hacer de forma ms ordenada las operaciones, se har de esta manera. Identificador Suma Tipo de dato Real Descripcin Contiene la suma de las 3 calificaciones.

Suma = Calificacion1 + Calificacion2 + Calificacion3 Promedio = Suma / 3 e. Corrida Variables Calificacion1 8.5 Calificacion2 9.0 Calificacion3 9.5 Suma 8.5 + 9.0 + 9.5 = 27.0 Promedio 27.0 / 3 = 9.0

4. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto dinero obtendr por concepto de comisiones por las dos ventas realizadas en el mes y el total que recibir tomando en cuenta su sueldo base y comisiones. Solucin: a. Definicin del problema Calcular la comisin (10%) y el sueldo total que recibir un vendedor tomando en cuenta que ha realizado dos ventas y que recibe un sueldo base. Sueldo base y ventas b. Variables de salida Identificador Comision SueldoTotal Tipo de dato Real Real Descripcin Contiene la cantidad de comisin que recibir el vendedor por las dos ventas realizadas en el mes. Contiene el sueldo total que recibir el vendedor. PROCESO Comisin y suelto total

c. Variables de entrada Identificador SueldoBase Venta1 Venta2 d. Proceso En 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 utiliza para calcular otro resultado, tal como se muestra a continuacin: Comision = (Venta1 + Venta2) * 0.10 SueldoTotal = SueldoBase + Comision
Lenguaje de Programacin I 16

Tipo de dato Real Real Real

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. Corrida SueldoBase 400.00 Venta1 50.00 Venta2 75.00 Variables Comision (50.00 + 75.00) * 0.10 = 12.50 SueldoTotal 400.00 + 12.50 = 412.50

5. Si al recibir como datos la longitud y el peso de un objeto expresados en pies y libras, se desean convertir a metros y kilogramos respectivamente, tomando en cuenta que: 1 pie = 0.09290 metros 1 libra = 0.45359 kilogramos Solucin: a. Definicin del problema Convertir la longitud y el peso de un objeto dados en pies y libras, a metros y kilogramos respectivamente.
Longitud en pies y peso en libras

PROCESO

Longitud en metros y peso en kilogramos

b. Variables de salida Identificador Metros Kilogramos Tipo de dato Real Real Descripcin Contiene la longitud del objeto convertida a metros. Contiene el peso del objeto convertido a kilogramos.

c. Variables de entrada Identificador Pies Libras d. Proceso En este problema no se requieren variables de proceso porque para realizar las conversiones no se requieren ms que los datos de entrada. Veamos a continuacin: Metros = Pies * 0.09290 Kilogramos = Libras * 0.45359 e. Corrida Pies 20.00 Libras 10.00 Variables Metros 20.00 * 0.09290 = 1.8580 Kilogramos 10.00 * 0.45359 = 4.5359 Tipo de dato Real Real Descripcin Contiene la longitud del objeto expresada en pies. Contiene el peso del objeto expresado en libras.

1.4.3 EJERCICIOS PROPUESTOS Para cada uno de los problemas planteados desarrollar el anlisis del problema aplicando los 5 pasos. 1. Dada la altura y la base de un tringulo, calcular su superficie sabiendo que: Superficie = (Base * Altura) / 2
Lenguaje de Programacin I 17

2. Un empleado desea saber el ingreso total y el promedio mensual de los sueldos del primer trimestre del ao. 3. Al recibir como datos el radio y la altura de un cilindro, calcular el rea y su volumen as: rea = 2 * * Radio * Altura Volumen = * Radio2 * Altura 4. 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 hectreas. Considerar lo siguiente: 1 acre = 4047 m2 1 hectrea = 10,000 m2 5. Al recibir como datos las coordenadas de los puntos P1, P2 y P3 que corresponden a los vrtices de un tringulo, calcular su permetro, sabiendo que para cada punto existe un valor en X y un valor en Y; considerando adems, que la distancia entre dos puntos se calcula as:

6. Dados como datos dos nmeros reales, se desea calcular la suma, la resta, la multiplicacin y la divisin de dichos nmeros. 7. 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. 8. Al recibir como dato el radio de un circulo, calcular el rea y la longitud de la circunferencia, sabiendo que: rea = * Radio2 Circunferencia = 2 * * Radio 9. Calcular el sueldo neto de un trabajador, al cual se le aplican los siguientes descuentos: Renta = 10%, AFP = 6% e ISSS = 3%. Tambin, se desea saber el total de descuentos. 10. Determinar la nota final de un estudiante, la cual depende de lo siguiente: Tareas = 20%, Portafolio = 25%, Laboratorio = 25% y Examen = 30%. 11. Dados como datos los valores de los dos catetos de un tringulo rectngulo, calcular el valor de la hipotenusa. 12. Calcular el nmero de segundos que hay en un determinado nmero de das. 13. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada persona invierte con respecto a la cantidad total invertida. 14. En un hospital existen tres reas: ginecologa, pediatra y traumatologa. Se desea obtener el monto que recibir cada rea sabiendo que el presupuesto anual del hospital se reparte conforme a lo siguiente: Ginecologa Pediatra 40% 50%

Traumatologa 10%

15. Suponer 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 razn de 2% mensual.
Lenguaje de Programacin I 18

1.5 DIAGRAMAS DE FLUJO El diagrama de flujo representa la esquematizacin grfica de un algoritmo. En realidad muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema. La construccin correcta del mismo es muy importante, ya que a partir de ste se escribe el programa en un lenguaje de programacin determinado. Es de aclarar que el diagrama de flujo se debe construir de manera independiente del lenguaje de programacin utilizado. El diagrama de flujo representa la solucin del problema. El programa representa la implementacin en un lenguaje de programacin. 1.5.1 SIMBOLOGIA DE LOS DIAGRAMAS DE FLUJO A continuacin, se presentan los smbolos que se utilizarn, junto con una explicacin de los mismos. stos satisfacen las recomendaciones de la International Organization for Standardization (ISO) y el American National Standards Institute (ANSI). Smbolo Descripcin Se utiliza para marcar el inicio (start) y el fin (end) del diagrama de flujo. Se utiliza para introducir los datos de entrada, es decir, expresa lectura. Algunas veces tambin se utiliza para la impresin de resultados. Representa un proceso. En su interior se colocan asignaciones, operaciones aritmticas, etc. Se utiliza para representar una decisin. En su interior se almacena una condicin, y, dependiendo del resultado, se sigue por una de las ramas o caminos alternativos. Este smbolo se utiliza con pequeas variaciones en las estructuras selectivas if e if-else, as como en las estructuras repetitivas for, while y do-while, ambas sern analizadas en el siguiente mdulo. Se utiliza para representar una decisin mltiple (switch), que se analizar en el siguiente mdulo. En su interior se almacena un selector, y, dependiendo del valor de dicho selector, se sigue por una de las ramas o caminos alternativos. Se utiliza para representar la impresin de un resultado, es decir, expresa escritura.

Expresan la direccin del flujo del diagrama.

Expresa conexin dentro de una misma pgina.

Representa conexin entre pginas diferentes.


Lenguaje de Programacin I 19

Existe software para construir diagramas de flujo, por lo que la simbologa podra cambiar un poco con respecto a los smbolos estndar presentados anteriormente. Por ejemplo, el programa RAPTOR que se utilizar en esta asignatura, posee algunas variantes en la simbologa, pero en general, se apega bastante bien para los propsitos de ste curso. A continuacin se muestra la simbologa utilizada por RAPTOR: Smbolo Descripcin El smbolo Start representa el inicio del diagrama de flujo. Se muestra por defecto, por lo que no es necesario agregarlo. El smbolo End representa el fin del diagrama de flujo. Se muestra por defecto, por lo que no es necesario agregarlo. Este smbolo se llama Input y representa la entrada de datos. Este smbolo se llama Assignment y representa un proceso o asignacin. Este smbolo se llama Output y representa la salida de datos. Este smbolo se llama Selection y representa una decisin. Es utilizado para las estructuras selectivas if e if-else.

El smbolo Loop representa un ciclo. Es utilizado para las estructuras repetitivas for, while y do-while.

A continuacin se presentan las etapas que se deben seguir en la construccin de un diagrama de flujo.

Lenguaje de Programacin I

20

El diagrama de flujo debe ilustrar grficamente los pasos o procesos que se deben seguir para alcanzar la solucin de un problema. Los smbolos presentados, colocados en los lugares adecuados, permiten crear una estructura grfica flexible que ilustra los pasos a seguir para alcanzar un resultado especfico. El diagrama de flujo facilita entonces la escritura del programa en un lenguaje de programacin. A continuacin se presenta el conjunto de reglas para la construccin de diagramas de flujo: 1. Todo diagrama de flujo debe tener un inicio y un fin. 2. Las lneas utilizadas para indicar la direccin del flujo del diagrama deben ser rectas: verticales u horizontales. 3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben estar conectadas. La conexin puede ser a un smbolo que exprese lectura, proceso, decisin, impresin, conexin o fin del diagrama. 4. El diagrama de flujo debe construirse de arriba hacia abajo y de izquierda a derecha. 5. La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje de programacin. La solucin presentada se puede escribir posteriormente en diferentes lenguajes de programacin. 6. Al realizar una tarea compleja, es conveniente poner comentarios que expresen o ayuden a entender lo que hayamos hecho. 7. Si la construccin del diagrama de flujo requiriera ms de una hoja, debemos utilizar los conectores adecuados y enumerar las pginas correspondientes. 8. No puede llegar ms de una lnea a un smbolo determinado. Un diagrama de flujo muestra, como se seal anteriormente, la esquematizacin grfica de un algoritmo. Su correcta construccin es importante, porque a partir del mismo se debe escribir el programa en un lenguaje de programacin determinado. Es conveniente comenzar a desarrollar una habilidad y una capacidad de razonamiento que permita, en la medida que se practique, obtener la solucin a los problemas planteados. Antes de presentar los diagramas de flujo de los ejemplos de la seccin 1.4.2 que sern realizados en RAPTOR, en su versin 4.0.4.0003 y el cual puede descargarse gratuitamente de la siguiente direccin web, veremos algunos aspectos importantes referentes a esta herramienta. http://raptor.martincarlisle.com/ Para agregar una nueva figura del panel de smbolos (Symbols) en un diagrama de flujo, existen dos formas muy sencillas de hacerlo: 1. Seleccionamos la figura deseada y luego hacemos clic en la posicin donde la queremos agregar. 2. Arrastramos la figura deseada hasta la posicin donde la queremos agregar. Una vez que hemos agregado una nueva figura al diagrama de flujo, esta se debe configurar dependiendo de la figura que se trate, haciendo doble clic sobre sta y agregando los parmetros necesarios en los campos requeridos. Veamos a continuacin cmo se configuran las figuras a utilizar en los ejemplos y ejercicios de ste mdulo, que son los smbolos Input, Statement y Output; posteriormente se trataran el resto de smbolos en los siguientes mdulos de la asignatura.
Lenguaje de Programacin I 21

Esta es la ventana de entrada para configurar la figura Input. En el campo Prompt Here se debe escribir entre comillas dobles ( ) un mensaje para solicitar un dato de entrada. En el campo Variable Here se debe escribir el nombre de la variable donde se guradara el dato de entrada. Si todo esta bien, se debe hacer clic sobre el botn Done y listo.

Esta es la ventana de entrada para configurar la figura Statement. En el campo Set se debe escribir el nombre de la variable que se quiere calcular. En el campo to se debe escribir la expresin u operacin que se asignara a la variable. Si todo esta bien, se debe hacer clic sobre el botn Done y listo.

Esta es la ventana de entrada para configurar la figura Output. En el campo Output Here se debe escribir entre comillas dobles ( ) un mensaje para indicar el resultado, seguido del simbolo + y luego la variable que se quiere mostrar. Si todo esta bien, se debe hacer clic sobre el botn Done y listo.

Lenguaje de Programacin I

22

Para ejecutar el diagrama de flujo, se puede hacer de dos formas diferentes: 1. Hacemos clic sobre el botn Execute to Completion 2. Presionamos la tecla F5 Para detener la ejecucin del diagrama de flujo por alguna razon antes que finalice, podemos presionar el botn Stop 1.5.2 EJEMPLOS PROPUESTOS Elaborar los diagramas de flujo de los ejemplos de la seccin 1.4.2 tomando en cuenta el anlisis del problema realizado. 1.

Observar que en la ventana MasterConsole 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. 2.

Lenguaje de Programacin I

23

3.

4.

Lenguaje de Programacin I

24

Observar que en el diagrama de flujo anterior existen dos figuras Output, ya en este problema se requieren dos datos de salida, por lo que se hace necesario marcar la opcin End current line en la ventana de entrada de la primera figura Output, tal como se muestra a continuacin.

La opcin End current line se utiliza para que la siguiente salida se muestre en una nueva lnea en la ventana MasterConsole, tal como se muestra en la corrida del diagrama de flujo. 5.

1.5.3 EJERCICIOS PROPUESTOS Construir el diagrama de flujo en formato estndar y en RAPTOR para todos los ejercicios propuestos en la seccin 1.4.3 y tomando en cuenta el anlisis del problema realizado para cada ejercicio.
Lenguaje de Programacin I 25

1.6 PROGRAMAS Un programa es un conjunto de instrucciones que sigue la computadora para alcanzar un resultado especfico. El programa se escribe en un lenguaje de programacin a partir del diseo 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. Hay cientos de lenguajes de programacin, pero slo unos cuantos han dejado huella, volvindose muy populares, tal es el caso de C#, que ser el lenguaje de programacin a utilizar en esta asignatura por ser de propsito general. C# es un lenguaje de programacin de alto nivel orientado a objetos, cuya metodologa es de las ms recientes y exitosas en materia de programacin. Un programa escrito en lenguaje de alto nivel recibe el nombre de programa fuente o cdigo fuente. Un programa fuente escrito en C# debe ser compilado (traducido) a lenguaje mquina, al que se le denomina programa ejecutable; lo que significa que existirn por lo menos dos archivos cuando se escriba algn programa: archivo fuente y archivo ejecutable. Para crear programas en C# existen diversas herramientas llamadas IDE (Entorno de Desarrollo Integrado), que pueden ser gratuitas o de pago. Una de las ms conocidas y utilizadas es el IDE Visual Studio, el cual ser utilizado en esta asignatura en su versin 2008 o 2010, y que puede ser descargado del Centro de descargas de MSDN en su versin gratuita y/o de evaluacin en la siguiente direccin web: http://msdn.microsoft.com/es-es/aa570309 La tarea intelectual, la que requiere de un pensamiento profundo, de una capacidad de razonamiento flexible y crtica, corresponde a la construccin del diagrama de flujo, que representa la solucin detallada del problema. La escritura o codificacin del programa, por otra parte, puede resultar una tarea sencilla si conocemos las reglas que constituyen el lenguaje de programacin. Veamos a continuacin el primer programa escrito en C#. Al abrir Visual Studio (versin 2010), se presentara una pantalla similar a la siguiente:

Lenguaje de Programacin I

26

Luego seleccionamos un Nuevo proyecto ya sea desde la Pagina principal o desde el men Archivo. Se mostrara la siguiente ventana donde marcamos Aplicacin de consola, asignamos un nombre para nuestro proyecto, en este caso es PrimerPrograma y hacemos clic en el botn Aceptar, tal como se muestra a continuacin:

Al crear un nuevo proyecto tambin se crea una solucin que por defecto tiene el mismo nombre del proyecto. Esta solucin es ubicada por defecto en un nuevo directorio dentro de la carpeta Projects de Visual Studio, cuyo nombre es tambin el mismo de la solucin, tal como se muestra en el Explorador de soluciones de la siguiente pantalla donde adems, nos presenta una plantilla bsica para un programa de consola, que es el archivo Program.cs.

Editamos la plantilla del archivo Program.cs de tal manera que nos quede el programa similar al siguiente:
Lenguaje de Programacin I 27

Las lneas de 1-4 representan un encabezado de comentario que sirve para documentar el archivo fuente, ya que es una buena practica de programacin utilizar comentarios al inicio del cdigo fuente para incorporar informacin acerca del programa (autor, descripcin, fecha, etc.). Un comentario en Visual C# debe comenzar con /* y terminar con */ independientemente de la cantidad de lneas que contenga y puede utilizarce en cualquier parte del programa, siendo ignorado por la computadora al momento de compilar y ejecutar el programa. La lnea 5 incorpora el espacio de nombres System a travs de la directiva using, que contiene las clases basicas para un programa, como por ejemplo la clase Console (lnea 13 y 14). En otras palabras un espacio de nombres es una biblioteca de clases con diferentes propositos para ser utilizadas 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 (POO). La lnea 7 es el espacio de nombres (namespace) propio de nuestro proyecto, cuyo nombre es igual al del proyecto que hemos creado. La lnea 8 representa me diante una llave de apertura, el inicio de las instrucciones que corresponden al espacio de nombres PrimerPrograma y la lnea 17 representa el fin del espacio de nombres mediante una llave de cierre. La lnea 9 es la clase por defecto que se crea para nuestro espacio de nombres, la cual tiene por nombre Program y que puede ser modificado a nuestra conveniencia. La lnea 10 representa el inicio de las instrucciones de la clase y la lnea 16 representa el fin de sta. La lnea 11 representa el metodo principal del programa llamado Main(), el cual debe estar dentro de una clase, en este caso se encuentra dentro de la clase Program. La lnea 12 indica el inicio de las instrucciones del metodo Main(), siendo la lnea 15 el indicador del fin de este. El metodo Main() se establece como static porque no forma parte de un objeto como tal, y sirve unicamente para indicar al programa donde tiene que comenzar. Adems, ste no devuelve ningn valor, por lo que se declara como void y tampoco recibe argumentos, dejando vacios los parentesis.
Lenguaje de Programacin I 28

La lnea 13 indica a la computadora que realice una accin, es decir, que imprima en la pantalla la cadena de caracteres incluida entre comillas dentro del mtodo Console.WriteLine(). En algunas ocasiones, a una cadena de caracteres se le llama mensaje. Observar el punto y coma que se encuentra al final de esta lnea. La lnea 15 es el mtodo Console.ReadLine(), que se utiliza en este caso para detener la ejecucin del programa hasta que se presione la tecla Enter, por lo que siempre debe incluirse antes de la llave de cierre del bloque del mtodo principal Main(). Observar el punto y coma que se encuentra al final de esta lnea. Tambin se puede utilizar el mtodo Console.ReadKey() para este propsito. Para ejecutar el programa lo podemos hacer de 3 formas diferentes: 1. Seleccionando el men Depurar y hacemos clic sobre la opcin Iniciar depuracin. 2. Haciendo clic sobre el botn 3. Presionando la tecla F5 Al ejecutar el programa anterior, se tendra en pantalla el resultado siguiente: que se encuentra en la barra de herramientas estandar.

Todas las lneas de cdigo que finalizan con un punto y coma (;), son llamadas instrucciones, que indican una accin a realizar, por lo que un punto y coma especifica la terminacin de una instruccin. Estas instrucciones por lo general estn contenidas dentro de un bloque de cdigo ({ }). Ahora bien, surge la siguiente pregunta cmo convertir un diagrama de flujo en un programa o viceversa? Esto depende de la habilidad de cada programador, pero existen algunas analogas que se pueden tomar en cuenta para llevar a cabo esta tarea. Por ejemplo, para convertir el programa anterior en un diagrama de flujo, basta con observar y entender lo que hace el programa: imprimir un mensaje en pantalla. Esto se hace fcilmente en RAPTOR utilizando la figura Output. Observa que la figura para la impresin de resultados en un diagrama de flujo equivale al mtodo Console.WriteLine() de C#, y las llaves que contienen las instrucciones del mtodo Main(), equivalen a las figuras Start y End respectivamente, as:

Lenguaje de Programacin I

29

Antes de entrar en materia en cuanto a la construccin de programas, es necesario conocer algunos elementos sintcticos del lenguaje C# y se recomienda encarecidamente investigar sobre buenas prcticas o tpicos de programacin que ayuden a escribir programas de forma clara y profesional. 1.6.1 SECUENCIAS DE ESCAPE Las secuencias de escape producen efectos importantes en la impresin de resultados a travs de los mtodos Console.WriteLine() y Console.Write(). Las secuencias de escape ms comunes son: Secuencia de escape \n \t \a \ \\ \ 1.6.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. Los tipos de datos en C# son los siguientes:
Tipo sbyte short int long byte ushort uint ulong float double decimal char string bool Descripcin Nmero entero de 8 bits. Nmero entero de 16 bits. Nmero entero de 32 bits. Nmero entero de 64 bits. Nmero entero sin signo de 8 bits. Nmero entero sin signo de 16 bits. Nmero entero sin signo de 32 bits. Nmero entero sin signo de 64 bits. Nmero real de precisin simple de 32 bits. Nmero real de precisin doble de 64 bits. Nmero real de 96 bits. Caracter Unicode de 16 bits. Cadena de caracteres. Valor booleano (true/false) Tamao (bytes) 1 2 4 8 1 2 4 8 4 8 12 2 N/A 1 Rango -128 a 127 -32768 a 32767 -2147483648 a 2147483647
-9223372036854775808 a 9223372036854775807

Descripcin Permite agregar una nueva lnea. Permite tabular horizontalmente. Indica un sonido de alerta del sistema. Imprime un apostrofe. Imprime una diagonal invertida. Imprime unas comillas.

0 a 255 0 a 65535 0 a 4294967295 0 a 18446744073709551615 -45 38 Aproximadamente 1.5 x 10 a 3.4 x 10 -324 308 Aproximadamente 5.0 x 10 a 1.7 x 10 -28 28 Aprox. 1.0 x 10 a 7.9 x 10 Cualquier caracter Unicode. Cualquier cantidad de caracteres. true o false

Los tipos de datos numricos ms utilizados en un programa son los siguientes: Entero: int Real: double

1.6.3 EJEMPLOS PROPUESTOS Para practicar la conversin de diagrama de flujo a programa, consideremos los diagramas de flujo de los ejemplos de la seccin 1.5.2 para escribirlos en lenguaje C#.
Lenguaje de Programacin I 30

1.

En la lnea 13 se muestra otra forma de utilizar comentarios en un programa, y es a travs de la doble pleca (//) al inicio de la lnea. Este formato es adecuado para escribir comentarios cortos de solo una lnea. Como se aclar anteriormente, los comentarios son ignorados por el programa y su nica utilidad es para documentar el cdigo fuente. Observar que todas las variables consideradas para resolver el problema han sido declaradas antes de ser utilizadas (lnea 14), tomando en cuenta el identificador y el tipo de dato que se defini en el anlisis del problema. Esto se hace inmediatamente despus del comienzo del bloque del mtodo principal Main(), es decir, despus de la llave de apertura ({). Es de notar que en lenguaje C#, 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 double, y al final se coloca un punto y coma (;) para indicar el fin de la instruccin. Al analizar el cdigo fuente de este programa, se puede deducir que la figura utilizada para la entrada de datos (Input) en un diagrama de flujo, equivale a dos instrucciones (lnea 16 y 17): Console.Write() para mostrar el mensaje y Console.ReadLine() para leer el valor introducido y asignrselo a la variable. Es de suma importancia nombrar a las variables tal como se han declarado, de lo contrario C# detectar y mostrar un error. La diferencia entre el mtodo Console.Write() y Console.WriteLine() es que el primero mantiene el cursor al final de la lnea, en cambio el segundo, desplaza el cursor hasta el inicio de la siguiente lnea; pero ambos mtodos se utilizan para mostrar un mensaje en pantalla. Es necesario tomar en cuenta que cuando se captura un dato por medio del mtodo Console.ReadLine(), este se lee como una cadena de texto, por lo que se hace necesario convertirlo cuando se trate de un valor numrico, de lo contrario no se podr utilizar para realizar un clculo. Esto se puede hacer fcilmente a travs de los siguientes mtodos:
Lenguaje de Programacin I 31

Convert.ToDouble() para convertir una cadena de texto a un nmero real. Convert.ToInt32() para convertir una cadena de texto a un nmero entero.

Observar que en la lnea 17 se han fusionado dos instrucciones. La primera consiste en leer el dato ingresado por medio del mtodo Console.ReadLine(), y la segunda, convertir a nmero real el valor ledo a travs del mtodo Convert.ToDouble(). Cada proceso en un diagrama de flujo (Assignment), equivale a una instruccin en lenguaje C#, tal como se muestra en la lnea 19. Es de recordar que para utilizar una variable, sta ya debe contar con un valor asignado, de lo contrario de producir un error o un resultado incorrecto. Tal como se analiz anteriormente, para imprimir un resultado en lenguaje C#, se utiliza el mtodo Console.WriteLine(), que equivale a la figura Output en un diagrama de flujo. Para este ejemplo observar la lnea 21, en donde se manda a imprimir en pantalla el total a pagar, tal como se realiza en RAPTOR. En la lnea 22 se utiliza el mtodo Console.ReadKey() para evitar que la ventana se cierre al ejecutar el programa. La diferencia entre el mtodo Console.ReadKey() y el mtodo Console.ReadLine() 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 hasta que se presione la tecla Enter. Observar a continuacin la corrida del programa:

2.

Lenguaje de Programacin I

32

Este programa produce el siguiente resultado:

3.

En este programa existen 4 variables en total y todas son de tipo double (lnea 14). Observar que cuando se declara ms de una variable del mismo tipo en una misma instruccin, estas deben estar separadas por una coma (,) y al final el punto y coma (;). Observar nuevamente que por cada figura Input de un diagrama de flujo, se necesita un mtodo Console.Write() para imprimir el mensaje y un mtodo Console.ReadLine() para capturar el valor de la variable, realizando su respectiva conversin. Veamos a continuacin la corrida del programa:

Lenguaje de Programacin I

33

4.

Por cada dato de salida se debe utilizar un mtodo Console.WriteLine(), as como en un diagrama de flujo de flujo que se utiliza el smbolo Output para cada dato. Esto tambin sirve para que el cdigo sea ms claro, tal como se puede apreciar en las lneas 26 y 27. El resultado en pantalla del programa anterior es:

Observar el efecto en pantalla que producen las secuencias de escape \n y \t que se encuentra en los mtodos Console.WriteLine() de las lneas 26 y 27. Notar adems, que las secuencias de escape se pueden combinar. La secuencia de escape \n lo que hace es insertar una nueva lnea y la secuencia de escape \t se utiliza para agregar una tabulacin horizontal, es por esta razn que los resultado que genera el programa aparecen un tanto desplazados a la derecha. No es indispensable utilizar secuencias de escape en un programa, ya que sirven nicamente para darle una vistosidad diferente a la impresin de resultados, sin afectar los datos.
Lenguaje de Programacin I 34

5.

Como se seal antes, las variables deben utilizarse siempre con el mismo identificador con que se declaran, ya que lenguaje C# distingue entre letras maysculas y minsculas, por ejemplo, para C# no es lo mismo la variable Libras que la variable libras, porque la primera inicia con una letra mayscula y la segunda con una letra minscula. Se recomiendo tener mucho cuidado con esto. El resultado en pantalla del programa anterior es el siguiente:

Para finalizar con los ejemplos, observar que en todos los programas se ha utilizado sangra despus de abrir un bloque de cdigo a travs de una llave. La sangra es el espacio que existe entre el inicio de una lnea y el inicio de una instruccin. Se utiliza para indicar cules son las instrucciones que corresponden a un determinado bloque. En realidad, la sangra no afecta en nada a la ejecucin del programa porque es ignorada al igual que los comentarios. El propsito de su uso es una buena prctica de programacin para darle mayor claridad y profesionalidad a los programas. En este caso no nos tenemos que preocupar por darle sangra a las instrucciones, ya que Visual Studio lo hace automticamente por nosotros.
Lenguaje de Programacin I 35

1.6.4 EJERCICIOS PROPUESTOS Elaborar en lenguaje C#, los programas de los diagramas de flujo elaborados para los ejercicios propuestos en la seccin 1.5.4 1.7 BIBLIOGRAFA Bell, Douglas y Parr, Mike. C# para estudiantes, Primera Edicin. Pearson Educacin, Mxico 2010. Deitel, Harvey M. y Deitel, Paul J. Como programar en C#, Segunda Edicin. Pearson Educacin, Mxico 2007. Archer, Tom. A fondo C#, Primera Edicin. McGraw-Hill/Interamericana de Espaa, 2001. Joyanes Aguilar, Luis. Fundamentos de programacin Algoritmos, Estructuras de datos y Objetos, Tercera edicin. McGraw-Hill/Interamericana de Espaa, 2003.

Lenguaje de Programacin I

36

You might also like