Sie sind auf Seite 1von 28

Ejercicio desarrollado:

Estructuras selectivas y repetitivas


Enunciado
Desarrollar un programa que permita lo
siguiente:
- Leer un valor entero positivo.
- Mostrar la trama binaria que
representa dicho valor.
- Mostrar la trama en formato
Hexadecimal.
- Por cada 1 encontrado en la trama
se generará un valor aleatorio
entero en el rango [-10,10].
- Mostrar la suma de todos los valores
aleatorios generados.
Solución

Primero identifiquemos la entrada(s)


y salida(s) de nuestra solución
Entrada:
- Número entero positivo Nuestro programa necesitará
este dato para obtener las
salidas deseadas

Salidas:
- Trama en formato binario
- Trama en formato Hexadecimal
- Suma de números aleatorios generados
Trama en formato binario
Número entero positivo
? Trama en formato Hexadecimal
Suma de números aleatorios generados

¿Qué procedimiento(s), acciones u operaciones hay que


realizar con el dato de entrada para obtener los datos de
salida?
Respuesta:
 Para mostrar la Trama en formato binario se deberá utilizar una técnica que permita conseguir cada
uno de los bits del Número entero positivo e ir mostrándolos uno por uno en la pantalla
Ejemplo:
Si el Número entero positivo es 4758 La Trama en formato binario sería:

31 30 29 ……………….……………………………………………… ……………... 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0

Recuerde que son 32 bits debido a que un dato de tipo


entero ocupa 4 bytes en memoria

Cada bit se irá consiguiendo desde la posición 31 hasta la posición 0 y se irá mostrando en pantalla

La técnica a utilizar será la del deslazamiento de bits y la operación lógica AND vista en la
segunda sesión presencial de la semana-02
 Para mostrar la Trama en formato Hexadecimal se deberá utilizar una técnica que permita convertir el
Número entero positivo a una secuencia de caracteres dependiendo de su secuencia de bits.

Ejemplo:
Si el Número entero positivo es 4758 La Trama en formato binario sería:

31 30 29 ……………….……………………………………………… ……………... 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0

Y la Trama en formato Hexadecimal sería 1596 (4 caracteres)


 Para calcular la suma de números aleatorios generados, cada bit conseguido del Número entero positivo
será evaluado uno por uno, en caso se encuentre un bit con valor 1, se generará un número aleatorio en el
rango [-10,10] ,dicho número se irá sumando con los otros números generados obteniéndose la suma
deseada.
Ejemplo:
Si la Trama en formato binario es:
31 30 29 ……………….……………………………………………… ……………... 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0

valor aleatorio -7
Para saber como se valor aleatorio -10
generan números
aleatorios en C, diríjase valor aleatorio 9
al aula virtual Semana
3-Actividades en Línea –
valor aleatorio 0
Como generar Números valor aleatorio 9
Aleatorios en C
valor aleatorio 5

La Suma de números aleatorios generados sería: -7 + -10 + 9 + 0 + 9 + 5


Diseño del ALGORITMO de nuestro
programa
Variables que usará nuestro algoritmo

Identificador de la variable Tipo Descripción

Permitirá almacenar el valor del número


tramaInt entero
entero que será leído por el programa
Permitirá almacenar el valor de cada uno de
bit entero
los bits que se irán consiguiendo de tramaInt
Permitirá almacenar la suma de los números
suma entero
aleatorios generados
Diseño del diagrama de flujo de nuestro programa

INICIO Inicio del programa


Permite validar que el
dato leido no sea negativo
suma=0 Iniciar variable suma en cero

tramaInt Leer dato de entrada

“Volver a ingresar
valor”

Mostrar V tramaInt < 0 ? Evaluar condición para validar lectura


mensaje

1
1

i = 31 Iniciar variable i en 31

F V
2 i >= 0 ?

Desplazar i bits de tramaInt


bit = DESPLAZABITSDERECHA(tramaInt,i) AND 1 a la derecha y aplicar AND
con 1, el resultado asígnalo
a la vble. bit

Genera aleatorio bit Muestra el valor de bit


Consigue los bits de
tramaInt desde la posición entre [-10,10],
acumula suma
31 hasta la 0 y los muestra y decrementa i
en pantalla. V F
bit=1 ?
Evalua que bit tiene valor 1
para generar los aleatorios
y acumular la suma. suma = suma + ALEATORIO(-10,10)
i=i-1
2

