miércoles

Seguridad en redes


Sniffer
A diferencia de los circuitos telefónicos, las redes de computadoras son canales de comunicación compartidos. El compartir, significa que las computadoras pueden recibir información proveniente de otras maquinas. Al capturar la información que viene de otra parte de la red se le llama "sniffing".
Las mas popular manera de conectar computadoras es a través del Ethernet. El cableado Ethernet trabaja por el envío de paquetes de información por todos los nodos de la red. El paquete contiene en su cabecera la dirección de la maquina destino. Solo la maquina que contenga dicha dirección podrá aceptar el paquete. Una maquina que acepte todos los paquetes sin importar los que contenga la cabecera, se dice que esta en estado promiscuo.
Un sniffer es un programa de para monitorear y analizar el trafico en una red de computadoras, detectando los cuellos de botellas y problemas que existan en ella.
Un sniffer puede ser utilizado para "captar", lícitamente o no, los datos que son transmitidos en la red. Un ruteador lee cada paquete de datos que pasa por el, determina de manera intencional el destino del paquete dentro de la red. Un ruteador y un sniffer, pueden leer los datos dentro del paquete así como la dirección de destino.
¿En que son utilizados los sniffer?
El "sniffing" es la forma mas popular de atacar usada por los hackers. Un sniffer en especial, llamado "Esniff.c", es muy pequeño, esta diseñado para trabajar sobre "SunOS", y solamente captura los primeros 300 bytes de todo telnet, ftp y proceso de inicio de sesión. Esto fue publicado en Phrack, una de las revistas semanales más leídas publicada de manera gratuita disponible en el bajo mundo de las revistas para hackers. Se puede obtener el Phrack en muchos sitios FTP.



lunes

Ejercicios

Condicionales


1.       Calcular el valor del peaje a pagar por un vehículo en la vía Ibagué - Alvarado. Los automóviles pagan un valor de $3500; los camiones pagan $5000; los buses pagan de acuerdo a su capacidad de pasajeros y se cobra $200 por pasajero. El tiquete de cobro del peaje a generar debe contener: Nombre del tipo de vehículo, Nro. de pasajeros y valor del peaje.
2.       En cierto país llamado "IVALANDIA" el impuesto que se debe pagar por los artículos se calcula mediante los siguientes criterios: Los primeros $100 no causan impuesto; los siguientes $100 tienen el 30% de impuesto y el resto el 40% de impuesto, pero si el costo del producto es mayor a $1000, entonces no se cobra el 40%, sino el 50%. Determinar y visualizar en la pantalla: a) El nombre y costo básico del artículo, b) valor del impuesto, y c) valor total a pagar.
3.       En la Universidad de Ibagué, los estudiantes de Programación tienen que presentar 6 pruebas de conocimiento para evaluar la asignatura. Una prueba se gana con una nota mínima de 3.0. Determinar si un estudiante aprobó o no la asignatura. El alumno aprueba la asignatura si cumple con cualquiera de las siguientes condiciones: a) Si tiene mínimo 3 pruebas con nota superior a 3.5 b) Si el promedio de las notas de las 6 pruebas es mínimo 3.0 c) Si el promedio de las notas de las pruebas perdidas es superior a 2.5.
4.       Leer la fecha de nacimiento de una persona (día, mes y año) y calcular su edad actual. Determinar si es mayor de edad.
5.       La cooperativa de ahorro y crédito "COOPRESTA" establece las siguientes condiciones para determinar el valor máximo a prestar por cada línea de crédito: a) Para las líneas de crédito de Educación, Vacaciones y Calamidad doméstica se presta un máximo de 3 veces el valor del ahorro del socio. b) Para la línea de Vehículo se presta un máximo de 5 veces el valor del ahorro del socio. c) Para la línea de Vivienda se presta un máximo de 7 veces el valor del ahorro del socio. Calcular el valor máximo a prestarle a un socio.
6.       Un taxista trabaja en la empresa "PengüiTAXI" en la cual le asignan 3 rutas: Ruta A con un valor de $3000, Ruta B con valor $5000 y Ruta C con valor $7000. Además, debe cobrar un recargo de $500 si está trabajando entre las 20:00 y las 05:00. Si es festivo, hay un recargo de $100. ¿Cuánto debe pagar un usuario que tome el servicio?
7.       Determinar el precio del pasaje de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y sabiendo que si el número de días de estancia en la ciudad de destino es superior a 7 y la distancia superior a 800 Km, el tiquete tiene una reducción del 30%. Se debe leer el precio por kilómetro.
8.       Calcular la tangente de un ángulo, considerando que se leen el valor del seno y del coseno.
9.       Calcular la cotangente del mismo ángulo.
10.   Dados dos números enteros, determinar si un número es divisor del otro.
11.   Dados tres números enteros positivos, que representan las longitudes de los lados de un probable triángulo, determinar si los datos corresponden a un triángulo. En caso de que sí correspondan, escriba si el triángulo es equilátero.
12.   Determinar e imprimir si un número entero X es positivo, negativo o cero.
13.   Dados como datos los valores enteros P y Q, determine si los mismos satisfacen la siguiente expresión: P^4 + Q² - 2P < 977. En caso afirmativo debe imprimir los valores de P y Q.
14.   Calcular las raíces reales, de ser posible, de una ecuación de segundo grado: (ax² + bx + c = 0)
15.   Dados los datos A, B y C, que representan números enteros diferentes, imprimir estos números en forma descendente.
16.   Determinar si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo, 1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también múltiplos de 400 (2000 es bisiesto, 1800 no lo es).
17.   Determinar e imprimir si un número entero X es par, impar o nulo.
18.   Leer por teclado tres números enteros y emitir un mensaje que indique si están o no en orden numérico.
19.   Examinar el valor de una variable de coma flotante llamada HORA y visualizar distintos mensajes a diferentes horas del día: a) "Buenos dias", b) "Buenas tardes", c) "Buenas noches".
20.   Examinar el valor de una variable de coma flotante llamada TEMP y visualizar uno de los siguientes mensajes: a) "Hielo", si el valor de TEMP es menor que 0, b) "Agua", si el valor de TEMP se encuentra entre 0 y 100, c) "Vapor", si el valor de TEMP es mayor que 100.
21.   Hallar la solución de una ecuación de la forma: ax + b = 0.
22.   Calcular e imprimir el área de un círculo, rectángulo o triángulo. Utilice una escalera if-else-if.
23.   En el almacén "Don Pingüino" se realiza descuento en las compras en función del valor total de dichas compras. Si se paga con tarjeta de crédito, el descuento en las compras se disminuye un 5%. Calcular el impuesto del IVA e imprimir el valor a cobrar al cliente en función de las siguientes premisas: a) Valor < $40000: sin descuento, b) Valor comprendido entre $40000 y $80000: descuento del 10%, c) Valor superior a $80000: descuento del 14%.
24.   Leer los tres lados de una figura y determinar si es un triángulo. En caso afirmativo, calcular e imprimir el área según sus lados.
25.   Leer por teclado tres números diferentes y determinar cuál es el número mayor.
26.   El costo de las llamadas internacionales depende de la zona geográfica en la que se encuentre el país destino, y del número de minutos hablados. En la siguiente tabla se presenta el costo por minuto en cada zona, a la cual se le ha asociado un código o clave.
CLAVE
ZONA
PRECIO
12
América del Norte
2
14
América Central
2.2
17
América del Sur
4.6
18
Europa
3.7
22
Asia
6
25
Africa
6
27
Oceanía
5
Escriba un programa para calcular e imprimir el costo total de una llamada.
27.   Dados como datos dos variables de tipo entero, obtener el resultado de la siguiente función:
VAL =
100*V
si NUM=1
100^V
si NUM=2
100/V
si NUM=3
0
para cualquier otro valor de NUM


