SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Arreglos y apuntadores
Arreglo
    Conjunto de variables del mismo
    tipo, las cuales están indexadas.




26/04/12    Programación avanzada y métodos numéricos   2
Declaración:
tipo_variable nombre[tamaño];

Inicialización:
tipo_variable nombre[tamaño] =
{ elemento 1, elemento 2, ... , elemento
n };




26/04/12    Programación avanzada y métodos numéricos   3
int numeros[40];
float otros_numeros[] = {4.6, 5.6, 2.1, 4.5};
int i;
for(i = 0; i < 40; i++) {
    printf(“Escribe un número: ”);
    scanf(“%d”, &numeros[i]);
}
for (i = 0; i < 4; i++)
    printf(“%fn”, otros_numeros[i]);

26/04/12       Programación avanzada y métodos numéricos   4
Apuntador
   Son variables que almacenan
    direcciones de memoria.




26/04/12    Programación avanzada y métodos numéricos   5
Declaración: tipo_variable *nombre;

Asignar dirección: nombre =
&variable_del_mismo_tipo;

Devuelve valor almacenado
(desreferenciamiento): *nombre




26/04/12   Programación avanzada y métodos numéricos   6
Ejemplo:
      int *px; // apuntador
      int x = 1, y = 2; // Variables
      px = &x; // apunta a x
      y = *px; // el valor de x se asigna a
               // y, ahora y vale 1
      *px = 0; // ahora x vale 0


26/04/12       Programación avanzada y métodos numéricos   7
Reserva de espacio en la memoria

    Incluir biblioteca stdlib
   Declarar apuntador

    Asignar espacio a cada apuntador
    declarado usando malloc()

    Después de usar, liberar espacio usando
    free()




26/04/12        Programación avanzada y métodos numéricos   8
int *numeros;
// numeros apunta a un espacio donde
caben 40 variables int
numeros = (int *) malloc(40 *
sizeof(int));


// ... Código ...


free(numeros); // Liberamos espacio

26/04/12     Programación avanzada y métodos numéricos   9
Aritmética de direcciones
int *px; int x; px = &x;

px++; // apunta 1 posición más adelante
px = px + 2; // apunta 5 posiciones más
             //adelante
px = px – 8; // apunta 8 posiciones más atrás




11 Agosto       Programación avanzada y métodos numéricos   10
11 Agosto   Programación avanzada y métodos numéricos   11
int i;
// captura números
for(i = 0; i < 40; i++)
     scanf(“%i”,numeros + i);
// imprime números
for(i = 0; i < 40; i++)
     printf(“%in”,*(numeros + i));



26/04/12      Programación avanzada y métodos numéricos   12
Equivalencia entre arreglos y
                   apuntadores
   vect[i] y *(pv + i) son expresiones
    equivalentes
   El nombre de un arreglo es el
    sinónimo de la dirección de su
    posición inicial




26/04/12         Programación avanzada y métodos numéricos   13
int vect[10]; int *pv;

pv = vect; // Expresión válida
vect = pv; // Expresión inválida

*(vect + 4) = 302; // asigna 302 a vect[4]

 pv[4] = 302; // asigna 302 a *(pv + 4)


26/04/12     Programación avanzada y métodos numéricos   14
Arreglos de varios dimensiones




26/04/12          Programación avanzada y métodos numéricos   15
Declaración e inicialización
Declaración:
Tipo_de_variable nombre[Tamaño] ... [Tamaño];
                       float arreglo[2][4];


Inicialización:
Tipo_de_variable nombre[Tamaño] ... [Tamaño] =
{ conjuntos anidados de elementos } ;
           float arreglo[2][2] = { {1, 2} , { 4 , 5 } };


26/04/12            Programación avanzada y métodos numéricos   16
int numeros[40][20];
int i, j;
for(j = 0; j < 20; j++)
    for(i = 0; i < 40; i++) {
           printf(“Escribe un número: ”);
           scanf(“%d”, &numeros[i][j]);
    }