Convierte tramaInt a
CONVIERTEHEXA(tramaiInt) Hexadecimal y
muestra el resultado
Se muestra la trama en
formato Hexadecimal y
luego la suma de números suma Muestra el valor de suma
aleatorios generados

FIN Fin del programa


Codificación del programa en LENGUAJE C,
tomando como referencia el diagrama de
flujo implementado
Código completo de nuestro programa realizado en Visual Studio c++

PARTE 1
PARTE 2
Resultado de ejecutar nuestro programa para tramaInt = 4758:

Importante:
Si desea reforzar los pasos para la creación, configuración y ejecución de un proyecto en Visual Studio C++ dirígase
al aula virtual (Semana-01): Como crear un proyecto en Visual Studio C++ paso a paso
Se procederá a explicar cada una de las
sentencias mas importantes de nuestro
programa
Se activa la semilla para la generación de números aleatorios.
No olvidar colocar las librerías <time.h> y <stdlib.h> en la zona de
encabezado

Se declaran las variables tramaInt (Número entero positivo),


bit (para mostrar cada bit de la trama binaria) y suma
(Suma de los números aleatorios generados), suma se
inicializa en 0
Se lee el valor del número entero
positivo que representa a la trama
en formato binario

Si el valor de tramaInt es menor a


cero se imprime un mensaje

Mientras el valor de tramaInt sea


negativo vuelve a repetir lectura
Se imprime un mensaje indicando que
se va a mostrar la trama en formato
binario

Indica que se va a repetir un proceso, para i=31,30,29,………1,0; con el propósito de


referenciar la posición de cada uno de los 32 bits de la trama binaria.

Se usa la abreviatura i-- para i = i - 1


Ahora se procederá a explicar cada una de las sentencias que se ejecutan dentro del for:

Se desplazan “i” bits de


tramaInt a la derecha y al
resultado se aplica la operación
AND con 1 para así conseguir el
Operador de desplazamiento bit de la posición “i” . El valor
de bits a la derecha de dicho bit se almacena en la
Operador lógico para aplicar
la operación binaria AND variable bit

Se muestra el valor de cada bit extraído. Al terminar el for, los


32 bits de la trama binaria se mostraran en la pantalla
Si el valor de bit es uno, se
genera un número aleatorio
en el rango [-10,10], y se
acumula la suma

Se ha utilizado la función rand para generar


un valor aleatorio en el rango [-10,10].
No olvidar colocar la librería <stdlib.h> en la
zona de encabezado

Para acumular la suma también se podría haber utilizado


una abreviatura:

suma+ = rand()%(10 + (-10)+1) + (-10)


Estando fuera del for, se procederá a explicar las últimas sentencias de nuestro programa:

Se muestra el valor de
tramaInt en formato
Hexadecimal
Se ha utilizado el
especificador de formato %X
Para tener referencia sobres las tablas indicadas, (Ver tabla 2), para mostrar el
dirigirse al aula virtual Semana-01-Actividades en valor de tramaInt en
Línea- DOCUMENTACIÓN-LENGUAJE C Hexadecimal.

Se muestra el valor de la
suma de los números
aleatorios generados
No olvides que…

 Es importante identificar la entrada(s) y salida(s) que tendrá


nuestro programa.
 Resolver un problema de programación no sólo involucra saber la
sintáxis del lenguaje C, sino también tener conocimientos de otras
materias.
 Para resolver el problema se han usado estructuras de control
selectiva y repetitivas.
 También se pueden utilizar variables auxiliares en nuestro
algoritmo.
Reflexiona un momento

• ¿Crees que es la única manera de resolver el problema?.


• ¿Crees que el uso del for en nuestro programa pudo haber sido
reemplazado por el while?
Preguntas…
Si, luego del estudio de este
material, tiene alguna duda
ingresa al Aula Virtual y participa
en el foro de discusión de la
unidad.
Continúa con las actividades
propuestas en la sesión.

Material producido para el curso de Programación de Computadoras


Autor: Juan Puerta Arce
Diseño y producción: TICE

Programación de Computadoras- PREGRADO


COPYRIGHT © UPC 2014

Das könnte Ihnen auch gefallen