Principios-de-programacion-en-c.pdf

  • Uploaded by: Julian Malagon
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Principios-de-programacion-en-c.pdf as PDF for free.

More details

  • Words: 7,333
  • Pages: 81
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

Índice PRESENTACIÓN...........................................................................7 OBJETIVO GENERAL...................................................................8 UNIDAD I.......................................................................................9 1.1. INTRODUCCIÓN AL LENGUAJE C++...............................9 1.2. PROGRAMACIÓN ORIENTADA A OBJETOS..................11 1.3. ESTRUCTURA BÁSICA DE UN PROGRAMA..................15 1.4. VARIABLES......................................................................19 1.5. OPERACIONES BÁSICAS...............................................29 UNIDAD II....................................................................................36 2.1. MANEJO DE DATOS Y ESTRUCTURAS DE CONTROL.36 2.2. SALIDA DE DATOS..........................................................36 2.3. ENTRADA DE DATOS......................................................38 2.4. ENTRADA Y SALIDA DE CARACTERES.........................42 2.5. ESTRUCTURA DE CONTROL IF.....................................46 2.6. ESTRUCTURA DE CONTROL SWITCH..........................56 2.7. ESTRUCTURA DE CONTROL WHILE.............................60 2.8. SENTENCIA DE CONTROL FOR.....................................64 UNIDAD III...................................................................................66 3.1. FUNCIONES....................................................................66 3.2. MACROS..........................................................................71 3.3. RECURSIVIDAD..............................................................74 BIBLIOGRAFÍA............................................................................77 ACERCA DEL AUTOR.................................................................79

5

6

PRESENTACIÓN. _____________________________________________________ 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++. Las prácticas están diseñadas para seguirse de manera secuencial, sin omitir ninguna. Este manual no tiene la intención de sustituir el trabajo extraclase, ya que ésta complementará el trabajo desarrollado. Además, a lo largo de todo el manual, se proponen diversos actividades que el lector podrá realizar como parte del trabajo en casa. 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. Ing. Luis Aldana.

7

OBJETIVO GENERAL. _____________________________________________________ El lector será capaz de resolver problemas de base científica mediante el diseño, codificación e implantación de programas de computadora en lenguaje C++. 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++.

de de de de

8

UNIDAD I _____________________________________________________

1.1. INTRODUCCIÓN AL LENGUAJE C++. ¿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, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por estos dos autores. El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, también de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar

9

aplicaciones en Internet. En estas Notas se van a presentar los fundamentos del lenguaje C++ tradicional a partir del lenguaje C.

10

1.2. 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, que pueden ser diseñados y comprobados de manera independiente del programa que va a usarlos. Muchos de estos elementos podrán ser reutilizados en otros programas. A estas "piezas", "módulos" o "componentes", que interactúan entre sí cuando se ejecuta un programa, se les denomina objetos. Estos objetos contienen tanto datos como las funciones que actúan sobre esos datos. De ordinario, cada uno de estos objetos corresponde a algún elemento que debe utilizar el programa. Algunos de estos elementos representan entidades del mundo real (matrices, personas, cuentas de banco, elementos mecánicos o eléctricos, ...) y otros pueden ser componentes del ordenador (tanto de software como de hardware: otro programa, un fichero de disco, una impresora conectada en un puerto, una ventana abierta en la pantalla, ...). También pueden ser estructuras de datos: colas, pilas, ... Durante la ejecución del programa, los objetos interactúan pasándose mensajes y respuestas. 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), 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

funcionan el interruptor, el dial del volumen y los botones de cambio de canal para utilizar un televisor). 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, varios usuarios, varios clientes, varias cuentas corrientes de un banco, etc.). La definición genérica de estos objetos análogos se realizar mediante la clase. Así, una clase contiene una completa y detallada descripción de la información y las funciones que contendrá cada objeto de esa clase. Las clases de C++ se pueden ver como una generalización de las estructuras de C. 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++, 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.



Clases, métodos y objetos.

En ANSI C las funciones son algo relativamente independiente de las variables, y constituyen el centro del lenguaje. Se dice por eso que C es un lenguaje algorítmico (o procedural, en inglés). Cualquier función se puede comunicar con las demás a través de variables globales, del valor de retorno y de los argumentos, pasados por valor o por referencia. Esta facilidad para comunicarse con otras funciones hace que se puedan producir efectos laterales no deseados. En un Lenguaje Orientado a Objetos tal como el C++, el centro del lenguaje no son las funciones sino los datos, o más bien los objetos, que contienen datos y funciones concretas que permiten manipularlos y trabajar sobre ellos. Esto hace que la mentalidad 12

