0% encontró este documento útil (0 votos)
54 vistas89 páginas

Unidad 1

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 89

UNIDAD 1. Sistemas de información. Orígenes de la informática y el.

Sociedad de la información. Desarrollo de Software

1 Introducción .......................................................................................... 3
2 Un poco de historia de los ordenadores .......................................................... 3
2.1 La era mecánica (1623-1945) ................................................................. 4
2.2 Ordenadores electrónicos de primera generación (1937-1953) .......................... 7
2.3 Segunda generación (1954-1962) ........................................................... 10
2.4 Tercera generación (1963-1972) ........................................................... 12
2.5 Cuarta generación (1972-1984) ............................................................. 14
2.6 Quinta generación Quinta generación (1984-2000) ...................................... 17
2.7 La sexta generación de ordenadores (2000-actualidad) ................................ 23
2.8 Una mirada al futuro ......................................................................... 25
3 Sistema binario de numeración .................................................................. 27
3.1 Historia del sistema binario ................................................................. 28
3.2 El sistema posicional ......................................................................... 29
3.3 Teorema fundamental de la numeración ................................................. 29
3.4 Representación ............................................................................... 30
3.5 Operaciones con números binarios ......................................................... 31
3.5.1 Conversión entre binario y decimal, binario y octal, y binario y hexadecimal 34
3.5.2 Ejercicios ................................................................................. 34
3.5.3 Representacion de números en el ordenador ....................................... 38
3.5.4 Representación de los números en punto flotante ................................. 38
3.5.4.1 Normalización de números ....................................................... 38
3.5.4.2 Propósito de números en punto flotante ....................................... 38
3.5.4.3 Cifras significativas ................................................................ 39
3.5.5 Estándar IEEE 754 ....................................................................... 40
3.6 Precisión Simple en el Estándar IEEE 754 ................................................. 41
3.6.1 Ejercicio .................................................................................. 42
3.7 Representación de texto en un ordenador. El código ASCII. ........................... 43
3.7.1 Ejercicio .................................................................................. 45
3.8 Representación de colores en un ordenador. RGB ....................................... 45
3.8.1 Cómo funciona una pantalla de ordenador RGB .................................... 47
4 Sistemas de Información .......................................................................... 49
4.1 Sistemas de información ..................................................................... 50
4.2 Sociedad de la información ................................................................. 54
5 Software ............................................................................................. 56
5.1 Tipos de software............................................................................. 57
5.2 Licencias de software ........................................................................ 62
6 Ingeniería de software ............................................................................ 64
6.1.1 Normas en Ingenieria del software ISO 9001 ........................................ 66
6.2 CICLO DE VIDA DEL SOFTWARE ............................................................. 67
6.2.1 DEFINICIÓN ............................................................................... 68
6.2.2 MODELOS DE CICLO DE VIDA ........................................................... 68
6.2.2.1 CICLO DE VIDA EN CASCADA ...................................................... 69
6.2.3 MODELOS EVOLUTIVOS.................................................................. 70
6.3 Analisis ......................................................................................... 73
6.3.1 Especificación de requisitos del sistema............................................. 74
6.4 Fase de diseño ................................................................................ 77
6.5 Fase de Desarrollo o Implementación software. ......................................... 79
6.5.1 Programa ................................................................................. 79
6.5.2 Proceso ................................................................................... 81
6.5.3 Lenguajes de programación ........................................................... 81
6.5.3.1 ¿Qué es un lenguaje de programación? ......................................... 82
6.5.3.2 ¿Qué tipos de lenguaje de programación existen? ............................ 82
6.5.3.2.1 Lenguaje de programación de bajo nivel .................................... 83
6.5.3.2.2 Lenguaje de programación de alto nivel .................................... 84
6.5.3.3 Para que sirven los lenguajes de programación ............................... 85
6.5.3.4 Compiladores e interpretes ...................................................... 86
6.6 Fase de pruebas............................................................................... 88
6.7 Fases de implantación y mantenimiento. ................................................. 89

Color coding

Amarillo: definiciones importantes.

Azul: conceptos y temas

Rojo: temas / cuestiones clave


1 Introducción
Esta unidad tendrá se enfocará en la introducción a la informática y sus efectos en la
sociedad actual. Comenzará revisando la historia de la informática. A partir de ahí,
introducirá contenidos y conceptos básicos como la sociedad de la información y los
sistemas de información.

Las tecnologías de la información están tan imbuidas en nuestra sociedad que se han
convertido en parte de nuestras vidas. Los usamos para programar nuestra vida diaria y
para producir la mayoría de nuestras comunicaciones. Teniendo esto en cuenta,
deberíamos encontrar un lugar preferente en nuestros planes de estudio educativos. El
objetivo de esta unidad y este curso es introducir a los estudiantes en contenidos más
avanzados, ya que ya han recibido educación formal en informática en años anteriores.

Por ultimo, trataremos del software y su desarrollo. Hasta convertirse en la industria más
potente de la historia el desarrollo software ha sufrido una evolución considerable desde
los primeros proyectos de los años 50 con gran tasa de fracasos hasta la gigaindustría que
es en la actualidad.

2 Un poco de historia de los ordenadores

Una historia completa de la informatica incluiría una multitud de dispositivos diversos


como el antiguo ábaco chino, el telar de Jacquard (1805) y la "máquina analítica" de
Charles Babbage (1834). También incluiría la discusión de arquitecturas de computación
mecánica, analógica y digital. Ya en la década de 1960, los dispositivos mecánicos, como
la calculadora de Marchant, ya encontraban una aplicación generalizada en la ciencia y la
ingeniería. Durante los primeros días de los dispositivos informáticos electrónicos, hubo
mucha discusión sobre los méritos relativos de los ordenadores analógicos frente a las
digitales.

De hecho, ya en la década de 1960, las computadoras analógicas se usaban rutinariamente


para resolver sistemas de ecuaciones de diferencia finita que surgía en el modelado de
yacimientos de petróleo. Al final, los dispositivos de computación digital demostraron
tener la potencia, la economía y la escalabilidad necesarias para hacer frente a los
cálculos a gran escala. Los ordenadores digitales ahora dominan el mundo de la
computación en todas las áreas que van desde la calculadora manual hasta la
supercomputadora y son omnipresentes en toda la sociedad. Por lo tanto, este breve
esbozo del desarrollo de la computación científica se limita al área de los ordenadores
digitales y electrónicos.

UT1- Introduccion a la informática y programación 3


La evolución de la computación digital a menudo se divide en generaciones. Cada
generación se caracteriza por mejoras drásticas con respecto a la generación anterior en
la tecnología utilizada para construir ordenadores, la organización interna de los sistemas
informáticos y los lenguajes de programación. Aunque generalmente no se asocia con
generaciones de computadoras, ha habido una mejora constante en los algoritmos,
incluidos los algoritmos utilizados en la ciencia computacional. La siguiente historia se ha
organizado utilizando estas generaciones ampliamente reconocidas como hitos.

2.1 La era mecánica (1623-1945)

La idea de usar máquinas para resolver problemas matemáticos se puede rastrear al menos
hasta principios del siglo 17. Los matemáticos que diseñaron e implementaron
calculadoras que eran capaces de sumar, restar, multiplicar y divisionar incluyeron a
Wilhelm Schickhard, Blaise Pascal y Gottfried Leibnitz.

El primer dispositivo informático multipropósito, es decir, programable, fue


probablemente el Difference Engine de Charles Babbage, o máquina diferencial, que se
inició en 1823 pero nunca se completó. Una máquina más ambiciosa fue la Máquina
Analítica. Fue diseñado en 1842, pero desafortunadamente fue completado parcialmente
por Babbage. Babbage fue realmente un hombre adelantado a su tiempo: muchos
historiadores piensan que la razón principal por la que no pudo completar estos proyectos
fue el hecho de que la tecnología de la época no era lo suficientemente confiable. A pesar
de nunca poder construir una máquina computacional completa, Babbage y sus colegas,
especialmente Ada, condesa de Lovelace, sobrina del escritor Lord Byron, desarrollaron
varias técnicas de programación importantes desde el nivel teórico, incluidas las
sentencias condicionales, los bucles iterativos y las variables de índice.

UT1- Introduccion a la informática y programación 4


Una máquina inspirada en el diseño de Babbage fue posiblemente la primera en ser
utilizada en la ciencia computacional. George Scheutz leyó sobre la máquina de
diferencias en 1833, y junto con su hijo Edvard Scheutz comenzó a trabajar en una versión
más pequeña. En 1853 habían construido una máquina que podía procesar números de 15
dígitos y calcular ecuaciones diferenciales de cuarto orden. Su máquina ganó una medalla
de oro en la Exposición de París en 1855, y más tarde la vendieron al Observatorio Dudley
en Albany, Nueva York, que la utilizó para calcular la órbita de Marte. Uno de los primeros
usos comerciales de las computadoras mecánicas fue por la Oficina del Censo de los
Estados Unidos, que utilizó equipos de tarjetas perforadas diseñados por Herman Hollerith
para tabular los datos del censo de 1890 en Estados Unidos. En 1911, la compañía de
Hollerith se fusionó con un competidor para fundar la corporación que en 1924 se convirtió
en International Business Machines IBM.

UT1- Introduccion a la informática y programación 5


La máquina tabulada procesó tarjetas perforadas para almacenar la información del censo
de los Estados Unidos. Además de la tecnología de máquina tabulada, Herman Hollerith y
su equipo reducen el tiempo de completar el censo de los Estados Unidos de 10 años a
menos de 2 años. Como resultado, se obtuvo una mejora de rendimiento de
aproximadamente el 400% en el tiempo. Como apunte final, la tarjeta perforada se utilizó
en informática hasta finales de los años 70, cuando las tecnologías magnéticas tomaron el
relevo en el almacenamiento masivo de datos por ordenador.

Video de historia de las computadoras:


https://www.youtube.com/watch?v=qBoJj6cvH-A

UT1- Introduccion a la informática y programación 6


2.2 Ordenadores electrónicos de primera generación (1937-1953)

Tres máquinas han sido señaladas en varias ocasiones como los primeros ordenadores
electrónicos. Estas máquinas utilizaban interruptores electrónicos, en forma de tubos de
vacío, en lugar de relés electromecánicos. En principio, los interruptores electrónicos eran
más fiables, ya que no tenían partes móviles que se desgastaran, pero la tecnología aún
era nueva en ese momento y los tubos eran comparables a los relés en confiabilidad. Sin
embargo, los componentes electrónicos tenían un beneficio importante: podían "abrirse"
y "cerrarse" aproximadamente 1.000 veces más rápido que los interruptores mecánicos.

Tubos de vacio

El primer intento de construir una computadora electrónica fue por J. V. Atanasoff,


profesor de física y matemáticas en Iowa State, en 1937. Atanasoff se propuso construir
una máquina que ayudaría a sus estudiantes de posgrado a resolver sistemas de ecuaciones
diferenciales parciales. En 1941 él y el estudiante graduado Clifford Berry habían logrado
construir una máquina que podía resolver 29 ecuaciones simultáneas con 29 incógnitas.
Sin embargo, la máquina no era programable, y era más una calculadora electrónica.

UT1- Introduccion a la informática y programación 7


Máquina Atanasof

Una segunda máquina electrónica precursora fue Colossus, diseñada por Alan Turing para
el ejército británico en 1943. Esta máquina jugó un papel importante en el descifrado de
los códigos utilizados por el ejército alemán en la Segunda Guerra Mundial. La principal
contribución de Turing al campo de la informática fue la idea de la máquina de Turing, un
formalismo matemático ampliamente utilizado en el estudio de las funciones
computables. La existencia de Colossus se mantuvo en secreto hasta mucho después de
que terminara la guerra, y el crédito debido a Turing y sus colegas por diseñar uno de los
primeros ordenadores electrónicas en funcionamiento tardó en llegar.

Colossus

UT1- Introduccion a la informática y programación 8


La primera computadora electrónica programable de propósito general fue el Electronic
Numerical Integrator and Computer (ENIAC), construido por J. Presper Eckert y John V.
Mauchly en la Universidad de Pensilvania. El trabajo comenzó en 1943, financiado por el
Departamento de Artillería del Ejército, que necesitaba una forma de calcular la balística
durante la Segunda Guerra Mundial. La máquina no se completó hasta 1945, pero luego se
utilizó ampliamente para los cálculos durante el diseño de la bomba de hidrógeno. Para
cuando fue dado de baja en 1955, se había utilizado para la investigación sobre el diseño
de túneles de viento, generadores de números aleatorios y predicción meteorológica.

Eckert, Mauchly y John von Neumann, consultor del proyecto ENIAC, comenzaron a
trabajar en una nueva máquina antes de que ENIAC estuviera terminado. La principal
contribución de EDVAC, su nuevo proyecto, fue la noción de un programa almacenado.
Existe cierta controversia sobre quién merece el crédito por esta idea, pero ninguna sobre
cuán importante fue la idea para el futuro de los ordenadores de propósito general. ENIAC
era controlado por un conjunto de interruptores y diales externos; para cambiar el
programa era necesario modificar físicamente la configuración de estos controles. Estos
controles también limitaron la velocidad de las operaciones electrónicas internas.
Mediante el uso de una memoria que era lo suficientemente grande como para contener
instrucciones y datos, y utilizando el programa almacenado en la memoria para controlar
el orden de las operaciones aritméticas, EDVAC pudo ejecutar instruccuines 10 órdenes
de magnitud más rápido que ENIAC. Al almacenar instrucciones en el mismo medio que los
datos, los diseñadores podrían concentrarse en mejorar la estructura interna de la
máquina sin preocuparse por igualarla a la velocidad de un control externo.

EDVAC

UT1- Introduccion a la informática y programación 9


Independientemente de quién merezca el crédito por la idea del programa almacenado,
el proyecto EDVAC es significativo como un ejemplo del poder de los proyectos
interdisciplinaress que caracterizan la ciencia computacional moderna. Al reconocer que
las funciones, en forma de una secuencia de instrucciones para una computadora, se
pueden codificar como números, el grupo EDVAC sabía que las instrucciones podrían
almacenarse en la memoria del ordenador junto con datos numéricos. La noción de usar
números para representar funciones fue un paso clave utilizado por Goedel en su teorema
de incompletitud en 1937, trabajo con el que von Neumann, como lógico matemático,
estaba bastante familiarizado. Los antecedentes de Von Neumann en lógica, combinados
con las habilidades de ingeniería eléctrica de Eckert y Mauchly, formaron un equipo
interdisciplinar muy poderoso.

La tecnología de software durante este período era muy primitiva. Los primeros programas
se escribieron en código máquina, es decir, los programadores escribieron directamente
los números binarios que correspondían a las instrucciones que querían almacenar en la
memoria. En la década de 1950, los programadores usaban una notación simbólica,
conocida como lenguaje ensamblador, y luego traducía a mano la notación simbólica al
código máquina. Los programas posteriores conocidos como ensambladores realizaron la
tarea de traducción.

Tan primitivas como eran, estas primeras máquinas electrónicas fueron bastante útiles en
ciencias aplicadas e ingeniería. Atanasoff estimó que tomaría ocho horas resolver un
conjunto de ecuaciones con ocho incógnitas usando una calculadora, y 381 horas resolver
29 ecuaciones para 29 incógnitas. La computadora Atanasoff-Berry pudo completar la
tarea en menos de una hora. El primer problema ejecutado en el ENIAC, una simulación
numérica utilizada en el diseño de la bomba de hidrógeno, requirió 20 segundos, en lugar
de cuarenta horas utilizando calculadoras mecánicas. Eckert y Mauchly más tarde
desarrollaron lo que podría decirse que fue la primera computadora comercialmente
exitosa, la UNIVAC; en 1952, 45 minutos después del cierre de las urnas y con el 7% de los
votos contados, UNIVAC predijo que Eisenhower derrotaría a Stevenson con 438 votos
electorales (terminó con 442).
Segunda generación (1954-1962)