Secuenciales


1.       Calcular el IVA y el valor a pagar por el cliente en la venta de x cantidad de un producto cualquiera. Calcular e imprimir también el cambio que se le debe entregar al cliente.
2.       Si un poste de alumbrado público, de 14 m de altura, proyecta una sombra de 7 m, ¿cuál será la sombra proyectada por una persona?
3.       Leer la velocidad media en Km por hora de un vehículo que viaja de Ibagué a Cali. ¿Cuántos metros puede recorrer en 5 horas?
4.       Escriba un programa para liquidar el servicio de teléfono según las pulsaciones registradas por uso del servicio en la empresa "PengüiTel". El programa debe mostrar el número del teléfono, la cantidad de pulsaciones, tarifa por pulsación y el valor a pagar por el servicio.
5.       La distancia de la Tierra a la Luna es de aproximadamente 380 Megámetros. Calcular y visualizar esta distancia en Kilómetros y luego en metros.
6.       El monte Elbruz en la cordillera del Cáucaso, entre los mares Negro y Caspio, tiene 5 Km, 6 Hm y 4 Dm de altura. Y el Kilimanjaro, en Tanzania, es el monte más alto de Africa con 5 Km, 8 Hm y 9 Dm de altura. ¿Cuántos metros es un monte más alto que el otro?
7.       Un frasco de champú 'María Salomé' con una capacidad de 750 cm³ cuesta N pe$os. ¿Cuánto costará un frasco del mismo champú pero con una capacidad de un litro?
8.       La gran pirámide de Egipto está compuesta por 2 300 000 bloques de piedra, cada uno con una masa promedio de 2.5 megagramos o toneladas (1 Megagramo equivale a 10^6 gramos). ¿Cuál es la masa total de la pirámide?
9.       ¿Cuántas horas hay en 72000 segundos?
10.   En N días 5 programadores desarrollan una aplicación. ¿En cuántos días podrían desarrollar el mismo software 8 programadores?
11.   Un buque de la Armada, de N marineros, tiene víveres para 2 meses. Si queremos que los víveres duren 10 días más, ¿cuántos marineros habría que dejar en la base naval?
12.   Doce empleados de un juzgado digitan 240 páginas trabajando N horas diarias. ¿Cuántas páginas pueden digitar diariamente dieciséis empleados si trabajan el doble del tiempo en condiciones semejantes?
13.   Un estudiante dejó sin responder 3 preguntas de un examen. Si obtuvo una calificación de 85 sobre 100, ¿cuál fue el número de preguntas del examen?
14.   Un comerciante compra CD's a N pe$os. ¿A qué precio debe venderlos para ganar el 20% del costo?
15.   Andrés le presta a Nancy la suma de N pe$os al 8% anual. Calcular el interés y el capital final que debe pagar ella al cabo de 2 años.
16.   ¿Qué capital tendrá que ahorrar una persona en el banco, al 30% anual, para que produzca $24000 en 2 años?
17.   Calcular e imprimir la distancia entre dos puntos P1 y P2.
18.   Calcular e imprimir el número de segundos que hay en un determinado número de dias.
19.   Leer por teclado el radio y la altura de un cilindro y calcular e imprimir el área y su volumen.
20.   Leer el radio de una esfera y calcular e imprimir el área y su volumen.
21.   El 'viejo Patiño' compró un terreno en Argentina. La extensión del terreno está especificada en Acres. Leer la extensión del campo en Acres y calcular e imprimir su extensión en Hectáreas. (1 Acre = 4047 metros cuadrados. 1 Hectárea = 10000 metros cuadrados).
22.   Leer la cédula, nombre, sexo, horas trabajadas y valor de la hora de un trabajador y deducir e imprimir su salario neto aplicando una bonificación del 4% y un aporte del 7% a la EPS.
23.   Convertir una cantidad de pulgadas a centímetros. Imprimir los dos valores.
24.   Leer por teclado tres números enteros y calcular e imprimir: a) Su producto, b) Resta, c) División cociente del primero por el segundo, d) División residuo del primero por el tercero, e) la sumatoria de los tres números elevada al cubo, f) raíz cuadrada del segundo y g) la media aritmética de los tres números.
25.   Leer la longitud de los catetos de un triángulo rectángulo y determinar e imprimir su hipotenusa.
26.   Don David es el dueño de una Casa de Cambio y necesita un programa que permita leer por teclado una cantidad expresada en dólares y convertir e imprimir esa cantidad en pesos colombianos.
27.   En una copa hay 8 onzas. Convertir una cantidad de onzas en copas e imprimir los dos valores.
28.   El número de sonidos emitidos por un grillo en un minuto, es una función de la temperatura. Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un grillito como termómetro. La fórmula para la función es: T = N/4 + 40, donde T representa la temperatura en grados Fahrenheit y N, el número de sonidos emitidos por minuto. Calcular e imprimir la temperatura en grados Celsius, teniendo en cuenta el número de sonidos emitidos por el grillo.
29.   Leer una cantidad entera de segundos y determinar e imprimir su equivalente en minutos y segundos. Por ej: 90 segundos equivalen a 1 minuto y 30 segundos.
30.   Leer por teclado las tres notas de un alumno de programación y calcular e imprimir su definitiva correspondiente al primer 60%. Los porcentajes de las notas son 15, 20 y 25, respectivamente.
31.   En las olimpiadas de invierno el tiempo que realizan los participantes en la competencia de velocidad en pista, se mide en minutos, segundos y centésimas. La distancia que recorren, por otra parte, se expresa en metros. Codifique un programa que calcule e imprima la velocidad de los participantes, en kilómetros por hora, de las diferentes competencias.
32.   Dado el radio, la generatriz y la altura de un cono, calcule e imprima el área de la base, el área lateral, el área total y su volumen.
33.   Leer por teclado los datos A, B, C y D que representan números enteros y calcular e imprimir el resultado de las siguientes expresiones: (A-C)^ 4 / D² y (B-D)^ 5 / A³.
34.   Escriba un programa que acepte por teclado un número de cinco dígitos, los separe y los imprima dejando tres espacios entre ellos (utilice los operadores división y módulo). Por ej., si el usuario teclea 27518, el programa debe imprimir 2 7 5 1 8

