SlideShare una empresa de Scribd logo
1 de 18
PASO DE PARAMETRO POR REFERENCIA CUANDO UNA FUNCION DEBE MODIFICAR EL VALOR DEL PARAMETRO PASADO Y DEVOLVER ESTE VALOR MODIFICADO A LA FUNCION LLAMADORA, SE HA DE UTILIZAR EL METODO DE PASO DE PARAMETRO POR REFERENCIA. EN ESTE METODO EL COMPILADOR PASA LA DIRECCION DE MEMORIA DEL VALOR DEL PARAMETRO A LA FUNCION. CUANDO SE MODIFICA EL VALOR DEL PARAMETRO (LA VARIABLE LOCAL), ESTE VALOR QUEDA ALMACENADO EN LA MISMA DIRECCION DE MEMORIA, POR LO QUE AL RETORNAR A LA FUNCION LLAMADORA LA DIRECCION DE LA MEMORIA DONDE SE ALMACENO EL PARAMETRO CONTENDRA EL VALOR MODIFICADO. VER APUNTADORES.
APUNTADORES Definición: Un apuntador es una variable que contiene una dirección de memoria. Supongamos una variable de tipo entero que se llama contenido RAM y otra variable que se llama dirección RAM que puede contener una variable de tipo entero. En C/C++ una variable precedida del operador & devuelve la dirección de la variable en lugar de su contenido. Así que para asignar la dirección de una variable a otra variable del tipo que contiene direcciones se usan sentencias como estas:
APUNTADORES direccionRam = &contenidoRAM contenidoRAM se asigna a la localidad de memoria con dirección 7751
APUNTADORES se ilustra el nombre de la variable contenidoRAM y se observa que se encuentra en la dirección 7751 de la memoria. El contenido de esta localidad no se muestra. Una variable que contiene una dirección, tal como direccionRAM, se llama variable apuntador o simplemente apuntador. Después que la sentencia anterior se ejecuta, la dirección de contenidoRAM será asignada a la variable apuntador direccionRAM. La relación se expresa diciendo que direccionRAM apunta a contenidoRAM
APUNTADORES El acceso al contenido de una celda cuya dirección esta almacenada en la variable direccionRAM es tan sencillo como poner al inicio de la variable apuntador un asterisco: *direccionRAM. Lo que se ha hecho es eliminar la referencia directa. Por ejemplo, si se ejecutan las siguientes dos sentencias, el valor de la celda llamada contenidoRAM será de 20
APUNTADORES direccionRAM = &contenidoRAM;  *direccionRAM = 20; contenidoRAM se le asigna el valor entero 20
DECLARACIONES DE VARIABLES APUNTADOR C/C++ requiere una definición para cada variable. Para definir una variable apuntador direccionRAM que pueda contener la direcci´on de una variable int, se escribe: int *direccionRAM;
UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS Realmente existen dos partes separadas en esta declaración. El tipo de dato de direccionRAM es: int * y el identificador para la variable es direccionRAM El asterisco que sigue a int significa “apuntador a”. Esto es, el siguiente tipo de dato es una variable apuntador que puede contener una dirección a un int: int *
UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS En C/C++ una variable apuntador contiene la dirección de un tipo de dato particular: char *direccion_char; char *direccion_int; El tipo de dato de dirección char es diferente del tipo de dato de la variable apuntador dirección int. En un programa que define un apuntador a un tipo de dato y utiliza este para apuntar a otro tipo de dato, pueden ocurrir errores en tiempo de ejecución y advertencias en tiempo de compilación. Una practica de programación pobre sería definir un apuntador de una forma y luego utilizar este de alguna otra forma. Por ejemplo: int *direccion_int; float un_float = 98.34; direccion_int = &un_float;
UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS #include <iostream.h> usingnamespacestd; intmain (intargc, char * constargv[])  { system(‘cls’); intA_int=15, B_int=37, Temp_int; int *direccion_int; std::cout<<"El contenido de A_int es:"<<A_int<<""; std::cout<<"El contenido de B_int es:"<<B_int<<""; direccion_int = &A_int; Temp_int = *direccion_int;  *direccion_int = B_int; B_int = Temp_int; cout<<"Despues del intercambio:"<<""; cout<<"El contenido de A_int es:"<<A_int<<""; cout<<"El contenido de B_int es:"<<B_int<<""; system(‘pause’); return 0;  }
En la lınea (05) se han declarado tres variables de tipo entero, se da a cada celda un nombre y se inicializan 2 de estas. Supondremos que la dirección de memoria asignada para la variable A int es la dirección 5328, y la dirección en memoria RAM asignada para la variable B int es la dirección 7916, y la celda llamada Temp int se le ha asignado la dirección 2385 UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
En la lınea (06) se define un apuntador a un tipo de dato entero llamado dirección int. La sentencia asigna la celda y da a esta un nombre. Luego, en la lınea (09), la tercera sentencia asigna a direccion_int la dirección de A_int UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
La lınea (11) utiliza la expresión *direccion_int para acceder al contenido de la celda a la cual apunta direccion_int: Temp_int = *direccion_int; Por consiguiente, el valor entero 15 se almacena en la variable Temp_int. Si no se pone el * enfrente de direccion_int;, la sentencia de asignación almacenarıa ilegalmente el contenido de direccion_int en la celda nombrada Temp_int, pero se supone que Temp_int contiene un entero, no una dirección. Este puede ser un error muy difıcil de localizar puesto que muchos compiladores no emiten ninguna advertencia/error. Para empeorar el asunto, la mayorıa de los apuntadores son cercanos, lo que significa que ocupan 2 bytes (4 bytes para aplicaciones de 32-bits), el mismo tamaño que un entero en una PC. La sentencia (11) copia el contenido de la variable B int en la celda apuntada por la dirección almacenada en dirección int. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS *direccion_int = B_int; Se copia Temp int en B int utilizando asignación normal.
UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS #include <iostream.h> usingnamespacestd; main()  { system(‘cls’); int a; int *apuntador;   a=7;   apuntador= &a; cout<<"la direccion de a es:"<<&a<<endl; cout<<"el valor de apuntador es:"<<apuntador<<endl; cout<<"el valor de a es:"<<a<<endl; cout<<"el valor de apuntador es:"<<*apuntador<<endl; cout<<"uso de * y &"; cout<<*&apuntador;cout<<""; cout<<&*apuntador;cout<<""; cout<<*&a; system(‘pause’); return 0;  }
UTILIZACION DE PUNTEROS CON FUNCIONES #include <iostream.h> usingnamespacestd; int cubo (int *); intmain()  { system(“cls”); int numero = 5; cout<<"el valor original de numero es:"<<numero;   cubo(&numero); cout<<""; cout<<"el nuevo valor de numero es:"<<numero; system(‘pause`); return 0;   } intcubo(int *apuntador)   {   *apuntador=*apuntador * *apuntador * *apuntador;   }
#include <iostream.h> using namespace std; int cubo(int *);  main()  {   system(‘cls’);   int numero = 5;   int *apuntador;   apuntador=&numero;   cout<<"la direccion de numero es:"<<&apuntador;   cout<<" el valor de numero es:"<<numero;   cout<<"";   cubo(&numero);   cout<<"el nuevo valor de numero es:"<<numero;   cout<<"la direccion nueva de numero es:"<<&numero;   system(‘pause’);   return 0;   }   int cubo(int *apuntador)   {   *apuntador=*apuntador * *apuntador * *apuntador;   } UTILIZACION DE PUNTEROS CON FUNCIONES
DIFERENCIA ENTRE LOS PARAMETROS POR VALOR Y POR REFERENCIA LOS PARAMETROS POR VALOR (DECLARADOS SIN &) RECIBEN COPIAS DE LOS VALORES DE LOS ARGUMENTOS QUE SE PASAN Y LA ASIGNACION A PARAMETROS POR VALOR DE UNA FUNCION NUNCA CAMBIAN EL VALOR DEL ARGUMENTO ORIGINAL PASADO A LOS PARAMETROS. LOS PARAMETROS POR REFERENCIA ( DECLARADOS CON &) RECIBEN LA DIRECCION DE LOS ARGUMENTOS PASADOS Y EN UNA FUNCION, LAS ASIGNACIONES A PARAMETROS POR REFERENCIA CAMBIAN LOS VALORES DE LOS ARGUMENTOS ORIGINALES.