2.3 Segunda generación (1954-1962)

Durante la segunda generación se contemplarón varios desarrollos importantes en todos


los niveles del diseño de sistemas informáticos, desde la tecnología utilizada para
construir los circuitos básicos hasta los lenguajes de programación utilizados para escribir
aplicaciones científicas.

Los interruptores electrónicos en esta época se basaban en la tecnología de diodos


discretos y transistores con un tiempo de conmutación de aproximadamente 0,3
microsegundos. Las primeras máquinas que se construyeron con esta tecnología incluyen
TRADIC en Bell Laboratories en 1954 y TX-0 en el Lincoln Laboratory del MIT. La tecnología
de memoria se basaba en núcleos magnéticos a los que se podía acceder en orden

UT1- Introduccion a la informática y programación 10


aleatorio, a diferencia de las líneas de retardo de mercurio, en las que los datos se
almacenaban como una onda acústica que pasaba secuencialmente a través del medio y
solo se podía acceder a ellos cuando los datos se movían por la interfaz de E/S.

Transistor

Las innovaciones más importantes en la arquitectura de computadores incluyeron registros


de índices para controlar bucles y unidades de coma flotante para cálculos basados en
números reales. Antes de esto, acceder a elementos sucesivos en una matriz era bastante
tedioso y a menudo implicaba escribir código auto-modificado (programas que se
modificaban a sí mismos a medida que se ejecutaban; en ese momento visto como una
poderosa aplicación del principio de que los programas y los datos eran fundamentalmente
iguales, esta práctica ahora está mal vista como extremadamente difícil de depurar y es
imposible en la mayoría de los lenguajes de alto nivel). Las operaciones de coma flotante
se realizaban mediante bibliotecas de rutinas de software en las primeras computadoras,
pero se realizaban en hardware en máquinas de segunda generación.

Durante esta segunda generación se introdujeron muchos lenguajes de programación de


alto nivel, incluyendo FORTRAN (1956), ALGOL (1958) y COBOL (1959). Las máquinas
comerciales importantes de esta época incluyen el IBM 704 y sus sucesores, el 709 y el
7094. Este último introdujo procesadores de E/S para un mejor rendimiento entre los
dispositivos de E/S y la memoria principal.

La segunda generación también vio los dos primeros superordenadores diseñados


específicamente para el procesamiento numérico en aplicaciones científicas. El término
"supercomputadora" generalmente se reserva para una máquina que es un orden de
magnitud más potente que otras máquinas de su época. Dos máquinas de la década de
1950 merecen este título. El Livermore Atomic Research Computer (LARC) y el IBM 7030
(también conocido como Stretch) fueron ejemplos tempranos de máquinas que
superponían las operaciones de memoria con las operaciones del procesador y tenían
formas primitivas de procesamiento paralelo.

Transistor video

UT1- Introduccion a la informática y programación 11


https://www.youtube.com/watch?v=w14cvydBC8g

2.4 Tercera generación (1963-1972)

La tercera generación trajo enormes mejoras en potencia computacional. Las


innovaciones en esta eran incluyen el uso de circuitos integrados, o CI (dispositivos
semiconductores con varios transistores integrados en un componente físico), memorias
de semiconductores que comienzan a usarse en lugar de núcleos magnéticos,
microprogramación como técnica para diseñar eficientemente procesadores complejos, la
mayoría de edad de la canalización y otras formas de procesamiento paralelo, y la
introducción de sistemas operativos y tiempo compartido.

Los primeros circuitos integrados se basaron en circuitos de integración a pequeña escala


(SSI), que tenían alrededor de 10 dispositivos o transistores por circuito (o ''chip''), y
evolucionaron al uso de circuitos integrados de mediana escala (MSI), que tenían hasta
100 dispositivos por chip. Se desarrollaron circuitos impresos multicapa y la memoria
central fue reemplazada por memorias de estado sólido más rápidas. Los diseñadores de
ordenadores comenzaron a aprovechar el paralelismo mediante el uso de múltiples
unidades funcionales, operaciones superpuestas de CPU y E/S, y pipeline (paralelismo
interno) tanto en el flujo de instrucciones como en el flujo de datos. En 1964, Seymour
Cray desarrolló el CDC 6600, que fue la primera arquitectura en utilizar el paralelismo
funcional. Mediante el uso de 10 unidades funcionales separadas que podían operar
simultáneamente y 32 bancos de memoria independientes, el CDC 6600 pudo alcanzar una
tasa de cálculo de 1 millón de operaciones de coma flotante por segundo (1 Mflops). Cinco
años más tarde, los CDC lanzaron el 7600, también desarrollado por Seymour Cray. El CDC
7600, con sus unidades funcionales canalizadas, se considera el primer procesador
vectorial y era capaz de ejecutarse a 10 Mflops.

Microchip

UT1- Introduccion a la informática y programación 12


Segmentación.

El IBM 360/91, lanzado durante el mismo período, era aproximadamente el doble de rápido
que el CDC 660. Empleaba instrucciones, separar unidades funcionales de coma flotante
e enteros y flujo de instrucciones pipeline o segmentado. El IBM 360-195 era comparable
al CDC 7600, derivando gran parte de su rendimiento de una memoria caché muy rápida.
La computadora SOLOMON, desarrollada por Westinghouse Corporation, y la ILLIAC IV,
desarrollada conjuntamente por Burroughs, el Departamento de Defensa y la Universidad
de Illinois, fueron representativas de las primeras computadoras paralelas. El Texas
Instrument Advanced Scientific Computer (TI-ASC) y el STAR-100 de CDC fueron
procesadores vectoriales pipeline o segmentado que demostraron la viabilidad de ese
diseño y establecieron los estándares para los procesadores vectoriales posteriores.

UT1- Introduccion a la informática y programación 13


IBM 360

A principios de los años 60, Cambridge y la Universidad de Londres cooperaron en el


desarrollo de CPL (Combined Programming Language, 1963). CPL fue, según sus autores,
un intento de capturar solo las características importantes del complicado y sofisticado
ALGOL. Sin embargo, al igual que ALGOL, CPL era comlejo con muchas características que
eran difíciles de aprender. En un intento de mayor simplificación, Martin Richards de
Cambridge desarrolló un subconjunto de CPL llamado BCPL (Basic Computer Programming
anguage, 1967). En 1970 Ken Thompson de Bell Labs desarrolló otra simplificación de CPL
llamada simplemente B, en relación con una implementación temprana del sistema
operativo UNIX.
Video de circuitos integrados:

https://www.youtube.com/watch?v=sTwRQDVHNiw

https://www.youtube.com/watch?v=igVtLuqmxyM

2.5 Cuarta generación (1972-1984)

La siguiente generación de sistemas informáticos vio el uso de la integración a gran escala


(LSI - 1000 dispositivos por chip) y la integración a gran escala (VLSI - 100,000 dispositivos
por chip) en la construcción de elementos informáticos. A esta escala, procesadores
enteros cabrán en un solo chip, y para sistemas simples, toda la computadora (procesador,
memoria principal y controladores de E / S) puede caber en un chip. Los retrasos en las
puertas se redujeron a aproximadamente 1ns por puerta.

Las memorias semiconductoras reemplazaron a las memorias centrales como la memoria


principal en la mayoría de los sistemas; hasta este momento, el uso de memoria
semiconductora en la mayoría de los sistemas se limitaba a registros y caché. Durante este
período, los procesadores vectoriales de alta velocidad, como cray 1, CRAY X-MP y CYBER

UT1- Introduccion a la informática y programación 14


205 dominaron la escena de la computación de alto rendimiento. Comenzaron a surgir
computadoras con gran memoria principal, como el CRAY 2. Una gran variedad de
arquitecturas paralelas aparece en esta generación; sin embargo, durante este período
los esfuerzos de computación paralela fueron de naturaleza principalmente experimental
y la mayor parte de la ciencia computacional se llevó a cabo en procesadores vectoriales.
Se introdujeron microcomputadoras y estaciones de trabajo y se utilizaron ampliamente
como alternativas a las computadoras mainframe de tiempo compartido. PC de IBM y el
MAC de Apple los microcomputadores llegan a las personas.

Procesador vectorial

Video procesador con segmentación

https://www.youtube.com/watch?v=x4GYDc5yEok

Los desarrollos en software incluyen lenguajes de alto nivel como FP (programación


funcional) y Prolog (programación en lógica). Estos lenguajes tienden a usar un estilo de
programación declarativa en oposición al estilo imperativo de Pascal, C, FORTRAN, et al.
En un estilo declarativo, un programador da una especificación matemática de lo que debe
calcularse, dejando muchos detalles de cómo debe calcularse al compilador y / o sistema
de tiempo de ejecución. Estos lenguajes aún no se utilizan ampliamente, pero son muy
prometedores como notaciones para programas que se ejecutarán en computadoras
masivamente paralelas (sistemas con más de 1,000 procesadores). Los compiladores para
lenguajes establecidos comenzaron a usar técnicas de optimización sofisticadas para
UT1- Introduccion a la informática y programación 15
mejorar el código, y los compiladores para procesadores vectoriales pudieron trabajar de
manera paralela bucles simples (convertir bucles en instrucciones únicas que iniciarían
una operación sobre un vector completo).

Ejemplos:
IMPERATIVO: es decir, como una secuencia de operaciones a realizar.

for (let person of people) {


if (person.age <= 12) {
kid_names.push(person.name);
}
}

Lenguajes como SQL soportan otra manera de programar llamada Programación


Declarativa.

Con esta forma DECLARATIVA, especificamos lo que queremos obtener o hacer en lugar
de cómo:

SELECT name FROM people AS kids WHERE age <= 12;

Selecciona las personas y nombralos como niños con edad menor de 12. Se dice el que
debe hacer la instrucción, pero no el como.

UT1- Introduccion a la informática y programación 16


Dos eventos importantes marcaron la primera parte de la tercera generación: el desarrollo
del lenguaje de programación C y el sistema operativo UNIX, ambos en Bell Labs. En 1972,
Dennis Ritchie, buscando cumplir con los objetivos de diseño de CPL y generalizar el B de
Thompson, desarrolló el lenguaje C. Thompson y Ritchie luego usaron C para escribir una
versión de UNIX para el DEC PDP-11. Este UNIX basado en C pronto fue portado a muchas
computadoras diferentes, aliviando a los usuarios de tener que aprender un nuevo sistema
operativo cada vez que cambian el hardware de la computadora. UNIX o un derivado de
UNIX es ahora un estándar de facto en prácticamente todos los sistemas informáticos.

2.6 Quinta generación Quinta generación (1984-2000)

El desarrollo de la próxima generación de sistemas informáticos se caracteriza