35.   El negocio de comidas rápidas "Don Pincho" tiene el siguiente menú:
Hamburguesa $2500
Pincho de pollo $2000
Choriperro $1500
Arepa mixta $1100
Arepa de huevo $800
Consomé (de 'Águila') $1000
Jugos $700
Escriba un programa que calcule e imprima el valor total de las ventas al final del día. Imprimir también el impuesto a pagar (% del IVA).

viernes

Ejercicio de trabajo en grupo – Metodología por proyectos - RUP

Ejercicio de trabajo en grupo – Metodología por proyectos  -  RUP

1. En una calle hay cinco casas, pintadas de diferentes colores, en una fila de izquierda a derecha. 
2. En cada casa vive una persona de diferente nacionalidad. 
3. Los dueños de estas cinco casas beben distintas bebidas, fuman distintas marcas de cigarros y tienen una mascota diferente. 

Pistas:

1. El británico vive en la casa roja. 
2. El sueco tiene un perro. 
3. El danés bebe té. 
4. La casa verde está a la izquierda de la casa blanca. 
5. El dueño de la casa verde bebe café. 
6. La persona que tiene un Renault cría pájaros. 
7. El dueño de la casa amarilla tiene un Porsche. 
8. El hombre que vive en la casa del centro toma leche. 
9. El noruego vive en la primera casa. 
10. El hombre que tiene un Mazda vive al lado del que tiene gatos. 
11. El hombre que tiene caballos vive al lado del hombre que tiene un Porsche. 
12. El hombre que tiene un Simca bebe cerveza. 
13. El alemán tiene un  RR. 
14. El noruego vive al lado de la casa azul. 
15. El hombre que tiene un Mazda tiene un vecino que bebe agua. 
Pregunta:
¿Quién es el dueño del pez? 
¿Cuál es la contraseña?**
**  una vez que tengo todas las características del dueño del pez, escribo la contraseña de la siguiente forma: digito correspondiente a la nacionalidad (1-danes, 2-britanico, 3-sueco, 4-noruego, 5-aleman)- digito correspondiente a la bebida (1-te, 2-café, 3-leche, 4-agua, 5-cerveza) -digito correspondiente a la casa (1-verde, 2-blanca, 3-azul, 4-amarilla, 5-roja) -digito correspondiente al carro (1-Renault, 2-RR, 3-Mazda, 4-Simca, 5-Porsche)
Ejemplo de tipo de respuesta:
Si fuera el noruego, que toma agua, que vive en la casa azul, y que tiene un RR, entonces escribo como contraseña:
4432
siendo el primer digito el noruego
siendo el segundo digito el agua
siendo el tercer digito la casa azul
siendo el cuarto digito el carro RR

martes

Programa


programa que calcule el número menor de una serie de n números.
 programa que calcule el número mayor de una serie de n números.
 programa que calcule el número menor de una serie de n números.
Programa que calcule y visualice la suma y el producto de los números pares comprendidos entre 20 y 400, ambos inclusive.
 Programa que lea una serie de números positivos (finalizar cuando sea un -1) y obtener el número mayor. Se debe desplegar el número mayor y cuantos números positivos se leyeron.
Escribir un programa que pida un número e indique si se trata de un número par
Escribir un programa que pida una nota e imprima por pantalla la calificación en formato “Apto” o “No Apto” según si la nota es mayor o menor que 5.
Escribir un programa que permita jugar a doble o nada: El jugador apuesta una cantidad y tira una moneda. Si sale cara obtiene el doble de la cantidad apostada. Si sale cruz la pierde todo.
Escribir un programa que lea tres valores enteros y muestre por pantalla el máximo y el mínimo de ellos.
Escribir un programa que pida un número entero y determine si es múltiplo de 2 y de 5.
Escribir un programa que pida la nota de un examen (un número entre 0 y 10) e imprima por pantalla la calificación en formato “Suspenso”, si la nota es menor que 5, “Aprobado” si está entre 5 inclusive y 7 sin incluir, “Notable” si está entre 7 inclusive y 9 sin incluir, “Sobresaliente” si está entre 9 inclusive y 10 sin incluir y “Matrícula de honor” si la nota es igual a 10.
Escribir un programa que, dado el nombre o número del mes, y la información de si el año es bisiesto saque por pantalla el número de días del mes.
Escribir un programa que, pida la fecha de nacimiento de una persona e imprima por pantalla su signo zodiacal.
Escribir un programa para jugar a adivinar un número entre 1 y 10 (generado al azar por el ordenador) hasta acertarlo o decirlos todos.
Uno de los usos más habituales para los bucles condicionales es la validación de entradas. Escribir un programa que pida una contraseña y permita tres intentos. Si el usuario da la contraseña correcta responde "Enhorabuena!" y queda inactivo, con este mensaje. En caso contrario el programa escribe "Lo siento, contraseña equivocada" y se cierra de inmediato.
Escribir un programa que pida un número y saque por pantalla su tabla de multiplicar.
Escribir un programa para calcular el promedio de una lista de números positivos acabada en un número negativo.
Escribir un programa para sumar los números enteros de 1 a 100.
Escribir un programa que dados dos números, uno real (base) y un entero positivo (exponente), saque por pantalla todas las potencias con base el numero dado y exponentes entre uno y el exponente introducido

