UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca...

98
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Ú '

Transcript of UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca...

Page 1: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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Ú

'

Page 2: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 3: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 4: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 5: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 6: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 7: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 8: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 9: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

' , 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

Page 10: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 11: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 12: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 13: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 14: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 15: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 16: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 17: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 18: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 19: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

. 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

Page 20: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 21: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 22: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 23: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 24: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 25: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 26: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 27: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 28: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 29: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 30: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 31: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 32: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 33: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 34: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 35: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 36: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 37: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 38: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 39: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 40: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 41: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 42: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

~··

Page 43: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 44: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 45: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 46: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 47: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 48: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 49: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 50: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 51: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 52: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 53: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 54: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 55: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 56: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 57: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 58: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 59: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 60: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 61: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 62: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 63: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 64: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

)

Page 65: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 66: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 67: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 68: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 69: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 70: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 71: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 72: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 73: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 74: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 75: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 76: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 77: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 78: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 79: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 80: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 81: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 82: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 83: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 84: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 85: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 86: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 87: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 88: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 89: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 90: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 91: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 92: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 93: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 94: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 95: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 96: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

Page 97: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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

~

Page 98: UNIVERSIDAD NACIONAL DEL CALLAO - Biblioteca …biblioteca.unac.edu.pe/biblioteca_virtual/archivos/textos/93.pdf · formas más estructuradas para representar algoritmos; no obstante,

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