principalmente por la aceptación del procesamiento paralelo. Hasta este momento, el
paralelismo se limitaba a la segmentación y el procesamiento vectorial, o a lo sumo a unos
UT1- Introduccion a la informática y programación 17
pocos procesadores que compartían trabajos. Durante la quinta generación se produjo la
introducción de máquinas con cientos de procesadores que podrían estar trabajando en
diferentes partes de un solo programa. La escala de integración en semiconductores
continuó a un ritmo increíble: en 1990 fue posible construir chips con un millón de
componentes, y las memorias de semiconductores se convirtieron en estándar en todas
las computadoras. La escala ULSI (ultra large scale integration) y GLSI ((ultra large scale
integration) de hasta 10 millones de componentes o transistores en un unico chip.

Otras novedades en esta eran son el uso generalizado de redes informáticas y el uso cada
vez mayor de estaciones de trabajo de un solo usuario. Antes de 1985, el procesamiento
paralelo a gran escala se consideraba un objetivo de investigación, pero dos sistemas
introducidos en esta época son típicos de los primeros productos comerciales que se basan
en el procesamiento paralelo. El Sequent Balance 8000 conectaba hasta 20 procesadores
a un solo módulo de memoria compartida (pero cada procesador tenía su propia caché
local). La máquina fue diseñada para competir con el DEC VAX-780 como un sistema Unix
de propósito general, con cada procesador trabajando en el trabajo de un usuario
diferente. Sin embargo, Sequent proporcionó una librerias de subrutinas que permitiría a
los programadores escribir programas que usarían más de un procesador, y la máquina fue
ampliamente utilizada para explorar algoritmos paralelos y técnicas de programación.

UT1- Introduccion a la informática y programación 18


Procesador paralelo

El Intel iPSC-1, apodado "the hipercube", adoptó un enfoque diferente. En lugar de utilizar
un módulo de memoria, Intel conectó cada procesador a su propia memoria y utilizó una
interfaz de red para conectar los procesadores. Esta arquitectura de memoria distribuida
significaba que la memoria ya no era un cuello de botella y se podían construir sistemas
grandes (que usaban más procesadores). El iPSC-1 más grande tenía 128 procesadores.

La computación científica en este período todavía estaba dominada por el procesamiento


vectorial. La mayoría de los fabricantes de procesadores vectoriales introdujeron modelos
paralelos, pero había muy pocos (de dos a ocho) procesadores en estas máquinas paralelas.
En el área de redes de computadoras, tanto la tecnología de red de área extensa (WAN)
como la de red de área local (LAN) se desarrollaron a un ritmo rápido, estimulando una
transición del entorno informático de mainframe tradicional hacia un entorno de
computación distribuida en el que cada usuario tiene su propia estación de trabajo para
tareas relativamente simples (edición y compilación de programas, lectura de correo) pero
compartiendo grandes, recursos costosos como servidores de archivos y
supercomputadoras.

UT1- Introduccion a la informática y programación 19


Video ordenadores personales:

https://www.youtube.com/watch?v=XTgbQsjU_XA

En las innovaciones de software es notable la aparición de los ordenadores personales. Bill


Gates logró hablar con IBM para que dejara que Microsoft hiciera el sistema operativo y
Gates procedió a hacer una fortuna con MS-DOS. Por otro lado, Steve Jobs, y Steve
Vozniak, fundadores de Apple, desarrollan de Macintosh, un ordenador personal en disputa
con el IBM PC. A medida que más fabricantes se unen a la carrera de las computadoras
personales, los precios del hardware bajaron y finalmente IBM perdió la batalla de las
computadoras personales, que estaban en manos de fabricantes más baratos. Sin embargo,
lo que se volvió relevante o más importante en este período no fue el hardware. Las
empresas más destacadas son las empresas de software. La competencia entre Apple y
Microsoft continúa hoy en día, aunque habría que añadir a la ecuación el sistema operativo
android y todo el software desarrollado por Alphabet Inc., la empresa matriz de Google.

UT1- Introduccion a la informática y programación 20


En este período a finales del siglo 20 es digno de mención el surgido de Internet. Tim
Berners-Lee,un científico británico, inventó la World Wide Web (WWW) en 1989,
mientras trabajaba en el CERN. La web fue concebida y desarrollada originalmente para
satisfacer la demanda de intercambio automatizado de información entre científicos en
universidades e institutos de todo el mundo.

Al principio internet era una fuente de información. Las webs estáticas servían para
publicar artículos para Científicos y Universidades. Además, las empresas privadas
comenzaron a publicar sus sitios web para ofrecer información y como herramienta de
marketing.

A mediados de los años 90, la web dinámica se creó con Javascript y algunos entornos de
servidores backend dieron a los sitios web la oportunidad de interactuar con servidores de
bases de datos y servidores empresariales. Resultó ser la etapa inicial de las aplicaciones
web. En este punto, los usuarios de Internet pueden interactuar con los servidores, enviar
y recibir datos desde su navegador a una computadora servidor. Este cambio llevó al
desarrollo de las primeras aplicaciones de comercio electrónico como Amazon o PayPal.

Jeff Bezos fundó Amazon en julio de 1994. Eligió Seattle debido al talento técnico, ya que
la sede de Microsoft se encuentra situada allí. En mayo de 1997, Amazon salió a bolsa.
Comenzó a vender música y videos en 1998, momento en el que comenzó a operar a nivel
internacional mediante la adquisición de vendedores en línea de libros en el Reino Unido

UT1- Introduccion a la informática y programación 21


y Alemania. Al año siguiente, Amazon comenzó a vender artículos que incluyen
videojuegos, productos electrónicos de consumo, artículos de mejoras para el hogar,
software, juegos y juguetes.

A partir de este instante, la informática y el desarrollo de software están altamente


orientados a Internet. El siguiente gran cambio serían los teléfonos celulares, que en la
primera etapa de su desarrollo ofrecían servicios de voz.

Video internet:

https://www.youtube.com/watch?v=mGG5o6vbKyQ

UT1- Introduccion a la informática y programación 22


2.7 La sexta generación de ordenadores (2000-actualidad)

En hardware, el uso de la nanotecnología es una característica de las computadoras de


sexta generación. Esto aumenta en gran medida el tiempo de procesamiento de la
computadora y la asistencia al consumidor. Las computadoras con múltiples CPU pueden
realizar cálculos complejos y multitarea. Cuando una sola CPU puede realizar múltiples
tareas simultáneamente, esto se considera una tarea múltiple. El avance de los teléfonos
inteligentes, teléfonos celulares con capacidades informáticas, ha cambiado
drásticamente la escena de TI. Hoy en día, estamos continuamente conectados a redes
que proporcionan múltiples servicios, como datos e Internet, GPS, geolocalización, etc.
Estamos en la escala de integración XLSI (Extreme Large Scale Integration)

La quinta generación de computadoras agregó Internet y el protocolo TCP/IP como parte


de sus sistemas operativos. En la sexta generación, las computadoras están orientadas a
la conexión. Tanto la computadora portátil como los teléfonos inteligentes son sensibles
a múltiples cambios, a eventos. Una nueva forma de socializar se apodera de nuestras
relaciones a medida que las redes sociales aumentan drásticamente en uso. Comunicamos
nuestra ubicación, progresos, logros, tiempo de licencia, hogar, etc. como si de páginas
web se tratase. Ofrecemos textos cortos, imágenes, videos y contenido multimedia, a
través de redes sociales, como Facebook, Tiktok, Twitter.

Además, el mundo entero está geograficamente mapeado digitalmente con aplicaciones


como Google Maps, y eso da como resultado que nuestro teléfono sepa cuál es la posición
exacta en un momento dado. Por ejemplo, un teléfono inteligente o computadoras

UT1- Introduccion a la informática y programación 23


portátiles modernas contienen sensores. Los giroscopios y el GPS interactúan con los
sistemas en términos de movimiento, dirección y cambio de posición. Nuestra pantalla
táctil reacciona al cambio en las condiciones de luz debido a la detección de sensores de
luz.

Nuestras aplicaciones aprovechan estos datos para ofrecer una ingente cantidad de
información para los mercados. Estos datos son procesados por servidores con capacidades
de inteligencia artificial. Además, este software de servidor estudia nuestro
comportamiento para ofrecer los mejores servicios en función de nuestra rutina diaria. Se
podría decir que estamos completamente rastreados por máquinas, que supuestamente
nos monitorean para ofrecer un servicio de calidad.

Las dos figuras más innovadoras en estos desarrollos son Apple y Google. El Ipod, el Ipad
y el iPhone, el sistema operativo Android, el algoritmo de búsqueda de Google, la
geolocalización y todas las aplicaciones rodeadas ahorran tiempo y hacen la vida más fácil
a la humanidad.

Como nuevos gadgets, la inteligencia artificial aplicada a los juegos de control de voz y
las aplicaciones de escritura son fáciles con las aplicaciones de sexta generación. Los
jugadores entusiastas verán videojuegos con un detalle impresionante con acción realista.
El procesamiento paralelo permite velocidades de videojuegos más rápidas. Dado que la
huella digital del semiconductor se vuelve más pequeña mediante el uso de la
nanotecnología, el usuario tiene más flexibilidad en el uso de la computadora.

A partir de 2017, una nueva tecnología se integra lentamente en nuestra TI, la realidad
aumentada. Es una fuente de posibilidades debido a la integración de la realidad virtual
y la realidad. Prácticamente podemos probarnos ropa o un nuevo peinado. Podemos
previsualizar la decoración de nuestro salón.

UT1- Introduccion a la informática y programación 24


Sin embargo, están configurados para promover el negocio, sin embargo, administran
nuestros datos privados. Hay una delgada línea roja que las empresas de tecnología están
traspasando, mientras que la legislación parece estar obsoleta. Como nuestra vida está
tan monitoreada por la tecnología, nos enfrentamos a algunos peligros en las actividades
de piratería. Las cuentas bancarias, las tarjetas de crédito, la información personal, etc.,
podrían hipotéticamente estar en manos de bandas de hackers organizados.

2.8 Una mirada al futuro

Cuando los bits cuánticos o bits procesan cálculos, generalmente son más rápidos que las
computadoras convencionales. Esta tecnología funciona con el ordenador y el procesador
de memoria. Los lenguajes complejos como el inglés, el chino, el francés y el español se
manejan fácilmente utilizando bits cuánticos o bits cuánticos. La computadora cuántica
debe resolver problemas de computación en minutos que las computadoras tradicionales
tomarían años. Es un nuevo ámbito de la computadora donde consideramos más que los
dos estados binarios, 0 o 1.

Las computadoras ahora pueden entender e interpretar muchos idiomas con la nueva
tecnología avanzada disponible.

Este nuevo progreso permitirá a los estudiantes y personas con discapacidades pueden
comunicar comandos a la computadora sin tocar el dispositivo físico. El reconocimiento
de voz también es útil en salas de laboratorio asepticas, quirófanos o incluso en el servicio
al cliente. El reconocimiento de voz mejorará en gran medida la capacidad del mundo
para crear nuevas tecnologías.

UT1- Introduccion a la informática y programación 25


Ordenador Cuantico

UT1- Introduccion a la informática y programación 26


2.9 Tarea Tabla generaciones de ordenadores

Tarea Tabla generaciones de ordenadores

Rellenar esta tabla usando la información del apartado Historia de la informática

Generacion Tecnología Lenguajes de Ordenadores Personajes


/Nombre programacion influyentes

Era mecánica

Primera/ Tubos de vacio, Interruptores, EDVAC, ENIAC, Von NewMann


Primeros interruptores cables, Lenguaje Colossus Alan Turing
ordenadores máquina
electronicos
Segunda Transistores Fortran, Algol, TRADIC en Bell
Laboratories, IBM
6030, TX-0 en el
Lincoln Laboratory
del MIT
Tercera
Cuarta
Quinta
Sexta

3 Sistema binario de numeración

UT1- Introduccion a la informática y programación 27


3.1 Historia del sistema binario

Página del artículo Explication de l'Arithmétique Binaire de Leibniz

El antiguo matemático hindú Pingala presentó la primera descripción que se conoce de un


sistema de numeración binario en el siglo tercero antes de nuestra era, lo cual coincidió
con su descubrimiento del concepto del número cero.

Una serie completa de 8 trigramas y 64 hexagramas, análogos a 3 bit y números binarios


de 6 bit, eran conocidos en la antigua china en el texto clásico del I Ching. Series similares
de combinaciones binarias también han sido utilizados en sistemas de adivinación
tradicionales africanos como el Ifá, así como en la geomancia medieval occidental.

Un array binario ordenado de los hexagramas del I Ching, representando la secuencia


decimal de 0 a 63, y un método para generar el mismo, fue desarrollado por el erudito y
filósofo Chino Shao Yong en el siglo XI. Sin embargo, no hay ninguna prueba de que Shao
entendió el cómputo binario.

En 1605 Francis Bacon habló de un sistema por el cual las letras del alfabeto podrían
reducirse a secuencias de dígitos binarios, la cuales podrían ser codificados como
variaciones apenas visibles en la fuente de cualquier texto arbitrario. En gran medida para
la teoría general de codificación de binario, él añadió que este método podría ser usado
con cualquier objeto en absoluto: "siempre que aquellos objetos sean capaces de solo una
diferencia doble; como por campanas, por trompetas, por luces y antorchas, según el
informe de Mosquetes, y cualquier instrumento de naturaleza parecida." (podéis buscar el
código de Bacon).

El sistema binario moderno fue documentado en su totalidad por Leibniz, en el siglo


diecisiete, en su artículo "Explication de l'Arithmétique Binaire". En él se mencionan los

UT1- Introduccion a la informática y programación 28


símbolos binarios usados por matemáticos chinos. Leibniz usó el 0 y el 1, al igual que el
sistema de numeración binario actual.

En 1854, el matemático británico George Boole, publicó un artículo que marcó un antes y
un después, detallando un sistema de lógica que terminaría denominándose Álgebra de
Boole. Dicho sistema jugaría un papel fundamental en el desarrollo del sistema binario
actual, particularmente en el desarrollo de circuitos electrónicos.

En 1937, Claude Shannon realizó su tesis doctoral en el MIT, en la cual implementaba el


Álgebra de Boole y aritmética binaria utilizando relés y conmutadores por primera vez en
la historia. Titulada Un Análisis Simbólico de Circuitos Conmutadores y Relés, la tesis de
Shannon básicamente fundó el diseño práctico de circuitos digitales.

En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los Laboratorios
Bell, construyó un ordenador basado en relés - al cual apodó "Modelo K" (porque lo
construyó en una cocina, en inglés "kitchen")- que utilizaba la suma binaria para realizar
los cálculos.

Los Laboratorios Bell autorizaron un completo programa de investigación a finales de 1938,


con Stibitz al mando. El 8 de enero de 1940 terminaron el diseño de una Calculadora de
Números Complejos, la cual era capaz de realizar cálculos con números complejos. En una
demostración en la conferencia de la Sociedad Americana de Matemáticas, el 11 de
septiembre de 1940, Stibitz logró enviar comandos de manera remota a la Calculadora de
Números Complejos a través de la línea telefónica mediante un teletipo. Fue la primera
máquina computadora utilizada de manera remota a través de la línea de teléfono.
Algunos participantes de la conferencia que presenciaron la demostración fueron John Von
Neumann, John Mauchly y Norbert Wiener, el cual escribió acerca de dicho suceso en sus
diferentes tipos de memorias en la cual alcanzo diferentes logros.

3.2 El sistema posicional

Un sistema de numeración es un conjunto de símbolos y reglas de generación que


permiten construir todos los números válidos. Un sistema de numeración puede obtenerse
como:

3.3 Teorema fundamental de la numeración


Este teorema establece la forma general de construir números en un sistema de
numeración posicional. Primero estableceremos unas definiciones básicas:

• N, número válido en el sistema de numeración.


• B base del sistema de numeración. Número de símbolos permitidos en el sistema.
• di un símbolo cualquiera de los permitidos en el sistema de numeración.
• N, número de dígitos de la parte entera.
UT1- Introduccion a la informática y programación 29
• La “,” coma fraccionaria. Símbolo utilizado para separar la parte entera de un
número de su parte fraccionaria.
• k número de dígitos de la parte decimal.

La fórmula general para construir un número N, con un número finito de decimales, en un


sistema de numeración posicional de base b es la siguiente:

El valor total del número será la suma de cada dígito multiplicado por la potencia de la
base correspondiente a la posición que ocupa en el número.
Esta representación posibilita la realización de sencillos algoritmos para la ejecución de
operaciones aritméticas.

Ejemplo en el sistema decimal

En el sistema decimal los símbolos válidos para construir números son {0,1,...9} (0 hasta
9, ambos incluidos), por tanto la base (el número de símbolos válidos en el sistema) es
diez

En la figura inferior podemos ver el teorema fundamental de la numeración aplicado al


sistema decimal.

Para calcular el valor del número

1234,4 aplicando el teorema fundamental de la numeración

1234,4 = 1x103 + 2x102 + 3x101 + 4x100 + 4x10-1

3.4 Representación

UT1- Introduccion a la informática y programación 30


Un número binario puede ser representado por cualquier secuencia de bits (dígitos
binarios), que a su vez pueden ser representados por cualquier mecanismo capaz de estar
en dos estados mutuamente exclusivos. Las secuencias siguientes de símbolos podrían ser
interpretadas todas como el mismo valor binario numérico:

1010011010
|-| --||-|-
xoxooxxoxo
ynynnyynyn

El valor numérico representado en cada caso depende del valor asignado a cada símbolo.
En un ordenador, los valores numéricos pueden ser representados por dos voltajes
diferentes y también se pueden usar polaridades magnéticas sobre un disco magnético.
Un "positivo", "sí", o "sobre el estado" no es necesariamente el equivalente al valor
numérico de uno; esto depende de la arquitectura usada.

De acuerdo con la representación acostumbrada de cifras que usan números árabes, los
números binarios comúnmente son escritos usando los símbolos 0 y 1. Cuando son escritos,
los números binarios son a menudo subindicados, prefijados o sufijados para indicar su
base, o la raíz. Las notaciones siguientes son equivalentes:
• 100101 binario (declaración explícita de formato)
• 100101b (un sufijo que indica formato binario)
• 100101B (un sufijo que indica formato binario)
• bin 100101 (un prefijo que indica formato binario)
• 1001012 (un subíndice que indica base 2 (binaria) notación)
• %100101 (un prefijo que indica formato binario)
• 0b100101 (un prefijo que indica formato binario, común en lenguajes de
programación)

3.5 Operaciones con números binarios

Podemos aplicar el teorema fundamental de la numeración para transformar de binario

Suma de números Binarios


Las posibles combinaciones al sumar dos bits son
• 0+0=0
• 0+1=1
• 1+0=1
• 1 + 1 = 10

100110101
+ 11010101
———————————
1000001010

UT1- Introduccion a la informática y programación 31


Operamos como en el sistema decimal: comenzamos a sumar desde la derecha, en nuestro
ejemplo, 1 + 1 = 10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1"
se llama acarreo o arrastre). A continuación, se suma el acarreo a la siguiente columna:
1 + 0 + 0 = 1, y seguimos hasta terminar todas las columnas (exactamente como en
decimal).

Resta de números binarios

El algoritmo de la resta en binario es el mismo que en el sistema decimal. Pero conviene


repasar la operación de restar en decimal para comprender la operación binaria, que es
más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y
diferencia.

Las restas básicas 0-0, 1-0 y 1-1 son evidentes:


• 0-0=0
• 1-0=1
• 1-1=0
• 0 - 1 = no cabe o se pide prestado al proximo.

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada
de la posición siguiente: 10 - 1 = 1 y me llevo 1, lo que equivale a decir en decimal, 2 - 1
= 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos
algunos ejemplos:

Restamos 17 - 10 = 7 (2=345) Restamos 217 - 171 = 46 (3=690)


10001 11011001
-01010 -10101011
—————— —————————
00111 00101110

A pesar de lo sencillo que es el procedimiento, es fácil confundirse. Tenemos interiorizado


el sistema decimal y hemos aprendido a restar mecánicamente, sin detenernos a pensar
en el significado del arrastre. Para simplificar las restas y reducir la posibilidad de cometer
errores hay varias soluciones:

• Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide
una resta larga en tres restas cortas:
100110011101 1001 1001 1101
-010101110010 -0101 -0111 -0010
————————————— = ————— ————— —————

UT1- Introduccion a la informática y programación 32


010000101011 0100 0010 1011

Producto de números binarios

El algoritmo del producto en binario es igual que en números decimales; aunque se lleva
cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el
elemento neutro del producto.

Por ejemplo, multipliquemos 10110 por 1001:


10110
1001
—————————
10110
00000
00000
10110
—————————
11000110

En sistemas electrónicos, donde se suelen utilizar números mayores, no se utiliza este


método sino otro llamado algoritmo de Booth.

División de números binarios

La división en binario es similar a la decimal, la única diferencia es que a la hora de hacer


las restas, dentro de la división, estas deben ser realizadas en binario. Por ejemplo, vamos
a dividir 100010010 (274) entre 1101 (13):

100010010 |1101
——————
- 0000 010101
———————
10001
- 1101
———————
01000
- 0000
———————
10000
- 1101
———————
00111
- 0000
———————
01110

UT1- Introduccion a la informática y programación 33


- 1101
———————
00001

3.5.1 Conversión entre binario y decimal, binario y octal, y binario y


hexadecimal

Binario a decimal

Para realizar la conversión de binario a decimal, realice lo siguiente, aplicamos el teorema


fundamental de la numeración:

1. Inicie por el lado derecho del número en binario, cada número multiplíquelo por 2
y elévelo a la potencia consecutiva (comenzando por la potencia 0).
2. Después de realizar cada una de las multiplicaciones, sume todas y el número
resultante será el equivalente al sistema decimal.
Ejemplos:
• 110101 (binario) = 53 (decimal). Proceso:

Posición en el número n 6 5 4 3 2 1
Potencia 2n-1 25 24 23 22 21 20
Cifra = 1 1 0 1 0 1
Calculo = cifra x potencia 32 16 0 4 0 1
Resultado 32+16+0+4+1= 53

Numero en Decimal = 1x20 + 0x20+ 1x22+ 0x23+ 1x24+ 1x25 = 53

3.5.2 Ejercicios

1. Transformar de binario a decimal 10010111 (binario) = 151 (decimal). Realizar


los cálculos vosotros

Posición en el número n 8 7 6 5 4 3 2 1
Potencia 2 n-1 27 26 25 24 23 22 21 20
Cifra =
Calculo = cifra x potencia
UT1- Introduccion a la informática y programación 34
Resultado

2. Calcular el numero decimal para el número binario 1011101110, sin usar la tabla
aplicando el teorema directamente.

Numero en Decimal =

Decimal a binario

Se divide el número decimal entre 2 cuyo resultado entero se vuelve a dividir entre 2 y
así sucesivamente. Una vez llegados al 1 indivisible se cuentan el último cociente, es decir
el uno final (todo número binario excepto el 0 empieza por uno), seguido de los residuos
de las divisiones subsiguientes. Del más reciente hasta el primero que resultó. Este número
será el binario que buscamos. A continuación, se puede ver un ejemplo con el número
decimal 100 pasado a binario.

100 |_2
0 50 |_2
0 25 |_2 --> 100 1100100
1 12 |_2
0 6 |_2
0 3 |_2
1 1

Otra forma de conversión consiste en un método parecido a la factorización en números


primos. Es relativamente fácil dividir cualquier número entre 2. Este método consiste
también en divisiones sucesivas. Dependiendo de si el número es par o impar, colocaremos
un cero o un uno en la columna de la derecha. Si es impar, le restaremos uno y seguiremos
dividiendo por dos, hasta llegar a 1. Después sólo nos queda tomar el último resultado de
la columna izquierda (que siempre será 1) y todos los de la columna de la derecha y
ordenar los dígitos de abajo a arriba. Y luego se haría un cuadro con las potencias con el
resultado.

Ejemplo:
100|0
50|0
25|1 --> 1, 25-1=24 y seguimos dividiendo por 2
12|0
6|0
3|1
1|1 --> 100 1100100

UT1- Introduccion a la informática y programación 35


Y también tenemos otro método el método de distribución en el que distribuimos el
número decimal y podemos tener el resultado en binario, trabaja de la siguiente manera
tenemos el número 151 lo que tenemos que hacer es distribuir este número buscando el
número más próximo; en este caso es 128 así que en la casilla donde hay capacidad de
contener el número que tenemos lo vamos marcando. y en las casillas que no empleamos
las marcaremos con un 0.

Ejemplo:
2^0= 1|1
2^1= 2|1
2^2= 4|1
2^3= 8|0
2^4= 16|1
2^5= 32|0
2^6= 64|0
2^7= 128|1 128+16+4+2+1=151
2^8= 256|0
Y sucesivos.

Binario a octal

Para realizar la conversión de binario a octal, realice lo siguiente:

1) Agrupe la cantidad binaria en grupos de 3 en 3 iniciando por el lado derecho. Si al


terminar de agrupar no completa 3 dígitos, entonces agregue ceros a la izquierda.
2) Posteriormente vea el valor que corresponde de acuerdo a la tabla:

Número en binario 000 001 010 011 100 101 110 111

Número en octal 0 1 2 3 4 5 6 7

3) La cantidad correspondiente en octal se agrupa de izquierda a derecha.


Ejemplos:
• 110111 (binario) = 67 (octal). Proceso:
111 = 7
110 = 6
Agrupe de izquierda a derecha: 67
• 11001111 (binario) = 317 (octal). Proceso:
111 = 7
001 = 1
11 entonces agregua un cero, con lo que se obtiene 011 = 3
Agrupe de izquierda a derecha: 317
• 1000011 (binario) = 103 (octal). Proceso:
UT1- Introduccion a la informática y programación 36
011 = 3
000 = 0
1 entonces agregue 001 = 1
Agrupe de izquierda a derecha: 103.

Octal a binario

Cada dígito octal se lo convierte en su binario equivalente de 3 bits y se juntan en el


mismo orden. Ejemplo:
• 247 (octal) = 010100111 (binario). El 2 en binario es 10, pero en binario de 3 bits es
Oc(2) = B(010); el Oc(4) = B(100) y el Oc(7) = (111), luego el número en binario será
010100111.

Binario a hexadecimal

Para realizar la conversión de binario a hexadecimal, realice lo siguiente:

1) Agrupe la cantidad binaria en grupos de 4 en 4 iniciando por el lado derecho. Si al


terminar de agrupar no completa 4 dígitos, entonces agregue ceros a la izquierda.
2) Posteriormente vea el valor que corresponde de acuerdo a la tabla:

Número en binario 0000 0001 0010 0011 0100 0101 0110 0111

Número en
0 1 2 3 4 5 6 7
hexadecimal

Número en binario 1000 1001 1010 1011 1100 1101 1110 1111

Número en
8 9 A B C D E F
hexadecimal

3) La cantidad correspondiente en hexadecimal se agrupa de izquierda a derecha.


Ejemplos:
110111010 (binario) = 1BA (hexadecimal). Proceso:

1010 = A
1011 = B
1 entonces agregue 0001 = 1
Agrupe de izquierda a derecha: 1BA
• 11011110101 (binario) = 6F5 (hexadecimal). Proceso:
0101 = 5
1111 = F
110 entonces agregue 0110 = 6
Agrupe de izquierda a derercha: 6F5

UT1- Introduccion a la informática y programación 37


3.5.3 Representacion de números en el ordenador

Los números enteros se guardan en 32 o 64 bits en binario como hemos visto en el apartado
anterior. Por ejemplo, para el numero 3000 el ordenador lo guardaría en 32 bits de la
siguiente manera, rellenando a la izquierda con ceros, siendo el primer bit, bit de signo.
0 para positivo uno para negativo

Bit de signo
0 000 0000 0000 0001 1010 1110 1101 1100 -> 3000

Y si es negativo se escribe un 1

Bit de signo
1 000 0000 0000 0001 1010 1110 1101 1100 -> - 3000

Para números decimales la notación es mas complicada lo que conocemos como mantisa
más exponente.

3.5.4 Representación de los números en punto flotante

Se denominan Números en Punto Flotante a las representaciones internas del procesador


que modelan a los números reales. En forma externa, se representan números con punto
decimal tal como 3.1415926 o en notación científica 314159.512x10–5, con un solo dígito
a la izquierda del punto decimal; es decir, 31415.9512x10–4.

3.5.4.1 Normalización de números


Se dice que el número está normalizado si el dígito a la izquierda del punto no es cero. En
el ejemplo anterior, 95.12x10–5. De manera normalizada quedaría: 9.512x10–4. En el caso
de computadores, se emplea números en sistema binario, y con un número finito de
dígitos.

3.5.4.2 Propósito de números en punto flotante


Como la memoria de los computadores es limitada, no puedes almacenar números con
precisión infinita, no importa si usas fracciones binarias o decimales, en algún momento
tienes que cortar. Pero ¿cuánta precisión se necesita? ¿Y dónde se necesita? ¿Cuántos
dígitos enteros y cuántos fraccionarios?

UT1- Introduccion a la informática y programación 38


La idea es descomponer los números en dos partes:

• Una mantisa (también llamada coeficiente o significando) que contiene los dígitos
del número, donde las mantisas negativas representan números negativos; es decir,
la mantisa corresponde a la parte fraccionaria que es la diferencia entre el número
y la parte entera del número. Veamos este ejemplo, en el número decimal 13.8543,
la parte entera es 13 y la mantisa=13.8543–13= 0,8543. Pero, cuando el número
decimal es negativo; esto es, -13.8543, la parte entera es -14 y la mantisa=-
13.8543-(-14)= 0.1457.
• Un exponente que indica dónde se coloca el punto decimal (o binario) en relación
al inicio de la mantisa. Cuando el exponente es negativo representará a un número
menor que uno.
• Este formato cumple todos los requisitos:
• Puede representar números de órdenes de magnitud enormemente dispares
(limitado por la longitud del exponente).
• Proporciona la misma precisión relativa para todos los órdenes (limitado por la
longitud de la mantisa).
• Permite cálculos entre magnitudes: multiplicar un número muy grande y uno muy
pequeño conserva la precisión de ambos en el resultado.
• Los números de punto flotante decimales normalmente se expresan en notación
científica con un punto explícito siempre entre el primer y el segundo dígitos.
• El exponente o bien se escribe explícitamente incluyendo la base, o se usa
una E para separarlo de la mantisa

Ejemplo 3.1: según la parte entera, la mantisa y el exponente de la tabla de la figura 3.1,
escriba su valor equivalente, en notación científica y su valor en punto flotante.

3.5.4.3 Cifras significativas

Las cifras significativas representan el uso de una o más escalas de incertidumbre en


determinadas aproximaciones. Se dice que 4.7 tiene 2 cifras significativas, mientras que
4.70 tiene 3. Para distinguir los ceros que son significativos de los que no lo son, estos
últimos suelen indicarse como potencias de 10 en notación científica, por ejemplo 5724

UT1- Introduccion a la informática y programación 39


será 5.724x103, con 4 cifras significativas-

Cuando no pueden ponerse más cifras significativas, cierta cantidad de ellas, por ejemplo
de tres cifras simplemente, a la tercera cifra se le incrementa un número, si la cifra
predecesora es 5 con otras cifras o mayor que 5. Si dicha cifra es menor simplemente se
deja igual. Ejemplo 5.3689 consta de 5 cifras significativas, si sólo se pueden mostrar tres
cifras, se le suma una unidad a la cifra 6 (6+1=7) ya que la cifra que la precede 8 es mayor
que 5, así que queda 5.37 y si el número es menor que cinco: así 5.36489 y se redondea
queda 5.36, no aumenta por que la cifra 4 es menor que 5.

Cuando la cifra a redondear está precediendo a 5, simplemente aumente en 1 dicha cifra.


Por ejemplo, para redondear a 3 cifras los números 12.45 y 0.1855, se observa que en el
primer número, el dígito 3 que precede al 5, se incrementa en 1 cifra quedando 12.5 y el
segundo número 0.1855, se mantiene su valor, 0.186 o 1.86x10–1.

El uso de las cifras significativas considera que el último dígito de aproximación es


incierto, por ejemplo, al determinar el volumen de un líquido con una probeta cuya
resolución es de 1 ml, implica una escala de incertidumbre de 0.5 ml. Así se puede decir
que el volumen de 6 ml será realmente de 5.5 ml a 6.5 ml. El volumen anterior se
representará entonces como (6.0 ± 0.5) ml. En caso de determinar valores más próximos
se tendrían que utilizar otros instrumentos de mayor resolución, por ejemplo, una probeta
de divisiones más finas y así obtener (6.0 ± 0.1) ml o algo más satisfactorio según la
resolución requerida.

3.5.5 Estándar IEEE 754

El estándar IEEE 754 ha sido definido por el Instituto de Ingenieros Eléctricos y Electrónicos
(Institute of Electrical and Electronics Engineers, IEEE) y establece dos formatos básicos
para representar a los números reales en la computadora digital: precisión simple y
precisión doble.

La representación del exponente a exceso es 2n-1–1, mientras que, para la mantisa,


normalmente se utiliza Signo Magnitud. Además, la mantisa se suele normalizar colocando
el punto decimal a la derecha del bit más significativo.

UT1- Introduccion a la informática y programación 40


3.6 Precisión Simple en el Estándar IEEE 754

Para escribir un número en el Estándar IEEE 754 en precisión simple, se escribe el número
real usando 32 bits (4 bytes): 1 bit para el signo (s) del número, 23 bits para la mantisa
(m) y 8 bits para el exponente (E), que se distribuyen de la siguiente forma:

En la siguiente tabla se resumen los cálculos que hay que realizar para deducir el valor en
base 10 de un número escrito en el estándar IEEE 754 con precisión simple:

Video explicativo:

https://www.youtube.com/watch?v=HcjXH9WGmAU

El exponente se guarda en exceso a 127. Eso quiere decir que para calcula el valor real
del exponente hay que restar 127. Si en el exponente se guarda 130, y le quitamos 127,
el exponente real es 3. Se hace así para evitar guardar números negativos directamente
en el exponente y necesitar un bit de signo. Sabemos que si el exponente es 1 en realidad
estamos representando -126. Si es 150, estamos representando el exponente 23 (150-127).

La mantisa se guarda normalizada omitiendo el primer 1. Si quiero guardar el numero diez


en decimal 1010, no guardo la mantisa así directamente, sino que se guarda un numero
con una única cifra de parte entera y el resto decimal. Se guardaría como 1.010x2 3.
Además, e 1 se da por supuesto, esta implícito no se guarda, solo la parte decimal, 010.
Como el exponente es 3, se guardará el exponente con exceso a 127, 127+3=130 que en
decimal es 10000010. Lo veréis mas claro en el ejemplo

Ejemplo 3.2: exprese en formato IEEE 754 de precisión simple, el valor del número 45.25
UT1- Introduccion a la informática y programación 41
Solución
Pasando la mantisa a base 2 y normalizando, se tiene: 45=101101 y 0.25=0.01

La mantisa será 101101.01

Veamos cómo se obtiene el valor del número:

• Como el signo es positivo, el valor del signo es cero


• La mantisa original es 101101.01 pero la movemos 5 posiciones a la izquierda con
el exponente 5, 101101.01 = 1.0110101x 25

Mantisa normalizada con una sola cifra decimal: 1.0110101

• La mantisa normalizada se almacena con ell bit omitido se también se llama bit
implícito, que es 1. De la mantisa solo se guarda la parte decimal, el uno se supone
como implícito por lo que la mantisa, por o que la mantisa final será la parte
decimal

