Sie sind auf Seite 1von 3

UNIVERSI D A D CENTRAL DE VENEZUELA

FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACI ÓN
O RGANIZACI ÓN Y ESTRUCTURA DEL COMPUTAD O R I

TALLER #3
Representación de datos en lenguaje C

Pre-Taller:

1) Escriba un programa en lenguaje C que lea un número decimal (el número será introducido
por el usuario) y muestre su representación en hexadecimal. Debe utilizar las funciones
printf y scanf junto a los especificadores de formato que considere adecuados.
2) Investigue la utilidad y funcionamiento de las funciones strol y ltostr. ¿Qué ventaja ofrecen
sobre los especificadotes de formato utilizados en el ejercicio anterior? ¿Qué implica que
dichas funciones no formen parte del estándar del lenguaje C?
3) Escriba un programa en lenguaje de programación C que dada la entrada en hexadecimal
representada por un arreglo de caracteres, muestre como salida el equivalente decimal de
dicho número. La conversión debe hacerse de forma manual.
4) ¿Qué es un esquema de codificación de caracteres? Indique las principales características
de los esquemas ASCII, ASCII extendido y UNICODE, así como las diferencias entre los
mismos. Imprima y anexe a este informe la tabla de caracteres ASCII.
5) Escriba un programa en lenguaje de programación C que dada una cadena de caracteres en
letras minúsculas (obtenida mediante scanf) la transforme a mayúsculas y muestre el
resultado (mediante printf).

Debe traer estos programas impresos y en diskette. Los programas deben estar probados y
deben correr sin errores.

Taller:

1. Inicie el computador en el sistema operativo Linux y abra una consola o terminal de texto,
usando el icono que se encuentra en Aplicaciones > Sistema > Terminal.

2. Cree un directorio para realizar las actividades de éste laboratorio en el directorio actual, el
cuál se debe llamar lab3, utilizando el comando mkdir de la siguiente manera:

talleres@localhost[talleres]# mkdir lab3↵

3. Cambie el directorio actual hacia el directorio creado en el paso anterior usando el


comando cd de la siguiente manera:

talleres@localhost[talleres]# cd lab3↵

4. Ejecute el editor de texto kwrite en background, para crear un archivo de texto llamado
“datos.c”:

talleres@localhost[lab3]# kwrite datos.c &↵

5. Considere la rutina “mostrar_bytes”, la cual permite ver la representación interna de un


dato que ocupa “len” bytes a partir de la posición “start":
#include <stdio.h>
typedef unsigned char *byte_pointer;
{
void mostrar_bytes(byte_pointer start, int len)
{
int i;
for (i = 0; i < len; i++)
printf(" %.2x", start[i]);
printf("\n");
}

La misma puede ser utilizada para mostrar la representación de un entero con valor deci-
mal 15 de la siguiente forma:

main()
{
int val=15;
byte_pointer valp=(byte_pointer) &val;
mostrar_bytes(valp, 1);
mostrar_bytes(valp, 2);
mostrar_bytes(valp, 4);
}

¿Cuál debería ser la salida de este programa?

6. Transcriba el programa principal y la rutina “mostrar_bytes” al archivo datos.c. Compile y


ejecute el programa de la siguiente forma:

talleres@localhost[lab3]# gcc –o datos datos.c↵


talleres@localhost[lab3]# ./datos↵

¿Coincide con el resultado esperado? De existir alguna diferencia explique la causa. De


coincidir, explique en qué se basó para predecir el resultado.

7. Complete la siguiente tabla. Para ello repita el paso 6 sustituyendo la declaración del dato
“val” por cada una de las siguientes:

1 byte 2 bytes 4 bytes


int val= 0x12345678
int val = 0xFF000033
int val = -16
char val[4] = “OEC”
char val[4] = {0x10, 0x20, 0x30, 0x40}
int val[4] = {0x10, 0x20, 0x30, 0x40}
8. Implemente un programa que permita transformar un entero binario a su equivalente deci-
mal. El número será solicitado al usuario mediante scanf, mientras que la conversión debe
ser hecha con strtol.
9. Implemente el programa que será indicado por el preparador.
.
10. Cambie el directorio actual al directorio HOME del usuario talleres:

talleres@localhost[lab3]# cd↵

11. Elimine el directorio lab3 y todo su contenido, utilizando el comando rm:

talleres@localhost[talleres]# rm lab3 -Rf↵

12. Cierre la consola usando el comando exit de la siguiente manera:

talleres@localhost[talleres]# exit↵

Das könnte Ihnen auch gefallen