Semana 2: El computador#
2.1. Partes y funciones del computador#
Pantalla: Visualizador que muestra al usuario los resultados del procedimiento de una operación.
Tarjeta madre: A ella se conectan todos los componentes del computador para poder interpretar las instrucciones contenidas en los programas
Procesador / CPU (Unidad central de procesamiento): Contiene todos los circuitos que guardan los datos para controlar, interpretar y ejecutar las instrucciones que envían los usuarios.
Memoria RAM (Memoria de acceso aleatorio): Almacena las instrucciones de los programas y la información que entra a través de los dispositivos, se le conoce cómo memoria volátil ya que cada vez que se apaga los datos desaparecen, hasta que se vuelve a usar.
Puertos PCI (Interconexión de componentes periféricos): Conecta distintos dispositivos periféricos directamente a la placa base. Por ejemplo, tarjeta de video, audio, red, entre otros.
Fuente de alimentación de energía: Convierte la energía suministrada desde la corriente del toma (señal alterna) en corriente directa (señal continua) para cada uno de los dispositivos.
Unidad óptica de almacenamiento: Es una unidad de discos que usa luz láser como parte del proceso de lectura o escritura de datos.
Disco duro: Dispositivo de almacenamiento que emplea un sistema de grabación magnética para almacenar datos digitales. Se conoce cómo un dispositivo de almacenamiento permanente.
Teclado: Dispositivo que permite introducir datos u órdenes, está inspirado en la máquina de escribir
Ratón: Dispositivo apuntador.

from IPython.display import YouTubeVideo
YouTubeVideo('RCCwrTVwPNs')
2.1.1. Almacenamiento de la información#
La memoria ROM (Read-Only Memory) guarda información que NO cambia. La memoria contenida en ésta no puede ser modificada. Almacena, por ejemplo, los programas que se deben iniciar al prender el computador.
La memoria RAM (Random Access Memory) almacena temporalmente información que puede ser modificada en cualquier momento. La información en la memoria RAM se pierde cuando se apaga el computador.
La información en un computados se mueve a través del bus, el cual es un sistema de interconección del procesador con los dispositivos de entrada/salida y la memoria. Por este bus icirculan datos, señales de control o direcciones de memoria; de acuerdo a éstas funciones ecxisten tres tipos de buses
Bus de datos: Permite transportar datos entre las componentes de la computadora a través de un circuito impreso. El ancho del bus de datos permite saber la cantidad de máxima información que se puede transportar en un segundo.
Bus de direcciones: Permite indicar el origen y destino de los datos.
Bus de control: Proporciona señales para coordinar las diferentes tareas, sin que haya colisión de información.

2.2. Operadores y su precedencia#
para este tema, se definirán los diferentes tipos de operadores, dada su naturaleza. Así mismo, se describirán las operaciones que estos pueden realizar.
A continuación encontrará un vídeo con la explicación del contenido de esta sección.
from IPython.display import YouTubeVideo
YouTubeVideo('Ofea4mAZGGs')
2.2.1. Valores y tipos de datos.#
Uno de los elementos fundamentales para la creación de un programa es el valor, el cual puede tener distintas formas conocidos cómo tipos de datos: datos de caracteres, numéricos y Booleanos.
Datos de caracteres: Representa aquellos datos que contienen una ‘cadena’ de texto.
Ejemplo: 'Hola mundo'
Datos numéricos: Representa aquellos valores numéricos de distintos tipos.
Ejemplos: 5
, 3.14159265358
, -10000
,
Datos Booleanos: Dato que representa el valor de verdad de una condición lógica, el cual puede tener únicamente dos valores:
Verdadero si la condición SÍ se cumple.
Falso si la condición NO se cumple.
2.2.2. Operadores aritméticos#
Una expresión aritmética es una sucesión de operandos y operadores aritméticos, en la cual los operadores actúan sobre los operandos.
Los operadores aritméticos son:
Operador |
Operación |
---|---|
+ |
Suma |
- |
Resta |
^ |
Potenciación |
* |
Multiplicación |
/ |
División |
% |
Módulo |
De estos operadores, el menos conocido es el módulo. Este es una operación entre dos operandos, cuyo resultado es el residuo de una división entera.
2.2.3. Operadores lógicos#
Este tipo de operadores permite obtener solo dos resultados, por lo que se conocen también como booleanos, porque hacen uso de los principios del álgebra de Boole. En otras palabras, estos operadores toman como operando conjuntos y realizan operaciones sobre ellos. Es por esto que el resultado de las operaciones lógicas no son números, son variables booleanas: Verdadero y Falso.
Las operaciones que estos operadores realizan son: la conjunción (∧), la disyunción (∨) y la negación (¬). La conjunción comprara dos conjuntos o condiciones, y busca elementos comunes en ambos. Es decir, el resultado será verdadero si ambas condiciones se cumplen.Por su parte, la disyunción busca que se cumplan una o las dos condiciones.
Para conocer el resultado de las operaciones lógicas, se usan las conocidas tablas de verdad. Sean P y Q dos proposiciones lógicas, así:
P |
Q |
P ∧ Q |
P ∨ Q |
¬P |
¬Q |
---|---|---|---|---|---|
V |
V |
V |
V |
F |
F |
V |
F |
F |
V |
F |
V |
F |
V |
F |
V |
V |
F |
F |
F |
F |
F |
V |
V |
2.2.4. Operadores relacionales#
Los operadores relacionales son aquellos que nos permiten hacer comparación entre variables aritméticas. Su resultado es también un valor booleano: Verdadero o Falso.
Estos operadores son:
Operador |
Operación |
Equivalente matemático |
---|---|---|
> |
Mayor que |
\(>\) |
< |
Menor que |
\(<\) |
>= |
Mayor o igual que |
\(\geq\) |
<= |
Menor o igual que |
\(\leq\) |
== |
Igual a |
\(=\) |
!= |
Diferente a |
\(\neq\) |
2.2.5. Precedencia de operadores#
Cuando se ejecuta un conjunto de operaciones, estas se efectúan dando una prioridad a las operaciones. El orden es como sigue.
Primero se ejecutan las operaciones de potenciación
Segundo la multiplicación, división y módulo
Tercero las sumas y restas.
Estas prioridad es además asociativa. Esto se refiere a:
Cuando hay operaciones consecutivas de potenciación, estas se llevan a cabo de derecha a izquierda. Es decir, la potenciación sigue una regla de asociatividad por la derecha.
Las demás operaciones son asociativas por izquierda. Esto es, se ejecutan en el orden que aparezcan de izquierda a derecha. En otras palabras, las operaciones de suma, resta, módulo, multiplicación y división son asociativas por izquierda.
2.3. Introducción a la algoritmia#
Un algoritmo es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades. Las fases para la resolución de un problema son:

Comprenda el problema: Se debe leer el problema varias veces, establecer los datos del problema, aclarar lo que se va a resolver, establecer cúal es la incognita, agrupar los datos en categorías, trazar un diagrama o figuras.
Elabore un plan: Escoger y decidir las operaciones a desarrollar, eliminar los datos que no son útiles, descomponer el problema en otros más pequeños
Aplique un plan: Ejecutar en detalle cada operación, simplificar antes de calcular, realizar un diagrama o dibujo.
Revise y verifique: Dar una respuesta completa, hallar el mismo resultado de otra manera, verificar por apreciación que la respuesta es adecuada.
Para la solución de problemas desde el punto de vista computacional, nos aproximamos al problema desde la algoritmia: Aplicar adecuadamente un conjunto de pasos detallados que aseguran una solución correcta.
2.3.1. Elementos de pseudocódigo#
Un pseudicódigo es una serie de palabras con un formalismo muy sencillo, que permite describir el funcionamiento de un programa usando frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. El objetivo del pseudocódigo es compartir con los demás programadores su visión de la resolución del problema.
Principios en la escritura de un pseudocódigo:
Al inicio del pseudocódigo se deben escribir todas las variables que se van a usar; cada varibale debe tener asignado su nombre y su tipo.
Las líneas del pseudocódigo siguen son órdenes o instrucciones que se ejecutan de arriba hacia abajo.
Tipos de estructuras de pseudocódigo:
Secuencial: Se da solución a un problema con intrucciones en orden línea por línea.
Ejemplo: Calcular el área de un círculo
Radio del círculo, real R
Área del circulo, real A
Leer R
Calcular A,
\(A=\pi R^2\)Imprimir A,
Fin
Condicional: Para dar solución a un problema se requieren expresar elecciones.
Ejemplo: Verificar si un número entero es divisible entre 5.
Entero x
Leer x
Realizar la operación módulo
, y = x % 5Si y=0 entonces x es divisible entre 5
Sino x no es divisible entre 5
Fin
Iterativa: La soculicón del problema debe ejecutar varias veces una misma instrucción del código. Los diferentes tipos de estructura iterativa del pseudocódigo son: Bucle mientras y bucle para.
A continuación encontrará material audiovisual con explicaciones sobre el tema de esta sección.
from IPython.display import YouTubeVideo
YouTubeVideo('g7PZCRZtbfw')
2.4. Ejercicios#
Convierta las siguientes expresiones algebraicas en expresiones de computador:
\(\frac{10+x}{y-\frac{z+x}{z-y}+x^2} \)
\(1+\frac{z}{y+\frac{1}{1+x}}\)
\(\left(\frac{x^2-y^2}{\frac{x^2}{y}-\frac{z^2}{x}}\right)^{\frac{z}{x^2+y+z}}\)
Convierta las siguientes expresiones de computador en expresiones algebraicas.
\(x^{\wedge}(y+z^{\wedge}(1+1/(1-x)))\)
\(x/z/y^2-x/y*z\)
\((x-(y-z)/(x+y)+x/z)/(x+z)-(z/(z+x)+x^{\wedge}(y^{\wedge}2))/((3+x)/(4+y))\)
Realice las siguientes ejercicios teniendo en cuenta la precedencia de operadores del computador.
\(180/6-3*(4*(8-6)-30/10*2)\)
\(5*7+5*2-6*4+5*10-5*3+5*10\)
\(25*3+4-7/12+3-1*2<(25*3+4)-7/12+(3-1)*2\)
\(25*(3+4)-7/12+(3-1*2)<25*(3+(4-7/12+(3-1)*2))\)
\(23-8+6^{\wedge}2-3\%4\)
\(23-5^{\wedge}(6-2)\%9\)
\(4\%(7+2)^{\wedge}3*9\)
\(6\%7/4^{\wedge}6+8*3\geq{23}-5\%(6-2)^{\wedge}9\)
\(180/6\%3*(4^{\wedge}(8-6)-80/10*2)=40\%(15-6-8)^{\wedge}{10}\)