Por lo que guardamos en el ordenador la mantisa y rellenamos con ceros a la


derecha porque es la parte decimal hasta 23 digitos.
01101010000000000000000

• Representando en forma binaria el exponente en exceso a 2 n-1 donde n es la


cantidad 8 en precisión simple, por tanto, 28-1=127. El exponente está guardado en
exceso 127. Como el exponente real va a ser 5, el exponente total será 127+5= 132.
El 132 en binario es 10000100.

Exponente normalizado: 10000100

El número completo almacenado es:

Signo Exponente Mantisa (23 digitos)


(1 dig) (8 dígitos)
0 10000100 01101010000000000000000

De esta manera el número 45.25 con 32 bits en nuestro ordenador se almacena como:

01000010001101010000000000000000

3.6.1 Ejercicio

UT1- Introduccion a la informática y programación 42


1. Ejercicio representar el número 134.35 en mantisa IEEE simple precisión.

2. Ejercicio representar el número 2345.56 en mantisa IEEE simple precisión.

3.7 Representación de texto en un ordenador. El código ASCII.

El código ASCII (siglas en ingles para American Standard Code for Information Interchange,
es decir Código Americano Estándar para el intercambio de Información) ( se pronuncia
Aski ).

Fue creado en 1963 por el Comité Estadounidense de Estándares o "ASA", este organismo
cambio su nombre en 1969 por "Instituto Estadounidense de Estándares Nacionales" o
"ANSI" como se lo conoce desde entonces.

Este código nació a partir de reordenar y expandir el conjunto de símbolos y caracteres


ya utilizados en aquel momento en telegrafía por la compañía Bell. En un primer momento
solo incluía letras mayúsculas y números, pero en 1967 se agregaron las letras minúsculas
y algunos caracteres de control, formando así lo que se conoce como US-ASCII, es decir
los caracteres del 0 al 127.

Así con este conjunto de solo 128 caracteres fue publicado en 1967 como estándar,
conteniendo todos lo necesario para escribir en idioma ingles.

En 1981, la empresa IBM desarrolló una extensión de 8 bits del código ASCII, llamada
"pagina de código 437", en esta versión se reemplazaron algunos caracteres de control
obsoletos, por caracteres gráficos. Además, se incorporaron 128 caracteres nuevos, con
símbolos, signos, gráficos adicionales y letras latinas, necesarias para la escrituras de
textos en otros idiomas, como por ejemplo el español. Así fue como se sumaron los
caracteres que van del ASCII 128 al 255.

ASCII es el acrónimo del Código Estándar Americano para el Intercambio de Información.


La mayoría de las computadoras usan códigos ASCII para representar texto, lo que hace
posible transferir datos de una computadora a otra. ANSI (American National Standard
Institute) inventó este código. ASCII dos tipos: ASCII-7 y ASCII-8

ASCII-7: Es un código para representar 128 caracteres ingleses como números, con cada
letra asignada un número del 0 al 127. Por ejemplo, el código ASCII para M mayúscula es
77.

UT1- Introduccion a la informática y programación 43


ASCII-8: Es un código para representar 256 caracteres latinos como números.

En la siguiente tabla teneis representado los caracteres para ASCII 7.

Tenéis la versión decimal en pantalla pero internamente el ordenador guarda los


caracteres en binario. Así para guardar el nombre Ana por ejemplo, el ordenador
realizaría:

A n a
65 110 97
UT1- Introduccion a la informática y programación 44
Traducido a binario en 8 bits:

A n a
01000001 01101110 01100001

3.7.1 Ejercicio

Practica: Escribid vuestro nombre y apellidos en binario Ascii como lo guardaría el


ordenador.

3.8 Representación de colores en un ordenador. RGB


Pues RGB es un término que se compone por las siglas de los términos “red”, “green”
y blue”, es decir, rojo, verde y azul, es decir, está relacionado con la representación
de colores. Vale, ya sabemos qué significan estas siglas, pero, ¿Qué tienen que ver con
la iluminación y la informática?

RGB se trata de un modelo cromático mediante el cual seremos capaces de


representar distintos colores a partir de la mezcla de estos tres colores primarios. Más
adelante explicaremos que además de estos colores, también existen otros que se
consideran primarios en otros modelos cromáticos diferentes, por ejemplo, en arte o
en impresión en tinta.

ste modelo concretamente, se basa en la síntesis aditiva de la iluminación en estos


tres colores. Mediante esta adición de colores y aplicando una determinada
luminosidad a cada uno de estos tres, seremos capaces de representar otros colores

UT1- Introduccion a la informática y programación 45


distintos a ellos y así poder ver mayor variedad. Un ejemplo claro de la utilización del
sistema RGB son los monitores de ordenador o las televisiones, desde los tradicionales
tubos CRT.

El problema que surge de esta representación en RGB, es que estos tres colores no
siempre son los mismos para cara fabricante, es decir, existen distintas tonalidades
que hacen que la combinación de ellos generen otros colores ligeramente diferentes.

¿Qué es lo que pasa cuando unimos dos colores y vemos otro distinto?

Pues este fenómeno se debe exclusivamente al funcionamiento de nuestros ojos y


como envía las señales de luz a nuestro cerebro.
Básicamente podemos decir que nuestros ojos están formados por células que son
sensibles a la luz que recibimos y gracias a ellas distinguimos los colores. Estas células
están formadas por unas llamadas bastones y otras llamadas conos, éstas últimas se
dividen en tres tipos y son las que generan la información del color que vemos.

Cada uno de estos tres tipos de conos, funcionan a una frecuencia diferente y
precisamente tienen máxima sensibilidad por los tres colores que generan el RGB. De
esta forma combinado estos colores se generan nuevas frecuencias que hacen variar
nuestra curva de sensibilidad a los colores. El resultado es a apreciación de múltiples
colores con solamente la combinación de los tres básicos a los que nuestros ojos son
especialmente sensibles.

UT1- Introduccion a la informática y programación 46


3.8.1 Cómo funciona una pantalla de ordenador RGB

Este sistema de representación cromática RGB es el que utilizan las pantallas digitales
actualmente. Nuestros móviles, televisión, monitor de ordenador, todas ellas utilizan el
sistema RGB para proporcionarnos todos los colores que nosotros vemos en ellas. Pero ya
este sistema cromático se comenzó a utilizar en aquellas livianas y finas pantallas CRT con
cañón de electrones, aunque de forma bastante distinta a lo que se hace actualmente.

En una señal de vídeo, estas tres señales o colores se tratan por separado para
proporcionar una mejor representación de los colores que vemos. Además, para apreciar
correctamente una imagen dinámica, estas tres señales deben estar perfectamente
sincronizadas para poder formar los colores.

Cuando vemos una imagen representada en un monitor, realmente está formada por una
malla de millones de diodos electroluminiscentes (LED). Un LED es básicamente un diodo
que se ilumina al paso de la tensión. En una pantalla siempre le damos el nombre de
píxeles, cada píxel es un punto de iluminación de nuestra pantalla. Si nos ponemos muy
cerca de nuestra pantalla y esta tiene una densidad de píxeles no demasiado grande (cómo
de juntos están y cuan pequeños son) notaremos que hay unos cuadraditos muy pequeños
en ella.

Pues bien, cada uno de estos píxeles a su vez está formado por tres subpíxeles que se
iluminarán con cada color. Las variaciones de luminosidad de estos tres píxeles de forma
simultánea van a generar un color determinado en ese instante. Cuando todos están
apagados, tendremos el color negro y cuando todos están encendidos y de igual brillo
tendremos el color blanco. El resto de colores son combinaciones de tonos de estos tres
UT1- Introduccion a la informática y programación 47
subpíxeles.

Pues en código HTML por ejemplo, y en otros muchos casos, para representar los distintos
colores existe un código formado por tres números separados que pueden tomar valores
desde el 0 hasta el 255 “[xxx],[xxx],[xxx]”, esto forma un total de 24 bits en binario, 8
por cada número. Cada uno de estos números representa uno de los colores siendo
[R],[G],[B] y dependiendo del valor del número que haya en su interior, la luminancia de
ese color será mayor o menor, como podremos intuir. Por ejemplo si tenemos
[0],[255],[0], tendríamos el color verde representado en pantalla, si tuviéramos el
[255],[255],[255], tendríamos el color blanco, y así sucesivamente.

Los que sepan de matemáticas, sabrán que con tres coordenadas estaríamos
representando un número en 3 dimensiones, y aquí ocurre exactamente lo mismo. A todo
el espectro de colores que va desde el 0,0,0 al 255,255,255 se le denomina cubo RGB. Este
cubo ha ido creciendo con el paso de los años, según la gama de colores que era capaz de
representar un monitor. Los monitores actuales son de 24 bits por lo tanto son capaces de
representar 16,7 millones de colores con solamente las combinaciones del rojo, verde y
azul, increíble ¿no? A menor cantidad de bits, menos cantidad de colores obtendremos en
una pantalla u otro sistema de iluminación RGB.

UT1- Introduccion a la informática y programación 48


4 Sistemas de Información
Cuando se introdujeron por primera vez las microcomputadoras, fueron utilizadas por
relativamente pocas personas para crear documentos simples y analizar datos. Estas
computadoras eran caras, lentas y difíciles de usar. Ahora, las microcomputadoras u
ordenadores personales se utilizan ampliamente en todo el mundo. Todos los días, miles
de millones de personas usan ordenadores personales e Internet social y profesionalmente.
Los ordenadores personales de hoy en día son baratas, muy potentes y fáciles de usar.

Este apartado proporciona una visión general muy concisa de la informática y la


organización de este texto. Presenta las diversas características del texto, incluidos
cuadros que presentan cuestiones ambientales y éticas y una cobertura especial de cómo
puede hacer que su computadora funcione de manera eficiente y efectiva para usted.
Además, una visión general de hardware, software, · y se presentan los datos. Por lo
general, el concepto de conectividad se introduce junto con Internet, la web, la
revolución inalámbrica y la computación en la nube. Para comenzar a usar este texto de
manera efectiva, debe comprender estas cosas.

La competencia informática se refiere a la adquisición de habilidades informáticas

UT1- Introduccion a la informática y programación 49


indispensables hoy en día. En este subcapítulo, presentamos una visión general de un
sistema de información: personas, procedimientos, software, hardware, datos y
conectividad. Es esencial comprender estas partes básicas y cómo la conectividad a través
de Internet y la web expande el papel de la tecnología de la información en nuestras vidas.
Más adelante, describimos las partes más comunes de un sistema de información en
detalle.
Hace veinte años, la mayoría de la gente tenía poco que ver con las computadoras, al
menos directamente. Por supuesto, llenaron formularios computarizados. tomó pruebas
computarizadas y pagó facturas computarizadas. Pero el verdadero trabajo fue manejado
por especialistas. Luego llegaron las microcomputadoras y lo cambiaron todo. Hoy en día
es fácil para casi todo el mundo usar una computadora.

• Los microordenadores son herramientas comunes en todas las áreas de la vida. Los
escritores escriben, los artistas dibujan, la ingeniería y los científicos calculan todo
en microoomputadores. Los estudiantes y los empresarios hacen todo esto y más.

• Se han desarrollado nuevas formas de aprendizaje. Las personas que están


confinadas en casa, que trabajan horas impares o que viajan con frecuencia pueden
tomar cursos en línea. Un curso universitario no tiene por qué caber dentro de un
trimestre o un semestre.

• Nuevas formas de comunicarse, encontrar personas con intereses similares y


comprar bienes están disponibles. La gente utiliza el correo electrónico, el
comercio electrónico y el lnternet para reunirse y compartir ideas y productos.

4.1 Sistemas de información

UT1- Introduccion a la informática y programación 50


Cuando piensas en ordenador, tal vez pienses solo en el equipo en sí. Es decir, piensas en
el monitor o el teclado. Sin embargo, hay más que eso. La forma de pensar en un
ordenador personal es como parte de un sistema de información. Un sistema de
información tiene varias partes: personas, procedimientos, software, hardware, datos y
conectividad.

• Personas: Es fácil pasar por alto a las personas como una de las partes de un sistema
de información. Sin embargo, esto es de lo que se tratan los ordenadores: hacer
que las personas, terminen convirtiendose en usuarios más productivos.

• Procedimientos: Las reglas o pautas que las personas deben seguir al usar software,
hardware y datos son procedimientos. Estos procedimientos generalmente se
documentan en manuales escritos por especialistas en informática. Los fabricantes
de software y hardware proporcionan manuales con sus productos. Estos manuales
se proporcionan en forma impresa o electrónica (enlace web).

UT1- Introduccion a la informática y programación 51


• Software: Un programa consiste en las instrucciones paso a paso que le dicen a la
computadora cómo hacer su trabajo. Software es otro nombre para un programa o
programas. El propósito del software es convertir los datos (hechos procesados) en
información (hechos procesados). Por ejemplo, un programa de nómina le indicaría
a la computadora que tome el número de horas que trabajó en una semana (datos)
y lo multiplique por su tasa de pago (datos) para determinar cuánto se le paga por
la semana (información).

• Hardware: El equipo que procesa los datos para crear información se denomina
hardware. Incluye el teclado, el ratón, el monitor, la unidad del sistema y otros
dispositivos. El hardware está controlado por software.

• Datos: Los datos en bruto y sin procesar, incluidos el texto, los números, las
imágenes y los sonidos, se denominan datos. Procesado. los datos arrojan
información. Usando el ejemplo anterior de un programa de nómina, los datos
(número de horas trabajadas y tasa de pago) se procesan (multiplican) para obtener
información (pago semanal).

UT1- Introduccion a la informática y programación 52


• Conectividad: Casi todos los sistemas informáticos actuales añaden una parte
adicional al sistema de información. La tercera parte, llamada conectividad,
generalmente utiliza Internet y permite a los usuarios ampliar en gran medida la
capacidad y la utilidad de sus sistemas de información.

Gráfico-resumen de sistemas de información:

UT1- Introduccion a la informática y programación 53


Esta unidad se centrará en el hardware y fundamentalmente en el software, que es el
objetivo de este curso. No obstante, a lo largo del año, se hará hincapié en el papel central
de las personas en los Sistemas de Información, como usuarios, administradores y sobre
todo como miembros de un equipo de desarrollo.

4.2 Sociedad de la información

La sociedad de la información es un proceso de evolución profunda de la vida y las


intersecciones entre personas, gobiernos, facultades y organizaciones por el uso intensivo
de las tecnologías de la información y la comunicación (TIC), que facilitan la creación,
distribución y manipulación de la información y desempeñan un papel esencial en las
actividades sociales, culturales y económicas.3 La noción de sociedad de la información
ha sido inspirada por los programas de desarrollo de los países industrializados, y el
término ha tenido una connotación más política que teórica, pues a menudo se presenta
como una aspiración estratégica que permitiría superar el estancamiento social.

El concepto de sociedad de la información comenzó a utilizarse en Japón durante los años


sesenta, considerándose al autor Yoneji Masuda como precursor, a través de sus dos obras
más conocidas Una introducción a la Sociedad de la Información (1984) y, especialmente,
en La Sociedad de la Información como sociedad post-industrial, Institute for the
Information Society 4(1980), es en esta última donde enuncia por primera vez el término
, definiéndola como una sociedad que crece y se desarrolla alrededor de la información y
aporta un florecimiento general de la creatividad intelectual humana, en lugar de un
aumento del consumo material; y destaca como factores claves el conocimiento y la
innovación, junto a la adopción y difusión de las tecnologías que facilitan el tratamiento
y transmisión de la información y el conocimiento. del término.

