Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica 2 Reporte
Practica 2 Reporte
Laboratorio de Computación
Salas A y B
Grupo: 4
No de Práctica(s): 2
No. de Equipo de
cómputo empleado:
Semestre: 2 semestre
Observaciones:
CALIFICACIÓN: ________________
Introducción:
Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual
corresponderá a un dato o a una variable que contiene el dato. Cada variable que se utiliza en una aplicación
ocupa una o varias posiciones de memoria. Estas posiciones de memoria se accedan por medio de una
dirección.
El Operador de Indirección ( * ), toma la dirección de una variable y regresa el dato que contiene esa
dirección.
Los punteros son uno de los aspectos más potentes de la programación en C, pero también uno de los más
complejos de dominar. Los punteros permiten manipular la memoria del ordenador de forma eficiente. Dos
conceptos son fundamentales para comprender el funcionamiento de los punteros:
Todo dato está almacenado a partir de una dirección de memoria. Esta dirección puede ser obtenida y
manipulada también como un dato más.
Los punteros son también una de las fuentes de errores más frecuente. Dado que se manipula la memoria
directamente y el compilador apenas realiza comprobaciones de tipos, el diseño de programas con punteros
requiere una meticulosidad muy elevada que debe ir acompañada de una dosis idéntica de paciencia.
Programar eficientemente usando punteros se adquiere tras escribir muchas líneas de código pero requiere
una práctica sostenida.
Cuando se escribe un programa, se asume que las variables se almacenan en memoria y están ahí
disponibles para ser utilizadas. En principio, los detalles de cómo se almacenan y organizan los datos en
memoria no son visibles a un programador. Sin embargo, como el lenguaje de programación C nos ofrece una
gestión de memoria muy cercana a la RAM, para realizar un uso eficiente de la memoria es preciso conocer
más de cerca cómo se organiza la memoria de un programa.
Los arreglos (arrays) permiten almacenar vectores y matrices. Los arreglos unidimensionales sirven para
manejar vectores y los arreglos bidimensionales para matrices. Sin embargo, las matrices también se pueden
almacenar mediante arreglos unidimensionales y por medio de apuntadores a apuntadores, temas que se
verán en el capıtulo siguiente. La palabra unidimensional no indica que se trata de vectores en espacios de
dimensión uno; indica que su manejo se hace mediante un subíndice. El manejo de los arreglos
bidimensionales se hace mediante dos subíndices.
Objetivo: Utilizar apuntadores en Lenguaje C para acceder a localidades de memoria tanto de datos primitivos
como arreglos.
Desarrollo: Realizar las actividades 1- 5 y al terminar colocar en la plataforma su código fuente. Las
actividades restantes son para el reporte(en equipo).
Actividad 1
#include <stdio.h>
main(){
/*Escribir abajo la línea que modifique el valor de la variable -a- mediante el apuntador ap. y se muestre el
nuevo valor en la salida estándar*/
1:
#include <stdio.h>
main(){
float a,*ap;
a=7.5;
ap=&a;
printf(" Contenido de la dirección que almacena -ap- (contenido de ls variable a la que apunta) % \n ",*ap );
2: #include <stdio.h>
main(){
int a=3,b=5;
intercambia(&a,&b);
tmp=*a;
*a=*b;
*b=tmp;
3: #include<stdio.h>
#define n 10
void imprime(int*ap);
main(){
int A[n],B[n],C[n],*a,*b,*c;
llena(a);
llena(b);
c=&C[0];
suma(a,b,c);
imprime(a);
imprime(b);
imprime(c);
int i;
for(i=0;i<n;i++){
printf("Llenado");
scanf("%d",ap+i);
int i;
for(i=0;i<n;i++){
*(ap3+i)=*(ap1+i)+*(ap2+i);
void imprime(int*ap){
int i;
for(i=0;i<n;i++){
}
4: ##include<stdio.h>
main()
int a[5],x,*b;
b=&a[0];
for(x=0;x<5;x++)
scanf("%d",b+x);
printf ("ARREGLO\n");
for(x=0;x<5;x++)
printf("\t%d",*(b+x));
5: #include<stdio.h>
int main(){
char s[50];
printf("Introduce la cadena:\n\n");
int n;
p++;
return n;
6:
#include<stdio.h>
main(){
int x, y;
printf("\tMatriz Original\n\n");
printf("\n\n\tMatriz Traspuesta\n\n");
return 0;
7:
#include<stdio.h>
main()
gets(s);
gets(e);
longCad(e,s);
printf ("\tCopiamos cadena 1 en 2\n");
int i;
for(i=0;i<50;i++)
*(cad1+i)=*(cad2+i);
Conclusiones:
Para mi esta práctica fue un poco confusa ya que usamos además de arreglos, usamos apuntadores, estos
apuntadores son muy buenos para ayudarte en el código, pero muy confusos ya que estos funcionan para la
unidad de memoria y poder modificar conforme avanza el programa esas unidades, al igual los arreglos que te
ayudan para juntar toda la información en poco código, pero investigando y con ayuda de los apuntes te da
una idea de cómo se trabajan y juntando ambos es interesante como actúan para algún problema, una
práctica interesante aunque un poco confusa.
Utilizamos apuntadores en lenguaje C para acceder a las localidades de memoria, para esto manejamos arreglos y
algunos datos primitivos. Un apuntador es una variable, que almacena como contenido una dirección de memoria, de
otra variable a la que apunta, dicha dirección representa el lugar donde se almacena un dato. Los apuntadores tienen un
tipo de dato específico y solo pueden apuntar a espacios de memoria con datos del mismo tipo. Hacer la practica en
ocasiones se complicó debido a que no hubo una plena organización en el equipo, aun así pudimos entregar algo.
Al realizar la práctica fue un poco compleja ya que antes no había tratado mucho con apuntadores y arreglos
juntos, pero al hacerlo me di cuenta de que ambos son importantes para la programación en c, ya que los
apuntadores manipulan la dirección de memoria y con esto manipular lo que tiene dentro este mismo, tuvimos
que investigar y apoyarnos de los apuntes.
Con la realización de esta práctica me di cuenta de la importancia del uso de los apuntadores ya que son de
gran ayuda para manipular la memoria interna ya sea de una variable sencilla o de arreglos multidimensional y
bidimensionales, ayudando a que nuestro programa sea más eficaz y eficiente.
Ávila Sánchez Eduardo Benjamín:
Durante el trabajo tuvimos varias dificultades al imprimir arreglos, ya que se nos dificultó saber el cuándo y el
cómo imprimir lo que contenía el apuntador y cuándo iba la dirección de el mismo.
En cuanto a las actividades finales fueron un poco complejas al intentar transformar los arreglos
bidimensionales a arreglos unidimensionales y a apuntadores, aunque el guardar cadenas en otras no estuvo
tan complicado.
A pesar de ello nos dimos a la tarea de investigar y arreglar estos problemas de manera eficiente y rápida
esperando a que sea la correcta.