con la que se aborda la realización de un programa tenga que ser muy diferente. Para proteger a las variables de modificaciones no deseadas se introduce el concepto de encapsulación, ocultamiento o abstracción de datos. Los miembros de una clase se pueden dividir en públicos y privados. Los miembros públicos son aquellos a los que se puede acceder libremente desde fuera de la clase. Los miembros privados, por el contrario, solamente pueden ser accedidos por los métodos de la propia clase. De ordinario una clase ofrece un conjunto de funciones públicas a través de las cuales se puede actuar sobre los datos, que serán privados. Estas funciones o métodos públicos constituyen la interface de la clase. De esta forma se garantiza que se hace buen uso de los objetos, manteniendo la coherencia de la información. Esto sería imposible si se accediera libre e independientemente a cada variable miembro. Al usuario le es suficiente con saber cómo comunicarse con un objeto, pero no tiene por qué conocer el funcionamiento interno del mismo. En C+ + los métodos de una clase pueden ser funciones u operadores. Todo esto se estudiará en detalle más adelante.

13



ACTIVIDAD EXTRACLASE 1.1.

Responde las siguientes preguntas con tus propias palabras de acuerdo a las lectura de los dos temas anteriores: 1. ¿Cómo se define el Lenguaje C++?

2. ¿Qué diferencia hay entre el Lenguaje C y el C++?

3. ¿Qué es una clase?

4. ¿Qué es un objeto?

5. ¿Qué es un método?

6. ¿Qué es un miembro privado?

7. ¿Qué es un miembro público?

14

1.3. ESTRUCTURA BÁSICA DE UN PROGRAMA. ¿Cuál es la estructura básica de un programa?



ACTIVIDAD EN CLASE 1.1.

Realice el siguiente programa en C++, el cual muestra un mensaje en pantalla. #include int main(void){ cout<<"hola mundo"<<endl; getchar(); return 0; }



RESPONDA:

1. Justifique con sus propias palabras el funcionamiento del programa:

15

2. ¿Cuál es la versión de este programa en Lenguaje C?

Analicemos cada parte de nuestro primer programa. #include La parte del #include se refiere a la biblioteca de funciones que vamos a utilizar. Es decir, para llamar a una biblioteca en particular debemos hacer lo siguiente: #include El estándar de C++ incluye varias bibliotecas de funciones, y dependiendo del compilador que se esté usando, puede aumentar el número. int main(void){ Todo programa en C++ comienza con una función main(), y sólo puede haber una.

16

En C++ el main() siempre regresa un entero, es por eso se antepone int a la palabra main. Los paréntesis que le siguen contienen lo que se le va a mandar a la función. En este caso se puso la palabra void que significa vacío, es decir que a la función main no se le está mandando nada, podría omitirse el void dentro de los paréntesis, el compilador asume que no se enviará nada. La llave que se abre significa que se iniciará un bloque de instrucciones. cout<<”hola mundo”<<endl; Esta es una instrucción. La instrucción cout está definida dentro de la biblioteca iostream.h, que previamente declaramos que íbamos a utilizar. Una función, en este caso main() siempre comienza su ejecución con una instrucción (la que se encuentra en la parte superior), y continúa así hasta que se llegue a la última instrucción (de la parte inferior). 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. return 0; Esta es otra instrucción, en este caso la instrucción return determina que es lo que se devolverá de la función main(). Habíamos declarado que main devolvería un entero, así que la instrucción return devuelve 0. Lo cual a su vez significa que no han ocurrido errores durante su ejecución. } La llave de cierre de la función main() indica el termino del bloque de instrucciones. En algunos programas de ejemplo, notarás el uso de dobles diagonales (//). 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

comentario de varias líneas y cualquier cosa que se escriba dentro de ella no influenciará en el desempeño del programa. También verás que muchas veces utilizaremos una diagonal invertida (\). 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.

18

1.4. VARIABLES. ¿Qué es y para que sirve una variable? En la sección anterior vimos la forma general de un programa, un programa sumamente sencillo. Ahora veamos un programa muy parecido al anterior:



ACTIVIDAD EN CLASE 1.2.

Realice el siguiente programa en C++: #include int main( ){ int variable; variable=5; cout<


RESPONDA:

1. ¿Qué hace y cómo funciona el programa anterior?

2. ¿Cuál es la salida del programa?

19

3. ¿Qué sucede si se elimina la linea int variable?

Notemos en esta ocasión sólo la parte: int variable; . A esta sección se le denomina declaración. Se trata de la declaración de una variable de nombre variable. Una variable es una posición de memoria con nombre que se usa para mantener un valor que puede ser modificado por el programa. Las variables son declaradas, usadas y liberadas. Una declaración se encuentra ligada a un tipo, a un nombre y a un valor. Básicamente, la declaración de una variable presenta el siguiente aspecto: tipo nombre [=valor]; Los corchetes significan que esa parte es opcional. Por ejemplo, la declaración: int mi_variable=5; Declara una variable tipo entero de nombre mi_variable y le asigna el valor 5. C++ es sensible a mayúsculas y minúsculas, así que si el nombre de nuestra variable empieza con una letra en mayúsculas, debemos de asegurarnos que durante el resto del código nos refiramos a ella exactamente como la escribimos. Los nombres de 20

las variables no pueden usar signos de puntuación, sólo caracteres “A-Z”, “a-z”, “_“, “09”, aunque ningún nombre debe comenzar con un número (0-9). Además no se deben de repetir nombres de variables en el mismo contexto. Además de las restricciones anteriores, existe otra, y esta tiene que ver con las palabras reservadas del lenguaje, que no son muchas a comparación de otros lenguajes. Las palabras que se presentan en la siguiente lista, no pueden ocuparse como nombres de variables, funciones, u otras instrucciones definidas por el programador. and, and_eq, asm, auto,bitand, bitor, bool, break, case, match, char, class,compl., const, const_cast, continue, default, delete, do, Double,dynamic_cast, else, enum, explicit, export, extern, false, float,for, friend, goto, if, inline, int, long, mutable,namespace, new, not, not_eq, operator, or, or_eq, private,protected, public, register, reinterpret_cast, return, short, signed, sizeof,static, static_cast, struct, switch, template, this, throw, true,try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t ,while,xor, xor_eq. 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), estas variables son llamadas locales; en la definición de parámetros de una función, como se verá más adelante; y fuera de todas las funciones, variables globales.