UT1- Introduccion a la informática y programación 54


El sociólogo Manuel Castells, de un modo más descriptivo que crítico, examinó los
caracteres del nuevo paradigma para acuñar, no la noción de la sociedad de la
información, sino la de era informacional, con Internet como fundamento principal a
este nuevo modo de organización social en esferas tan dispares como las relaciones
interpersonales, las formas laborales o los modos de construir la identidad propia.

La sociedad de la información es vista como la sucesora de la sociedad industrial.


Relativamente similares serían los conceptos de sociedad post-industrial (Daniel Bell),
posfordismo, sociedad postmoderna, sociedad del conocimiento, entre otros. Este
último concepto parece estar emergiendo en detrimento de la sociedad de la información.

Características de la sociedad de la información3


Se distingue por la gran cantidad de información y datos que
Exuberancia
circulan actualmente en las TIC.
El espacio preferido para la difusión de ideas e interacción social
Omnipresencia son las TIC, su universalidad implica mayor facilidad para la
interacción social.
La difusión de mensajes es prácticamente ilimitada gracias a que
Irradiación
las distancia físicas se difuminan.
Velocidad La comunicación es inmediata e incluso simultánea con internet.
Existe la capacidad técnica de recibir información de todas partes,
Multilateralidad /
no obstante lo más probable es que la mayor parte de ésta surja
Centralidad
de unos cuantos sitios.
La comunicación contemporánea permite que sus usuarios sean
Interactividad /
productores de mensajes, sin embargo la mayoría de usuarios
Unilateralidad
utiliza poco esa capacidad, son comunicadores pasivos.
UT1- Introduccion a la informática y programación 55
Existe un problema de falta de equidad social en la propagación e
intercambio de información, en las naciones más industrializadas
Desigualdad
aumenta el acceso a la red, mientras los países más pobres son
ajenos al internet.
En los medios de comunicación se multiplican las ideas, opiniones,
Heterogeneidad
comentarios y manifestaciones de toda índole.
La sociedad de la información requiere de habilidades para
Desorientación distinguir lo verídico de lo falaz, a partir de la gran cantidad de
material que se comparte en internet.
El intercambio de ideas en internet es menos frecuente que el
intercambio económico de bienes y servicios, a pesar de que la
Ciudadanía pasiva
sociedad de la información aspira el desarrollo cultural y la
humanización de la sociedad.

5 Software
El software es un conjunto de instrucciones, datos o programas utilizados para operar
computadoras y ejecutar tareas específicas. Es lo opuesto al hardware, que describe los
aspectos físicos de una computadora. Software es un término genérico utilizado para
referirse a aplicaciones, scripts y programas que se ejecutan en un dispositivo. Es sinónimo
de programa o programas.

Algunos ejemplos comunes de software incluyen Microsoft Word, Adobe Photoshop,


Adobe Reader, Google Chrome, Gmail, Powerpoint, VLC y muchos otros programas
informáticos similares que a menudo usamos en nuestra vida diaria. Si nos sentáramos a
enumerar todos los ejemplos de software, la lista nunca terminaría, pero lo que es más
importante que eso es entender en qué se diferencian entre sí.

¿Cuáles son los dos tipos principales de software?


Los dos tipos principales de software informático son:

• Aplicación
• Software del sistema

Considerando que, otros dos tipos de software de computadora son:

• Software de programación
• Software de controlador

UT1- Introduccion a la informática y programación 56


5.1 Tipos de software

Esta sección describirá diferentes tipos de software. La taxonomía varía de diferentes


fuentes, pero podemos identificar tres clases principales de software: software de
sistema, software de aplicación y software de lenguajes de programación o software de
desarrollo.

Software de Aplicación
Como usuario de tecnología, el software de aplicación o 'apps' es con lo que más te
involucras. Estos tipos de software informático son programas productivos para el usuario
final que le ayudan a realizar tareas. Los siguientes son algunos ejemplos de software de
aplicación que le permiten realizar un trabajo específico:

• MS Excel: Es un software de hoja de cálculo que puede utilizar para presentar y


analizar datos.
• Photoshop: Es un software de aplicación de edición de fotos de Adobe. Puede
usarlo para mejorar visualmente, catalogar y compartir sus imágenes.
• Skype: Es una aplicación de comunicación en línea que puede usar para video
chat, llamadas de voz y mensajería instantánea.
UT1- Introduccion a la informática y programación 57
Las aplicaciones de software también se conocen como software no esencial. Se instalan
y operan en una computadora basada en los requisitos del usuario. Hay un montón de
software de aplicación que puede utilizar para realizar diferentes tareas. El número de
este tipo de aplicaciones sigue aumentando con los avances tecnológicos y las necesidades
cambiantes de los usuarios. Puede clasificar estos tipos de software en diferentes grupos,
como se muestra en la tabla siguiente:

Tipos de software de aplicación Ejemplos

Software de procesamiento de textos:


Herramientas que se utilizan para crear hojas de Microsoft Word, WordPad,
texto y escribir documentos, etc. AppleWorks y Notepad

Software de hoja de cálculo: Software utilizado Apple Numbers, Microsoft


para calcular datos cuantitativos. Excel y Quattro Pro

Software de base de datos: Se utiliza para Oracle, MS Access y


almacenar datos y ordenar información. FileMaker Pro

Suites de aplicaciones: Una colección de programas OpenOffice, Microsoft


relacionados que se venden como un paquete. Office

Software multimedia: Herramientas utilizadas para


una mezcla de contenido de audio, video, imagen y
texto. Real Player, Media Player

Software de comunicación: Herramientas que


conectan sistemas y permiten la comunicación
basada en texto, audio y video. MS NetMeeting, IRC, ICQ

UT1- Introduccion a la informática y programación 58


Tipos de software de aplicación Ejemplos

Netscape Navigator, MS
Navegadores de Internet: Se utilizan para acceder Internet Explorer, y Google
y ver sitios web. Chrome

Programas de correo electrónico: Software Microsoft Outlook, Gmail,


utilizado para enviar correos electrónicos. Apple Mail

Software del sistema


El software del sistema ayuda al usuario, el hardware y el software de la aplicación a
interactuar y funcionar juntos. Estos tipos de software informático permiten un entorno o
plataforma para que otro software y aplicaciones funcionen. Esta es la razón por la cual
el software del sistema es esencial en la gestión de todo el sistema informático.

Cuando enciendes tu ordenador por primera vez, es el software del sistema el que se carga
inicialmente en la memoria. A diferencia del software de aplicación, el software del
sistema no es utilizado por usuarios finales como usted. Solo se ejecuta en segundo plano
de su dispositivo, en el nivel más básico mientras usa otro software de aplicación. Esta es
la razón por la cual el software del sistema también se llama "software de bajo nivel".

Los sistemas operativos son un ejemplo de software de sistema. Todos sus dispositivos

UT1- Introduccion a la informática y programación 59


similares a un ordenador se ejecutan en un sistema operativo, incluidos el ordenador de
escritorio, computadora portátil, teléfono inteligente y tableta, etc. Mostramos en la
siguiente lista de ejemplos de un sistema operativo. Echemos un vistazo y es posible que
vea algunos nombres familiares del software del sistema:

Para ordenadores de escritorio, portátiles y tabletas:

• Microsoft Windows
• Mac (for Apple devices)
• Linux

Para smartphones:

• Apple’s iOS
• Google’s Android
• Windows Phone OS

Software de controlador
El software del controlador a menudo se clasifica como uno de los tipos de software del
sistema. Operan y controlan dispositivos y periféricos conectados a una computadora. Los
controladores son importantes porque permiten que los dispositivos realicen sus tareas
designadas. Lo hacen traduciendo comandos de un Sistema Operativo para el Hardware o
dispositivos, asignando tareas. Por lo tanto, cada dispositivo conectado con el equipo
requiere al menos un controlador de dispositivo para funcionar.

UT1- Introduccion a la informática y programación 60


Dado que hay miles de tipos de dispositivos, los controladores facilitan el trabajo del
software de su sistema al permitirle comunicarse a través de un lenguaje estandarizado.
Algunos ejemplos de software de controlador con los que puede estar familiarizado son:

1. Controlador de impresora
2. Controlador del ratón
3. Controlador de Tarjeta de red

Por lo general, el sistema operativo viene incorporado con controladores para mouse,
teclado e impresoras de forma predeterminada. A menudo no requieren instalaciones de
terceros. Pero para algunos dispositivos avanzados, es posible que deba instalar el
controlador externamente. Además, si utiliza varios sistemas operativos como Linux,
Windows y Mac, cada uno de estos admite diferentes variantes de controladores. Para
ellos, se deben mantener controladores separados para cada uno.

Software de desarrollo
El software de desarrollo es el tipo de software que no es utilizado por los usuarios finales.
No es para ti a menos que, por supuesto, seas un programador que escribe código. El
software de programación son programas que se utilizan para escribir, desarrollar, probar
y depurar otro software, incluidas las aplicaciones y el software del sistema. Para alguien
que trabaja en una empresa de desarrollo de software a medida, por ejemplo, este tipo
de software le haría la vida más fácil y eficiente.

El software de programación es utilizado por los programadores de software como


programas traductores. Son software facilitador utilizado para traducir lenguajes de
programación (es decir, Java, C ++, Python, PHP, BASIC, etc.) en código de lenguaje
máquina. Los traductores pueden ser compiladores, intérpretes y ensambladores. Puede
entender los compiladores como programas que traducen todo el código fuente en código
máquina y lo ejecutan. Los intérpretes ejecutan el código fuente a medida que el
programa se ejecuta línea por línea. Y los ensambladores traducen las instrucciones
UT1- Introduccion a la informática y programación 61
básicas del ordenador (código de ensamblaje) en código máquina.

Diferentes editores de lenguajes de programación, depuradores, compiladores e IDE son


ejemplos de software de programación. Por ejemplo:

• Eclipse – un editor de lenguaje Java


• NetBeans
• Intellij
• Código de Visual Studio
• Coda – editor de lenguaje de programación para Mac
• Notepad++ – un editor de código abierto para Windows
• Sublime Text: un editor de código multiplataforma para Mac,
Windows y Linux

5.2 Licencias de software

Si escribe código, también reutiliza código, incluidos fragmentos de código, bibliotecas,


funciones, marcos y aplicaciones completas. Todo el código de software viene con ciertos
derechos y obligaciones si desea agregarlo a su base de código. El software libre y de
código abierto (FOSS) es gratuito, pero no es libre de usarlo como desee. Incluso los
fragmentos de código sin licencia copiados de Stack Overflow tienen obligaciones de
reutilización. Pero el código desarrollado formalmente generalmente viene con una
licencia de software específica.

Hay muchos tipos diferentes de licencias de software, y las sanciones por incumplimiento
de la licencia pueden ser duras. Si reutiliza un componente sin cumplir con las obligaciones
de su licencia, el licenciante podría demandar y podría verse obligado a publicar su propio
código fuente. Para proteger su código y su organización, debe comprender estas licencias
de software antes de usar cualquier código, incluidas las bibliotecas y los marcos, que no
escribió usted mismo. Vea nuestra lista de las principales licencias de código abierto y sus
posibles riesgos legales.

Hay cinco tipos de modelos de licencias de software comunes que debe conocer. Cuatro
son ejemplos de licencias de código abierto (que le permiten reutilizar código hasta cierto
punto), y uno no permite ninguna reutilización.

1. Public domain/dominio publico. Este es el tipo de licencia de software menos


restrictivo. Cuando el software está en el dominio público, cualquiera puede
modificar y utilizar el software sin ninguna restricción. Pero siempre debe
asegurarse de que sea seguro antes de agregarlo a su propia base de código.
Advertencia: El código que no tiene una licencia explícita NO está automáticamente
en el dominio público. Esto incluye fragmentos de código que se encuentran en
Internet.

UT1- Introduccion a la informática y programación 62


1. Permissive. Las licencias “permisivas” también se conocen como "estilo Apache" o
"estilo BSD". Contienen requisitos mínimos sobre cómo se puede modificar o
redistribuir el software. Este tipo de licencia de software es quizás la licencia más
popular utilizada con software libre y de código abierto. Aparte de la Licencia
Apache y la Licencia BSD, otra variante común es la Licencia MIT.

1. LGPL. The GNU Lesser General Public License permite vincular a bibliotecas de
código abierto en el software de desarrolladores. Si simplemente compila o vincula
una biblioteca con licencia LGPL con su propio código, puede liberar su aplicación
bajo cualquier licencia que desee, incluso una licencia propietaria. Pero si modifica
la biblioteca o copia partes de ella en su código, tendrá que lanzar su aplicación en
términos similares a los de la LGPL.

1. Copyleft. Las licencias copyleft también se conocen como licencias recíprocas o


licencias restrictivas. El ejemplo más conocido de una licencia copyleft o recíproca
es la GPL. Estas licencias le permiten modificar el código de licencia y distribuir
nuevas obras basadas en él, siempre y cuando distribuya nuevas obras o
adaptaciones bajo la misma licencia de software. Por ejemplo, la licencia de un
componente podría decir que el trabajo es de uso y distribución gratuito solo para
uso personal. Por lo tanto, cualquier derivado que cree también se limitaría solo al
uso personal. (Un derivado es cualquier software nuevo que desarrolle que
contenga el componente).

El problema aquí es que los usuarios de su software también tendrían el derecho de


modificar el código. Por lo tanto, tendría que hacer que su propio código fuente
esté disponible. Pero, por supuesto, exponer su código fuente puede no ser lo mejor
para usted.

• Proprietaria. De todos los tipos de licencias de software, esta es la más restrictiva.


La idea detrás de esto es que todos los derechos están reservados. Generalmente
se usa para software propietario donde el trabajo no puede ser modificado o
redistribuido.

UT1- Introduccion a la informática y programación 63


6 Ingeniería de software
La siguiente sección describe la ingeniería de software, una rama de la informática que
se encarga del desarrollo de software. A principios de los años 60 el desarrollo de software
era una ciencia recién nacida. Los informáticos eran matemáticos y físicos, investigadores.
No había metodologías, conocimientos, conocimientos técnicos y experiencia para
producir software. Como consecuencia, el software era muy ineficiente, era de baja
calidad, a menudo no cumplía con los requisitos y los proyectos eran inmanejables y el
código difícil de mantener.

Los errores de software afectaron a la industria. Los proyectos estaban fuera de


presupuesto, causando pérdidas a las empresas de software. Ocasionalmente, los
programas que no cumplían con los requisitos no se entregaron. Además, algunos
proyectos causaron daños a la propiedad. Algunos proyectos causaron la pérdida de vidas.

UT1- Introduccion a la informática y programación 64


La crisis del software se definió originalmente en términos de productividad, pero
evolucionó para enfatizar la calidad. El paquete de problemas en su conjunto originó la
crisis del software. Se estimó que más del 40% de los proyectos de software fallaron.

En la "Conferencia de Ingeniería de Software de la OTAN de 1968", expertos e


investigadores informáticos establecieron las bases para la ingeniería de software. El
objetivo de la reunión fue abordar el tema y tratar de encontrar soluciones. Instó a la
necesidad de establecer metodologías para obtener software de calidad y mantenible que
cumpliera con los requisitos. La idea era aplicar los principios clásicos de ingeniería de la
industria de ingeniería tradicional al desarrollo de software.

No hace falta decir que los procesos para fabricar tangibles como un automóvil difieren
mucho de algo tan abstracto e intangible como lo es el software (el software es inmaterial,
no se puede tocar). Se enfrentaron a problemas, retrasos, falta de conocimiento sobre
esta nueva industria, pero finalmente a mediados de los años 70 logran resultados. Los
fundamentos de lo que hoy llamamos ingeniería de software.