miércoles

Actividad

PRIMER TRIMESTRE

Actividad 1.
Estimado Aprendiz el estado de arte es una de las primeras etapas que debe desarrollarse dentro de la formulación de un proyecto puesto que su elaboración, consiste en “ir tras las huellas” del tema que se pretende investigar, permite determinar cómo ha sido tratado el tema, cómo se encuentra en el momento de realizar la propuesta de investigación y cuáles son las tendencias.

Primera Fase de la Actividad
En grupos de trabajo según especialidades procedan a la búsqueda de información teniendo en cuenta bibliografías, monografías, artículos, trabajos especiales, documentos oficiales, Investigaciones aplicadas, cibergrafia sobre la evolución del sector al que corresponde la especialidad en estudio, teniendo en cuenta sus tendencias, tecnologías, crecimiento y empresas que trabajen las tecnologías del sector.
Segunda Fase de la Actividad:
En los grupos de trabajo cada una de las fuentes investigadas se leerá, se analizará, se interpretará y se clasificará de acuerdo con su importancia dentro del trabajo de investigación. A partir de allí, se seleccionarán la siguiente información:
·         Reconocer las tendencias y crecimiento de los  sectores.
Tercera Fase de la Actividad:
En grupos de trabajo realice una presentación en power point con la información requerida y preséntela al grupo.

Actividad 2.

En los equipos de trabajo teniendo en cuenta el análisis del estado del arte realizado en la actividad anterior, identifique  tres problemáticas relevantes del sector en estudio utilizando la metodología del diagrama de árbol.
Determine mínimo tres causas y tres efectos que le permitan analizar cada uno de los problemas en estudio.
Realice un mapa conceptual en donde se reconozca la estructura de los problemas analizados y socialícelo con el grupo en un debate liderado por el instructor de emprendimiento.


martes

Bases de datos

Una base de datos tiene una fuente de la cual se derivan los datos, cierto grado de interacción con los acontecimientos del mundo real y un público que está activamente interesado en el contenido de la base de datos.
Ramez Elmasri y Shamkant B. Navathe  


Temas de teoría
Modelo Entidad Relación
Ejemplos y desarrollo
Video tutorial

Ejercicios:
1. Cada una de las divisiones de HaveASandwich está compuesta por muchos departamentos. Cada uno de los departamentos tiene muchos empleados asignados a cada uno. Pero cada empleado trabaja solo para un departamento. Cada departamento es manejado por un empleado y cada uno de estos administradores puede administrar solo un departamento a la vez.
2. La compania KitKat opera muchas fabricas y cada una está localizada en una región. Cada región puede ser "casa" de muchas fabricas KitKat. Cada fabrica emplea muchos empleados, pero cada uno de esos empleados es empleado por solo una fabrica.
3. La compania de construcciones martillo y cincel es un constructor especializado en casas de mediano rango. Asuma que las principales entidades de la compania son sus clientes, empleados, proyectos y equipos. Un cliente puede contratar la compania por más de un proyecto y los empleados trabajan en más de un proyecto a la vez.
4. La compania aerea La Via Rápida es un operador pequeno en tres departamentos de Colombia. Vía Rápida quiere computarizar su sistema de reserva de pasajeros. Los siguientes datos tienes que ser identificados: código de reserva, número de vuelo, fecha de vuelo, origen, destino, fecha de salida, fecha de llegada, nombre del pasajero, número de silla, número de agente de reserva y nombre del agente. Por ejemplo, vuelo 303, está programado cada martes y jueves, sale de Cali a las 9:23 y llega a Bucaramanga a las 11:25 am. Asuma que el sistema detecta automaticamente si hay sillas vacias disponibles.
5. Un club de cocina organiza varias comidas para sus miembros. El propósito del club es permitirle a varios miembros encontrarse y preparar comidas para los otros miembros. El presidente del club mantiene una base de datos que planea cada comida y registra que miembros asistieron a cada comida, también lleva registro de cuáles miembros crearon cuál comida.
Cada comida es servida a muchos miembros y cualquier miembro tiene permitido asistir. Cada comida tiene una invitación. La invitación es enviada por correo a cada miembro. La invitación incluye la fecha de la comida y el sitio en qué se hará. Cada comida está basada en una entrada sencilla y un postre sencillo. Estas entradas y postres pueden ser usadas luego para otras comidas.

http://ocw.uoc.edu/computer-science-technology-and-multimedia/bases-de-datos/bases-de-datos/P06_M2109_02149.pdf

http://www.wiener.edu.pe/manuales2/4to-ciclo/BASE-DE-DATOS-3/Sql.pdf

Computador

El computador como funciona
( Publicado en Revista Creces, Mayo 1982 )
La presente década estará fuertemente marcada por el uso cada vez mayor que se es dando a esta máquina prodigio de la microelectrónica. El conocimiento de su estructura la forma como operan restituye su verdadera naturaleza, totalmente ajena al misterio con que siempre han sido presentados.
Entendida la estructura general de un computador y la forma como el hombre puede servirse de él, nos parece importante complementar dicha información con lo que constituye hoy día un aliado formidable del científico, educador, secretaria, ingeniero, diseñador, experto en comunicaciones. Se trata del microcomputador, caballo de batalla de la tecnología de frontera en la presente década.

Un microcomputador consta de cuatro elementos fundamentales: el microprocesador, casi literalmente el cerebro de la máquina que sabe efectivamente ejecutar las instrucciones del código de máquina y que controla y orquesta la totalidad del computador: la memoria donde se almacenan los programas en ejecución y los datos; los sistemas de entrada y salida que comprenden dispositivos como las consolas, las impresoras y los giradiscos para almacenamiento masivo con sus "interfaces" correspondientes, o sea los circuitos electrónicos que intercomunican al computador con estos dispositivos; y los "buses", verdadero sistema de carreteras que conecta entre sí al microprocesador, la memoria y los sistemas de entrada y salida.

