You are on page 1of 6

GUIA PARA PRÁCTICA DE

LABORATORIO

CARRERA CÓDIGO NRC NOMBRE DE LA


ASIGNATURA ASIGNATURA
SISTEMAS, MECANICA 15081 PROGRAMACIÓN I

UNIDAD No.: 01 TÉCNICAS AVANZADAS DE PROGRAMACIÓN ESTRUCTURADA CON


PUNTEROS Y ARREGLOS
PROFESOR PRÁCTICA NOMBRE DE LA PRÁCTICA: DURACIÓN :
ING. …Wellington 002 PUNTEROS, ARITMETICA DE 90 MINUTOS
Valdivieso………… PUNTEROS

A. RESULTADO DE APRENDIZAJE DE LA UNIDAD

Desarrollar aplicaciones computacionales con el uso de punteros y arreglos.

B. OBJETIVO

Desarrollar aplicaciones computacionales con el uso de aritmética de punteros y


modularidad.

C. FUNDAMENTO TEÓRICO

Un puntero apunta a una dirección de memoria. El lenguaje C permite sumar o


restar cantidades enteras al puntero, para que apunte a una dirección
diferente: aritmética de punteros.

Consideremos un puntero a enteros:

int* ptr;

ptr apuntará a cierta dirección de memoria. Pero también tendrán sentido las
expresiones ptr+1, ptr+2, etc. La expresión ptr+k es un puntero que apunta a la
dirección de ptr sumándole k veces el espacio ocupado por un elemento del tipo
al que apunta (en este caso un int):
Arreglos y punteros son lo mismo". "Internamente, los arreglos son punteros".
Casi todos los que programamos en C y C++ nos hemos encontrado en más de
una ocasión con alguna de estas afirmaciones. Lo cierto es que los arreglos y
los punteros tienen varios puntos en común, pero no son lo mismo. En este post
veremos algunas de sus diferencias, desde las más obvias hasta algunas un
poco más sutiles, que suelen ser motivo de muchas confusiones.
Cuando haga referencia al estándar, me estaré refieriendo tanto al de C como el
de C++, pues coinciden en los puntos tratados en este post.

Autor: Página 1
GUIA PARA PRÁCTICA DE
LABORATORIO

He colocado algunas secciones marcadas como opcionales. Se trata de


explicaciones complementarias que pueden ser de interés pero no son
indispensables para entender el post.
Aunque esto va dirigido a quienes ya tienen una buena base en estos temas,
definiremos, de forma muy breve y a manera de recordatorio, estos tipos de
datos.

Los punteros son variables cuyo valor es una dirección de memoria. Así, si
tenemos uno cuyo valor es 1234, decimos que apunta a la dirección 1234. Como
cualquier variable, un puntero está almacenado en una dirección de la memoria,
que además es distinta de aquella a la que apunta. En esta imagen tenemos un
puntero localizado en la dirección 1000, que hace referencia, o apunta, a la
dirección 1234:

Cuando declaramos un puntero, únicamente se reserva memoria para él. Antes


de poder usarlo, debemos asegurarnos de que apunte a alguna dirección
correcta, ya sea reservándola de forma dinámica o directamente haciendo que
apunte a la dirección de alguna variable:

int n;
int *ptr = &n;

Un arreglo es una variable que contiene uno o más elementos. La dirección del
arreglo es la misma que la de su primer elemento. Veamos un arreglo de 4 int
almacenado en la dirección 1000:

Autor: Página 2
GUIA PARA PRÁCTICA DE
LABORATORIO

Como vemos en la imagen, arreg es todo el arreglo completo, y su tamaño es el


de todos sus elementos. A pesar de lo que a veces se lee, un arreglo no es un
puntero disfrazado, ni nada por el estilo. Es simplemente eso, un arreglo, cuyo
tipo viene determinado por la cantidad y tipo de elementos que contiene.

D. INSTRUCCIONES

 Forme grupos de dos personas


 Leer detenidamente las actividades a desarrollar.
 Desarrollar el ejercicio utilizando la herramienta de programación establecida.
 Utilizar las normas APA para sustentar la base teórica.
 Llenar los literales I, J, K,L.
 Una vez finalizado el taller, el grupo de trabajo enviará al aula virtual este documento de forma
individual, bajo el siguiente formato:
 El plagio total o parcial debidamente comprobado serán sancionados en base al reglamento de la
ESPE.
 No serán calificados los trabajos atrasados sin la debida justificación.

LN_NApellido1_NApellido2 .docx

Ejemplo: L2_FAndrade_PLopez.docx

