Principios de Programacion en C



Comments



Description

2 PRINCIPIOS DE PROGRAMACIÓN EN C++. Luis Aldana. © bubok.com © 2009. Todos los derechos reservados. Prohibida la reproducción parcial o total de esta obra sin previa autorización del autor. 3 4 .............................................................................................. MACROS.............79 5 .................46 2.............................................................................................................................................3...............................2..............42 2.........................9 1......1...64 UNIDAD III....7.............. ESTRUCTURA DE CONTROL WHILE....... ESTRUCTURA DE CONTROL IF.................................................36 2..............6...................................... MANEJO DE DATOS Y ESTRUCTURAS DE CONTROL...........................36 2...36 2......................................66 3............................................. ENTRADA Y SALIDA DE CARACTERES................................4..........................8...............19 1.................15 1....7 OBJETIVO GENERAL.................................................... OPERACIONES BÁSICAS...... RECURSIVIDAD...............2........71 3........................9 1.....56 2............... FUNCIONES......2.....77 ACERCA DEL AUTOR.4.....74 BIBLIOGRAFÍA......Índice PRESENTACIÓN...................66 3.........................38 2...............11 1.............................60 2........................................ ESTRUCTURA BÁSICA DE UN PROGRAMA.................................. PROGRAMACIÓN ORIENTADA A OBJETOS...................................8 UNIDAD I...................29 UNIDAD II..1............................................ ENTRADA DE DATOS................3... VARIABLES........5...............1......................... ESTRUCTURA DE CONTROL SWITCH...............................3.......................5.... INTRODUCCIÓN AL LENGUAJE C++. SALIDA DE DATOS........... SENTENCIA DE CONTROL FOR. 6 . Además. Realizar las prácticas y las tareas le será de gran utilidad al lector para comprender el complejo proceso de diseñar aplicaciones de calidad. se proponen diversos actividades que el lector podrá realizar como parte del trabajo en casa. 7 .PRESENTACIÓN. a lo largo de todo el manual. Las prácticas están diseñadas para seguirse de manera secuencial. sin omitir ninguna. _____________________________________________________ El presente manual tiene como finalidad que el lector desarrolle las habilidades necesarias para comenzar a desarrollar sistemas mediante el uso del lenguaje de programación C++. Este manual no tiene la intención de sustituir el trabajo extraclase. ya que ésta complementará el trabajo desarrollado. Ing. Luis Aldana. codificación e implantación de programas de computadora en lenguaje C++. de de de de 8 .OBJETIVO GENERAL. El lector será capaz de identificar las principales estructuras control y bifurcación de la programación orientada a objetos. diseñar estructuras de datos apropiadas para la solución problemas y reconocer la semántica y la sintaxis del lenguaje programación C++. _____________________________________________________ El lector será capaz de resolver problemas de base científica mediante el diseño. Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores. un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras. Su autor fue B. flexibilidad. INTRODUCCIÓN AL LENGUAJE C++. potente y general. ha eliminado algunas de las dificultades y limitaciones del C original. Además. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. la ATT comenzó a estandarizarlo internamente en 1987. ¿Qué diferencia hay entre C y C++?  El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original.UNIDAD I _____________________________________________________ 1. En la actualidad. el C++ es un lenguaje versátil. El lenguaje C++ se comenzó a desarrollar en 1980.1. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por estos dos autores. en la ATT. y hace referencia al carácter del operador incremento de C (++). En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional. también de la ATT. que se utiliza para realizar 9 . concisión y eficiencia. La evolución de C++ ha continuado con la aparición de Java. El nombre C++ es también de ese año. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. desarrollado por Kernighan y Ritchie en 1972. Stroustrup. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones. En estas Notas se van a presentar los fundamentos del lenguaje C++ tradicional a partir del lenguaje C. 10 .aplicaciones en Internet. De ordinario.2. Durante la ejecución del programa. sino que le es suficiente con saber la forma en que debe enviarle sus mensajes y cómo va a recibir la respuesta (al hombre le puede ser suficiente con saber cómo 11 .. cuentas de banco. "módulos" o "componentes". También pueden ser estructuras de datos: colas. . un fichero de disco.. .. A estas "piezas". personas. cada uno de estos objetos corresponde a algún elemento que debe utilizar el programa. una ventana abierta en la pantalla. PROGRAMACIÓN ORIENTADA A OBJETOS. ¿Qué es la Programación Orientada a Objetos?  La Programación Orientada a Objetos (POO) permite realizar grandes programas mediante la unión de elementos más simples. Estos objetos contienen tanto datos como las funciones que actúan sobre esos datos. se les denomina objetos..) y otros pueden ser componentes del ordenador (tanto de software como de hardware: otro programa. los objetos interactúan pasándose mensajes y respuestas..1.. una impresora conectada en un puerto. Algunos de estos elementos representan entidades del mundo real (matrices. pilas. . Muchos de estos elementos podrán ser reutilizados en otros programas. Es fundamental darse cuenta de que un objeto no necesita conocer el funcionamiento interno de los demás objetos para poder interactuar con ellos (igual que el hombre no necesita conocer cómo funciona por dentro un televisor o un ordenador para poder utilizarlos). que interactúan entre sí cuando se ejecuta un programa. elementos mecánicos o eléctricos. que pueden ser diseñados y comprobados de manera independiente del programa que va a usarlos.). aunque no de funciones. varios clientes. Los objetos son a las clases como las variables a los tipos de variables. La definición genérica de estos objetos análogos se realizar mediante la clase. que contienen datos y funciones concretas que permiten manipularlos y trabajar sobre ellos. el dial del volumen y los botones de cambio de canal para utilizar un televisor). Cualquier función se puede comunicar con las demás a través de variables globales. y constituyen el centro del lenguaje.  Clases. Se dice por eso que C es un lenguaje algorítmico (o procedural. Esta facilidad para comunicarse con otras funciones hace que se puedan producir efectos laterales no deseados.funcionan el interruptor. en inglés). el centro del lenguaje no son las funciones sino los datos. etc. pasados por valor o por referencia. o más bien los objetos. del valor de retorno y de los argumentos. Sucede a menudo que hay que utilizar varios ejemplares análogos de un determinado elemento u objeto (por ejemplo varias ventanas en la pantalla del PC. Esto hace que la mentalidad 12 . En un Lenguaje Orientado a Objetos tal como el C++. métodos y objetos. varios usuarios. Así. una clase contiene una completa y detallada descripción de la información y las funciones que contendrá cada objeto de esa clase. que aunque se aplican a un objeto concreto son propias de la clase a la que pertenece el objeto. tales como int o float. En ANSI C las funciones son algo relativamente independiente de las variables. En C++ las clases son verdaderos tipos de datos definidos por el usuario y pueden ser utilizados de igual manera que los tipos de datos propios del C++. Un objeto tiene su propio conjunto de datos o variables miembro. varias cuentas corrientes de un banco.). Las clases de C++ se pueden ver como una generalización de las estructuras de C. 13 . que serán privados. Los miembros públicos son aquellos a los que se puede acceder libremente desde fuera de la clase. De esta forma se garantiza que se hace buen uso de los objetos. Esto sería imposible si se accediera libre e independientemente a cada variable miembro. Los miembros privados. manteniendo la coherencia de la información. En C+ + los métodos de una clase pueden ser funciones u operadores. Los miembros de una clase se pueden dividir en públicos y privados. Estas funciones o métodos públicos constituyen la interface de la clase.con la que se aborda la realización de un programa tenga que ser muy diferente. Todo esto se estudiará en detalle más adelante. Al usuario le es suficiente con saber cómo comunicarse con un objeto. solamente pueden ser accedidos por los métodos de la propia clase. por el contrario. De ordinario una clase ofrece un conjunto de funciones públicas a través de las cuales se puede actuar sobre los datos. Para proteger a las variables de modificaciones no deseadas se introduce el concepto de encapsulación. ocultamiento o abstracción de datos. pero no tiene por qué conocer el funcionamiento interno del mismo.  ACTIVIDAD EXTRACLASE 1. ¿Cómo se define el Lenguaje C++? 2. ¿Qué es un miembro público? 14 . ¿Qué es una clase? 4. ¿Qué es un miembro privado? 7.1. ¿Qué diferencia hay entre el Lenguaje C y el C++? 3. Responde las siguientes preguntas con tus propias palabras de acuerdo a las lectura de los dos temas anteriores: 1. ¿Qué es un objeto? 5. ¿Qué es un método? 6. 3. el cual muestra un mensaje en pantalla.h> int main(void){ cout<<"hola mundo"<<endl.1. Justifique con sus propias palabras el funcionamiento del programa: 15 . getchar(). ESTRUCTURA BÁSICA DE UN PROGRAMA. return 0. Realice el siguiente programa en C++. }  RESPONDA: 1. #include <iostream.1. ¿Cuál es la estructura básica de un programa?  ACTIVIDAD EN CLASE 1. 2. ¿Cuál es la versión de este programa en Lenguaje C? Analicemos cada parte de nuestro primer programa. 16 . y dependiendo del compilador que se esté usando.h> La parte del #include se refiere a la biblioteca de funciones que vamos a utilizar. para llamar a una biblioteca en particular debemos hacer lo siguiente: #include <librería_solicitada> El estándar de C++ incluye varias bibliotecas de funciones. puede aumentar el número. Es decir. y sólo puede haber una. int main(void){ Todo programa en C++ comienza con una función main(). #include <iostream. En C++ el main() siempre regresa un entero.h. return 0. en este caso main() siempre comienza su ejecución con una instrucción (la que se encuentra en la parte superior). podría omitirse el void dentro de los paréntesis. En algunos programas de ejemplo. En este caso se puso la palabra void que significa vacío. cout<<”hola mundo”<<endl. así que la instrucción return devuelve 0. Habíamos declarado que main devolvería un entero. y continúa así hasta que se llegue a la última instrucción (de la parte inferior). es por eso se antepone int a la palabra main. La instrucción cout está definida dentro de la biblioteca iostream. Estas diagonales se usan para escribir comentarios de una línea dentro del código del programa. Además podrás encontrar el uso de /* */ estos caracteres encierran un 17 . Esta es otra instrucción. La llave que se abre significa que se iniciará un bloque de instrucciones.). } La llave de cierre de la función main() indica el termino del bloque de instrucciones. Para terminar una instrucción siempre se coloca punto y como (. Pero además de instrucciones se pueden invocar funciones definidas por el usuario (por supuesto diferentes de main) como se verá mas adelante. el compilador asume que no se enviará nada. notarás el uso de dobles diagonales (//). Lo cual a su vez significa que no han ocurrido errores durante su ejecución. Una función. que previamente declaramos que íbamos a utilizar. en este caso la instrucción return determina que es lo que se devolverá de la función main(). Esta es una instrucción. es decir que a la función main no se le está mandando nada. Los paréntesis que le siguen contienen lo que se le va a mandar a la función. 18 .comentario de varias líneas y cualquier cosa que se escriba dentro de ella no influenciará en el desempeño del programa. Este signo se utiliza cuando una instrucción ocupará varias líneas y por razones de espacio en la hoja es mejor dividirla en partes. También verás que muchas veces utilizaremos una diagonal invertida (\). ¿Qué es y para que sirve una variable? En la sección anterior vimos la forma general de un programa. VARIABLES.4. }  RESPONDA: 1. return 0.2. Realice el siguiente programa en C++: #include <iostream. getchar(). ¿Qué hace y cómo funciona el programa anterior? 2. cout<<variable. variable=5. ¿Cuál es la salida del programa? 19 .h> int main( ){ int variable. Ahora veamos un programa muy parecido al anterior:  ACTIVIDAD EN CLASE 1.1. un programa sumamente sencillo. . Básicamente. A esta sección se le denomina declaración. la declaración de una variable presenta el siguiente aspecto: tipo nombre [=valor].3. así que si el nombre de nuestra variable empieza con una letra en mayúsculas. a un nombre y a un valor. Una declaración se encuentra ligada a un tipo. ¿Qué sucede si se elimina la linea int variable? Notemos en esta ocasión sólo la parte: int variable. Los corchetes significan que esa parte es opcional. Por ejemplo. C++ es sensible a mayúsculas y minúsculas. la declaración: int mi_variable=5. Una variable es una posición de memoria con nombre que se usa para mantener un valor que puede ser modificado por el programa. Se trata de la declaración de una variable de nombre variable. Los nombres de 20 . Declara una variable tipo entero de nombre mi_variable y le asigna el valor 5. Las variables son declaradas. debemos de asegurarnos que durante el resto del código nos refiramos a ella exactamente como la escribimos. usadas y liberadas. xor. do. switch. private. not. Además no se deben de repetir nombres de variables en el mismo contexto. extern. throw. int. long. friend. typename.static. this. en la definición de parámetros de una función. aunque ningún nombre debe comenzar con un número (0-9). reinterpret_cast. 21 . xor_eq. float. variables globales.while. public. Las palabras que se presentan en la siguiente lista. y fuera de todas las funciones. que no son muchas a comparación de otros lenguajes.. funciones. bitor.for. match. const. asm.compl. estas variables son llamadas locales. typeid. Double. return. delete. class.namespace. case. goto. or. bool. typedef. continue. using. sólo caracteres “A-Z”. false. no pueden ocuparse como nombres de variables. char. if. operator. signed. Las variables se pueden declarar en tres sitios básicos: dentro de las funciones (ya sea la función main u otras creadas por el programador). mutable. default. “_“. else. static_cast. volatile. existe otra. void. template. register. u otras instrucciones definidas por el programador. break. or_eq. struct. and. “09”. sizeof. inline. union. como se verá más adelante. true. not_eq. export.try. Además de las restricciones anteriores. virtual. auto. “a-z”.protected.las variables no pueden usar signos de puntuación. and_eq. unsigned. new. const_cast. short. y esta tiene que ver con las palabras reservadas del lenguaje.dynamic_cast.bitand. wchar_t . explicit. enum. int main(){ int variable_local=20. getchar(). Realice el siguiente programa en C++: #include <iostream. return 0.3. }  RESPONDA: 1.h> int variable_global=10. ¿Cuál es y qué valor tiene la variable global? 2. cout<<"\nla variable local tiene asignado un: "\ <<variable_local<<endl. cout<<"\nprograma que muestra los usos de variables "\ "globales y locales\n"<<endl. ACTIVIDAD EN CLASE 1. ¿Cuál es y qué valor tiene la variable local? 22 . cout<<"la variable global tiene asignado un: "\ <<variable_global<<endl. siempre se trata de utilizar lo menos posible la declaración de variables globales. 23 . mientras que una variable local sólo puede ser modificada y utilizada dentro de la función en la que se ha declarado. antes de utilizar una variable y hacer operaciones con ella. siempre y cuando se declaren antes de usarlas. El siguiente ejemplo muestra que se pueden declarar variables en cualquier parte del programa. Por supuesto. hay que declararla. Por lo general.Una variable global puede ser modificada en cualquier parte del programa. getchar(). int variable2=variable1+30. La variable 2 ¿es global o local? En un programa puede que necesitemos declarar un dato y 24 . ¿Qué valor tiene la variable 2? 3. ¿Qué valor tiene la variable 1? 2. }  RESPONDA: 1. variable1=50. cout<<"\nla variable 2 almacena un: "\ <<variable2<<endl. La variable 1 ¿es global o local? 4.4. Realice el siguiente programa: #include <iostream. cout<<"la variable 1 local tiene almacenado un: "\ <<variable1<<endl. ACTIVIDAD EN CLASE 1. return 0.h> int main( ){ int variable1=10. pero que éste no pueda ser modificado.asignarle un nombre. Por ejemplo. 25 . En este caso debemos declarar una constante. el siguiente programa calcula el área de un círculo.  ACTIVIDAD EN CLASE 1. float area. int radio=5. area del circulo es: getchar(). ¿Cuál es la salida del programa? 26 .h> int main( ){ const float pi=3. #include <iostream.141592. area=pi*radio*radio. ¿Cuál es la constante en el programa anterior y qué valor guarda? 2. cout<<"el "<<area<<endl. }  RESPONDA: 1.5. return 0. es decir. los tipos de variables que podemos declarar son los siguientes: 27 .Los diferentes tipos de datos. { El programa corregido debe ser: 28 . Responda las siguientes preguntas de acuerdo a lo visto en clase: 1. ¿Cuál es la utilidad de una variable? 2. return. Corrija los errores en el siguiente fragmento de código: #include <strem.2.h> int main(){ cout>> "Hola mundo" getchar. ACTIVIDAD EXTRACLASE 1. ¿Cuál es la utilidad de una constante? 3. Describa brevemente al menos tres tipos de datos diferentes? 4. r. ¿En qué casos son útiles los operadores aritméticos en programación? En ejemplos anteriores ya hicimos uso de algunos operadores. suma y multiplicación respectivamente.  ACTIVIDAD EN CLASE 1.h> int main( ){ int a=5. //aquí “a” valdrá 5(resto de 20/15) c=b-a. b=10. 29 . c=20.6. a=a*2.5. a=c%r. r=a+b. “+” y “*”. OPERACIONES BÁSICAS.1. Realice el siguiente programa: #include <iostream. b="<<b<<" c="<<c<<" cout<<"la suma de a y b es: "<<a+b<<endl.cout<<"a="<<a<<" r="<<r<<endl. return 0. } 30 . getchar(). ¿Cuál es la salida del programa anterior? 2.wikipedia. c y r. 31 . Recuerda que lo que se guarda es el código ASCII. respectivamente? Estos operadores no son exclusivos de los tipos de datos numéricos.org/wiki/ASCII.3. La tabla completa de dicho código imprimela o guardala para poder realizar la siguiente actividad en clase. Realiza la lectura del siguiente link referente al código ASCII: http://es. RESPONDA: 1. ¿Cuáles son los valores de a. Un dato tipo char también es modificable mediante operadores.  ACTIVIDAD EXTRACLASE 1. b.? 3. ¿Qué significa la expresión a=c%r. cout<<"car2="<<car2<<endl. car1=car2-10. Realice el siguiente programa: #include <iostream. getchar().h> int main( ){ char car1='a'. cout<<"car1="<<car1<<endl. ¿Cuál es la salida del programa anterior y por qué se obtienen esos resultados (apoyate en tu tabla ASCII)? 32 . return 0.7. cout<<"car1="<<car1<<endl. car2. suma de los dos car1=car1-car2. ACTIVIDAD EN CLASE 1. }  RESPONDA: 1. car2=car1+15. cout<<"la es:"<<car1+car2<<endl. Pero su comportamiento depende de si sea en prefijo (antes del operando) o sufijo (después de).h> int main( ){ int a. car1=car1-car2. a=17*5+2.En estos dos últimos ejemplos.8. Ambas pueden escribirse de una mejor forma: a*=2. Éstos tienen la función de aumentar y disminuir en uno al dato que opera.b. Ahora conozcamos a otros operadores muy útiles. multiplicación //primero resuelve la cout<<"a="<<a<<endl. car1-=car2. El operador seguido de la asignación. note las siguientes instrucciones: a=a*2. Realice el siguiente programa: #include <iostream. “++” y “--“.c. Podría decirse que es una abreviatura de código.  ACTIVIDAD EN CLASE 1. 33 . b y c. getchar(). luego evalúa b*a cout<<"c="<<c<<endl. Haz una tabla en donde especifique los valores de a. }  RESPONDA: 1. c=++b * --a. return 0.b=a++ . //a-7=80. //se incremente b a 81.¿Cuál es la salida del programa y por qué se obtienen dichos resultados? 2.7. //luego disminuye a a 87. antes y después de ser modificados? 34 . luego se incrementa la variable a cout<<"b="<<b<<endl. a += 10. En el código int a = 5. el valor de a es: 35 . ¿Cuál es la versión compacta de a = a . Responda las siguientes preguntas de acuerdo a lo visto en clase: 1.4. En el código int a = 9. el valor de a es: 4. a *= 5. ¿Cuál es la versión compacta de a = a * 5? 2. el valor de a es: 5. En el código int a = 0. a -= 3. ACTIVIDAD EXTRACLASE 1.b? 3. 1.UNIDAD II _____________________________________________________ 2. el manipulador de flujo endl da el efecto de la secuencia de escape ‘\n’.1. Cuando usamos la instrucción: cout<<"Mensaje a la pantalla"<<endl.  ACTIVIDAD EN CLASE 2. Estamos enviando una cadena de caracteres (“Mensaje a la pantalla”) al dispositivo de salida estándar (la pantalla). 2. hemos utilizado la instrucción cout<< para mandar mensajes a la pantalla. Luego. ¿Qué es un dato y cómo se puede manipular? En los programas hechos hasta el momento. Realice el siguiente programa: 36 . SALIDA DE DATOS. La mayoría de los programas en C++ incluyen el archivo de encabezado <iostream. MANEJO DE DATOS Y ESTRUCTURAS DE CONTROL.2. el cual contiene la información básica requerida para todas las operaciones de entrada y salida (E/S) de flujo.h>. #include <iostream. ¿Cuál es la salida del programa anterior? 2. //imprime un entero getchar().141592+2)<<endl. 37 . }  RESPONDA: 1. //imprime un flotante cout<<(int)(3. return 0. ¿Cuál es el funcionamiento del programa? La instrucción cout<< puede imprimir tanto números enteros como flotantes sin necesidad de decirle específicamente el tipo de datos del que se trata. pero. por supuesto notemos que al enviarle una cadena de caracteres esta debe de estar entre comillas. cout<<2+2<<endl.h> int main(){ cout<<"cadena de caracteres"<<endl. //imprime un entero cout<<9/2<<endl. pero es mejor ver un ejemplo para tener la idea clara. Por eso debemos ver cuanto antes la forma de leer datos desde el teclado.2. necesitamos hacer un programa que calcule la distancia a la que caerá un proyectil lanzado a determinada velocidad y ángulo. 38 .3. Sería muy molesto estar cambiando los valores de las variables directamente en el código para cada caso que queramos calcular. ENTRADA DE DATOS. ¿Qué importancia tiene la información que proporciona el usuario a un programa? La interacción con el usuario es algo muy importante en la programación. o simplemente un programa que calcule las raíces de una ecuación cuadrática. imaginemos que en este preciso momento y con los conocimientos que tenemos hasta ahora. La principal función para leer desde el teclado es cin>>. cin>>numero.2. cout<<"\neste es: "<<otroNum. } 39 . char car. return 0. cout<<"escribe un numero flotante"<<endl. cout<<"escribe un numero:"<<endl. getchar(). getchar(). numero que tecleaste es: cout<<"dame una letra"<<endl.h> int main(){ int numero. cin>>car. ACTIVIDAD EN CLASE 2. cout<<"\ntecleaste: "<<car<<endl. cout<<"\nel "<<numero<<endl. float otroNum. Realice el siguiente programa: #include <iostream. cin>>otroNum. ¿Cómo trabaja el programa anterior? En resumen. ¿Cómo funciona la instrucción cin<<? 2. cout es el flujo de salida estándar asociado a la pantalla. RESPONDA 1. cin es el flujo de entrada asociado al teclado. 40 . 1. ¿Para qué sirve la expresión cout? 2. Responda las siguientes preguntas de acuerdo a lo visto en clase: 1. ACTIVIDAD EXTRACLASE 2. ¿por qué? 4. ¿La expresión cin sirve para pedir cualquier tipo de dato? Si. no. no. ¿por qué? 41 . ¿Para qué sirve la expresión cin? 6. ¿Cómo puede unir varios datos con una sentencia cout? 5. ¿La expresión cout sirve para mostrar cualquier tipo de dato? Si. ¿Para qué sirve la expresión endl? 3. 20.h> int main(){ char caracter.get(caracter). Hay otros métodos de lectura desde el teclado para la lectura de caracteres.20). cin. letra inicial 42 .get(apellido.nombre[20]. cin. La función de lectura desde el teclado cin no es la única que existe.get(seg_apellido. apellido[20]. Ahora veamos un ejemplo.' ').  ACTIVIDAD EN CLASE 2.get(nombre. #include <iostream.3. cout<<caracter<<"Tu es:"<<caracter<<endl.4. cout<<"Teclea tu nombre por favor"<<endl. cin.2.get().' '). char seg_apellido[20]. cin. cin. ENTRADA Y SALIDA DE CARACTERES.20.get(). cin. cin. apellido paterno es: cout<<"tu "<<seg_apellido<<endl.getline(nombre.gcount()<<" caracteres"<<endl.? 43 . }  RESPONDA: 1. cout<<"el nombre de tu empresa: "<<nombre<<" tiene " <<cin.ignore().cout<<"tu "<<caracter<<nombre<<endl.get(). apellido materno es: cout<<"Escribe el nombre de tu empresa: "<<endl. cin.20). ¿Para qué sirve la instrucción cin. cin. //espera que oprimas enter para terminar return 0. nombre es: cout<<"tu "<<apellido<<endl. ¿Cómo funciona el programa? 2.get(). porque a ésta última no almacenó el primer carácter. Se escribe el nombre y con gcount() presenta los caracteres leídos. Pide al usuario que teclee su nombre completo. 44 . hayas escrito o no tus dos apellidos.get() por getchar().3.? Primero declaramos una variable char. para nuevamente leer hasta encontrar otro espacio. ¿Qué sucede si cambias cin.? 4. Así que cuando oprimes enter. Deja de leer hasta que se presione enter. y 3 variables de cadenas de caracteres. para luego permitir a getline() leer el nombre de tu empresa con un máximo de 20 caracteres o hasta que oprimas enter (pero no lo guarda). para luego leer inmediatamente el primer carácter que teclea y lo almacena en la variable caracter. Sigue leyendo y almacena lo que escribe en la variable nombre hasta que encuentre un espacio o llegue a 20 caracteres.get() y getchar(). para aparecer tu nombre imprime caracter seguido de nombre. La función ignore descarta del flujo el carácter de terminación. Las siguientes instrucciones son parecidas hasta que pide el nombre de tu empresa. otra instrucción get se encarga de leer y desechar el carácter espacio. carecer tiene tu letra inicial y la presenta en pantalla. Finalmente espera que oprimas enter para terminar el programa. Luego. ¿Qué diferencia hay entre cin. ¿Para qué sirve la instrucción cin.? 45 .getline(nombre. ¿Qué hace la instrucción cin. Responde las siguientes preguntas con tus propias palabras: 1.gcount(). ¿Para qué sirve la instrucción cin.? 4.? 3.ignore().20). ACTIVIDAD EXTRACLASE 2.? 2.get().2. ¿Qué hace la instrucción cin. trabajar o repetir todos los pasos anteriores. todos tenemos una lógica a seguir. sus calificaciones no le han dado mucho aliento últimamente. continuamente tomamos decisiones. entonces Estaré trabajando Si no paso el semestre.5. aunque algunos pensarán en otras más. entonces Presento el examen de admisión Si paso el examen y además paso el semestre. Analicemos de una forma general este caso: Curso el sexto semestre. él está pensando en presentar el examen para la universidad. ¿En nuestra vida cotidiana qué es una condición y que similitud hay en programación?  En nuestra vida cotidiana. regresa al principio) Estas son las opciones que él se plantea. Por ejemplo. entonces Curso el sexto semestre (es decir. si ocurre eso. supongamos el caso de un estudiante de nivel preparatoria que cursa el sexto semestre. Lo que valla a pasar marcará el camino a seguir en su vida.2. 46 . y está en riesgo de tener que repetir ese semestre. ESTRUCTURA DE CONTROL IF. el resultado que tenga en el examen no importará. sin embargo. y estas decisiones repercuten en nuestra acción siguiente. Puede estudiar. entonces Estaré en la universidad Si paso el semestre pero no paso el examen. Se trata de una estructura de selección. 47 . “estaré en la universidad” es la acción a ejecutar. Es decir que si se cumple el condicional se ejecutarán varias instrucciones más.En la programación también se tienen que tomar decisiones que influirán en el comportamiento del programa. observamos que: Si paso el examen y además paso el semestre estaré en la universidad “Si” podemos interpretarlo como el if de código C++ “paso el examen y además paso el semestre” es la condición. y también se pueden repetir series de pasos hasta obtener un resultado. En el ejemplo anterior. get(). cout<<"Contesta preguntas"<<endl.2). si o no a las cout<<"Pasaste el examen?"<<endl. cin.semestre[2]. //espera a que oprimas enter return 0. cin. cin. cin. ACTIVIDAD EN CLASE 2. Realice el siguiente programa en C++: #include <iostream.'\n'). cin. } cout<<"fin del programa"<<endl.get(examen. cout<<"Pasaste el semestre?"<<endl.ignore(20.h> int main(){ char examen[2].2).ignore(20.get(semestre. } 48 . //ignora el enter if((examen[0]=='s')&&(semestre[0]=='s')){ cout<<"estas en la universidad"<<endl.'\n').4. tenemos que incluir aquellas instrucciones en un bloque else. Un condicional regresa 1 en caso de ser verdadero y un 0 en caso de ser falso. la sentencia if. pero no es necesario cuando sólo se trata de una sola línea de código. en C++ están definidos como tipos de datos booleanos. RESPONDA: 1. En el ejemplo anterior el bloque de instrucciones a ejecutar en caso de ser verdadera la condición se encuentra dentro de llaves. Justifique el funcionamiento del programa? Analicemos lo que nos importa. 49 . Cuando queremos. además controlar las opciones en caso de que la condición resulte falsa. así que si el condicional resulta true (verdadero). ¿Cuál es la salida del programa? 2. en caso contrario no hace nada. true y false respectivamente. esto dos valores. en realidad se trata de dos condiciones que se deben de cumplir: que la variable examen tenga el carácter ‘s’ y que la variable semestre tenga el carácter ‘s’ . La condición a cumplir es: (examen[0]= =’s’)&&(semestre[0]= =’s’). se evalúa la siguiente instrucción dentro del bloque if. entonces comprueba la segunda condición (gracias a la conjunción lógica &&). Si la primera condición se cumple. podemos acomodarla de la siguiente forma. es decir anidamientos. Si paso el examen y además paso el semestre Estaré en la universidad Si paso el semestre pero no paso el examen Estaré trabajando Si no paso el semestre Curso el sexto semestre Construyendo mejor esta serie de decisiones. En ocasiones necesitaremos construir bloques de instrucciones if y else más complejos. en el código anterior podemos añadir un else a la sentencia if. } else{ cout<<"no estas en la universidad"<<endl. if paso el examen y además paso el semestre Estaré en la universidad else if paso el semestre pero no paso el examen Estaré trabajando else 50 . } Igualmente el bloque de instrucciones a ejecutar se estructura dentro de llaves.Por ejemplo. al estilo seudocódigo. de manera que nos quede de la siguiente forma: if((examen[0]=='s')&&(semestre[0]=='s')){ cout<<"estas en la universidad"<<endl. El ejemplo del estudiante también nos ayudará a visualizar este concepto. aunque tampoco es necesario cuando se trata de una sola instrucción. cursará el semestre.Curso el sexto semestre De esta manera controlamos las posibles respuestas que pudiese dar. y en cualquier otro caso. En caso de que pase el examen y el semestre estará en la universidad. Nuestro código ya terminado quedará de la siguiente manera: 51 . si pasa el semestre pero no pasa el examen estará trabajando. '\n').2). si o no a las cout<<"Pasaste el examen?"<<endl.ignore(20.2).ignore(20. //ignora el enter if((examen[0]=='s')&&(semestre[0]=='s')) cout<<"estas en la universidad"<<endl.5. ACTIVIDAD EN CLASE 2. cout<<"Pasaste el semestre?"<<endl. cin. 52 .get(examen. else cout<<"cursa el sexto semestre"<<endl. cin.get(semestre. cout<<"Contesta preguntas"<<endl.h> int main(){ char examen[2]. cin. Realiza el siguiente programa: #include <iostream.'\n').semestre[2]. cin. else if((examen[0]=='n')&&(semestre[0]=='s') ) cout<<"estaras trabajando"<<endl. } En esta ocasión se eliminaron las llaves que no eran necesarias. 53 .get(). //espera a que oprimas enter return 0. cin.cout<<"fin del programa"<<endl. 3. RESPONDA: 1. Responde las siguientes preguntas con tus propias palabras? 1.5 y 2. ¿Qué utilidad tiene la sentencia if? 2.4? 54 . ¿Qué utilidad tiene la sentencia else? 3. ¿Cuál es la salida del programa? 2. Justifique el funcionamiento del programa?  ACTIVIDAD EXTRACLASE 2. Qué diferencia hay entre los códigos de las actividades 2. como el mostrado al inicio de esta sección. else cout>>"valor es diferente de 0".4. 55 . De un ejemplo de dónde utilizar la sentencia if y else. ¿Cuáles son los errores en el siguiente fragmento de código? if ( valor == 0 ) cout>>"valor es igual a 1". El código corregido es: 5. . para esos casos tenemos otra herramienta muy cómoda. la estructura de selección múltiple switch. case b: //cuando el parámetro tiene un valor b Acciones a ejecutar . caso por default.2. Realice el siguiente programa: #include <iostream. ¿Qué sucede cuándo necesitamos usar varios if's?  Muchas veces nos metemos en aprietos cuando necesitamos tener el control sobre muchas opciones que pudiese tomar el usuario. . }  ACTIVIDAD EN CLASE 2. La forma general es: switch (parámetro a evaluar o comparar){ case a : //cuando el parámetro tiene un valor a Acciones a ejecutar.h> int main(){ 56 . porque resulta muy complicado pensar en varios if/else anidados.6.6. ESTRUCTURA DE CONTROL SWITCH. cout<<"2. break.int opcion. break.Opcion 1"<<endl. cout<<"1. } 57 .Opcion 2"<<endl.Opcion 3"<<endl. cin. cout<<"elige una opcion"<<endl. cin>>opcion. break.ignore(). return 0. case 2: cout<<"ejecucion 2"<<endl. cin.get(). cout<<"Menu de opciones"<<endl. switch(opcion){ case 1: cout<<"ejecucion 1"<<endl. default: cout<<"es una opcion no valida"<<endl. cout<<"3. case 3: cout<<"ejecucion 3"<<endl. break. } cout<<"presiona enter para salir"<<endl. inmediatamente se salta el resto de la estructura. Esta se encarga de alterar el flujo de control. break. Cuando se encuentra un break. así que case 1 . No es exclusiva de la estructura switch. RESPONDA: 1. for. entonces debería de escribirse case '1'. Sin embargo es mejor no depender demasiado del break. 58 . Encontramos una nueva instrucción. también se puede colocar en bloques if. se refiere a que la variable opcion tiene un valor de 1. Si se tratase de una variable de tipo carácter. while o do while (que se verán a continuación). ¿Cuál es el funcionamiento del programa? Notemos que opcion es una variable de tipo entero. 4. ¿Para qué sirve la instrucción case? 3. ¿Para qué sirve la instrucción default? 4. ACTIVIDAD EXTRACLASE 2. ¿Para qué sirve la instrucción switch? 2. ¿Para qué sirve la instrucción break? 59 . Responda las siguientes preguntas con sus propias palabras: 1. pensemos que son las calificaciones del semestre. El bloque de código se debe de encontrar entre llaves. Mirando rápidamente la forma de estructurar nuestro programa (algo que se debe de hacer siempre. excepto si es una sola línea. } Un ejemplo de éste lo podemos ver en el cálculo del promedio de 10 números.7. La forma general de esta instrucción es la siguiente: while (condición a cumplir) { acciones a ejecutar. ¿Qué es un ciclo?  La sentencia de control while se encarga de repetir un bloque de código mientras se cumpla una condición. podemos pensar en la siguiente solución: Declarar variables e inicializarlas Mientras (no se hagan 10 iteraciones){ Leer una calificación Sumarla al total Determinar que se ha hecho una iteración } calcular el promedio mostrar el promedio 60 .2. ESTRUCTURA DE CONTROL WHILE. y antes de sentarse frente a nuestro ordenador). cout<<"el promedio de calificaciones es: "<<promedio<<endl.ignore(). while(iteracion<=10){ cout<<"teclea "<<iteracion<<endl. cin. }  RESPONDA. #include <iostream. cin>>calificacion. suma+=calificacion. return 0. ¿Cuál es el funcionamiento del programa? 61 . ++iteracion.7. } tu calificacion promedio=(float)suma/(iteracion-1).h> int main(){ int calificacion. suma=0. cin. float promedio. iteracion=1.El programa queda como sigue:  ACTIVIDAD EN CLASE 2.get(). 1. puedes introducir en el programa cualquier número (negativos o mayores a 10) ¿Cómo harías para que el programa sólo acepte números entre 5 y 10? 62 .2. Si observas. ¿Qué ventajas tiene el uso de la sentencia while? 2.5. ACTIVIDAD EXTRACLASE 2. Investiga en Internet qué es y cómo se usa la sentencia dowhile? 63 . Responda las siguientes preguntas con sus propias palabras: 1. en donde se conoce el número de iteraciones o la condición a comprobar. de "<<i<<" es: cin. Veamos un ejemplo sencillo:  ACTIVIDAD EN CLASE 2.2. } 64 .h> int main(){ int i.8. La forma general de esta sentencia es: for(asignación inicial . instrucción ) { bloque de instrucciones. return 0. ¿Qué es una operación secuencial?  El ciclo for es al que más se recurre cuando se requiere realizar operaciones secuenciales. #include <iostream.8. i <= 10. i++ ) cout<<"El doble "<<i*2<<endl. for( i = 1. } condición . SENTENCIA DE CONTROL FOR.get(). 65 . 1. RESPONDA. la incrementa hasta llegar a diez. en cada incremento calcula el doble de ese número y lo muestra en pantalla. Haga una tabla en la que se muestre el valor de i en cada iteración: 2. ¿Cuál es la salida del programa? 3. ¿Cómo harías para que en vez de ser 10 el número de veces que calcula un número. sea un número determinado por el usuario? El programa anterior inicializa la variable i en 1. resulta muy útil utilizar la filosofía de “divide y vencerás”. FUNCIONES. El prototipo de una función se refiere a la información contenida en la declaración de una función. cada que necesitemos que se ejecuten esa serie de instrucciones. en el que se repetirán varias instrucciones pero con distintos valores que definan los resultados. por ejemplo. el nombre de la función. int b). La siguiente declaración: int suma(int a. tiene por nombre suma. Prototipos. Una función debe de estar definida o al menos declarada antes de hacer uso de ella. haremos una invocación a la función por medio de ese nombre. Cuando se declara una función debe de especificarse el tipo de dato que va a devolver. Entonces. y al invocarla.UNIDAD III _____________________________________________________ 3. recibe 2 parámetros de tipo 66 . y los parámetros. Cuando realizamos un programa. Especifica una función que devuelve un tipo de dato entero.1. Esta estrategia consiste en dividir nuestro problema en otros más sencillos. ¿Qué es una función?  Cuando tratamos de resolver un problema. Una función es un bloque de instrucciones a las que se les asigna un nombre. podemos construir el programa a base de funciones. Esta declaración debe de escribirse antes de la función main. Veamos un ejemplo: 67 .entero. y su definición puede escribirse después de ésta. suma es: cin. cout<<"calculare la suma de 2 numeros"<<endl. } 68 . cout<<"la "<<suma(dato1. Realiza el siguiente programa: #include <iostream. cin>>dato2. return 0.h> int suma(int x. cin.get(). int y).dato2)<<endl.1. } int suma(int a.dato2. ACTIVIDAD EN CLASE 3. //Este es el prototipo int main(){ int dato1.ignore(). int b){ //Esta es la declaración de la función return a+b. cout<<"escribe dos"<<endl. el dato 1 y luego el cin>>dato1.  RESPONDA. Y los parámetros son a y b. pero se vería mejor si fueran iguales. Notemos que el prototipo de la función tiene los nombres de los parámetros distintos a los de la definición. nos referimos a los valores que aparecen en la llamada a la función. Cuando hablamos de argumentos. 69 . Si tecleas los valores 3 y 5 ¿Cuál es la salida del programa? 2. 1. Paso de argumentos. Lo que no puede cambiar es el tipo de datos que va a recibir. los que reciben los datos. Podíamos haber escrito la función completa antes del main. En el ejemplo anterior los argumentos fueron dato1 y dato2. ¿Qué sucede si quitas el prototipo de la función (la segunda línea de código)? ¿A qué se debe? Observamos que primeramente declaramos la función suma para usarla en el bloque main. Valores de retorno. Una función puede regresar cualquier tipo de valor excepto tablas u otras funciones. esto no afectará el comportamiento del programa. y al final del código la definimos. no. Responde las siguientes preguntas con tus propias palabras: 1. ¿por qué? y ¿cómo? 70 . ACTIVIDAD EXTRACLASE 3. ¿Para qué sirve el valor de retorno de una función? 5. ¿Se puede omitir el valor de retorno de una función? Si. no y ¿por qué? 4.1. ¿Se puede omitir el prototipo de una función? Si. ¿Qué ventajas tiene la utilización de funciones? 2. ¿Para qué sirve el argumento de una función? 3. se define después de las librerías mediante un #define. Se denominan instrucciones de preproceso porque se ejecutan al comienzo de la compilación. no hay que abusar de ellas. 71 . ¿Qué es una macro y qué similitud tiene con las funciones?  Una macro es una parte del código que puede parecer y actuar como una función.2.3. Sin embargo. porque podrían entorpecer el código y hacer lento el programa. MACROS.  ACTIVIDAD EN CLASE 3.2. Realiza el siguiente programa: #include <iostream.h> #define mayor(a,b) (a>b)? a: b int main(){ int a,b; cout<<"teclea 2 numeros distintos"<<endl; cin>>a; cin>>b; cout<<"el mayor <<(mayor(a,b))<<endl; cin.ignore(); de esos numeros es: " cin.get(); return 0; }  RESPONDA: 1. ¿Cuál es la línea de código que define la macro? 2. ¿Cuál es la salida del programa? Debemos tener cuidado si vamos a usar macros, las macros, al compilar el programa, se sustituyen directamente en donde se invocan, es decir, que en este ejemplo, es como si se introdujera directamente los condicionales dentro del cout. Así, debemos 72 tener cuidado en introducir bloques grandes de código en una macro (algo nada recomendable), sobre todo, cuidado con los puntos y comas. Podemos ver que las macros al igual que las funciones pueden tener parámetros, sin embargo, tienen que escribirse con cuidado.  ACTIVIDAD EXTRACLASE 3.2. Responde las siguientes preguntas con tus propias palabras: 1. ¿Qué es una macro? 2. ¿Qué ventajas tiene la utilización de macros? 3. ¿Cuáles son las desventajas de las macros? 4. ¿Qué diferencia hay entre macros y funciones? 5. En tu opinión ¿qué es más fácil usar, una macro o una función y por qué? 73 3.3. RECURSIVIDAD. ¿Qué es la recursividad?  La recursividad se presenta cuando una función se invoca a si misma. Distintamente a las iteraciones (bucles), las funciones recursivas consumen muchos recursos de memoria y tiempo. Una función recursiva se programa simplemente para resolver los casos más sencillos, cuando se llama a una función con un caso más complicado, se divide el problema en dos partes, la parte que se resuelve inmediatamente y la que necesita de más pasos, ésta última se manda de nuevo a la función, que a su ves la divide de nuevo, y así sucesivamente hasta que se llegue al caso base. Cuando se llega al final de la serie de llamadas, va recorriendo el camino de regreso, hasta que por fin, presenta el resultado. Un ejemplo clásico para este problema es calcular el factorial de un número, (n!). El factorial de un número se define como el producto de todos los números enterios anteriores a él, por ejemplo: ● ● ● 5! = 1*2*3*4*5 = 120, 3! = 1*2*3 = 6, 7! = 1*2*3*4*5*6*7 = 5040. Conocemos los casos base, 0!=1, 1!=1. Sabemos que la función factorial puede definirse como n!=n⋅n−1!. Entonces, 5! = 5*4! = 5*4*3! = 5*4*3*2! = 5*4*3*2*1! = 120. Nuestro programa quedaría como sigue: 74  ACTIVIDAD EN CLASE 3.3. #include <iostream.h> long factorial(long numero); //prototipo int main(){ long numero; cout<<"número para calcular factorial:"<<endl; cin>>numero; cout<<"el factorial "<<factorial(numero)<<endl; cin.ignore(); cin.get(); return 0; } el es: long factorial(long numero){ if(numero<=1) return 1; else return numero*factorial(numero-1); }  RESPONDA: 1. ¿Cuál es el factorial de 8? 2. ¿Cuál es el factorial de 9? 3. ¿Cuál es el factorial de 10? 4. ¿Cuál es el factorial de 11? 5. ¿Cuál es el factorial de 12? 75 ¿Qué desventajas tiene el uso de la recursividad? 4. 76 .3. ¿Qué es la recursividad? 2. ¿Qué ventajas tiene el uso de la recursividad? 3. Investiga en Internet algún problema matemático que requiera el uso de recursividad para solucionarlo? Explica brevemente cuál es el problema y cómo se soluciona. Responda las siguientes preguntas con sus propias palabras: 1. ACTIVIDAD EXTRACLASE 3. Inc. C++ for dummies. 2009. 2006. Tutorial de C++ o el diario de Peter Class. Aprenda C++ Avanzado. 5. TECNUM. Servicios Informáticos U. http:// slent. Paul Bustamante. 3. C++ Manual teórico-práctico.es/programacion/index. 7. Alan D. TECNUM. 6. 2. 1998.BIBLIOGRAFÍA. _____________________________________________________ 1. Apoyo a la investigación C. Stephen Randy Davis. 5ta. Matthew Telles.M. 2004. Manual básico de programación en C++. 2004. C++ Timesaving Technique For Dummies. Inc.D. 8. Javier García de Jalón. Aprenda C++ Básico. 2005. Paul Bustamante. Wiley Publishing. 2004. Peter Class y Pello Xabier Altadill Izura. 77 . Osorio Rojas. 2004.html. Sin editorial. TECNUM. Aprenda C++.P. Wiley Publishing.C. Edición. 4.iespana. 78 . Sus trabajos más importantes en los últimos años son los siguientes: ● ● ● ● ● ● ● ● ● Principios de Data Mining (2005).ACERCA DEL AUTOR. muestra fotográfica (2009). Principios de Geometría Analítica y Álgebra Lineal (2004). La Integral: Un enfoque computacional (2004). el 10 de Abril de 1984. Ventajas y Desventajas del Plan Puebla-Panamá (2003). 10 panistas a los que hay que odiar (2009). La Historia de un Gran Hombre (2008). Paisajes Poblanos. Transmisión y Comunicación de Datos (2005). Principios de programación en C++ (2009). 79 . Titulado como Ingeniero en Ciencias de la Computación por parte de la Benemérita Universidad Autónoma de Puebla. México. _____________________________________________________ Nace en la Ciudad de Puebla. . la redistribución de este libro sín el permiso del propietario de los derechos.net Comparte este libro con todos y cada uno de tus amigos de forma automática. mediante la selección de cualquiera de las opciones de abajo: Para mostrar tu agradecimiento al autor y ayudar a otros para tener agradables experiencias de lectura y encontrar información valiosa. visita: http://espanol.net/tos.net.html . Por lo tanto.net respeta la propiedad intelectual de otros. Cuando los propietarios de los derechos de un libro envían su trabajo a Free-eBooks.free-ebooks. por favor. nos están dando permiso para distribuir dicho material. este permiso no se transmite a los demás.Este libro fue distribuido por cortesía de: Para obtener tu propio acceso a lecturas y libros electrónicos ilimitados GRATIS hoy mismo. puede constituir una infracción a las leyes de propiedad intelectual. A menos que se indique lo contrario en este libro. INFORMACIÓN DE LOS DERECHOS DEL AUTOR Free-eBooks. estaremos muy agradecidos si "publicas un comentario para este libro aquí". siga nuestras Recomendaciones y Procedimiento de Reclamos de Violación a Derechos de Autor como se ve en nuestras Condiciones de Servicio aquí: http://espanol. Si usted cree que su trabajo se ha utilizado de una manera que constituya una violación a los derechos de autor.Free-eBooks.
Copyright © 2024 DOKUMEN.SITE Inc.