Toda la electrónica involucrada en estos cuatro elementos puede caber, con la tecnología de hoy, en la punta de un dedo y en una superficie menor a un centímetro cuadrado. La brusca transición del tubo al transistor fue sólo el primer paso en reducción de tamaño y consumo energético. El paso (o salto) siguiente es el que condujo al circuito integrado: un conjunto de componentes electrónicos se condensan en un sólo circuito. Durante la primera mitad de la década del sesenta se desarrollan los circuitos de integración llamados de pequeña escala en los cuales un circuito consta de hasta 40 componentes; en la segunda mitad de esa década se llega a los mil componentes por circuito y durante los sesenta se sobrepasan los cientos de miles. Tanto o más impresionante que la miniaturización es el abaratamiento de costos. La tecnología de fabricación de estos circuitos usa la fotolitografía o la electrolitografía con las cuales no sería muy exagerado decir que producir un circuito integrado es tan fácil como dibujarlo y sacarle una fotocopia.

Junto a los circuitos integrados se desarrolla la electrónica digital y las familias de circuitos lógicos (la TTL es una de las más famosas). Estas familias están constituidas por una serie de "chips", nombre dado al empaquetamiento en que vienen los circuitos cuyas medidas típicas son unos 20 x 7 x 4 milímetros con hileras de alrededor de siete contactos en ambos bordes (Figura 2). La electrónica digital se caracteriza porque las señales con las cuales trabaja pueden estar en sólo dos niveles de voltage (digamos 0, + 5 ) voltios). Existe una multiplicidad de chips que pueden ejecutar diversas funciones sobre estas señales: funciones lógicas, generadores de pulsos de duración regulable, marcapasos, contadores de pulsos, etc. En un cierto sentido los microprocesadores son chips, mucho más complejos, versátiles y flexibles pues tienen la potencialidad de comportarse como cada uno de esos dispositivos a voluntad del programador.


Sólo ceros y unos

Gran parte del poder de la electrónica digital proviene de dos áreas desarrolladas por los matemáticos mucho antes que se vislumbrara su aplicabilidad a la computación: el álgebra de Boole y el sistema de números en base dos o binario. La primera tiene que ver con la lógica de proposiciones y dice cosas tan aparentemente perogrullescas como que si se dan dos afirmaciones, la afirmación A y la afirmación B, uno puede combinarlas para producir la afirmación "A y B" o la afirmación "A ó B". La primera combinación será cierta sólo cuando tanto A como B sean ciertas y será falsa en cualquier otro caso; la segunda combinación será verdadera cuando ambas o una cualquiera de las afirmaciones sea verdadera y sólo será falsa si ambas lo son. Lógica de este tipo se implementa fácilmente como una "compuerta" en un chip: por ejemplo, dos contactos son las entradas para una función y (o "AND") y un tercero es la salida. A los contactos de entrada se puede aplicar sólo dos niveles de voltaje: + 5 (digamos "estado 1") ó 0 volts (digamos "estado 0"), si en ellos probamos diversas combinaciones mientras observamos el voltaje en el contacto de salida veremos que éste siempre va a estar en el estado 0 excepto cuando pongamos ambas entradas en estado 1, en cuyo caso la salida también será 1. Tal conducta entonces es análoga a la que seguíamos para determinar si la combinación "A y B" era verdadera o falsa. Es fácil adivinar cómo se conduce una compuerta "o" (u "OR"): bastará que cualquiera de los contactos de entrada esté en estado 1 para que la salida también lo esté, y ésta caerá a estado 0 sólo cuando ambas entradas sean 0. El lector puede imaginar muchos casos en que un circuito de control será diseñado incluyendo funciones de este tipo, en que queremos que algo ocurra (o se detenga) si y sólo si dos condiciones dadas se cumplen simultáneamente (función "y") o si una cualquiera de dos condiciones ocurre (función "o"). Un circuito específicamente construido con tal fin puede incluir el chip correspondiente, por otra parte, es fácil programar un microprocesador para que tome decisiones de este tipo, pues las funciones lógicas están incluidas en su repertorio de instrucciones.

El sistema de números binarios utiliza sólo dos dígitos: 0 y 1, lo que lo hace fácilmente representable por los dos estados de los circuitos electrónicos digitales. Para representar un número determinado cotidianamente utilizamos el sistema de base diez y seguimos una convención posicional: un dígito "vale" según su posición, según en que columna esté: en el número 252 el dos de la primera columna a la derecha tiene un valor distinto al de la tercera columna; el primero representa la cantidad dos, en tanto el otro la cantidad doscientos.

El valor de un número es igual a la suma del dígito de la primera columna por 1 (o sea, por 100), más el de la segunda columna por 10(101), más el de la tercera por 100(102), etc. El sistema es válido para cualquier base que elijamos: necesitaremos una cantidad de guarismos igual a la base (utilizamos diez corrientemente 0,1......9; si utilizáramos la base ocho no necesitaríamos los guarismos 8 ni 9; si usáramos la base 16 necesitaríamos nuevas figuras para representar a diez, once, doce, trece, catorce y quince; y como ya anticipamos en base dos basta el cero y el uno); y el valor de cualquier número se obtiene multiplicando la primera cifra de la derecha por uno, la segunda por la base, la tercera por la base al cuadrado, la cuarta por la base al cubo, etc. y luego sumando estos productos.

Como indica la Fig. 3B la suma de dos números representados en el sistema binario es totalmente análogo a la de números en base diez, sólo que es más simple, aunque los números requieren más dígitos para representarse. Cualquier número decimal puede escribirse en binario, binario, y viceversa, porque el concepto de número es independiente de su representación. Las demás operaciones aritméticas son también mucho más "fáciles" en sistema binario que en decimal, en particular, más fáciles de instrumentar para un autómata como un computador.


Bits y bytes

¿Cuántos números diferentes pueden representarse con una cantidad determinada de dígitos en una base dada?. Esta pregunta, altamente relevante, es fácil de contestar: la base elevada a la cantidad de dígitos en cuestión. En el sistema de base diez, con dos dígitos representamos cien (102) números distintos: 00,01.... 98, 99. En el sistema base dos con n dígitos binarios (o bits, como se les llama corrientemente) representamos 2nnúmeros; por ejemplo, con tres bits representamos ocho (23) números: 000, 001, 010, 011, 100, 101, 110 y 111. Al conjunto de ocho bits, que permite representar 256 (28) números se le llama un "byte", y es la forma habitual de cuantificar cantidad de memoria. Un "kilobyte", medida comúnmente usada, es igual a 1024 bytes.