for (i = 0; i < 40; i++)
   for(j = 0; j < 20; j++)
        printf(“%dn”, numeros[i][j]);
26/04/12           Programación avanzada y métodos numéricos   17
Arreglos de apuntadores
Declaración
Tipo_variable *nomb_arreglo[tamaño];
                    float *pesos[500];


Inicialización
Tipo_variable *nomb_arreglo[tamaño] =
{ &variable1, &variable2, ..., &variablen};
      int *datos_biblio[3] = {&libros, &empleados,
                        &mesas};

26/04/12         Programación avanzada y métodos numéricos   18
int *numeros[20];
int i, j;
for(i = 0; i < 20; i++)
   numeros[i] = (int *) malloc(40 * sizeof(int));
for (i = 0; i < 40; i++)
   for(j = 0; j < 20; j++)
       scanf(“%d”, numeros[j] + i);
for (i = 0; i < 40; i++)
   for(j = 0; j < 20; j++)
       printf(“%d”, *(numeros[j] + i));
26/04/12         Programación avanzada y métodos numéricos   19
Apuntadores y Arreglos
              multidimensionales
int a[2][7];
int *b[2];
b[0] = a[0]; // dirección primera fila
b[1] = a[1] + 1; // dirección segunda fila con
offset de 1 espacio
b[0][1] = 6; // a[0][1] también es igual a 6
b[1][4] = 7; // a[1][5] también es igual a 7


26/04/12        Programación avanzada y métodos numéricos   20
26/04/12   Programación avanzada y métodos numéricos   21
int *numeros[20];
int i, j;
for(i = 0; j < 20; j++)
   numeros[i] = (int *) malloc(40 * sizeof(int));
for (i = 0; i < 40; i++)
   for(j = 0; j < 20; j++)
       scanf(“%d”, &numeros[j][i]);
for (i = 0; i < 40; i++)
   for(j = 0; j < 20; j++)
       printf(“%d”, numeros[j][i]);
26/04/12        Programación avanzada y métodos numéricos   22
char *palabras[3] =
            {“kilowatt”, “centímetro”, “gramo”};




11 Agosto           Programación avanzada y métodos numéricos   23
char *palabras[10];
char *aux;
int i,j;
/* Reservamos un espacio y capturamos una
cadena en él */
for(i = 0; i < 10; i++) {
  nombres[i] = (char *) malloc(30 *
sizeof(char));
    printf("Dame una palabra cualquiera: ");
    scanf("%s",palabras[i]);
}
26/04/12        Programación avanzada y métodos numéricos   24
/* Algoritmo de burbuja */
for(i = 0; i < 9; i++)
   for(j = i + 1; j < 10; j++) {
      if( strlen(palabras[j]) < strlen(palabras[i]) ) {
           /* Solo intercambiamos direcciones */
           aux = palabras[j];
           palabras[j] = palabras[i];
           palabras[i] = aux;
      }
  }
26/04/12            Programación avanzada y métodos numéricos   25
Bibliografía

    Luis Joyanes e Ignacio Zahonero.
    Programación en C, C++, Java y UML. Ed.
    McGraw Hill Latinoamericana.

    Harvey y Paul Deitel, Como programar en
    C, Ed. Prentice Hall.




26/04/12      Programación avanzada y métodos numéricos   26

Contenu connexe

Tendances

2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automataJacqui Venegas
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 
Derivada direccional y su vector gradiente
Derivada direccional y su vector gradienteDerivada direccional y su vector gradiente
Derivada direccional y su vector gradienteNahiely Padron
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por HashAngie Suarez
 
Asociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especializaciónAsociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especializaciónUVM
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Ejercicios resueltos 2011
Ejercicios resueltos 2011Ejercicios resueltos 2011
Ejercicios resueltos 2011Deyvid Atens
 
Mapa Conceptual procesos concurrentes
Mapa Conceptual procesos concurrentesMapa Conceptual procesos concurrentes
Mapa Conceptual procesos concurrentesFrangelys Perez
 
Conceptos Basicos
Conceptos BasicosConceptos Basicos
Conceptos Basicosmathon
 
