Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CAPÍTULO I
EVOLUCIÓN DEL HARWARE Y SOFTWARE
INTRODUCCIÓN
Las computadoras de hoy día se presentan en una amplia variedad de formas. Su rango se extiende
desde los «mainframes» (grandes computadoras) y supercomputadoras masivas y multipropósito
hasta las computadoras personales de escritorio. Entre ambos extremos nos encontramos con un
inmenso conjunto de minicomputadoras y estaciones de trabajo. Las grandes minicomputadoras se
aproximan a los «mainframes» en potencia de cálculo, mientras que las estaciones de trabajo son
potentes computadoras personales.
Los «mainframes» y las grandes minicomputadoras se utilizan en muchos negocios, universidades,
hospitales y agencias gubernamentales para desarrollar sofisticados cálculos científicos y
financieros. Estas computadoras son muy caras (las grandes cuestan millones de dólares) y requieren
una plantilla grande de personal para su funcionamiento, así como un entorno especial y
cuidadosamente controlado.
Por otro lado, las computadoras personales son pequeñas y baratas. De hecho, en la actualidad
muchos estudiantes y profesionales que viajan con frecuencia utilizan muchas computadoras
«portátiles» con batería incorporada y con un peso inferior a 2 o 3 kilogramos. En muchas escuelas
y empresas se utilizan ampliamente las computadoras personales, que se han convertido en
elementos de uso doméstico. La mayoría de los estudiantes utilizan computadoras personales
cuando aprenden a programar en C.
A pesar de su pequeño tamaño y bajo precio, las modernas computadoras personales rivalizan en
potencia de computación con muchas minicomputadoras. Ahora se utilizan para muchas
aplicaciones que antes se realizaban en computadoras más grandes y más caras. Más aún, su
potencia aumenta a la vez que su precio disminuye progresivamente. El diseño de una computadora
personal permite un alto nivel de interacción entre el usuario y la computadora. Muchas aplicaciones
(por ejemplo, procesadores de texto, programas de diseño en ingeniería, programas de tratamiento
de gráficos, hojas de cálculo y programas de gestión de bases de datos) están especialmente
diseñadas para sacar realizar estos cálculos.
Partiendo de este entorno, proporcionando al usuario entrenado una amplia variedad de
herramientas creativas para escribir, dibujar o realizar cálculos numéricos. Las aplicaciones con
gráficos de alta resolución son también frecuentes.
Muchas veces se conectan computadoras personales con grandes computadoras o con otras
computadoras personales, permitiendo su utilización bien como dispositivos autónomos o bien como
terminales en una red de computadoras. Son frecuentes también las conexiones a través de líneas
telefónicas. Dentro de este contexto, podemos ver que las computadoras personales tienden a
complementar más que a reemplazar a las grandes computadoras.
Una computadora es una máquina y, como otras máquinas, como un automóvil o una podadora,
debe encenderse y luego conducirse, o controlarse, para hacer la tarea que se pretende realizar. En
un automóvil, por ejemplo, el control es proporcionado por el conductor, quien se sienta en su
interior y lo dirige. En una computadora, el conductor es un conjunto de instrucciones llamado
programa. De manera más formal, un programa de computadora es un conjunto independiente de
instrucciones usado para operar una computadora con el fin de producir un resultado específico.
Otro término para un programa o conjunto de programas es software.
El proceso de escribir un programa, o software, se llama programación, mientras al conjunto que
puede usarse para construir un programa se llama lenguaje de programación.
Los lenguajes de programación disponibles se presentan en una variedad de formas y tipos.
HISTORIA DE LA COMPUTACIÓN.
Las computadoras, como todos sabemos, son las máquinas de cálculo más avanzadas y eficientes
inventadas por el ser humano. Están dotadas del suficiente poder de operaciones, la suficiente
autonomía y velocidad como para reemplazarlo en muchas tareas, o permitirle dinámicas de trabajo
virtuales y digitales que nunca antes en la historia habían sido posibles.
La invención de este tipo de aparatos en el siglo XX revolucionó para siempre la manera en que
entendemos los procesos industriales, el trabajo, la sociedad y un sinfín de otras áreas de nuestra
vida. Afecta desde el modo mismo de relacionarnos, hasta el tipo de operaciones de intercambio de
información a escala mundial que somos capaces de realizar.
Siglo XIX Máquina analítica de Charles Babbage Lady Ada Lovelace es considerada la
primera programadora.
Los primeros computadores surgieron como máquinas de cálculo lógico, debido a las
necesidades de los aliados durante la Segunda Guerra Mundial. Para decodificar las
transmisiones de los bandos en guerra debían hacerse cálculos rápido y constantemente.
Por eso, la Universidad de Harvard diseñó en 1944 la primera computadora
electromecánica, con ayuda de IBM, bautizada Mark I. Ocupaba unos 15 metros de largo y
2,5 de alto, envuelta en una caja de vidrio y acero inoxidable. Contaba con 760.000 piezas,
800 kilómetros de cables y 420 interruptores de control. Prestó servicios durante 16 años.
Al mismo tiempo, en Alemania, se había desarrollado la Z1 y Z2, modelos de prueba de
computadores similares construidos por Konrad Zuse, quien completó su modelo Z3
totalmente operacional, basado en el sistema binario. Era más pequeño y de más barata
construcción que su competidor estadounidense.
La primera computadora de uso comercial en febrero de 1951 apareció la Ferranti Mark
1, una versión moderna de la computadora norteamericana del mismo nombre que estaba
disponible comercialmente. Fue sumamente importante en la historia del computador, pues
contaba con un índice de registros, que permitía la lectura más fácil de un conjunto de
palabras en la memoria.
Por esa razón surgieron hasta treinta y cuatro patentes distintas de su desarrollo. En los
años posteriores sirvió de base para la construcción de las computadoras IBM, muy exitosas
industrial y comercialmente.
El primer lenguaje de programación en 1953 apareció FORTRAN, acrónimo de The IBM
Mathematical Formula Translation (“Traducción de fórmulas matemáticas de IBM”),
desarrollado como el primer lenguaje formal de programación, o sea, el primer programa
diseñado para fabricar programas computacionales, por los programadores de IBM,
liderados por John Backus.
Inicialmente se desarrolló para el computador IBM 704, y para una variada gama de
aplicaciones científicas y de ingeniería, razón por la cual tuvo una amplia serie de versiones
a lo largo de medio siglo de implementación. Es todavía uno de los dos lenguajes de
programación más populares, especialmente para los supercomputadores del mundo.
La primera computadora moderna apareció en otoño de 1968, como un prototipo presentado
por Douglas Engelbart. Tenía por primera vez un ratón o puntero, y una interfaz gráfica de
usuario (GUI), cambiando para siempre el modo en que los usuarios y los sistemas
computarizados interactuarían en adelante.
La presentación del prototipo de Engelbart duró 90 minutos e incluyó una conexión en
pantalla con su centro de investigación, constituyendo así la primera videoconferencia de la
historia. Los modelos de Apple y luego de Windows fueron versiones posteriores de este
primer prototipo.
BIT (Binary DigiT): El bit representa la unidad mínima de información que almacena una
computadora.
BYTE: Está compuesto por 8 bit (01110011), entonces existe 28 = 256 combinaciones
diferentes (tabla de código ASCII).
Por lo general, la información se representa por caracteres y cada carácter (número, letra,
símbolo, etc.) es un byte. Para medir la información se utilizan múltiplos de bytes.
SISTEMAS DE NUMERACIÓN.
Todos los sistemas de numeración tienen una base, que es el número total de símbolos que
se utiliza el sistema. En el caso de la numeración decimal, la base es 10; en el sistema binario
es 2.
El Teorema Fundamental de la Numeración permite saber el valor decimal que tiene
cualquier número en cualquier base. Dicho teorema utiliza la fórmula:
Donde:
• Xi: Es el símbolo que se encuentra en la posición número i del número que se está
convirtiendo. Teniendo en cuenta que la posición de las unidades es la posición 0 (la posición
-1 sería la del primer decimal).
Por ejemplo, si tenemos el número 153,6 utilizando el sistema octal (base ocho), el paso a
decimal se sería:
CONVERSIÓN BINARIO A DECIMAL.
El Teorema Fundamental de la Numeración se puede aplicar para saber el número decimal
representado por un número escrito en binario. Así, para el número binario 10011011011
la conversión sería (los ceros se han ignorado):
Ahora las cifras binarias se toman al revés. Con lo cual, el número 100111 es el equivalente
en binario de 39.
REPRESENTACIÓN DE TEXTO EN EL SISTEMA BINARIO.
Puesto que una computadora no solo maneja números, habrá dígitos binarios que contengan
información no traducible al sistema decimal. Todo depende de cómo se interprete esa
traducción. Por ejemplo, en el caso del texto, lo que se hace es codificar cada carácter en
una serie de números binarios. El código ASCII ha sido durante mucho tiempo el más
utilizado, inicialmente era un código que utilizaba 7 bits para representar texto, lo que
significaba que era capaz de codificar 127 caracteres. Por ejemplo, el número 65 (1000001
en binario) se utiliza para la A mayúscula.
Poco después apareció un problema: este código bastaba para los caracteres del inglés,
pero no para otras lenguas. Entonces se añadió el octavo bit para representar otros 128
caracteres que son distintos, según idiomas (Europa Occidental usa unos códigos que no
utiliza Europa Oriental).
Eso provoca que un código como el 190 significa que cosas diferentes si cambiamos de país.
Por ello, cuando un ordenador necesita mostrar texto, tiene que saber qué juego de códigos
debe de utilizar, lo cual supone un tremendo problema.
Una ampliación de este método de codificación es el código UNICODE, que puede utilizar
hasta 4 bytes (32 bits), con lo que es capaz de codificar cualquier carácter en cualquier
lengua del planeta, utilizando el mismo conjunto de códigos. Poco a poco se ha ido
extendiendo cada vez más, pero la preponderancia histórica que ha tenido el código ASCII
complica su popularidad.
REPRESENTACIÓN BINARIA DE DATOS NO NUMÉRICOS NI DE TEXTO.
En el caso de datos más complejos (imágenes, vídeo, audio) se necesita una codificación
más compleja.
Además, en estos datos no hay estándares, por lo que hay decenas de formas de codificar.
En el caso, por ejemplo, de las imágenes, una forma básica de codificarlas en binario es la
que graba cada píxel (cada punto distinguible en la imagen) mediante tres bytes: el primero
graba el nivel de rojo; el segundo, el nivel de azul; y el tercero, el nivel de verde. Y así por
cada píxel.
Por ejemplo, un punto en una imagen de color rojo puro:
Naturalmente, en una imagen no solo se graban los píxeles sino el tamaño de la imagen, el
modelo de color, etc. De ahí que representar estos datos sea tan complejo para el ordenador
(y tan complejo entenderlo para nosotros).
Los programas (software).
Los programas o software son un conjunto de instrucciones ordenadas para ejecutarse de
forma rápida y precisa en una computadora. El software se divide en dos grupos: software
de sistema operativo y software de aplicaciones.
El proceso de escribir un programa se denomina programación, y el conjunto de
instrucciones que se utilizan para escribir un programa se llama lenguaje de programación.
Lenguajes de programación.
Sirve para escribir programas y permite la comunicación usuaria (programador) versus
máquina (PC).
Existen tres tipos de lenguajes de programación:
• Lenguaje de bajo nivel (ensamblador): Usa símbolos nemotécnicos, necesita ser traducido
al lenguaje de máquina y sigue siendo dependiente.
CAPÍTULO II
FUNDAMENTOS DE PROGRAMACIÓN
ALGORITMO.
Método que describe la solución de un problema computacional, mediante una serie de pasos
precisos, definidos y finitos.
Preciso: indicar el orden de realización en cada paso.
Definido: Repetir los pasos n veces y se obtiene el mismo resultado.
Finito: Tiene un número determinado de pasos.
La solución de un algoritmo debe describir tres partes:
Entrada: Datos que se necesita para poder ejecutarse.
Proceso: Acciones y cálculos a realizar.
Salida: Resultado esperado.
La palabra algoritmo procede del matemático Árabe Mohamed lbn Al Kow Rizmi, el cual
escribió sobre los años 800 y 825 su obra Quitad Al Mugabala, donde se recogía el sistema
de numeración hindú y el concepto del cero. Fibonacci, tradujo la obra al latín y la llamó:
Algoritmi Dicit. El lenguaje algorítmico es aquel que implementa una solución teórica a un
problema indicando las operaciones a realizar y el orden en el que se deben efectuarse. Por
ejemplo, en el caso de que nos encontremos en casa con un foco malogrado de una lámpara,
un posible algoritmo sería:
1. Comprobar si hay foco de repuesto.
2. En el caso de que las haya, sustituir el foco anterior por la nueva.
3. Si no hay foco de repuesto, bajar a comprar una nueva a la tienda y sustituir lo malogrado
por la nueva.
Los algoritmos son la base de la programación de ordenadores, ya que el programa de
ordenador se puede entender que son algoritmos escritos en un código especial entendible
por un ordenador.
Lo malo del diseño de algoritmos está en que no podemos escribir lo que deseemos, el
lenguaje a utilizar no debe dejar posibilidad de duda, debe recoger todas las posibilidades,
FASES EN LA CREACIÓN DE ALGORITMOS.
Hay tres fases en la elaboración de un algoritmo:
1. Análisis. En esta se determina cuál es exactamente el problema a resolver. Qué datos
forman la entrada del algoritmo y cuáles deberán obtenerse como salida.
2. Diseño. Elaboración del algoritmo.
3. Prueba. Comprobación del resultado. Se observa si el algoritmo obtiene la salida
esperada para todas las entradas.
HERRAMIENTAS DE UN ALGORITMO.
Para expresar la solución de un problema se pueden usar diferentes herramientas de
programación, tales como:
Diagrama de flujo (Flow Chart).
Diagrama N-S (Nassi-Schneiderman).
Pseudocódigo.
Diagrama de flujo: Es una representación gráfica que utiliza símbolos normalizados por
ANSI, y expresa las sucesivas instrucciones que se debe realizar para resolver el problema.
Estas instrucciones no dependen de la sintaxis de ningún lenguaje de programación, sino
que debe servir fácilmente para su transformación (codificación) en un lenguaje de
programación.
Diagrama de Nassi Scheneiderman (N-S): Conocido también como el diagrama de Chapin,
es como un diagrama de flujo, pero sin flechas y con cajas continuas.
COMENTARIOS.
Permiten describir y explicar, además sirve como ayuda para recordar y entender las
operaciones que se van a ejecutar. Los comentarios no son instrucciones, por lo tanto, al ser
traducido el código fuente a código binario (tiempo de compilación), los lenguajes de
programación los ignoran. Dependiendo el lenguaje de programación los comentarios se
escriben usando cierta simbología.
VARIABLES
Representa un espacio de memoria RAM, el cual guarda un valor que servirá para algún
proceso en particular; dicho valor puede ser modificado en cualquier momento. Las
variables tienen, por lo general, un identificador (nombre) y, asignado, el tipo de dato que
se está utilizando; es decir, si almacena un número (entero), si es texto o alfanumérico
(cadena), si es un valor verdadero o falso (lógico) llamado también booleano.
CONSTANTES
Representa un espacio de memoria RAM, el cual guarda un valor que servirá para algún
proceso en particular; dicho valor permanece fijo, es decir, no puede cambiarse en la
ejecución del programa. Las constantes tienen, al igual que las variables, un identificador
(nombre) y un tipo de dato.
Carácter: Representa un carácter de cualquier tipo: texto, número, símbolo, etc. El valor
se coloca entre comillas simples.
Lógico: Representan los valores «verdadero» o «falso», conocidos también como boolean,
no se colocan comillas simples ni dobles.
Usando la tabla podemos determinar cómo se almacenan dentro de una computadora los
caracteres ‘B’, ‘A’, ‘R’, ‘T’, ‘E’ y ‘R’, por ejemplo, usando el código de caracteres ASCII.
Esta secuencia de seis caracteres requiere seis bytes de almacenamiento (un byte por cada
letra) y se almacenaría como se ilustra en la figura.
El carácter escape
Un carácter que tiene un significado especial en C++ es la diagonal inversa, \, que se conoce
como carácter de escape. Cuando se coloca este carácter directamente frente a un grupo
selecto de caracteres, esto indica al compilador que escape de la forma en que estos
caracteres se interpretarían en forma normal. La combinación de una diagonal inversa y
estos caracteres específicos se llama secuencia de escape. La tabla siguiente enumera las
secuencias de escape más comunes en C++.
Para elevar a una potencia se usa Math. Pow (9.0, 2.0), dentro de los parámetros se coloca
números reales (double), y para división entera use / pero con números enteros.
Operadores relacionales: Llamados también operadores de comparación, y permiten
evaluar si dos valores guardan alguna relación entre sí.
Dependiendo del lenguaje de programación, los operadores varían o no, implementan uno
u otro operador; en el caso de C# varía la simbología en algunos.
Operadores lógicos: Son aquellos operadores que se utilizan en combinación con los
operadores de relación.
Para C# se utiliza la siguiente simbología:
Operadores de cadena: Son aquellos operadores que permiten realizar operaciones con
cadenas; por lo general, permiten unir en cadena, lo cual es llamado también «concatenar».