Sei sulla pagina 1di 4

UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS

FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS Y CIENCIAS DE LA COMPUTACIÓN
DEPARTAMENTO DE MATEMÁTICS APLICADA
MM-314 PROGRAMACION SECCIONES 1400 Y 1700
I PAC 2020

TAREA No. 3
Instrucciones:
 El contenido a trabajar corresponde al capítulo 5 secciones 5.1 a 5.8 en el libro de texto:
Como programar en C++ cuarta edición.
 Pueden trabajar en grupos de 2 integrantes como máximo. Escribir el nombre completo
y el número de registro de los integrantes al inicio del documento.
 Fecha máxima de entrega 17 de abril de 2020
 El nombre del archivo debe iniciar con T3 seguido de las iniciales de los nombres
seguido de la sección en la que están matriculados, por ejemplo: T3_CA_SM_1700
 Enviar el archivo de la tarea al correo electrónico allison.chavez@unah.edu.hn
CUESTIONARIO
1. ¿Qué es la dirección de una variable?
2. ¿El programador puede asignar la dirección a las variables de un programa?
3. ¿Qué es un apuntador o puntero?
Un a puntador contiene la dirección de una variable que contiene un valor específico.
4. ¿Cuál es la utilidad de los apuntadores en el lenguaje de programación C++?
5. ¿Qué almacena una variable apuntador?
Las variables de apuntador contienen direcciones de memoria como sus valores. Por lo general,
una variable contiene de manera directa un valor específico.

6. ¿Qué tipo de dato numérico almacena un apuntador?


7. ¿Cómo se declara un apuntador en el lenguaje C++?
Los apuntadores, como cualquier otra variable, se deben declarar antes de que se puedan
utilizar.
Un puntero, en C, se declara como sigue:
TIPO * nombre_puntero ;
8. ¿Cómo se interpreta la instrucción float *ptrX;?
9. ¿Cómo se interpretan las instrucciones int *ptrX=NULL; int ptrY =0;?
Se declaran a los apuntadores con datos int e inicializados en 0
10. ¿Cómo se puede escribir la dirección de una variable?
11. ¿Cuál es el operador de dirección?
El operador dirección (&) es un operador unario que devuelve la dirección de memoria
de su operando.
12. ¿Cuál es la instrucción que hace que el apuntador int ptrN “apunte” a la variable int N?
13. ¿Cuál es el operador de indirección?
UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS
FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS Y CIENCIAS DE LA COMPUTACIÓN
DEPARTAMENTO DE MATEMÁTICS APLICADA
MM-314 PROGRAMACION SECCIONES 1400 Y 1700
I PAC 2020
El operador *, por lo general denominado operador de indirección u operador de
desreferencia, devuelve un sinónimo (es decir, un alias o nombre clave) para el objeto al
cual apunta el operando de su apuntador.
14. Dada la instrucción int Edad = 25, *ptrEdad=&Edad; ¿Qué escribe la siguiente
instrucción: (En caso de haber un error, justifique)
a) cout<< ptrEdad;
b) cout<< Edad;
c) cout<< &ptrEdad;
d) cout<< &Edad;
e) cout<< *ptrEdad;
f) cout<< *Edad;
g) cout<< &*ptrEdad;
h) cout<< &*Edad;
i) cout<< *&ptrEdad;
j) cout<< *&Edad;

15. ¿Qué devuelve el operador sizeof y como se implementa?


El operador sizeof se puede aplicar a cualquier nombre de variable, nombre de tipo o valor
constante. Cuando sizeof se aplica a un nombre de variable (el cual no es un nombre de un
arreglo) o a un valor constante, devuelve el número de bytes utilizados para almacenar el tipo
específico de variable o de constante. Observe que los paréntesis que se utilizan con sizeof sólo
son necesarios si s e suministra el nombre de tipo así como su operando. Los paréntesis que se
utilizan con sizeof no son necesarios cuando e l operando de sizeof es el nombre de una variable
o de una constante. Recuerde que sizeof es un operador, no una función, y que surte efecto en
tiempo de compilación, no en tiempo de ejecución.
16. ¿Qué es un byte?
17. ¿Cuántos byte se necesitan para almacenar un tipo de dato: char, short, int, float,
double?

Tipos de
 Descripción  Memoria 
