Está en la página 1de 12

CORPORATIVO INTERNACIONAL UNIVERSITARIO

INTRODUCCION A LA PROGRAMACION

(INVESTIGACION)

LIC. GABRIEL

AGUSTIN GARCIA GARCIA

FECHA DE ENTREGA 29 DE OCTUBRE DEL 2011 1

INDICE PORTADA.1 INDICE...2 INTRODUCCION..3 TIPOS ESTRUCTURADOS Arreglos..4 Registros4 Apuntadores..5 Estructuras.5 FUNCIONES Pasos de parmetro..6 Apuntadores de funciones......6 Recursividad..9 COMENTARIO...10 BIBLIOGRAFIAS....11

INTRODUCCION

En este apartado conoceremos los tipos estructurados como son los arreglos, registro, apuntadores y algunas estructuras, as como tambin veremos algunas funciones, pasos de parmetros, recursividad, y algunos apuntadores de funcin ya que son muy importantes para la programacin ya que son algunos elementos bsicos de la programacin tambin para informarnos mas sobre programacin de hoy en dia, y pues nos enfocaremos mas afondo si lo leemos con mas calma o con mas tiempo y pues esto es lo que contiene este material.

Tipos Estructurados Arreglos Declaracin de arreglos Existen dos formas de declarar arreglos: por variable y por tipo. En la primera parte del laboratorio se utiliz la declaracin de arreglos por variable. Ahora bien, para hacer la declaracin de un arreglo por tipo se sigue la siguiente nomenclatura: Pseudocdigo C++ //Paso 1: Declaracin del tipo de dato arreglo <identificador> Tipo Arreglo <identificador> de <tipo de dato> [Li ..Ls]; //Paso 2: Declaracin de las variables de tipo <identificador> <identificador> Arreg1, Arreg2; //Paso 1: Declaracin del tipo de dato arreglo <identificador> typedef<tipo de dato><identificador>[tamao]; //Paso 2: Declaracin de las variables de tipo <identificador> <identificador> Arreg1, Arreg2; Al igual que en el caso de la declaracin por variable, en pseudocdigo Li y Ls representan los lmites superior e inferior respectivamente. Sin embargo, en C++ slo se indica el tamao del arreglo, ya que el lmite inferior siempre es cero (0) y el lmite superior es el tamao menos uno (tamao - 1). REGISTROS _ Composici_on de un n_umero determinado de elementos que pueden ser de distintos tipos de datos. _ Objetivo: De_nir una nueva entidad (tipo) como composici_on de entidades menores. _ Se puede acceder a cada elemento individual de la composici_on mediante su identi_cador. REGISTROS. EJEMPLO _ Dados los tipos: // -- Tipos -----------enumMes { Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic }; _ Podemos de_nir una nueva entidad (tipo) que represente el concepto de Fecha como agrupaci_on de dia, mes y a~no. // -- Tipos -----------structFecha { intdia; Mes mes; intanyo;
4

}; APUNTADORES Los apuntadores son una parte fundamental de C. Si usted no puede usar los apuntadores apropiadamente entonces esta perdiendo la potencia y la flexibilidad que C ofrece bsicamente. El secreto para C esta en el uso de apuntadores. C usa los apuntadores en forma extensiva. Porqu?

Es la nica forma de expresar algunos clculos. Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa. C usa apuntadores explcitamente con:

Es la nica forma de expresar algunos clculos. Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa. C usa apuntadores explcitamente con:

Arreglos, Estructuras y

ESTRUCTURAS TYPE vector1 = Array [1..4] of Char; matriz1 = Array [1..10, 1..10] of Integer; matriz2 = Array [Boolean, 1..10] of Boolean; color = (blanco, amarillo, negro, rojo); ciudad = (Al,Ca,Co,Gr,Ja,Hu,Ma,Se); estacion = (prim,ver,oto,inv); cestacion = array[estacion] of string[9]; CONST est :cestacion = (primavera,verano,otoo,invierno); VAR v :Integer; vect1,vect2 : vector1; matriz : matriz1; qt : matriz2; raza : Array [1..40] of color; grados : Array [ciudad] of real; begin vect1[1] := 't'; vect1 := vect2; matriz[2,5] := 6;
5

matriz[1,9] := matriz[2,5]; qt[true,4] := false; raza[15] := amarillo;

Pase de parmetros Cuando un procedimiento debe operar sobre un arreglo o varios arreglos de datos, independientemente de la cantidad de dimensiones que tenga, los arreglos se deben pasar como parmetros del procedimiento por referencia. Para tal fin, en C++ los arreglos se pasan de la siguiente manera: C++ void<nombre_accion> (<tipo_dato><identificador>[]){ <conjunto_de_instrucciones> } intmain(){ <conjunto_de_instrucciones> <nombre_accion> (<identificador del arreglo>); } Paso de parmetros Los parmetros son los datos que reciben las funciones y que utilizan para realizar las operaciones de la funcin. Una funcin puede recibir cualquier nmero de parmetros, incluso ninguno. A la hora de definir la funcin, en la cabecera, se definen los parmetros que va a recibir. function f1 ($parametro1, $parmetro2) As definimos una funcin llamada f1 que recibe dos parmetros. Como se puede observar, no se tiene que definir el tipo de datos de cada parmetro. Los parmetros tienen validez durante la ejecucin de la funcin, es decir, tienen un mbito local a la funcin donde se estn recibiendo. Cuando la funcin se termina, los parmetros dejan de existir. APUNTADOES DE FUNCION os apuntadores son una parte fundamental de C. Si usted no puede usar los apuntadores apropiadamente entonces esta perdiendo la potencia y la flexibilidad que C ofrece bsicamente. El secreto para C esta en el uso de apuntadores. C usa los apuntadores en forma extensiva. Porqu?