E. DATOS Y RUBRICA DE EVALUACIÓN :

FECHA ENTREGA (DD-MM-AAAA) GRUPO


2016/11/27

APELLIDOS Y NOMBRES OBSERVACIONES


Salazar Francisco

Robalino Estuardo

INDICADORES DE EVALUACIÓN DEL TALLER MARCO LOGICO


2 Cumple 1.5 Cumple parcialmente 1 Cumple mínimo 0 No cumple

Autor: Página 3
GUIA PARA PRÁCTICA DE
LABORATORIO

1. PARAMETROS DE EVALUACIÓN (15 PTOS) EVALUACIÓN

(parámetros deben ser definidos por el docente) 2 1 0.5 0

1. Definición de identificadores

2. Uso de Prototipos

3. Declaración de arreglos y manipulación de arreglos

4. Ingreso de Datos

5. Uso de aritmética de punteros

6. Eficiencia del programa

7. Salida de datos

Subtotal 1 /17

2.MATRIZ DE RESULTADOS (3 PTOS) 1 0.75 0.5 0

1. Conclusiones

2. Recomendaciones

3. Cumplimiento de instrucciones

Subtotal 2 /3

TOTAL /20

ACTIVIDADES A DESARROLLAR (enunciado a desarrollar)

Implementar una aplicación que resuelva lo siguiente aplicando las sentencias secuenciales, repetitivas y
decisión, así como el uso de arreglos.

 Dado un vector de 10 elementos = {1, 2, 3, 4, 4, 7, 8, 9, 5, 4}, escribir un programa


en C (haciendo uso de puntero) que muestre las direcciones de memoria de
cada elemento del vector.
 Reescribe el siguiente programa para calcular la media aritmética de un vector
de N valores reales mediante notación y aritmética de punteros:

Autor: Página 4
GUIA PARA PRÁCTICA DE
LABORATORIO

float media(float datos[],intN){


int* punteroi;
float suma=0;
for(punteroi=datos; punteroi<datos+N; punteroi++)
suma=suma+*ptri;
returnsuma/N;
}

 Implementar un programa que permite al usuario introducir un número


determinado de palabras y da como resultado la impresión de las palabras por
consola ordenadas de forma descendente. Para ello se va a utilizar la función
strcmp(char*, char*) de la librería estándar del C++ que permite comparar dos
cadenas de caracteres. Dicha función está declarada en el fichero string.h
 Generar una matriz multidimensional randomica generando la diagonal principal
invertida Y generar la diagonal secundaria invertida

F. REQUISITOS PREVIOS

HADWARE SOFTWARE

COMPUTADOR IDE

G. REFERENCIAS ( DE ACUERDO A LO ESPECIFICADO EN LA BIBLIOGRAFIA BASICA Y


COMPLEMENTARIA)

TITULO AUTOR EDICIÓN AÑO IDIOMA EDITORIAL

1. C/C++. Edición revisada y Acera García, Tercera 2011 Español ANAYA


actualizada 2012 Miguel Ángel MULTIMEDIA

2. Programación C++ Liberty, Jesse; Segunda 2011 EspañoL ANAYA


Cadenhead, Rogers MULTIMEDIA

3. Fundamentos de Villalobos Marcelo Segunda 2010 Español Macro


programación C++
TITULO AUTOR EDICIÓN AÑO IDIOMA EDITORIAL

4. Como programar en C/C++ Deithel y Deithel Sexta 2010 Español Prentice Hall

H. RESULTADO OBTENIDOS

Las direcciones de los punteros se imprimen correctamente, sin ninguna


clase de problema, va a depender mucho de la clase de valores de nuestro
vector: Por otro lado la función STRCPY fue una función muy útil para
cadenas de caracteres.

I. CONCLUSIONES

Autor: Página 5
GUIA PARA PRÁCTICA DE
LABORATORIO


Es de gran importancia tener muy clara la relación entre punteros y
arreglos, ya que entre ambos se pueden hacer varias operaciones muy
importantes.
 Así también es importante conocer las funciones más importantes para
cadenas de caracteres ya que pueden ahorrarnos muchos problemas
y optimizar nuestro código.
J. RECOMENDACIONES

Se debe estar muy atento, al momento de asignar los punteros, y diferencia


claramente entre la variable a la que apunta, su dirección en el vector o
cadena, y otra cosa muy distinta que es el valor que este contenga.

K. ANEXO (CODIGO DEL PROGRAMA)

ENVIAR EL PROGRAMA O PROYECTO

Autor: Página 6