punteros ing anghello quintero. punteros(apuntadores) ● una variable puntero es una variable que...
TRANSCRIPT
![Page 1: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/1.jpg)
PUNTEROS
Ing Anghello Quintero
![Page 2: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/2.jpg)
PUNTEROS(APUNTADORES)
● Una variable puntero es una variable que contiene direcciones de otras variables.
● Las variables vistas hasta este momento contienen valores de datos
● Las variables punteros contienen valores que son direcciones de memoria donde se almacenan datos
● Un puntero es una variable que contiene una direccion de memoria
![Page 3: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/3.jpg)
● Cada vez que se declara una variable en C++, el compilador establece un area de memoria para almacenar el contenido de esa variable
● Cuando se declara una variable (int), por ejemplo el compilador asigna dos bytes de memoria
● El espacio para esa variable se situa en una posicion especifica de la memoria llamada Direccion de memoria
● El concepto de punteros tiene correspondencia en la vida diaria.
![Page 4: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/4.jpg)
● Cuando se envia una carta por correo, su informacion se entrega basada en un puntero que es la direccion de esa carta
![Page 5: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/5.jpg)
REGLAS BASICAS DE PUNTEROS
● Un puntero es una variable como cualquier otra
● Una variable puntero contiene una direccion que apunta a otra posicion de memoria
● En esa posicion se almacenan los datos a los que apunta el puntero
● Un puntero apunta una variable de memoria
![Page 6: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/6.jpg)
DECLARACION DE PUNTEROS
● Al igual que cualquier variable, las variables punteros se declaran antes de ser utilizadas. La declaracion de una variable puntero debe indicar al compilador el tipo de dato al que apunta el puntero; para ello se hace preceder su nombre con un asterisco(*)
tipo de apuntador * identificador de puntero
![Page 7: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/7.jpg)
int *ptr; //puntero a un tipo de dato entero
long *ptr2; //puntero a un tipo de dato largo
char *ptr3; // puntero a un tipo de dato char
float *f;//puntero a un tipo de dato float
Siempre que aparezca un asterisco (*) en una definicion de una variable, ésta es una variable puntero
![Page 8: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/8.jpg)
INICIALIZACION DE PUNTEROS
● La inicializacion de un puntero proporciona a ese puntero la direccion del dato correspondiente. Despues de esta inicializacion se puede utilizar este puntero para referenciar los datos direccionados
● Para asignar una direccion de memoria a un puntero se utiliza el operador de referencia &
● Asi por ejemplo: &valor
![Page 9: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/9.jpg)
INICIALIZACION DE PUNTEROS● Lo anterior significa “la direccion de valor”, este
metodo se conoce como inicializacion estatica. Esta asignacion requiere:– Asignar memoria estaticamente definiendo una
variable y a continuacion hacer que el puntero apunte al valor de la variable
int i; //declara una variable i, se asigna una direccion fija y no puede desaparecer
int *p;//declara un puntero o variable puntero a un entero p
p=&i; //asigna la direccion de i a p
![Page 10: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/10.jpg)
INICIALIZACION DE PUNTEROS
– Asignar un valor a la direccion de memoria
int *p;
*p=50;
NOTA: la asignacion p=50 es erronea
El operador & devuelve la direccion de memoria
El operador * devuelve el contenido de la memoria apuntada por el puntero
![Page 11: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/11.jpg)
100
A
1001
1000
999
char *p
char i
101
100
99
P=&i
P contiene el valor de 100 quees la direccion de i
*p es la direccion dedel elemento al que apunta p. Porconsiguiente, *p contiene el valor de‘A’
ASIGNACION DE MEMORIA A UN PUNTERO
cout<<“\n la direccion de i”<<p; // muestra 100 (hexa)cout<<“\n el contenido de i”<<*p; // muestra ‘A’
![Page 12: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/12.jpg)
ejemplo
![Page 13: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/13.jpg)
ejemplo
![Page 14: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/14.jpg)
![Page 15: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/15.jpg)
![Page 16: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/16.jpg)
![Page 17: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/17.jpg)
![Page 18: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/18.jpg)
TALLER
● De acuerdo a lo visto sobre punteros, elabore un programa donde se implemente el tema de punteros. No utilice funciones
● Utilizando funciones, elabore un programa con punteros
![Page 19: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/19.jpg)
TALLER
● Redacte un ejemplo de la vida diaria donde podamos aplicar o ver la similitud con punteros
![Page 20: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/20.jpg)
![Page 21: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/21.jpg)
//apuntador a caracter
#include<iostream.h>
main()
{
char c;
char *p;
p=&c;
for(c='a';c<='z';c++)
{cout<<*p;
}
return 0;
}
![Page 22: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/22.jpg)
● Ejercicio
Elaborar un programa que convierta cada letra del ejercicio anterior en su respectivo codigo ASCII. Ejemplo la a es el 97 , la b es el 98 y asi sucesivamente
a = 97
b = 98
c= 99
.....z=122
![Page 23: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/23.jpg)
TIPOS DE DATOS ENUMERADOS
Hay diferentes tipos de datos:
Numericos(Entero, real, doble)
Carácter(Char)
Cadena(char nombre[30])
Pero existe un tipo de datos especial, estos son los tipos de datos enumerados
![Page 24: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/24.jpg)
Un tipo de datos enumerado o enumeracion esta constituido por una serie de constantes simbolicas enteras.
Se declara una enumeracion con la palabra reservada enum y una serie de enumeradores delimitados por caracteres llaves (elementos de un tipo enumerado) y separados por coma
Por defecto, el primer enumerador tiene un valor de cero.
A cada enumerador se le atribuye un valor incrementando un valor constante en relacion a su predecesor
![Page 25: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/25.jpg)
Ejemplo
enum {false, true};//false ==0, true==1
cout<<“\n falso es igual a ”<<false;
Otra forma de declarar un tipo de dato enumerado es:
enum dias{lunes,martes,miercoles,...,domingo};
cout<<“\nLunes es el dia”<<lunes;
Se puede tambien asignar explicitamente un valor a un enumerador
enum dias{lunes=1,martes,miercoles,...domingo};
cout<<“\nLunes es el dia”<<lunes;
![Page 26: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/26.jpg)
#include<iostream.h>
class dias
{
enum dia{lunes=1,martes,miercoles};
public:
void mostrar()
{
cout<<"\n martes es igual a "<<martes;
}
}dia;
main()
{dia.mostrar();return 0;}
![Page 27: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/27.jpg)
Lo anterior significa que un valor enumerado se puede utilizar en lugar de int.
OPERACIONES ARITMETICAS CON DATOS ENUMERADOS
#include<iostream.h>//enum3.cpp
main()
{
enum carro{mazda=32767,renault=-32768};//maximo valor que puede tomar una constante numerada
float precio;
cout<<"\nmazda "<<mazda*1000000;//se pueden realizar operaciones aritmeticas, pero da un error por que el resultado seria una constante demasiado grande
return 0;}
![Page 28: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/28.jpg)
#include<iostream.h>//enum4.cpp
main()
{
enum carro{mazda=32767,renault=-32768};//maximo valor que puede tomar una constante numerada
float precio;
precio=((float)mazda)*1000;//se debe convertir a flotante
cout<<"\nmazda "<<precio;
return 0;
}
![Page 29: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/29.jpg)
Cada enumerador puede tener diferentes valores diferentes
#include<iostream.h>//enum5.cpp
main()
{
enum mes{enero=31,febrero=28,marzo=31};//cada enumerador puede tener un valor diferente
cout<<"\nEnero tiene "<<enero<<" dias";
cout<<"\nFebrero tiene "<<febrero<<" dias";
cout<<"\nMarzo tiene "<<marzo<<" dias";
return 0;
}
![Page 30: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/30.jpg)
FUNCION CIN.GETLINE
La funcion cin.getline es una funcion interna de C++ utilizada para capturar cadenas de caracteres que tengan espacios en blanco.
Esta funcion permite la lectura de cadenas completas incluyendo espacios en blanco.
Si se va a leer una cadena ha de ser mayor que la cadena real al menos en dos caracteres, para permitir el carácter ‘\n’ y el carácter ‘\0’. El primer carácter indica la tecla enter y el segundo es el carácter nulo de toda cadena de caracteres
![Page 31: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/31.jpg)
MIQPO ‘\n’M ‘\0’A BC
Espacio no reconocido por cin
Espacio reconocido por cin.getline
enterCarácter nulo introducido por cin.getline
![Page 32: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/32.jpg)
#include<iostream.h>//cinget1.cpp
main()
{
char nombre[30];
char apellido[30];
cout<<"\nDigite el nombre";
cin>>nombre;//escriba un nombre compuesto
cout<<"\nNombre es "<<nombre;//solo muestra el primer nombre
![Page 33: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/33.jpg)
//cinget2.cpp
main()
{
char nombre[30];
char apellido[30];
cout<<"\nDigite el nombre ";
cin.getline(nombre,32);//especificar una longitud mayor a
//la cadena real
cout<<"\nDigite el apellido ";
cin.getline(apellido,32);//especificar una longitud mayor a
cout<<"\n El nombre es "<<nombre;
cout<<"\n El apellido es "<<apellido;
return 0;
}
![Page 34: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/34.jpg)
TALLER
1. Elaborar un programa que convierta cada letra del ejercicio anterior en su respectivo codigo ASCII. Ejemplo la a es el 97 , la b es el 98 y asi sucesivamente
a = 97
b = 98
c= 99
.....z=122
![Page 35: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/35.jpg)
TALLER
2. Elaborar un programa que convierta cada letra del alfabeto dado en minuscula en su respectiva mayuscula.
a = A
b = B
c= C
.....z=Z
![Page 36: PUNTEROS Ing Anghello Quintero. PUNTEROS(APUNTADORES) ● Una variable puntero es una variable que contiene direcciones de otras variables. ● Las variables](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4561a28abb57c90a85a/html5/thumbnails/36.jpg)
TALLER
3. Elaborar un programa a traves de punteros que muestre la tabla ASCII
Valor Decimal Carácter
.
33 !