- El sistema binario: donde empieza todo
- Más sobre bits, bytes y binario
- Paso de decimal a binario
- Estructura selectiva multiple
- Estructura selectiva multiple usando rangos
El sistema binario: donde empieza todo
En el sistema binario, todos los números se representan por una condición "encendido/apagado". Veamos un ejemplo rápido de binario en términos fácilmente comprensibles.
Big Ed aprende binario
"Big Ed" Hackenbyte es propietario de "Big Ed"s", un restaurante que sirve comidas rápidas y cenas lentas en el área cercana a San José (California). En esta zona, conocida como Valle del Silicio, hay docenas de compañías que fabrican microprocesadores. Ed tiene ocho personas a su servicio: Zelda, Olive, Trudy, Thelma, Fern, Fran, Selma y Sidney. Debido a la despersonalización existente, tiene asignados números para la nómina. Los números asignados son:
Cuando Big Ed rellenó por primera vez el panel de llamadas, tenía ocho luces, una para cada persona del servicio, como puede verse en la figura 1.1. Un día, sin embargo, Bob Borrow, ingeniero de diseño de una compañía de microprocesadores conocida como Inlog, llamó a Ed. "Ed, podrías ser mucho más eficiente con tu panel de llamadas, ¿sabes? Puedo mostrarte cómo hemos diseñado el tablón con uno de nuestros microprocesadores."
Ed, interesado en la nueva tecnología, siguió su consejo. El nuevo diseño del tablón de anuncios se muestra en la figura 1.2. Tiene tres luces, controladas desde la cocina. Cuando se llama a alguien del servicio, suena un timbre; ¿cómo es posible llamar a alguna de las ocho personas del servicio por medio de combinaciones luminosas de las tres luces?
"¿Ves, Ed? Este panel es muy eficaz. Emplea cinco luces menos que tu primer panel. Hay ocho combinaciones diferentes de luces. En realidad les llamamos permutaciones, pues hay un orden definido en la disposición de las luces. He preparado una tabla de las permutaciones de las luces y la persona del servicio llamada." Dio a Ed la tabla mostrada en la figura 1.3.
Sólo hay ocho permutaciones diferentes de luces, Ed, ni más ni menos. Estas luces están ordenadas en forma binaria. Utilizamos el sistema binario en nuestros ordenadores por dos razones: primero, se ahorra espacio. Reducimos el número de luces de ocho a tres. Segundo, los ordenadores baratos sólo, pueden representar normalmente un estado encendido/apagado, igual que las luces están encendidas o apagadas." Hizo una pausa para dar un bocado a su "Big Edburger".
"Daré estos códigos a mis ayudantes para que los memoricen", dijo Ed. "Cada persona del servicio sólo tiene que memorizar su código, Ed. Te daré la clave, de forma que puedas descifrar qué persona del servicio es llamada, sin necesidad de la tabla.
¿Ves? Cada luz representa una potencia de dos. La luz de la derecha representa dos elevado a cero. La siguiente, dos elevado a uno, y la de más a la izquierda es dos elevado a dos. En realidad es muy parecido al sistema decimal, donde cada dígito representa una potencia de diez." Garabateó un ejemplo en el mantel, como muestra la figura 1.4.
"De la misma forma que podemos emplear las potencias de diez para números altos, podemos utilizar tantas potencias de dos como queramos. Podríamos usar treinta y dos luces, si quisiéramos. Entonces, para pasar las tres luces en binario a su equivalente en decimal, habría que sumar la potencia de dos correspondiente a cada luz encendida." Garabateó otra figura en el mantel (Fig. 1.5).
"Bueno, parece bastante sencillo", admitió Ed. "De derecha a izquierda, las luces representan 1, 2 y 4. Si tuviéramos más camareros y camareras, las luces representarían 1, 2, 4, 8, 16, 32, 64, 128…" Su voz dejó de oírse, al no ser capaz de decir la siguiente potencia de dos.
"Exacto, Ed. Frecuentemente, tenemos el equivalente a ocho o dieciséis luces en nuestros microprocesadores. No usamos luces, por supuesto; utilizamos semiconductores que están apagados o encendidos." Dibujó otra figura en el mantel, que por aquel entonces estaba lleno de diagramas (Fig. 1.6).
"Llamamos bit a cada una de las ocho o dieciséis posiciones. "Bit" es una contracción de dígito binario. Después de todo, eso es de lo que hemos estado hablando; los dígitos binarios forman números binarios, igual que los dígitos decimales forman números decimales. Tu panel representa un número de tres bits.
En 8 bits podemos representar cualquier número entre 0 y 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128. Sumando todos ellos, se obtiene 255, el mayor número que puede ser contenido en 8 bits."
"¿Qué ocurre con los 16 bits?", preguntó Ed.
"Te lo puedes imaginar", dijo Bob. "Tengo que volver al trabajo de diseñar microprocesadores." Ed confeccionó una lista con todas las potencias de dos hasta quince. Entonces, las sumó todas hasta llegar al resultado que muestra la figura 1.7, un total de 65,535 -el mayor número que pueden contener 16 bits.
"El asunto de los microprocesadores es fácil", dijo Ed con una mueca, mientras daba a su Big Ed"s Jumboburger un "mordisco"" de 8 bits.
Más sobre bits, bytes y binario
La explicación de Bob Borrow del binario condensa muy bien la representación binaria de los microordenadores. La unidad básica es un bit o dígito binario. Un bit puede estar encendido o apagado. Porque es mucho más fácil escribir 0 ó 1, estos dígitos se usan en lugar de encendido/apagado cuando representamos valores binarios.
La posición del bit del número binario se refiere a la posición del dígito en el número. La posición del bit en la mayoría de los microordenadores tiene un número asociado, como se muestra en la figura 1.8. Puesto que éstas, en realidad, representan una potencia de dos, es conveniente numerarlas de acuerdo con la potencia de dos representada. El bit de más a la derecha es dos elevado a cero, y la posición del bit es, por tanto, cero. Las posiciones del bit hacia la izquierda se numeran 1 (dos elevado a uno), 2 (dos elevado a dos), 3, 4, 5, etc.
En todos los microordenadores actuales, un grupo de ocho bits se denomina un byte. De alguna manera, es obvio el origen de esta palabra si nos imaginamos a los primeros ingenieros informáticos comiendo en el equivalente de "Big Ed"s" 2.
La memoria de un microordenador viene a menudo indicada por el número de bytes de que consta.
Cada byte corresponde aproximadamente a un carácter, como veremos en capítulos posteriores. Las operaciones de entrada y salida de la memoria se hacen generalmente de un byte cada vez.
Los registros en el interior de un microprocesador tienen también la extensión de uno o dos bytes. Estos, en realidad, no son más que posiciones de memoria de acceso rápido que se utilizan para almacenamiento temporal en el microprocesador. Normalmente hay diez bytes de registros en los microprocesadores y hasta 65,535 bytes en la memoria de un microordenador, como ilustran las figuras 1.9 y 1.10
.
¿Hay otras agrupaciones por encima o por debajo de los bytes? Algunos microordenadores hablan de palabras, que pueden ser dos o más bytes, pero, generalmente, byte es el término más utilizado para nombrar un grupo de bits. Algunas veces, las agrupaciones de cuatro bits se denominan nibble3 (los primeros ingenieros informáticos debían estar obsesionados con la comida).
El BASIC, generalmente, opera con ocho o dieciséis bits de datos a la vez -uno o dos bytes-. Un byte se utiliza para las instrucciones PEEK o POKE del BASIC, que permiten al usuario leer o escribir datos en una posición de memoria. Esto es útil cuando se usan para cambiar algunos de los parámetros del sistema que, de otra manera, serían inaccesibles desde el BASIC.
Se utilizan dos bytes para representar variables enteras. En este tipo de formato, una variable del BASIC puede contener valores desde -32,768 hasta +32,767. Este número se almacena como un valor entero con signo, como veremos en el capítulo 3.
Si está interesado en el lenguaje ensamblador de su microordenador, tendrá que operar con bytes para realizar operaciones aritméticas, como suma y resta, y de uno a cuatro bytes para representar el lenguaje máquina correspondiente a la instrucción del microprocesador.
Ya que nos referiremos continuamente a valores de uno y dos bytes, vamos a investigar sobre ellos más a fondo.
Paso de binario a decimal
Big Ed encontró los valores máximos que podían ser almacenados en uno o dos bytes, sumando todas las potencias de dos. Eran 255 para un byte y 65,535 para dos bytes. Cualquier número entre ellos puede ser representado empleando los bits apropiados.
Supongamos que tenemos el valor binario de 16 bits 0000101001011101. Para encontrar el número decimal de este valor binario, podríamos utilizar el método de Big Ed de sumar las potencias de dos. Esto se ha hecho en la figura 1.11, donde obtenemos como resultado 2653. ¿Hay alguna forma más sencilla de pasar de binario a decimal? Sí, hay varias.
El primer procedimiento consiste en usar una tabla de valores. Hemos incluido una tabla de este tipo en el apéndice C, que muestra la relación entre los sistemas binarios, octal, decimal y hexadecimal para valores hasta 1023. Como para mostrar valores hasta 65,535 con 16 bits se necesita bastante espacio, tiene que existir un procedimiento más adecuado.
Un método que funciona sorprendentemente bien es el llamado "doblar y sumar". Después de un poco de práctica, resulta muy fácil pasar unos diez bits de binario a decimal. En el siguiente capítulo se muestra un método que sirve para dieciséis o más bits. Doblar y sumar es un procedimiento estrictamente mecánico, que automatiza el proceso de conversión. Es más difícil describirlo que hacerlo. Para utilizarlo, haga lo siguiente:
1. Tome el primer 1 (más a la izquierda) del número binario.
2. Multiplique el 1 por dos y sume el siguiente bit de la derecha, sea 0 ó 1.
3. Multiplique el resultado por dos y sume este resultado al siguiente bit.
4. Repita este proceso hasta que el último dígito haya sido sumado al total.
El resultado es el número decimal equivalente al número binario
Este procedimiento se muestra en la figura 1.12 para la cantidad 2653 utilizada en el ejemplo anterior. Después de haber estado operando con números binarios durante algún tiempo, es probable que reconozca 1111 como el decimal 15 y 111 ll como 31. Puede emplear también pequeños trucos, como darse cuenta que 11110 es uno menos que 31; o que 101000 es también 1010 = 10 (en decimal) multiplicado por cuatro para obtener un valor de 40. Por el momento, sin embargo, haga unos pocos ejemplos para acostumbrarse al procedimiento; con el tiempo lo hará automáticamente, y probablemente no vale la pena malgastar el tiempo en convertirse en experto en el sistema binario.
¿Cómo se hace a la inversa? Es un proceso diferente. Supongamos que tenemos que pasar el número decimal 250 a binario. Analizaremos varios métodos.
El primer método es el de "inspección de potencias de dos". Podría denominarse también resta sucesiva de potencias de dos, pero tal vez a Big Ed no le gustaría el nombre. En este método, todo lo que hacemos es tratar de restar una potencia de dos y poner un 1 en la posición del bit correcta, si se puede (véase Fig. 1.13). Algunas potencias de dos son: 256, 128, 64, 32, 16, 8, 4, 2, 1, comenzando por las mayores. Es obvio que 256 no se podrá restar, luego pondremos un 0 en esa posición. La potencia 128 vale, quedando 122. Ponemos un 1 en la posición 7. La potencia 64 se resta a 122, quedando 58; luego ponemos un 1 en la posición 6. Este proceso se repite hasta calcular la última posición, como muestra la figura 1.13.
El método anterior es muy aburrido. ¿Hay uno mejor? Uno más eficaz es el llamado "dividir por dos y guardar los restos". En este método se hace lo que indica el nombre; esto se explica en la figura 1.14. La primera división es 250 entre dos, resultando 125. Resto 0. La siguiente división es 125 entre dos, dando 62 y quedando 1. El proceso se repite hasta que el "residuo" es 0. Ahora, los restos se colocan en orden inverso. El resultado es el número binario equivalente al decimal.
Rellenar a ceros hasta ocho o dieciséis bits
Este es un punto no carente de importancia. Las posiciones de la izquierda se rellenan con ceros. Esto es una refinada sutileza que se emplea para "completar con ceros" el número binario hasta ocho o dieciséis bits, según el tamaño con el que se esté operando. Tiene, sin embargo, implicación en los números con signo, luego es mejor empezar a manejarlos en la práctica cuanto antes. En el capítulo siguiente trataremos la notación de los números octales y hexadecimales. Mientras tanto, intente hacer algunos ejercicios de autoevaluación para practicar el paso entre números decimales y binarios.
Ejercicios
1. Hacer una lista de los equivalentes binarios de los números decimales 20 a 32.
20:
a) 10100 b) 100110 c) 11101 d) 101010
21:
a) 11001 b) 10101 c) 11111 d) 100001
22:
a) 11100 b) 001001 c) 10110 d) 1000111
23:
a) 11010 b) 00101 c) 1000 d) 10111
24:
a) 11000 b) 01001 c) 10010 d) 1100
25:
a) 11010 b) 0001 c) 11001 d) 1110
26:
a) 100010 b) 0001 c) 11010 d) 110001
27:
a) 0010 b) 11011 c) 0010 d) 1010101
28:
a) 11100 b) 010101 c) 00010 d) 1011101
29:
a) 101000 b) 0001 c) 10010 d) 11101
30:
a) 11110 b) 00110 c) 111111 d) 001
31:
a) 01101 b) 11001 c) 0010101 d) 11111
32:
a) 100000 b) 000001 c) 0101111 d) 1111001
2. Pasar los siguientes números binarios a sus equivalentes decimales: 00110101; 00010000; 01010101; ll 110000; 0011011101101001.
00110101:
a) 53 b) 45 c) 35 d) 23
00010000:
a) 12 b) 22 c) 16 d) 9
01010101:
a) 30 b) 85 c) 59 d) 80
110000:
a) 95 b)72 c) 30 d) 48
0011011101101001:
a) 854212 b) 54612 c)1265 d) 14185
3. Pasar los siguientes números decimales a su forma binaria: 15, 26, 52, 105, 255, 60000.
15:
a) 0100 b) 1111 c) 11110 d) 10101
26:
a) 11010 b) 00010 c) 100000 d) 0100111
52:
a) 0011 b) 00001 c) 1101001 d) 01110
105:
a) 111111 b) 1001111 c) 111 d) 1101001
255:
a) 011011 b) 011001 c) 1101101 d) 11111111
60000:
a) 1110101001100000 b) 1111100110000 c) 101010101010
d) 0001111000000111 e) 11000000111111
4. "Rellenar a ceros" los siguientes números binarios hasta ocho bits: 101; 110101; 010101.
Permite comparar un valor con diversas alternativas; si la comparación se cumple, se ejecuta el grupo de instrucción que contenga la alternativa selecciona y, luego, sale de la estructura. Si la comparación no se cumple, se ejecuta la alternativa por defecto.
DIAGRAMA DE FLUJO:
Estructura selectiva multiple usando rangos
Cuando se requiere manejar rangos (>= y , no es divisible con el primer número, entonces devolver como resultado >.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
4. Dada una letra, determinar si es una vocal.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
5. Al ingresar un número de un mes, devolver la estación del año de acuerdo a la siguiente tabla.
Número | Estación |
1,2,3 | Verano |
4,5,6 | Otoño |
7,8,9 | Invierno |
10,11,12 | Primavera |
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
6. Dado la nota promedio de un alumno, obtener la categoría, según la siguiente tabla.
Promedio | Categoría |
Entre 0 y 5 | Pésimo |
Entre 6 y 10 | Malo |
Entre 11 y 14 | Regular |
Entre 15 y 17 | Bueno |
Entre 18 y 20 | Excelente |
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
7. Al ingresar el día y el número de un mes, devolver la estación del año de acuerdo a la siguiente tabla.
Estación | Tiempo | |
Verano | Del 21 de diciembre al 20 de marzo | |
Otoño | Del 21 de marzo al 21 de junio | |
Invierno | Del 22 de junio al 22 de septiembre | |
Primavera | Del 23 de septiembre al 20 de diciembre |
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
8. En una universidad se ha establecido los siguientes puntajes de ingreso para sus respectivas facultades.
Facultad | Puntaje mínimo |
Sistemas | 100 |
Electrónica | 90 |
Industrial | 80 |
Administración | 70 |
De acuerdo al puntaje obtenido por un postulante, determinar la facultad a la cual ingreso o dar un mensaje correspondiente para el caso que no ingrese.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
9. Determine el importe a pagar para el examen de admisión de una universidad, cuyo valor depende del nivel socioeconómico y el colegio de procedencia.
Nivel social | ||||
Colegio | A | B | C | |
Nacional | 300 | 200 | 100 | |
Particular | 400 | 300 | 200 |
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
10. Dado el número del mes y el año (cuatro dígitos) de una fecha, determinar en letras que mes es y cuantos días tiene. Considerar que febrero tiene 28 o 29 días si es año bisiesto, un año es bisiesto si es múltiplo de 4, pero no de 100, y si de 400.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
11. Una empresa ha establecido diferentes precios para sus productos, según la calidad.
Calidad Producto | 1 | 2 | 3 | |
1 | 5000 | 4500 | 4000 | |
2 | 4500 | 4000 | 3500 | |
3 | 4000 | 3500 | 3000 |
Cree un programa que devuelva el precio a pagar por un producto y una calidad dada.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
12. Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de tres dados en base a la cantidad de seis obtenidos, de acuerdo a lo siguiente:
Tres seis: Oro
Dos seis: Plata
Un seis: Bronce
Ningún seis: Perdió
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
13. Dado el día, mes y año, determine si es una fecha correcta, considere los años bisiestos.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
14. Dada una fecha valida, halle la fecha del siguiente día.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
15. Convierta a números romanos, números menores a 4000.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
PROBLEMAS PROPUESTOS:
1. Dado el número de un mes, devolver el mes en letras
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
2. Lea un número de 1 al 7 y devuelva el día de la semana, considere que 1 es domingo.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
3. Dados los siguientes operadores matemáticos (+, -, * y /), devuelva el nombre del operador.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
4. Dado el número de un canal de televisión, determine cuál es el nombre del canal.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
SEXO TARJETA | HOMBRES | MUJERES |
OBRERO | 15% | 10% |
EMPLEADO | 20% | 15% |
Determine mediante un programa, cuál será el monto del descuento al sueldo ingresado de un trabajador.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
6. Una frutería ofrece las manzanas con descuento, según la siguiente tabla:
KILOS | % DESCUENTO |
0 – 2 | 0% |
2.01 – 5 | 10% |
5.01 – 10 | 20% |
Mayor a 10 | 30% |
Determinar cuánto pagara una persona que compre manzanas en esa frutería.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
7. Obtenga el nombre del estado civil según la siguiente tabla.
CODIGO | ESTADO CIVIL |
0 | Soltero |
1 | Casado |
2 | Divorciado |
3 | Viudo |
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
8. Determinar el monto que recibirá un trabajador por utilidades, después de ingresar el tiempo de servicio y el cargo, según la siguiente tabla.
CARGOTIEMPO DE SERVICIO | ADMINISTRADOR | CONTADOR | EMPLEADO | |
Entre 0 y 2 años | 2000 | 1500 | 1000 | |
Entre 3 y 5 años | 2500 | 2000 | 1500 | |
Entre 6 y 8 años | 3000 | 2500 | 2000 | |
Mayor a 8 años | 4000 | 3500 | 1500 |
- PSeint:
- Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
9. Según la siguiente tabla, obtener la ciudad que visitara, después de ingresar su sexo y el puntaje obtenido según su examen.
SEXO PUNTAJE | MASCULINO | FEMENINO |
Entre 18 y 35 | Arequipa | Cuzco |
Entre 36 y 75 | Cuzco | Iquitos |
Mayor a 75 | Iquitos | Arequipa |
- PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
10. Dada una fecha determine cuantos días faltan para que acabe el año.
PSeint:
Flow Chart:
Diagrama Nassi-Shneiderman:
Java NetBeans:
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO "ARGENTINA"
UNIDAD DIDÁCTICA:
Lógica de Programación
DOCENTE:
Sanz Signori, Luis Eduardo
CARRERA:
Computación e Informática
CICLO Y SECCIÓN:
III – B
2017
Autor:
Díaz Ramírez, Kassandra.
Solorzano Chauca, Julio Cesar.
Llanos Ramírez, Gina.
Bautista Chavez, Agustin Elias.
Veramendi Aquije Rosalinda Kimberly.