Es la nica forma de expresar algunos clculos.


6

Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa. C usa apuntadores explcitamente con:

Es la nica forma de expresar algunos clculos. Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa. C usa apuntadores explcitamente con:

Arreglos, Estructuras y Funciones

Definicin de un apuntador Un apuntador es una variable que contiene la direccin en memoria de otra variable. Se pueden tener apuntadores a cualquier tipo de variable. El operador unario o mondico&devuelve la direccin de memoria de una variable. El operador de indireccin o dereferencia* devuelve el ``contenido de un objeto apuntado por un apuntador''. Para declarar un apuntador para una variable entera hacer: int *apuntador; Se debe asociar a cada apuntador un tipo particular. Por ejemplo, no se puede asignar la direccin de un short int a un longint. Para tener una mejor idea, considerar el siguiente cdigo: main() { int x = 1, y = 2; int *ap; ap = &x; y = *ap; x = ap;

*ap = 3; } Cuando se compile el cdigo se mostrar el siguientemensaje: warning: assignment makes integer from pointer without a cast. Con el objetivo de entender el comportamiento del cdigo supongamos que la variable x esta en la localidad de la memoria 100, y en 200 y ap en 1000. Nota: un apuntador es una variable, por lo tanto, sus valores necesitan ser guardados en algn lado. int x = 1, y = 2; int *ap; ap = &x; 100 x 1 200 y 2 1000 ap 100

Las variables x e y son declaradas e inicializadas con 1 y 2 respectivamente, ap es declarado como un apuntador a entero y se le asigna la direccin de x (&x). Por lo que ap se carga con el valor 100. y = *ap; 100 x 1 200 y 1 1000 ap 100

Despus y obtiene el contenido de ap. En el ejemplo ap apunta a la localidad de memoria 100 -- la localidad de x. Por lo tanto, y obtiene el valor de x -- el cual es 1. x = ap; 100 200 1000 ap 100

x 100 y 1

Como se ha visto C no es muy estricto en la asignacin de valores de diferente tipo (apuntador a entero). As que es perfectamente legal (aunque el compilador genera un aviso de cuidado) asigna el valor actual de ap a la variable x. El valor de ap en ese momento es 100. *ap = 3;

100 x 3

200 y 1

1000 ap 100

Finalmente se asigna un valor al contenido de un apuntador (*ap). Importante: Cuando un apuntador es declarado apunta a algn lado. Se debe inicializar el apuntador antes de usarlo. Por lo que: main() { int *ap; *ap = 100; } puede generar un error en tiempo de ejecucin o presentar un comportamiento errtico. El uso correcto ser: main() { int *ap; int x; ap = &x; *ap = 100; } RECURSIVIDAD Definicin de Recursividad: Tcnica de programacin muy potente que puede ser usada en lugar de la iteracin. Ambito de Aplicacin: General Problemas cuya solucin se puede hallar solucionando el mismo problema pero con un caso de menor tamao. Razones de uso: Problemas casi irresolubles con las estructuras iterativas. Soluciones elegantes. Soluciones ms simples. Condicin necesaria : ASIGNACIN DINMICA DE MEMORIA

1. recursiva sea vlida, la referencia a s misma debe ser relativamente ms sencilla que el caso considerado. En un algoritmo recursivo distinguimos como mnimo 2 partes: a). Caso trivial, base o fin de recursin: Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a s mismo. Evita la continuacin indefinida de las partes recursivas. b). Parte puramente recursiva: Relaciona el resultado del algoritmo con resultados de casos mas simples. Se hacen nuevas llamadas a la funcin, pero estn ms prximas al caso base. 2. CONCEPTO Ejemplos: ITERATIVO: Int Factorial (int n ) { Int , res = 1; For(=1;<=n;++ ) res = res*; return (res); } RECURSIVO: Int Factorial (int n ) { If (n==0) return (1); Return (n*Factorial (n-1)); } 3. UTILIDAD DE LA RECURSIVIDAD Se utiliza para realizar una llamada a una funcin desde la misma funcin. Hemos visto que la recursin es una tcnica potente de programacin para resolver, mediante soluciones simples y claras, problemas de gran complejidad. 4. La sobrecarga asociada con las llamadas a subalgoritmos: Este factor es propio de los subalgoritmos en general, aunque es mayor con la recursividad , ya que una simple llamada inicial a un subalgoritmo puede generar un gran nmero de llamadas recursivas . Podemos fcilmente escribir una funcin iterativa Factorial tan clara como la recursiva y sin la sobre carga de sta.

10

COMENTARIO Pues primero que nada este material esta muy interesante porque trae muchas cosas que yo ni siquiera sabia que existan y adems es muy dinmico bueno almenas para mi y tambin esta muy interesante la programacin por eso me gusto esta lectura, aunque viene mucho de lgica y eso ami casi no me gusta mucho pero lo dems esta muy interesante y pues eso es todo sobre mi opinin.

11

Bibliografas http://www.unav.es/adi/UserFiles/File/80971550/3.TiposDeDatos.pdf http://ocw.upm.es/ciencia-de-la-computacion-e-inteligencia-artificial/fundamentosprogramacion/contenidosteoricos/ocwfundamentosprogramaciontema6.pdf http://www.desarrolloweb.com/articulos/1484.php http://www.slideshare.net/betzyrod/recursividad

12

También podría gustarte