Beruflich Dokumente
Kultur Dokumente
2011
11 de noviembre de 2011
/Con
Programacin
Introduccin
Este documento contiene aspectos generales sobre programacin estructurada, sin embargo, son lo suficientemente slidos para poder crear las bases necesarias para la incursin en programacin sobre plataformas web, abriendo as la puerta para el siguiente nivel de lenguajes de programacin.
1 Contenido
1 2 3 3.1 4 5 5.1 6 7 8 9 9.1 Contenido ..................................................................................................................................................2 Cronograma de Actividades ......................................................................................................................3 Introduccin ..............................................................................................................................................4 Preparacin del entorno de trabajo ....................................................................................................4 Introduccin a la programacin en C ........................................................................................................5 Variables en C++........................................................................................................................................8 Tipos de variables ................................................................................................................................8 Constantes ................................................................................................................................................9 Instrucciones de Entrada...........................................................................................................................9 Instrucciones de Salida..............................................................................................................................9 Estructuras de Programacin ................................................................................................................. 13 Estructuras de Decisin .................................................................................................................... 13 IF ............................................................................................................................................... 13 Switch-Case .............................................................................................................................. 14
10.1 10.2 11 12 13
2 Cronograma de Actividades
Primer Semestre Actividad Introduccin Introduccin Programacin en C++ Programacin Estructuras de Programacin Estructuras de Decisin Estructuras Repetitivas Funciones Punteros y Arrays Programacin Orientada a Objetos 06 13* 20 27* 03 10*
3 Introduccin
3.1 Preparacin del entorno de trabajo
En primer lugar deberas decidir en qu carpeta de tu ordenador quieres grabar tus programas. Personalmente me referir continuamente a la carpeta C:\TuCarpeta, es decir, cuando encuentres en el manual TuCarpeta, debers sustituirla por el nombre real de tu carpeta. En segundo lugar deberas decidir el compilador de C/C++ que deseas usar, los ejemplos aqu mostrados fueron testeados sobre Borland C++ 5.02, pero la mayora deberan funcionar igual en gcc. Por ltimo, debes tener en cuenta que en ningn caso programaremos utilizando las caractersticas propias del entorno, es decir: aunque utilices un compilador de C en entorno Windows por ejemplo, todos los programas que hars utilizando este manual, en principio funcionan igual en el entorno MS/DOS o UNIX, por citar dos muy conocidos. Sera materia de otro curso el estudio del entorno de desarrollo e interfaz grfico de tu compilador de C/C++
4 Introduccin a la programacin en C
Introduccin Terica
Creador:Dennis Ritchie (Laboratorios Bell) el 1972, cuando trabajaba junto con Ken Thompson en el diseo delsistema operativo UNIX. El C se cre como herramienta para programadores, en consecuencia su principal objetivo es ser unlenguaje til, no necesariamente sencillo. Caractersticas:El C es un lenguaje de programacin de alto nivel (alto nivel quiere decir cercano al lenguajehumano), pero con caractersticas de bajo nivel (bajo nivel= prximo al lenguaje mquina). Es de ALTO NIVEL porque es racional, estructurado y fcil de aprender. Es de BAJO NIVEL porque permite trabajar con bits, registros de la C.P.U. y posiciones de memoria. Por qu el C?: El lenguaje C es poderoso y flexible: la mayor parte del sistema operativo UNIX est escrito en C. Incluso estn escritos en C los compiladores e intrpretes de otros lenguajes.El lenguaje C es amistoso porque es lo suficientemente estructurado para ejercer buenos hbitos deprogramacin. Es el lenguaje de programacin ms utilizado por el programador de sistemas. Estructura de un programa en C:El C es un lenguaje compilado, vamos a ver qu es esto grficamente:
Cdigo Fuente
Compilar
Cdigo Objeto
Linkear
Programa Ejecutable
Cdigo Fuente: es el programa que nosotros escribimos, se graba con la extensin CPP, o H en caso de las libreras. Cdigo Objeto: es el programa fuente pero traducido a lenguaje mquina (sucesin de ceros y unos), se graba con la extensin OBJ Programa Ejecutable: es el programa objeto ms las libreras del C, se graba con la extensinEXE. Y no necesita el programa que hemos utilizado para crearlo, para poder ejecutarlo. Para crear el ejecutable en C++, solamente se debe presionar al mismo tiempo las teclas Ctrl+F9. El cdigo objeto que genera un compilador de C, es casi tan eficiente (rpido) como si lo hubiramos escrito en lenguaje ENSAMBLADOR (lenguaje de programacin ms cercano al lenguaje mquina).
Primer programa
Para aprender a programar, se debe practicar, este, como todos los programas de este documento, debe ser compilado en el Borland para ver su funcionamiento.
Libreras
Inicio programa, funcinmain Llaveparainicio de cdigo Sentenciaparamos trarmensajes en pantalla Llavepara fin de cdigo
Ilustracin 1
Ahora estudiaremos el cdigo lnea por lnea: 1. Se indica al compilador que se utilizaran sentencias que estn incluidas en la librera iostream.h, funciones como couty cin. 2. Se indica al compilador que se utilizaran sentencias que estn incluidas en la librera conio.h, en este caso nicamente la sentencia getch. 3. Lnea vaca para separa la declaracin de libreras del inicio de la funcin principal 4. Se declara la funcin principal main como vaca (void) porque el programa no devuelve ningn valor como resultado. 5. Se indica que inicia el cdigo del programa colocando el signo de llave de apertura 6. La sentencia cout<<permitemostrar un mensaje en pantalla, todo lo que est dentro de comillas se mostrar en pantalla, excepto el \n del final, el cual indica que despus de dicho texto se debe cambiar de lnea, como se puede apreciar en la Ilustracin2donde se muestra el programa ya ejecutado, el cursos _ aparece en la siguiente lnea. 7. La funcin getch(); permite hacer una pausa en la ejecucin del programa hasta que el usuario presione una tecla. Como se logra apreciar tambin en la lnea 6, se indica el final de la instruccin agregando ;punto y coma. 8. Se indica la finalizacin del cdigo con una llave de cierre
Ilustracin2
Antes de continuar, se muestra a continuacin la lista de palabras reservadas de C y C++, las cuales no podemos utilizar como nombres de variables o de nuestras propias funciones:
5 Variables en C++
El concepto de variables ya fue trabajado en el mdulo de algoritmos, de tal manera que aqu solo explicar aspectos especficos de C++, que son los siguientes: C++ identifica maysculas y minsculas, es decir, si tenemos una variable llamada Nombre, no ser correcto tratar de utilizarla escribiendo nombre o cualquier otra variante de escritura. Las variables pueden declararse prcticamente en cualquier lugar del cdigo, con sus respectivas limitantes, por ejemplo, una variable debe ser declarada antes de ser utilizada. Las variables solo son accesibles dentro de la funcin donde fue declarada, excepto las declaradas globalmente.
Ilustracin 3
Es decir, primero se escribe el tipo de dato que almacenar la variable y luego el nombre de la variable y se finaliza con un ;punto y coma. Para el caso de los datos tipo char tambin se debe especificar cuantos caracteres como mximo almacenar la variable, en caso contrario solo permitir almacenar 1 caracter, de tal manera que la declaracin cambiara dependiendo cuantos espacios dejaremos disponibles para lo que se debe guardar, la cantidad de espacios se debe escribir despus del nombre de la variable dentro de corchetes [ ], en la Ilustracin 4 se declara una variable tipo char, llamada nombre y que acepta como mximo 10 caracteres.
Ilustracin 4
6 Constantes
Una constante es un lugar en la memoria con un dato que no va a cambiar en ningn momento dentro del programa, por ejemplo, suelen definirse como constantes valores deporcentaje del IVA, el valor de PI, el porcentaje para calcular el IGSS, etc. Aunque con este tema se puede profundizar ms, para este curso solamente veremos 2 formas declaracin. Una forma es utilizando la palabra reservada const, la otra es definiendo un valor especfico, utilizando la directiva#define, esta es la manera antigua.La sintaxis es la siguiente: const tipo nombre=valor; #define nombre valor; Particularmente recomendara utilizar #define cuando se desee declarar constantes tipo char, como se ve en el ejemplo:
Ilustracin 5
Como se puede notar en la Ilustracin 5, la palabra reservada no requiere colocar el tipo de dato para la constante, tampoco el signo = para hacer la asignacin y si fuese un valor numrico, tampoco necesitara las comillas.
7 Instrucciones de Entrada
Ahora veremos ms detalladamente la sentenciacin>>, cabe mencionar que no es la nica para capturar o recibir datos ingresados por el usuario, pero es la ms sencilla y fue incluida especficamente en C++, puesto que en C no exista. Esta funcin permite capturar los datos que el usuario ingrese desde el teclado y los almacena dentro de la variable que se indique despus de los signos >> Su sintaxis es la siguiente:
Ilustracin 6
8 Instrucciones de Salida
Aqu ampliar la sentenciacout<<, que al igual que la sentenciacin>>, tiene otras alternativas como printf, pero que no ser utilizada. La sentencia cout permite mostrar mensajes en pantalla y valores contenidos dentro de las variables que tengamos declaradas, su sintaxis es la siguiente:
Ilustracin 7
Como se puede apreciar en la Ilustracin 7, lo que est dentro de comillas, es el mensaje que se mostrar, luego se cierran las comillas y hay dos signos < menor que los cuales indican que la sentencia no ha terminado y a continuacin est una variable, de la cual se mostrar su contenido, otro ejemplo de una aplicacin vlida est a continuacin: Introduccin a la Programacin www.cotzureu.com| www.ia2web.com
Ilustracin 8
La diferencia en este cdigo es que no se realiz un cambio de lnea, puesto que no existe dentro de comillas la \n que es la instruccin que realiza esta accin. Ejercicios propuestos 1. La empresa X ha solicitado un programa para calcular el valor que debe pagar de IGSS cada empleado, as como el salario neto que recibir. Utilizando los temas vistos hasta el momento, escriba el programa. Tome en cuenta que el pago del IGSS corresponde al 4.83% 2. La empresa Y ha solicitado un programa para calcular el valor del IVA que se debe pagar sus productos, as como el precio final de venta. Utilizando los temas vistos hasta el momento, escriba el programa, considere que el IVA corresponde al 12% sobre el costo del producto. 3. Los empleados de la empresa Z reciben un salario por horas trabajadas, las horas ordinarias son pagadas a Q45.00 y las extraordinarias a Q65.00, escriba un programa que reciba la cantidad de horas trabajadas de los empleados, tanto ordinarias como extraordinarias y muestre el total que debe recibir como salario el empleado, sin descontar el pago de IGSS. 4. La empresa XYZ necesita un sistema para realizar el pago de nmina, el cual debe tener en cuenta las siguientes reglas para generar un salario final. a) Todos los trabajadores tienen un salario base de Q. 1850.00 b) Todos los trabajadores tienen una bonificacin de Q. 350.00 c) El IGSS se debe calcular solamente sobre el salario base. d) Todos los trabajadores hicieron 8 horas extras, las cuales se les pagan a Q65.00 c/u. e) Calcular el salario a recibir.
10
11
12
9 Estructuras de Programacin
9.1 Estructuras de Decisin
Este tipo de estructuras permiten tomar decisiones dependiendo de los valores que estn siendo procesados dentro de nuestro programa, por ejemplo, si un alumno obtuvo menos de 61 puntos en una evaluacin, se debe mostrar un mensaje indicando que ha perdido, en caso contrario, debe indicar que ha ganado, este es solo uno de los muchos casos de decisin que tendremos que implementar. En C++ existen 2 funciones que permiten la toma de decisiones: IF Switch - Case Ambas funciones fueron explicadas en el mdulo de algoritmos, aqu, veremos su implementacin en C++. 9.1.1 IF Permite la ejecucin condicional de una sentencia. Sintaxis:
Ilustracin 9
Como se puede ver en la Ilustracin 10, se pueden utilizar llaves para encerrar las instrucciones que se quieran realizar, o tambin pueden omitirse, con la diferencia que si no incluye llaves, solo se ejecutar la lnea ms prxima a la instruccin.
Ilustracin 10
13
9.1.2 Switch-Case Esta sentencia es una generalizacin de las sentencias if...else. En el caso de las sentencias if, la expresin que se evala como condicin es booleana, lo que quiere decir que slo hay dos valores posibles, y por lo tanto, slo se puede elegir entre dos sentencias a ejecutar. En el caso de la sentencia switch, la expresin a evaluar ser entera o 1 char, por lo tanto, el nmero de opciones es mucho mayor, y en consecuencia, tambin es mayor el nmero de diferentes sentencias que se pueden ejecutar.
Sintaxis: switch (expresin entera) { case<expresin_constante1: sentencias1 break; ... caseexpresin_constanten: sentenciasn break; default : sentencia } Ejemplo: En este caso se implementa un tpico men, se puede notar la sentencia break para finalizar la ejecucin en bloque, es decir, si no se coloca el break, el programa seguir ejecutando todos los case que se encuentren abajo del que cumple la condicin.
Ilustracin 11
14
Ilustracin 12
Se puede apreciar la inclusin en la lnea 12 de la funcin clrscr(); para limpiar pantalla, cuando vuelva a iniciarse el ciclo. 9.2.2 Do While A diferencia del bucle while, la evaluacin de la condicin se realiza despus de ejecutar la sentencia, de modo que sta se ejecutar al menos una vez. Sintaxis:
do <sentencia> while(<condicion>); Si se desea ejecutar ms de una lnea de sentencias, se deben encerrar entre llaves. Como se aprecia en la Ilustracin 13.
15
Ilustracin 13
9.2.3 For Permite repetir un fragmento de cdigo determinadas veces, su sintaxis es:
Ilustracin 14
Por partes: x=0 Indica el inicio del ciclo. Puede ser cualquier variable y cualquier valor de inicio. x<=10 Indica el fin del ciclo. Cuando la condicin deja de cumplirse el ciclo termina. Cuando el ciclo no es menor o igual a 10 el ciclo termina. x=x+2 Indica que la variable x aumenta de dos en dos. Para aumentar de uno en uno: x++, de tres: x+=3 x=x+3. 16 Introduccin a la Programacin www.cotzureu.com| www.ia2web.com
Ejercicios propuestos
1. Escriba un programa en Borland C++ que permita ingresar 10 nmeros y calcule el promedio de los mismos. 2. Hacer un programa que imprima los nmeros del 0 al 100 Ayuda: Recuerda utilizar una variable contador para ir incrementando su valor de uno en uno mediante un bucle hasta llegar a 100. 3. Hacer un programa que imprima los nmeros de 100 al 0, en orden decreciente. Ayuda: Utilizar una variable inicializada en 100 e ir reduciendo en 1 hasta llegar a 0. 4. Hacer un programa que imprima los nmeros pares entre 0 y 100 5. Hacer un programa que imprima la suma de los 100 primeros nmeros. Ayuda: La misin a realizar es doble; por un lado, hay que generar los nmeros naturales y por otro, a medida que se generan se suman. Para la primera operacin necesitamos un contador que aumente de uno en uno, y para la segunda, un sumador que vaya realizando la suma del nmero generado. La impresin de la suma se realiza fuera del bucle y una vez realizada la misma, porque solamente hay que imprimir el resultado final y no los distintos resultados intermedios. 6. Hacer un programa que imprima los nmeros impares hasta el 100 que imprima cuantos hay. 7. Hacer un programa que imprima los mltiplos de 5 que hay entre 1 y 500. 8. Hacer un programa que reciba un nmero por teclado menor que 100, e imprima la suma y cuantos nmeros pares hay inferiores al recibido.
17
10 Funciones
Una funcin es un mdulo de un programa separado del cuerpo principal, que realiza una tarea especfica y que puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque. La sintaxis general de una funcin es: Tipodato Nomfun(parametros) { Sentencias; return [dato| variable | expresin]; } Donde tipodato especifica el tipo de dato que regresara la funcin. La instruccin RETURN es quien regresa un y solo un dato a la parte del programa que la est llamando o invocando, sin embargo es de considerar que return puede regresar: a) Un dato = return 3.1416; b) Una variable = return area; c) Una expresin algebraica (no ecuacin o formula) = return x + 15/2; La lista de parmetros formales es una lista de variables separadas por comas , que almacenaran los valores que reciba la funcin, estas variables actan como locales dentro del cuerpo de la funcin. Aunque no se ocupen parmetros los parntesis son requeridos.
18
Ejemplo: Un programa para calcular el salario de una persona, utilizando una funcin construida por el programador.
Anlisis de las lneas ms importantes Lnea 5, declaracin de la funcin y por comodidad, se incluyeron los nombres de las variables que se utilizarn. Lnea 25, implementacin de la funcin, se puede diferenciar porque despus del parntesis de cierre no hay un punto y coma ; Lnea 26, como si fuese otro programita, se abren llaves para identificar el inicio de la funcin. Lnea 28, se declara una funcin local, llamada liquido, igual que la global, la diferencia es que la global se utilizar en el programa principal cuando se muestre el resultado, y sta de la funcin solo servir para realizar el clculo y retornarlo al programa principal. Lnea 31, se realiza el envo del clculo realizado, hacia la variable ubicada en la lnea 19, esta variable es la global.
11 Vectores y Arrays
Los vectores pueden ser de una o ms dimensiones, los de 1 dimensin se conocen como unidimensionales y de dos bidimensionales, sucesivamente para ms dimensiones, las matrices solo tiene 2 dimensiones, es decir, son bidimensionales. Un arreglo en C++ es un conjunto de datos que se almacenan en memoria de manera contigua con el mismo nombre. Para diferenciar los elementos de un arreglo se utilizan ndices despus del nombre del arreglo y encerrados por []. El elemento 5 (quinto) de un arreglo, es representado por el ndice [4], ya que los Introduccin a la Programacin www.cotzureu.com| www.ia2web.com
19
ndices comienzan en 0. Esto significa que un arreglo de 10 elementos tendra los ndices del 0 al 9:
[0...9]
Ejemplo prctico:
20
Introduccin a Matrices Las matrices aparecen por primera vez hacia el ao 1850, introducidas por J.J. Sylvester El desarrollo inicial de la teora se debe al matemtico W.R. Hamilton en 1853. En 1858, A. Cayley introduce la notacin matricial como una forma abreviada de escribir un sistema de m ecuaciones lineales con n incgnitas. Las matrices se utilizan en el clculo numrico, en la resolucin de sistemas de ecuaciones lineales, de las ecuaciones diferenciales y de las derivadas parciales. Adems de su utilidad para el estudio de sistemas de ecuaciones lineales, las matrices aparecen de forma natural en geometra, estadstica, economa, informtica, fsica, etc La utilizacin de matrices (arrays) constituye actualmente una parte esencial de los lenguajes de programacin, ya que la mayora de los datos se introducen en los ordenadores como tablas organizadas en filas y columnas: hojas de clculo, bases de datos. Las matrices son realmente vectores bidimensionales, es decir, para indicar una posicin, se debe establecer el ndice sobre el cateto X y sobre el cateto Y. Por tanto, su representacin grfica es una tabla.
Para declarar este tipo de arrays, se hace de igual manera que los vectores unidimensionales, es decir:
Nombre Tipo Casillas disponibles en cada dimensin Aunque en este caso coincide el nmero disponible y hace una tabla cuadrada, no un requisito, es decir, podemos definir ms campos de un extremo o de otro. Para casos prcticos podramos utilizar esto por ejemplo: Su representacin grfica sera:
21
12 Punteros
La declaracin de punteros utiliza un asterisco *, que en este caso acta como calificador de tipo, en una sintaxis muy parecida a la utilizada en la declaracin de objetos normales. En este captulo nos referimos exclusivamente a declaracin de punteros a objetos.
La sintaxis general de la declaracin de puntero a objeto es: tipo_objeto * nombre_puntero
22
se definen las variables miembro que va a tener la estructura Alumno y luego se crean dos variables alu1 y alu2 de esa estructura. En C++ los objetos son las variables concretas que se crean de una determinada clase. A veces se llaman tambin instances o data objects. Las clases de C++ son como una generalizacin de las estructuras de C. En C++ las clases son verdaderos tipos de datos definidos por el usuario y pueden serutilizados de igual manera que los tipos de datos propios del C++, tales como int o float. Los objetos son a las clases como las variables a los tipos de variables. Un objeto tiene su propio conjunto de datos o variables miembro, aunque no de funciones, que aunque se aplican a un objeto concreto son propias de la clase a la que pertenece el objeto. Este concepto lo ampliar en PHP.
23