Listas enlazadas doble exposicion
Listas enlazadas doble exposicionListas enlazadas doble exposicion
Listas enlazadas doble exposicionjcum1
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 

Tendances (20)

Punteros y Arreglos
Punteros y ArreglosPunteros y Arreglos
Punteros y Arreglos
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata
 
Mapa conceptual
Mapa conceptual Mapa conceptual
Mapa conceptual
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Assembler
AssemblerAssembler
Assembler
 
Conceptos y operaciones básicas
Conceptos y operaciones básicasConceptos y operaciones básicas
Conceptos y operaciones básicas
 
Derivada direccional y su vector gradiente
Derivada direccional y su vector gradienteDerivada direccional y su vector gradiente
Derivada direccional y su vector gradiente
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Asociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especializaciónAsociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especialización
 
Diagramas
DiagramasDiagramas
Diagramas
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Ejercicios resueltos 2011
Ejercicios resueltos 2011Ejercicios resueltos 2011
Ejercicios resueltos 2011
 
Gauss jordan en C
Gauss jordan en CGauss jordan en C
Gauss jordan en C
 
Mapa Conceptual procesos concurrentes
Mapa Conceptual procesos concurrentesMapa Conceptual procesos concurrentes
Mapa Conceptual procesos concurrentes
 
Conceptos Basicos
Conceptos BasicosConceptos Basicos
Conceptos Basicos
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Listas enlazadas doble exposicion
Listas enlazadas doble exposicionListas enlazadas doble exposicion
Listas enlazadas doble exposicion
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Manejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje CManejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje C
 

En vedette

Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Arrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos CorreaArrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos CorreaCarlitos Correa Jr.
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Diosmary Marrón Dellán
 
Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasUVM
 
Arrays bidimensionales
Arrays bidimensionalesArrays bidimensionales
Arrays bidimensionalesasvargas
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Linealkarlalopezbello
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Oracle Spatial de la A a la Z - Unidad 6
Oracle Spatial de la A a la Z - Unidad 6Oracle Spatial de la A a la Z - Unidad 6
Oracle Spatial de la A a la Z - Unidad 6Jorge Ulises
 

En vedette (20)

Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Arrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos CorreaArrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos Correa
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Exp compi(2)
Exp compi(2)Exp compi(2)
Exp compi(2)
 
Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_
 
Trabajo de estructura de datos
Trabajo de estructura de datosTrabajo de estructura de datos
Trabajo de estructura de datos
 
Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicas
 
Memoria memoria dinamica
 Memoria memoria dinamica Memoria memoria dinamica
Memoria memoria dinamica
 
Arrays bidimensionales
Arrays bidimensionalesArrays bidimensionales
Arrays bidimensionales
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Lineal
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Manipulacion de Datos SQL cap10
Manipulacion de Datos SQL cap10Manipulacion de Datos SQL cap10
Manipulacion de Datos SQL cap10
 
Oracle Spatial de la A a la Z - Unidad 6
Oracle Spatial de la A a la Z - Unidad 6Oracle Spatial de la A a la Z - Unidad 6
Oracle Spatial de la A a la Z - Unidad 6
 
colas de prioridad
colas de prioridad colas de prioridad
colas de prioridad
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 

Similaire à Arreglos multidimensionales y de apuntadores

Similaire à Arreglos multidimensionales y de apuntadores (20)

Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Punteros
PunterosPunteros
Punteros
 
Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uex
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Punteros2
Punteros2Punteros2
Punteros2
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
ArreglosC++para-el-usodememoria-en-uno-dos-tres-dimensiones.pdf
ArreglosC++para-el-usodememoria-en-uno-dos-tres-dimensiones.pdfArreglosC++para-el-usodememoria-en-uno-dos-tres-dimensiones.pdf
ArreglosC++para-el-usodememoria-en-uno-dos-tres-dimensiones.pdf
 
MODELO PASO DE MENSAJES
MODELO PASO DE MENSAJESMODELO PASO DE MENSAJES
MODELO PASO DE MENSAJES
 