21



ACTIVIDAD EN CLASE 1.3.

Realice el siguiente programa en C++: #include int variable_global=10; int main(){ int variable_local=20; cout<<"\nprograma que muestra los usos de variables "\ "globales y locales\n"<<endl; cout<<"la variable global tiene asignado un: "\ <


RESPONDA:

1. ¿Cuál es y qué valor tiene la variable global?

2. ¿Cuál es y qué valor tiene la variable local?

22

Una variable global puede ser modificada en cualquier parte del programa, mientras que una variable local sólo puede ser modificada y utilizada dentro de la función en la que se ha declarado. Por supuesto, antes de utilizar una variable y hacer operaciones con ella, hay que declararla. Por lo general, siempre se trata de utilizar lo menos posible la declaración de variables globales. El siguiente ejemplo muestra que se pueden declarar variables en cualquier parte del programa, siempre y cuando se declaren antes de usarlas.

23



ACTIVIDAD EN CLASE 1.4.

Realice el siguiente programa: #include int main( ){ int variable1=10; cout<<"la variable 1 local tiene almacenado un: "\ <


RESPONDA:

1. ¿Qué valor tiene la variable 1? 2. ¿Qué valor tiene la variable 2? 3. La variable 1 ¿es global o local? 4. La variable 2 ¿es global o local? En un programa puede que necesitemos declarar un dato y 24

asignarle un nombre, pero que éste no pueda ser modificado. En este caso debemos declarar una constante. Por ejemplo, el siguiente programa calcula el área de un círculo.

25



ACTIVIDAD EN CLASE 1.5.

#include int main( ){ const float pi=3.141592; int radio=5; float area; area=pi*radio*radio; cout<<"el "<<area<<endl;

area

del

circulo

es:

getchar(); return 0; }



RESPONDA:

1. ¿Cuál es la constante en el programa anterior y qué valor guarda?

2. ¿Cuál es la salida del programa?

26

Los diferentes tipos de datos, es decir, los tipos de variables que podemos declarar son los siguientes:

27



ACTIVIDAD EXTRACLASE 1.2.

Responda las siguientes preguntas de acuerdo a lo visto en clase: 1. ¿Cuál es la utilidad de una variable?

2. ¿Cuál es la utilidad de una constante?

3. Describa brevemente al menos tres tipos de datos diferentes?

4. Corrija los errores en el siguiente fragmento de código: #include <strem.h> int main(){ cout>> "Hola mundo" getchar; return; { El programa corregido debe ser:

28

1.5. OPERACIONES BÁSICAS. ¿En qué casos son útiles los operadores aritméticos en programación? En ejemplos anteriores ya hicimos uso de algunos operadores, “+” y “*”, suma y multiplicación respectivamente.

 ACTIVIDAD EN CLASE 1.6. Realice el siguiente programa: #include int main( ){ int a=5, b=10, c=20, r; r=a+b; a=c%r; //aquí “a” valdrá 5(resto de 20/15) c=b-a; a=a*2;

29

cout<<"a="<
c="<
cout<<"la suma de a y b es: "<
30



RESPONDA:

1. ¿Cuál es la salida del programa anterior?

2. ¿Qué significa la expresión a=c%r;?

3. ¿Cuáles son los valores de a, b, c y r, respectivamente?

Estos operadores no son exclusivos de los tipos de datos numéricos. Un dato tipo char también es modificable mediante operadores. Recuerda que lo que se guarda es el código ASCII.



ACTIVIDAD EXTRACLASE 1.3.

Realiza la lectura del siguiente link referente al código ASCII: http://es.wikipedia.org/wiki/ASCII. La tabla completa de dicho código imprimela o guardala para poder realizar la siguiente actividad en clase.

31



ACTIVIDAD EN CLASE 1.7.

Realice el siguiente programa: #include int main( ){ char car1='a', car2; car2=car1+15; cout<<"car2="<
suma

de

los

dos

car1=car1-car2; cout<<"car1="<


RESPONDA:

1. ¿Cuál es la salida del programa anterior y por qué se obtienen esos resultados (apoyate en tu tabla ASCII)?

32

En estos dos últimos ejemplos, note las siguientes instrucciones: a=a*2; car1=car1-car2; Ambas pueden escribirse de una mejor forma: a*=2; car1-=car2; Podría decirse que es una abreviatura de código. El operador seguido de la asignación. Ahora conozcamos a otros operadores muy útiles. “++” y “--“. Éstos tienen la función de aumentar y disminuir en uno al dato que opera. Pero su comportamiento depende de si sea en prefijo (antes del operando) o sufijo (después de).



ACTIVIDAD EN CLASE 1.8.

Realice el siguiente programa: #include int main( ){ int a,b,c; a=17*5+2; multiplicación

//primero

resuelve

la

cout<<"a="<
33

b=a++ - 7; //a-7=80, luego se incrementa la variable a cout<<"b="<, el cual contiene la información básica requerida para todas las operaciones de entrada y salida (E/S) de flujo.

2.2. SALIDA DE DATOS. Cuando usamos la instrucción: cout<<"Mensaje a la pantalla"<<endl; Estamos enviando una cadena de caracteres (“Mensaje a la pantalla”) al dispositivo de salida estándar (la pantalla). Luego, el manipulador de flujo endl da el efecto de la secuencia de escape ‘\n’.



ACTIVIDAD EN CLASE 2.1.

Realice el siguiente programa:

36

#include int main(){ cout<<"cadena de caracteres"<<endl; cout<<2+2<<endl; //imprime un entero cout<<9/2<<endl; //imprime un flotante cout<<(int)(3.141592+2)<<endl; //imprime un entero getchar(); return 0; }



RESPONDA:

1. ¿Cuál es la salida del programa anterior?

2. ¿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.

37

2.3. 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, imaginemos que en este preciso momento y con los conocimientos que tenemos hasta ahora, necesitamos hacer un programa que calcule la distancia a la que caerá un proyectil lanzado a determinada velocidad y ángulo, o simplemente un programa que calcule las raíces de una ecuación cuadrática. Sería muy molesto estar cambiando los valores de las variables directamente en el código para cada caso que queramos calcular. Por eso debemos ver cuanto antes la forma de leer datos desde el teclado. La principal función para leer desde el teclado es cin>>, pero es mejor ver un ejemplo para tener la idea clara.

38



ACTIVIDAD EN CLASE 2.2.

Realice el siguiente programa: #include int main(){ int numero; char car; float otroNum; cout<<"escribe un numero:"<<endl; cin>>numero; cout<<"\nel "<
numero

que

tecleaste

es:

cout<<"dame una letra"<<endl; cin>>car; cout<<"\ntecleaste: "<>otroNum; cout<<"\neste es: "<
39



RESPONDA

1. ¿Cómo funciona la instrucción cin<
2. ¿Cómo trabaja el programa anterior?

En resumen, cin es el flujo de entrada asociado al teclado, cout es el flujo de salida estándar asociado a la pantalla.

40



ACTIVIDAD EXTRACLASE 2.1.

Responda las siguientes preguntas de acuerdo a lo visto en clase: 1. ¿Para qué sirve la expresión cout?

2. ¿Para qué sirve la expresión endl?

3. ¿La expresión cout sirve para mostrar cualquier tipo de dato? Si, no, ¿por qué?

4. ¿Cómo puede unir varios datos con una sentencia cout?

5. ¿Para qué sirve la expresión cin?

6. ¿La expresión cin sirve para pedir cualquier tipo de dato? Si, no, ¿por qué?

41

2.4. ENTRADA Y SALIDA DE CARACTERES. La función de lectura desde el teclado cin no es la única que existe. Hay otros métodos de lectura desde el teclado para la lectura de caracteres. Ahora veamos un ejemplo.



