tarea de lenguajes_héctor bonilla

Upload: hector-f-bonilla

Post on 02-Nov-2015

220 views

Category:

Documents


0 download

DESCRIPTION

jjj

TRANSCRIPT

  • Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914

    1. Ejecute el siguiente programa, muestre que imprime y responda las siguientes

    preguntas.

    #include

    void main(void)

    {

    char a, *pa; //Instruccin 1

    pa=&a; // Instruccin 2

    printf("pa=&a--> pa=%p\n", pa);

    pa=pa+1; // Instruccin 3

    printf("pa=pa+1--> pa=%p\n", pa);

    pa=pa+3; // Instruccin 4

    printf("pa=pa+3--> pa=%p\n", pa);

    pa=pa-1; // Instruccin 5

    printf("pa=pa-1--> pa=%p\n", pa);

    }

    a) Se puede adicionar un entero a una variable como pa que guarda

    direcciones de memoria?

    En efecto, se puede sumar un entero a la variable pa que hace referencia a

    una direccin de memoria, dado que la aritmtica de operadores para

    apuntadores no suma las direcciones de memoria, sino los elementos, es

    decir que si se incrementa en uno a una variable de apuntador a entero

    no se incrementa un byte, sino dos bytes, porque es el espacio que ocupa

    un entero en memoria.

    b) Se pueden sustraer enteros de una variable como pa que guarda

    direcciones de memoria?

    En efecto si se sustrae un entero a la variable pa, se decrementa en el

    entero proporcionado en la cantidad de byte.

    c) Se pueden multiplicar enteros a una variable como pa que guarda

    direcciones de memoria?

    Claramente esta operacin aritmtica no se puede establecer, puesto que

    la variable pa es un apuntador y la multiplicacin de enteros con la

    variable que registra las direcciones de memoria, no es posible y se

    presenta en el siguiente error al ejecutar, la siguiente pregunta:

    Que se obtendr al ejecutar pa = pa * 3?

    Se obtiene un error al realizar esta operacin porque de nuevo pa es una

    direccin de memoria.

    d) Cul es la primera direccin guardada en pa en la instruccin 3?

    pa=0028FF1B

    e) Despus de que se agrega 1 a pa en la instruccin 3?, cul es la direccin

    guardada en pa?

    pa=0028FF1C

  • Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914

    f) Despus de que se agrega 3 a pa en la instruccin 4, cul es la direccin

    guardada en pa?

    pa=0028FF1F

    g) Despus de que se resta 1 a pa en la instruccin 5, cul es la direccin

    guardada en pa?

    pa=0028FF1E

    h) Asuma si se cambia la instruccin 1 a la instruccin: int a, *pa:

    1. Cul es la primera direccin guardada en pa en la instruccin 3?

    pa=0028FF18

    2. Despus de que se agrega 1 a pa en la instruccin 3, cul es la

    direccin guardada en pa?

    pa=0028FF1C

    3. Despus de que se agrega 3 a pa en la instruccin 4, cul es la

    direccin guardada en pa?

    pa=0028FF28

    4. Despus de que se resta 1 a pa en la instruccin 5, cul es la direccin

    guardada en pa?

    pa=0028FF24

    i) Agregar 1 a la variable que guarda la direccin de memoria de un carcter

    agrega 1 al nmero guardado en la direccin?

    Si se agrega 1 al apuntador pa de un carcter este se incrementa en un 1 al nmero que se tena en memoria, por ejemplo si el dato es carcter, el

    apuntador pa= 0028FF1B (Instruccin 2) y si adiciona 1 a la variable pa,

    se obtiene pa=0028FF1C (Instruccin 3), es decir que se agrega uno al

    nmero guardado en memoria.

    j) Agregar 1 a la variable que guarda la direccin de memoria de un entero

    agrega 1 al nmero guardado en la direccin?

    Para este caso, si agrega 1 a la direccin de memoria no se adiciona en 1 al

    nmero guardado en la direccin si se trabaja en dato de tipo entero.

    2. Considere el siguiente programa errorcin.c:

    #include

    int main()

    {

    int tamano;

    char *miVector;

    /*pide el tamao del vector */

    tamao=scanf("Tamano? %d", tamano);

    /*carga el vector con enteros pares */

    int i=0;

    while (i

  • Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914

    /* imprime los valores en orden inverso */

    int j;

    for (j=tamano-1; j>=0; j++)

    {

    printf("%d\n", miVector[j]);

    }

    /* imprime los valores en orden original */

    int k;

    for (k=0; k

  • Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914

    /* imprime los valores en orden original */

    for (k=0; k