UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca...
Transcript of UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca...
9~
UNIVERSIDAD NACIONAL DEL CALLAO ® FACULTAD DE INGENIERÍA INDUSTRIAL Y DE
SISTEMAS INSTITUTO DE INVESTIGACIÓN DE LA FACULTAD DE
INGENIERÍA INDUSTRIAL Y DE SISTEMAS
PROYECTO DE INVESTIGACIÓN
TEXTO: "INFORMATICA INDUSTRIAL 1"
PRESENTADO POR:
ING. OSMART RAUL MORALES CHALCO
PROFESOR AUXILIAR
(PERÍODO DE E..JECUCIÓN: Del 01/08/2012 al31/01/14)
RR No 776-2012- R
CALLAO - PERÚ
'
11. ÍNDICE
l. Índice ............................................................................................. ,. 1
11. Resumen.......................................................................................... 2
111. Introducción ....................................................................................... 3
.IV .. Marco Teórico ...................................................................................... 4
V. Materiales y Métodos ......................................................................... 6
VI. Resultados ........................................................................................ 7
6.1. CAPÍTULO 1
Conceptos Básicos... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6.2. CAPÍTULO 11
Esquema del Funcionamiento de un Computador................................. 13
6.3. CAPÍTULO 111
Estructura de Datos y Algoritmos..................................................... 23
6.4. CAPÍTULO IV
Lenguajes de Programación......................................................... 59
6.5. CAPÍTULO V
Archivos y Bases de Datos...................................................... 70
VIl. Discusión........................................................................................... 85 VIII. Bibliografía.................................................................................. . . 86
IX. Apéndice ........................................................................................ 87 X. Anexos........................................................................................... 95
2
11. RESUMEN
En la ejecución de la investigación se ha realizado la elaboración del texto de
Informática Industrial l.
Como resultado de la investigación, se ha elaborado un libro de Informática
Industrial J. con cinco capítulos. El texto servirá a los estudiantes para dotarles del
marco teórico y práctico como de los aspectos principales de la informática,
tratando tanto el hardware como el software, técnicas y mecanismos de
representación, transferencia, tratamiento y control de la información en el
computador así como el software aplicado a la Ingeniería Industrial, Estructura de
datos y algoritmos. Representación de la información en los computadores
(Diseño lógico). Esquema de funcionamiento de un Computador. Unidades
funcionales de un computador. Diseño de un computador básico.
Dispositivos de entrada y salida y unidades de memoria masiva. Conceptos
básicos sobre len~uajes de prowamación y traductores. Archivos y bases de
datos. Desarrollo y evolución histórica de la informática., de la disciplina de la
Informática Industrial l.
2
111. INTRODUCCIÓN
La informática Industrial tiene un gran impacto en la ingeniería industrial, La
mayoría de las herramientas de la ingeniería industrial son computarizadas
ahora, en este proyecto de investigación se verán los aspectos principales de la
informática, tratando tanto el hardware como el software, se presenta una
introducción a las técnicas y mecanismos de representación, transferencia,
tratamiento y control de la información en el computador así como el software
aplicado a la ingeniería industrial, La Estructura de datos y algoritmos.
Representación de la información en los computadores (Diseño lógico).
Esquema de funcionamiento de un computador. Lenguajes de máquina y
ensamblador. Unidades funcionales de un computador. Diseño de un·
computador básico. Dispositivos de entrada y salida y unidades de memoria
masiva. Sistemas operativos. Conceptos básicos sobre lenguajes de
proQramación y traductores. Archivos y bases de datos. Transmisión de datos y redes de computadores. Desarrollo y evolución histórica de la informática.
3
IV. MARCO TEÓRICO
La Mayoría de los textos de Informática tratan de temas aplicados a la
ingeniería de sistemas y en la biblioteca especializada de la facultad de
ingeniería Industrial y de Sistemas hay pocos libros de Informática con
aplicaciones a la Ingeniería Industrial.
En el área de Informática Industrial, existen textos que presentan los temas
y programas con el rigor y nivel universitario requerido; pero estos no siguen un
orden de presentación de temas concatenados de manera que puedan conducir
a un estudiante que recién inicia sus primeros contactos con esta parte del
conocimiento científico, a entender, comprender, analizar, sintetizar y aplicar los
conceptos básicos de esta ciencia, tales como:
GLENN BROOKSHEAR, J: "Introducción a la Computación", del año 2012,
que si bien presenta los temas en toda su amplitud estos no están desarrollados
de acuerdo al silabo del curso de Informática Industrial de nuestro medio
universitario.
GOMEZ VIDAL, P : "Fundamentos Físicos Y Tecnológicos De La
Informática", del año 2007 , que presenta el papel del Ingeniero ha ido variando
desde el de creador y desarrollador de tecnología, hacia el de experto en su
aplicabilidad y en la creación y provisión de nuevos servicios. De la producción
se ha pasado a la gestión de la aplicación orientada al servicio, a la gestión del
servicio en sí, La manufacturación cada vez se halla más restringida a ámbitos
empresariales reducidos con gran potencial productiva y de suministro, mientras
que en el ámbito de aplicación y servicio cada día más expansivo, precisando
·de· profesionales con 9.ran conocimiento de producto a nivel de cliente y servidor, sin que demande su intervención a niveles inferiores.
4
VILlARREAL DE lA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", del año 2007, es un libro que tiene al9unas
partes del contenido del sílabo de la asignatura Informática Industrial lo mismo
que en caso anterior tiene muy pocas aplicaciones a la Ingeniería Industrial. En
la biblioteca especializada de la facultad de ingeniería industrial y de sistemas,
existen pocos ejemplares del texto en mención.
Así podrfa citar una relación de libros que ya están fuera de uso.
Los antecedentes descritos ha motivado al autor a desarrollar la presente
investigación como una contribución dirigida a dotar de Jos instrumentos
necesarios de consulta y orientación básica en el proceso de enseñanza
aprendizaje de la informática, de acuerdo al programa desarrollado en nuestra
universidad que es el que siguen las Universidades Peruanas.
5
V. MATERIALES Y MÉTODOS
La investigación es de carácter teórico-práctico y de tipo básico.
La presente investigación pretendió resolver el problema ¿Existe un Texto de
Informática Industrial 1 que oriente adecuadamente el desarrollo de la Teoría y
de las Prácticas de Laboratorio de la asignatura de Informática Industrial!?
Teniéndose entendido que el tema de investigación es elaborar un texto, no se
determina el universo ni técnicas estadísticas.
La metodología empleada fue descriptivo analítico con el objeto de identificar los
temas más necesarios para la formación profesional del ingeniero industrial.
Para la elaboración del presente texto de Informática Industrial 1 a la Ingeniería
Industrial, se han utilizado como fuente principal, la sumilla del silabo del curso
de Informática Industrial 1, los textos citados en el capítulo de referenciales. Los
textos fuente del trabajo en mención, fueron sistematizados, según el avance
del trabajo de investigación.
6
VI. RESULTADOS
El resultado de la investigación, fue la elaboración del texto de Informática
Industrial 1 a la Ingeniería Industrial, que será de mucha utilidad para
estudiantes y profesionales de ingeniería industrial, a fin de ser más
competitivos en el mundo globalizado en que nos encontramos.
El texto desarrollado consta de cinco capítulos y un apéndice.
El contenido de los capítulos es el siguiente:
6.1. CAPITULO 1 Conceptos Básicos.
6.2. CAPITULO 11 Esquema del Funcionamiento de un Computador
6.3. CAPITULO 111 Estructura de Datos y Algoritmos
6.4. CAPITULO IV Lenguajes de Programación
6.5. CAPITULO V Archivos y Bases de Datos.
7
' , 6~1. CAPITULO 1
6.1.1 CONCEPTOS BÁSICOS
Algoritmo:
Los programadores transforman el diseño de los analistas y usuarios en
una solución lógica que la computadora pueda desarrollar. El sistema se
divide en módulos o programas más pequeños que desempeñan una tarea
única dentro del sistema. Estos módulos se toman por separado y se
elabora el diseño del flujo lógico de cada programa y modulo llamado
algoritmo; hay dos maneras de presentarlos: por medio de diagrama de
flujo o mediante pseudocódigo.
Diagrama de flujo
Los diagramas de flujo utilizan un conjunto estándar de símbolos
desarrollados por ANSI (American Standards lnstitute) para representar el
flujo lógico de un programa.
Los diagramas de flujo son usados para representar algoritmos pequeños,
ya que abarcan mucho espacio y su construcción es laboriosa. Por su
facilidad de lectura son usados como introducción a los algoritmos, \n descripción de un lenguaje y descripción de procesos a personas ajenas a \_[
la computación.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al
lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de
programación entre otros. Las descripciones en lenguaje natural tienden a
ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita
muchas ambigüedades del lenguaje natural. Dichas expresiones son
formas más estructuradas para representar algoritmos; no obstante, se
mantienen independientes de un lenQuaje de prowamación específico.
8
Pseudocódigo
Un algoritmo puede expresarse en formas diferentes; por lo tanto, el
pseudocódigo puede utilizarse como alternativa o complemento a los
diagramas de flujo. Estas herramientas no son lenguajes de programación
y no puede procesarlos una computadora; su propósito es proporcionarnos
una forma de documentar nuestras ideas durante el diseño del programa.
El pseudocódigo está pensado para facilitar a las personas el
entendimiento de un al~oritmo, y por lo tanto puede omitir detalles
irrelevantes que son necesarios en una implementación. Programadores
diferentes suelen utilizar convenciones distintas, que pueden estar
basadas en la sintaxis de lenguajes de programación concretos. El
pseudocódigo es una notación para algoritmos que puede describirse
como una mezcla de inglés o español y nuestro lenguaje de programación
favorito. Al escribir pseudocódigo podemos incorporar las palabras de
comandos y la sintaxis del len~uaJe computacional que vayamos a utilizar
para elaborar el programa; En pseudocódigo
Leer base, altura
Área= (base* altura)/2
Escribir Área
Estructuras secuenciales:
La estructura secuencial es aquella en la que una acción sigue a otra en
secuencia. Las operaciones se suceden de tal modo que la salida de una
es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.
1. Simples: Consiste en pasar un valor constante a una variable (a ~ 15)
2. Contador: Consiste en usarla como un verificador del número de veces
que se realiza un proceso (a~ a+ 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a~
a+b
4. De trabajo: Donde puede recibir el resultado de una operación
matemática que involucre muchas variables (a~ e+ b*2/4).
9
Conjunto de caracteres con algún significado, pueden ser numéricos,
alfabéticos, o alfanuméricos.
Información:
Es un conjunto ordenado de datos los cuales son manejados según la
necesidad del usuario, para que un conjunto de datos pueda ser procesado
eficientemente y pueda dar lugar a información, primero se debe guardar
lógicamente en archivos.
Campo:
Es la unidad más pequeña a la cual uno puede referirse en un programa.
Desde el punto de vista del prowamador representa una característica de
un individuo u objeto.
Registro:
Colección de campos de iguales o de diferentes tipos.
Archivo:
Colección de registros almacenados siguiendo una estructura homogénea.
Base de datos:
Es una colección de archivos interrelacionados, son creados con un
DBMS. El contenido de una base de datos engloba a la información
concerniente(almacenadas en archivos) de una organización, de tal
manera que los datos estén disponibles para los usuarios, una finalidad de
la base de datos es eliminar la redundancia o al menos minimizarla. Los
tres componentes principales de un sistema de base de datos son el
hardware, el software DBMS y los datos a mane~ar, así como el personal
encargado del manejo del sistema.
10
Sistema Manejador de Base de Datos. (DBMS)
El objetivo primordial de un sistema manejador base de datos es
proporcionar un contorno que sea a la vez conveniente y eficiente para ser
utilizado al extraer, almacenar y manipular información de la base de
datos. Todas las peticiones de acceso a la ·base, se manejan
centralizadamente por medio del DBMS, por lo que este paquete funciona
como interface entre los usuarios y la base de datos
Hardware
Corresponde a todas las partes físicas y tangibles de una cOmputadora:
sus componentes eléctricos, electrónicos, electromecánicos y mecánicos;
sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro
elemento físico involucrado.
Software
La palabra «software» se refiere al equipamiento lógico o soporte lógico de
un computador digital, y comprende el conjunto de los componentes
lógicos necesarios para hacer posible la realización de una tarea
específica, en contraposición a los componentes físicos del sistema ~.
(hardware). \j
Tales componentes lógicos incluyen, entre otros, aplicaciones informáticas
tales como procesador de textos, que permite al usuario realizar todas las
tareas concernientes a edición de textos; software de sistema, tal como un
sistema operativo, el que, básicamente, permite al resto de los programas
funcionar adecuadamente, facilitando la interacción con los componentes
físicos y el resto de las aplicaciones, también provee una interfaz ante el
usuario.
11
REFERENCIAS BffiLIOGRAFICAS
1.- GLENN BROOKSHEAR, J: "Introducción a la Computación", Madrid, Edit
Pearson Educación, 11 Edición, 2012.
2.- GOMEZ VIDAL, P : "Fundamentos Físicos Y Tecnológicos De La
Informática",", Madrid, Edit Pearson Educación, Tercera Edición, 2007
3.- VILLARREAL DE LA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", Madrid, Edit McGraw-Hilllnteramericana
Segunda Edición, 2007
12
6.2. CAPITULO 11
ESQUEMA DEL FUNCIONAMIENTO DE UN COMPUTADOR
6.2.1 FUNCIONAMIENTO BÁSICO DEL ORDENADOR
Una computadora o sistema computacional es un conjunto de tecnologías
que efectúa cuatro ogeraciones;
1.-Acepta entradas: recibe información del mundo exterior
2.-Produce salidas: genera información al mundo externo.
3.-Procesa Información: Lleva a cabo operaciones aritméticas y lógicas;
además, toma decisiones y le da sentido a la información.
4.-Aimacena Información: Mueve y almacena la información de y hacia la
memoria de la Computadora y los dispositivos de almacenamiento.
En conjunto, estas tecnologías forman un sistema computacional que da
sentido a la información del exterior.
Todo sistema de cómputo tiene componentes electrónicos y mecánicos, a
los cuales se les conoce como hardware de la computadora.
Además del hardware es necesario otro componente básico llamado
software. Aunque el hardware tiene una gran capacidad de procesamiento ~
de información, no efectúa ninguna operación si no se le dan instrucciones ·
para hacerlo; a estas se las conoce con el nombre de software.
El funcionamiento básico de un ordenador puede expresarse mediante el
Siguiente esquema.
c::b O!tDENAD~R ~
2
S 13
6.2.2 APLICACIÓN DE LAS COMPUTADORAS EN LA INGENIERIA INDUSTRIAL
Cuando se diseña un objeto con una computadora se crea un modelo
electrónico con la descripción de sus tres dimensiones. Si se desea ver el
objeto desde una perspectiva diferente, se le pide a la computadora que
muestre otra vista. En papel se tendrían que producir diferentes dibujos para
cada perspectiva, y para modificar el diseño habría que volver a dibujar cada
perspectiva transformada. Esta manera de diseñar objetos con una
computadora se llama diseño asistido por computadora (CAD por sus si9las
en ingles). Existen sistemas especializados por CAD para diseñar casi
cualquier cosa, desde casas, carros y edificios hasta moléculas y aeronaves.
Además del diseño, las computadoras desempeñan un papel cada vez más
importante en la manufactura de productos. En algunas fábricas las
computadoras controlan prácticamente todo. Tomemos como ejemplo una
planta generadora de vapor. En este tipo de planta una computadora
monitorea presiones y temperaturas en cientos de puntos criticos de toda la
planta; si la presión o la temperatura de un tubo o tanque rebasa un
determinado nivel, la computadora regula· el proceso en forma directa
girando válvulas o ajustando quemadores. Algunas fábricas usan brazos de
robots computarizados para colocar y soldar componentes o para realizar \ , ....... Al
tareas repetitivas o peligrosas.
Las plantas automotrices usan robots para ejecutar numerosas tareas como
pintar, soldar, cortar y doblar hojas de metal para secciones de carrocería.
La fabricación con computadoras y robots se llama manufactura asistida por
computadora( CAM por sus siglas en ingles). La manufactura con
integración de computadoras(CIM por sus siglas en Ingles) ha asignado a las
computadoras una función adicional en el diseño de productos, la solicitud de
partes y la planeación de la producción de manera que las computadoras
pueden coordinar el proceso completo de manufactura.
14
6.2.3 LA MÁQUINA Y LOS PROGRAMAS
Un ordenador es una máquina electrónica (hardware), que no serviría
para nada si no fuese por los programas (software).
El ordenador está formado por un gran nómero de componentes
electrónicos y dispositivos que se pueden conectar a él. Para realizar su.
estudio vamos a distinguir dos partes, la unidad central y los periféricos:
· Los periféricos son los dispositivos que se conectan a la torre y que
permiten comunicarse con el ordenador, por ejemplo, el monitor, el
teclado, la impresora. Los periféricos se clasifican en tres grupos:
· Periféricos de entrada. Son aquellos que permiten al usuario introducir
datos en el ordenador, por ejemplo, el teclado y el ratón.
· Periféricos de salida. Son aquellos que muestran al usuario el resultado
de los datos procesados por el ordenador, por ejemplo, el monitor y la
impresora.
· Periféricos de entrada/salida. Son los que permiten introducir y obtener
datos del ordenador, como las unidades de disco.
Para que el ordenador haga algo es necesario que un programa le indique
lo que tiene que hacer. Las operaciones que hace un ordenador son muy
simples, pero las realiza a tanta velocidad, que puede resolver problemas
complejos en muy poco tiempo. Podemos distinguir entre dos tipos de
programas:
Sistemas operativos, como. Windows, Linux y Mac OS, que son
imprescindibles para el funcionamiento del ordenador.
Aplicaciones, como los procesadores de texto, las hojas de cálculo, los
programas de retoque fotográfico, etc. Estos programas nos permiten
hacer cosas muy diversas como los ordenadores. Pero hay que tener en
cuenta que cada aplicación está diseñada para un determinado sistema
operativo.
15
6.2.4 LA INFORMACIÓN DIGITAL
BITS: Las computadoras digitales trabajan con datos discretos como O y el
1, a diferencia de las computadoras análogas que utilizan datos continuos.
Los datos continuos incluyen todos los datos intermedios, además de O y 1.
Debido a que el sistema binario puede representar únicamente dos estados
(el O y el 1), este sistema se ha adoptado en los sistemas computacionales,
ya que los circuitos eléctricos almacenan la información utilizando también
dos estados: abierto y cerrado. Cuando un circuito se encuentra abierto o
encendido se dice que tiene almacenado el número 1, y si está cerrado o
apagado tiene almacenado el número O. Por esta razón toda la información
que se introduce a la computadora debe traducirse al código binario, es
decir, a una serie de 1 y O. Los dígitos binarios O y 1 se denominan bits
(abreviación de binary digit)
BYTES: Cada letra, número y símbolo se traduce a un código de 8
bits; a estos grupos de 8 bits se les llama bytes. Cada carácter del teclado
puede representarse con un byte y tiene relacionado un código en binario.
De esta manera, el primer paso en el proceso de digitalización es traducir la
información ya sea de un número, una letra o un símbolo a una secuenciad~ bits. Cada bit puede tomar el valor de O o de 1. Luego tenemos que definir
qué grupo de bits representaran determinadas letras, números o símbolos.
CODIGO ASCII, ASCII EXTENDIDO Y EBCDIC: El código ASCII(American
Standard Code for lnformation lnterchange) exige 7 bits para representar
cada carácter; por ejemplo, el código ASCII para la letra "A" mayúscula es
01000001. El hecho de utilizar 8 bits en lugar de 7 nos permite valernos del
código ASCII extendido, que contiene los códigos de 128 caracteres
adicionales al ASCII sencillo. Los caracteres adicionales incluidos en el
ASCII extendido, que contiene los códigos de 128 caracteres adicionales al
16
ASCII sencillo. Los caracteres adicionales incluidos en el ASCII extendido
incluyen cajas, círculos y otros símbolos gráficos.
El código Unicode utiliza 16 bits y proporciona códigos para 65000
caracteres, una cantidad enorme para representar los alfabetos de muchos
lenguajes; por ejemplo para representar la letra "A" mayúscula del alfabeto
Ruso en Unicode se utiliza la siguiente cadena de bits: es
000000100000010000.
6.2.5 EN EL INTERIOR DEL PC
La mayoría de los elementos fundamentales de los que depende el
funcionamiento de un ordenador se encuentran en el interior de una caja, sujetos
a un bastidor metálico y protegidos del exterior por una carcasa, generalmente
también metálica. Si retiramos dicha carcasa podremos ver el interior del PC,
En el interior del PC se encuentran los siguientes componentes:
• Fuente de alimentación.
• Placa base.
• El disco duro. ~
• La unidad de disco 3 112, también llamada disquetera (hoy día en deshuso). _}\J • La unidad óptica, ya sea de tipo CD-ROM, DVD o Blu-Ray.
También podemos observar unos cables de colores, que parten de la fuente de
alimentación y que son los encargados de suministrar la corriente eléctrica
necesaria a todos los componentes. Así mismo, hay otros cables, en forma de
banda y de color gris, que conectan el disco duro, la disquetera y la unidad óptica
con la placa base y que sirven para transmitir los datos entre dichos
componentes y la placa base.
17
. 6.2.5.1 FUENTE DE ALIMENTACIÓN
También llamada Switching Power Supply, es un dispositivo que provee de
energía eléctrica a la computadora a todo sus componentes.
La fuente de alimentación convierte la corriente alterna que tomamos de la
red eléctrica en continua, que es la que necesitan los circuitos electrónicos
del ordenador.
Además, reduce la tensión desde 220 V hasta unos pocos voltios.
6.2.5.2 PLACA BASE
Desde su creación en 197 4, las microcomputadoras han incluido la mayor
parte de su electrónica esencial en una placa de circuito impreso, llamada
motherboard. IBM prefirió utilizar un término diferente, en vez de llamar a
esta tarjeta principal motherboard, la denominó system. board( tarjeta de
sistema - placa de sistema). Los modelos de máquinas PS/2 le dan otra
denominación a esta placa : planar board (tarjeta plana-placa plana). Para
nuestro mejor entendimiento , nosotros vamos a denominar a esta placa
como mainboard( tarjeta principal, placa principal).
El Chipset. Normalmente está formado por dos chips de gran tamaño, que
reciben los nombres de Puente norte y Puente sur.
La memoria RAM-CMOS. Se trata de una memoria RAM que contiene la
fecha y la hora, así como otros datos básicos de la configuración del
hardware del ordenador. Para evitar que estos datos se borren al apagar el
ordenador, existe una pila que le suministra corriente. La CMOS consume
tan poca energía que lo normal es no tener que cambiar su pila en toda la
vida de la computadora. Los datos de la memoria CMOS se pueden
modificar mediante el programa Setup, al que suele accederse pulsando la
tecla Supr al iniciarse el arranque del ordenador.
La memoria ROM (de solo lectura, es decir, que no se puede grabar en
ella). En ella se encuentra la BIOS. Su ventaja es ser una especie de
18
sistema operativo básico integrado en el propio hardware, como un chip de
la placa base.
La BIOS no se borra al apagar el ordenador, porque se almacena en el
CMOS y contiene las instrucciones necesarias para arrancar el ordenador y
cargar el sistema operativo (por ejemplo, Windows). Durante el arranque la
BIOS lee los datos que contiene la memoria CMOS y realiza un chequeo
de los dispositivos de hardware. Si todo va bien, busca el sistema operativo
y lo carga. A partir de ese momento es el sistema operativo el que toma el
control del ordenador.
Las configuraciones de la BIOS no se borran al apagar el PC en un chip
de memoria especial: Esa memoria se mantiene con una pequeña pila.
2.2.5.3 MICROPROCESADOR
La empresa que fabricó el primer microprocesador para el PC, y que
actualmente continúa haciéndolo, es lntel. Los microprocesadores que se
han ido utilizando en los ordenadores personales son: 8088, 8086, 80286,
80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium 11, Pentium 111,
Pentium 111 - Celaron, Pentium IV y Corei7-Sandy Bridge. Este último, en
realidad, es un chip con cuatro procesadores, por esto se dice que el Corei7
es un procesador de cuatro núcleos Sin embargo, al ser un mercado en
expansión, en el que se mueve una gran cantidad de dinero, rápidamente~ han surgido empresas competidoras de lntel que fabrican
microprocesadores con una potencia similar o superior y con un precio algo
más reducido. Entre ellas se pueden citar AMO, con sus microprocesadores
KS, K6, K6-2, K6-3 y K7-Athlon y por último el Quad Core, con tecnología de
cuatro núcleos.
No debemos olvidar que además de los ordenadores personales
compatibles que utilizan la mayoría de los usuarios, existe otra gama
importante de ordenadores: los Apple Macintosh, que incorporan
microprocesadores PowerPC de IBM, Motorola y Apple.
19
2.2.5.4 MEMORIA RAM o MEMORIA PRINCIPAL
La memoria RAM es donde el ordenador almacena temporalmente los
datos y los programas con los que está trabajando en un momento dado.
Todo lo que hay en ella almacenado se borra cuando apagamos o
reiniciamos el ordenador.
La memoria RAM es un componente imprescindible para el ordenador.
Almacena temporalmente las instrucciones y los datos para que la CPU
pueda procesarlos.
Se puede comparar a un gran casillero. Cada casilla, denominada
posición de memoria, está formada por ocho bits de forma que en ella se
puede escribir un carácter (un byte). El microprocesador debe saber
exactamente la posición en memoria de cada dato, por lo que las
posiciones están identificadas por un número denominado dirección de
memoria. Físicamente, la memoria RAM es una plaquita rectangular de
circuito impreso con varios chips, que se acopla a la placa base a través
de una ranura específica.
Las características principales de la memoria RAM son:
La capacidad para almacenar datos, expresada en MB o GB. Existen
módulos de distintas capacidades (128 MB, 256 MB, 512 MB, 1 GB y 2
GB). Es preferible adquirir un ordenador con toda la memoria RAM
concentrada en un solo módulo, para disponer de más ranuras libres, por
si queremos ampliar la memoria RAM en un futuro. La capacidad de un
módulo de memoria viene determinada por la capacidad de cada chip y
por el número de chips que incluya, que puede variar entre 2 y 16 (8 por
cada cara).
El tipo de memoria. Actualmente, la mayoría de los ordenadores
utilizan memorias del tipo DDR-SDRAM. El prefijo DDR significa Double
Data Rate, es decir, doble tasa de datos, porque es capaz de transferir 2
paquetes de datos por cada ciclo de reloj (las antiguas memorias SDR
SDRAM sólo transferían 1 paquete de datos por cada ciclo de reloj).
20
2.2.5.5 DISCO DURO
Es un dispositivo de almacenamiento permanente de tipo magnético, donde
se guardan los archivos del sistema operativo, los programas y los archivos
del propio usuario.
La unidad de disco duro está formada por varios discos metálicos (o
cerámicos) recubiertos por una fina capa de material magnético. Ambas caras
de cada disco son útiles para grabar información digital. Para leer o escribir
datos, por cada cara de los discos hay un cabezal de lectura/escritura, de tipo
electromagnético. Cada cabezal está unido a un brazo articulado, de manera
que todos los brazos se mueven a la vez alrededor de un mismo eje de giro.
Los discos giran a una velocidad constante, que suele ser de 5400 rpm o de
7200 rpm, si bien hay algunos discos duros que pueden alcanzar las 15000
rpm. Gracias a este rápido giro de los discos se establece una fina película de
aire entre la superficie de cada disco y el cabezal correspondiente. La
distancia entre el cabezal y el disco puede ser de solo 1 micra (1 millonésima
de metro). El giro del disco, junto con el movimiento del brazo, permite que el
cabezal pueda llegar a cualquier punto de la superficie útil del disco. Cuando
el disco duro no funciona, los cabezales se aparcan automáticamente en una
zona especial, de manera que nunca entren en contacto con la superficie del
disco.
21
REFERENCIAS BffiLIOGRAFICAS
1.-GLENN BROOKSHEAR, J: "Introducción a la Computacion", Madrid, Edit.
Pearson Educación, 11 Edición, 2012.
2.-GOMEZ VIDAL, P: "Fundamentos Físicos Y Tecnológicos De La
Informática", Madrid, Edit. Pearson Educación, Tercera Edición, 2007
3.-RICARDI MACHUCA, M. "Reparación y Ensamblaje de Computación", Perú,
Edit. Delta, Segunda Edición, 2006
4.-SOVERO TORRES, C. "Ensamble y Repare su Computadora", Perú, Edit.
Macro, Segunda Edición, 2001
22
6.3 CAPÍTULO 111
ALGORITMOS Y ESTRUCTURA DE DATOS
6.3.1 CONCEPTO DE ALGORITMO
Para ser un programador eficaz se necesita aprender a resolver problemas
de un modo riguroso y sistemático. Los algoritmos son más importantes que
los lenguajes de programación o las computadoras. Un lenguaje de
programación es tan sólo un medio para expresar el algoritmo, y una
computadora es sólo un procesador para ejecutarlo.
6.3.2 EL PROCESO DE DESARROLLO DE UN PROGRAMA
Así como existen metodologías para el análisis y el diseño de sistemas,
también las hay para el desarrollo de programas. Dicho desarrollo de
programas también tiene su ciclo, que consta de cinco pasos.
Paso 1. Revisar las especificaciones del diseño
El primer paso ·en el desarrollo de un programa se da cuando los
programadores se reúnen con los analistas del sistema, los usuarios finales
y otros miembros del equipo de programación para revisar las ~
especificaciones del diseño (llamadas también diseño detallado) que se
produjeron durante las fases de análisis y de diseño. El análisis y el diseño
del sistema determinan las necesidades que deben cubrirse, el equipo que
se utilizará y cómo se resolverán los problemas. El equipo de programación
primero deberá entender los problemas que el nuevo sistema tendrá que
resolver, y luego construir dicho sistema.
Los diseñadores entregan a los programadores los diagramas de flujo y
tablas de decisión que se producen en la etapa de diseño. Los
programadores inician con las salidas del sistema: ¿qué reportes,
documentos, cheques y pantallas se necesitan? A partir de esta información
trabajan en retrospectiva para definir los datos, archivos de datos y flujos de 23
datos requeridos para producir esas salidas. En esta etapa los
programadores podrían recomendar algunos cambios que tendrían que
revisar y aprobar los usuarios y analistas.
Paso 2. Diseño del programa
El diseño del programa consiste en transformar el diseño de los analistas y
usuarios en una solución lógica que la computadora pueda desarrollar. El
paradigma de programación que se utilice definirá la técnica que se
manejará para diseñar el programa. Si este paradigma se orienta a los
procedimientos, entonces utilizaremos una técnica de diseño tradicional
llamada programación estructurada, en la que se llevan a cabo las
siguientes fases:
Fase 1. Modularizar el programa
Modularizar significa descomponer el programa en pequeños módulos o
partes. Cada uno desempeña una tarea única en el programa; existirán
tantos módulos como tareas diferentes haya que realizar.
El propósito de esta fase es simplificar el desarrollo del sistema dividiendo
un problema grande en pequeñas unidades que puedan desarrollarse,
probarse y a las que se les pueda dar mantenimiento de manera individual
y a largo plazo. La mayor parte de la modularización sigue un enfoque
jerárquico o top-down, en el que primero se consideran las principales
funciones del programa; éstas se subdividen en módulos, que a su vez se
subdividen en módulos adicionales, hasta alcanzar el nivel más bajo de
detalle. Después de que todos los módulos se han desarrollado, se integran
para crear un programa completo.
Los módulos de un programa, por lo general, se ilustran en un gráfico
jerárquico, de árbol o de estructura, que muestra el propósito general del
programa en su parte superior, identifica todos los módulos necesarios para
lograr este propósito y muestra las relaciones entre los módulos. La figura
siguiente muestra un árbol o gráfico jerárquico (simplificado) para la
inscripción de un alumno en la universidad. 24
Fase 2. Diagrama de flujo o pseudocódigo de los módulos del
programa.
Una vez que se han identificado los módulos, es el momento de tomar cada
uno por separado e iniciar el diseño del flujo lógico del programa. Hay dos
formas de lograr esta tarea: por medio de diagramas de flujo o mediante
pseudocódigo. Estos temas los abordaremos con todo detalle más adelante
en este capítulo.
Fase 3. Revisión
Nos sorprendería saber la cantidad de detalles que escapan a la vista de
los programadores y a los pequeños grupos de trabajo. El propósito de la
revisión es repasar el diseño general del sistema y comprobar que los
módulos estén completos y sin errores, y donde sea posible considerar
formas de agilizar la ejecución del programa asegurándose de que no haya
dos módulos que efectúen la misma función. Los errores y omisiones en el
programa que se detecten en este punto podrán corregirse fácilmente a un
costo bajo. Si los errores y omisiones persisten, el costo de repararlos
después será sumamente costoso.
Paso 3. Codificación del programa
El proceso de codificar un programa de cómputo depende del lenguaje de
programación que utilicemos, de las herramientas que seleccionemos y del
paradigma de programación que mejor corresponda al problema que
estemos tratando de resolver. Los programadores utilizan un editor de
texto, un editor de programa o un ambiente visual de desarrollo (VDE por
sus siglas .en inglés) para codificar los programas de computadora.
Editor de texto
Un editor de texto es cualquier procesador de palabras que pueda utilizarse
para tareas básicas de edición de texto como escribir un mail, crear
documentos o codificar programas de computadora. El Bloc de notas es un 25
accesorio de Microsoft Windows que puede utilizarse para programar las
PC. Al utilizar un editor de texto para codificar un programa de computadora
simplemente tenemos que teclear cada instrucción; las líneas de código se
almacenan en un archivo que después puede abrirse y modificarse por
medio de teclas comunes.
Editor de programas
Un editor de programas es un tipo de editor de texto especialmente
diseñado para introducir código para programas de cómputo. Estos editores
se encuentran disponibles en varios sitios comerciales, de shareware y de
freeware. Las características que incluyen varían, pero pueden ser de
ayuda, como por ejemplo dar color a los comandos, completar las palabras,
incluir macros, buscar y reemplazar, etc,
Ambiente visual de desarrollo (AVD)
Estos ambientes proporcionan a los programadores herramientas para
construir secciones importantes de un programa con sólo apuntar con el
indicador del ratón y hacer clic en lugar de teclear líneas de código. Un AVD
común se basa en una rejilla para el diseño de formas que el programador
manipula para diseñar la interfaz de usuario de un programa.
Al utilizar las herramientas que proporciona el VDE, el programador puede
agregar objetos como controles y gráficos en la rejilla para el diseño de
formas. En el contexto de un AVD, un control es un objeto visual cuyo
comportamiento podrá definirlo un programador. Los controles utilizados
con frecuencia incluyen menús, barras de herramientas, listas, cuadros de
texto, botones selectivos, cuadros de selección y áreas de imagen.
Paso 4. Pruebas del programa y documentación
El programa deberá probarse para asegurarse de que funciona
correctamente. Las pruebas frecuentemente consisten en ejecutar el
programa e introducirle datos para ver si el programa produce los
resultados correctos. Si la prueba no produce los resultados esperados, el 26
programa genera un error que suele llamarse bug, el cual deberá corregirse
y el programa tendrá que probarse una y otra vez hasta que se encuentre
libre de errores ..
Debugger
Los programadores pueden localizar errores en un programa cuando leen
las líneas de código. También pueden utilizar una herramienta llamada
debugger para correr el programa paso a paso y supervisar la condición de
las variables, las entradas y las salidas. El debugger a veces viene incluido
con un lenguaje de programación o se puede adquirir por separado.
Paso 5. Documentación y mantenimiento
Documentación del programador, documentación del usuario y
mantenimiento La documentación desempeña distintas funciones y se
dirige a diferentes usuarios. Los diagramas y el texto descriptivos de los
programas son importantes para coordinar el trabajo de los programadores;
a esta documentación se la llama documentación del programador.
Además, los usuarios finales del sistema requieren documentos para poder
entender cómo se utiliza el programa; a esta documentación se la llama
documentación del usuario. La función de la documentación es muy útil
para los desarrolladores de software, ya que aproximadamente 20% de los ~
programadores dejan de trabajar en el equipo del proyecto y es necesario ~
introducir a quienes los sustituirán; por lo tanto, la documentación
desempeña un papel primordial.
Además, el mantenimiento de los programas es una actividad necesaria
para conservarlos actualizados, en virtud de los constantes cambios que
sufren las organizaciones modernas. En esta actividad la documentación de
los programas desempeña un papel primordial, ya que sin ella sería muy
difícil poder entenderlos y por consiguiente modificarlos.
27
6.3.3 ALGORITMOS
Como dijimos, durante la fase de diseño del programa, los programadores
transforman el diseño de los analistas y usuarios en una solución lógica que
la computadora pueda desarrollar. El sistema se divide en módulos o
programas más pequeños que desempeñan una tarea única dentro del
sistema. Estos módulos se toman por separado y se elabora el diseño del
flujo lógico de cada programa o módulo llamado algoritmo; hay dos
maneras de representarlo: por medio de diagramas de flujo o mediante
pseudocodígo.
Diagramas de flujo
Un diagrama de flujo utiliza un conjunto estándar de símbolos desarrollados
por el ANSI (American National Standards Jnstitute) para representar el flujo
lógico de un programa.
En el siguiente ejemplo se almacenan los datos de entrada (que el usuario
introduce) en las variables base y altura; después, se procesan esos datos
para calcular y almacenar el resultado en la variable área, y posteriormente se
envía el resultado a la salida estándar de la computadora (por ejemplo a la
pantalla). En este capítulo aprenderemos a construir diagramas de flujo.
Entrada;
base altura
Pseudocódigo
Área = (base * altura)/2
Salida:
área
Un algoritmo puede expresarse en formas diferentes; por lo tanto, el
pseudocódigo puede utilizarse como alternativa o complemento a los
diagramas de flujo. Estas herramientas no son lenguajes de programación y
28
no puede procesarlos una computadora; su propósito es proporcionamos una
forma de documentar nuestras ideas durante el diseño del programa.
El pseudocódigo es una notación para algoritmos que puede describirse
como una mezcla de inglés o español y nuestro lenguaje de programación
favorito. Al escribir pseudocódigo podemos incorporar las palabras de
comandos y la sintaxis del lenguaje computacional que vayamos a utilizar para
elaborar el programa; por ejemplo, el diagrama de flujo anterior se expresa en
pseudocódigo de la siguiente manera:
En pseudocódigo:
Leer base, altura
Área =(base * altura)/2
Escribir Área
Estructura de un programa
En programación estructurada, los programas contienen dos bloques
principales: el de declaraciones y el de instrucciones.
Bloque de declaraciones. Se especifican todos los objetos que utiliza el
programa (constantes, variables, tablas, registros, archivos, etc.), indicando
sus características. Por lo general, este bloque se encuentra al inicio del
programa.
Bloque de instrucciones (o algoritmo). Constituye las operaciones que van
a realizarse para obtener los resultados deseados. Dentro de este bloque se
encuentran 3 partes fundamentales: entrada de datos, proceso y salida de
resultados.
Programas
Declaraciones
Instrucciones o algoritmo
Entrada de datos Proceso Salida de resultados
29
Veamos cómo se relacionan estas operaciones con ·el diagrama de flujo
anterior:
Entrada:
Los datos de entrada se colocan en las variables de memoria RAM: base y
altura
Proceso:
El resultado del cálculo se coloca en la variable de memoria RAM: área
Salida:
Los datos que se encuentran ·en la memoria RAM (en la variable área) se
envían al dispositivo de salida (por ejemplo, pantalla)
Área = (base * altura)/2
El programa es la solución final a un problema escrito en algún lenguaje
computacional. Esta notación consiste en la declaración de las variables y
de las instrucciones (algoritmo).
30
Estructura de un programa en pseudocódigo:
Programa NOMBREDELPROGRAMA Declaraciones
**Descripción de las variables
Algoritmo: ** Descripción de las acciones
Fin programa Subprograma NOMBREDELSUBPROGRAMA Declaraciones:
** Descripción de las variables locales
Algoritmo: ** Descripción de las acciones locales
Finsubprograma
Ejemplo de un programa en pseudocódigo:
Programa Calcular Área de un triángulo Declaraciones:
Base y altura son variables numencas enteras área es variable numérica de tipo real
Algoritmo: Leer base, altura Área = (base * altura) /2 Escribir Área
Fin programa
El programa en lenguaje C++:
# include <iostream.h> intmainO { int base, altura; float area; cin > > base> > altura; área = (base * altura) 1 2 cout < < area; return O; }
31
Clasificación de las instrucciones
Según la función que desempeñen dentro de un programa, se clasifican en:
1. Instrucciones de declaración.
2. Instrucciones de entrada/salida.
3. Instrucciones de proceso.
4. Instrucciones de control del flujo de ejecución.
5. Instrucciones compuestas que deben depurarse posteriormente.
Instrucciones de declaración
Su misión es anunciar la utilización de objetos en un programa, indicando
su identificador, tipo y otras características. Existen lenguajes que tienen
predefinidas sus declaraciones_ (por ejemplo, en lenguaje C una variable
numérica entera se declara como int y una variable numérica real se
declara como float) .
En pseudocódigo estas instruccione~ se describen en la sección de
declaraciones, como en el siguiént~ ej~mplo:
Declaraciones en pseudocódigo:
1 es numérica entera NOTA es numérica real Nombre es alfanumérico
32
Instrucciones de entrada/salida
Instrucción de entrada
Su misión consiste en tomar uno o varios datos desde un dispositivo de
entrada y almacenarlos en la memoria RAM en las variables cuyos
identificadores aparecen en la instrucción misma; si estas variables
tuviesen algún valor previo, se perdería.
En el conjunto de símbolos ANSI, el símbolo de operación de entrada/salida
es un romboide como el que se aprecia a continuación:
En pseudocódigo:
Leer <lista de variables>
Donde <lista de variables> es el conjunto de elementos en el que se van a
depositar Jos datos leídos en la memoria RAM. Cuando la lista se compone
de más de un elemento, cada uno se separa por comas, por ejemplo,
Leer base, altura
Ejemplo en pseudocódigo:
1 cin »base»altura;
33
En lenguaje C+ +:
Instrucción de salida
El símbolo ANSI que se utiliza es el de entrada/salida y su fórmula literal es
la siguiente.
--· -· /-~-·_/_/'-"_·_· ---E~-~-rib--i-~ <_, 1-i~t_-~_-d_e_e_xp_r_es-io_n_e_s> __ · ----~~
En pseudocódigo:
Escribir <lista de expresiones>
Donde <lista de expresiones> es el conjunto de información y datos que
deseamos enviar al exterior y que puede constituirse por letreros, variables,
valores o expresiones que se evaluarán y cuyo valor final se enviará al
dispositivo de salida de datos En los casos en los que aparezca más de una
expresión, se separarán por comas.
Por ejemplo, la siguiente instrucción envía el nombre y la edad de una
persona al dispositivo estándar de salida (por ejemplo, la pantalla) y el
segundo ejemplo envía el letrero Promedio = seguido del resultado
contenido en la variable promedio.
Ejemplo en pseudocódigo:
Escribir "Promedio=" promedio
Ejemplo en lenguaje C + + :
cout<<"Promedio =";<<promedio; 34
Instrucciones de proceso o asignación
Es la instrucción que nos permite realizar cálculos evaluando una expresión
y depositando su valor final en una variable, o realizar movimientos de
datos de una variable a otra. El símbolo ANSI utilizado es el símbolo de
proceso que en general tiene el siguiente formato.
En pseudocódigo:
1 variable= expresión
Esta instrucción se realiza en dos etapas:
1. Se evalúa la expresión,
2. El resultado de la expresión se coloca en la variable, con lo que se
borra cualquier otro valor previo que ésta pudiera tener.
El tipo del resultado de la expresión debe coincidir con el tipo de la variable,
es decir, si el resultado de la expresión contiene decimales, entonces la
variable deberá estar declarada como variable numérica real (en lenguaje e
sería flota o double). ~
Además, la variable que se encuentra del lado izquierdo de la expresión
puede aparecer también dentro de la expresión del lado derecho. El valor
de la variable que se utiliza al calcular la expresión es el valor previo de la
variable; después, en la segunda etapa, el resultado de la expresión
modifica el valor previo de la variable.
Por ejemplo, la siguiente instrucción de asignación incrementa en una
unidad el valor de la variable X. Lo anterior se explica con todo detalle en
este capítulo en la sección "Variables auxiliares de un programa".
35
Instrucciones de control del flujo de ejecución
Son instrucciones que se utilizan para controlar el orden de ejecución de las
instrucciones del programa cuya secuencia, como sabemos, se inicia con la
primera instrucción y continúa hasta la última en el orden que aparecen
escritas. Estas instrucciones no realizan ningún trabajo efectivo, salvo la
evaluación de expresiones, generalmente lógicas, con el objetivo de
controlar la ejecución de otras instrucciones o alterar el orden de ejecución
normal de las instrucciones de un programa.
Existen tres grandes grupos de instrucciones de control:
• Instrucciones alternativas (alternativa simple, alternativa doble,
alternativa múltiple).
• Instrucciones repetitivas (mientras, repetir y para).
• Instrucciones de ruptura de secuencia.
Instrucciones alternativas
Son aquellas que controlan la ejecución de uno o varios bloques de
instrucciones dependiendo del cumplimiento o no de alguna condición o del
valor final de una expresión. Existen tres modelos típicos de instrucciones
alternativas:
36
F
Alternativa simple
Esta opción controla la ejecución de un conjunto de instrucciones si una
condición es verdadera; si la condición es falsa, la ejecución del programa
continúa, pero no las ejecuta. Su representación es la siguiente:
Representación:
Instrucciones
En pseudocódigo:
si CONDICIÓN entonces instrucciones
fin si
Alternativa doble
F
Ejemplo:
Escribir "menor de edad"
Ejemplo en pseudocódigo:
Si (Edad < 18) entonces Escribir "menor de edad"
Esta opción controla la ejecución de dos conjuntos de instrucciones para el
cumplimiento o no de una condición, de forma que si se cumple se ejecutan
las instrucciones del primer bloque; si. no se cumple, se ejecutan las
instrucciones del segundo bloque. Su representación es la siguiente .
..
37
F
nstrucciones
Representación:
En pseudocódigo:
si CONDICIÓN Entonces 11 ; . . . In Si noJ1; ... Jk
Fin si
Alternativa múltiple
Ejemplo:
F
Escribir "menor de
edad"
Escribir "menor de
Ejemplo en pseudocódigo:
Si (Edad < 18) Entonces Escribir "menor de edad" Si no Escribir "mayor de edad"
Fin si
Esta opción controla la ejecución de varios conjuntos de instrucciones de
acuerdo con el valor resultante de una expresión; así, cada conjunto de
instrucciones se ejecutará si el resultado de la expresión es el valor que
corresponde a ese conjunto de instrucciones. Si el resultado de la expresión
no coincide con ninguno de los valores especificados, entonces se
ejecutará un bloque que engloba otros posibles valores no definidos. Las
distintas opciones tienen que ser disjuntas, es decir, sólo puede cumplirse
una de ellas. Su representación es la siguiente:
38
Representación:
Instrucciones 1
En pseudocódigo:
Opción EXPRESIÓN de V1 hacer11;12; .. lp V2 hacer J1; J2; .. Jq
Vn hacer K1; K2; ... Kr Otro hacer L 1; L2; ... Ls finopción
Instrucciones m
Ejemplo:,
La siguiente instrucción
letras de acuerdo con
de atternativa múttiple escribe la calificación en V
o 1 10 tros
Escribir "CERO"
39
Ejemplo en pseudocódigo:
Opción (calificación) de O hacer Escribir "CERO" 1 hacer Escribir "UNO"
10 hacer Escribir "DIEZ" Otro Escribir "CALIF. NO VALIDA"
fin opción
Instrucciones repetitivas
Son las que controlan la repetición de un conjunto de instrucciones
mediante la evaluación de una condición que se realiza en cada repetición,
la cual se llama Ótdo o iteración. Existen cuatro tipos de instrucciones
repetitivas:
Instrucción Mientras (Do ... While)
Con la estructura mientras, si una condición es verdadera se ejecuta el
grupo de instrucciones; después el programa regresa y revisa si la .
condición continúa siendo verdadera y, de ser así, vuelve a ejecutarse el
grupo de instrucciones.
El siguiente ejemplo restará 1 a x sucesivamente mientras el valor de x sea
positivo.
40
Representación:
Grupo de
instrucciones·
En pseudocódigo:
Mientras CONDICIÓN hacer 11 ; ... In
fin mientras
Instrucción Repetir (Repeat)
Ejemplo:
x=x~l
Ejemplo en pseudocódigo:
Mientras (x>O) X= x-1
fin mientras
Con la estructura repetir se ejecuta reiteradamente el grupo de
instrucciones mientras la condición sea verdadera. A diferencia de la
estructura mientras, aquí se verifica la condición después de cada
repetición. En esta estructura el proceso se ejecuta cuando menos una vez,
aunque la condición sea falsa inicialmente, ya que la condición se evalúa al
final.
En el siguiente ejemplo se elaborará la repetición de la asignación x = x - 1
cuando x tenga un valor positivo. En relación con el ejemplo anterior, se
observaría una diferencia si la variable x tuviera el valor O inicialmente, ya
que la instrucción x = x- 1 se ejecutaría la primera vez antes de revisar la
condición.
41
~··
Representación: Ejemplo
X=X-1
F F
En pseudocódigo: Ejemplo:
Repetir 11; ... In
Hasta CONDICIÓN
Instrucción Para (For)
Repetir X= X -1 Hasta (x =O)
Controla la ejecución del conjunto de instrucciones durante una cantidad
determinada de veces que queda definida inicialmente. Esta estructura de
repetición se ejecuta en tres etapas.
1. Se asigna un valor inicial a la variable de control.
2. Se verifica la condición que revisa la variable de control. Si la condición
es verdadera, se procede a efectuar el grupo de instrucciones (paso 3), ')
y si la condición es falsa, se termina de iterar continuando con la
siguiente instrucción que se encuentre fuera del For.
3. Se ejecuta el grupo de instrucciones (a esto se le llama ciclo o iteración).
4. Se incrementa la variable de control (o se modifica mediante una
expresión) y se repite el ciclo desde el paso 2.
42
Representación
En pseudocódigo:
Para Ve de V1 a Vt con incremento lnc hacer L 1; ... In
Finpara
Ejemplo: el siguiente diagrama muestra la repetición para escribir la serie de los la primeros números naturales.
Ejemplo:
Para X de 1 a 1 O con incremento de 1 hacer Escribir X Finpara
Instrucciones de ruptura de secuencia
Alteran la secuencia normal de ejecución de las instrucciones en un
programa. Como se sabe, el orden inicia con la primera instrucción y
continúa hasta la última en el orden en que aparecen escritas.
La alteración de esta secuencia hace que la ejecución continúe en otro
lugar definido en una etiqueta.
En la actualidad estas instrucciones han caído en desuso, pues generan
mucha confusión a los programadores; en consecuencia, han surgido
43
nuevos métodos de diseño de programas que las eliminan. En el siguiente
ejemplo el flujo del programa continúa en la etiqueta Terminar, por lo que el
programa nunca ejecuta la instrucción donde aparece "Esta es la segunda
línea".
Pseudocódigo:
Algoritmo:
Escribir: "Esta es la primera
línea""
Ir a Terminar
Escribir:· "Esta es la segunda
línea""
Escribir" Esta es la primera línea" Ir a Terminar Escribir "Esta es la segunda línea" Terminar Escribir" ¡ Hasta pronto!"
fin algoritmo
44
Instrucciones compuestas
Una instrucción compuesta representa un conjunto de instrucciones' que
están definidas en otra parte, en general se los llama subprogramas
(funciones, procedimientos, subrutinas, etcétera.).
Su representación en los diagramas de flujo es mediante el símbolo de
subprograma acompañado de un identificador del subprograma.
11 · ldentíflCadcir t·l En pseudocódigo:
En el diseño del programa se incluirán los nombres de las instrucciones
compuestas en el algoritmo, y posteriormente habrá que depurarlas,
sustituir cada nombre por las instrucciones correspondientes, o colocar
éstas aparte, mediante lo que se denomina subprograma, de la siguiente
manera:
Instrucción 1
Instrucción-compuesta
Instrucción n
Subprograma instrucción-compuesta Instrucción 1 Instrucción k finsubprograma
VARIABLES AUXILIARES DE UN PROGRAMA
En los ejemplos anteriores utilizamos variables para representar las
ubicaciones en la memoria RAM, donde almacenamos los valores que
utilizamos en nuestro programa. Los programas se valen de las variables
45
para almacenar temporalmente los datos que se utilizan durante su
ejecución.
Algunos programas y algoritmos utilizan el operador matemático igual (=)
para asignar un valor a una variable. Es muy importante destacar que este
operador tiene un significado diferente al que se le da en matemáticas. En
programación, la función de este operador es asignar lo que se encuentra
del lado derecho del signo = a la variable que se encuentra del lado
izquierdo del signo; por ejemplo, para asignar el valor 1 o a la variable
"Valor" utilizamos la primera expresión.
VALOR= 10~
10 =VALOR X Incorrecto VALOR
Si después de la operación anterior efectuamos la siguiente asignación:
VALOR=10+1
!Se perderá el valor anterior para asignar ·a la variable el resultado de la
expresión
'lQ.ll
VALOR
¿Qué sucede si efectuamos la siguiente operación?
VALOR =VALOR + 1;
Recordemos que primero se resolverá la expresión de! lado derecho del
signo=, y el resultado se : asignará a la variable del lado izquierdo; por lo
tanto, el valor previo de la variable VALOR es 11 y le sumaremos 1, por lo
que VALOR ahora es 12:
VALOR= 11 + 1
VALOR= 12 'l-.1. 12 46
TIPOS DE VARIABLES
Las variables desempeñan diferentes funciones en un programa, entre ellas
la de almacenar valores asignados o el resultado de algún cálculo. Hay 3
tareas importantes que pueden desempeñar las variables en un programa:
contador, acumulador o interruptor (switch).
Contador
Es una variable que se utiliza para contar cualquier evento que pueda
ocurrir dentro de un programa.
En general, la cuenta es de forma natural desde O o 1 en incrementos de 1,
aunque pueden realizarse otros tipos de cuenta. Los contadores se utilizan
en dos operaciones básicas:
1. Inicialización. Todo contador se inicia con el valor O si se realiza una
cuenta natural, o con cualquier valor inicial si se desea realizar otro tipo
de cuenta.
Contador= O
2. Contabilización o incremento. Cada vez que aparece el evento que debe
contarse, se incrementa e! contador en 1 si se realiza una cuenta natural
o en algún incremento si se realiza otro tipo de cuenta.
Contador = Contador + 1
Ejemplo: algoritmo que lee 1 O números y cuenta cuántos son positivos
(mayores que 0).
47
En pseudocódigo:
Programa CUENTADEPOSITIVOS Declaraciones
Contador y Positivos son variables numéricas enteras Número es variable numérica de tipo real
Algoritmo: Positivo= O Para contador de 1 a 1 O con incremento 1 hacer
Leer Número Si Número> O
Entonces Positivos = Positivos + 1 Finsi Fin Para Escribir Positivos Finprograma
En el ejemplo anterior se utilizan dos contadores; el primero, Contador,
contabiliza la cantidad de números leídos y el segundo, Positivos, cuenta el
resultado pedido.
Acumuladores
Son variables que se utilizan en un programa para acumular sucesivamente
elementos utilizando una misma operación; por lo tanto, se emplean para
calcular sumas y productos, sin descartar otros posibles tipos de
acumulación. Al igual que los contadores, hay que realizar dos operaciones
básicas:
1. Inicialización. Todo acumulador necesita iniciarse con el valor neutro
de la operación que éste acumulará, que en el caso de la suma es o y
en el del producto es 1.
Suma =O
Producto= 1
48
2. Acumulación. Cuando en un determinado momento obtenemos en
alguna variable el elemento que se acumulará (por la realización de una
lectura o de algún cálculo), se efectúa la acumulación del elemento por
medio de la asignación:
Suma = Suma + elemento
Producto = Producto * elemento
Ejemplo: algoritmo que calcula y escribe la suma y el producto de los 10
primeros números naturales.
· Inicio
Suma= o Producto= O
Suma = Suma + cont Producto = Producto * cont
Cont = Cont + 1
En el ejemplo anterior la variable Cont se utiliza como un contador del 1 al
1 O, la variable Suma se usa como un acumulador para calcular la suma y la
variable Producto se emplea como un acumulador para calcular el producto.
49
Interruptores
A estas variables también se las llama conmutadores, switches o banderas.
Se trata de objetos que se utilizan en un programa y sólo pueden adquirir
dos valores (cierto o falso, O o 1 ). Los interruptores tienen la función de
transmitir información de un punto a otro dentro del programa, actúan como
recordatorios y mantienen características de variables o cálculos que
estuvieron presentes en un momento anterior de la ejecución de un
programa.
Ejemplo:
Algoritmo que lee una secuencia de calificaciones {con valores que van de
O a 10) que termina con el valor -1 y nos indica si hubo o no alguna
calificación con valor 1 o. Las variables utilizadas son:
Calif = Variable para leer cada calificación.
Sw = Switch para controlar la aparición de notas 1 O con valor O si no hay
notas 1 O, y 1 si hay notas 1 O.
pseudocódigo:
Programa Busca Notas 1 O Declaraciones: Sw es variable numérica entera positiva Calif es variable numérica Algoritmo:
Sw=O Leer Calif Mientras Calif <> -1 hacer
Si (Calif = 10) Entonces Sw = 1
Finsi LeerCalif
Finmientras Si (Sw = 1) Entonces
Escribir "Si hubo 1 O" Sino
Escribir "No hubo 1 O" Finsi
Finprograma 50
6.3.4 ESTRUCTURA DE DATOS. ARREGLOS
Un arreglo es una secuencia de posiciones de memoria a las que se puede
acceder directamente que almacenen valores del mismo tipo, los cuales se
identifican por su posición, que en pseudocódigo comienza en 1.
6.3.4.1 INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS
Además de con tipos de datos, las variables de un programa suelen
asociarse con estructuras de datos, que es la forma o disposición
conceptual de los datos. Por ejemplo, el texto se suele entender como una
larga cadena de caracteres, mientras que los registros de ventas podrían
verse como una tabla rectangular de valores numéricos, en la que cada fila
representa las ventas hechas por un determinado empleado y cada
columna representa las ventas realizadas en un día determinado.
Una estructura de datos común es la matriz (array), que es un bloque de
elementos del mismo tipo, como por ejemplo una lista unidimensional, una
tabla bi-dimensiorial con filas y columnas o tablas con un número de
dimensiones mayor. Para definir una de tales matrices en un programa,
muchos lenguajes de programación exigen que la sentencia de declaración
en la que se declara el nombre de la matriz también especifique la longitud
de cada dimensión de la misma. Por ejemplo, muestra la estructura
conceptual declarada por la sentencia
int Puntuaciones [2) [9);
en lenguaje C, que quiere decir "la variable Puntuaciones se utilizará en la
siguiente unidad de programa para hacer referencia a una matriz
bidimensional de enteros compuesta por dos filas y nueve columnas". la 1
misma sentencia en FORTRAN se escribiría como
INTEGER Puntuaciones (2,9)
Una vez declarada una matriz se puede hacer referencia a ella en
cualquier lugar del programa utilizando su nombre. O bien puede
identificarse un elemento individual de la matriz por medio de unos valores
enteros denominados índices que especifican la fila, la columna, etc.,
deseadas. Sin embargo, el rango de esos índices varía de un lenguaje a
otro. Por ejemplo, en C (y sus derivados C++, Java y C#) los índices
comienzan en O, lo que quiere decir que podría hacerse referencia a la
entrada situada en la segunda fila y la cuarta columna de la matriz llamada
Puntuaciones (tal como la hemos declarado anteriormente) mediante
Puntuaciones (1) (3), mientras que _la entrada situada en la primera fila y la
primera columna sería puntuaciones (O) (O). Por el contrario, en un _;;:(?
programa FORTRAN los índices cort:~ienzan en 1, por lo que para hacer
referencia a la entrada situada en la segunda fila y la cuarta columna
utilizaríamos Puntuaciones (2, 4)
A diferencia de una matriz en la que todos los elementos de datos son del
mismo tipo, un tipo agregado (también denominado estructura o
registro) es un bloque de datos en el que los diferentes elementos pueden
tener distintos tipos. Por ejemplo, un bloque de datos referido a un
empleado podría estar formado por una entrada Nombre de tipo character,
una entrada Edad de tipo entero y una entrada denominada Categoria de
tipo float. Dicho tipo agregado se declararía en e mediante la sentencia
struct {char Nombre[25) ;
int Edad;
float Categoría;}
Empleado;
que dice que la variable Empleado hace referencia a una estructura
(utilizaremos la palabra struct para referimos a ella) formada por tres
componentes denominados Nombre(una cadena de 25 caracteres), Edad y
Categoría. Una vez declarado uno de esos agregados, un programador
puede utilizar el nombre de la estructura (Empleado) para hacer referencia
a todo el agregado, o bien puede hacer referencia a campos individuales
52
dentro del agregado utilizando el nombre de la estructura, seguido de un
punto y del nombre del campo (por ejemplo, Empleado Edad).
Veremos cómo se implementan en la práctica dentro de una computadora
estructuras conceptuales tales como las matrices. En particular, veremos
que los datos contenidos en una matriz pueden estar dispersos en un área
amplia de la memoria principal o del almacenamiento masivo. Esta es la
razón por la que decimos que las estructuras de datos son la forma o
disposición conceptual de los datos. De hecho, la disposición real dentro
del sistema de almacenamiento de la computadora puede ser muy
diferente de esa disposición conceptual.
Sentencia de control
Una sentencia de control modifica la secuencia de ejecución del
programa.
De todas las estructuras de programación, las que pertenecen - este
grupo son las que han recibido probablemente la mayor atención y las que
han generado mayor controversia. El villano principal de la historia es la
sentencia de control más simple de todas, la sentencia gota (sentencia de
salto). Esta sentencia proporciona un medio de dirigir la secuencia de
ejecución a otra ubicación que haya sido etiquetada con este propósito
mediante un nombre o un número. Por tanto, no es nada más que una
aplicación directa de la instrucción JUMP de nivel máquina. El problema
con esta funcionalidad en un lengu~je de programación
de alto nivel es que permite a los programadores escribir estructuras
enormemente confusas como
gota 40
20 Aplicar procedimiento Escapar
gota 70
53
40 if (NiveiKriptonita < DosisLetal) then gota 60
gota 20
60 Aplicar procedimiento RescatarDamisela
70
Cuando una única sentencia como
if (NiveiKriptonita < DosisLetal)
then (aplicar procedimiento RescatarDamisela)
el se (aplicar procedimiento Escapar)
Hubiera valido perfectamente.
Para evitar este tipo de estructuras complejas, los lenguajes modernos se
diseñan con sentencias de control que permiten expresar un patrón de
bifurcación completo mediante una única estructura léxica. La elección de
qué sentencias de control incorporar en un lenguaje es una decisión de
diseño, El objetivo es proporcionar un lenguaje que no solo permita
expresar los algoritmos en una forma legible, sino que también ayude al
programador a conseguir esa legibilidad. Esto se hace restringiendo el uso
de aquellas características que han llevado históricamente al desarrollo de
programas confusos, al mismo tiempo que se anima a utilizar otras
características mejor diseñadas. El resultado es una práctica que se
conoce con el nombre de programación estructurada, que abarca una
metodología de diseño organizada en combinación con el uso apropiado
de las sentencias de control del lenguaje. La idea es generar un programa
que pueda entenderse fácilmente y que también pueda comprobarse)
fácilmente para ver si cumple con sus especificaciones.
Ya nos hemos encontrado con dos estructuras de bifurcación populares en
nuestro pseudocódigo del Capítulo 5, representadas por las sentencias if
then-else y while. Estas estructuras de bifurcación están presentes en casi
54
todos los lenguajes imperativos, funcionales u orientados a objetos. Para
ser más precisos, las sentencias de pseudocódigo
if (condición)
then (sentenciaA)
else (sentenciaB)
y
while (condición) do
(cuerpo del bucle)
Se escribirían como
if (condición) sentenciaA
el se sentenciaB;
y
while (condición)
{cuerpo del bucle}
en C, C++, C# y Java. Observe que el hecho de que estas sentencias sean
idénticas en los cuatro lenguajes es consecuencia de que e ++ , C# y Java
son extensiones orientadas a objetos del 'lenguaje imperativo C. Por el
contrario las sentencias correspondientes se escribirían como
IF condición THEN
sentencia/'';
ELSE
sentenciaB;
55
END IF
y
WHILE condición LOOP
cuerpo del bucle
END LOOP;
en el lenguaje Ada.
Otra estructura de bifurcación común suele representarse mediante una
sentencia switch o case. Proporciona un medio de seleccionar una
secuencia de sentencias entre varias opciones posibles, dependiendo del
valor asignado a una variable concreta. Por ejemplo, la sentencia
switch (variable) {
case 'A': sentenciaA; break;
case 'B': sentenciaB; break;
case 'C': sentenciaC; break;
default: sentenciaD}
en C, C++, e# y Java solicita que se ejecute la sentenciaA, la sentenciaB,
o la sentenciaC dependiendo de si el valor actual de la variable es A, B o
C, respectivamente, o la ejecución de la sentenciaD si el valor de la
variable es cualquier otro. La misma estructura en Ada se expresaría como
CASE variable 18
WHEN 'A'=> sentenciaA;
WHEN 'B'=> sentenciaB;
56
WHEN 'C'=> sentenciaC;
WHEN OTHERS=> sentenciaD;
END CASE
Otra estructura de control común adicional, a menudo denominada
estructura for es la mostrada en la Figura 6. ?junto con su representación
en C ++, C# y Java. Se trata de una estructura iterativa similar a la de la
sentencia while de nuestro pseudocódigo. La diferencia es que todas las
tareas de inicialización, actualización y comprobación del bucle se
incorporan en una única sentencia.
Esta sentencia es cómoda cuando el cuerpo del bucle tiene que ejecutarse
una vez por cada uno de los valores contenidos en un rango específico. En
particular, las sentencias de la Figura 6. 7 indican que el cuerpo del bucle
debe ejecutarse repetidamente, primero con un valor de Cuenta igual a 1,
luego con un valor de Cuenta igual a 2 y finalmente con un valor de Cuenta
igual a 3.
La lección que hay que extraer de los ejemplos que hemos citado es que
en toda la gama de lenguajes de programación imperativos y orientados a
objetos aparece una serie de estructuras de bifurcación comunes, con
ligeras variaciones.
57
REFERENCIAS BffiLIOGRAFICAS
1.- GLENN BROOKSHEAR, J: "Introducción a la Computación", Madrid, Edit
Pearson Educación, 11 Edición, 2012.
2.- GOMEZ VIDAL, P: "Fundamentos Físicos Y Tecnológicos De La
Informática",", Madrid, Edit Pearson Educación, Tercera Edición, 2007
3.- VILLARREAL DE LA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", Madrid, Edit McGraw-Hill lnteramericana
Segunda Edición, 2007.
4.- JOYANES AGUILAR, LUIS:" Fundamentos de Programacion" Madrid, Edit
McGraw-Hill lnteramericana Segunda Edición, 2000
58
6.4. CAPÍTULO IV
LENGUAJES DE PROGRAMACIÓN
6.4.1 LENGUAJES DE PROGRAMACION:
Comencemos nuestro estudio trazando el desarrollo histórico de los
lenguajes de programación, en las Primeras generaciones los programas
para las computadoras modernas constan de secuencias de instrucciones
codificadas corno dígitos numéricos. Tal sistema de codificación se conoce
como lenguaje máquina.
Lamentablemente, escribir programas en lenguaje máquina es una tarea
tediosa que a menudo conduce a errores que se deben localizar y corregir
(proceso que se conoce como depuración) antes de dar la tarea por
finalizada
En la década de 1940, los investigadores simplificaron el proceso de.
programación desarrollando sistemas de notación que permitían
representar las instrucciones en forma mnemónica, en lugar de en forma
numérica.
Una vez que se establecieron este tipo de sistemas mnemónicos, se
desarrollaron programas conocidos como ensambladores para convertir
las expresiones mnemónicas en instrucciones de lenguaje máquina. De
este modo, en lugar de verse obligados a desarrollar un programa
directamente en lenguaje máquina, se podría desarrollar un programa en
forma mnemónica y luego convertirlo a lenguaje máquina por medio de un
ensamblador.
Un sistema mnemónico para la representación de programas se denomina
lenguaje ensamblador. En la época en la que se desarrollaron los
lenguajes ensambladores representaron un gran paso en la búsqueda de
mejores técnicas de programación. De hecho, los lenguajes
ensambladores fueron tan revolucionarios que se los denominó lenguajes
59
de segunda generación, siendo la primera generación los propios
lenguajes máquina.
Aunque los lenguajes ensambladores tienen muchas ventajas con
respecto a sus correspondientes lenguajes máquina, siguen
proporcionando un entorno de programación con múltiples carencias.
Después de todo, las primitivas utilizadas en un lenguaje ensamblador son
esencialmente las mismas que podemos encontrar en el lenguaje máquina
correspondiente. La diferencia estriba simplemente en la sintaxis utilizada
para representarlas. Así, un programa escrito en un lenguaje ensamblador
es inherentemente dependiente de la máquina; es decir, las instrucciones
del programa se expresan en términos de las características de una
máquina concreta. Como consecuencia, un programa escrito en lenguaje
ensamblador no puede moverse fácilmente a otra computadora con una
arquitectura diferente, porque es necesario reescribirlo para adaptarse a la
configuración de registros y al conjunto de instrucciones de la nueva
computadora.
Otra desventaja del lenguaje ensamblador es que un programador, aunque 'fj ya no está obligado a codificar las instrucciones en forma numérica, sigue
viéndose forzado a pensar en términos de los pequeños pasos
incrementales del lenguaje máquina. La situación es análoga a diseñar una
vivienda en términos de tableros de madera, clavos, ladrillos, etc. Es cierto
que la construcción real de la vivienda requerirá en un último término una
descripción basada en esos componentes elementales, pero el proceso de
diseño es más fácil si pensamos en términos de unidades de mayor
tamaño como habitaciones, ventanas, puertas, etc.
En resumen, las primitivas elementales en las que un producto debe
basarse en último término no tienen por qué ser necesariamente las
primitivas que hay que emplear durante el diseño del producto. El proceso
de diseño se adapta mejor al uso de primitivas de alto nivel, cada una de
las cuales representa un concepto asociado con una de las características
principales del producto. Una vez completado el diseño, ésas primitivas
60
pueden traducirse a conceptos de menor nivel relacionados con los
detalles de implementación.
Siguiendo esta filosofía, los expertos en Ciencias de la computación
comenzaron a desarrollar lenguajes de programación que se adaptaran
mejor al desarrollo software que los lenguajes ensambladores de bajo
nivel. El resultado fue la aparición de una tercera generación de lenguajes
de programación que difería de las generaciones anteriores en el sentido
de que sus primitivas eran tanto de un mayor nivel (porque expresaban las
instrucciones en incrementos de mayor tamaño) como independientes de
la máquina (ya que no dependían de las características de ninguna
máquina concreta). Los más conocidos de entre los primeros ejemplos de
estos lenguajes son FORTRAN (FORmula TRANslatoy, Traductor de
fórmulas), que fue desarrollado para aplicaciones científicas y de
ingeniería y COBOL (COmmon Business-Oríented Language, Lenguaje
común orientado a la empresa), que fue desarrollado por la Armada de
Estados Unidos para aplicaciones empresariales.
En general, el enfoque adoptado con los lenguajes de programación de ~
tercera generación era identificar un conjunto de primitivas de alto nivel ( ~
(básicamente con el mismo espíritu con el que hemos desarrollado nuestro
pseudocódigo del Capítulo 5) con las que pudiera desarrollarse software.
Cada una de estas primitivas se desarrollaba de forma que pudiera
implementarse mediante una secuencia de las primitivas de bajo nivel
disponibles en los lenguajes
Una vez identificado este conjunto de primitivas de alto nivel, se escribía
un programa denominado traductor, que traducía a lenguaje máquina los
programas expresados en estas primitivas de alto nivel. Dicho traductor
era similar a los ensambladores de segunda generación, salvo porque a
menudo tenía que compilar secuencias cortas de varias instrucciones
máquina para simular la actividad solicitada por una única primitiva de alto
nivel. Por ello, estos programas de traducción se les denominó
compiladores.
61
Como alternativa a los traductores surgió otra manera de implementar los
lenguajes de tercera generación, los denominados intérpretes. Estos
programas eran similares a los traductores, salvo porque ejecutaban las
instrucciones a medida que se iba traduciendo, en lugar de grabar la
versión traducidá para uso futuro. Es decir, en lugar de generar una copia
en lenguaje máquina de un programa_ para ejecutarla posteriormente, el
intérprete ejecutaba realmente el programa a partir de su formulación de
alto nivel
Como curiosidad histórica dejemos constancia de que la tarea de
promover los lenguajes de programación de tercera generación no fue tan
fácil como cabría imaginar. La idea de escribir programas en un lenguaje
similar al lenguaje natural era tan revolucionaria que muchas personas que
ocupaban puestos de decisión se resistieron a esta idea al principio. Grace
Hopper, a quien se le atribuye el desarrollo del primer compilador, contaba
a menudo la historia de que en cierta ocasión en la que estaba mostrando
un traductor para un lenguaje de tercera generación en el que se utilizaban
términos en alemán en lugar de en inglés, con el objetivo de ilustrar que el
lenguaje de programación estaba construido por un pequeño conjunto de
primitivas que podían expresarse en distintos idiomas efectuando unas
simples modificaciones al traductor, se vio sorprendida al comprobar que ~ muchas personas de la audiencia se escandalizaron de que, en aquellos
años próximos a la Segunda Guerra Mundial, ella estuviera enseñando a
una computadora a "entender" el alemán. Hoy día sabemos que
comprender un lenguaje natural implica muchísimo más que responder a
unas pocas primitivas rigurosamente definidas. De hecho, los lenguajes
naturales (como el inglés, el alemán, el español o el latín) se distinguen de
los lenguajes formales (como los lenguajes de programación) en que
estos últimos están definidos de forma muy precisa mediante gramáticas
(Sección 6.4), mientras que los primeros han evolucionado a lo largo del
tiempo sin un análisis gramatical formal.
62
6.4.2 CONCEPTOS DE PROGRAMACIÓN TRADICIONALES
En esta sección vamos a abordar algunos de los conceptos que podemos
encontrar tanto en los lenguajes de programación imperativos como en los
orientados a objetos. Con este fin, veremos ejemplos de los lenguajes Ada,
C, C++, C#, FORTRAN y Java. Nuestro objetivo no es enredarnos en los
detalles de ningún lenguaje concreto, sino simplemente ilustrar cómo
aparecen características comunes en los lenguajes reales. Por tanto,
hemos seleccionado nuestro conjunto de lenguajes para que sea
representativo de los que hoy en día existen. Ces un lenguaje imperativo
de tercera generación. C++ es un lenguaje orientado a objetos que fue
desarrollado como extensión del lenguaje C. Java y C# son lenguajes
orientados a objetos derivados de C++. (Java fue desarrollado por Sun
Microsystems, que más tarde fue adquirida por Oracle, mientras que C# es
un producto de Microsoft.) FORTRAN y Ada originalmente fueron
desarrollados como lenguajes imperativos de tercera generación, aunque
sus versiones más recientes se han ampliado para abarcar buena parte del
paradigma de orientación a objetos. En el Apéndice O se proporcionan
algunos datos sobre cada uno de estos lenguajes.
Aunque estamos incluyendo lenguajes orientados a objetos como C++,
Java y C# entre nuestros lenguajes de ejemplo, abordaremos esta sección
como si estuviéramos escribiendo un programa en el paradigma
imperativo, porque muchas unidades dentro de un programa orientado a
objetos (como por ejemplo los procedimientos que describen cómo debe
reaccionar un objeto ante un estímulo externo) son, en esencia, programas
cortos de carácter imperativo.
Generalmente, un programa está formado por un conjunto de sentencias
que suelen caer dentro de tres categorías distintas: sentencias
declarativas, sentencias imperativas y comentarios. Las sentencias
declarativas describen la terminología personal que se empleará
posteriormente en el programa, como por ejemplo los nombres utilizados
63
)
para hacer referencia a los elementos de datos; las sentencias
imperativas describen los pasos que componen los algoritmos
subyacentes y los comentarios mejoran la legibilidad de un programa
explicando sus características ocultas en una forma más fácilmente
comprensible por parte de las personas. Normalmente, un programa
imperativo (o una unidad de programa imperativa dentro de un programa
orientado a objetos) puede concebirse como si tuviera la estructura
descrita
Comienza con un conjunto de sentencias declarativas que describen los
datos que el programa va a manipular. Este material preliminar va seguido
por una serie de sentencias imperativas que describen el algoritmo que
hay que ejecutar.
Muchos lenguajes permiten ahora que las sentencias declarativas e
imperativas se mezclen libremente, pero la distinción conceptual continúa
existiendo. Los comentarios están dispersos por el programa según sea
necesario clarificarlo.
Teniendo en mente esta estructura, vamos a enfocar nuestro estudio de
los conceptos de programación considerando las categorías de sentencias
en el orden en el que podemos encontrarlas en un programa, comenzando
por los conceptos asociados con las sentencias de declaración.
6.4.3 VARIABLES Y TIPOS DE DATOS.
Los lenguajes de programación de alto nivel permiten hacer referencia a
las posiciones de la memoria principal mediante nombres descriptivos en
Jugar de mediante direcciones numéricas.
Cada uno de esos nombres se denomina variable, en reconocimiento del
hecho de que al cambiar el valor almacenado en dicha posición, varía
también el valor asociado con el nombre a medida que el programa se
ejecuta. Nuestros lenguajes de ejemplo exigen que las variables se
64
identifiquen mediante una sentencia declarativa antes de ser utilizadas en
ningún otro lugar del programa.
Estas sentencias declarativas también requieren que el programador
describa la clase de información que estará almacenada en la posición de
memoria asociada con la variable.
Esas clases se conocen con el nombre de tipo de datos y definen tanto la
manera en que se codifica en memoria el dato como las operaciones que
se pueden realizar con esos datos. Por ejemplo, el tipo integer hace
referencia a datos numéricos compuestos por números enteros, que
probablemente se almacenan utilizando notación en complemento a dos.
Entre las operaciones que se pueden realizar sobre datos de tipo entero se
incluyen las operaciones aritméticas tradicionales y las comparaciones de
tamaño relativo, como por ejemplo determinar si uno de los valores es
mayor que otro. El tipo float (en ocasiones denominado real) hace
referencia a datos numéricos que pueden contener valores no enteros,
probablemente almacenados en notación de punto flotante. Las
operaciones que pueden efectuarse sobre los datos de tipo float son
similares a las realizadas sobre datos de tipo integer. No obstante,
recuerde que la actividad requerida para sumar dos elementos de tipo float
es diferente de la necesaria para sumar dos elementos de tipo integer.
Suponga entonces que deseamos utilizar la variable Peso Limite en un
programa para hacer referencia a un área de la memoria principal que
contiene un valor numérico codificado en notación de complemento a dos.
En los lenguajes C, C++, Java y C# declararíamos nuestra intención
incluyendo cerca del inicio del programa la sentencia
int PesoLimite;
Esta instrucción significa que "el nombre PesoLimi te se utilizará
posteriormente en el programa para hacer referencia a un área de
memoria que contiene un valor almacenado en notación de complemento a
dos". Normalmente, pueden declararse en la misma sentencia de
65
declaración varias variables del mismo tipo. Por ejemplo, la sentencia int
Altura, Ancho; declararía que tanto Al tura como Ancho son variables de
tipo entero (int).
Además, la mayoría de los lenguajes permiten asignar un valor inicial a la
variable en el momento de declararla. Así int Peso limite = 1 00; no solo
declara Peso Limite como una variable de tipo integer sino que también la
asigna el valor inicial100.
Otros tipos de datos comunes son los datos de caracteres y booleanos. El
tipo character hace referencia a datos compuestos por un símbolo, que
probablemente se almacena utilizando codificación ASCIIo Unicode. Entre
las operaciones realizadas con dichos datos se incluyen las
comparaciones, como por ejemplo determinar si un símbolo aparece antes
que otro en orden alfabético, comprobar si una cadena de símbolos
aparece dentro de otra y concatenar una cadena de símbolos al final de
otra con el objetivo de formar una cadena más larga. La sentencia
char Letra, Dígito;
podría emplearse en los lenguajes C, C++, C# y Java para declarar que las
variables Letra y Digi to son de tipo character.
El tipo Boolean hace referencia a elementos de datos que solo pueden
tomar los valores lógicos verdadero o falso. Entre las operaciones sobre
datos de tipo Boolean que se pueden realizar se incluyen las consultas
para ver si el valor actual es verdadero o falso. Por ejemplo, si
declaráramos la variable Exceso-Limite como de tipo Boolean, entonces
una sentencia de la forma
if (Excesolimite) then ( ... ) else ( ... )
Sería razonable.
Los tipos de datos que se incluyen como primitivas en un lenguaje de
programación, como por ejemplo int para los enteros y char para los
66
caracteres se denominan tipos de datos primitivos. Como hemos visto,
los tipos integer, float, character y Boolean son tipos primitivos comunes.
Otros tipos de datos que todavía no han llegado a ser tipos primitivos
ampliamente aceptados son por ejemplo las imágenes, el audio, el vídeo y
el hipertexto. Sin embargo, tipos tales como GIF, JPEG YHTML podrían
pronto llegar a ser tan comunes como los enteros o los valores en punto
flotante. Posteriormente (Secciones 6.5 y 8.4) veremos cómo el paradigma
de orientación a objetos permite a un programador ampliar el repertorio de
tipos de datos disponibles, más allá de los tipos primitivos proporcionados
por el lenguaje. De hecho, esta capacidad es una de las ventajas más
celebradas del paradigma de orientación de objetos.
En resumen, el siguiente fragmento de código, expresado en el lenguaje C
y en sus derivados C++, C# y Java, declara las variables Longitud y Ancho
como de tipo float, las variables Precio, Impuesto y Total como de tipo
entero y la variable Símbolo como de tipo carácter.
float Longitud, Ancho;
int Precio, Impuesto, Total;
char Símbolo;
6.4.4 TIPOS DE LENGUAJE:
Los lenguajes de alto nivel se pueden clasificar de forma general en
lenguajes de propósito general y lenguajes de propósito especial. Los
lenguajes de propósito general se emplean igualmente en negocios, que
aplicaciones científicas o en resolución de problemas de ingeniería, como en
tareas de desarrollo de software de sistemas. Entre los lenguajes de
propósito general cabe citar al PASCAL, C y ADA
Las categorías más comunes de lenguajes de propósito especial son los
lenguajes comerciales, científicos y educativos. En el campo comercial
67
citamos al COBOL, en el campo científico, FORTRAN, y en el campo
educativo, aunque ya en desuso, BASIC.
Otra forma de clasificar los lenguajes es en lenguajes de procedimiento y
lenguajes declarativos:
.. Los lenguajes de procedimiento establecen como debe de ejecutarse una
tarea, dividiéndola en áreas de procedimiento (procedures en inglés) que
especifican como realizar cada una de las tareas. Todos los lenguajes de
alto nivel desarrollados en las primeras épocas eran lenguajes de
procedimiento.
.. Los lenguajes declarativos describen estructuras de datos y las
relaciones entre ellas, siendo significativo para ejecutar una determinada
tarea, a la vez indican cual es el objetivo de esa tarea. El proceso por el
que se ejecuta la tarea no se establece de forma explícita en el programa.
Este proceso se determina por el sistema de traducción del lenguaje.
Prolog es un ejemplo de lenguaje de programación declarativo.
68
REFERENCIAS BffiLIOGRAFICAS
1.- GLENN BROOKSHEAR, J: "Introducción a la Computación", Madrid, Edit
Pearson Educación, 11 Edición, 2012.
2.- GOMEZ VIDAL, P: "Fundamentos Físicos Y Tecnológicos De La
Informática",", Madrid, Edit Pearson Educación, Tercera Edición, 2007
3.- VILLARREAL DE LA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", Madrid, Edit McGraw-Hilllnteramericana
Segunda Edición, 2007
4.- JOYANES AGUILAR, LUIS:" Fundamentos de Programacion" Madrid, Edit
McGraw-Hilllnteramericana Segunda Edición, 2000
69
6.5. CAPITULO V
ARCHIVO Y BASE DE DATOS
6.5.1 FUNDAMENTOS DE LAS BASES DE DATOS
El término base de datos hace referencia a un conjunto de datos
rnultidimensional en el sentido de que los enlaces internos existentes entre
los distintos elementos hacen que se pueda acceder a la información con
diversas perspectivas.
Esto difiere de un sistema de archivos tradicional, que en ocasiones se
denomina archivo plano, que no es más que un sistema de
almacenamiento unidimensional, lo que quiere decir que presenta la
información que contiene desde un único punto de vista. Mientras que un
archivo plano que contenga información acerca de compositores de
música y sus obras podría proporcionar una lista de obras musicales
ordenadas por compositor, una base de datos podría presentar todas las
obras de un mismo compositor, todos los compositores que hayan escrito
algún tipo concreto de música y quizá también los compositores que hayan
escrito variaciones de las obras de algún otro compositor.
Tendencia de los Sistemas de Base de Datos
Históricamente, a medida que las computadoras fueron encontrando usos
cada vez más amplios en el campo de la gestión de información, cada
aplicación tendía a ser implementada como un sistema separado con su
propio conjunto de datos. Las nóminas se procesaban utilizando el archivo
de nóminas, el departamento de personal mantenía sus propios registros
de empleados y el inventario se gestionaba mediante un archivo de
inventario. Esto significaba que buena parte de la información requerida
por una organización estaba duplicada por toda la empresa y que muchos
70
elementos diferentes, pero relacionados, se almacenaban en sistemas
separados. En este tipo de entorno, los sistemas de bases de datos
surgieron como medio de integrar la información almacenada y mantenida
por una organización concreta. Con este tipo de sistema, los mismos datos
de ventas podían utilizarse para generar órdenes de compra de materias
primas, generar informes sobre las tendencias del mercado.
Estos conjuntos integrados de información proporcionaban un valioso
recurso con el que tomar decisiones de gestión, suponiendo que pudiera
accederse a la información de una manera significativa. A su vez, la
investigación en el campo de las bases de datos se centró en el desarrollo
de técnicas que permitieran aportar la información contenida en una base
de datos al proceso de toma de decisiones. Se han hecho muchos
progresos a este respecto. Hoy día, la tecnología de bases de datos,
combinada con las técnicas de minería de datos constituye una importante
herramienta de gestión, permitiendo a la dirección de una organización
extraer información relevante a partir de enormes cantidades de datos que
cubren todos los aspectos relativos a la organización y su entorno.
Además, los sistemas de bases de datos se han convertido en la
tecnología subyacente que da soporte a muchos de los sitios más
populares de la World Wide Web. El objetivo fundamental de sitios como
Google, eBay y Amazon es proporcionar una interfaz entre los clientes y
las bases de datos. Para responder a la solicitud de un cliente, el servidor
interroga a una base de datos, organiza los resultados en forma de página
web y envía dicha página al cliente. Dichas interfaces web han
popularizado un nuevo papel para la tecnología de bases de datos, en el
que una base de datos ya no es un medio de almacenar los registros de
una empresa, sino que se convierte en el propio producto de la empresa.
De hecho, al combinar en una de las principales fuentes de información
mundiales.
71
Sistemas de gestión de bases de datos
Una aplicación de bases de datos típica consta de varias capas de
software, que agruparemos en dos capas principales: una capa de
aplicación y una capa de gestión de base de datos. El software de
aplicación gestiona la comunicación con el usuario de la base de datos y
puede ser bastante complejo, como ilustran las aplicaciones en las que los
usuarios acceden a una base de datos por medio de un sitio web. En tal
caso, la capa completa de aplicación está compuesta por clientes
dispersos por Internet y por un servidor que utiliza la base de datos con el
fin de satisfacer las solicitudes de los clientes.
Observe que el software de aplicación no manipula directamente la base
de datos. La manipulación real de la misma se lleva a cabo mediante el
sistema de gestión de base de datos (DBMS, Database Management
System). Una vez que el software de aplicación ha determinado qué acción
está solicitando el usuario, utiliza el DBMS como herramienta abstracta
para obtener el resultado.
Si la solicitud consiste en añadir o borrar datos, será el DBMS el que
modifique en la práctica la base de datos. Si la solicitud consiste en extraer
información, será el DBMS el que lleve a cabo las búsquedas requeridas.
Esta dicotomía entre el software de aplicación y el DBMS tiene varias
ventajas. Una de ellas es que permite la construcción y uso de
herramientas abstractas que, como ya hemos visto, constituyen uno de los
principales conceptos simplificadores en el campo del diseño de software.
Si se aíslan dentro del DBMS los detalles relativos a cómo está realmente
almacenada la base de datos, el diseño del software de aplicación puede
simplificarse enormemente. Por ejemplo, con un DBMS bien diseñado, el
software de aplicación no tiene que preocuparse de si la base de datos
está almacenada en una única máquina o está dispersa entre muchas
máquinas conectadas en red, como base de datos distribuida. En lugar
de ello, será el DBMS el que trate con estos problemas, permitiendo que el
72
software de aplicación acceda a la base de datos sin preocuparse por
dónde están realmente almacenados los datos.
Una segunda ventaja de separar el software de aplicación del DBMS es
que este tipo de organización proporciona un medio de controlar el acceso
a la base de datos. Obligando a que sea el DBMS el que realice todos los
accesos a la base de datos, puede imponer las restricciones definidas por
los distintos subesquemas.
En particular, el DBMS puede utilizar el esquema compLeto de la base de
datos para sus necesidades internas, pero exigir que el software de
aplicación empleado por cada usuario permanezca dentro de los límites
descritos por el subesquema correspondiente a ese usuario.
Otra razón más para separar la interfaz de usuario y las tareas reales de
manipulación de los datos en dos capas diferentes de software es la de
conseguir la denominada independencia de los datos, la capacidad de
modificar la organización de la propia base de datos sin tener que
modificar el software de aplicación. Por ejemplo, el departamento de
personal puede tener que agregar un campo al registro de cada empleado
para indicar si ese empleado ha decidido participar en el nuevo programa
de cobertura sanitaria de la empresa. Si el software de aplicación tratara
directamente con la base de datos, ese cambio en el formato de los datos
podría requerir que se hicieran modificaciones en todos los programas de
aplicación que traten con la base de datos. Como resultado, la
modificación impuesta por el departamento de personal podría provocar
cambios tanto en el programa de nóminas como por ejemplo en el
programa de impresión de etiquetas de correo para el boletín mensual de
la empresa.
Esa separación entre el software de aplicación y un DBMS elimina la
necesidad de modificar los programas. Para implementar un cambio en la
base de datos requerido por un único usuario, lo único que hace falta es
modificar el esquema global y los subesquemas de aquellos usuarios que
73
se vean afectados por el cambio. Los subesquemas de los restantes
usuarios seguirán siendo iguales, asi que su software de aplicación, que
está basado en esos subesquemas no modificados, no tendrá que ser
alterado.
Modelos de bases de datos
Ya hemos visto repetidamente cómo se puede utilizar la abstracción para
ocultar la complejidad interna de un componente. Los sistemas de gestión
de bases de datos proporcionan un ejemplo más de este concepto. Estos
sistemas ocultan la complejidad de la estructura interna de una base de
datos, permitiendo al usuario de la misma imaginarse que la información
almacenada en la base de datos está organizada con un formato más útil.
En particular, un DBMS contiene rutinas que traducen los comandos
expresados en términos de una vista conceptual de la base de datos a las
acciones requeridas por el sistema real de almacenamiento de los datos.
Esta vista conceptual de la base de datos se conoce como modelo de
base de datos.
En las siguientes secciones consideraremos tanto el modelo de base datos
relacional como el modelo de base de datos orientado a objetos. En el
caso del modelo de base de datos relacional, la vista conceptual de la
base de datos es la de una colección de tablas compuestas de filas y
columnas. Por ejemplo, la información acerca de los empleados de una
empresa puede visualizarse como una tabla que contiene una fila por
empleado y una serie de columnas etiquetadas como nombre, dirección,
número de identificación del empleado, etc. A su vez, el DBMS dispondrá
de rutinas que permitirán al software de aplicación
seleccionar ciertas entradas de una fila. concreta de la tabla o quizá
informar del rango de valores existente en la columna de salario (aún
cuando la información no esté en realidad almacenada en filas y
columnas).
74
Estas rutinas forman las herramientas abstractas utilizadas por el software
de aplicación a la hora de acceder a la base de datos. Para ser más
precisos, el software de aplicación suele escribirse en uno de los lenguajes
de programación de propósito general existentes, como los presentados en
el Capítulo 6. Estos lenguajes proporcionan los ingredientes básicos para
las expresiones algorítmicas, pero carecen de instrucciones para
manipular una base de datos. Sin embargo, un programa escrito en uno de
esos lenguajes puede utilizar las rutinas proporcionadas por el DBMS en
forma de sub rutinas pre-escritas, 1 o que tiene el efecto en la práctica de
ampliar las capacidades del lenguaje de forma tal que permite dar soporte
a la imagen conceptual del modelo de base de datos.
La búsqueda de mejores modelos de bases de datos continúa siendo un
campo de investigación activo. El objetivo es encontrar modelos que
permitan conceptual izar fácilmente sistemas de datos . complejos, que
conduzcan a formas concisas de expresar las solicitudes de información y
que produzcan sistemas de gestión de bases de datos eficientes.
6.5.2 EL MODELO RELACIONAL
En esta sección vamos a examinar más de cerca del modelo de base de
datos relacional. Este modelo representa los datos como si estuvieran
almacenados en tablas rectangulares, denominadas relaciones, que son
similares al formato en el que se visualiza la información en los programas
de hoja de cálculo.
Una fila de una relación se denomina tupla. Las columnas de una relación
se denominan atributos porque cada entrada de una columna describe
alguna característica, o atributo, de la entidad representada por la
correspondiente tupla.
75
Problemas del diseño relacional
Un paso fundamental a la hora de diseñar una base de datos relacional es
diseñar las relaciones que forman la base de datos. Aunque esto puede
parecer una tarea simple, hay muchos aspectos sutiles esperando a
atrapar a los diseñadores incautos.
Suponga que además de la información contenida en la relación de la
queremos incluir información acerca de los puestos de trabajo que ocupan
los empleados. Podríamos desear incluir un historial laboral asociado con
cada empleado que constara de atributos tales como el puesto ocupado
(secretaria, director de oficina, supervisor de planta), un código de
identificación del puesto (que diferencia unos puestos de otros), el código
de la categoría asociado a cada puesto, el departamento al que pertenece
ese puesto y el periodo durante el que el empleado ha ocupado el puesto
en términos de una fecha de inicio y una fecha de terminación.
(Utilizaremos un asterisco como fecha de terminación si se trata del puesto
actual del empleado.)
Sin embargo, un examen más atento del resultado permite detectar varios \¿i problemas. El primero es una falta de eficiencia debido a la redundancia. j ~
La relación ya no contiene solo una tupla por cada empleado, sino una
tupla por cada asignación de un puesto de trabajo o de un empleado. Si un
empleado ha ido progresando en la empresa a través de una secuencia de
varios puestos de trabajo, varias tuplas de la nueva relación deberán
contener la misma información acerca del empleado (nombre, dirección,
número de identificación y número de la Seguridad Social). Por ejemplo, la
información personal acerca de los empleados Barrio y Salas está repetida
porque han ocupado más de un puesto. Además, cuando un puesto
concreto ha sido ocupado por numerosos empleados, es preciso repetir en
cada tupla que represente una asignación de ese puesto de trabajo tanto
la información correspondiente al departamento asociado con ese puesto
como el código de categoría apropiado. Por ejemplo, la descripción del
76
puesto de director de planta está duplicada porque hay más de un
empleado que ha ocupado este puesto.
Otro problema quizá más serio de esta relación ampliada es el que surge
cuando consideramos el problema de borrar información de la base de
datos.
Por ejemplo, suponga que Juan Barrio es el único empleado que tiene el
puesto identificado como 07. Si abandonara la empresa y lo borráramos
de la base de datos representada en la Figura 9.4, perderíamos la
información relativa al puesto de trabajo 07. Después de todo, la única
tupla que contiene el hecho de que el puesto 07 requiere una categoría K2
es la tupla relacionada con Juan Barrio.
Podría argumentarse que la capacidad de borrar solamente una parte de
una tupla resolvería el problema, pero esto introduciría otras
complicaciones. Por ejemplo, ¿deberíamos también conservar la
información relativa al puesto de trabajo FS en una tupla parcial, o esta ·
información ya se encuentra en algún otro lugar dentro de la relación?
Además, la tentación de usar tuplas parciales es un sólido indicio de que
puede mejorarse el diseño de la base de datos.
La causa de todos estos problemas es que hemos combinado más de un
concepto en una misma relación. Tal como está propuesta, la relación
contiene información que trata directamente con los empleados (nombre,
número de identificación, dirección, número de la Seguridad Social),
información acerca de los puestos disponibles en la empresa
(identificación del puesto, título del puesto, departamento y código de
categoría) e información relativa a la relación entre los empleados y los
puestos de trabajo (fecha de inicio y fecha de terminación). Teniendo en
cuenta ·esta observación podemos resolver nuestros problemas.
rediseñando el sistema con tres relaciones: una par~ cada una de las
categorías anteriores.
77
Una base de datos compuesta por estas tres relaciones contiene 1 a
información pertinente acerca de los empleados en la relación
EMPLEADO, la información sobre los puestos disponibles en la relación
PUESTO y sobre el historial laboral en la relación ASIGNACION. La
información adicional está disponible implícitamente combinando la
información procedente de distintas relaciones.
Por ejemplo, si conocemos el número de identificación de un empleado,
podemos conocer los departamentos en que ese empleado ha trabajado,
localizando primero todos los puestos que el empleado ha ocupado
mediante la relación ASIGNACION y localizando después los
departamentos asociados con esos puestos, por medio de la relación
PUESTO (Figura 9.6). Mediante procesos como estos, cualquier
información que pudiera obtenerse a partir de esa única relación de gran
tamaño podrá ahora obtenerse a partir de las tres relaciones ·más
pequeñas y sin los problemas citados.
Lamentablemente, dividir la información en varias relaciones no siempre es
tan sencillo como en el ejemplo anterior. Por ejemplo, compare la relación
original de la Figura 9. 7 con los atributos ldEmpl, TitPuesto y Dept, con la
descomposición propuesta en dos relaciones. A primera vista, el sistema
de dos relaciones parece contener la misma información que el sistema de \
una sola relación, pero de hecho no es así. Considere por ejemplo el
problema de localizar el departamento en el que trabaja un cierto
empleado. Esto puede hacerse fácilmente en el sistema de una sola
relación, consultando la tupla que contiene el número de identificación del
empleado deseado y extrayendo el departamento correspondiente. Sin
embargo, en el sistema de dos relaciones, la información deseada no está
disponible necesariamente. Podemos encontrar el título del puesto del
empleado deseado y un departamento que tenga dicho puesto, pero esto
no implica necesariamente que el empleado buscado trabaje en ese
departamento concreto, porque podría haber varios departamentos con
puestos que tuvieran el mismo título.
78
Vemos, por tanto, que en ocasiones dividir una relación en relaciones más
pequeñas provoca la pérdida de información, mientras que en otras
ocasiones no es así (este último caso se denomina descomposición sin
pérdidas). Estas características relacionales son muy importantes a la
hora de acometer un diseño. El objetivo es identificar las características
relacionales que pueden conducir a problemas en el diseño de bases de
datos y encontrar formas de reorganizar dichas relaciones para eliminar
esas características problemáticas.
6.5.3 BASES DE DATOS ORIENTADAS A OBJETOS
Otro modelo de base de datos es el basado en el paradigma de
orientación a objetos. Esta solución conduce a obtener una base de datos
orientada a objetos, compuesta por objetos que están enlazados entre sí
con el fin de reflejar sus relaciones. Por ejemplo, una implementación
orientada a objetos de la base de datos de empleados de la sección
anterior podría estar compuesta por tres clases (tipos de objetos):
EMPLEADO, PUESTO YASIGNACION. Un objeto de la clase 1
EMPLEADO contendría entradas tales como ldEmpl, Nombre, Dirección y ~
NSS; un objeto de la clase PUESTO contendría entradas tales como
ldPuesto,Tit.Puesto, CodCat y Dept; y cada objeto de la clase
ASIGNACION podría contener entradas como Fecha Inicio y FechaFin.
En la Figura 9.13 se muestra una representación conceptual de ese tipo de
base datos, en la que los enlaces entre los distintos objetos están
representados mediante líneas que conectan los objetos relacionados. Si
nos centramos en un objeto de tipo EMPLEADO, lo vemos enlazado a un
conjunto de objetos de tipo ASIGNACION, que representa las diversas
asignaciones de puesto de trabajo que ese empleado en concreto ha
tenido. A su vez, cada uno de estos objetos de tipo ASIGNACION está
enlazado a un objeto de tipo PUESTO, que representa el puesto asociado
con dicha asignación. Así, todas las asignaciones de un empleado pueden
encontrarse siguiendo los enlaces que van desde el objeto que representa
a ese empleado. De forma similar, pueden encontrarse todos los ·
79
empleados que han ocupado un puesto concreto siguiendo los enlaces
correspondientes al objeto que representa ese puesto de trabajo.
Los enlaces entre objetos en una base de datos orientada a objetos suelen
ser mantenidos por el DEMS, por lo que el programador no tiene que
preocuparse por los detalles de cómo se implementar estos enlaces a la
hora de escribir el software de aplicación. En lugar de ello, cuando se
añade un nuevo objeto a la base de datos, el software de aplicación
simplemente especifica los otros objetos a los que debe estar enlazado. El
DEMS crea entonces cualquier sistema de enlaces que pueda ser
necesario con el fin de registrar esas asociaciones. En particular, un DEMS
puede enlazar los objetos que representan las asignaciones de un
determinado empleado de forma similar a una lista enlazada.
Otra tarea de un DEMS orientado a objetos es proporcionar
almacenamiento permanente para los objetos que se le confían, un
requisito que puede parecer obvio, pero que es inherentemente distinto de
la forma en que normalmente se tratan los objetos. Por lo general, cuando
se ejecuta un programa orientado a objetos, los objetos creados durante la
ejecución del programa se descartan una vez que este termina. En este
sentido, los objetos se consideran transitorios, pero los objetos creados y
añadidos a una base de datos deben guardarse después de que haya )...
terminado el programa que los creó. Tales objetos se denominan
persistentes. Por ello, la creación de objetos persistentes se aparta
significativamente de la norma.
Los defensores de las bases de datos orientadas a objetos ofrecen
numerosos argumentos para demostrar por qué la solución orientada a
objetos es mejor en el diseño de bases de datos que el enfoque
tradicional. Uno de esos argumentos es que la solución orientada a objetos
permite que todo el sistema software (software de aplicación, DBMS y la
propia base de datos) se diseñe bajo el mismo paradigma. Esto contrasta
con la práctica tradicional de utilizar un lenguaje de programación
imperativo para desarrollar el software de aplicación con el fin de interrogar
80
a una base de datos relacional. Inherente a dicha tarea es el conflicto entre
los paradigmas imperativo y relacional. Esta distinción es quizá demasiado
sutil para el nivel con el que estamos abordando nuestro estudio, pero esa
diferencia ha provocado muchos errores de software a lo largo de los años.
Incluso a nuestro nivel, no es difícil apreciar que una base de datos
orientada a objetos combinada con un programa de aplicación orientado a
objetos, permite obtener una imagen homogénea de objetos que se
comunican unos con otros a través del sistema. Por el contrario, una base
de datos relacional combinada con un programa de aplicación imperativo
sugiere la imagen de dos organizaciones inherentemente distintas tratando
de encontrar una interfaz común.
Para entender otra ventaja que las bases de datos orientadas a objetos
tienen con respecto a sus equivalentes relacionales, considere el problema
de almacenar los nombres de los empleados en una base de datos
relacional. Si almacenamos un nombre completo en forma de un único
atributo en una relación, entonces las consultas relativas únicamente a los
apellidos serán muy complicadas.
Sin embargo, si almacenamos el nombre en forma de atributos
individuales, tal como nombre de pila, primer apellido y segundo apellido,
entonces el número de atributos se hace problemático, porque no todos los
nombres se adaptan a una estructura específica, aún cuando la población
esté restringida a una única cultura. En una base de datos orientada a
objetos, estos problemas pueden ocultarse dentro del objeto que almacene
el nombre del empleado. El nombre del empleado podrá guardarse como
un objeto inteligente que será capaz de informar de cuál es el nombre del
empleado relacionado en diversos formatos.
De ese modo, desde fuera de esos objetos, sería igual de fácil tratar solo
con los apellidos que con los nombres completos, los nombres de pila o los
alias. Los detalles relacionados con cada una de las distintas perspectivas
estarían encapsulados dentro de los objetos.
81
Esta capacidad de encapsular los aspectos técnicos de Jos diferentes
formatos de datos resulta ventajosa también en otros casos. En una base
de datos relacional, los atributos de una relación forman parte del diseño
global de la base de datos, por lo que los tipos asociados con esos
atributos influyen sobre toda la base de datos. (Las variables para el
almacenamiento temporal deben declararse con el tipo apropiado y es
preciso designar procedimientos para manipular datos de Jos diversos
tipos.) Así, ampliar una base de datos re1acional para incluir atributos de
nuevos tipos (audio y video) puede ser problemático. En particular, puede
que sea necesario ampliar diversos procedimientos dispersos por todo el
diseño de la base de datos, con el fin de incorporar estos nuevos tipos de
datos. Sin embargo, en un diseño orientado a objetos, los mismos
procedimientos utilizados para extraer un objeto que represente el nombre
de un empleado pueden utilizarse para extraer un objeto que represente
una película, porque las distinciones de tipo pueden ocultarse dentro de los
objetos implicados. Por tanto, la solución orientada a objetos es más
compatible con la construcción de bases de datos multimedia, una
característica que ya está demostrando sus grandes ventajas.
Otra ventaja más que el paradigma orientado a objetos ofrece para el
diseño de bases de datos es el potencial para almacenar objetos
inteligentes, en lugar de simplemente datos. Es decir, un objeto puede
contener métodos que describan cómo debería responder el objeto a
mensajes relativos a su contenido y a sus relaciones. Por ejemplo, cada
objeto de la clase EMPLEADO de la Figura 9.13 podría contener métodos
para leer y actualizar la información contenida en el objeto, así como un
método para leer el historial laboral del empleado y quizá un método para
modificar la asignación de puesto de trabajo de ese empleado. De la
misma forma, cada objeto de la clase PUESTO podría tener un método
para leer los datos específicos del puesto de trabajo y quizá otro método
para informar de qué empleados han ocupado ese puesto de trabajo en •
concreto. ASÍ, para extraer el historial laboral de un empleado, no
necesitaríamos construir un procedimiento elaborado. En lugar de ello,
82
podríamos simplemente pedir al objeto de empleado apropiado que
informara acerca de su historial laboral. Esta capacidad de construir bases
de datos cuyos componentes respondan de forma inteligente a las
consultas ofrece múltiples y excitantes posibilidades que van mucho más
allá de las disponibles con las bases de datos relacionales tradicionales.
83
REFERENCIAS BIBLIOGRAFICAS
1.- GLENN BROOKSHEAR, J: "Introducción a la Computación", Madrid, Edit
Pearson Educación, 11 Edición, 2012.
2.- GOMEZ VIDAL, P: "Fundamentos Físicos Y Tecnológicos De La
Informática",", Madrid, Edit Pearson Educación, Tercera Edición, 2007
3.- VILLARREAL DE LA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", Madrid, Edit McGraw-Hilllnteramericana
Segunda Edición, 2007
84
VIl. DISCUSIÓN
Para la elaboración del texto: "informática Industrial" ha sido
necesario realizar un análisis documental y bibliográfico que permita
establecer analogías con nuestra realidad a fin de determinar su
aplicabilidad y comprensión de la misma por ejemplo GOMEZ VIDAL, P :
"Fundamentos Físicos Y Tecnológicos De La Informática", del año 2007,
que presenta el papel del Ingeniero Industrial. VILLARREAL DE LA
GARZA, SONIA: "Introducción a la Computación Teoría y Manejo de
Paquetes", del año 2007, que tiene contenidos aplicados a Informática
Industrial.
El texto está dirigido a estudiantes y docentes de nivel superior y
universitario, está orientado a promover una enseñanza equilibrada
teórico-práctico, entendiéndose que un tema de informática industrial se
asimila más realizando prácticas de laboratorio con ayuda de una
computadora.
En conclusión se ha cumplido con el problema de investigación, con los
objetivos a desarrollar el texto: informática industrial tanto teórico como
práctico.
,85
VIII. BIBLIOGRAFÍA
• R. C. T. Lee, S. S. Tseng, R. C. Chang, Y. T. Tsai. IN'T'RODUCCIÓN Al,
DISEÑO Y ANÁLISIS DE ALGORITMOS: Un Enfoque Estratégico, Me
Graw Hill, España. 2007
• Osvaldo Cairó. Metodología de la Programación-Algoritmos, diagramas de
flujo y programas. Grupo Editor S.A. Alfaomega, México 2005.
• Luis Jayanes, Fundamentos de Programación, Algoritmos y estructura de
datos, Me Graw Hill, 2003, España
• Peter Norton, Introducción a la computación, 3era edición, Me Graw Hill 1
lnteramericana Editores, 2000. México
• Pascual, Francisco. OFFICE PROFESIONAL. Grupo Editor S.A.
Alfaomega, México 1997.
• GLENN BROOKSHEAR, J: "Introducción a la Computación", Madrid, Edit
Pearson Educación , 11 Edición, 2012.
• GOMEZ VIDAL, P : "Fundamentos Físicos Y Tecnológicos De La
Informática", ", Madrid, Edit Pearson Educación, Tercera Edición, 2007
• VILLARREAL DE LA GARZA, SONIA: "Introducción a la Computación
Teoría y Manejo de Paquetes", Madrid, Edit McGraw-Hill lnteramericana
Segunda Edición, 2007
86
IX. APÉNDICE
Silabo de la Asignatura de Informática Industrial 1, de acuerdo al Plan de
Estudios de la Escuela Profesional de Ingeniería Industrial de la
Universidad Nacional del Callao.
87
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
SVLLABUS SEMESTRE ACADÉMICO 2012-A
l. INFORMACIÓN GENERAL
L 1 Asignatura
1.2 Código
1.3 Ciclo
1.4 Horas 1 semana
1.5Prc-requisito
1.6 W de créditos
1.7Docente
2. SUMILLA
: INFORMÁTICA INDUSTRIAL I
: 12- IG- 103
:11
:4 HORAS
: FM-101, FM-102
:03
: Ing. Osmart Raúl Morales Cholco
Comprende el estudio de aspectos principales de la informática, tratando tanto el
hardware como el software. Se presenta una introducción a las técnicas y
mecanismos de representación, transferencia, tratamiento y control de la
información en el computador así como el software aplicado a la ingeniería
industrial.
Contenido:
Estructura de datos y algoritmos. Representación de la información en los
computadores (Diseño lógico). Esquema de funcionamiento de un computador.
Lenguajes de máquina y ensamblador. Unidades funcionales de un computador.
Diseño de un computador básico. Dispositivos de entrada y salida y unidades de
memoria masiva.
Sistemas operativos. Conceptos básicos sobre lenguajes de programación y
traductores. Archivos y bases de datos. Transmisión de datos y redes de
computadores. Desarrollo y evolución histórica de la informática.
88
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
3. OBJETIVOS
1. Dar al estudiante una visión actualizada de los tópicos más básicos de
esta disciplina para el uso eficaz de computadoras.
2. Poseer un amplio panorama de los fundamentos del computador en el
tratamiento de datos.
3. Manejar términos comunes del área de informática y Sistemas y aplicar
en la solución de problemas de ingeniería industrial.
4. CONTENIDO TEMÁTICO
Semana 01:
Teoría: CONCEPTOS BÁSICOS: Informática, computador, programa, dato,
instrucción, hardware y software. Funcionamiento de los computadores.
Aplicaciones de la informática. Utilización de los computadores. Elementos
básicos de la informática.
Practica: MS- Excel: Básico en Excel, la pantalla del MS-Excel, Selección de
comandos, uso del teclado, instrucción y edición de datos.
Semana 02:
Teoría: ESTRUCTURA DE DATOS Y ALGORITMOS: Tipos de datos.
Estructuras de datos. Algoritmos.
Práctica: MS-Excel: Archivar y abrir hojas de cálculo.
89
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
Semana 03:
Teoria: PRESENTACIÓN DE LA INFORMACIÓN EN LOS COMPUTADORES:
Sistemas de numeración usuales en informática. Códigos de entrada y
salida. Representación interna de la información.
Práctica: MS-Excel: Impresión de datos. Trabajos con bloque de celdas.
Semana 04:
Teoria: DISEÑO LÓGICO: Sistemas digitales. Algebra de Boole.
Práctica: MS-Excel: Formatos
Semana OS:
Teoria: ESQUEMA DEL FUNCIONAMIENTO DE UN COMPUTADOR:
Elementos internos de un procesador. Temporización en la ejecución de una
instrucción. Estructuras básicas de computadores. Niveles de descripción de
un computador.
Práctica: MS-Excel: Utilidades más comunes para el trabajo con
Excel. Funciones con Excel.
Semana 06:
Teoria: LENGUAJES DE MAQUINA Y ENSAMBLADOR: Modos de
direccionamiento. Instrucciones máquina. Comparación entre lenguaje de
máquina y ensamblador.
Práctica: MS-Excel: Gráficos matemáticos y estadísticos. Incorporación de
imágenes a las hojas de cálculo. Base de datos con Excel.
90
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
Semana 07:
EXAMEN PARCIAL
Semana 08:
Teoría: UNIDADES FUNCIONALES Y PERIFÉRICOS DE UN COMPUTADOR:
Unidad de procesamiento. Unidad de control.
Memoria. Organización de entradas/ salidas. Definición y objetivos de los
periféricos. Principales dispositivos de entrada/ salida.
Dispositivos de memoria masiva auxiliar. Ensamblaje de computadoras.
Práctica: MS-Access: Introducción a Access. Requerimientos de hardware y
software. Instalación. Configuración básica. Edición, ordenamiento y
visualización de bases de datos. Modificación de la estructura de una base
de datos.
Semana 09:
Teoría: ARCHIVOS Y BASES DE DATOS: Concepto de archivos.
Organización de archivos. Parámetros de utilización de un archivo. Métodos
de ordenación y búsqueda. Base de datos.
Concepto de base de datos. Tipos de bases de datos. Sistemas de Gestión de
Base de Datos (DBMS).
Práctica: MS-Access: Creación manejo de tablas.
Semana 10:
Teoría: SISTEMAS OPERATIVOS: Software de un computador.
Definición de sistema operativo. Evolución de los sistemas operativos. El
nivel de máquina operativa.
Práctica: MS-Access: Consultas, formularios e informes.
91
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
Semana 11:
Teoría: TRANSMISIÓN DE DATOS Y REDES DE COMPUTACIÓN:
Sistemas de comunicación. Modulación. Multiplexación de en frecuencia y
en el tiempo. Topologías de redes. Redes de computadores. Técnicas de
comunicación digital de datos.
Práctica: MS-Access: Búsqueda y sustitución de datos.
Semana 12:
Teoría: EVOLUCIÓN HISTÓRICA Y DESARROLW DE LA INFORMÁTICA:
Antecedentes de la informática, las generaciones de computadores, las
generaciones en el desarrollo de los lenguajes de programación.
Práctica: MS -Access: Creación y edición de relaciones.
Semana 13:
Teoría: LENGUAJES DE PROGRAMACIÓN,
TRADUCTORES: Lenguajes de programación. El proceso de
traducción. Compiladores e intérpretes. Clasificación de los
lenguajes.
Práctica: MS-Access: Herramientas útiles de Access.
Semana 14:
Teoría: SISTEMAS DE INFORMACIÓN: El desarrollo de sistemas software.
Ciclo de vida del software. Planificación y gestión de proyectos. Análisis de
requerimientos del software. Diseño del sistema.
Práctica: MS-Access: Introducción a los macros.
92
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
Semana 15:
Teoria: INTERNET: Protocolos ISP/IP. Servicios
telemáticos.
Práctica: MS-Access: Programación con Access.
Semana 16:
Teoria: ADMINISTRACIÓN DE CENTROS DE COMPUTO: Planeamiento,
organización, dirección, coordinación y control de los centros de cómputo.
Práctica: MS-Access: Elaboración de un sistema de información
Semana 17:
EXAMEN FINAL
S. METODOLOGÍA
a) El profesor expondrá las clases teóricas prácticas de tal forma que propicie
y estimule la participación de los alumnos en clase.
b) El alumno deberá asistir a clase obligatoriamente estudiando los temas
tratados y repasando el tema que el profesor desarrollará. Esto permitirá
una mejor participación del alumno en clase.
e) Se asignaran trabajos de aplicación real, los cuales deben ser sustentados
en horas de clase.
d) El profesor pondrá a disposición de los estudiantes ORIENTACIÓN en las
horas de prácticas de laboratorio, con la finalidad de aflanzar los
conocimientos adquiridos en clase.
93
UNIVERSIDAD NACIONAL DEL CALLAO
FACUL TAO DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
DEPARTAMENTO ACADÉMICO DE INGENIERÍA INDUSTRIAL
6. SISTEMAS DE EVALUACIÓN
La evaluación de los alumnos es objetiva, en base de trabajos encargados
y prácticas, examen parcial y examen fmal. Si el promedio final fuese
desaprobatoria., rendirá un examen sustitutorio, el que será único y
· abarcará todo el curso y cuya nota reemplazará a la nota más baja
(examen parcial o examen final).
El promedio fmal del curso será:
PF = 0.25EP + 0.25E F + 0.5PP
Donde:
PF : Promedio Final
EP : Examen Parcial
EF : Examen Final
pp : Promedio de práctica
7. BIBLIOGRAFÍA
• R. C. T. Lee, S. S. Tseng, R. C. Chang, Y. T. Tsai. IN'T'RODUCCIÓN Al, DISEÑO Y
ANÁLISIS DE ALGORITMOS: Un Enfoque Estratégico, Me Graw Hill, España.
2007
• Osvaldo Cairó. Metodología de la Programación-Algoritmos, diagramas de flujo y
programas. Grupo Editor S.A. Alfaomega, México 2005.
• Luis Joyanes, Fundamentos de Programación, Algoritmos y estructura de datos,
Me Graw Hill, 2003, España
• Peter Norton, Introducción a la computación, 3era edición, Me Graw Hill 1 Interamericana Editores, 2000. México
• Pascual, Francisco. OFFICE PROFESIONAL. Grupo Editor S.A. Alfaomega, México
1997.
94
X. ANEXOS
Introducción Informática Industrial
Introducción a la Informática Industrial
Dr. Prof. José A. Rodríguez Mondéjor Dr. Prof. Alvaro Sánchez Miralles
lnfroducclón
Primero: AUTOMATIZAR
PLANTA con sensores y actuadores
Reactiw ácido
Resistencia térmica
Dr. Prof. José A. Rodríguez Mondejar Dr. Prof. Alvaro Sitnchez Miralles
95
UPCO ICAI Departamento de Electrónica y Automática 1
Agitador
Informática Industrial
Conseguir que la PLANTA funcione de
Válvula Alimentación
Sensor de temperalu!'a
Sensor de pH
Válvula Salida
STOP
AUTOMATIC;i\. MANUAL
o 'U/ UPCO ICAI Departamento de Beclrónica y Automática 2
Introducción Informática Industrial
Automatizar es más: CONTROL SUPERVISADO
Dr. Prof. José A. Rodríguez Mondéjar Dr. Prof. Álvaro Sánchez Mira! les
lniTOducclón
SCADA: Supervisory Control and Data
Acquisltion
=
UPCO ICAI Departamento de Electrónica y Automática 3
Informática Industrial
Informática muy a la medida (muy fiable)
PLANTA
Dr. Prof. José A. Rodriguez Mondéjar Dr. Prof. Á !varo Sánchez Mlmlles
96
1 ~
t l
r- s:¡ r !:1 t "J r ~ r ~ [ '1 •• .¡
t ~ t. ::J
.... • " . . . C:iZJ b t; tJ t. tJ i":. t; t., - .• tJ O tJ O ZHH':l tHl i'J o
UPCO ICAJ Oepanlllll9nto de Electrónia~ y Automídica 4
~
Introducción Informática Industrial
Elementos 'típicos utilizados en la automatización • PLCs
• Robots • Comunicaciones • Ordenadores industriales • Software •• - Sistemas de
monitorización. SCADA , '! -= r Sistemas de diagnóstico ""'*"""·""···""'·.,""'""'......,...,
Sensores Actuadores
Controladores Comunicaciones
Or. Prot. José A. Rodríguez Mondéjlsr Dr. Prof. Álvaro Sánchez Miralles
Introducción Informática Industrial
PLC
Arquitectura
Servidor de datos
ltll~l Terminal de &e!!!i proceso de ~ datos
Controlador y servidor 1
1 Sensores
1 Planta
PLC
1 Actuadores 1
ControJ de alto nivel
Red comunicaciones
DCS
Bus campo
Nivel de campo
Dr. Prof. José A. Rodrtguez Mondéjar Or. Prof. Álvaro Sánchez M'rralles
UPCO ICAI Oepanamento de Electrónica y Automática 8
97