Curso c i
Curso c iCurso c i
Curso c i
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Java Basico-Ficheros
Java Basico-FicherosJava Basico-Ficheros
Java Basico-Ficheros
 
7. operadores y estructura secuencial
7. operadores y estructura secuencial7. operadores y estructura secuencial
7. operadores y estructura secuencial
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento-
 
Diapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdfDiapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdf
 
Punteros_v2.ppt
Punteros_v2.pptPunteros_v2.ppt
Punteros_v2.ppt
 
2 _expresiones_matematicas_254209
2  _expresiones_matematicas_2542092  _expresiones_matematicas_254209
2 _expresiones_matematicas_254209
 
Previo8- Dispos E/S
Previo8- Dispos E/SPrevio8- Dispos E/S
Previo8- Dispos E/S
 

Dernier

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.JonathanCovena1
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 

Dernier (20)

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 

Arreglos multidimensionales y de apuntadores

  • 2. Arreglo Conjunto de variables del mismo tipo, las cuales están indexadas. 26/04/12 Programación avanzada y métodos numéricos 2
  • 3. Declaración: tipo_variable nombre[tamaño]; Inicialización: tipo_variable nombre[tamaño] = { elemento 1, elemento 2, ... , elemento n }; 26/04/12 Programación avanzada y métodos numéricos 3
  • 4. int numeros[40]; float otros_numeros[] = {4.6, 5.6, 2.1, 4.5}; int i; for(i = 0; i < 40; i++) { printf(“Escribe un número: ”); scanf(“%d”, &numeros[i]); } for (i = 0; i < 4; i++) printf(“%fn”, otros_numeros[i]); 26/04/12 Programación avanzada y métodos numéricos 4
  • 5. Apuntador  Son variables que almacenan direcciones de memoria. 26/04/12 Programación avanzada y métodos numéricos 5
  • 6. Declaración: tipo_variable *nombre; Asignar dirección: nombre = &variable_del_mismo_tipo; Devuelve valor almacenado (desreferenciamiento): *nombre 26/04/12 Programación avanzada y métodos numéricos 6
  • 7. Ejemplo: int *px; // apuntador int x = 1, y = 2; // Variables px = &x; // apunta a x y = *px; // el valor de x se asigna a // y, ahora y vale 1 *px = 0; // ahora x vale 0 26/04/12 Programación avanzada y métodos numéricos 7
  • 8. Reserva de espacio en la memoria  Incluir biblioteca stdlib  Declarar apuntador  Asignar espacio a cada apuntador declarado usando malloc()  Después de usar, liberar espacio usando free() 26/04/12 Programación avanzada y métodos numéricos 8
  • 9. int *numeros; // numeros apunta a un espacio donde caben 40 variables int numeros = (int *) malloc(40 * sizeof(int)); // ... Código ... free(numeros); // Liberamos espacio 26/04/12 Programación avanzada y métodos numéricos 9
  • 10. Aritmética de direcciones int *px; int x; px = &x; px++; // apunta 1 posición más adelante px = px + 2; // apunta 5 posiciones más //adelante px = px – 8; // apunta 8 posiciones más atrás 11 Agosto Programación avanzada y métodos numéricos 10
  • 11. 11 Agosto Programación avanzada y métodos numéricos 11
  • 12. int i; // captura números for(i = 0; i < 40; i++) scanf(“%i”,numeros + i); // imprime números for(i = 0; i < 40; i++) printf(“%in”,*(numeros + i)); 26/04/12 Programación avanzada y métodos numéricos 12
  • 13. Equivalencia entre arreglos y apuntadores  vect[i] y *(pv + i) son expresiones equivalentes  El nombre de un arreglo es el sinónimo de la dirección de su posición inicial 26/04/12 Programación avanzada y métodos numéricos 13
  • 14. int vect[10]; int *pv; pv = vect; // Expresión válida vect = pv; // Expresión inválida *(vect + 4) = 302; // asigna 302 a vect[4] pv[4] = 302; // asigna 302 a *(pv + 4) 26/04/12 Programación avanzada y métodos numéricos 14
  • 15. Arreglos de varios dimensiones 26/04/12 Programación avanzada y métodos numéricos 15
  • 16. Declaración e inicialización Declaración: Tipo_de_variable nombre[Tamaño] ... [Tamaño]; float arreglo[2][4]; Inicialización: Tipo_de_variable nombre[Tamaño] ... [Tamaño] = { conjuntos anidados de elementos } ; float arreglo[2][2] = { {1, 2} , { 4 , 5 } }; 26/04/12 Programación avanzada y métodos numéricos 16
  • 17. int numeros[40][20]; int i, j; for(j = 0; j < 20; j++) for(i = 0; i < 40; i++) { printf(“Escribe un número: ”); scanf(“%d”, &numeros[i][j]); } for (i = 0; i < 40; i++) for(j = 0; j < 20; j++) printf(“%dn”, numeros[i][j]); 26/04/12 Programación avanzada y métodos numéricos 17
  • 18. Arreglos de apuntadores Declaración Tipo_variable *nomb_arreglo[tamaño]; float *pesos[500]; Inicialización Tipo_variable *nomb_arreglo[tamaño] = { &variable1, &variable2, ..., &variablen}; int *datos_biblio[3] = {&libros, &empleados, &mesas}; 26/04/12 Programación avanzada y métodos numéricos 18
  • 19. int *numeros[20]; int i, j; for(i = 0; i < 20; i++) numeros[i] = (int *) malloc(40 * sizeof(int)); for (i = 0; i < 40; i++) for(j = 0; j < 20; j++) scanf(“%d”, numeros[j] + i); for (i = 0; i < 40; i++) for(j = 0; j < 20; j++) printf(“%d”, *(numeros[j] + i)); 26/04/12 Programación avanzada y métodos numéricos 19
  • 20. Apuntadores y Arreglos multidimensionales int a[2][7]; int *b[2]; b[0] = a[0]; // dirección primera fila b[1] = a[1] + 1; // dirección segunda fila con offset de 1 espacio b[0][1] = 6; // a[0][1] también es igual a 6 b[1][4] = 7; // a[1][5] también es igual a 7 26/04/12 Programación avanzada y métodos numéricos 20
  • 21. 26/04/12 Programación avanzada y métodos numéricos 21
  • 22. int *numeros[20]; int i, j; for(i = 0; j < 20; j++) numeros[i] = (int *) malloc(40 * sizeof(int)); for (i = 0; i < 40; i++) for(j = 0; j < 20; j++) scanf(“%d”, &numeros[j][i]); for (i = 0; i < 40; i++) for(j = 0; j < 20; j++) printf(“%d”, numeros[j][i]); 26/04/12 Programación avanzada y métodos numéricos 22
  • 23. char *palabras[3] = {“kilowatt”, “centímetro”, “gramo”}; 11 Agosto Programación avanzada y métodos numéricos 23
  • 24. char *palabras[10]; char *aux; int i,j; /* Reservamos un espacio y capturamos una cadena en él */ for(i = 0; i < 10; i++) { nombres[i] = (char *) malloc(30 * sizeof(char)); printf("Dame una palabra cualquiera: "); scanf("%s",palabras[i]); } 26/04/12 Programación avanzada y métodos numéricos 24
  • 25. /* Algoritmo de burbuja */ for(i = 0; i < 9; i++) for(j = i + 1; j < 10; j++) { if( strlen(palabras[j]) < strlen(palabras[i]) ) { /* Solo intercambiamos direcciones */ aux = palabras[j]; palabras[j] = palabras[i]; palabras[i] = aux; } } 26/04/12 Programación avanzada y métodos numéricos 25
  • 26. Bibliografía  Luis Joyanes e Ignacio Zahonero. Programación en C, C++, Java y UML. Ed. McGraw Hill Latinoamericana.  Harvey y Paul Deitel, Como programar en C, Ed. Prentice Hall. 26/04/12 Programación avanzada y métodos numéricos 26