Activos intangibles

La ingeniería de software como cualquier ingeniería de fabricación aboga por la calidad


del producto final. Como ya mencionamos, el software es un activo intangible.
Necesitaban establecer algunos principios y medidas para la calidad del software.
Estabilidad, velocidad, usabilidad, teestabilidad, legibilidad, tamaño, costo, seguridad y
número de fallas o "bugs", así como cualidades menos medibles como elegancia, concisión
y satisfacción del cliente,entre muchos otros atributos. La mejor manera de crear
software de alta calidad es un problema separado y controvertido que cubre los principios

UT1- Introduccion a la informática y programación 65


de diseño de software, las llamadas "mejores prácticas" para escribir código.
Los informes de ingeniería de software de la OTAN de 1968/69:
http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/index.html

Como consecuencia de estos problemas las agencias de normalización definen normas para
ingeniería del software con el fin de obtener software de calidad.

6.1.1 Normas en Ingenieria del software ISO 9001

Los estándares de calidad de software hacen parte de la ingeniería de software, utilización


de estándares y metodologías para el diseño, programación, prueba y análisis del software
desarrollado, con el objetivo de ofrecer una mayor confiabilidad, mantenibilidad en
concordancia con los requisitos exigidos, con esto se eleva la productividad y el control
en la calidad de software, parte de la gestión de la calidad se establecen a mejorar su
eficacia y eficiencia.

En un escenario en el que los sistemas de software se desarrollan y construyen por terceros


proveedores, el contratante del servicio, como primer receptor del mismo, en muchos
casos debe confiar en el buen hacer del proveedor seleccionado, especialmente si nos
dispone de los medios apropiados para auditar la entrega y en su caso argumentar defectos
en el proceso de desarrollo.

En general, una vez validado que el sistema responde a los principales requisitos
funcionales especificados, el usuario realizará las pruebas de aceptación, corrigiendo los
errores encontrados y tas pasándose al fin del entorno de producción. Sin embargo, en
muy pocas ocasiones se validan de manera rigurosa los requisitos funcionales y los no
funcionales, o se ejecutan validaciones que aseguren que el sistema es lo suficientemente
robusto y estable como para pasar a un entorno productivo con las garantías adecuadas.

Estándar para los procesos de ciclo de vida del software de la organización, Este estándar
se concibió para aquellos interesados en adquisición de software, así como desarrolladores
y proveedores. El estándar indica una serie de procesos desde la recopilación de requisitos
hasta la culminación del software.

El estándar comprende 17 procesos lo cuales son agrupados en tres categorías:

• Principales
• De apoyo
• De organización

Este estándar agrupa las actividades que se pueden llevar a cabo durante el ciclo de vida
del software en cinco procesos principales, ocho procesos de apoyo y cuatro procesos
organizativos.

UT1- Introduccion a la informática y programación 66


Como informáticos debemos centrarnos en las fases Desarrollo, Operación y
mantenimiento que se definen en detalle en los ciclos de vida del software y que también
define la Norma ISO-12207-1.

6.2 CICLO DE VIDA DEL SOFTWARE

El proceso de desarrollo del software implica un conjunto de actividades que se tienen


que planificar y gestionar de tal manera que aseguren un producto final que de solución a
las necesidades de todas aquellas personas que lo van a utilizar.

UT1- Introduccion a la informática y programación 67


6.2.1 DEFINICIÓN

El estándar ISO/IEC 12207-1 define ciclo de vida del software como: Un marco de
referencia que contiene los procesos, las actividades y las tareas involucradas en el
desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la
vida del sistema desde la definición de los requisitos hasta la finalización de su uso.
El ciclo de vida de un producto software comprende el periodo que transcurre desde que
el producto es concebido hasta que deja de estar disponible o es retirado. Normalmente
se divide en etapas y en cada etapa se realizarán una serie de tareas. Usualmente se
consideran las siguientes etapas: especificación y análisis de requisitos, diseño del
sistema, implementación del software, aplicación y pruebas, entrega y mantenimiento:

• Análisis. Construye un modelo de los requisitos. En esta etapa se debe entender y


comprender de forma detallada el problema que se va a resolver. Es muy
importante producir en esta etapa una documentación entendible, completa y fácil
de verificar y modificar.
• Diseño. En esta etapa ya sabemos qué es lo que hay que hacer, ahora hay que
definir cómo se va a resolver el problema. Se deducen las estructuras de datos, la
arquitectura de software, la interfaz de usuario y los procedimientos. Por ejemplo,
en esta etapa hay que seleccionar el lenguaje de programación, el Sistema Gestor
de Bases de Datos, etc.
• Codificación. En esta etapa se traduce lo descrito en el diseño a una forma legible
por la máquina. La salida de esta fase es código ejecutable.
• Pruebas. Se comprueba que se cumplen criterios de corrección y calidad. Las
pruebas deben garantizar el correcto funcionamiento del sistema.
• Mantenimiento. Esta fase tiene lugar después de la entrega del software al cliente.
En ella hay que asegurar que el sistema pueda adaptarse a los cambios. Se producen
cambios porque se han encontrado errores, es necesario adaptarse al entorno (por
ejemplo, se ha cambiado de sistema operativo) o porque el cliente requiera
mejoras funcionales.

Cada etapa tiene como entrada uno o varios documentos procedentes de las etapas
anteriores y produce otros documentos de salida, por ello una tarea importante a realizar
en cada etapa es la documentación.

6.2.2 MODELOS DE CICLO DE VIDA

Existen varios modelos de ciclo de vida, es importante tener en cuenta las características
del proyecto software para eligir un modelo u otro. Los modelos más importantes son:
Cascada, Incremental y Evolutivo.

UT1- Introduccion a la informática y programación 68


6.2.2.1 CICLO DE VIDA EN CASCADA

En este modelo las etapas para el desarrollo del software tienen un orden, de tal forma
que para empezar una etapa es necesario finalizar la etapa anterior; después de cada
etapa se realiza una revisión para comprobar si se puede pasar a la siguiente, véase Figura
1.4 (1). Este modelo permite hacer iteraciones, por ejemplo, durante la etapa de
mantenimiento del producto el cliente requiere una mejora, esto implica que hay que
modificar algo en el diseño, lo cual significa que habrá que hacer cambios en la
codificación y se tendrán que realizar de nuevo las pruebas, es decir, si se tiene que
volver a una de las etapas anteriores hay que recorrer de nuevo el resto de las etapas,
véase Figura 1.4 (2).

Figura 1.4. Modelo en Cascada.

Tiene varias variantes, una de la más utilizada es la que produce una realimentación entre
etapas, se la conoce como Modelo en Cascada con Realimentación. Por ejemplo,
supongamos que la etapa de Análisis (captura de requisitos) ha finalizado y se puede pasar
a la de Diseño. Durante el desarrollo de esta etapa se detectan fallos (los requisitos han
cambiado, han evolucionado, ambigüedades en la definición de los mismos, etc), entonces
será necesario retornar a la etapa anterior, realizar los ajustes pertinentes y continuar de
nuevo con el Diseño. A esto se le conoce como realimentación, pudiendo volver de una
etapa a la anterior o incluso varias etapas a la anterior, véase Figura 1.5.

UT1- Introduccion a la informática y programación 69


Figura 1.5. Modelo en Cascada con Realimentación.

Ventajas:
• Fácil de comprender, planificar y seguir.
• La calidad del producto resultante es alta.
• Permite trabajar con personal poco cualificado.
Inconvenientes:
• La necesidad de tener todos los requisitos definidos desde el principio (algo que no
siempre ocurre ya que pueden surgir necesidades imprevistas).
• Es difícil volver atrás si se comenten errores en una etapa.
• El producto no está disponible para su uso hasta que no está completamente
terminado.
Se recomienda cuando:
• El proyecto es similar a alguno que ya se haya realizado con éxito anteriormente.
• Los requisitos son estables y están bien comprendidos.
• Los clientes no necesitan versiones intermedias.

6.2.3 MODELOS EVOLUTIVOS

El software evoluciona con el tiempo, es normal que los requisitos del usuario y del
producto cambien conforme se desarrolla el mismo. La competencia en el mercado del
software es tan grande que las empresas no pueden esperar a tener un producto
totalmente completo para lanzarlo al mercado, en su lugar se van introduciendo versiones
cada vez más completas que de alguna maneran alivian las presiones competitivas.

El modelo en cascada asume que se va a entregar un producto completo, en cambio los


modelos evolutivos permiten desarrollar versiones cada vez más completas hasta llegar al
producto final deseado. En estos modelos se asume que las necesidades del usuario no
están completas y se requiere una vuelta a planificar y diseñar después de cada
implantación de los entregables.

UT1- Introduccion a la informática y programación 70


Los modelos evolutivos más conocidos son: el Iterativo incremental y el Espiral.

UT1- Introduccion a la informática y programación 71


MODELO ITERATIVO INCREMENTAL

Está basado en varios ciclos cascada realimentados aplicados repetidamente. El modelo


incremental entrega el software en partes pequeñas, pero utilizables, llamadas
«incrementos». En general, cada incremento se construye sobre aquél que ya ha sido
entregado1. En la Figura 1.6 se muestra un diagrama del modelo bajo un esquema
temporal, se observa de forma iterativa el modelo en cascada para la obtención de un
nuevo incremento mientras progresa el tiempo en el calendario (por simplificar el
diagrama se ha puesto el modelo en cascada más básico, el lineal secuencial).

Figura 1.6. Modelo Iterativo Incremental.

Como ejemplo de software desarrollado bajo este modelo se puede considerar un


procesador de textos, en el primer incremento se desarrollan funciones básicas de gestión
de archivos y de producción de documentos; en el segundo incremento se desarrollan
funciones gramaticales y de corrección ortográfica, en el tercer incremento se desarrollan
funciones avanzadas de paginación, y así sucesivamente.

Ventajas:
• No se necesitan conocer todos los requisitos al comienzo.
• Permite la entrega temprana al cliente de partes operativas del software.
• Las entregas facilitan la realimentación de los próximos entregables.
Inconvenientes:
• Es difícil estimar el esfuerzo y el coste final necesario.
• Se tiene el riesgo de no acabar nunca.
• No recomendable para desarrollo de sistemas de tiempo real, de alto nivel de
seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.

Se recomienda cuando:
• Los requisitos o el diseño no están completamente definidos y es posible que haya
grandes cambios.

UT1- Introduccion a la informática y programación 72


• Se están probando o introduciendo nuevas tecnologías.

6.3 Analisis

Resolver el problema , y una vez comprendido darle solución. En esta fase se analizan
y especifican los requisitos o capacidades que el sistema debe tener porque el cliente así
lo ha pedido.
La obtención de requisitos no es tarea fácil ya que el cliente puede no tenerlos claros,
pueden surgir nuevos requisitos, pueden cambiar lo especificados, pueden existir malos
entendidos por falta de conocimiento del equipo de desarrollo sobre el problema a
resolver, el cliente puede no expresarse de forma clara debido a la falta de conocimientos
informáticos, etc. Para realizar un proyecto satisfactorio es necesario obtener unos
buenos requisitos y para ello es esencial una buena comunicación entre el cliente y los
desarrolladores. Para facilitar esta comunicación se utilizan varias técnicas, algunas son
las siguientes:
Entrevistas. Es la técnica más tradicional que consiste en hablar con el cliente. Hay
que tener sobre todo conocimientos de psicología.
Brainstorming. Es un tipo de reuniones en grupo cuyo objetivo es generar ideas
desde diferentes puntos de vista para la resolución de un problema. Su
utilización es adecuada al principio del proyecto, pues puede explorar un
problema desde muchos puntos de vista.
Prototipos. Es una versión inicial del sistema, se utiliza para clarificar algunos
puntos, demostrar los conceptos, en definitiva, para enterarse más acerca del
problema y sus posibles soluciones. Después se tira o bien se usa como base para
añadir más cosas.

Obtenemos de estas actividades dos tipos de requisitos:

Requisitos funcionales. Describen con detalle la función que realiza el sistema, cómo
reacciona ante determinadas entradas, cómo se comporta en situaciones particulares,
etc.
Requisitos no funcionales. Tratan sobre las características del sistema, como puede ser
la fiabilidad, mantenibilidad, sistema operativo, plataforma hardware, restricciones,
limitaciones, etc.

UT1- Introduccion a la informática y programación 73


Imaginad que tenemos que hacer una aplicación para vender canciones por internet.
Ejemplo de requisitos funcionales serían:

• El sistema debe almacenar información sobre las canciones que se pueden adquirir
y su precio en créditos.
• El sistema debe permitir a los usuarios buscar y consultar la información sobre las
canciones.
• El sistema debe permitir a un usuario adquirir una canción a cambio de una cantidad
de crédito.
• Los usuarios tendrán algunos días para descargar en su ordenador las canciones que
hayan adquirido.

Ejemplo de requisitos no funcionales:

• El sistema debe permitir mas de 100 conexiones simultaneas.


• El sistema debe proporciona acceso al usuario con seguridad y cumplir la ley de
protección de datos.
• El sistema debe elegir entre disponer de un sistema de recuperación en caso de
fallos.
• La aplicación debe funcionar en sistemas operativos Linux y Windows.
• El tiempo de respuesta a consultas, altas, bajas y modificaciones ha de ser inferior
a 5 segundos.

6.3.1 Especificación de requisitos del sistema

Una vez obtenidos los requisitos el siguiente paso es modelar el sistema. Debemos
especificar los requisitos. Para ello los desarrolladores de software tienen una serie de
herramientas o modelos para modelar los procesos del sistema o los datos. Todos estos
modelos junto a documentos de texto nos sirven para especificar que va a hacer nuestro
sistema.

Un ejemplo de modelo para análisis son los DFD’s para modelar el sistema anterior. Si
necesitamos modelar el login del usuario. Vamos obteniendo los módulos, las partes de
nuestra aplicación con este modelo.

UT1- Introduccion a la informática y programación 74


Otro son los casos de uso un sistema de modelado UML, para especificar requisitos en el
análisis.

UT1- Introduccion a la informática y programación 75


Otro modelo para especificar en este caso los datos que usa la aplicación normalmente a
través de una base de datos son el modelo Entidad Relación.

UT1- Introduccion a la informática y programación 76


6.4 Fase de diseño

En el análisis decimos el que es y que debe hacer nuestro sistema. La pregunta es el que,
en el diseño damos un paso más allá y decimos el como es nuestro sistema, y como esta
construido. Seguimos usando modelos pero más cercanos al software justo antes de hacer
el desarrollo.

Usamos modelos para diseñar nuestro sistema, para decir como se va a hacer nuestro
sistema. Obtenemos por un lado la arquitectura. El diseño arquitectónico, que módulos
va a tener nuestro sistema. Imaginad que estamos creando un programa para una
biblioteca que presta libros.

En el diseño de procedimientos obtenemos para cada algoritmo de nuestra aplicación


como vamos a realizar ese programa. En el siguiente ejemplo vemos como realizaríamos
una parte de nuestra aplicación que es la petición de cheques, en detalle justo antes de
hacer el programa en seudocódigo. Por ejemplo Leer Peticion Prestamo para libros.

UT1- Introduccion a la informática y programación 77


El pseudocódigo es una forma de expresar los distintos pasos que va a realizar un
programa, de la forma más parecida a un lenguaje de programación. Su principal función
es la de representar por pasos la solución a un problema o algoritmo, de la forma más
detallada posible, utilizando un lenguaje cercano al de programación. El pseudocódigo no
puede ejecutarse en un ordenador ya que entonces dejaría de ser pseudocódigo, como su
propio nombre indica, se trata de un código falso (pseudo = falso), es un código escrito
para que lo entienda el ser humano y no la máquina.