Más contenido relacionado

La actualidad más candente

Repeticiones
RepeticionesRepeticiones
Repeticionesyesid19
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificadocompumet sac
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cecastelocc
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlFernando Solis
 
Comenzando a programar
Comenzando a programarComenzando a programar
Comenzando a programarRubén Loredo
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScripttovi27
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesAbrirllave
 
Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1David
 
Elementos BáSicos Del Lenguaje Java Alumno
Elementos BáSicos Del Lenguaje Java AlumnoElementos BáSicos Del Lenguaje Java Alumno
Elementos BáSicos Del Lenguaje Java Alumnomtemarialuisa
 

La actualidad más candente (18)

Repeticiones
RepeticionesRepeticiones
Repeticiones
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
C++
C++C++
C++
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en c
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Programacion C#_vbnet
Programacion C#_vbnetProgramacion C#_vbnet
Programacion C#_vbnet
 
Comenzando a programar
Comenzando a programarComenzando a programar
Comenzando a programar
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScript
 
Pl Sql
Pl SqlPl Sql
Pl Sql
 
Sentencias de control
Sentencias de controlSentencias de control
Sentencias de control
 
Introdução a abap
Introdução a abapIntrodução a abap
Introdução a abap
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1
 
Elementos BáSicos Del Lenguaje Java Alumno
Elementos BáSicos Del Lenguaje Java AlumnoElementos BáSicos Del Lenguaje Java Alumno
Elementos BáSicos Del Lenguaje Java Alumno
 