ACTIVIDAD EN CLASE 2.3.

#include int main(){ char caracter,nombre[20], apellido[20]; char seg_apellido[20]; cout<<"Teclea tu nombre por favor"<<endl; cin.get(caracter); cin.get(nombre,20,' '); cin.get(); cin.get(apellido,20,' '); cin.get(); cin.get(seg_apellido,20); cout<
letra

inicial

42

cout<<"tu "<
nombre

es:

cout<<"tu "<
apellido

paterno

es:

cout<<"tu "<<seg_apellido<<endl;

apellido

materno

es:

cout<<"Escribe el nombre de tu empresa: "<<endl; cin.ignore(); cin.getline(nombre,20); cout<<"el nombre de tu empresa: "<<nombre<<" tiene " <


RESPONDA:

1. ¿Cómo funciona el programa?

2. ¿Para qué sirve la instrucción cin.get();?

43

3. ¿Qué sucede si cambias cin.get() por getchar();?

4. ¿Qué diferencia hay entre cin.get() y getchar();?

Primero declaramos una variable char, y 3 variables de cadenas de caracteres. Pide al usuario que teclee su nombre completo, 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. Luego, otra instrucción get se encarga de leer y desechar el carácter espacio, para nuevamente leer hasta encontrar otro espacio. Deja de leer hasta que se presione enter, hayas escrito o no tus dos apellidos. Así que cuando oprimes enter, carecer tiene tu letra inicial y la presenta en pantalla, para aparecer tu nombre imprime caracter seguido de nombre, porque a ésta última no almacenó el primer carácter. Las siguientes instrucciones son parecidas hasta que pide el nombre de tu empresa. La función ignore descarta del flujo el carácter de terminación, 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). Se escribe el nombre y con gcount() presenta los caracteres leídos. Finalmente espera que oprimas enter para terminar el programa.

44



ACTIVIDAD EXTRACLASE 2.2.

Responde las siguientes preguntas con tus propias palabras:

1. ¿Para qué sirve la instrucción cin.get();?

2. ¿Para qué sirve la instrucción cin.ignore();?

3. ¿Qué hace la instrucción cin.getline(nombre,20);?

4. ¿Qué hace la instrucción cin.gcount();?

45

2.5. ESTRUCTURA DE CONTROL IF. ¿En nuestra vida cotidiana qué es una condición y que similitud hay en programación?



En nuestra vida cotidiana, todos tenemos una lógica a seguir, continuamente tomamos decisiones, y estas decisiones repercuten en nuestra acción siguiente. Por ejemplo, supongamos el caso de un estudiante de nivel preparatoria que cursa el sexto semestre, él está pensando en presentar el examen para la universidad, sin embargo, sus calificaciones no le han dado mucho aliento últimamente, y está en riesgo de tener que repetir ese semestre, si ocurre eso, el resultado que tenga en el examen no importará. Lo que valla a pasar marcará el camino a seguir en su vida. Analicemos de una forma general este caso: Curso el sexto semestre, entonces Presento el examen de admisión Si paso el examen y además paso el semestre, entonces Estaré en la universidad Si paso el semestre pero no paso el examen, entonces Estaré trabajando Si no paso el semestre, entonces Curso el sexto semestre (es decir, regresa al principio) Estas son las opciones que él se plantea, aunque algunos pensarán en otras más. Puede estudiar, trabajar o repetir todos los pasos anteriores. 46

En la programación también se tienen que tomar decisiones que influirán en el comportamiento del programa, y también se pueden repetir series de pasos hasta obtener un resultado. Se trata de una estructura de selección. Es decir que si se cumple el condicional se ejecutarán varias instrucciones más. En el ejemplo anterior, 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. “estaré en la universidad” es la acción a ejecutar.

47



ACTIVIDAD EN CLASE 2.4.

Realice el siguiente programa en C++: #include int main(){ char examen[2],semestre[2]; cout<<"Contesta preguntas"<<endl;

si

o

no

a

las

cout<<"Pasaste el examen?"<<endl; cin.get(examen,2); cin.ignore(20,'\n'); cout<<"Pasaste el semestre?"<<endl; cin.get(semestre,2); cin.ignore(20,'\n'); //ignora el enter if((examen[0]=='s')&&(semestre[0]=='s')){ cout<<"estas en la universidad"<<endl; } cout<<"fin del programa"<<endl; cin.get(); //espera a que oprimas enter return 0; }

48



RESPONDA:

1. ¿Cuál es la salida del programa?

2. Justifique el funcionamiento del programa?

