Professional Documents
Culture Documents
Kimball Huehuetenango
Introduccin
En el trabajo ser presentara diferentes temas relacionados con el lenguaje de programacin C++, como por ejemplo conversiones de tipos de datos, parmetros de valor y referencia, recursividad y arreglos.
En estos casos, cuando los operandos de cada operacin binaria asociados a un operador son de distinto tipo, el compilador los convierte a un tipo comn. Existen reglas que rigen estas conversiones, y aunque pueden cambiar ligeramente de un compilador a otro, en general sern ms o menos as: Cualquier tipo entero pequeo como char o short es convertido a int o unsigned int. En este punto cualquier pareja de operandos ser int (con o sin signo), long, long long, double,float o long double. Si un operando es de tipo long double, el otro se convertir a long double. Si un operando es de tipo double, el otro se convertir a double. Si un operando es de tipo float, el otro se convertir a float. Si un operando es de tipo unsigned long long, el otro se convertir a unsigned long long. Si un operando es de tipo long long, el otro se convertir a long long. Si un operando es de tipo unsigned long, el otro se convertir a unsigned long.
Esta ltima es conocida como notacin funcional, ya que tiene la forma de una llamada a funcin. En el ejemplo anterior, las lneas 3 y 4 quedaran:
d = (int)(r + b); d = (int)(n + a + r);
O bien:
d = int(r + b);
Hacer un casting indica que sabemos que el resultado de estas operaciones no es un int, que la variable receptora s lo es, y que lo que hacemos lo estamos haciendo a propsito. Veremos ms adelante, cuando hablemos de punteros, ms situaciones donde tambin es obligatorio el uso de casting.
Ejemplo de parmetros de valor y referencia #include <iostream.h> #include <conio.h> #include <stdio.h> int funcion(int n, int m); int main() { int a, b; a = 10; b = 20; cout << "a,b ->" << a << ", " << b << endl; cout << "funcion(a,b) ->" << funcion(a, b) << endl; cout << "a,b ->" << a << ", " << b << endl; cout << "funcion(10,20) ->" << funcion(10, 20) << endl; getch(); return 0; } int funcion(int n, int m) {
Recursividad en C++:
La recursividad es una tcnica de programacin elemental que permite que una funcin pueda llamarse asimismo desde la misma funcin. Se puede utilizar la recursividad como una alternativa a la iteracin. La recursividad es una herramienta poderosa e importante en la resolucin de problemas en programacin. Una solucin recursiva es normalmente menos eficiente en trminos de tiempo de computadora que una solucin iterativa debido a las operaciones auxiliares que llevan consigo las llamadas suplementarias a las funciones: sin embargo, en muchas circunstancias el uso de la recursin permite a los programadores especificar las soluciones naturales, ms lgicas, elegantes, sencillas, que seran, en caso contrario difcil de resolver. No todas las funciones pueden llamarse a s mismas, sino que deben estar diseadas especialmente para que sean recursivas, de otro modo podran conducir a bucles infinitos, o a que el programa termine inadecuadamente. Tampoco todos los lenguajes de programacin permiten usar recursividad. C++ permite la recursividad. Cada vez que se llama a una funcin, se crea un juego de variables locales, de este modo, si la funcin hace una llamada a s misma, se guardan sus variables y parmetros, usando la pila, y la nueva instancia de la funcin trabajar con su propia copia de las variables locales. Cuando esta segunda instancia de la funcin retorna, recupera las variables y los parmetros de la pila y contina la ejecucin en el punto en que haba sido llamada. Por ejemplo para calcular el factorial de cualquier nmero mayor que cero hay que calcular como mnimo el factorial de otro nmero. La funcin que se utiliza es la funcin en la que se encuentra en estos momentos, esta
Principios de la recursividad:
La recursividad es una de las formas de control ms importantes en la programacin. Los procedimientos recursivos son la forma ms natural de representacin de muchos algoritmos. El concepto de recursividad est ligado, en los lenguajes de programacin, al concepto de procedimiento o funcin. Un procedimiento o funcin es recursivo cuando durante una invocacin a l puede ser invocado a su vez l mismo. El conocimiento de los principios fundamentales de la recursividad evita evadir su utilizacin cuando su aplicacin sea conveniente para un determinado problema. El uso de la recursividad es particularmente conveniente para aquellos problemas que pueden definirse de modo natural en trminos de recursividad.
Ejemplo de recursividad: #include <iostream.h> #include <conio.h> #include <stdio.h> int SumaDigitos(int); int main() { cout << 32890123 << ": " << SumaDigitos(32890123) ; return 0; } int SumaDigitos(int n) { if(n < 10) return n; return n%10+SumaDigitos(n/10); }
Definicin de un arreglo:
<tipo> nombre_variable[longitud]; Con esto diremos que nombre_variable es un arreglo de longitud elementos del tipo <tipo>. Cabe destacar que longitud debe ser cualquier expresin entera constante mayor que cero. Asignacin de un arreglo: nombre_variable[ndice] = expresin del tipo <tipo> Esta instruccin asigna el valor asociado de la expresin a la posicin ndice del arreglo nombre_variable. El ndice debe ser una expresin del tipo entero en el rango [0, longitud1]. Cabe destacar que C++ no chequea que el valor de la expresin sea menor a longitud, simplemente asigna el valor a esa posicin de memoria como si formara parte del arreglo, pisando, de esta manera, otros datos que no forman parte del mismo, con lo que finalmente el programa no funciona correctamente.
Las principales operaciones que se realizan con un array son: - Acceso: cada elemento de un array se nombra con el identificador del array al que perteneces seguido de su posicin entre corchetes [n-1]. Es decir, si en un array[10], queremos nombrar la 4 posicin, esta sera array[3].
- Asignacin: normalmente para asignar valores a un array utilizamos un bucle for. El ejemplo anterior nos muestra perfectamente el comportamiento y la funcionalidad de este bucle. El ndice del for ha de ser capaz de recorrer todas las casillas del array.
- Iniciacin: a un array le podemos dar valores iniciales, para ello se declarara de la siguiente forma: (Donde lista de valores es una lista de constante separadas por comas)
Tipo nombre_array[tamao]={lista_valores};
int lista[6]={2,4,6,8,1,5}; int datos[100]={0}; int num[4]={4,5}; // todos se inicializan a 0 // equivale a {4,5,0,0}
Es muy importante que se inicialicen los arrays antes de usarlos, ya que la declaracin slo reserva espacio en memoria para el array declarado, sin asignacin por defecto por parte del sistema.
Ejemplo2:
#include <stdio.h> int main() { /* Declaramos 24 variables, int temp1, temp2, temp3, int temp9, temp10, temp11, int temp17, temp18, temp19, int media; /* Ahora tenemos que dar el printf( "Temperatura de las scanf( "%i", &temp0 ); printf( "Temperatura de las scanf( "%i", &temp1 ); printf( "Temperatura de las scanf( "%i", &temp2 ); ... printf( "Temperatura de las scanf( "%i", &temp23 ); 24; printf( "\nLa temperatura media es %i\n", media ); }
Los puntos suspensivos son para no tener que escribir todo el cdigo, pero sera repetir las lneas anteriores
una para cada hora del dia */ temp4, temp5, temp6, temp7, temp8; temp12, temp13, temp14, temp15, temp16; temp20, temp21, temp22, temp23, temp0; valor de cada una */ 0: " ); 1: " ); 2: " ); 23: " );
Ejemplo3:
#include <stdio.h> int main() { int temp[24]; float media = 0; int hora; /* Ahora tenemos que dar el valor de cada una */ for( hora=0; hora<24; hora++ ) { printf( "Temperatura de las %i: ", hora ); scanf( "%i", &temp[hora] ); media += temp[hora]; } media = media / 24; printf( "\nLa temperatura media es %f\n", media ); }
La lnea 5 ya contiene a las 24 variables a utilizar y por medio de un for en la lnea 10 recorremos cada uno de sus valores. Se ha utilizado la variable media como un sumador de cada valor y luego para almacenar el resultado dividindolo entre 24.
CONCLUSIONES:
En C++ podemos hablar de otro tipo de conversin de tipo implcita, que se realiza cuando se usa cualquier expresin entera en una condicin, y ms generalmente, cuando se usa cualquier expresin donde se espera una expresin booleana. En C++ el paso por valor significa que al compilar la funcin y el cdigo que llama a la funcin, sta recibe una copia de los valores de los parmetros que se le pasan como argumentos. Las variables reales no se pasan a la funcin, slo copias de su valor. La recursividad es una de las formas de control ms importantes en la programacin. Los procedimientos recursivos son la forma ms natural de representacin de muchos algoritmos. Arreglo: Coleccin ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicacin determinada dentro del arreglo y debemos conocerla para accederlo.
EGRAFIA:
http://c.conclase.net/curso/?cap=009 http://ejercicioscpp.blogspot.com/2012/11/casting-conversion-entre-tipos-de-datos.html http://recursividadenc.blogspot.com/2012/03/recursividad-en-c.html http://codigomaldito.blogspot.com/2005/11/arreglos-o-arrays-en-c.html http://www.alipso.com/monografias/2266_arreglosestados/