Modulo Leer_Peticion Prestamo

Leer Libro

Si Esta disponible (Libro) Entonces

Leer Carnet
Si Tiene(Carnet) Entonces
Leer DatosAlumno
Leer DatosLibro
HacerPrestamo
FinSi
Sino
Escribir “No hay préstamo de libro”

FinSi

Sino

Finsi

Escribir “Esperar a que llegue el libro”

Ent

También podemos hacerlo con diagramas de flujo, es otra técnica que aprenderemos en
la siguiente unidad para realizar nuestros programas. Es muy utilizado para resolver
algoritmos y problemas en desarrollo de software

UT1- Introduccion a la informática y programación 78


6.5 Fase de Desarrollo o Implementación software.

En el siguiente tema nos centraremos en programación y desarrollo software


introduciremos lenguajes de programación. En esta fase hay que elegir las herramientas
adecuadas, un entorno de desarrollo que facilite el trabajo y un lenguaje de programación
apropiado para el tipo de software a construir. Esta elección dependerá tanto de las
decisiones de diseño tomadas como del entorno en el que el software deba funcionar.

Al programar, hay que intentar que el código no sea indescifrable siguiendo distintas
pautas como las siguientes:

• Evitar bloques de control no estructurados.


• Identificar correctamente las variables y su alcance.
• Elegir algoritmos y estructuras de datos adecuadas para el problema.
• Mantener la lógica de la aplicación lo más sencilla posible.
• Documentar y comentar adecuadamente el código de los programas.

6.5.1 Programa

Un programa informático o programa de ordenador es una secuencia de instrucciones,


escritas para realizar una tarea específica en un ordenador. Este dispositivo requiere
programas para funcionar, por lo general, ejecutando las instrucciones del programa en

UT1- Introduccion a la informática y programación 79


un procesador central.2 El programa tiene un formato ejecutable que el ordenador puede
utilizar directamente para ejecutar las instrucciones. El mismo programa en su formato
de código fuente legible para humanos, del cual se derivan los programas ejecutables (por
ejemplo, compilados), le permite a un programador estudiar y desarrollar sus algoritmos.
Una colección de programas de computadora y datos relacionados se conoce como
software.

Generalmente, el código fuente lo escriben profesionales conocidos como programadores


de ordenador. Este código se escribe en un lenguaje de programación que sigue uno de
los siguientes dos paradigmas: imperativo o declarativo, y que posteriormente puede ser
convertido en un archivo ejecutable (usualmente llamado un programa ejecutable o un
binario) por un compilador y más tarde ejecutado por una unidad central de
procesamiento. Por otra parte, los programas de computadora se pueden ejecutar con la
ayuda de un intérprete, o pueden ser empotrados directamente en hardware.

Ejemplo de programa

package stringejemplos;

public class PrimerosStrings {

public static void main(String[] args) {

String cadenavacia="";

String cadena="Cadena con literal";

double miNum= 5.0;

cadena = cadena + " unimos con segunda cadena";

System.out.println(" resultado concatenar " + cadena);

cadena = cadena + miNum;

System.out.println(" resultado concatenar con double " + cadena);

UT1- Introduccion a la informática y programación 80


6.5.2 Proceso

Un Proceso es una ejecución de un programa. Se considera como una entidad activa y


realiza las acciones especificadas en un programa. Se pueden relacionar múltiples
procesos con el mismo programa. Maneja las actividades del sistema operativo a través
de PCB (Bloque de control de proceso) que incluye el contador del programa, la pila, el
estado, etc. El contador del programa almacena la siguiente secuencia de instrucciones
que se ejecutará más adelante.

Necesita recursos como procesamiento, memoria y recursos de E / S para realizar tareas


de administración. Durante la ejecución de un programa, podría activar el procesador o
la operación de E / S que hace que un proceso sea diferente de un programa.

El programa anterior en ejecución es un proceso. El sistema operativo se encarga de cargar


el programa compilado transformado a código máquina entendible por el ordenador y lo
carga en la memoria y en la cpu del ordenador para ser ejecutado.

Ejemplo:

El programa anterior ejecutado en la consola del IDE Eclipse

6.5.3 Lenguajes de programación

Los veremos en detalle en los siguientes temas. En cualquier caso haremos una pequeña
introducción aquí.

Conocer cómo funciona el lenguaje de programación y cómo se interrelaciona con


nosotros a través de software nos permite mejorar nuestra productividad y conseguir

UT1- Introduccion a la informática y programación 81


ese algo que nos diferencie de la competencia.

A lo largo de los años, los lenguajes de programación han aumentado su potencia y


flexibilidad para, de esa forma, llevar a cabo las tareas complejas que la innovación y
las nuevas tecnologías de información y comunicación (TIC) nos exigen.

Todas las máquinas y dispositivos requieren un lenguaje de programación para cumplir


sus funciones. Si conoces cuáles permiten que estos las realicen adecuadamente,
entonces tendrás un plus que te permitirá alcanzar tus objetivos en menos tiempo.

6.5.3.1 ¿Qué es un lenguaje de programación?


Es un lenguaje formal que, mediante una serie de instrucciones, le permite a un
programador escribir un conjunto de órdenes, acciones consecutivas, datos y algoritmos
para, de esa forma, crear programas que controlen el comportamiento físico y lógico
de una máquina.

Mediante este lenguaje se comunican el programador y la máquina, permitiendo


especificar, de forma precisa, aspectos como:

• Que datos debe operar un software específico;


• Cómo deben ser almacenados o transmitidos esos datos;
• Las acciones que debe tomar el software dependiendo de las circunstancias
variables.

Para explicarlo mejor (en otras y con menos palabras), el lenguaje de programación es
un sistema estructurado de comunicación, el cual está conformado por conjuntos de
símbolos, palabras claves, reglas semánticas y sintácticas que permiten el
entendimiento entre un programador y una máquina.

Es importante recalcar que existe el error común de usar como sinónimos el lenguaje
de programación y el lenguaje informático, pero ¿por qué no debemos confundirlos?

Pues, es debido a que el lenguaje de programación obedece a un conjunto de reglas


que permiten expresar las instrucciones que serán interpretadas por el programador. Y
el lenguaje informático comprende otros lenguajes que dan formato a un texto pero no
son programación en sí mismos.

Entonces, no todos los lenguajes informáticos son de programación, pero todos los
lenguajes de programación son a la vez informáticos.

6.5.3.2 ¿Qué tipos de lenguaje de programación existen?

UT1- Introduccion a la informática y programación 82


El lenguaje de programación es la base para construir todas las aplicaciones digitales
que se utilizan en el día a día y se clasifican en dos tipos principales: lenguaje de bajo
nivel y de alto nivel.

6.5.3.2.1 Lenguaje de programación de bajo nivel

Son lenguajes totalmente orientados a la máquina.

Este lenguaje sirve de interfaz y crea un vínculo inseparable entre el hardware y el


software.

Además, ejerce un control directo sobre el equipo y su estructura física. Para aplicarlo
adecuadamente es necesario que el programador conozca sólidamente el hardware.
Éste se subdivide en dos tipos:

Lenguaje máquina

Es el más primitivo de los lenguajes y es una colección de dígitos binarios o bits (0 y 1)


que la computadora lee e interpreta y son los únicos idiomas que los ordenadores
entienden.

Ejemplo: 10110000 01100001

No entendemos muy bien lo que dice ¿verdad? Por eso, el lenguaje ensamblador nos
permite entender mejor a qué se refiere éste código.

Lenguaje ensamblador

El lenguaje ensamblador es el primer intento de sustitución del lenguaje de máquina


por uno más cercano al utilizado por los humanos.

Un programa escrito en este lenguaje es almacenado como texto (tal como programas
de alto nivel) y consiste en una serie de instrucciones que corresponden al flujo de
órdenes ejecutables por un microprocesador.

Sin embargo, dichas máquinas no comprenden el lenguaje emsamblador, por lo que se


debe convertir a lenguaje máquina mediante un programa llamado Ensamblador.

Este genera códigos compactos, rápidos y eficientes creados por el programador que
tiene el control total de la máquina.

Ejemplo: MOV AL, 61h (asigna el valor hexadecimal 61 al registro «AL»)

UT1- Introduccion a la informática y programación 83


6.5.3.2.2 Lenguaje de programación de alto nivel

Tienen como objetivo facilitar el trabajo del programador, ya que utilizan unas
instrucciones más fáciles de entender.

Además, el lenguaje de alto nivel permite escribir códigos mediante idiomas que
conocemos (español, inglés, etc.) y luego, para ser ejecutados, se traduce al lenguaje
de máquina mediante traductores o compiladores. Existen infinidad de lenguajes de
programación de alto nivel: Java, C#, Javascript, HTML, C++, Python, PHP, etc.

Traductor

Traducen programas escritos en un lenguaje de programación al lenguaje máquina del


ordenador y a medida que va siendo traducida, se ejecuta.

Compilador

Permite traducir todo un programa de una sola vez, haciendo una ejecución más rápida
y puede almacenarse para usarse luego sin volver a hacer la traducción.

Ejemplo de programa en Lenguaje de alto nivel C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;

namespace AplicacionConLINQ
{

[Table("Empleados")]
public class Empleado : Persona
{

public string IdEmpresa {get;set;}


[Column(TypeName = "DECIMAL")]
public double Salario { get; set; }

public Empleado()
{

UT1- Introduccion a la informática y programación 84


public Empleado(String Id, String IdEmpresa, String Apellido, String Nombre, DateTime
FechaNac, String direccion, double Salario): base(Id,Apellido, Nombre, FechaNac,direccion) {

this.IdEmpresa = IdEmpresa;
this.Salario = Salario;

public double calculoImpuestos() {

return Salario * 0.2;


}

public double salarioNeto()


{

return Salario - calculoImpuestos();

public override string ToString()


{
return String.Format("{0} Salario: {1}", base.ToString(), this.Salario);
}
}
}

6.5.3.3 Para que sirven los lenguajes de programación

En general un lenguaje de programación sirve para programar. Sin embargo, cada uno
tiene un alcance y forma de comunicación diferente.

En resumidas cuentas, el lenguaje de bajo nivel permite la comunicación interna de la


máquina, cada instrucción tiene su código único de operación.

Y el lenguaje de alto nivel facilita la captación de instrucciones que el programador le da


a la máquina, mientras que éste introduce datos en el idioma conocido la máquina lo va
absorbiendo en lenguaje de máquinas mediante traductores o compiladores, permitiendo
así:

• Reducir el tiempo de programación;


• Entender más fácilmente la tarea a realizar;
• Permitir al programador desvincularse del funcionamiento interno de la máquina,
entre otros.

En otras palabras, el lenguaje de bajo nivel es cercano a los idiomas de las máquinas
mientras que el lenguaje de alto nivel está más cerca del entendimiento e idioma humano.
UT1- Introduccion a la informática y programación 85
6.5.3.4 Compiladores e interpretes

Es un Software que traduce un programa escrito en un lenguaje de programación de alto


nivel (C / C ++, COBOL, etc.) en lenguaje de máquina. Un compilador generalmente genera
lenguaje ensamblador primero y luego traduce el lenguaje ensamblador al lenguaje
máquina. Una utilidad conocida como «enlazador» combina todos los módulos de lenguaje
de máquina necesarios en un programa ejecutable que se puede ejecutar en la
computadora.

El compilador junto con el linkador puede crear ficheros ejecutables o ficheros


intermedios como es el caso de C. El compilador crea los ficheros compilados con código
máquina de extensión .o a partir de los fuentes con extensión .c. El linker combina
todos los ficheros compilados para crear la aplicación.

UT1- Introduccion a la informática y programación 86


¿En qué se diferencia de un Intérprete?

Para responder a esta pregunta primero debemos conocer que es y para qué sirve un
Intérprete.

Un intérprete lee un programa fuente ejecutable, escrito en un lenguaje de


programación de alto nivel, así como datos para este programa, y ejecuta el programa
contra los datos para producir algunos resultados. Un ejemplo es el intérprete de shell
de Unix, que ejecuta comandos del sistema operativo de forma interactiva.

Hay que tener en cuenta que tanto los intérpretes como los compiladores (como
cualquier otro programa) están escritos en un lenguaje de programación de alto nivel
(que puede ser diferente del idioma que aceptan) y se traducen en código máquina.

Por ejemplo, un intérprete de Java puede escribirse completamente en C o incluso en


Java. El programa fuente del intérprete es independiente de la máquina ya que no
genera código de máquina.

Un intérprete generalmente es más lento que un compilador porque procesa e


interpreta cada enunciado de un programa tantas veces como el número de
evaluaciones de esta afirmación. Por ejemplo, cuando se interpreta un bucle for, las
afirmaciones dentro del cuerpo for-loop se analizarán y evaluarán en cada paso del
bucle. Como ejemplo vuestro navegador tiene un que traduce el código HTML y
javascript línea a línea para mostrar una página web.

UT1- Introduccion a la informática y programación 87


6.6 Fase de pruebas

El testing de software o software QA es una disciplina en la ingeniería de software que


permite tener procesos de ejecución de un programa o aplicación y una metodología de
trabajo con el objetivo de localizar errores de software. También puede describirse como
el proceso de validación y verificación de un programa de software o una aplicación.

Es imprescindible tener en cuenta que el testing es paralelo al proceso de desarrollo del


software. A medida que se está construyendo nuestro producto, tenemos que realizar
tareas de testing de software para prevenir incidencias de funcionalidad y corregir
desviaciones del software antes de su lanzamiento.

A un alto nivel, las pruebas de software son necesarias para detectar los errores en el
software y para probar si el software cumple con los requisitos del cliente. Esto ayuda al
equipo de desarrollo a corregir los errores y entregar un producto de buena calidad.

Se realizan diferentes tipos de pruebas:

• De unidad: individuales para cada módulo de nuestra aplicación


• De integración: para comprobar que todos los módulos funcionan bien en conjunto.
• De explotación: pruebas con usuarios reales utilizándola
• De stress: poniendo el sistema en sus límites para comprobar como responde y como
se recupera.

UT1- Introduccion a la informática y programación 88


6.7 Fases de implantación y mantenimiento.

Una vez que la aplicación ha sido desarrollada, hay que llevarla a explotación y
producción. Esto quiere decir que debemos instalarla en el cliente y que la utilice. Esto
conlleva:

1. Instalar la aplicación
2. Desarrollar manuales para instalación y de usuario
3. Formar a los usuarios

Además, debemos establecer un mecanismo para mantener la aplicación por dos razones.
Una para ir arreglando los errores que se vayan detectando. Otra para añadir mejoras,
todo esto se realiza en la fase de mantenimiento mientras la aplicación este funcionando.

Debido a la complejidad del software es inevitable que se producan errores lo que se


conoce como bugs, que deben ser arreglados con parches de software. Se informan sobre
los errores y el grupo de mantenimiento se encarga de resolverlos e instalar las
actualizaciones, parches.

Igualmente, los clientes cuando usan las aplicaciones habitualmente encuentran que
ciertos módulos se pueden mejorar o se pueden añadir nuevas funcionalidades. Es otra
parte importante en el mantenimiento y consigue que la aplicación dure más años. Son
las nuevas versiones de software del programa o aplicación. El grupo de mantenimiento
desarrolla los nuevos requerimientos del cliente y actualiza la aplicación a una nueva
versión.

UT1- Introduccion a la informática y programación 89

También podría gustarte