Analicemos lo que nos importa, la sentencia if. La condición a cumplir es: (examen[0]= =’s’)&&(semestre[0]= =’s’), 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’ . Si la primera condición se cumple, entonces comprueba la segunda condición (gracias a la conjunción lógica &&). Un condicional regresa 1 en caso de ser verdadero y un 0 en caso de ser falso, esto dos valores, en C++ están definidos como tipos de datos booleanos, true y false respectivamente, así que si el condicional resulta true (verdadero), se evalúa la siguiente instrucción dentro del bloque if, en caso contrario no hace nada. En el ejemplo anterior el bloque de instrucciones a ejecutar en caso de ser verdadera la condición se encuentra dentro de llaves, pero no es necesario cuando sólo se trata de una sola línea de código. Cuando queremos, además controlar las opciones en caso de que la condición resulte falsa, tenemos que incluir aquellas instrucciones en un bloque else. 49

Por ejemplo, en el código anterior podemos añadir un else a la sentencia if, de manera que nos quede de la siguiente forma: if((examen[0]=='s')&&(semestre[0]=='s')){ cout<<"estas en la universidad"<<endl; } else{ cout<<"no estas en la universidad"<<endl; } Igualmente el bloque de instrucciones a ejecutar se estructura dentro de llaves, aunque tampoco es necesario cuando se trata de una sola instrucción. En ocasiones necesitaremos construir bloques de instrucciones if y else más complejos, es decir anidamientos. El ejemplo del estudiante también nos ayudará a visualizar este concepto. 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, podemos acomodarla de la siguiente forma, al estilo seudocódigo. 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

Curso el sexto semestre De esta manera controlamos las posibles respuestas que pudiese dar. En caso de que pase el examen y el semestre estará en la universidad, si pasa el semestre pero no pasa el examen estará trabajando, y en cualquier otro caso, cursará el semestre. Nuestro código ya terminado quedará de la siguiente manera:

51



ACTIVIDAD EN CLASE 2.5.

Realiza el siguiente programa: #include int main(){ char examen[2],semestre[2]; cout<<"Contesta preguntas"<<endl;

si

o

no

a

las

cout<<"Pasaste el examen?"<<endl; cin.get(examen,2); cin.ignore(20,'\n'); cout<<"Pasaste el semestre?"<<endl; cin.get(semestre,2); cin.ignore(20,'\n'); //ignora el enter if((examen[0]=='s')&&(semestre[0]=='s')) cout<<"estas en la universidad"<<endl; else if((examen[0]=='n')&&(semestre[0]=='s') ) cout<<"estaras trabajando"<<endl; else cout<<"cursa

el

sexto

semestre"<<endl;

52

cout<<"fin del programa"<<endl; cin.get(); //espera a que oprimas enter return 0; } En esta ocasión se eliminaron las llaves que no eran necesarias.

53



RESPONDA:

1. ¿Cuál es la salida del programa?

2. Justifique el funcionamiento del programa?



ACTIVIDAD EXTRACLASE 2.3.

Responde las siguientes preguntas con tus propias palabras? 1. ¿Qué utilidad tiene la sentencia if?

2. ¿Qué utilidad tiene la sentencia else?

3. Qué diferencia hay entre los códigos de las actividades 2.5 y 2.4?

54

4. ¿Cuáles son los errores en el siguiente fragmento de código? if ( valor == 0 ) cout>>"valor es igual a 1"; else cout>>"valor es diferente de 0"; El código corregido es:

5. De un ejemplo de dónde utilizar la sentencia if y else, como el mostrado al inicio de esta sección.

55

2.6. ESTRUCTURA DE CONTROL SWITCH. ¿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, porque resulta muy complicado pensar en varios if/else anidados, para esos casos tenemos otra herramienta muy cómoda, la estructura de selección múltiple switch. La forma general es: switch (parámetro a evaluar o comparar){ case a : //cuando el parámetro tiene un valor a Acciones a ejecutar; case b: //cuando el parámetro tiene un valor b Acciones a ejecutar . . . caso por default; }



ACTIVIDAD EN CLASE 2.6.

Realice el siguiente programa: #include int main(){

56

int opcion; cout<<"Menu de opciones"<<endl; cout<<"1.Opcion 1"<<endl; cout<<"2.Opcion 2"<<endl; cout<<"3.Opcion 3"<<endl; cout<<"elige una opcion"<<endl; cin>>opcion; switch(opcion){ case 1: cout<<"ejecucion 1"<<endl; break; case 2: cout<<"ejecucion 2"<<endl; break; case 3: cout<<"ejecucion 3"<<endl; break; default: cout<<"es una opcion no valida"<<endl; break; }

cout<<"presiona enter para salir"<<endl; cin.ignore(); cin.get(); return 0; }

57



RESPONDA:

1. ¿Cuál es el funcionamiento del programa?