Datos 

2 bytes o una palabra (varía


int Cantidad entera
según compilador).

char Carácter 1 byte.

float Almacena valores reales en punto flotantes. 1 palabra (4 bytes).

double Almacena valores reales en doble precisión. 2 palabras (8 bytes).


UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS
FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS Y CIENCIAS DE LA COMPUTACIÓN
DEPARTAMENTO DE MATEMÁTICS APLICADA
MM-314 PROGRAMACION SECCIONES 1400 Y 1700
I PAC 2020
Se utiliza para definir una función que no
void devuelve ningún valor o declarar punteros
genéricos

18. Sea la declaración int x, *ptrx=&x, ¿ptrx almacena la dirección de los 4 bytes que ocupa
x en la memoria? Explique su respuesta.
19. Dada la instrucción int Edad[ 7]; ¿Cuál es la salida de cout<< sizeof Edad;?
La cantidad de byte utilizados.
20. ¿Cuál es la relación entre los nombres de los arreglos y los apuntadores?
21. ¿Qué es un apuntador constante?
Puntero constante. Se utiliza para informar al compilador que el valor del puntero no
puede cambiar, aunque el objeto al que apunta si pueda cambiar (si no es constante).
22. Dado la instrucción int Num[10], *ptrNum; ¿Cuál es la diferencia entre ptrNum=Num; y
ptrNum=&Num[0];?
Notas:
 Un número hexadecimal se escribe como una combinación de los dígitos de su base:
{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
 Por comodidad usaremos los números hexadecimales, direcciones (localidades de
memoria), iniciando con dos dígitos literales seguidos de tres dígitos numéricos, por
ejemplo cb700, fa126, bd049
 Por comodidad en las pruebas de escritorio romperemos la secuencia de los
números hexadecimales, tal como lo aplica el libro de texto. Por ejemplo
aceptaremos la secuencia fd468, fd469, fd470, fd471, fd472, .. en vez de
fd468,fd469, fd46a, fd46b, fd46c, …
 Al ejecutar un programa en el lenguaje de programación las direcciones se escriben
respetando la secuencia de los números hexadecimales con un prefijo que identifica
el sistema de numeración utilizado.
 En el texto puede consultar el Apéndice C Sistemas Numéricos si desea estudiar
sobre el sistema de numeración hexadecimal.

23. Dada la instrucción int Num[10]={2,4,6,8,0,9,7,5,3,1}, *ptrNum= Num; y asuma que la


dirección de Num[0] es fe300¿Qué escribe la siguiente instrucción: (En caso de haber un
error, justifique)
a) cout<< ptrNum;
b) cout<< ptrNum++;
UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS
FACULTAD DE CIENCIAS
ESCUELA DE MATEMÁTICAS Y CIENCIAS DE LA COMPUTACIÓN
DEPARTAMENTO DE MATEMÁTICS APLICADA
MM-314 PROGRAMACION SECCIONES 1400 Y 1700
I PAC 2020
c) cout<< (ptrNum+5);
d) cout<< ptrNum[2];
e) cout<< ptrNum--;
f) cout<< *ptrNum;
g) cout<< Num;
h) cout<< Num++;
i) cout<< (Num+5);
j) cout<< Num[2];
k) cout<< Num--;
l) cout<< *Num;

24. ¿Cuál es la salida del siguiente programa? Haga la prueba de escritorio


#include <iostream>
#include <iomanip>
using namespace std;

#define max 5
int main(int argc, char *argv[])
{ int A[max]={5,10,15,20,25}, *ptrA=A;
cout<<endl<<endl;
for(int i=0; i<max; i++)
{ cout<<setw(10)<<ptrA<<setw(10)<<*ptrA<<endl;
ptrA++; }
cout<<endl<<endl;
for(int i=0; i<max; i++)
{ cout<<setw(10)<<A+i<<setw(10)<<*(A+i)<<endl; }
cout<<endl<<endl;
ptrA=A;
for(int i=0; i<max; i++)
cout<<setw(10)<<ptrA+i<<setw(10)<<*(ptrA+i)<<endl;
cout<<endl<<endl;
for(int i=0; i<max; i++)
cout<<setw(20)<<ptrA[i]<<endl;
return 0; }

Potrebbero piacerti anche