Como veremos en la sección siguiente, un computador en su memoria, sus buses y su procesador no trata a los bits en forma individual sino que trabaja con un conjunto de ellos a la vez como si este conjunto constituyera una unidad. A este conjunto se le llama una palabra y el número de bits en una palabra es la "longitud de palabra" de un computador. Este quizás sea el dato aislado más relevante para describir a un computador: así se habla de computadores de ocho bits (más propiamente computadores que trabajan con palabras de ocho bits), de 16 bits, de 32 bits, etc. La inmensa mayoría de los microcomputadores trabaja con palabras de ocho bits, es decir, una palabra contiene un byte.

Obviamente el que una palabra de un computador tenga ocho bits no significa que sólo puede trabajar con números menores de 256. El computador puede organizar muy versatilmente la sección de la memoria en que almacena datos. Por ejemplo si destina dos palabras (de ocho bits cada una) para almacenar cada número, quedan 16 bits disponibles que pueden representar del 0 al 65.535 (o quizás del -32.767 al +32.767). Habitualmente se usa el formato de punto flotante en que algunas palabras se destinan a almacenar la mantisa y otras el exponente (semejante a lo que hacen las calculadoras de bolsillo).

Decíamos que una palabra de ocho bits puede representar cualquier número del 0 al 255. El párrafo anterior señalaba que dos o más palabras pueden combinarse de acuerdo a cierta convención para representar cantidades mayores. Ahora bien, extendiendo esta idea, podemos utilizar las combinaciones de ocho bits para codificar otras entidades que no son números, como por ejemplo, letras u otros caracteres. Así la secuencia 01000001, puede representar al número que en base diez escribimos "65" (26 + 20 = 64 + 1 = 65) o bien, podemos convenir en que tal combinación representará la letra "A". De hecho en nuestro lenguaje usamos una misma palabra para representar ideas totalmente distintas (ejemplo: la palabra "sobre") y el contexto hace obvio la acepción a la que hacemos referencia. Innecesario decirlo, en los computadores hay mecanismos que hacen inequívoco el sentido en que una palabra debe ser interpretada en cada oportunidad.


Procesador y memoria

Cuando hablamos de la memoria de un computador nos referimos solamente a la memoria de acceso inmediato, contenida en el computador, no a los elementos de almacenamiento masivo como los discos flexibles, las cassettes u otros. Así se dice por ejemplo que un determinado mícrocomputador se puede comprar con 32 K (o sea 32 kilobytes), 48 K ó 64 K de memoria. Comúnmente se utilizan como memoria circuitos integrados de gran capacidad. Hay básicamente dos tipos: RAM (de "random-access memory") en que se puede almacenar y leer información a voluntad, pero en la que al interrumpirse el suministro de electricidad la información se pierde; y ROM (de "read-only memory") que son chips en los que el usuario no puede escribir información sino que en ellos ciertos programas o datos han sido impresos con dispositivos especiales y, por supuesto, la información estará ahí se apague o encienda el computador. Típicamente los fabricantes proporcionan con el computador algunos kilobytes de ROM que contienen programas y rutinas elementales para ayudar al usuario a un manljo efectivo del sistema, incluyendo el programa para interpretar BASIC. Por el contrario, un programa propio que el usuario escriba en la RAM del computador se perdería al ser éste apagado o al escribir encima un nuevo programa. Para evitar tener que escribir el programa cada vez que se va a usar, éste se conserva en disco (u otro elemento de almacenamiento masivo); igual cosa puede hacerse con los datos, ya sea que éstos hayan sido obtenidos directamente por el computador o que uno los haya entrado manualmente.


Palabras y casillas

Desde un punto de vista funcional, uno puede imaginar la memoria del computador como una gigantesca muralla de una oficina de correos con tantas casillas como palabras de memoria haya. (En un microcomputador de ocho bits cada palabra equivale a un byte y en adelante subentenderemos que este es el caso). En esta analogía hay una semejanza fundamental: cada palabra de memoria, así como cada casilla, se identifica con una dirección, con un número determinado. Es esencial para el funcionamiento del computador que éste pueda ir a una dirección específica para escribir o leer una palabra determinada. Hay también una diferencia fundamental en la analogía: en una casilla de correos uno almacena cualquier cosa que quepa en ella; por el contrario, una palabra de memoria lo que puede almacenar es solamente (y siempre), una secuencia de ocho bits, de ocho ceros y unos.

Para el microprocesador el trabajar con la memoria significa encaminarse a una dirección determinada y leer en cuál de los 256 estados posibles está, o bien escribir en esa dirección uno de esos 256 estados. La operación de leer no altera en absoluto el contenido de la memoria; la operación de escribir elimina cualquier contenido previo que en esa dirección estuviera almacenado y lo reemplaza por una nueva secuencia de ocho ceros y unos.


Instrucciones

Hemos dicho que en memoria se almacenan tanto programas como datos y hemos indicado cómo se representan números y letras. ¿Cómo se representan las instrucciones de los programas? Ya hemos señalado que un microcomputador - sólo sabe ejecutar un número limitado de instrucciones elementales y que las 256 combinaciones posibles con ocho bits pueden utilizarse no sólo para representar números sino para codificar entidades no numéricas. La respuesta es la síntesis de estas dos observaciones: cada una de las instrucciones elementales se representa por una secuencia de ocho bits y esta codificación es el "código de máquina". Volviendo al ejemplo antes citado, la secuencia 01000001 en una celdilla de memoria puede significar según el contexto cosas muy distintas: simplemente el número 65 o puede ser parte de una codificación o un número, por ejemplo en punto flotante parte de la mantisa o del exponente; o puede representar la letra "A"; o puede representar una de las instrucciones elementales que el microprocesador ejecuta.