Notemos que opcion es una variable de tipo entero, así que case 1 , se refiere a que la variable opcion tiene un valor de 1. Si se tratase de una variable de tipo carácter, entonces debería de escribirse case '1'. Encontramos una nueva instrucción, break. Esta se encarga de alterar el flujo de control. Cuando se encuentra un break, inmediatamente se salta el resto de la estructura. No es exclusiva de la estructura switch, también se puede colocar en bloques if, for, while o do while (que se verán a continuación). Sin embargo es mejor no depender demasiado del break.

58



ACTIVIDAD EXTRACLASE 2.4.

Responda las siguientes preguntas con sus propias palabras: 1. ¿Para qué sirve la instrucción switch?

2. ¿Para qué sirve la instrucción case?

3. ¿Para qué sirve la instrucción default?

4. ¿Para qué sirve la instrucción break?

59

2.7. ESTRUCTURA DE CONTROL WHILE. ¿Qué es un ciclo?



La sentencia de control while se encarga de repetir un bloque de código mientras se cumpla una condición. El bloque de código se debe de encontrar entre llaves, excepto si es una sola línea. La forma general de esta instrucción es la siguiente: while (condición a cumplir) { acciones a ejecutar; } Un ejemplo de éste lo podemos ver en el cálculo del promedio de 10 números, pensemos que son las calificaciones del semestre. Mirando rápidamente la forma de estructurar nuestro programa (algo que se debe de hacer siempre, y antes de sentarse frente a nuestro ordenador), 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

El programa queda como sigue:



ACTIVIDAD EN CLASE 2.7.

#include int main(){ int calificacion, suma=0, iteracion=1; float promedio; while(iteracion<=10){ cout<<"teclea "<>calificacion; suma+=calificacion; ++iteracion; }

tu

calificacion

promedio=(float)suma/(iteracion-1); cout<<"el promedio de calificaciones es: "<<promedio<<endl; cin.ignore(); cin.get(); return 0; }



RESPONDA.

1. ¿Cuál es el funcionamiento del programa?

61

2. Si observas, 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



ACTIVIDAD EXTRACLASE 2.5.

Responda las siguientes preguntas con sus propias palabras: 1. ¿Qué ventajas tiene el uso de la sentencia while?

2. Investiga en Internet qué es y cómo se usa la sentencia dowhile?

63

2.8. SENTENCIA DE CONTROL FOR. ¿Qué es una operación secuencial?



El ciclo for es al que más se recurre cuando se requiere realizar operaciones secuenciales, en donde se conoce el número de iteraciones o la condición a comprobar. La forma general de esta sentencia es: for(asignación inicial ; instrucción ) { bloque de instrucciones; }

condición

;

Veamos un ejemplo sencillo:



ACTIVIDAD EN CLASE 2.8.

#include int main(){ int i; for( i = 1; i <= 10; i++ ) cout<<"El doble "<
de

"<<<"

es:

cin.get(); return 0; }

64



RESPONDA.

1. 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, la incrementa hasta llegar a diez, en cada incremento calcula el doble de ese número y lo muestra en pantalla.

65

UNIDAD III _____________________________________________________

3.1. FUNCIONES. ¿Qué es una función?



Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia consiste en dividir nuestro problema en otros más sencillos. Cuando realizamos un programa, por ejemplo, en el que se repetirán varias instrucciones pero con distintos valores que definan los resultados, podemos construir el programa a base de funciones. Una función es un bloque de instrucciones a las que se les asigna un nombre. Entonces, cada que necesitemos que se ejecuten esa serie de instrucciones, haremos una invocación a la función por medio de ese nombre. Prototipos. El prototipo de una función se refiere a la información contenida en la declaración de una función. Una función debe de estar definida o al menos declarada antes de hacer uso de ella. Cuando se declara una función debe de especificarse el tipo de dato que va a devolver, el nombre de la función, y los parámetros. La siguiente declaración: int suma(int a, int b); Especifica una función que devuelve un tipo de dato entero, tiene por nombre suma, y al invocarla, recibe 2 parámetros de tipo

66

entero. Esta declaración debe de escribirse antes de la función main, y su definición puede escribirse después de ésta. Veamos un ejemplo:

67



ACTIVIDAD EN CLASE 3.1.

Realiza el siguiente programa: #include int suma(int x, int y); //Este es el prototipo int main(){ int dato1,dato2; cout<<"calculare la suma de 2 numeros"<<endl; cout<<"escribe dos"<<endl;

el

dato

1

y

luego

el

cin>>dato1; cin>>dato2; cout<<"la "<<suma(dato1,dato2)<<endl;

suma

es:

cin.ignore(); cin.get(); return 0; } int suma(int a, int b){ //Esta es la declaración de la función return a+b; }

68



RESPONDA.

1. Si tecleas los valores 3 y 5 ¿Cuál es la salida del programa?

2. ¿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, y al final del código la definimos. Podíamos haber escrito la función completa antes del main. Paso de argumentos. Cuando hablamos de argumentos, nos referimos a los valores que aparecen en la llamada a la función. En el ejemplo anterior los argumentos fueron dato1 y dato2. Y los parámetros son a y b, los que reciben los datos. Notemos que el prototipo de la función tiene los nombres de los parámetros distintos a los de la definición, esto no afectará el comportamiento del programa, pero se vería mejor si fueran iguales. Lo que no puede cambiar es el tipo de datos que va a recibir.

Valores de retorno. Una función puede regresar cualquier tipo de valor excepto tablas u otras funciones.

69



ACTIVIDAD EXTRACLASE 3.1.

Responde las siguientes preguntas con tus propias palabras: 1. ¿Qué ventajas tiene la utilización de funciones?

2. ¿Para qué sirve el argumento de una función?

3. ¿Se puede omitir el prototipo de una función? Si, no y ¿por qué?

4. ¿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, ¿por qué? y ¿cómo?

70

3.2. MACROS. ¿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, 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. Sin embargo, no hay que abusar de ellas, porque podrían entorpecer el código y hacer lento el programa.

71



ACTIVIDAD EN CLASE 3.2.

Realiza el siguiente programa: #include #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 long factorial(long numero); //prototipo int main(){ long numero; cout<<"número para calcular factorial:"<<endl; cin>>numero; cout<<"el factorial "<
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



ACTIVIDAD EXTRACLASE 3.3.

Responda las siguientes preguntas con sus propias palabras: 1. ¿Qué es la recursividad?

2. ¿Qué ventajas tiene el uso de la recursividad?

3. ¿Qué desventajas tiene el uso de la recursividad?

4. 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.

76

BIBLIOGRAFÍA. _____________________________________________________ 1. Manual básico de programación en C++. Apoyo a la investigación C.P.D. Servicios Informáticos U.C.M. 2009. 2. C++ for dummies. Stephen Randy Davis. Wiley Publishing, Inc. 5ta. Edición. 2004. 3. C++ Timesaving Technique For Dummies. Matthew Telles. Wiley Publishing, Inc. 2005. 4. Aprenda C++ Básico. Paul Bustamante. TECNUM. 2004. 5. Aprenda C++. Javier García de Jalón. TECNUM. 1998. 6. Aprenda C++ Avanzado. Paul Bustamante. TECNUM. 2004. 7. Tutorial de C++ o el diario de Peter Class. Peter Class y Pello Xabier Altadill Izura. Sin editorial. 2004. 8. C++ Manual teórico-práctico. Alan D. Osorio Rojas. http:// slent.iespana.es/programacion/index.html. 2006.

77

78

ACERCA DEL AUTOR. _____________________________________________________ Nace en la Ciudad de Puebla, México, el 10 de Abril de 1984. Titulado como Ingeniero en Ciencias de la Computación por parte de la Benemérita Universidad Autónoma de Puebla. Sus trabajos más importantes en los últimos años son los siguientes: ● ● ● ● ● ● ● ● ●

Principios de Data Mining (2005). Principios de Geometría Analítica y Álgebra Lineal (2004). La Integral: Un enfoque computacional (2004). Transmisión y Comunicación de Datos (2005). La Historia de un Gran Hombre (2008). Ventajas y Desventajas del Plan Puebla-Panamá (2003). 10 panistas a los que hay que odiar (2009). Paisajes Poblanos, muestra fotográfica (2009). Principios de programación en C++ (2009).

79

Este libro fue distribuido por cortesía de:

Para obtener tu propio acceso a lecturas y libros electrónicos ilimitados GRATIS hoy mismo, visita: http://espanol.Free-eBooks.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, estaremos muy agradecidos si "publicas un comentario para este libro aquí".

INFORMACIÓN DE LOS DERECHOS DEL AUTOR Free-eBooks.net respeta la propiedad intelectual de otros. Cuando los propietarios de los derechos de un libro envían su trabajo a Free-eBooks.net, nos están dando permiso para distribuir dicho material. A menos que se indique lo contrario en este libro, este permiso no se transmite a los demás. Por lo tanto, la redistribución de este libro sín el permiso del propietario de los derechos, puede constituir una infracción a las leyes de propiedad intelectual. Si usted cree que su trabajo se ha utilizado de una manera que constituya una violación a los derechos de autor, por favor, 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.free-ebooks.net/tos.html

More Documents from "Julian Malagon"

Contabilidad.pdf
October 2019 16
El Enfoque De Sistemas.docx
October 2019 50
Guia 1
December 2019 33
Alquinos.docx
May 2020 6