View
2.300
Download
2
Category
Preview:
Citation preview
INSTITUTO POLITECNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y
ADMINISTRATIVAS
2 DE OCTUBRE DEL 2009THE BOOBS Secuencia: 1CM1
LICENCIATURA EN CIENCIAS DE LA INFORMÁTICA
FUNDAMENTOS DE LA
COMPUTACIÓN
“UNIDAD 3 “
CONCEPTOS DE PROGRAMACION
Integrantes:
MENDOZA ESPINOSA DIANA CECILIA PAREDES CARRILLO NATALY
TREJO SÀNCHEZ JESSICA DANIELAZAGAL DOÌINGUEZ GLORIA EVA
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Tabla de contenidoINTRODUCCIÓN 3
3.1 Como determinar que un problema sea resuelto por computadora 6
3.1.1 La forma en que los programas resuelven problemas 10
3.2 Soluciones lógicas 13
3.2.1 Algoritmo 13
3.2.2 Pseucódigo 14
3.2.3 Compuertas o puertas lógicas 17
3.3 Diagrama lógico 18
3.3.1 Diagrama de flujo 19
3.3.2 Diagrama de Gantt 20
3.3.3 Diagrama de Pert 22
3.3.4 Diagrama de Venn 23
3.3.5 Diagrama de Procedimiento 24
3.3.6 Diagrama de Karnaugh- Simplificación 25
3.3.7 Diagrama de lluvia de ideas 27
3.4 Lenguaje de programación 28
3.4.1 Programa 30
3.4.2 Fases de creación de un programa 32
3.5 Lenguaje máquina 363.6 Traductor de lenguajes 38 3.6.1 Traductores 42
3.6.2 Compiladores 43
3.6.3 Ensamblador 48
3.6.4 Clasificación de compiladores 51
3.7 Elementos de programación 52
3.7.1 Tipos de datos 52
3.7.1.1 Estáticos 52
THE BOOP´s Página 2
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.7.1.2 Dinámicos 55
3.7.1.3 Simples 55
3.7.1.4 Estructurados 56
3.7.1.5 Ordinales 57
3.7.2 Operadores lógicos 60
3.8 Programación estructurada 60
3.8.1 Técnicas de programación 60
3.8.1.1 Programación modular 60
3.8.1.2 Programación estructurada 61
3.8.3 Visión moderna de un programa estructurado 64
CONCLUSION 67
BIBLIOGRAFIA69
INTRODUCCIÓN
Desde que la computadora tuvo la capacidad de realizar tareas por si sola se vio
en la necesidad de seguir reglas que regularan el uso de sus funciones utilizando
diversos métodos para su comprensión...
Se baso en instrucciones que se vieron apoyadas por una serie de métodos que
permitieron agrupar información.
Esta información debía de ser comprendida por el ordenador ya que las
computadoras no usan un lenguaje como el del humano, si no que este debe de
ser interpretado para llegar a un nivel en el que las instrucciones sean entendidas
por el ordenador. Introduciendo así el uso de medios tales como algoritmos,
THE BOOP´s Página 3
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
diagramas de diversos tipos, pseucódigo, etc. Que permitieron organizar ideas
para la información que tenía que ser interpretada.
De aquí que surgen los lenguajes de programación, mediante los cuales se
desarrollan instrucciones que nos permiten llegar a un fin especifico.
Con el tiempo, estos fueron evolucionando en complejidad y en uso, debido a
esto se sentaron bases para el desarrollo de programas marcando una pauta y
división en su uso, surgiendo así distintos tipos de programación que satisfacían
diferentes requerimientos.
Al organizarse la forma en que trabajarían los programas surgieron
especificaciones de diversa índole, creando instrucciones delimitadas que se
seguirían como patrón en la elaboración de estos apareciendo así el uso de
“palabras” universales en cada programa para su utilización individual.
Dividiéndose también en complejidad unos de otros.
Para esta división se tomo en cuenta la clasificación de la información ya que no
toda seria tratada con el mismo fin, si no que se agruparon datos similares,
surgiendo grupos que tomarían un nombre de acuerdo a sus funciones y a la
forma en que fuerana ser utilizados.
Cuando la programación ya estuvo definida se trato de que fuera lo más
entendible tanto para el programador, como para una persona ajena a él, que
quisiera consultar el programa. Para esto se estructuraron los programas. En ellos
se trabajaría con un status sin olvidarse de las reglas de programación
independientemente del programa en el que se estuviese trabajando, ordenando
las instrucciones de una manera en la que se redujera el numero de procesos a
realizar dentro del, agilizando el manejo de información para hacerla lo más breve
y funcional dentro del programa.
THE BOOP´s Página 4
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.1 CÓMO DETERMINAR QUE UN PROBLEMA SEA RESUELTO POR
COMPUTADORA
El software proporciona las instrucciones que hacen funcionar el hardware de la
computadora; sin este la computadora no puede funcionar, no es más que un
montón de partes. Algunos comandos de software pueden estar integrados en
piezas de de hardware especificas (por ejemplo los chips de CPU y ROM), peo
incluso en estos casos la programación es simplemente una versión de
“codificación dura” del software. Un ejemplo de este tipo de codificación se puede
encontrar en algo tan común como un reloj digital. Aunque posiblemente nunca lo
hayan considerado cierta entre clase de software está integrada en los circuitos
del reloj los cuales le permiten funciona. Debido a que el software es una parte tan
THE BOOP´s Página 5
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
importante de cualquier sistema de computación, es importante entender que tipo
de software es y donde proviene.
En termino software puede utilizarse en forma genérica, por ejemplo en la frase”
El software le dice a la computadora que hacer”. El término también puede
utilizarse de una manera más específica para describir un sistema operativo o
aplicación. Por ejemplo: puede decir, “Windows XP es un producto de software” o
“Photoshop es un producto de software”
Un programa de cómputo es un conjunto de instrucciones o declaraciones
(también conocidas como código) que debe de utilizar el CPU de una
computadora. Los programas, o software, tienen distintas formas. Éstas se pueden
dividir en tres categorías principales: sistemas operativos, herramientas y
aplicaciones.
Un programa normalmente está compuesto de un modulo principal y submódelos.
Estos módulos están almacenados como un conjunto de archivos; los programas
grandes pueden contener miles de archivos individuales, cada uno para un
propósito especifico. Algunos de los archivos contienen instrucciones para la
computadora mientras que otros contienen datos. Para las PC basadas en
Windows, algunas extensiones comunes para los archivos de programas son las
siguientes:
Archivos ejecutables: Un archivo ejecutable (.exe, .com) es parte de un
programa que en realidad envía comandos al procesador. De hecho,
cuando usted ejecuta un programa, está ejecutando un archivo ejecutable.
El procesador ejecuta los comandos del archivo ejecutable. El procesador
ejecuta dos comandos del archivo, de ahí proviene el nombre archivo
ejecutable. Los archivos ejecutables normalmente (pero no siempre) tienen
la extensión de nombre de archivo .exe.
Archivos de biblioteca dinámica de vínculos: Un archivo de biblioteca
dinámica de vínculos (.dll) es un archivo .exe parcial. Un archivo .dll no
puede ejecutarse por sí mismo; en lugar de esto, sus comandos son
accedidos por otro programa que esta ejecutándose. Debido a que los
THE BOOP´s Página 6
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
archivos .dll pueden contener partes de un programa ejecutable, ofrecen a
los programadores de manera efectiva de dividir programas grandes en
componentes pequeños que son reemplazables. Esta característica hace
que el programa completo sea fácil de actualizar. Además los archivos .dll
también pueden ser compartidos por distintos programas al mismo tiempo.
Archivos de inicialización: Un archivo de inicialización (.ini) contiene
información sobre co9nfiguraciones, por ejemplo, el tamaño y punto de
inicio de una ventana, el color de fondo, el nombre del usuario y otros
aspectos. Los archivos de inicialización ayudan a los programas a
ejecutarse o contiene información que los programas pueden utilizar
cuando se ejecutan. Aunque los archivos de inicialización se siguen
utilizando, muchos programas nuevos almacenan las preferencias del
usuario y otras variables del programa en el registro de Windows, una base
de datos especial contiene información sobre el usuario del computador,
los programas instalados y ciertos dispositivos de hardware.
Archivos de ayuda: Un archivo de ayuda (.hlp, .chm) contiene información
a un formato indexado y con vínculos cruzados. Al incluir el archivo de
ayuda, los programadores pueden proporcionar al usuario información de
ayuda en línea.
Archivos de secuencia de comandos: (.bat) automatiza tareas comunes
o repetitivas. Un archivo de secuencia de comandos es un programa
simple que consiste en un archivo de texto sin formato que contiene uno o
más comandos del sistema operativo. Si escribe el nombre de un archivo
de secuencia de comandos es un símbolo de sistema, su sistema operativo
ejecutara los comandos del sistema operativo.
La mayor parte de los archivos de programas se almacenan en una carpeta
nombrada como la aplicación o una abreviatura de ella. Sin embrago, algunos
archivos de programa se pueden encontrar en otras carpetas. Por ejemplo, los
archivos .dll en Windows XP normalmente están almacenados en las carpetas c:\
THE BOOP´s Página 7
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
windows\system 32. Para ver una lista de la mayoría de os archivos necesarios
para ejecutar una aplicación puede abrir la carpeta de esa aplicación.
El proceso de resolución de problemas con computadoras conduce a la escritura
de un programa y su ejecución en la misma. Aunque el proceso de diseñar
programas es esencialmente un proceso creativo, se puede considerar una serie
de fases o pasos comunes que generalmente deben seguir los programadores.
Estas fases son las siguientes:
Definición del Problema: Esta fase está dada por el enunciado del
problema, el cual requiere una definición clara y precisa. Es importante que
se conozca lo que se desea que realice la computadora; mientras esto no
se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Análisis del Problema: Una vez que se ha comprendido lo que se desea de
la computadora, es necesario definir:
1. Los datos de entrada.
2. Cuál es la información que se desea producir (salida).
3. Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación muy práctica es el que nos pongamos en el lugar de la
computadora y analicemos que es lo que necesitamos que nos ordenen y en que
secuencia para producir los resultados esperados.
Codificación.
La codificación es la operación de escribir la solución del problema (de acuerdo a
la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones
detalladas, en un código reconocible por la computadora, la serie de instrucciones
detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de
programación o lenguaje de alto nivel.
THE BOOP´s Página 8
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Prueba y Depuración:
Los errores humanos dentro de la programación de computadoras son muchos y
aumentan considerablemente con la complejidad del problema. El proceso de
identificar y eliminar errores, para dar paso a una solución sin errores se le llama
depuración. La depuración o prueba resulta una tarea tan creativa como el mismo
desarrollo de la solución, por ello se debe considerar con el mismo interés y
entusiasmo.
Documentación:
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados,
procedimientos, dibujos o diagramas. A menudo un programa escrito por una
persona, es usado por otra. Por ello la documentación sirve para ayudar a
comprender o usar un programa o para facilitar futuras modificaciones.
La documentación se divide en tres partes:
1. Documentación Interna: son los comentarios o mensajes que se añaden al
código fuente para hacer más claro el entendimiento de un proceso.
Documentación Externa: se define en un documento escrito los siguientes puntos:
Descripción del Problema.
Nombre del Autor.
Algoritmo (diagrama de flujo o pseudocódigo).
Diccionario de Datos.
Código Fuente (programa).
Manual del Usuario: describe paso a paso la manera cómo funciona el
programa, con el fin de que el usuario obtenga el resultado deseado.
THE BOOP´s Página 9
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Mantenimiento:
Se lleva a cabo después de terminado el programa, cuando se detecta que es
necesario hacer algún cambio, ajuste o complementar al programa para que siga
trabajando de manera correcta. Para poder realizar este trabajo se requiere que
el programa este correctamente documentado.
3.1.1 La forma en que los programas resuelven problemas.
Un programa es un conjunto de pasos que controlan una computadora, pero es
probable que no sepa que apariencia tiene estos pasos. Su apariencia o estructura
depende un poco del lenguaje de programación, pero el concepto general es el
mismo sin importar que lenguajes se utiliza. Cada paso del código es una
instrucción que realiza una sola tarea en una secuencia en una secuencia de
pasos que llevan a cabo una tarea más compleja.
Control de flujo de un programa:
Cuando inicia un programa, la computadora comienza a leer y llevar a cabo
declaraciones en el punto de entrada del principal archivo ejecutado. Normalmente
este punto de entrada es la primera línea (o declaración) del archivo, aunque
puede estar ubicado en otro lugar. Después de la ejecución de la primera
declaración, el programa pasa al control (o flujo) a otra declaración y así en
adelante hasta que se ejecuta la última declaración del programa; entonces el
programa termina. El orden en el cual se ejecutan las declaraciones de un
programa se conoce como control de flujo del programa.
Pseudocódigo
THE BOOP´s Página 10
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma)
que se emplea, dentro de la programación estructurada, para realizar el diseño de
un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje de
especificaciones de algoritmos.
En esencial, el Pseudocódigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar
solución a un problema determinado. El Pseudocódigo utiliza palabras que indican
el proceso a realizar.
Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo
Ocupa menos espacio en una hoja de papel
Permite representar en forma fácil operaciones repetitivas complejas
Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de
programación.
Si se siguen las reglas se puede observar claramente los niveles que tiene
cada operación.
Ejemplo de un pseucódigo
THE BOOP´s Página 11
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Diagramas estructurados (Nassi-Schneiderman)
El diagrama estructurado N-S también conocido como diagrama de chapin es
como un diagrama de flujo en el que se omiten las flechas de unión y las cajas
son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y
como en los diagramas de flujo, se pueden escribir diferentes acciones en una
caja.
Algoritmos
Los pasos que se presentan en un diagrama IPO normalmente conducen hacia un
resultado deseado. En conjunto, estos pasos se conocen como algoritmos. Un
algoritmo es una serie de instrucciones paso a paso que, se siguen, producen un
resultado conocido o esperado. Los pasos para encontrar una solución son los
mismos sin importar que se encuentre la solución con una computadora o a
mano, por lo cual se puede tener un programa y un diagrama IPO hecho a mano
parta realizar la misma tarea.
3.2 SOLUCIONES LOGICAS
Son aquellas que tienen operaciones lógicas.
La solución a cualquier problema de cómputo involucra la ejecución de una serie
de acciones en un orden específico. Al procedimiento para resolver un problema
en término de:
1. Acciones a ejecutar.
2. El orden en el cual se llevan a cabo dichas acciones.
3.2.1 ALGORITMO
THE BOOP´s Página 12
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Es un diseño de una serie de pasos a seguir y procesos lógicos encaminados a
resolver un problemas.
Características:
Lógica
Secuencia
Detallada
Acciones
Pedir datos
Desplegar datos
Evaluar condiciones
Ejecutar operaciones
SOLUCION DE UN PROBLEMA
1. ¿Qué debo hacer?
2. ¿Qué debo tener?
3. ¿Cómo hacerlo?
NOTA: Información proporcionada al algoritmo = Entrada
Información producida por el algoritmo = Salida
El siguiente ejemplo demuestra que es importante especificar correctamente el
orden en que se debe ejecutar las acciones:
Considere el algoritmo “levantarse y arreglarse” que sigue un joven para salir de la
cama e ir a su trabajo:
1. Levantarse de la cama
THE BOOP´s Página 13
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
2. Quitarse la pijama
3. Bañarse
4. Vestirse
5. Desayunar manejar hacia el trabajo
Esta rutina hace el ejecutivo vaya al trabajo bien preparado para tomar decisiones
criticas. A la especificación del orden en el cual se ejecutan las instrucciones
dentro de un programa de computadora se le llama control de programa.
3.2.2 PSEUDOCODIGO
El pseudocódigo en un lenguaje artificial e informal que ayuda a los
programadores a desarrollar algoritmos. El pseudocódigo es similar al inglés; es
conveniente y sencillo, aunque no es un lenguaje de programación real.
Los programas en pseudocódigo no se ejecutan en las computadoras, sino que
solo ayudan al programador a “resolver” un programa antes de intentar escribirlo
en un lenguaje de programación como C.
El pseudocódigo solo consiste en caracteres, de manera que los programadores
pueden introducir los programas en pseudocódigo a la computadora mediante un
programa de edición. La computadora puede desplegar o imprimir una copia
reciente del pseudocódigo cuando sea necesario. Un programa cuidadosamente
cuidado preparado puede convertirse fácilmente en su correspondiente programa.
Es tan claro como el diagrama y es una herramienta útil para el seguimiento de la
lógica de un algoritmo y, sobretodo, facilita la transcripción a un lenguaje de
programación. Tiene la desventaja de que el programador trata de transcribir los
pasos del algoritmo utilizando palabras reservadas, propias del lenguaje en el cual
está acostumbrado a trabajar.
No existe un pseudocódigo estándar, por este motivo hay una notación y una serie
de reglas correspondientes al pseudocódigo.
Algunas instrucciones que generalmente componen a un pseudocódigo son:
Instrucciones declarativas:
THE BOOP´s Página 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Son aquellas expresiones que definen las variables y demás objetos del programa,
así como el tipo de los mismos.
Ejemplo: Enteros A, B…
Instrucciones de asignación:
Asigna a ala variable que se encuentra a ala izquierda del símbolo de asignación
utilizando (generalmente el signo =) el valor de la constante, variable o expresión
que se encuentra a la derecha del mismo.
Ejemplos:
X=0 asignan el valor cero a la variable x
Instrucciones de entrada:
Introducen los datos desde un dispositivo o periférico de entrada a la memoria del
ordenador, depositándolos en las variables como paso previo para su tratamiento
en el programa. Ejemplo:
Si el dispositivo es de entrada es el teclado, se utilizara una de las siguientes
expresiones
Introducir variable o leer variable.
Instrucciones de salida:
Graban, imprimen o visualizan en el dispositivo de salida correspondiente los
datos contenidos en las variables especificadas. Dependiendo de los dispositivos
a utilizar, los verbos empleados serán visualizar, imprimir o grabar.
Si el dispositivo es por pantalla;
Visualizar apellidos muestra en pantalla el contenido de la variable apellidos.
REGLAS GENERALES EN LA CONFECCIÓN DE UN PSEUDOCODIGO
El conjunto de instrucciones que forman parte de un programa o
procedimiento va incluido entre las palabras “inicio” y “fin]” que delimitan su
contenido.
THE BOOP´s Página 15
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Los verbos se escribirán la primera letra con mayúscula y el resto con
minúscula.
Los nombres de variables se escribirán con mayúsculas.
Se identificaran los procedimientos o subrutinas del programa principal
encerrado entre los símbolos “<” y “>” el nombre de cada uno de ellos. El
nombre dado al procedimiento y las instrucciones que lo componen será
especificado aparte.
Para mejorar la legibilidad del programa se utilizara el sangrado o
tabulación de los márgenes que indique la subordinación de unas
instrucciones respecto a otras.
Cuando se considere necesario se incluirán comentarios explicativos en el
pseudocódigo precedidos del símbolo asterisco (*).
En algunos pseudocódigos se especifica un entorno donde se describen las
variables auxiliares utilizadas, indicando su nombre, significado, tipo y valor
inicial.
3.2.3 COMPUERTAS O PUERTAS LÓGICAS
Los símbolos lógicos que se usan para representar las puertas lógicas están de
acuerdo con el estándar ANSI/IEEE 91-1984.
La lógica es la parte del razonamiento humano que nos dice que una determinada
proposición (sentencia de asignación) es cierta si se cumplen ciertas condiciones.
Las proposiciones se pueden clasificar como verdaderas o falsas.
Cuando se combinan varias proposiciones se forman funciones lógicas o
proposicionales.
Hacia 1859 el matemático y lógico irlandés George Boole desarrollo un sistema
matemático para formular proposiciones lógicas con símbolos, de manera que los
problemas puedan formularse y resolverse de forma similar a como se hace en el
algebra ordinaria.
THE BOOP´s Página 16
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
El término lógico se aplica a los circuitos digitales que se utilizan para implementar
funciones lógicas. Existen varios tipos de circuitos lógicos que son los elementos
básicos que constituyen los bloques sobre los que se construyen los sistemas
digitales más complejos como por ejemplo una computadora.
Las líneas conectadas a cada símbolo son las entradas y las salidas. Las entradas
son las líneas situadas a la izquierda de cada símbolo y la salida es la línea
derecha. Un circuito que realiza una operación lógica determina (NOT, AND, OR)
se denomina puerta lógica. Las puertas AND y OR pueden tener cualquier número
de entradas
En las operaciones lógicas, las condiciones mencionadas anteriormente de:
Verdadero (ALTO) /falso (BAJO). Cada una de las tres operaciones básicas da
lugar a una respuesta para un determinado conjunto de condiciones.
3.3 DIGRAMAS LÓGICOS
INTRODUCCION
La representación del sistemas de control por diagramas lógicos se basa en el
empleo de símbolos normalizados (puertas) que representan funciones lógicas
directas del algebra de Boole (AND, OR, etc.) o sistemas lógicos más complejos
(biestables, registros, contadores etc.).
El conjunto de todos los símbolos con sus interrelaciones forman el loligrama del
sistema de control, representación compacta e independiente de la tecnología de
construcción del mismo (eléctrica, neumática, etc.).
THE BOOP´s Página 17
NO AN AN
Cualquier número de entradas
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Desgraciadamente el diagrama es una herramienta característica del técnico del
software o del ingeniero de diseño, muy alejado de muchos usuarios finales del
autómata, por lo que su empleo queda en la práctica casi circunscrito en la
representación del sistema en alto nivel, efectos de especificaciones y
documentación.
Figura 19. Representación de un circuito Lógico
3.3.1 DIAGRAMA DE FLUJO
Un diagrama de flujo es una representación grafica de un algoritmo o de una
porción de un algoritmo. Los diagramas de flujo se dibujan mediante símbolos de
propósito especial tales como rectángulos, rombos, óvalos y pequeños círculos;
estos símbolos se conectan mediante flechas llamadas líneas de flujo.
Como el pseudocódigo, los diagramas de flujo son útiles para desarrollar,
representar algoritmos, aunque la mayoría de los programadores prefieren el
pseudocódigo. Los diagramas de flujo muestran claramente la manera en que
opera las estructuras de control: esto es lo único para lo que los utilizaremos.
THE BOOP´s Página 18
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.3.2 DIAGRAMA DE GANTT
El diagrama de Gantt consiste en una representación gráfica sobre dos ejes; en el
vertical se disponen las tareas del proyecto y en el horizontal se representa el
tiempo.
Los cronogramas de barras o “gráficos de Gantt” fueron concebidos por el
ingeniero norteamericano Henry L. Gantt, uno de los precursores de la ingeniería
industrial contemporánea de Taylor. Gantt procuro resolver el problema de la
programación de actividades, es decir, su distribución conforme a un calendario,
THE BOOP´s Página 19
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
de manera tal que se pudiese visualizar el periodo de duración de cada actividad,
sus fechas de iniciación y terminación e igualmente el tiempo total requerido para
la ejecución de un trabajo. El instrumento que desarrolló permite también que se
siga el curso de cada actividad, al proporcionar información del porcentaje
ejecutado de cada una de ellas, así como el grado de adelanto o atraso con
respecto al plazo previsto.
Este gráfico consiste simplemente en un sistema de coordenadas en que se
indica:
En el eje Horizontal: un calendario, o escala de tiempo definido en términos de la
unidad más adecuada al trabajo que se va a ejecutar: hora, día, semana, mes, etc.
En el eje Vertical: Las actividades que constituyen el trabajo a ejecutar. A cada
actividad se hace corresponder una línea horizontal cuya longitud es proporcional
a su duración en la cual la medición efectúa con relación a la escala definida en el
eje horizontal conforme se ilustra.
Símbolos Convencionales: En la elaboración del gráfico de Gantt se acostumbra
utilizar determinados símbolos, aunque pueden diseñarse muchos otros para
atender las necesidades específicas del usuario. Los símbolos básicos son los
siguientes:
· Iniciación de una actividad.
· Término de una actividad
· Línea fina que conecta las dos “L” invertidas. Indica la duración prevista de la
actividad.
· Línea gruesa. Indica la fracción ya realizada de la actividad, en términos de
porcentaje. Debe trazarse debajo de la línea fina que representa el plazo previsto.
· Plazo durante el cual no puede realizarse la actividad. Corresponde al tiempo
improductivo puede anotarse encima del símbolo utilizando una abreviatura.
THE BOOP´s Página 20
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
· Indica la fecha en que se procedió a la última actualización del gráfico, es decir,
en que se hizo la comparación entre las actividades previstas y las efectivamente
realizadas.
Figura. Representación de un diagrama de gant
3.3.3 DIAGRAMA DE PERT
El diagrama PERT es una representación gráfica de las relaciones entre las
tareas del proyecto que permite calcular los tiempos del proyecto de forma
sencilla.
THE BOOP´s Página 21
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Puede organizar tareas, establecer marcos de tiempo e ilustrar dependencias al
inicio de un proyecto con los diagramas de Técnica de programación, evaluación y
revisión (PERT) en Microsoft Office Visio.
También puede usar diagramas de PERT para ilustrar los pasos que encaminan a
una meta específica. Por ejemplo, un diagrama PERT puede servir para definir
los pasos que un departamento necesita para alcanzar sus objetivos de ingresos
cada dos años.
En un diagrama PERT, cada rectángulo o nodo representa una tarea, y las
conexiones entre tareas, dependencias.
3.3.4 DIAGRAMAS DE VENN
Una figura útil que puede ser usada para visualizar las relaciones entre las
variables del algebra de Boole es el diagrama de Venn
THE BOOP´s Página 22
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
En el cual se dibujan círculos traslapados para cada una de las variables.
Cada círculo es designado por una variable. Se asignan todos los puntos dentro
de cada circulo es designado por una variable. Se asignan todos los puntos de
cada círculo como pertenecientes a dichas variables y todos los puntos por fuera
del círculo como no pertenecientes a la variable.
Ahora bien con dos círculos traslapados se forman cuatro áreas distintas dentro
del rectángulo: el área que no pertenece ni a x ni a y (x’y’), el área dentro del
circulo y pero por fuera de x (x’y’), el área dentro del circulo y pero por fuera de y
(xy’) y el área dentro de ambos círculos (xy). De la figura19
Figura 20. Diagrama de Venn de dos los variables
Los diagramas de Venn se usan para demostrar los postulados del algebra de
Boole y para demostrar la validez de los teoremas.
3.3. 5 DIAGRAMA DE PROCEDIMIENTO
La multiplicidad de funciones y el crecimiento de las operaciones, tanto en
empresas del sector oficial como del privado, inciden en la proliferación de
procesos funcionales (crecimientos acelerados) que requieren grandes cantidades
THE BOOP´s Página 23
X Y
XY’
X’Y
X’Y’
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
de recursos humanos, materiales y financieros que generalmente conducen a
zonas de empautamiento para el mejoramiento de la capacidad de producción de
bienes o servicios frente a los consumidores y los clientes.
La permanente revisión de los sistemas, estructuras y procedimientos por las
unidades responsables del mejoramiento administrativo permitirá conocer de
manera integral la operación de la institución o de cualquier unidad administrativa.
La presentación de procedimientos aislados no permiten conocer de manera
integral la operación de la empresa o de una de sus partes (unidad administrativa)
y el reconocer la deficiencia en la
calidad de los servicios prestados, y
la necesidad de identificar
problemas y dificultades
administrativas que se presentan en
el cotidiano que hacer institucional,
en mucho obedece a la ausencia de
procedimientos redactados y a su
representación (graficación); de
aquí la necesidad de agrupar- los
en forma ordenada en un solo
documento denominado "Manual de
procedimientos".
El estudio de procedimientos tiene
diferentes matices, tema que es
tratado ampliamente en otro
capítulo de la obra; sin embargo, es importante destacar que una vez que se ha
recabado, integrado y analizado la información materia del estudio, se procederá a
la graficación de los procedimientos. La representación de los procedimientos
sujetos a estudio, puede ser más o menos compleja, según sea la técnica de
diagramación y el objeto o ámbito de aplicación de los mismos
THE BOOP´s Página 24
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.3.6 DIGRAMAS DE KARNAUGH-SIMPLIFICACION
La complejidad de las compuertas lógicas digitales con que se llevan a cabo las
funciones de Boole se relacionan directamente con la complejidad de la expresión
algebraica de la cual se desprenden la función. Aunque la representación de la
tabla de verdad de una función única, puede aparecer de muchas formas
diferentes. Las funciones de Boole pueden ser simplificadas por medios
algebraicos
Sin embargo el proceso de minimización es un tanto raro ya que carece de reglas
especificas para predecir cada paso sucesivo en el proceso de manipulación. El
método del mapa presenta un procedimiento simple y directo para minimizar las
funciones de Boole. Este método puede ser tratado no solamente en la forma
pictórica de una tabla de verdad, sino como una extensión del diagrama de Venn.
El método del mapa, propuesto primero por Veitch y modificado por Karnaugh se
conoce como el “diagrama de Veitch” o el “mapa de Karnaugh”.
Un mapa de Karnaugh proporciona un método sistemático de simplificación de
expresiones booleanas y, si se aplica adecuadamente, genera las expresiones
suma de productos y producto de sumas simples posibles, conocidas como
expresiones mínimas.
Un mapa de Karnaugh es similar a una tabla de verdad, ya que muestra todos los
valores posibles de las variables de entrada y la salida resultante para cada valor.
En lugar de organizar en filas y columnas como una tabla de verdad, el mapa de
Karnaugh es una matriz de celdas en la que cada celda representa un valor
binario de las variables de entrada. Las celdas organizan de manera que la
simplificación de una determinada expresión consiste en agrupar adecuadamente
las celdas. Los mapas de karnaugh se pueden utilizar para expresiones de dos
hasta cinco variables.
El número de celdas de un mapa de Karnaugh es igual a número total de posibles
combinaciones de las variables de entrada, al igual que el número de filas de una
tabla de verdad. Para tres variables, el numero de celdas necesarias es de 23 =8.
THE BOOP´s Página 25
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Mapa de Karnaugh de tres variables
Ejemplo
El mapa de Karnaugh de tres variables es una matriz de ocho celdas, como se
muestra en la figura 26. En este caso se emplea A, B, y C se emplea para
denominar a las variables, aunque podían haberse usado cualquier letra. Los
valores binarios de A y B se encuentran en lado izquierda (observe la secuencia) y
los valores C se colocan en la parte superior. El valor de una determinada celda es
el valor binario de A y B, en la parte izquierda de la misma fila superior izquierda
tiene un valor binario de 0000 y la Elda inferior derecha tiene un valor de 101.
Figura 36. Mapa de Karnaugh de tres variables que muestra los termino producto
3.3.7 DIAGRAMAS DE LLUVIA DE IDEAS
Los diagramas de lluvia de ideas constituyen un método eficaz para generar ideas
y resolver problemas de forma creativa. Pueden ayudarle a desarrollar cualquier
sistema de información o ideas, como nuevas estrategias empresariales,
esquemas de libros, órdenes del día para reuniones o planes de viajes.
THE BOOP´s Página 26
C 0 AB
00011110
ABC ABC
ABC ABC
ABC ABC
ABC ABC
AB00011110
C 0 1
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Los diagramas de lluvia de ideas muestran las relaciones entre temas en una
jerarquía. Puede considerarlos como una representación gráfica de un esquema
de texto.
Existen dos métodos conocidos para crear diagramas de este tipo. El primero
consiste en empezar con una idea principal y generar a partir de ella temas y
temas secundarios relacionados jerárquicamente. Sin embargo, durante una
reunión de lluvia de ideas, en la que todo el mundo aporta ideas constantemente,
las jerarquías no siempre están claras y es necesario captar las ideas
rápidamente. El segundo método, por tanto, consiste en captar todas esas ideas
tal y como se expresan y, posteriormente, organizarlas, revisarlas, ajustarlas y
compartir los resultados.
3.4 LENGUAJE DE PROGRAMACIÓN
Para que un computador (hardware) funcione es necesario utilizar programas
(software), los cuales le indican cuál es la tarea que se tiene que hacer. Un
lenguaje de programación es el que se utiliza para escribir dichos programas.
Posteriormente estos se introducirán en la memoria del computador y éste último
ejecutará todas las operaciones que se incluyen.
THE BOOP´s Página 27
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Los lenguajes de programación constan de:
Un conjunto de símbolos y un conjunto de reglas válidas para componerlos, de
forma que formen un mensaje con significado para el computador.
La principal función de un lenguaje de programación es proporcionar
instrucciones al sistema de la computadora para que pueda realizar una actividad
de procesamiento.
La programación incluye la traducción de lo que quiere lograr un usuario a un
código que pueda comprender y ejecutar la computadora.
Es el modo de expresión que nos permite dar una serie de instrucciones al
ordenador en un formato lo más parecido al humano.
Hay que distinguir dos partes en el lenguaje de programación, lo que se denomina
sintaxis del lenguaje y la semántica. Por sintaxis entendemos el conjunto de las
construcciones del lenguaje que consideramos correctas en cuanto a su forma,
mientras que la semántica es ese mismo conjunto de construcciones que
consideramos correctas en cuanto a su significado.
La manera de realizar una buena sintaxis en un lenguaje de programación es
deduciendo propiedades a partir de la hipótesis, es decir, utilizando la lógica y
teniendo en cuenta que la lógica de los programas es un ampliación o desarrollo
de la lógica de predicados clásica. En lenguajes las formas lógicas más utilizadas
han sido: el cálculo lógico de Hoare, la lógica algorítmica, la lógica dinámica y la
lógica temporal.
Si el significado o semántica del programa, es una secuencia de cálculo nos
encontramos frente a la semántica operacional. Si por el contrario el significado de
un programa es el objeto matemático que esa construcción denota, estamos ante
una semántica denotacional. Por último, cuando los modelos que utilizamos para
definir el significado de un programa se basan en construcciones algebraicas,
estamos frente a la semántica algebraica. Por lo tanto estas son las tres formas
utilizadas para construir un lenguaje de programación.
El lenguaje tipo maquina fue el primero que se creó. Este está basado en la
combinación de un código binario (0 y 1). Estos programas solo podían utilizarse
THE BOOP´s Página 28
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
en la maquina que habían sido creados, sus errores de sintaxis eran difíciles de
corregir y solo unos pocos sabían utilizarlos.
Después surgen los lenguajes simbólicos que se basan en la aplicación de una
serie de reglas mnemotécnicas para identificar los órdenes. Los símbolos
empleados salen del inglés. Estos programas no son comprendidos por la
maquina por lo que hay que traducirlos en lenguaje maquina. Surgiendo de ahí
los lenguajes ensamblados.
El lenguaje ensamblador sustituye cada orden del lenguaje maquina por un
símbolo o una palabra anglosajona, dando lugar a otro programación el mismo
número de instrucciones.
Pero en la programación con este tipo de lenguajes se vio que había una enorme
cantidad de operaciones que había que hacer de forma reiterada al confeccionar
un programa por lo que se pensó en desarrollar un lenguaje que incluyera unas
macro estructuras que englobaran a todas las operaciones reiterativas, naciendo
así los lenguajes compilados. Estos lenguajes traducen una instrucción simbólica y
pueden representar a varias órdenes en el código maquina.
Otro tipo de lenguaje que surge es el lenguaje interpretado, el cual a la hora de
ejecutar instrucciones en un programa va leyendo línea por línea y dando las
equivalencias de las instrucciones en lenguaje simbólico a instrucciones maquina.
Se puede decir que los lenguajes de programación pueden ser de tres clases:
Lenguaje de alto nivel
Lenguaje tipo maquina
Lenguaje de bajo nivel
El lenguaje de bajo nivel es también llamado ensamblador. El tipo maquina es el
binario. El lenguaje de alto nivel es el que más se asemeja al humano.
Dentro del lenguaje de alto nivel podemos encontrar varios grupos:
Para la enseñanza, BASIC y PASCAL
Científico, ALGOL, FORTRAN, APL
Gestión comercial, COBOL
THE BOOP´s Página 29
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
4GL o de 4° Generación, son una serie de lenguajes que se alejan cada vez
mas del lenguaje máquina para acercarse cada vez más al lenguaje natural.
Por esta razón son los más usados al crear software de bases de datos.
Entre otros existen el ADAVAS y el NATURAL
5GL, son los lenguajes utilizados en inteligencia artificial y son casi iguales
al lenguaje humano, como el LISP.
3.4.1 PROGRAMA
Definición
Se define como un conjunto de instrucciones en secuencia que, aplicado a un
conjunto de datos, y ejecutado por un ordenador, permite resolver un problema.
Los elementos a tratar por el ordenador son los datos, que serán introducidos
desde un medio externo hasta la memoria interna del ordenador, donde se
almacenan para su posterior proceso por parte del programa. Como consecuencia
de ello se obtienen resultados.
Componentes de un programa
La información que maneja el ordenador está compuesto básicamente de datos e
instrucciones. Los datos constituyen la parte de la información que procesa e
programa en función de las instrucciones especificadas. Las instrucciones indican
las acciones a realizar por el ordenador.
3.4.2 FASE DE CREACIÓN DE UN PROGRAMA
Esta fase comprende desde el planteamiento del problema hasta la codificación de
un algoritmo que lo resuelve, en un lenguaje de programación correcto.
Las etapas de esta fase generan una documentación que se engloba en un
documento denominado cuaderno de carga. Sus etapas son:
THE BOOP´s Página 30
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
FASE DE CONSTRUCCIÓN DEL PROGRAMA
Planteamiento del problema: También llamada definición del problema.
Aquí se determina cual es la situación de partida, el conjunto de datos de
entrada, que resultados desean obtenerse y donde deben registrarse.
Todos estos estudios se incluyen en la documentación del programa.
Análisis del problema: Se divide el problema en apartados para revisar las
condiciones de problemas.
Diseño y codificación del algoritmo: El diseño de algoritmo consiste en
formular este utilizando alguna de las herramientas previstas para ello. La
información citada se escribe en un pseucódigo o mediante un
organigrama. La codificación del programa es la traducción del algoritmo al
lenguaje de programación elegido, dando como resultado el programa
codificado.
FASE DE EDICIÓN Y PRUEBAS
La edición consiste en introducir el programa ya codificado en un fichero,
mediante un editor de textos propio del lenguaje (utilidades suministradas
generalmente con el lenguaje de programación ajeno a él El resultado se
denomina programa fuente.
En esta fase se proponen las pruebas que se llevaran a cabo durante la puesta a
punto de cada uno de los programas desarrollados.
FASE DE DOCUMENTACIÓN
A los documentos del programa ya obtenidos se añaden los formularios de datos
específicos del programa y las instrucciones de operación y grabación de datos
relativos a este.
THE BOOP´s Página 31
1010101010101010100
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
FASE DE EXPLOTACIÓN
Consiste en el normal funcionamiento y aprovechamiento del programa para
cumplir los objetivos para el que fue escrito.
3.5LENGUAJE MAQUINA
El lenguaje maquina es el lenguaje de primera generación. Es un lenguajes
natural de una computador en particular y está definido por el diseño de
hardware de dicha computadora. Por lo general los lenguajes maquinas
consisten en cadenas de números [que finalmente se
reducen a unos (1) y ceros (0) que instruyen a las
computadoras para realizar sus operaciones más
elementales una por una. Los lenguajes maquina son independientes de las
maquinas ( es decir un lenguaje maquina en particular solo se puede usar en
la computadora). Dichos lenguajes son difíciles de comprender para los
humanos.
Este era una serie de 1 (unos) y 0 (ceros) que la CPU podía interpretar y
ejecutar . El lenguaje maquina es importante por quien es el único lenguaje que
la computadora entiende. Sin embargo el lenguaje maquina es difícil de usar y
los científicos en computación desarrollaron lenguajes de programación que se
parecen más a la comunicación humana.
Lenguaje de máquina de una computadora consta de cadenas de números
binarios (ceros y unos) y es el único que "entienden" directamente los
procesadores. Todas las instrucciones preparadas en cualquier lenguaje de
máquina tienen por lo menos dos partes. La primera es el comando u operación,
que dice a la computadora cuál es la función que va a realizar. Todas las
THE BOOP´s Página 32
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
computadoras tienen un código de operación para cada una de sus funciones. La
segunda parte de la instrucción es el operando, que indica a la computadora
donde hallar o almacenar los datos y otras instrucciones que se van a manipular;
el número de operandos de una instrucción varía en las distintas computadoras.
En el principio de la computación este era el lenguaje que tenía que "hablar" el
ser humano con la computadora y consistía en insertar en un tablero miles de
conexiones y alambres y encender y apagar interruptores.
Aunque en la actualidad ya no se emplea, es importante reconocer que ya no es
necesario que nos comuniquemos en este lenguaje de "unos" y "ceros", pero es el
que internamente una computadora reconoce o "habla".
El programa se escribe en lenguaje escogido por el programador y se traduce
a lenguaje maquina antes de ejecutarse. El programa escrito por el
programador se denomina programa fuente y la versión en lenguaje máquina se
denomina programa objeto.
El software de sistemas que traduce el programa fuente al programa objeto se
denomina traductor
Se denomina lenguaje máquina a la serie de datos que la parte física de la
computadora o hardware, es capaz de interpretar.
Una computadora digital o, mejor dicho, su parte física, sólo distingue datos de
tipo binario, es decir, constituidos por dos únicos valores a los que se denomina
valor 0 y valor 1 y que, físicamente, se materializan con tensiones comprendidas
entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos
que contengan una información se utilizan una serie de unos y ceros cuyo
conjunto indica dicha información.
La información que hace que el hardware de la computadora realice una
determinada actividad de llama instrucción. Por consiguiente una instrucción es un
THE BOOP´s Página 33
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
conjunto de unos y ceros. Las instrucciones así formadas equivalen a acciones
elementales de la máquina, por lo que al conjunto de dichas instrucciones que son
interpretadas directamente por la máquina se denomina lenguaje máquina.
El lenguaje máquina fue el primero que empleo el hombre para la programación
de las primeras computadoras. Una instrucción en lenguaje máquina puede
representarse de la siguiente forma:
011011001010010011110110.
Esta secuencia es fácilmente ejecutada por la computadora, pero es de difícil
interpretación, siendo aun más difícil la interpretación de un programa (conjunto de
instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean
frecuentes y la corrección de los mismos costosa, cuando no imposible, al igual
que la verificación y modificación de los programas.
La anterior secuencia de dígitos binarios (bits) puede indicar a la computadora
que:
<<Traslade el contenido de la posición de memoria X a la posición de memoria Y.
>>
Si lo vemos escrito de esta forma, lo entenderemos fácilmente, ya que está en
nuestro lenguaje natural, pero la máquina elemental será incapaz de entender
nada. Vemos, pues, que la forma de indicar a la máquina lo que debe hacer es
totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben
emplearse sistemas de traducción de una forma a otra.
Ya se ha dicho que en un principio el programador empleaba directamente el
lenguaje máquina. En este caso el traductor era el programador; pero vimos
también los problemas que esto causaba.
Con la práctica en el manejo de la máquina se cayó en la cuenta de que se podría
utilizar la propia máquina para ayudar en la traducción de estos programas. Es
THE BOOP´s Página 34
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
decir, que si a una máquina elemental se le dotaba de un programa, también
elemental, que tradujera un número determinado de caracteres de caracteres
alfabéticos en una secuencia de unos y ceros, se podría escribir un programa
constituido por una secuencia de grupos de caracteres alfabéticos, en la que cada
uno de los grupos indicaría una acción a realizar por el ordenador y, una vez
escrito el programa, sería la propia máquina la que pasaría los grupos de
caracteres a bits.
Las ventajas de esto son evidentes, ya que para el hombre resulta más fácil
manipular grupos de caracteres y la traducción se haría de manera automática.
Por ejemplo, se podría escribir:
TRASLADAR 11010110, 00011101.
Esto indicaría que el contenido de la posición 11010110 había que pasarlo a la
posición 00011101 si se sabe que al grupo alfabético TRASLADAR le corresponde
la secuencia de bits 11110101. La máquina traduciría la anterior instrucción como:
11110101 11010110 00011101
Al grupo alfabético se le denomina mnemotécnico, y existirá un mnemotécnico por
cada instrucción. Se le da este nombre porque sirve para recordar con mayor
facilidad el conjunto de instrucciones de una determinada máquina. De esta forma
aparecieron los lenguajes ensambladores (Assembler, en inglés). Poco a poco,
con el avance de la programación (Software), estas primeras y sencillas ayudas se
fueron haciendo más complejas, permitiendo que, además de los mnemotécnicos
correspondientes a la operación a realizar, se pudieran emplear otros para indicar,
por ejemplo, los operandos. La anterior instrucción se podría escribir de la
siguiente forma:
La programación en lenguaje maquina era demasiada lenta y tediosa para la
mayoría de los programadores. En vez de utilizar las cadenas de números que
las computadoras podían entender directamente los programadores
THE BOOP´s Página 35
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
empezaron a utilizar abreviaturas del inglés para representar las operaciones
elementales. Estas abreviaturas fueron la base de los lenguajes ensambladores
Los lenguajes maquina se llaman de bajo nivel porque están muy cercanos al
hardware del ordenador. Es necesario conocer a fondo la arquitectura de la
máquina para la que se va a programar.
En la primera generación se utilizó fue el lenguaje máquina, que consiste en
un conjunto de instrucciones en binario, es decir, con ceros y unos, con los cuales
se indica al ordenador qué hacer. Este lenguaje es muy complicado y la
posibilidad de cometer errores es muy alta, por lo que ya no se utiliza.
El lenguaje maquina se considera un lenguaje de nivel bajo ya que solo
maneja un lenguaje binario pues no existe un programa de codificación menos
complicado.
Para solventar estas dificultades apareció el lenguaje ensamblador, que consiste
en asignar una abreviatura a cada instrucción en binario, de forma que sea más
fácil recordarla y más difícil equivocarse. Sin embargo, con este lenguaje sigue
siendo necesario conocer muy bien el hardware del ordenador.
3.6 TRADUCTOR DE LENGUAJES
Par que un lenguaje de programación sea útil debe de tener un traductor es decir
un programa, que acepta a otros programas escritos en el lenguaje en cuestión y
que, los ejecuta directamente, o los transforma en una forma adecuada para su
ejecución. Un traductor que ejecuta un programa directamente se conoce como
intérprete y un traductor que produce un programa equivalente a una forma
adecuada para su ejecución se conoce como compilador.
THE BOOP´s Página 36
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.6.1 Traductores
Los procesadores de lenguajes son aquellos programas destinados a trabajar
sobre una entrada, por la forma como ha sido elaborada, pertenece a un lenguaje
particular. Los procesadores de lenguajes se clasifican como traductores o
interpretes. El traductor es un programa que recibe una entrada escrita en un
lenguaje (el lenguaje fuente) a una salida perteneciente a otro lenguaje (el
lenguaje objeto).
Un intérprete, no lleva a cabo tal transformación, en su lugar obtiene los resultados
conforme se van analizando las entradas. Los traductores son clasificados en
compiladores, ensambladores y preprocesadores.
La interpretación es un proceso que consta de un paso, en donde tanto el
programa como la entrada le son dados al intérprete y se obtiene una salida.
.Un intérprete se puede considerar como un simulador para maquina
cuyo”lenguaje de máquina” es el lenguaje que se está traduciendo.
THE BOOP´s Página 37
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.6.2 Compilador
Es cualquier programa que toma como entrada un texto escrito en un lenguaje,
llamado fuente y da como salida otro texto en un lenguaje denominado objeto.
Este programa objetivo puede ser entonces ejecutado, si esta en forma adecuada
para la ejecución directa (es decir, en lenguaje de maquina). Lo más común es
que el lenguaje objetivo sea un lenguaje ensamblador y el programa objetivo deba
ser traducido por un ensamblador en un programa objeto y posteriormente ligado
con otros programas objeto y cargado en localizaciones de memoria apropiadas
antes de que pueda ser ejecutado. Algunas veces el lenguaje objetivo es incluso,
otro lenguaje de programación, en cuyo caso deberá utilizarse un compilador para
dicho lenguaje que pueda obtener un lenguaje objeto ejecutable.
El proceso de compilación puede ejecutarse de la siguiente forma:
THE BOOP´s Página 38
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
También es posible tener traductores intermedios entre intérpretes y compiladores:
un traductor puede traducir un programa frente a un lenguaje intermedio y
después interpretarlo. Estos traductores podrían llamarse pseudointerpretes, ya
que ejecutan el programa sin producir un programa frente antes de que se inicie la
ejecución.
Tanto los compiladores como los intérpretes deben de llevar a cabo operaciones
similares al traducir un programa fuerte. Primero un analizador léxico, es decir un
rastreador, debe convertir la representación textual del programa como una
secuencia de caracteres en una forma más fácil de procesar, usualmente
agrupando caracteres en tokens que representan identidades básicas del
lenguaje, como palabras clave, identificadores y constantes.
El analizador sintáctico o analizador gramatical debe terminar la estructura de la
secuencia de los tokens proporcionados por el rastreador. Finalmente un
analizador semántico debe terminar lo suficiente del significado de un programa
objetivo.
Un lenguaje pudiera también requerir de un procesador, que es ejecutado antes d
la traducción para transformar un programa en alguna forma adecuada para su
traducción.
THE BOOP´s Página 39
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Las propiedades de un lenguaje de programación que pueden ser determinadas
antes de la ejecución se conocen como propiedades dinámicas. Esta distinción no
resulta muy útil para los intérpretes, pero sí lo es para los compiladores: un
compilador puede utilizar solo las propiedades estáticas d un lenguaje. Las
propiedades estáticas típicas de un lenguaje son el léxico y su estructura
sintáctica. En algunos lenguajes, como en C y en Ada también son estáticas
algunas propiedades semánticas importantes: un ejemplo significativo son los
tipos de datos de las variables.
Un lenguaje de programación puede ser diseñado para ser más adecuado para la
interpretación o para la compilación. Por ejemplo un lenguaje que sea más
dinámico, es decir, que tenga menos propiedades estáticas, es, más adecuado
para la interpretación y es más probable que sea interpretado. Por otra parte un
lenguaje con una poderosa estructura estática, lo más probable es que sea
compilado.
También pueden existir situaciones en las que se prefiera un intérprete en lugar d
un compilador. Los intérpretes usualmente tienen un modo interactivo, de modo
que el usuario pueda introducir directamente programas desde una terminal y
suministrar también entrada al programa y recibir salida solamente mediante el
intérprete. Por ejemplo un intérprete Scheme puede utilizarse para obtener
entrada inmediata a un procedimiento tal y como sigue:
> (gcd 8 18); ; calls gcd with the values 8 and 18
2 ; ; the interpreter prints the returnet
En contraste, en un lenguaje complicado como C, Ada, o Java, el programador
deberá escribir a mano la entrada y salida interactiva.
Una propiedad importante de un traductor de lenguajes es su respuesta a errores
contenidos en un programa fuente. Lo ideal sería que un traductor debería intentar
corregir
THE BOOP´s Página 40
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Un programa C completo con una función gcd.
THE BOOP´s Página 41
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.6.3 Ensamblador
Es el programa encargado de llevar a cabo un proceso denominado de ensamble
o ensamblado, este proceso consiste en que a partir de un lenguaje máquina, este
sea utilizado en lenguaje ensamblador:
· La integración de los diversos módulos que conforman al programa
La resolución de las direcciones de memoria designadas en el área de datos para
el almacenamiento de variables, constantes y estructuras complejas.
· La identificación de las direcciones de memoria en la sección del código
correspondientes a los puntos de entrada en saltos condicionales o
incondicionales junto con los puntos de arranque de las subrutinas
· La resolución de los diversos llamados a los servicios o rutinas del sistema
operativo código dinámico y bibliotecas de tiempo de ejecución
· Las especificaciones de la cantidad de memoria destinadas para las áreas de
datos, el código, la pila, la cantidad o monto otorgados para su ejecución
· La incorporación de datos y código necesarios para la carga de un programa
para su ejecución.
Históricamente con la escasez de memoria de las primeras computadoras, se
puso de moda el uso de interpretes frente a los compiladores, pues el programa
fuente sin traducir y el interprete juntos daban una ocupación de memoria menor
que la resultante de los compiladores. Por ello los primeros ordenadores iban
siempre acompañados de un intérprete Basic (XT, Commodore, Spectrum).
La mejor información sobre los errores se daba por parte del compilador así como
una mayor velocidad de ejecución del código resultante hizo que poco a poco se
impusieran los compiladores. Hoy en día y con el problema de memoria resuelto,
se puede hablar de un gran predominio de los compiladores frente a los
THE BOOP´s Página 42
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
intérpretes, aunque interpretes como los incluidos en los navegadores de Java son
la gran excepción.
La diferencia entre un compilador y un traductor es: En el compilador se recibe un
programa escrito en un lenguaje de alto nivel, medio o bajo y lo transforma a su
equivalente en un lenguaje ensamblador e inclusive el lenguaje máquina pero sin
ejecutar el programa. Un compilador en un traductor la forma de cómo llevará la
traducción es el objetivo central en el diseño de compilador.
Ventajas de compilador frente a un intérprete
· Se compila una vez, se ejecuta n−veces
· En bucles, la compilación genera código equivalente al bucle pero un
interpretándolo se traduce tantas veces una línea como veces se repite el bucle
El compilador tiene una visión global del programa, por lo que la información de
mensajes de errores es más detallada.
Ventajas de un intérprete frente a compilador
· Un intérprete necesita menos memoria que un compilador
· Permite una mayor interactividad con el código en tiempo de desarrollo.
Un compilador, no es programa que funciona de manera aislada sino que necesita
otro programa para conseguir su objetivo, obtener un programa ejecutable a partir
de un programa fuente en un lenguaje de alto nivel.
3.6.4 Clasificación de compiladores
El programa compilador traduce las instrucciones en un lenguaje de alto nivel a
instrucciones que la computadora pueda interpretar y ejecutar. Para cada lenguaje
de programación se requiere un compilador separado, el compilador traduce todo
el programa antes de ejecutarlo.
THE BOOP´s Página 43
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
En otras palabras un compilador traduce programas insertados en la memoria por
el sistema operativo para convertirlos en pulsaciones electrónicas ejecutables
(lenguaje máquina). Los compiladores pueden ser de:
· Una sola pasada: Examina el código fuente una vez, generando el código o
programa objeto.
Pasadas múltiples: Requiere pasos intermedios para producir un código en otro
lenguaje y una pasada final para producir y optimizar el código producido durante
los pasos anteriores.
· Optimización: Lee un código fuente, lo analiza y descubre errores potenciales sin
ejecutar el programa.
Compiladores incrementales: Generan un código objeto, instrucción por
instrucción, cuando el usuario teclea cada orden individual. El otro tipo de
compiladores requiere que todos los enunciados o instrucciones se compilen
conjuntamente.
· Ensamblador: Es un lenguaje fuente y posee una estructura sencilla.
Compilador cruzado: Se genera código en un lenguaje objeto para una máquina
diferente de la que se está utilizando para compilar. U compilador cruzado nos
permite programar, por ejemplo en Windows para un ambiente como Linux.
· Compiladores con montador: Ese tipo de compilador compila distintos módulos
de forma independiente y después es capaz de enlazarlos.
· Auto compilador: Compilador que está escrito en el mismo lenguaje que se va a
compilar, evidentemente no
Se puede ejecutar la primera vez. Sirve para hacer ampliaciones de lenguaje,
mejorar el código generado,
etc.
· Meta compilador: Es sinónimo de compilador de compiladores y se refiere a un
programa que recibe como entrada las especificaciones de lenguaje, para el que
desea obtener un compilador y genera como salida un compilador de ese
lenguaje.
· Descompilador: Es un programa que acepta como entrada código máquina y lo
traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.
THE BOOP´s Página 44
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Funciones de un compilador
Agrandes rasgos un compilador que lee un programa escrito en un lenguaje, el
lenguaje fuente y lo traduce a un programa equivalente en otro lenguaje, el
lenguaje objeto. Como parte importante de este proceso de traducción, el
compilador informa al usuario de la presencia de errores en el programa fuente. A
primera vista, la diversidad de compiladores puede parecer abrumadora. Hay
miles de lenguajes fuente, desde los lenguajes tradicionales como FORTRAN o
PASCAL hasta los lenguajes especializados que han surgido en todas las áreas
de aplicación en la informática.
Un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje
máquina de cualquier computadora entre un microprocesador y un
supercomputador. Se pueden construir compiladores para una gran diversidad de
lenguajes fuente y máquina utilizando las mismas técnicas básicas. Los primeros
compiladores de los años 50's, estaban relacionados con la traducción de
formulas aritméticas a código de máquina. En las 50's se considero a los
compiladores como programas notablemente difíciles de escribir. El primer
compilador FORTRAN necesito para su implantación 18 años (Backus Fortran).
Partes en las que trabaja un compilador
Conceptualmente FORTRAN diseño un compilador que trabajaba en fases. Es
decir, las fases de un compilador transforman el programa fuente de una
representación a otra, en la práctica se agrupan fases y las representaciones
intermedias entre las fases no necesitan ser construidas explícitamente.
THE BOOP´s Página 45
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Análisis léxico
Es la primera fase de un compilador. Su principal función consiste en leer los
caracteres de entrada y elaborar como salida una secuencia de componentes
léxicos que utiliza el analizador sintáctico para hacer el análisis.
Aspectos del análisis léxico
Hay varias razones para dividir en fases el análisis de la compilación. El análisis
léxico y análisis sintáctico:
Un diseño sencillo es la consideración más importante, separar a estos dos tipos
de análisis a menudo permite simplificar una u otra de dichas fases.
· Se mejora la eficiencia del compilador además de permitir construir un
procesador especializado y potencialmente más eficiente para esa función. Con
algunas técnicas de manejo de buffers para la lectura de caracteres de entrada y
procesamiento de componentes léxicos se pueden mejorar significativamente el
rendimiento de un compilador.
Errores léxicos
Son pocos los errores simplemente en el nivel léxico ya que tiene una visión muy
restringida de un programa fuente. El analizador léxico debe devolver el
componente léxico de un identificador y dejar a otra fase se ocupe de los errores.
Suponga que una situación en la cual el analizador léxico no puede continuar
porque ninguno de los patrones concuerda con un prefijo de la entrada. Tal vez la
estrategia de recuperación más sencilla sea recuperación EN MODO PANICO
(este método de recuperación es donde se borra caracteres sucesivos de la
THE BOOP´s Página 46
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
entrada hasta que el analizador léxico pueda encontrar un componente léxico bien
formado).
Administrador de entradas
Utilizar 2 buffer de entrada resulta útil cuando es necesario un pre−análisis en la
entrada para identificar los componentes léxicos después se introducen algunas
técnicas básicas para encontrar la velocidad del analizador léxico, como es el uso
de centinelas que sirven para marcar el final de buffer, hay tres métodos generales
de implantar un léxico:
Utilizar un generador de analizadores léxicos, como el compilador LEX para
producir el analizador léxico a partir de una especificación basada en expresiones
regulares, en este caso el generador proporciona rutinas para leer la entrada y
manejarla con buffers.
Escribir el analizador léxico en un lenguaje convencional de programación de
sistemas utilizando las posibilidades de entrada y salida de este lenguaje para leer
la entrada.
· Escribir el analizador léxico en lenguaje ensamblador y manejar explícitamente la
lectura de la entrada.
Parejas de buffers
Se utiliza un buffer dividido en dos mitades de n−caracteres cada una.
Texto lenguaje fuente
Traductor
Texto lenguaje objeto
Programa objeto
Compilador
Programa fuente
THE BOOP´s Página 47
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Mensajes de error
Programa fuente
Analizador léxico
Analizador sintáctico
Análisis semántico
Generación de código intermedio
Optimización de código
Generador de código
Programa objeto
Manejo de errores
Manejo de tabla de símbolos
Analizador léxico
Analizador sintáctico
Tabla de símbolos
Componente léxico
Obtén el siguiente componente léxico
Programa fuente
Buffer = espacio en memoria
3.7 ELEMENTOS DE PROGRAMACIÓN
En los temas anteriores ya definimos un
programa como un par formado por algoritmos y
estructuras de datos. En este tema vamos a
describir los elementos que constituyen a estos
dos componentes de un programa bajo el
enfoque de los lenguajes estructurados.
Se llama “dato” a la información que procesan las
sentencias de un programa. En programación
estructurada, todos los datos que maneje nuestro
programa deben especificarse explícitamente indicando la clase de información
THE BOOP´s Página 48
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
que va almacenar. A la especificación de los atributos de un dato en un programa,
siguiendo la sintaxis concreta de un lenguaje, se le denomina “declaración”.
Los atributos que se especifican de un dato son los siguientes; hay que
especificar que no todos los atributos son especificados por el programador si no
que algunos van implícitos en la declaración.
Señalaremos con un (*) los atributos que se
especifica formalmente el programador.
Nombre (*): Es una etiqueta formada por
caracteres alfanuméricos que identifica un
dato. La referencia al dato en el programa se
hace usualmente a través del nombre. El
nombre no es suficiente para referenciar una variable.
Espacio de memoria: Es el lugar que se le asigna en la memoria RAM para
contener al valor de la variable en el momento de la declaración. El tamaño
de este espacio viene determinado por el tipo de dato y se le llama
normalmente celda. El espacio de memoria es único y diferente para cada
dato y es la característica que lo identifica unívocamente.
Valor (*): Normalmente el valor de un dato suele asignarse en la
declaración del mismo. A este acto se le llama “Inicialización del dato”. Es
normalmente incorrecto utilizar en el programa un dato no inicializado ya
que contiene como valor algo desconocido.
Tipo (*): La naturaleza de los datos que
manejamos en un computador es
matemática, lógica o simbólica; de este
modo, hay datos numéricos, lógicos y
caracteres que tienen un significado en un
THE BOOP´s Página 49
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
lenguaje. Los datos numéricos se caracterizan por su forma de
escribirlos .Cualquier dato tiene una representación y unas operaciones que
podemos hacer sobre ellos (sumar, restar, etc.).
Ámbito: Es la región del código de un programa sobre la cual un dato está
definido. Los datos cuyos ámbitos sea todo el código de un programa se
denominan “datos globales”. Su declaración se realiza en la cabecera del
programa. Los
datos con una
región de validez
menor se
denominan
“datos locales”.
El ámbito de una
variable local es
el código del
subprograma
(función o
procedimiento) donde está definida, y su declaración como variable está en
la cabecera del código correspondiente al subprograma. El ámbito de un
dato implementa la idea de encapsulación de los datos dentro de los
módulos.
Dirección: Todo dato de tipo simple tiene una dirección que es la dirección
del primer byte que forma la celda de memoria preparada para contener el
valor del dato. Esto es cierto al menos mientras la sentencia que se ejecuta
pertenece al conjunto de sentencias del ámbito de dicha variable.
Persistencia: Es el tiempo que una variable está presente en la memoria
respecto del tiempo de ejecución del programa. Así hay variables que sólo
existen mientras está en ejecución la función que las declaró y otras como
THE BOOP´s Página 50
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
las globales o las locales estáticas que existen mientas el programa está en
ejecución.
3.7.1 Tipos de Datos.
El tipo de un dato es el conjunto de valores que puede tomar durante el programa.
Si se le intenta dar un valor fuera del conjunto se producirá un error.
Existen gran variedad y cantidad de tipos de datos, así como también
clasificaciones para los tipos de datos. A continuación se tiene una de las posibles
clasificaciones:
Dinámicos
Estáticos
o El tipo cadena
o Estructurados
o Simples
Ordinales
THE BOOP´s Página 51
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
3.7.1.1 Tipos estáticos
Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se
tratarán debido a su complejidad.
Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en
memoria no puede variar durante la ejecución del programa. Es decir, una vez
declarada una variable de un tipo determinado, a ésta se le asigna un trozo de
memoria fijo, y este trozo no se podrá aumentar ni disminuir.
3.7.1.2 Tipos Dinámicos.
Dentro de esta categoría entra solamente el tipo puntero. Este tipo te permite tener
un mayor control sobre la gestión de memoria en tus programas. Con ellos puedes
manejar el tamaño de tus variables en tiempo de ejecución, o sea, cuando el
programa se está ejecutando.
3.7.1.3 Tipos simples
Los tipos simples más básicos son: entero, lógico, carácter y real. Y la mayoría de
los lenguajes de programación los soportan, no como
ocurre con los estructurados que pueden variar de un
lenguaje a otro.
El tipo integer (entero)
THE BOOP´s Página 52
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
El tipo de dato “entero” es de tipo simple, y dentro de
estos, es ordinal. Al declarar una variable de tipo entero,
se crea una variable numérica que puede tomar valores
positivos o negativos, y sin parte decimal.
Este tipo de variables, se pueden utilizar en
asignaciones, comparaciones, expresiones aritméticas,
etc. Algunos de los papeles más comunes que
desarrollan son:
Controlar un bucle
Usarlas como contador, incrementando su valor cuando sucede algo
Realizar operaciones enteras, es decir, sin parte decimal.
El tipo boolean (lógico)
El tipo de datos lógico (boolean) es el que permite usar variables que disponen
sólo de dos posibles valores: cierto o falso. Debido a esto,
su utilidad no es otra que variables de chequeo. Nos
sirven para mantener el estado de un objeto mediante dos
valores:
si/no
cierto/falso
funciona/no funciona
on/off
etc.
THE BOOP´s Página 53
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
El tipo real (float)
El tipo de datos real es el que se corresponde con los
números reales. Este es un tipo importante para los
cálculos. Por ejemplo en los estadísticos, ya que se
caracterizan por tratar fundamentalmente con valores
decimales.
Por ejemplo: 3.1416
Los tipos char y string (carácter y cadena)
Con el tipo carácter puedes tener objetos que representen una letra, y con el tipo
string una cadena de caracteres tales como letras, números y signos de
puntuación.
Por ejemplo, puedes tener en una variable tu
nombre (“Diana”), que sería de tipo “string”, y
una “A” seria de tipo “char”.
3.7.1.4 Tipos estructurados
THE BOOP´s Página 54
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Mientras que una variable de un tipo
simple sólo referencia a un
elemento, los estructurados se
refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son
muy variadas: tenemos colecciones
ordenadas que se representan
mediante el tipo array, colecciones
sin orden mediante el tipo conjunto, e
incluso colecciones que contienen otros tipos, son los llamados registros.
3.7.1.5 Tipos ordinales
Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se
dice que es ordinal porque el conjunto
de valores que representa se puede
contar, es decir, podemos establecer
una relación uno a uno entre sus
elementos y el conjunto de los
números naturales.
Dentro de los tipos simples ordinales,
los más importantes son:
El tipo entero (integer)
El tipo lógico (boolean)
THE BOOP´s Página 55
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
El tipo carácter (char)
3.7.2 OPERADORES LÓGICOS.
Son aquellos que sirven para operar términos numéricos. Estos operadores
podemos clasificarlos a su vez como:
UNARIOS
BINARIOS
Los operadores UNARIOS son aquellos que
trabajan con UN OPERANDO.
Pascal permite el manejo de un operador
unario llamado:
MENOS UNARIO
Este operador denota la negación del
operando, y se representa por medio del signo
menos (-) colocado antes del operando.
Por ejemplo:
Si x tiene asignado el valor 100, -x dará como resultado -100; esto es que el
resultado es el inverso aditivo del operando.
Los operadores BINARIOS, son los que combinan DOS OPERANDOS, dando
como resultado un valor numérico cuyo tipo será igual al mayor de los tipos que
tengan los operandos.
La siguiente tabla muestra los símbolos de los operadores binarios:
THE BOOP´s Página 56
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Operador Operación Resultado
+ +Suma suma de a y b
- Resta Diferencia de a y b
* Multiplicación Producto de a por b
/ División Cociente de a por b
Div División entera Cociente entero de a por
b
Mod Módulo Resto de a por b
Shl Desplazamiento a la
izquierda
Desplazar a la izquierda b
bits
Shr Desplazamiento a la
derecha
Desplazar a la derecha b
bits
3.8 PROGRAMACIÓN ESTRUCTURADA
INTRODUCCION
THE BOOP´s Página 57
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
ESTRUCTURAS DE CONTROL
Por lo general, las instrucciones dentro de un programa se ejecutan una a una en
el orden que está escrito. A esto se le llama ejecución secuencial.
Durante la década de los sesentas, se hizo claro que el uso indiscriminado de
transferencias de control era el origen de un gran número de dificultades que
experimentaban los grupos de desarrollo del software. El dedo de la culpa apunto
hacia la instrucción goto, que permite al programador especificar una transferencia
de control a un amplio margen de destinos posibles dentro de un programa. La
idea de “programación estructurada” se convirtió casi en un sinónimo de la
“eliminación del goto”.
Las investigaciones de Bohm y Jacopini demostraron que los programas se
pueden escribir sin instrucción goto alguna. El reto para los programadores de la
época era modificar sus estilos hacia una “programación con menos instrucciones
goto”. No fue sino hasta la década de los sesenta que los profesionales de la
programación comenzaron a tomar en serio a la programación estructurada. Los
resultados fueron impresionantes, los grupos de desarrollo de software reportaron
una reducción en los tiempos de desarrollo, la entrega más oportuna d los
sistemas y el apego más frecuente al presupuesto de los proyectos del software.
La calve de el éxito fue simplemente que los programas producidos mediante
técnicas estructuradas eran más claros, más fáciles de mantener y depurar y
tenían más probabilidades de estar libres de errores desde el principio.
El trabajo de Bohm y jacopini demostró que todos los programas se podían
escribir en términos de solo tres estructuras de control, a saber, la estructura
secuencial. La estructura de selección, y la estructura de repetición. La estructura
de secuencia se encuentra esencialmente dentro de C. La computadora ejecuta
de manera automática las instrucciones en C, en una, en el orden en que están
escritas,
La programación estructurada es una teoría de programación que consiste en
construir programas de fácil comprensión.
THE BOOP´s Página 58
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
La programación estructurada es especialmente útil, cuando se necesitan realizar
correcciones o modificaciones después de haber concluido un programa o
aplicación. Al haberse utilizado la programación estructurada, es mucho más
sencillo entender la codificación del programa, que se habrá hecho en diferentes
secciones.
La programación estructurada se basa en una metodóloga de desarrollo de
programas llamada refinamiento sucesivo: Se plantea una operación como un todo
y se divide en segmentos más sencillos o de menor complejidad. Una vez
terminado todos los segmentos del programa, se procede a unificar las
aplicaciones realizadas por el pool de programadores. Si se ha utilizado
adecuadamente la programación estructurada, esta integración debe ser sencilla y
no presentar problemas al integrar la misma, y de presentar algún problema, será
rápidamente detectable para su corrección.
La representación grafica de la programación estructurada se realiza a través de
diagramas de flujo o flor chart, el cual representa el programa con sus entradas,
procesos y salidas.
La programación estructurada propone segregar los procesos en estructuras lo
más simple posibles, las cuales se conocen como secuencia, selección e
interacción. Ellas están disponibles en todos los lenguajes modernos de
programación imperativa en forma de sentencias. Combinando esquemas
sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil
entendimiento.
La programación estructurada permite la escritura de programas fáciles de leer y
modificar. En un programa estructurado el flujo lógico se gobierna por tres
estructuras de control básicas: secuenciales, repetitivas y selectivas.
3.8.1 Técnicas de Programación.
THE BOOP´s Página 59
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Algunas teorías de la programación se centran en las técnicas de programación
modular y programación estructurada. El diseño de un programa entraña la
descomposición del problema en módulos o partes independientes –
programación modular –, la programación de cada módulo mediante métodos
estructurados – programación estructurada – y su unión posterior.
3.8.1.1 Programación Modular.
En la programación modular un programa se divide en módulos, cada uno de los
cuales ejecuta una única actividad o tarea, y se codifican independientemente de
otros módulos. Cada uno de estos módulos se analiza, codifican y "optimizan" por
separado. Cada programa contiene un módulo llamado programa principal
(módulo controlador) que controla todo lo que sucede. Cuando es necesario, se
transfiere el control a sus módulos de modo que éstos puedan ejecutar sus
funciones. Los módulos son independientes en el sentido en el que ningún módulo
puede tener acceso directo a cualquier otro módulo, excepto el módulo al que
llama y sus propios su módulos.
3.8.1.2 Programación Estructurada.
Se refiere a un conjunto de técnicas que han ido evolucionando. Estas técnicas
aumentan considerablemente la productividad del programa reduciendo el tiempo
requerido para escribir, verificar, depurar y mantener los programas. La
programación estructurada utiliza un número limitado de estructuras de control que
minimizan la complejidad de los problemas y que reducen los errores. Ésta
incorpora entre otros elementos: el
- diseño descendente,
- recursos abstractos
- estructuras básicas.
Recursos abstractos.
THE BOOP´s Página 60
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Consiste en descomponer una determinada acción compleja en términos de un
número de acciones más simples capaces de resolverla.
Diseño descendente.
Consiste en efectuar una relación entre las sucesivas etapas de estructuración.
Es decir, se descompone el problema en etapas o estructuras jerárquicas, de
modo que se puede considerar cada estructura desde dos puntos de vista: lo que
hace y cómo lo hace
3.8.2 Teorema de la programación estructurada.
Se ha demostrado que un programa propio puede ser escrito utilizando solamente
tres tipos de estructuras de control: —secuenciales, selectivas y repetitivas. Un
programa es propio si posee un sólo punto de entrada y uno de salida, si existen
caminos desde el inicio hasta el fin que se pueden seguir y que pasan por todas
las partes del programa, y si todas las instrucciones son ejecutables sin que hayan
bucles infinitos.
Estructura secuencial.
Es aquella en que una acción sigue a otra en secuencia. Las tareas se suceden de
tal modo que la salida de una es la entrada de la siguiente.
Estructura selectiva.
Se utilizan para tomar decisiones lógicas. En éstas se evalúa una condición y en
función del resultado de la misma se realiza una opción u otra. Las condiciones se
especifican usando expresiones lógicas. En pseudocódigo estas palabras son ir,
ten, ese. Las estructuras selectivas pueden ser: – simples, dobles o múltiples.
- Selectivas simples.
THE BOOP´s Página 61
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Ejecuta una determinada acción cuando se cumple una determinada condición. La
selección ir – ten (si – entonces) evalúa la condición y si es verdadera ejecuta la
acción de lo contrario no hará nada.
- Selectiva doble.
Permite elegir entre dos opciones posibles en función del cumplimiento o no de
una determinada condición. Si la condición es verdadera, se ejecuta la acción 1, si
es falsa, se ejecuta la acción 2. La selectiva en pseudocódigo es if – ten – else.
- Selectivas múltiples.
La estructura de selección múltiple (case en pseudocódigo) evaluará una
expresión que podrá tomar n valores distintos 1, 2, 3, 4,…..n. Según sea el valor
en la condición, se realizará una de las n acciones.
Estructuras repetitivas.
Las estructuras que repiten una secuencia de instrucciones un número
determinado de veces se llaman bucles, e iteración al hecho de repetir la
ejecución de una secuencia de acciones.
Estructura mientras (while).
La estructura repetitiva mientras es aquella en que el cuerpo del bucle se repite
mientras se cumple una determinada condición. Cuando se ejecuta esta
instrucción, la primera cosa que sucede es que se evalúa la condición. Si la
expresión es verdadera, entonces se ejecuta el cuerpo del bucle. Este proceso se
repite una y otra vez mientras la condición sea verdadera.
Estructura repetir hasta (do/while).
THE BOOP´s Página 62
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Se ejecuta hasta que se cumpla una condición determinada que se comprueba al
final del bucle, esto permite que la iteración se ejecute al menos una vez antes de
que la condición sea evaluada.
Estructuras desde/para (for).
Se utilizan las estructuras for cuando se conocen con certeza el número de veces
que desea repetir un bucle, es decir, cuando es un número fijo de veces.
Estructura de decisión anidada.
Se tiene una estructura de decisión anidada cuando una estructura if – ten – else
contiene otra dentro de sí, y ésta a su vez contiene otra dentro de sí. Estas
estructuras contendrán varios si - entonces dentro de otros. Debido a que este tipo
de estructuras pueden ser confusas, se implementa la identación para evitar
perder el hilo de dónde comienza y dónde termina cada estructura.
Identación.
El uso de la identacion es importante debido a que, cuando se es consistente en
su utilización, facilita la lectura del programa al mostrar en una forma gráfica las
relaciones existentes entre las distintas instrucciones.
Ventajas de la programación estructurada.
Con la programación estructurada elaborar programas de computador sigue
siendo un albor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin
embargo, con este nuevo estilo podemos obtener las siguientes ventajas:
1. Los programas son más fáciles de entender. Un programa estructurado
puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar
saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de
programación. La estructura del programa es más clara puesto que las
THE BOOP´s Página 63
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
instrucciones están más ligadas o relacionadas entre sí, por lo que es más
fácil comprender lo que hace cada función.
2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo
para producción normal en un tiempo menor del tradicional; por otro lado, el
seguimiento de las fallas (debugging) se facilita debido a la lógica más
visible, de tal forma que los errores se pueden detectar y corregir más
fácilmente.
3. Reducción de los costos de mantenimiento.
4. Programas más sencillos y más rápidos.
5. Aumento de la productividad del programador.
6. Se facilita la utilización de las otras técnicas para el mejoramiento de la
productividad en programación.
7. Los programas quedan mejor documentados internamente.
3.8.3 Visión moderna de un programa estructurado
Así, la visión moderna de un programa estructurado es un compuesto de
segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o
por una página o más de código. Cada segmento tiene solamente una entrada y
una salida, asumiendo que no poseen bucles infinitos y no tienen instrucciones
que jamás se ejecuten.
Encontramos la relación entre ambas visiones en el hecho de que los segmentos
se combinan utilizándolas tres estructuras básicas de control mencionadas
anteriormente y, por tanto, el resultado es también un programa estructurado.
Cada una de estas partes englobará funciones y datos íntimamente relacionados
semántica o funcionalmente. En una correcta partición del programa deberá
resultar fácil e intuitivo comprender lo que debe hacer cada módulo.
THE BOOP´s Página 64
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
En una segmentación bien realizada, la comunicación entre segmentos se lleva a
cabo de una manera cuidadosamente controlada. Así, una correcta partición del
problema producirá una nula o casi nula dependencia entre los módulos,
pudiéndose entonces trabajar con cada uno de estos módulos de forma
independiente. Este hecho garantizará que los cambios que se efectúen a una
parte del programa, durante la programación original o su mantenimiento, no
afecten al resto del programa que no ha sufrido cambios.
Esta técnica de programación conlleva las siguientes ventajas:
a) El coste de resolver varios subproblemas de forma aislada es con frecuencia
menor
Que el de abordar el problema global.
b) Facilita el trabajo simultáneo en paralelo de distintos grupos de programadores.
c) Posibilita en mayor grado la reutilización del código (especialmente de alguno
de
Los módulos) en futuras aplicaciones.
Aunque no puede fijarse de antemano el número y tamaño de estos módulos,
debe intentarseun compromiso entre ambos factores. Si nos encontramos ante un
módulo con un tamaño excesivo, podremos dividir éste a su vez en partes (nuevos
módulos) más manejables, produciéndose la sucesiva división siempre desde
problemas generales a problemas cada vez menos ambiciosos y, por tanto, de
fácil desarrollo y seguimiento
. Así, esta división toma la forma de un árbol cuya raíz es el programa principal
que implementa la solución al problema que afrontamos utilizando uno o varios
módulos que realizan partes de dicha solución por sí solos o invocando a su vez
otros módulos que solución a subproblemas más específicos. A esta aproximación
se la denomina diseño descendente o top-down, como queda esquematizado.
THE BOOP´s Página 65
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
.
El carácter auto contenido de los módulos o librerías hace que pueda ocultarse el
funcionamiento interno de las funciones contenidas en un módulo, ya que para
utilizarlas basta con saber con qué nombre y argumentos se invocan y qué tipo de
valores devuelven.
Al reunirlas en un módulo, se realza la relación entre las mismas separándolas del
Resto del programa.
Esta ocultación de los detalles se denomina encapsulación y se alcanza dividiendo
el
Código del programa en dos ficheros diferenciados: un fichero (con extensión ".h")
que
Incluye la declaración de los tipos de datos y de las funciones gracias a lo cual se
sabe
Cómo acceder y utilizar cada una de las mismas y otro (con extensión ".c") que
contiene el código de cada una de las funciones declaradas en el .h.
Al compilar este último queda transformado en código objeto (al cual ya no se
puede
Acceder para su lectura o modificación) y puede distribuirse conjuntamente con el
THE BOOP´s Página 66
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Fichero de declaración (el que acaba en .h), para su uso por parte de terceros sin
riesgo alguno de alteración de la funcionalidad original (ésta quedó encapsulada u
oculta).
Esto es así porque para hacer uso de las funciones incluidas en el módulo
únicamente
Necesitaremos conocer la información que nos proporciona el fichero de
declaración: el nombre, tipos de datos de los argumentos y valores de retorno de
las funciones. No es necesario conocer los detalles de implementación (sentencias
que se ejecutan dentro de una función).
Ejemplo práctico
1. Lenguaje maquina
2. Encapsulación dividiendo el código del programa en dos ficheros diferenciados:
un fichero (con extensión ".h") y otro (con extensión ".c")
3. Código objeto.
CONCLUSIÓN
THE BOOP´s Página 67
1010110110111010100010101010100101011010101010101010101010
1 2 3
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
Al llevar a cabo el desarrollo de esta unidad pudimos conocer el proceso para la
creación de programas, sus fases y lo que va implicado en ellos.
Para esto se utilizaron varias herramientas que nos ayudaron a su creación y más
que nada a la administración del programa en sí, logrando con esto dividirlo en
una serie de etapas.
Vimos nacer al programa desde la idea en si de lo que quería ser, hasta su
denominación formal.
Para esto el programa tuvo que sufrir una serie de modificaciones a lo largo de su
avance y se tuvo que documentar toda la información que se llevaba a cabo en
estos.
De esto se puede deducir que; los programas tienen un lenguaje propio, mediante
el cual el programador se comunica con el sistema.
Esta comunicación se rige por lo que podríamos llamar reglas pero más que nada
son estatutos que debe contener.
Para esto se han creado las palabras para cada lenguaje, que nos permiten crear
o modificar estructuras dentro de él.
Tomando en cuenta que estas instrucciones no las entiende por completo la
maquina se han creado medios que permiten interpretar o convertir este lenguaje
a uno entendible por la computadora. Con esto los programas son ejecutados de
una manera propia, lo cual permite generar resultados entendibles y utilizables por
las computadoras. Y también por los usuarios que manejan el programa.
BIBLIOGRAFÍA
INTRODUCCIÓN A LA COMPUTACIÓN
THE BOOP´s Página 68
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
R. PETER NORTON6TA EDICION MC GRAW HILL 1995, USA.
C/C++, JAVA COMO PROGRAMARDEITELPEARSON PRETINCEL HALL4ª EDICION
FUNDAMENTOS DE SISTEMAS DIGITALES PEARSON PRETICE HALL THOMAS L. FLOYD, 9 ED
AUTOMATAS PROGRAMABLESJOSEP BALCELLS Y JOSE LUIS ROMERALSERIE MUNDO ELECTRONICO
LÓGICA DIGITAL Y DISEÑO DE COMPUTADORASM. MORRIS MANOEDITORIAL. PRENTICE HALL.1994, 3ª .ED. 790 P. USA
office.microsoft.com/es-es/visio/HA101474483082.asp
www.gestiopolis.com/recursos/documentos/fulldocs/ger/diaggantaleja.htm
THE BOOP´s Página 69
Recommended