El microprocesador debe en primer lugar interpretar y ejecutar las instrucciones del código de máquina. Para ello ha de contar con varios "registros" (secuencias de bits comparables a celdillas en memoria pero que están en el microprocesador mismo). Hay un registro para almacenar la instrucción de código de máquina que se ha de ejecutar; otro para retener la dirección de la memoria en la cual vamos cuando ejecutamos un programa para saber dónde ir a buscar la próxima instrucción; otro registro de estados para señalar que ciertas situaciones relevantes han ocurrido (por ejemplo, cuando al sumar hay reserva en la columna más significativa que requeriría de un noveno bit). El microprocesador cuenta con una unidad lógico-aritmética que es la que propiamente ejecuta las instrucciones elementales (suma, resta, funciones lógicas, etc.) y que cuenta con un registro especialísimo: el acumulador, en el cual se realizan las operaciones.


Buses

Un segundo tipo de funciones a cargo del microprocesador es el traspaso bidireccional de información tanto entre microprocesador y memoria, como entre microprocesador y dispositivos de entrada/salida. Esto se logra mediante los "buses" a que hicimos mención como uno de los cuatro tipos de elementos que constituyen el microcomputador. Hay tres tipos de buses: primero, el bus de direcciones en el que el microprocesador señala cuál dirección de la memoria ha de ser leída o escrita. Este bus tiene tantas líneas como bits se usan para determinar una dirección. Típicamente en los microcomputadores las direcciones se especifican con dieciséis bits lo que permite hacer referencia a un total de 216 o 65.536 celdillas de memoria ("64 K"). Esto también significa que una dirección (o sea, el número de una dirección, no la celdilla ni su contenido) requiere dos bytes para especificarse, esto es, dos palabras del programa. Hay un segundo bus, de ocho líneas, que es el bus de datos donde se colocan las palabras a ser transferidas. Cuando el microprocesador escribe algo en memoria coloca entonces en el bus de direcciones la dirección de la celdilla en la cual va a escribir y en el bus de datos la palabra que va a ser escrita; análogamente, si se trata de leer algo, señalará en el primer bus la dirección de la celdilla cuyo contenido quiere obtener y la memoria pone el contenido de ésta en el bus de datos para que el microprocesador lo reciba.

De esto surge la necesidad de un tercer tipo de funciones a cumplir por el microprocesador y un tercer tipo de buses: la de servir de marcapaso para que las operaciones se realicen sincrónicamente y de definirlas y controlarlas. Por ejemplo, determinar si se trata de leer o de escribir una palabra en la celdilla indicada en el bus de direcciones, o, cuando escriba en una impresora, dará la orden de que se escriba una letra sólo después de asegurarse que la anterior ya fue escrita y la impresora está lista para recibir la siguiente. Las líneas que llevan este tipo de información de sincronización y control configuran el bus del control.


Microprocesadores

Parece innecesario recalcar que en un microcomputador el elemento clave será el microprocesador: de él dependerá la rapidez con la cual trabaja, la longitud de palabra que procesa como una unidad, y la cantidad total de celdillas de memoria con las cuales puede trabajar. Diferentes microprocesadores tienen diversas "arquitecturas": número de registros, repertorio de instrucciones, duración de un ciclo de acceso a memoria, etc. Como es de esperar, cada uno ha sido diseñado intentando optimizar ciertos aspectos del trabajo y puede por lo tanto resultar particularmente eficiente para un cierto tipo de tareas.

Propondremos ahora un ejemplo concreto. Supongamos que tenemos un computador con 64 K de memoria (65.536 celdillas) de las cuales las primeras 4 K (4.096) son ROM, o sea, no están disponibles para que el usuario escriba en ellas. El programa de código de máquina que el usuario ha cargado está almacenado de la celdilla 4.096 a las 9.432 y de ahí para arriba el resto de la memoria está disponible para almacenar datos. Concentrémonos ahora en un pequeño segmento del programa total y que, como ilustra la Fig. 4, ocupa ocho celdillas de memoria partiendo de la número 7.777. (Nótese que para indicar el número de la dirección de las celdillas y su contenido ocupamos el sistema decimal para facilidad del lector: en realidad en el computador son sólo secuencias de bits "encendidos" o "apagados").

La primera celdilla contiene la palabra 123 (01111011). Esto, en el código de máquina del microcomputador imaginario que estamos inventando para este ejemplo, significa "borre el acumulador y enseguida cárguelo con el número contenido en la celdilla siguiente". La celdilla siguiente es la 7.778 que contiene al número 6 (00000110). Al cumplir esta instrucción lo que el microprocesador ha hecho es ni más ni menos que colocar en el bus de direcciones el número 7778, dar una orden de lectura y cargar el acumulador con el contenido recibido por el bus de datos, que debería ser "6". Otra cosa que se ha hecho es colocar en el registro interno encargado de llevar la cuenta del programa la dirección 7779 que es donde habremos de dirigirnos para obtener la próxima instrucción. Esta celdilla contiene también el número 6, (00000110); este número lo traemos por el bus de datos, lo depositamos en el registro de instrucciones y lo interpretamos como una instrucción. En nuestro código de máquina el 6 significa "fíjese en el contenido de las dos celdillas siguientes, entre ambas codifican en 16 bits una dirección; diríjase a la celdilla indicada por esa dirección y lea su contenido; ese contenido súmelo al contenido actual del acumulador". Utilizando los buses y registros correspondientes, el microprocesador ejecutará esta instrucción: primero determinará que la dirección en cuestión es la número 25.606 (el lector puede calcular el número representado por 0110010000000110), y luego traerá el contenido de esa celdilla y la sumará al acumulador. En nuestro ejemplo, el contenido en cuestión es el número 193 por lo que al finalizar esa instrucción el acumulador contendrá el número 199. La instrucción siguiente está en la celdilla 7782 y es el número 128. En nuestro código imaginario significa "el número que está en el acumulador, escríbalo en la celdilla cuya dirección está codificada en las dos celdillas siguientes". Tal dirección es la 25.607 y en ella entonces se almacenará el número 199.

En resumen, lo que este segmento del programa hace es tomar el contenido de la celdilla 25606, sumarIe 6 y depositar el resultado en la celdilla 25.607


El microcomputador y el mundo externo