Similar a Apunfun1

Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punterosKareliaRivas
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaJhosse Ant Siilva
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1joeshego
 
Administración de memoria y apuntadores
Administración de memoria y apuntadoresAdministración de memoria y apuntadores
Administración de memoria y apuntadoresFranklin Chavez
 
Lenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicLenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicRokr02
 
Apuntes apuntadores 1 a
Apuntes apuntadores 1 aApuntes apuntadores 1 a
Apuntes apuntadores 1 apabesacv
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++guestab91474
 
Fp tema 6 punteros
Fp tema 6 punterosFp tema 6 punteros
Fp tema 6 punterosjcbenitezp
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1logan1725
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1nibox
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 

Similar a Apunfun1 (20)

Punteros
PunterosPunteros
Punteros
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punteros
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silva
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Administración de memoria y apuntadores
Administración de memoria y apuntadoresAdministración de memoria y apuntadores
Administración de memoria y apuntadores
 
Lenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicLenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN Basic
 
Apuntes apuntadores 1 a
Apuntes apuntadores 1 aApuntes apuntadores 1 a
Apuntes apuntadores 1 a
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Apunfun1
Apunfun1Apunfun1
Apunfun1
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Fp tema 6 punteros
Fp tema 6 punterosFp tema 6 punteros
Fp tema 6 punteros
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 

Más de pabesacv

APUNTES DE ARQUITECTURA DE COMPUTADORAS
APUNTES DE ARQUITECTURA DE COMPUTADORASAPUNTES DE ARQUITECTURA DE COMPUTADORAS
APUNTES DE ARQUITECTURA DE COMPUTADORASpabesacv
 
Apuntes empiezo (c)
Apuntes empiezo (c)Apuntes empiezo (c)
Apuntes empiezo (c)pabesacv
 
Apuntes empiezo (b)
Apuntes empiezo (b)Apuntes empiezo (b)
Apuntes empiezo (b)pabesacv
 
Apuntes empiezo (a)
Apuntes empiezo (a)Apuntes empiezo (a)
Apuntes empiezo (a)pabesacv
 
Apuntes estructuras 1
Apuntes estructuras 1Apuntes estructuras 1
Apuntes estructuras 1pabesacv
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevopabesacv
 
Unida ii 9a
Unida ii 9aUnida ii 9a
Unida ii 9apabesacv
 
Unida ii 8a
Unida ii 8aUnida ii 8a
Unida ii 8apabesacv
 
Unida ii 8a
Unida ii 8aUnida ii 8a
Unida ii 8apabesacv
 
Unida ii 7a
Unida ii 7aUnida ii 7a
Unida ii 7apabesacv
 
Unida ii 6a
Unida ii 6aUnida ii 6a
Unida ii 6apabesacv
 
Unida ii 5a
Unida ii 5aUnida ii 5a
Unida ii 5apabesacv
 
Unida ii 4a
Unida ii 4aUnida ii 4a
Unida ii 4apabesacv
 
Post y codigos de error
Post y codigos de errorPost y codigos de error
Post y codigos de errorpabesacv
 
Apuntes apuntadores 2 a
Apuntes apuntadores 2 aApuntes apuntadores 2 a
Apuntes apuntadores 2 apabesacv
 
Unida ii 3a
Unida ii 3aUnida ii 3a
Unida ii 3apabesacv
 

Más de pabesacv (20)

APUNTES DE ARQUITECTURA DE COMPUTADORAS
APUNTES DE ARQUITECTURA DE COMPUTADORASAPUNTES DE ARQUITECTURA DE COMPUTADORAS
APUNTES DE ARQUITECTURA DE COMPUTADORAS
 
Apuntes empiezo (c)
Apuntes empiezo (c)Apuntes empiezo (c)
Apuntes empiezo (c)
 
Apuntes empiezo (b)
Apuntes empiezo (b)Apuntes empiezo (b)
Apuntes empiezo (b)
 
Apuntes empiezo (a)
Apuntes empiezo (a)Apuntes empiezo (a)
Apuntes empiezo (a)
 
Apuntes estructuras 1
Apuntes estructuras 1Apuntes estructuras 1
Apuntes estructuras 1
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevo
 
Unida ii 9a
Unida ii 9aUnida ii 9a
Unida ii 9a
 
Unida ii 8a
Unida ii 8aUnida ii 8a
Unida ii 8a
 
Unida ii 8a
Unida ii 8aUnida ii 8a
Unida ii 8a
 
Unida ii 7a
Unida ii 7aUnida ii 7a
Unida ii 7a
 
2 unida 4
2 unida 42 unida 4
2 unida 4
 
2 unida 3
2 unida 32 unida 3
2 unida 3
 
2 unida 2
2 unida 22 unida 2
2 unida 2
 
2 unida 1
2 unida 12 unida 1
2 unida 1
 
Unida ii 6a
Unida ii 6aUnida ii 6a
Unida ii 6a
 
Unida ii 5a
Unida ii 5aUnida ii 5a
Unida ii 5a
 
Unida ii 4a
Unida ii 4aUnida ii 4a
Unida ii 4a
 
Post y codigos de error
Post y codigos de errorPost y codigos de error
Post y codigos de error
 
Apuntes apuntadores 2 a
Apuntes apuntadores 2 aApuntes apuntadores 2 a
Apuntes apuntadores 2 a
 
Unida ii 3a
Unida ii 3aUnida ii 3a
Unida ii 3a
 

Último

PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 

Último (20)

PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 