Es esencial contar con mecanismos para interactuar con los dispositivos de entrada y salida con el fin de entrar programas en memoria, leer datos, imprimir resultados, controlar procesos, etc. Conceptualmente este problema es análogo al escribir y leer datos de la memoria. Por ejemplo, si se trata de usar una impresora ésta puede entender que la secuencia 01000001 representa la letra "A" con lo que para el microprocesador el problema se reduce a hacerle llegar tal secuencia tal como la escribiría en una celdilla de memoria. Análogamente, para recibir una letra "A" desde la consola basta con que ésta le envíe esa secuencia y el microprocesador sabrá interpretarla. Es tal la similitud entre el problema de enviar información a un dispositivo externo y el escribir en la propia memoria que muchos microcomputadores resuelven el problema asignando algunas direcciones no a celdillas de memoria sino a servir de "puertos" de entrada y salida, la lectura y escritura en tales direcciones irá a parar entonces no a chips de memoria sino a interfaces de entrada/salida. Un enfoque alternativo es tener puertos especializados con instrucciones propias para dirigirse a ellos, diferentes de las instrucciones que hacen referencia a memoria.

Un segundo problema general es el cómo enviar la información desde la interface al dispositivo en cuestión. Una posibilidad es la transmisión en paralelo, análoga al bus de datos ya descrito, con una línea por bit más quizás algunas líneas de sincronización y control. Este sistema es muy rápido, pues todos los bits de una palabra se transmiten simultáneamente, pero es caro cuando las distancias entre computador y receptor son importantes. La alternativa es usar una sola línea y transmitir en ella los ocho bits (y señales de sincronización y control) secuencialmente. Con interfaces adecuadas de este tipo ("modem") se puede incluso usar la línea telefónica para que dos computadores conversen entre sí enviándose palabras bit por bit.

Al configurar un sistema en torno a un computador, son elementos habituales consolas e impresoras con capacidades de graficar (o bien "plotters" x-y de alta resolución). Estas son proporcionadas por el mismo fabricante del microcomputador o pueden obtenerse de otros con la interface adecuada para el computador en cuestión. Un sistema de discos flexibles es altamente deseable para el almacenamiento masivo de programas y datos. Los computadores poseen "sistemas operativos de discos" que proporcionan comandos que hacen muy fácil para el usuario escribir y leer en los discos y preguntar cosas como qué programas tiene almacenado un disco o cuánto espacio disponible queda en él.

Sin embargo, los principios básicos de transmisión de bits entre el computador y dispositivos externos mediante una interface tiene un campo de aplicación mucho más amplio. Una interface simple que tan sólo permita conectar cada bit de una palabra en un puerto de entrada/salida con líneas de un sistema externo, puede detectar, por ejemplo, el estado de un interruptor, o si un sensor está por encima o por debajo de un punto critico (un termostato). Para conseguir esto es cuestión que la señal de interés active una línea de entrada a +5 ó O volts y éste voltaje se conecte al bit destinado a detectarlo en el puerto de entrada. A la inversa, si el bit es cargado por el microprocesador con un cero o un uno y damos la señal de control indicando que se trata de una salida, este voltaje del bit puede ser llevado por la interface a accionar interruptores, activar relays, etc. No hay problemas entonces para que un computador reciba o comande información binaria.


Conversor A/D

Supongamos ahora que nos interesa estudiar una señal que fluctúa entre 0 y 4 volts proveniente de un transductor, o quizás de la salida auxiliar de un polígrafo. Tenemos entonces una señal analógica que puede fluctuar entre esos limites en forma continua y queremos que el microprocesador pueda leerla cada cierto intervalo, es decir, debemos transformar el valor analógico de esa señal en un número. Esto precisamente es lo que hace un conversor análogo -digital (conversor A/D).

En un cierto sentido, este problema es la extensión de un detector binario a un caso de más de dos alternativas. Si tuviéramos un sensor que indicara "0" o "1" según que la señal esté por debajo o por encima de 2 volts, al tomar una muestra podríamos saber si la señal está entre 0 y 2 volts o entre 2 y 4. Podríamos ahora combinar dos bits y establecer cuatro posibilidades: "(00" significa entre 0 y 1; "01", entre 1 y 2; "10" entre 2 y 3; y "11" entre 3 y4. Si usáramos más bits podríamos dividir el rango en segmentos menores. El número de bits que emplea un conversor A/D es uno de los datos más importantes para caracterizarlo, y es lo que se llama su "resolución". Un conversor A/D de ocho bits divide el rango de voltaje en 256 segmentos y, en nuestro ejemplo, resolvería como niveles distintos los que difieran en 4/256 = 0.0156 15.6 milivolts. Una segunda característica relevante se refiere al rango permitido de voltaje. En nuestro ejemplo hemos supuesto que tanto el rango de salida del instrumento de medición como el de entrada del conversor son 0 a 4 volts, un caso óptimo en que no hay posibilidad que la señal supere o quede por debajo del rango permisible y además aprovecha todo ese rango. Si este no fuera naturalmente el caso habría que amplificar la señal para aumentarla o disminuirla o cambiar su punto central para hacerla coincidir con el rango del conversor. Un tercer dato pertinente es el tiempo que demora en efectuar una conversión y que, según el conversor en cuestión, puede ser de algunos microsegundos o de cientos de milisegundos. Según cómo varía la señal de interés en el tiempo, la frecuencia de muestreo y la precisión deseada, una o más de estas características cobrarán especial relevancia.

El conversor digital -analógico permite resolver el problema inverso: utilizar el computador para generar señales dentro de un rango de valores, no sólo para encender y apagar como nos permite un bit aislado de un puerto de salida. Aquí el computador proporciona números al conversor y éste los transforma en niveles de voltaje.


Resumen

Un microcomputador consta de un microprocesador que ejecuta las instrucciones y orquesta la totalidad del sistema; una memoria donde se almacenan programas y datos; interfaces de entrada y salida para comunicarse esos tres tipos de elementos entre si.

Las señales con que un computador trabaja sólo tienen dos estados; la lógica de Boole y el sistema de números binarios son poderosas herramientas que precisamente trabajan sólo con dos estados. Se reseña cómo el procesador intercambia con la memoria y con las interfaces, y cómo ejecuta las instrucciones codificadas.



Ennio Vivaldi V.

INTA. Universidad de Chile.


_________________________

Realice un diagrama de proceso de la lectura y escritura de periféricos realizada por word.
________________________

Aritmética binaria
_________________________

Temas de exposición: procesador, memoria RAM, disco duro, tarjeta madre, memoria USB, floppy disk, pantalla, ratón.