Apunfun1

  • 1. PASO DE PARAMETRO POR REFERENCIA CUANDO UNA FUNCION DEBE MODIFICAR EL VALOR DEL PARAMETRO PASADO Y DEVOLVER ESTE VALOR MODIFICADO A LA FUNCION LLAMADORA, SE HA DE UTILIZAR EL METODO DE PASO DE PARAMETRO POR REFERENCIA. EN ESTE METODO EL COMPILADOR PASA LA DIRECCION DE MEMORIA DEL VALOR DEL PARAMETRO A LA FUNCION. CUANDO SE MODIFICA EL VALOR DEL PARAMETRO (LA VARIABLE LOCAL), ESTE VALOR QUEDA ALMACENADO EN LA MISMA DIRECCION DE MEMORIA, POR LO QUE AL RETORNAR A LA FUNCION LLAMADORA LA DIRECCION DE LA MEMORIA DONDE SE ALMACENO EL PARAMETRO CONTENDRA EL VALOR MODIFICADO. VER APUNTADORES.
  • 2. APUNTADORES Definición: Un apuntador es una variable que contiene una dirección de memoria. Supongamos una variable de tipo entero que se llama contenido RAM y otra variable que se llama dirección RAM que puede contener una variable de tipo entero. En C/C++ una variable precedida del operador & devuelve la dirección de la variable en lugar de su contenido. Así que para asignar la dirección de una variable a otra variable del tipo que contiene direcciones se usan sentencias como estas:
  • 3. APUNTADORES direccionRam = &contenidoRAM contenidoRAM se asigna a la localidad de memoria con dirección 7751
  • 4. APUNTADORES se ilustra el nombre de la variable contenidoRAM y se observa que se encuentra en la dirección 7751 de la memoria. El contenido de esta localidad no se muestra. Una variable que contiene una dirección, tal como direccionRAM, se llama variable apuntador o simplemente apuntador. Después que la sentencia anterior se ejecuta, la dirección de contenidoRAM será asignada a la variable apuntador direccionRAM. La relación se expresa diciendo que direccionRAM apunta a contenidoRAM
  • 5. APUNTADORES El acceso al contenido de una celda cuya dirección esta almacenada en la variable direccionRAM es tan sencillo como poner al inicio de la variable apuntador un asterisco: *direccionRAM. Lo que se ha hecho es eliminar la referencia directa. Por ejemplo, si se ejecutan las siguientes dos sentencias, el valor de la celda llamada contenidoRAM será de 20
  • 6. APUNTADORES direccionRAM = &contenidoRAM; *direccionRAM = 20; contenidoRAM se le asigna el valor entero 20
  • 7. DECLARACIONES DE VARIABLES APUNTADOR C/C++ requiere una definición para cada variable. Para definir una variable apuntador direccionRAM que pueda contener la direcci´on de una variable int, se escribe: int *direccionRAM;
  • 8. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS Realmente existen dos partes separadas en esta declaración. El tipo de dato de direccionRAM es: int * y el identificador para la variable es direccionRAM El asterisco que sigue a int significa “apuntador a”. Esto es, el siguiente tipo de dato es una variable apuntador que puede contener una dirección a un int: int *
  • 9. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS En C/C++ una variable apuntador contiene la dirección de un tipo de dato particular: char *direccion_char; char *direccion_int; El tipo de dato de dirección char es diferente del tipo de dato de la variable apuntador dirección int. En un programa que define un apuntador a un tipo de dato y utiliza este para apuntar a otro tipo de dato, pueden ocurrir errores en tiempo de ejecución y advertencias en tiempo de compilación. Una practica de programación pobre sería definir un apuntador de una forma y luego utilizar este de alguna otra forma. Por ejemplo: int *direccion_int; float un_float = 98.34; direccion_int = &un_float;
  • 10. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS #include <iostream.h> usingnamespacestd; intmain (intargc, char * constargv[]) { system(‘cls’); intA_int=15, B_int=37, Temp_int; int *direccion_int; std::cout<<"El contenido de A_int es:"<<A_int<<""; std::cout<<"El contenido de B_int es:"<<B_int<<""; direccion_int = &A_int; Temp_int = *direccion_int; *direccion_int = B_int; B_int = Temp_int; cout<<"Despues del intercambio:"<<""; cout<<"El contenido de A_int es:"<<A_int<<""; cout<<"El contenido de B_int es:"<<B_int<<""; system(‘pause’); return 0; }
  • 11. En la lınea (05) se han declarado tres variables de tipo entero, se da a cada celda un nombre y se inicializan 2 de estas. Supondremos que la dirección de memoria asignada para la variable A int es la dirección 5328, y la dirección en memoria RAM asignada para la variable B int es la dirección 7916, y la celda llamada Temp int se le ha asignado la dirección 2385 UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
  • 12. En la lınea (06) se define un apuntador a un tipo de dato entero llamado dirección int. La sentencia asigna la celda y da a esta un nombre. Luego, en la lınea (09), la tercera sentencia asigna a direccion_int la dirección de A_int UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
  • 13. La lınea (11) utiliza la expresión *direccion_int para acceder al contenido de la celda a la cual apunta direccion_int: Temp_int = *direccion_int; Por consiguiente, el valor entero 15 se almacena en la variable Temp_int. Si no se pone el * enfrente de direccion_int;, la sentencia de asignación almacenarıa ilegalmente el contenido de direccion_int en la celda nombrada Temp_int, pero se supone que Temp_int contiene un entero, no una dirección. Este puede ser un error muy difıcil de localizar puesto que muchos compiladores no emiten ninguna advertencia/error. Para empeorar el asunto, la mayorıa de los apuntadores son cercanos, lo que significa que ocupan 2 bytes (4 bytes para aplicaciones de 32-bits), el mismo tamaño que un entero en una PC. La sentencia (11) copia el contenido de la variable B int en la celda apuntada por la dirección almacenada en dirección int. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS
  • 14. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS *direccion_int = B_int; Se copia Temp int en B int utilizando asignación normal.
  • 15. UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS #include <iostream.h> usingnamespacestd; main() { system(‘cls’); int a; int *apuntador; a=7; apuntador= &a; cout<<"la direccion de a es:"<<&a<<endl; cout<<"el valor de apuntador es:"<<apuntador<<endl; cout<<"el valor de a es:"<<a<<endl; cout<<"el valor de apuntador es:"<<*apuntador<<endl; cout<<"uso de * y &"; cout<<*&apuntador;cout<<""; cout<<&*apuntador;cout<<""; cout<<*&a; system(‘pause’); return 0; }
  • 16. UTILIZACION DE PUNTEROS CON FUNCIONES #include <iostream.h> usingnamespacestd; int cubo (int *); intmain() { system(“cls”); int numero = 5; cout<<"el valor original de numero es:"<<numero; cubo(&numero); cout<<""; cout<<"el nuevo valor de numero es:"<<numero; system(‘pause`); return 0; } intcubo(int *apuntador) { *apuntador=*apuntador * *apuntador * *apuntador; }
  • 17. #include <iostream.h> using namespace std; int cubo(int *); main() { system(‘cls’); int numero = 5; int *apuntador; apuntador=&numero; cout<<"la direccion de numero es:"<<&apuntador; cout<<" el valor de numero es:"<<numero; cout<<""; cubo(&numero); cout<<"el nuevo valor de numero es:"<<numero; cout<<"la direccion nueva de numero es:"<<&numero; system(‘pause’); return 0; } int cubo(int *apuntador) { *apuntador=*apuntador * *apuntador * *apuntador; } UTILIZACION DE PUNTEROS CON FUNCIONES
  • 18. DIFERENCIA ENTRE LOS PARAMETROS POR VALOR Y POR REFERENCIA LOS PARAMETROS POR VALOR (DECLARADOS SIN &) RECIBEN COPIAS DE LOS VALORES DE LOS ARGUMENTOS QUE SE PASAN Y LA ASIGNACION A PARAMETROS POR VALOR DE UNA FUNCION NUNCA CAMBIAN EL VALOR DEL ARGUMENTO ORIGINAL PASADO A LOS PARAMETROS. LOS PARAMETROS POR REFERENCIA ( DECLARADOS CON &) RECIBEN LA DIRECCION DE LOS ARGUMENTOS PASADOS Y EN UNA FUNCION, LAS ASIGNACIONES A PARAMETROS POR REFERENCIA CAMBIAN LOS VALORES DE LOS ARGUMENTOS ORIGINALES.