algoritmos y lenguajes de programacion

124
UNIDAD I "NUEVAS TECNOLOGÍAS DE INFORMACIÓN" Los sistemas modernos de computación consisten en una gran conjunción de elementos de circuitos (hardware) y de programación (software) que han sido diseñados para proporcionar a la computación un ambiente productivo y hasta cierta medida agradable. El término Sistema de Cómputo se utiliza para señalar lo que el usuario emplea, en lugar del término Computadora. En los primeros años de la computación, los usuarios del sistema debían interactuar más estrechamente con el hardware real que lo que es hoy necesario, muchas funciones que debían realizar los usuarios mismos se manejan ahora por software mediante Sistemas Operativos. El sistema operativo crea un ambiente en el cual los usuarios pueden preparar programas y ejecutarlos sin tener que entrar en los detalles del hardware del sistema. Para satisfacer el crecimiento de la demanda de medios de computación, es que se ha desarrollado la multiprogramación, en la cual varios usuarios emplean el sistema de forma simultánea, como Windows por ejemplo. Un término fundamental de esta materia es el Programa, el cual es simplemente una secuencia de instrucciones que orienta a la Unidad de Control de

Upload: francisco-manuel-gonzalez-solares

Post on 23-Jul-2015

86 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Algoritmos y Lenguajes de Programacion

UNIDAD I 

"NUEVAS TECNOLOGÍAS DE INFORMACIÓN"

        Los sistemas modernos de computación consisten en una gran conjunción de elementos de circuitos (hardware) y de programación (software) que han sido diseñados para proporcionar a la computación un ambiente productivo y hasta cierta medida agradable.

 

        El término Sistema de Cómputo se utiliza para señalar lo que el usuario emplea, en lugar del término Computadora. En los primeros años de la computación, los usuarios del sistema debían interactuar más estrechamente con el hardware real que lo que es hoy necesario, muchas funciones que debían realizar los usuarios mismos se manejan ahora por software mediante Sistemas Operativos. El sistema operativo crea un ambiente en el cual los usuarios pueden preparar programas y ejecutarlos sin tener que entrar en los detalles del hardware del sistema.

 

        Para satisfacer el crecimiento de la demanda de medios de computación, es que se ha desarrollado la multiprogramación, en la cual varios usuarios emplean el sistema de forma simultánea, como Windows por ejemplo.

 

        Un término fundamental de esta materia es el Programa, el cual es simplemente una secuencia de instrucciones que orienta a la Unidad de Control de Procesamiento (CPU) en el desarrollo de los cálculos, el cual debe expresarse de forma que sea entendido por el CPU. Un CPU sólo puede entender instrucciones que estén expresadas en términos de su lenguaje máquina, pero esto se explicará más adelante.

Page 2: Algoritmos y Lenguajes de Programacion

"CLASIFICACION DE LOS SISTEMAS OPERATIVOS"

Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Algunas otras características con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.

Permiten poca o ninguna interacción usuario/programa en ejecución.

Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.

No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.

Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.)

Se encuentra en muchos computadores personales combinados con procesamiento serial.

Planificación del procesador sencilla, típicamente procesados en orden de llegada.

Planificación de memoria sencilla,  generalmente se divide en dos: parte residente del S.O. y programas transitorios.

No requieren gestión crítica de dispositivos en el tiempo.

Page 3: Algoritmos y Lenguajes de Programacion

Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.

Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes.

  Sistemas Operativos de tiempo real.

Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes.

Telecomunicaciones.

Sistemas de fabricación integrada.

Producción y distribución de energía eléctrica.

Control de edificios.

Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos.

Se utlizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.

Objetivo es proporcionar rápidos tiempos de respuesta.

Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.

Proceso se activa tras ocurrencia de suceso, mediante interrupción.

Proceso de mayor  prioridad expropia recursos.

Por tanto generalmente se utliza planificación expropiativa basada en prioridades.

Page 4: Algoritmos y Lenguajes de Programacion

Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.

Población de procesos estática en gran medida.

Poco movimiento de programas entre almacenamiento secundario y memoria.

Gestión de archivos se orienta  más a velocidad de acceso que a utlización eficiente del recurso.

Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:

Mejora productividad del sistema y utilización de recursos.

Multiplexa recursos entre varios programas.

Generalmente soportan múltiples usuarios (multiusuarios).

Proporcionan facilidades para mantener el entorno de usuarios inndividuales.

Requieren validación de usuario para seguridad y protección.

Proporcionan contabilidad del uso de los recursos por parte de los usuarios.

Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.

Sistemas multiprocesadores son sistemas multitareas por definición  ya que  soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.

En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistemas Operativos de tiempo compartido.

Page 5: Algoritmos y Lenguajes de Programacion

Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Características de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.

Dan la ilusión de que cada usuario tiene una máquina para  sí.

Mayoría utilizan algoritmo de reparto circular.

Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.

Evitan monopolización del sistema asignando tiempos de procesador (time slot).

Gestión de memoria proporciona protección a programas residentes.

Gestión de archivo  debe proporcionar protección y control de acceso debido a que  pueden existir múltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Caracteristicas de los Sistemas Operativos distribuidos:

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .

Page 6: Algoritmos y Lenguajes de Programacion

Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.

Objetivo clave es la transparencia.

Generalmente proporcionan medios para la compartición global de recursos.

Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red.

Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.

Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Figura. Se muestra un Sistema Operativo en red.

5. Sistemas Operativos paralelos.

En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

FUENTE: http://www.monografias.com/trabajos5/sisop/sisop.shtml#clasi

"PAQUETERÍA DE SOFTWARE"

Page 7: Algoritmos y Lenguajes de Programacion

Software -también conocido como programática y aplicación informática- es la parte lógica del ordenador, esto es, el conjunto de instrucciones (programas) que puede ejecutar el hardware para la realización de las tareas de computación a las que se destina.Asi podemos decir que el software es el conjunto de instrucciones "programas" que permiten la utilizacion de un periferico (hardware) ...

Probablemente la definición más formal de software es la atribuida a la IEEE en su estándar 729: la suma total de los programas de cómputo, procedimientos, reglas [,] documentación y datos asociados que forman parte de las operaciones de un sistema de cómputo (Ver: IEEE Std 729-1993, IEEE Software Engineering Standard 729-1993: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993). Bajo esta definición el concepto de software va más allá de los programas de cómputo en sus distintas versiones: código fuente,binario o código ejecutable.

El software se puede presentar en dos formas:

el código fuente escrito por personas,

el código objeto usualmente en la forma de archivos binarios, ejecutables directamente en una arquitectura de ordenador determinada.

Los programas que traducen el código fuente de los programas en ejecutables se llaman compiladores.

Programática se divide en dos categorías principales:

los sistemas operativos las aplicaciones de

usuario.

Programación o Lenguaje de

programación o Editores de

texto o Compiladores

Page 8: Algoritmos y Lenguajes de Programacion

o Algoritmos Aplicaciones

o

MLCA D

o Software de oficina

Procesa dor de texto

Hoja de cálculo

Base de datos

o Software colaborativo

Código abierto

Blog WikiWi

ki Slashco

de NupeCo

de Everyth

ing Engine

o Criptografía Pretty

Good Privacy

GNU Privacy Guard

o Software educacional

Sistema operativo

FUENTE: http://es.wikipedia.org/wiki/Programa_inform%C3%A1tico<

Page 9: Algoritmos y Lenguajes de Programacion

DEFINICION DE LENGUAJE DE PROGRAMACION

Un Lenguaje de Programación es aquél que es  utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. Estos lenguajes se clasifican en tres grandes categorías :

Lenguaje Máquina Lenguaje de Bajo nivel (ensamblador) Lenguaje de Alto nivel.

Page 10: Algoritmos y Lenguajes de Programacion

Definición de algoritmo    

       "Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos".

 

Las características fundamentales que debe cumplir todo algoritmo son :

Debe ser preciso. e indicar el orden de realización de cada paso.Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ; o sea debe tener un número finito de pasos.

 

La definición de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.

Algoritmos Cotidianos

        Se refiere a todos aquéllos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para resolverlos.

 

Algunos ejemplos son :

   Diseñar un algoritmo para cambiar una llanta a un coche.

Page 11: Algoritmos y Lenguajes de Programacion

1. Inicio. 2. Traer gato. 3. Levantar el coche con el gato. 4. Aflojar tornillos de las llantas. 5. Sacar los tornillos de las llantas. 6. Quitar la llanta. 7. Poner la llanta de repuesto. 8. Poner los tornillos. 9. Apretar los tornillos. 10. Bajar el gato. 11. Fin

 

 

   Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del         cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar          el pedido.

 

Pasos del algoritmo :

Inicio

    Leer el pedido

    Examinar ficha del cliente

    Si el cliente es solvente aceptar pedido, en caso contrario rechazar      pedido

Fin

 

   Determinar el mayor de tres números enteros.

Pasos del algoritmo :

1.-  Comparar el primero y el segundo entero, deduciendo cuál es el         mayor.

Page 12: Algoritmos y Lenguajes de Programacion

2.-  Comparar el mayor anterior con el tercero y deducir cuál es el         mayor. Este será el resultado.

 

        Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se denomina refinamiento del algoritmo.

                              

1.-  Obtener el primer número (entrada), denominado NUM1

2.-  Obtener el segundo número (entrada), denominado NUM2

3.-  Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos         enteros son iguales, seleccionar NUM1. Llamar a este número        MAYOR.

4.-  Obtener el tercer número (entrada), y se denomina NUM3.

5.-  Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos         enteros son iguales, seleccionar el MAYOR. Denominar a este        número MAYOR.

6.-  Presentar el valor MAYOR (salida).

7.-  Fin

Definición de Lenguajes Algorítmicos

        Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.

 

Page 13: Algoritmos y Lenguajes de Programacion

La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera :

Lenguaje Natural.Lenguaje de Diagrama de Flujo.Lenguaje Natural de Programación.Lenguaje de Programación de Algoritmos.

 

 

   Lenguaje Natural

        Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce  como lenguaje  jerga cuando se utilizan términos especializados de una determinada ciencia, profesión o grupo.

 

   Lenguaje de Diagrama de Flujo

        Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo.

 

   Lenguaje Natural de Programación

        Son aquéllos que están orientados a la solución de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos científicos.

 

        Tiene las siguientes características :

Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).Son precisos y bien definidos.Utilizan términos familiares al sentido común.

Page 14: Algoritmos y Lenguajes de Programacion

Elimina instrucciones innecesarias.

 

   Lenguaje de Programación de Algoritmos

            Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les conoce también como Lenguaje de Programación.

 

   Lenguaje de Programación :

        Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.

        Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la máquina.

 

Los principales tipos de lenguajes utilizados son tres :

Lenguaje Máquina.Lenguaje de bajo Nivel (ensamblador).Lenguajes de Alto Nivel.

 

 

   Lenguaje Máquina

        Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.

Page 15: Algoritmos y Lenguajes de Programacion

        Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra.

 

          Ventajas del Lenguaje Máquina

   Posibilidad de cargar (transferir un programa a la memoria) sin        necesidad de traducción posterior, lo que supone una velocidad        de ejecución superior a cualquier otro lenguaje de programación.

 

            Desventajas del Lenguaje Máquina

Dificultad y lentitud en la codificación.Poca fiabilidad.Gran dificultad para verificar y poner a punto los programas.Los programas solo son ejecutables en el mismo procesador (CPU).

 

        En la actualidad, las desventajas superan a las ventajas, lo que hace prácticamente no recomendables a los lenguajes máquinas.

 

Lenguajes de Bajo Nivel

        Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en español : SUM, RES, DIV, etc.

 

Una instrucción típica de suma sería :

ADD M, N, P

 

Page 16: Algoritmos y Lenguajes de Programacion

        Esta instrucción significa "sumar el contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P" . Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina.

0110 1001 1010 1011

        Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora.

        El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.

 

Ventajas del lenguaje ensamblador frente al lenguaje máquina

   Mayor facilidad de codificación y, en general, su velocidad de cálculo.

 

 

Desventajas del lenguaje ensamblador

Dependencia total de la máquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes máquinas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Machintosh.

 

La formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que exige no solo las técnicas de programación, sino también el conocimiento del interior de la máquina.

 

        Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos.

Page 17: Algoritmos y Lenguajes de Programacion

 

 

   Lenguajes de Alto Nivel

        Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.

 

 

Ventajas de los lenguajes de alto nivel

El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes.La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc.Las modificaciones y puestas a punto de los programas son más fáciles.Reducción del coste de los programas.Transportabilidad.

 

 

Desventajas de los lenguajes de alto nivel

Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo.No se aprovechan los recursos internos de la máquina que se explotan mucho mejor en lenguajes máquina y ensambladores.Aumento de la ocupación de memoria.El tiempo de ejecución de los programas es mucho mayor.

Page 18: Algoritmos y Lenguajes de Programacion

 

Para una mejor compresión de este tema se definirá el concepto de programa, por ser este un término muy utilizado en el diseño estructurado de algoritmos.

 

Programa :     Es un conjunto de instrucciones escritas en un lenguaje de programación que indican a la computadora la secuencia de pasos para resolver un problema.

Historia y Aplicación de los Lenguajes Algorítmicos

        Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos, existen lenguajes que realizan la comunicación entre los seres humanos y las computadoras. Estos lenguajes permiten expresar los programas o el

Page 19: Algoritmos y Lenguajes de Programacion

conjunto de instrucciones que el operador humano desea que la computadora ejecute.

 

        Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y la EDSAC, se componían en el lenguaje real de las máquinas mismas. La dificultad de programar las máquinas de esta manera limitaba drásticamente su utilidad y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programación más orientados hacia la expresión de soluciones con la notación de los problemas mismos.

 

        Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores, un ejemplo  es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un código especial llamado mnemónico para cada una de las operaciones de la máquina y se introduce una notación especial para especificar el dato con el cual debe realizarse la operación.

 

        A mediados de los años 60’s aparecieron los primeros lenguajes de propósito general como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc. pero el desarrollo de nuevas tecnologías, tanto en arquitectura de computadoras como en lenguajes de programación, continúa a paso acelerado, cada vez con mayor velocidad, el panorama está cambiando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones individuales. Los lenguajes de programación actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C .

UNIDAD II

Page 20: Algoritmos y Lenguajes de Programacion

" METODOLOGIA PARA LA SOLUCION DE PROBLEMAS POR MEDIO DE COMPUTADORAS "

  

        A fin de resolver un problema utilizando sistemas de cómputo, debe seguirse una serie de pasos que permiten avanzar por etapas bien definidas hacia la solución.

 

Estas etapas son las siguientes :

Definición del problema.

Análisis de los datos.

Diseño de la solución.

Codificación.

Prueba y depuración.

Documentación.

Mantenimiento.

 

 

2.1 Definición del problema

        Está dada en sí por el enunciado del problema, el cual debe ser claro y complejo. Es importante que conozcamos exactamente "que se desea obtener al final del proceso" ; mientras esto no se comprenda no puede pasarse a la siguiente etapa.

 

Page 21: Algoritmos y Lenguajes de Programacion

Análisis de los datos

        Para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle ya que esto es un requisito para lograr una solución eficaz.

        Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes aspectos :

Los resultados esperados.

Los datos de entrada disponibles.

Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (fórmulas, tablas, accesorios diversos).

 

        Una medida aconsejable para facilitar esta etapa consiste en colocarnos en lugar de la computadora deduciendo los elementos que necesitaremos para alcanzar el resultado.

 

 

Ejemplo 2.1

Leer el radio de un círculo y calcular e imprimir su superficie y circunferencia.

 

Análisis

        Las entradas de datos en este problema se concentran en el radio del círculo. Dado que el radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de datos radio debe ser real.

Page 22: Algoritmos y Lenguajes de Programacion

Las salidas serán dos variables : superficie y circunferencia que también serán de tio real.

 

Entradas : Radio del círculo (variable RADIO).

Salidas :   Superficie del círculo (variable AREA).

 

Circunferencia del círculo (variable CIRCUNFERENCIA).

Variables : RADIO, AREA, CIRCUNFERENCIA tipo real.

Diseño de la solución

        Una computadora no tiene capacidad para solucionar problemas más que cuando se le proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo que resuelva adecuadamente el problema. En caso de obtenerse varios algoritmos, seleccionar uno de ellos utilizando criterios ya conocidos.

        Esta etapa incluye la descripción del algoritmo resultante en un lenguaje natural, de diagrama de flujo o natural de programación.

        Como puede verse, solo se establece la metodología para alcanzar la solución en forma conceptual, es decir ; sin alcanzar la implementación en el sistema de cómputo.

        De acuerdo al ejemplo 2.1 tenemos que la información proporcionada constituye su entrada y la información producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver más eficazmente por la computadora cuando se dividen en subproblemas que sean más fácil de solucionar.

        El problema de cálculo de la longitud y superficie de un círculo se puede descomponer en subproblemas más simples :

Page 23: Algoritmos y Lenguajes de Programacion

Leer datos de entrada.

Calcular superficie y longitud.

Escribir resultados (datos de salida).

Codificación

        Se refiere a la obtención de un programa definitivo que pueda ser comprensible para la máquina. Incluye una etapa que se reconoce como compilación.

        Si la codificación original se realizó en papel, previo a la compilación deberá existir un paso conocido como transcripción.

 

 

Programa Fuente

Esta escrito en un lenguaje de programación. (pascal, C++,Visual Fox, Visual Basic, etc).

Es entendible por el programador.

Page 24: Algoritmos y Lenguajes de Programacion

 

Programa Ejecutable

Está en lenguaje máquina.

Entendible por la máquina.

Prueba y depuración

        Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a fin de determinar si resuelve o no el problema planteado en forma satisfactoria.

        Las pruebas que se le aplican son de diversa índole y generalmente dependen del tipo de problema que se está resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos, inválidos e incongruentes y observando como reacciona en cada ocasión.

        El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos existan. Si no existen errores, puede entenderse la depuración como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeño del programa.

Documentación

 

        Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin errores), se procede a la utilización para resolver problemas del tipo que dió origen a su diseño.

 

Page 25: Algoritmos y Lenguajes de Programacion

        En vista de que esta utilización no podrá ser supervizada en todas las ocasiones por el programador, debe crearse un manual o guía de operación que indique los pasos a seguir para utilizar el programa.

Mantenimiento

        Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias así lo requieran. Este programa deberá ser susceptible de ser modificado para adecuarlo a nuevas condiciones de operación.

Cualquier actualización o cambio en el programa deberá reflejarse en su documentación.

Tipos de Datos 

        Un dato se define como la expresión general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida.

 

        Los datos se clasifican en diversas categorías, según el tipo de máquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categorías :

Page 26: Algoritmos y Lenguajes de Programacion

NuméricosLógicosCadenas

 

   Datos Numéricos        Son aquéllos que representan una cantidad o valor determinado. Su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen).

Estos pueden representarse en dos formas distintas :

Tipo Numérico Entero (integer).Tipo Numérico Real (real).

 

 

Enteros

         Es un conjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.

Algunos ejemplos son :

3 7 -10 915.2550

 

 

Reales  

Page 27: Algoritmos y Lenguajes de Programacion

      Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consiste de un número entero y una parte decimal. Algunos ejemplos son :

0.52 664.326.579 8.0-9.3 -47.23

 

  Cadenas        Son los datos que representan información textual (palabras, frases, símbolos, etc). No representan valor alguno para efectos numéricos. Pueden distinguirse porque son delimitados por apóstrofes o comillas.

Se clasifica en dos categorías :

Datos tipo carácter (char)Datos tipo Cadena (string)

 

 

Datos Tipo Carácter  

          Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene solo un carácter.

Reconoce los siguientes caracteres :

Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z)Caracteres Numéricos (0,1,2,…9)Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)

 

Datos Tipo Cadena (string)

        Es un sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La

Page 28: Algoritmos y Lenguajes de Programacion

longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores.

Ejemplos :

‘Hola Mortimer’’12 de octubre de 1496’‘Enunciado cualquiera’

 

  Nota:  Los símbolos  disponibles para la formulación de caracteres y de cadenas son aquéllos que se encuentran en el cóodigo ASCII.

ASCII (American   Standard   Code  for   Information   Interchange).

 

   Lógicos        También se le denomina Booleano, es aquél dato que solo puede tomar uno de dos valores : Falso y verdadero.

        Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta será verdadera o falsa, según sea.

        Las categorías y tipos que se mencionaron anteriormente se conocen como Tipos Simples, puesto que no poseen una estructura compleja.

        En forma adicional, cada lenguaje puede proporcionar la utilización de Tipos Compuestos, siendo estos, datos que tienen una estructura predeterminada.

 

Tipos CompuestosEntre los principales tipos compuestos se encuentran los siguientes:

 

Page 29: Algoritmos y Lenguajes de Programacion

a.-  SUBRANGO :      Son aquéllos en los que se especifíca con precisión el intervalo de valores válidos para un dato.

Ejemplos:

                    0..100     (son  enumerativos de tipo entero)

                    'A'..'Z'    (son enumerativos de tipo cadena)

Los Reales no son válidos para crear enumerativos, ya que su intervalo no está definido.

 

b.-  ENUMERATIVOS :     Son aquéllos en los que se definen individualmente los valores para un dato.

Ejemplos:

                    (0,25,40,52)     Siempre deben ponerse netre paréntesis.

 

c.-  DEFINIDOS POR EL USUARIO :       Son aquéllos que el programador crea para satisfacer las necesidades del programa en diseño.

 

Constantes y variables        Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (o comprobación de un algoritmo en este  caso).  Se representa en la forma descrita para cada categoría.

        Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un programa (idem).

        Su representación se da a traves de letras y símbolos generalmente numéricos a los que se les asigna un valor.

Ejemplos:

 

Page 30: Algoritmos y Lenguajes de Programacion

 Constantes Variables

Numéricos

   36

   450.35

   0.58

A

Nom

Edad

Ciudad

Estatura

 

Cadena

   'A'

   'Juan'

   'La Paz'

Lógicos   Falso

   Verdadero

Operadores y Operandos

 

   Operadores

        Un operador es el símbolo que determina el tipo de operación o relación que habrá de establecerse entre los operandos para alcanzar un resultado.

                       

Los operadores se clasifican en tres grupos:

Aritméticos.Relacionales.  Lógicos.

 

1.- Operadores Aritméticos

Page 31: Algoritmos y Lenguajes de Programacion

        Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.

 

Operador Operación

+ Suma

- Resta

* Multiplicación

/ División real

Div División entera

Mod Residuo

^ Exponenciación

 

 

Ejemplos:

7+3 = 10 10 Div 4 = 2

7-3 = 4 20 Mod 3 = 2

7*3 = 21 5 Mod 7 = 5

10/4= 2.5 4 ^ 2 = 16

 

Page 32: Algoritmos y Lenguajes de Programacion

        En la expresión 7+3, los valores 7 y 3 se denominan operandos. El valor de la expresión 7+3 se conoce como resultado de la expresión.

 

        Todos los operadores aritméticos no existen en todos los lenguajes de programación, por ejemplo, en Fortran no existen Div y mod.

 

 

Operadores Div y Mod

El símbolo / se utiliza para la división real, y el operador Div representa la división entera.

Expresión Resultado Expresión Resultado

10.5/3.0 3.5 10 Div 3 3

1/4 0.25 18 Div 2 9

2.0/4.0 0.5 30 Div 30 1

30/30 1.0 10 Mod 3 1

6/8 0.75 10 Mod 2 0

 

 

   Operadores Relacionales        Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.

Page 33: Algoritmos y Lenguajes de Programacion

 

Operador Significado

< Menor que

> Mayor que

= Igual que

<= Menor o igual que

>= Mayor o igual que

<> Diferente de

 

 

El formato general para las comparaciones es:

expresión1 operador de relación expresión2

 

El resultado de la operación será Verdadero o Falso. Así por ejemplo, si A=4 y B=3, entonces:

A>B Es Verdadero

(A-2) < (B-4) Es Falso

 

        Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos estándar: enteros, real, lógico y carácter.

‘A’ < ‘K’ = Verdadero

Page 34: Algoritmos y Lenguajes de Programacion

‘A’ > ‘a’ = Falso

‘MARIA’ < ‘JUAN’ = Falso (se considera la primera letra)

‘JAIME’ > ‘JORGE’ = Falso

 

Nota: La comparación de cadenas se rige por el código ASCII.

 

 

Prioridad De Operadores Aritméticos y Relacionales

        Determina el orden en que habrán de realizarse las operaciones en una expresión determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

 

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.

 

Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad.

 

Operador Prioridad

^ Alta

*, /, Div 

+, -, Mod

Page 35: Algoritmos y Lenguajes de Programacion

Relacionales Baja

 

        En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

 

        Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

4 + 12 /2 = 10 (sin agrupar)

(4 + 12) /2 = 8 (con agrupador)

 

Ejemplo:

Obtener los resultados de las expresiones:  

                          -4 * 7 + 2 ^ 3 / 4 - 5

 

Solución:      

-4 *7 + 2 ^ ¾

 

Resulta:

-4 * 7+ 8/4 -5

-28 + 8/4 -5

-28 + 2 - 5

-26 - 5

Page 36: Algoritmos y Lenguajes de Programacion

-31

 

Los paréntesis tienen prioridad sobre el resto de las operaciones.

A * (B+3)              La constante 3 se suma primero al valor de B, después este resultado se multiplica                                por el valor de A.

 

(A*B) +3 A y B    Se multiplican primero y a continuación se suma 3.

 

A + (B/C) + D        Esta expresión equivale a A+ B/C + D

 

 

   Operadores Lógicos        Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.

 

Operador Relación

not Negación (No)

and Conjunción (Y)

or Disyunción (O)

xor

Disyunción Exclusiva (O/SOLO)

Page 37: Algoritmos y Lenguajes de Programacion

 

 

 

Se obtiene Verdadero si:

NOT El operando es falso

ANDAmbos operandos son verdaderos

ORAl menos un operando es verdadero

XORSolo uno de los operandos son verdadero

 

 

 

X Y NOT(X) NOT(Y)X AND

YX OR Y

X XOR Y

F F V V F F F

V F F V F V V

F V V F F V V

V V F F V V F

 

 

Page 38: Algoritmos y Lenguajes de Programacion

   Prioridad De Los Operadores Lógicos

        Los operadores aritméticos seguían un orden específico o de prioridad cuando existían más de un operador en las expresiones. De modo similar los operadores lógicos y relacionales tienen un orden de prioridad.

Ejemplos:

  Not 4 > 6                            Produce un error, ya que el operador not se aplica a 4.

   Not (4 > 14)                        Produce un valor verdadero.

   (1.0<x) And (x<z +7.0)      Si x vale 7 y z vale 4, se obtiene un valor falso.

 

   Asignación        La operación de asignación es el modo de darle valores a una variable.  La operación de asignación se representa por el símbolo u operador . La operación de asignación se conoce como instrucción o sentencia de asignación cuando se refiere a un lenguaje de programación.

        A fin de manejar datos por medio de variables, estos pueden recibir valores determinados.  El tipo de los valores que pueden recibir dependen de la declaración previa de tales variables.

        En una asignación se resuelve, primeramente la expresión (al lado derecho del símbolo de asignación) y se asigna el resultado en la variable.

El formato general de asignación es:

        Nom_variable  Expresión

Donde Expresión puede ser una   variable o constante, operación, función.

Ejemplo:

        A  9

Page 39: Algoritmos y Lenguajes de Programacion

        Significa que la variable A se le ha asignado el valor 9. La acción de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignación se pierde y se reemlaza por el nuevo valor.  Así en la secuencia de operaciones:

                                                A 30

                                                A 189

                                                A 9

  Cuando se ejecutan, el último valor que toma A será 9, ya que los valores anteriores a este  han desaparecido.

        Las acciones de asignación se   clasifican según sea el tipo de expresiones : Aritméticas, Lógicas y de Caracteres.

 

  Asignación Aritmética

Las expresiones en las operaciones de asignación son aritméticas:

Suma 5+10+2              Se evalúa la expresión 5+10+2 y se asigna a la variable Suma, es decir, 17                                       será el valor que toma Suma.

   Asignación Lógica

La expresión que se evalúa en la operación de asignación es lógica.  Supóngase que M, N, y P son variables de tipo lógico.

        M 8 < 5

        N M o (7 <= 12)

        P 7 > 6

        Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso, verdadero, verdadero respectivamente.

 

   Asignación de caracteres

Page 40: Algoritmos y Lenguajes de Programacion

La operaciómn que se evalúa es de tipo caracter.

    x '3 de Mayo de 1999'

La acción de asignación anterior asigna la cadena de caracteres '3 de Mayo de 1999' a la variable de tipo carácter x.

 

   Entrada y Salida de Información

        Los cálculos que realizan las computadoras requieren para ser útiles la Entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es decir, Salida.

        Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables.  Esta entrada se conoce como operación de Lectura (read).   Los datos de entrada se introducen al procesador mediante dispositivos de entrada (teclado, unidades de disco, etc).  La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc).  La operación de salida se denomina escritura (write).

        En la escritura de algoritmos las acciones de lectura y escritura se representan por los formatos siguientes

   leer (  Nom_variable  )

    escribir (lista de variables de salida)

 

Ejemplo:      Obtener área de un triángulo.

Entrada

Fórmula  (A=  B*h/2) Datos  (Base, altura)

Proceso

Multiplicar Base y altura.

Page 41: Algoritmos y Lenguajes de Programacion

Dividir resultado de la multiplicación anterior entre dos.

Mostrar resultado de división anterior.

Salida

Area del triángulo.

 

Algoritmo

Inicio

   leer(B)

    leer(h)

    x B*h

    A x/2

    escribir(A)

Fin

Page 42: Algoritmos y Lenguajes de Programacion

Expresiones        Las expresiones son combinaciones de constantes, variables, símbolos de operadores, paréntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notación matemática tradicional ; por ejemplo :

a + b ( b+2)     Aquí los paréntesis indican el orden de cálculo.

 

        Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.

 

        Una expresión consta de operadores y operandos. Según sea el tipo de objetos que manipulan, las expresiones se clasifican en :

AritméticasRelacionalesLógicasCarácter

 

        El resultado de la expresión numérica es de tipo numérico ; el resultado de una expresión relacional y de una expresión lógica es de tipo lógico ; el resultado de una expresión carácter es de tipo carácter.

 

1.- Expresiones Aritméticas

        Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes son numéricas (real o entera) y las operaciones son las aritméticas.

 

+   suma

-   resta

Page 43: Algoritmos y Lenguajes de Programacion

*   multiplicación

/   división

**, ^   exponenciación

div   división entera

mod   módulo (resto)

 

        Los cálculos que implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son también. Por ejemplo, el producto de operandos reales produce un real.

 

Ejemplo   :

4 x 6         se representa por 4 * 6

39              se representa por 3 ^ 9

18 div 6     se representa por 18/6

 

 

2.- Expresiones Lógicas (booleanas)

        Es una expresión que solo pueden tomar los valores de : verdadero y falso. Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras expresiones y otras expresiones lógicas utilizando los operadores lógicos not, and y or, y los operadores relacionales (de relación o comparación) =, >, <, <=, >=, <>.

 

Page 44: Algoritmos y Lenguajes de Programacion

UNIDAD IV

"TECNICAS DE DISEÑO"

 

        Con el objeto de facilitar el diseño de algoritmos y la organización de los diversos elementos de los que se componen se utilizan algunas técnicas que muestran una metodología a seguir para resolver los problemas. Estas técnicas hacen que los programas sean más fáciles de escribir, verificar, leer y mantener.

Algunas de las técnicas más conocidas son :

Top Down (diseño descendente)Botton UpWarnier Orr

 

4.1 Top Down 

        Es una técnica para diseñar que consiste en tomar el problema en forma inicial como una cuestión global y descomponerlo sucesivamente en problemas más pequeños y por lo tanto, de solución más sencilla.

 

        La descomposición del problema original (y de las etapas subsecuentes), puede detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el programador o analista pueden implementar fácilmente.

 

        El problema se descompone en etapas o estructuras jerárquicas, de modo que se puede considerar cada estructura como dos puntos de vista : lo que hace?,

Page 45: Algoritmos y Lenguajes de Programacion

y cómo lo hace ?. Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente forma :

 

   nivel n :     Vista desde el exterior.

    "lo que hace ?"

 

   Nivel n+1 :      Vista desde el interior.

    "cómo lo hace ?"

 

Ejemplo de un diseño descendente (top-down ) de un control de almacén :

 

 

Page 46: Algoritmos y Lenguajes de Programacion

Botton Up 

        Esta técnica consiste en partir de los detalles más precisos del algoritmo completando suscesivamente módulos de mayor complejidad, se recomienda cuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer.

 

        Conforme se va alcanzando el desarrollo de módulos más grandes se plantea como objetivo final la resolución global del problema.

 

        Este método es el inverso del anterior y es recomendable cuando se tiene un modelo a seguir o se cuenta con amplia experiencia en la resolución de problemas semejantes.

 

        La técnica de Botton Up es frecuentemente utilizada para la realización de pruebas a sistemas ya concluidos.

Page 47: Algoritmos y Lenguajes de Programacion

Warnier Orr 

        Es una técnica que utiliza una representación semejante a la de cuadros sinópticos para mostrar el funcionamiento y organización de los elementos que conforman el algoritmo.

 

        Básicamente, utiliza una notación de llaves para organizar los módulos y se auxilia en la siguiente simbología para indicar operaciones de control.

 

Símbolo Significado

+OR (uno, otro o varios)

XOR (uno u otro, solo uno)

(x,y)puede hacerse tantas veces desde x hasta y

 

 

Nota   :     Los diagramas Warnier Orr se leen de izquierda a derecha y de arriba hacia abajo.

 

Ejemplo de un diagrama de Warnier Orr, de un control de almacén 

Page 48: Algoritmos y Lenguajes de Programacion

(0,n) = De cero veces a n veces

(1,n) = De una vez a n veces

 

Page 49: Algoritmos y Lenguajes de Programacion

UNIDAD V

"TENICAS PARA LA FORMULACION DE ALGORITMOS"

 

        Las técnicas analizadas en la unidad anterior permiten un diseño global del algoritmo, pero ocasionalmente pueden desatender detalles específicos de este.

 

Las tres técnicas de formulación de algoritmos más populares son :

Diagrama de flujoPseudocódigoDiagramas estructurados

 

5.1 Diagramas de FlujoSe basan en la utilización de diversos símbolos para representar operaciones específicas.      Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación.

        La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.

 

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO

                                                        Símbolo                                        Función

 

Page 50: Algoritmos y Lenguajes de Programacion
Page 51: Algoritmos y Lenguajes de Programacion

 

 

Ejemplo: 

        Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100).

Page 52: Algoritmos y Lenguajes de Programacion

 

Ejemplo:

Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayoría o minoría de edad según sea el caso para un nombre específico.

Page 53: Algoritmos y Lenguajes de Programacion

 

Page 54: Algoritmos y Lenguajes de Programacion

Pseudocódigo        Es un lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil.

 

        El pseudocódigo nació como un lenguaje similar al inglés y era un medio representar básicamente las estructuras de control de programación estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por una computadora.

 

        La ventaja del pseudocódigo es que en su uso en la planificación de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje específico. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en la lógica del programa, además de todo esto es fácil su traducción a lenguajes como pascal, COBOL, C, FORTRAN o BASIC.

 

        El pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas en inglés (similares a sus homónimos en los lenguajes de programación), tales como star,begin, end, stop, if-then-else, while, repeat-until….etc

 

  Secuencia

    Inicio

        acción1

        acción2

Page 55: Algoritmos y Lenguajes de Programacion

        :

        acción n

    Fin

 

   Decisión

   Simple

si condición entonces

acción1

acción2

:

acción n

   Doble

si condición then

acción1

acción2

:

en caso contrario

acción1

acció2

 

 

   Iteracción

Page 56: Algoritmos y Lenguajes de Programacion

   Fija

para   var. Entera inicial   hasta   final    hacer

acción1

acción2

:

acción n

 

   Condicional al inicio

mientras   condición    hacer

acción1

acción2

:

acción n

 

   Condicional al final

Repetir

acción1

acción2

:

acción n

Hasta que condición

 

Page 57: Algoritmos y Lenguajes de Programacion

 

   Seleccióncasos   selector   de

valor1 : acción1

acción2

 

valor2 : acción1

acción2

 

        valor n : acción1

        acción2

 

Ejercicio   :

    Se requiere preguntar dos valores, y a continuación ofrecer un menú con las operaciones básicas (+, -, *, /). Después de presentar el resultado se ofrecerá la posibilidad de una nueva operación.

 

Declaración de variables :

Real : X, Y, RESPUESTA

Entero : OPCION

Carácter : OP

 

Inicio

Page 58: Algoritmos y Lenguajes de Programacion

    Repetir

escribir(‘Primer valor : ’ )

leer(X)

escribir(‘Segundo valor : ‘)

leer(Y)

escribir(‘1) Suma ‘)

escribir(‘2) Resta ‘)

escribir(‘3) Multiplicación ‘)

escribir(‘4) División ‘)

escribir(‘Qué operación deseas realizar ? : ‘)

leer(OPCION)

casos OPCION de

1 : RESULTADO X+Y

2 : RESULTADO X-Y

3 : RESULTADO X*Y

4 : si Y=0 entonces

                   escribir(‘ Error ‘)

                   RESULTADO 0

             en caso contrario

                  RESULTADO X/Y

         escribir (‘Resultado : ‘,RESULTADO)

         escribir(‘Deseas otro cálculo : [S/N] ‘)

Page 59: Algoritmos y Lenguajes de Programacion

         leer(OP)

    Hasta que RES = ‘N’

Fin

 

 

Ejercicio   :

    Preguntar un nombre y repetirse en pantalla tantas veces como se desee. (preguntar cantidad de repeticiones), indicando el número de repetición.

 

Declaración de variables

Cadena : nom

entero : x, n

 

Inicio

escribir(‘Nombre : ‘)

leer(nom)

escribir(‘Cuántas veces quieres repetirlo ? : ‘)

leer(n)

para x 1 hasta n hacer

     escribir(x’.- ‘, nom)

Fin

Page 60: Algoritmos y Lenguajes de Programacion

Diagramas Estructurados (nassi-schneiderman)

 

        El diagrama N-S de Nassi-Schneiderman, 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 escriben en cajas sucesivas, y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

        Los Diagramas Estructurados, son una técnica que permite formular algoritmos mediante una representación geométrica y de asignación de  espacios de un bloque específico.

 

Un algoritmo se representa de la manera siguiente:

 

Una estructura condicional en N-S se representa de la siguiente manera :

Page 61: Algoritmos y Lenguajes de Programacion

 

 

 Ejemplo:  Se desea calcular el salario neto semanal de un trabajador en función del número de horas trabajadas y la tasa de impuestos.

 

Page 62: Algoritmos y Lenguajes de Programacion

Estructura Secuencial

         Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así suscesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica es la siguiente:

 

ESTRUCTURA SECUENCIAL

                                                                           ....

 

  

DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL

Page 63: Algoritmos y Lenguajes de Programacion

 

  

PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL

 Inicio

                                                                           :

                                                                           :

acciones

:

:

fin

 

  Ejemplo:

        Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100).

 

 Pseudocódigo

Inicio

{cálculo salario neto}

leer nombre, horas, precio_hora

salario_bruto horas * precio

impuestos 0.20 * salario_bruto

salario_neto salario_bruto_impuestos

Page 64: Algoritmos y Lenguajes de Programacion

escribir nombre, salario_bruto, salario_neto_bruto, salario_neto

Fin

  

 Diagrama de flujo

 

Diagrama N-S

Page 65: Algoritmos y Lenguajes de Programacion

 

 

Condicionales

        La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición.

         Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

         En las estructuras selectivas se evalúa una condición y en función del resultado la misma se realiza una opción u otra. Las condiciones se especifícan usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de romba o bien con un triángulo en el interior de una caja rectangular.

 

Las estructuras selectivas o alternativas pueden ser:

Simples Múltiples

 

 Alternativa Simple (si-entonces/if-then)

Page 66: Algoritmos y Lenguajes de Programacion

        La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN ) ejecuta una determinada acción cuando se cumple una determinada condición. La selección si-entonces evalúa la condición y . . .

           Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones caso de ser S1 una                 acción compuesta y constar de varias acciones).

 

          Si la condición es falsa, entonces no hacer nada.

 

A continuación se muestra la gráfica de la estructura condicional simple.

 

                                                                 

 

Pseudocódigo en español

Si     <condición>   Entonces

      <acción S1>

Fin_si

 

Page 67: Algoritmos y Lenguajes de Programacion

Pseudocódigo en inglés

If    <condición>   then

   <acción S1>

end_if

 

 Diagrama N-S

 

 

 

Alternativas Múltiples (según_sea, caso de / case)

         Cuando existen más de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas múltiples. Si el número de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad.

         La estrucura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos 1,2,3,4,..n . Según que elija uno de estos valores en la condición, se realizaráa una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles.

 

La representación gráfica se muestra a continuación:

 

Page 68: Algoritmos y Lenguajes de Programacion

 Diagrama de Flujo

 

Diagrama N-S

 

            Modelo 1                                                              Modelo 2

                              

            

 

 Pseudocódigo

Page 69: Algoritmos y Lenguajes de Programacion

 En inglés la estructura de decisión múltiple se representa

 

Case expresión of

[e1]: acción S1

[e2]: acción S2

:

[en]: acción Sn

 

else

acción Sx

 

end_case

 

 

Ejemplo:

        Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado.

        Los días de la semana son 7; por consiguiente, el rango de valores de DIA será 1..7, y caso de que DIA tome un valor fuera de este rango se deberá producir un mensaje de error advirtiendo la situación anómala.

 

Inicio

Leer DIA

Según_sea DIA hacer

Page 70: Algoritmos y Lenguajes de Programacion

1: escribir('Lunes')

2: escribir('Martes')

3: escribir('Miércoles')

4: escribir('Jueves')

5: escribir('Viernes')

6: escribir('Sabado')

7: escribir('Domingo')

else

escribir('Error')

fin_según

fin

 

Estructuras   Repetitivas

        Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan Bucles y se denomina Iteración al hecho de repetir la ejecución de una secuencia de acciones. Entre las estructuras repetitivas se encuentran:

Mientras (while)

Repetir   (repeat)                                              

Desde (for)

 1.-  Estructura Mientras (while)

Page 71: Algoritmos y Lenguajes de Programacion

    La estructura repetitiva while, es aquélla en que el cuerpo del bucle se repite mientras se cumple una determinada condición, su representación gráfica es:

 

 

 

Pseudocódigo en español                               Pseudocódigo en inglés

Mientras condición hacer                              while   condición   do

Acción S1                                                              <Acciones>

Acción S2                                                                        :

      :                                                                  End_while

acción Sn

Fin_mientras

 

 

 Diagrama N-S

Page 72: Algoritmos y Lenguajes de Programacion

 

 Ejemplo:

        Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contará el número de enteros positivos).  Se supone que se leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.

 

Pseudocódigo

                Inicio

                  contador 0

                   Leer (numero)

                  Mientras numero > 0 hacer

                        contador   contador+1 

                       Leer (numero)

                    Fin_Mientras

                   Escribir('El número de enteros positivos es : ', contador)

                    Fin

 

Diagrama de Flujo

Page 73: Algoritmos y Lenguajes de Programacion

 

 

Representación en N-S

Page 74: Algoritmos y Lenguajes de Programacion

 

UNIDAD VII

"ARREGLOS"

 

         Las variables que hemos utilizado hasta ahora nos permiten el almacenamiento de un solo valor a la vez.

 

        Para resolver cierto tipo de problemas con datos múltiples en forma eficiente, se requiere almacenamiento en conjunto. A esta organización de elementos se le conoce con el nombre de arreglo.

 

        Otra definición de arreglo más completa (Luis Joyanes A.), es un conjunto finito y ordenado de elementos homogéneos. La propiedad "ordenado" significa que el elemento primero, segundo, tercero…n-ésimo de un arreglo puede ser identificado. Los elementos de una arreglo deberán ser homogéneos, es decir, del

Page 75: Algoritmos y Lenguajes de Programacion

mismo tipo de datos. Por ejemplo un arreglo puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener sus elementos de tipo entero, etc.

 

Al tratar el tema de arreglos es necesario conocer el término de dimensión.

Dimensión Descripción

0 Un solo punto.

1 (vector o lista) Una recta. Contiene largo.

2 (matriz o tabla) Contiene largo y ancho.

3 (cubo) Tiene largo, ancho y fondo.

 

 

   Declaración de un Arreglo

Nom_variable : Arreglo [dimensión] de Nom_tipo

 

   En donde dimensión especifica :

<subíndice inferior> …<subíndice superior>

En el orden :   Fila, Columna, Fondo.

 

   Ejemplo de una declaración :

   0 Dimensión :

x 20          donde x, es de tipo Entero.

 

   1 Dimensión :

Page 76: Algoritmos y Lenguajes de Programacion

  5    

1     2     3      4

x[2] 5

x : arreglo [1..4] de Enteros.

 

   2 Dimensiones :

1     2     3      4

       

      8

       

       

 

x[2,4] 8

x : arreglo [1..3, 1..4] de Enteros.

 

   3 Dimensiones :

x[1,4,2] 3

x : arreglo[1..3, 1..4, 1..2] de Enteros.

 

 

       Las operaciones que se pueden realizar con arreglos durante el proceso de resolución de un problema son :

Asignación

Page 77: Algoritmos y Lenguajes de Programacion

Lectura/EscrituraRecorrido (acceso secuencial)Actualizar (añadir, borrar, insertar)OrdenaciónBúsqueda

 

 

7.1  VectoresSon aquéllos de una sola dimensión, por lo que también son llamados arreglos Unidimensionales.

 

Ejemplo :

Un vector de una dimensión llamado CALIF, que consta de n elementos.

 

calif(1) calif(2) …calif(n-2)

calif(n-1)

calif(n)

 

        El subíndice o índice de un elemento (1, 2 …n) designa su posición en la ordenación del vector. Otras posibles notaciones del vector son :

a1, a2,…,an             En matemáticas y algunos lenguajes(BASIC)

A(1), A(2),…A(n)

A[1], A[2],…A[n]      En programación (Pascal)

 

        Los vectores se almacenan en memoria central de la computadora en un orden adyacente. Así, un vector de 50 elementos denominado NUMEROS se representa gráficamente por 50 posiciones de memoria sucesivas.

Page 78: Algoritmos y Lenguajes de Programacion

 

Memoria

NUMEROS(1) Dirección x

NUMEROS(2) Dirección x+1

NUMEROS(3) Dirección x+2

:

:

        NUMEROS(50) Dirección x+49

 

        Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una posición de memoria. Así :

NUMEROS(25) 75       (almacena el valor 75 en la posición 25a del vector NUMEROS y la                                              instrucción  de salida : escribir NUMEROS(25).

 

Declaración

nom _arreglo = arreglo[liminf..limsup] de tipo

 

donde :

nom_arreglo :      nombre válido del arreglo.

liminf..limsup :     límites inferior y superior del rango del arreglo.

tipo :     tipo de datos de los elementos del arreglo : entero, real, carácter.

 

Page 79: Algoritmos y Lenguajes de Programacion

NOMBRES= arreglo [1..10] de carácter

        Significa que NOMBRES es un arreglo (array) unidimensional de 10 elementos (1 a 10) de tipo carácter.

 

Asignación

NOMBRES(8)     ‘Ana’             

Asigna el valor ‘Ana’ al elemento 8 del vector NOMBRES

 

 

Lectura/Escritura de Datos

        La Lectura/Escritura de datos en un arreglo u operaciones de entrada/salida normalmente se realizan con estructuras repetitivas, aunque puede también hacerse con estructuras selectivas. Las instrucciones simples de lectura/escritura se representarán como :

leer A              Lectura del vector A

escribir A         Escritura del vector A

leer V(5)          Leer el elemento V(5) del vector V

 

Acceso Secuencial al Vector (recorrido)

        Se puede acceder a los elementos de un vector para introducir datos (escribir) en el o bien para visualizar su contenido (leer). Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo I) se utilizan como subíndices del vector (por ejemplo, X(I). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.

 

Page 80: Algoritmos y Lenguajes de Programacion

Ejemplo :

Lectura de 15 valores enteros de un vector denominado TOTAL.

 

TOTAL= array [1..15] de entero

desde i 1 hasta 15 hacer

    leer TOTAL(i)

fin _desde

 

Si se cambian los limite inferior y superior, por ejemplo, 5 y 12, el bucle de lectura sería :

desde i 5 hasta 12 hacer

    leer TOTAL(i)

fin_desde

 

La salida o escritura de vectores se representa de un modo similar.

desde i 1 hasta 15 hacer

    escribir TOTAL(i)

fin_desde

Visualiza todo el vector completo (un elemento en cada línea independiente).

 

Actualización de un Vector

Puede constar de tres operaciones más elementales :

a) Añadir elementos (añade un nuevo elemento al final del vector)

Page 81: Algoritmos y Lenguajes de Programacion

        Un arreglo A se ha dimensionado a 6 elementos, pero solo se han asignado 4 valores a los elementos A(1), A(2), A(3), A(4), se podrán añadir dos elementos más con una simple acción de asignación.

A(5)        15

A(6)         9

 

b.- Insertar elementos (introduce un elemento en el interior de un vector)

 

Ejemplo :     Se tiene un arreglo NOM de 6 elementos de nombres de personas, en orden alfabético y se desea insertar un nuevo nombre.

 

{Calcular la posición ocupada por el elemento a insertar} P

{Inicializar contador de inserciones} i n.

mientras i >=  P hacer

        {transferir el elemento actual hacia abajo, a la posición i+1}

NOM(i+1)       NOM(i)

        {decrementar contador}

i     i-1

        fin_mientras

{Insertar el elemento en la posición P}

        NOM(P)         ‘nuevo elemento’

{Actualizar el contador de elementos del vector}

n       n+1

fin

Page 82: Algoritmos y Lenguajes de Programacion

 

c) Borrar elementos (Elimina elementos de un vector)

 

Algoritmo de Borrado

Inicio

{se utilizará una variable auxiliar AUX, que contendrá el valor del elemento que se desea borrar}

AUX   NOM(i)

desde i j hasta N-1 hacer

{llevar elemento j+1 hacia arriba}

     NOM(i)     NOM(i+1)

fin_desde

{actualizar contador de elementos}

{ahora tendrá un elemento menos, N-1}

N N-1

Fin

 

 

Referencia a un elemento de Arreglo

variable de arreglo [subíndice]

Ejemplo :

        x                                   x[3] 9

                                            escribir (x[2])

Page 83: Algoritmos y Lenguajes de Programacion

   ? 9

1     2     3

 

Ejercicio :

        Se desea la lectura y desplegado de 5 nombres. Resuelva el problema por cada uno de los siguientes criterios :

a)    Lectura y desplegado alternados.

b)    Todas las lecturas, todos los desplegados.

a)  variables :

string : nom

entero : x

 

Inicio

Para x 1 hasta 5 hacer

    escribir(‘Nombre ? ‘)

    leer(nom)

    escribir( ‘La persona número’, x, ‘ se llama : ‘,nom)

Fin

 

 

Nota   :      No se utilizaron arreglos porque no se requería de almacenamiento múltiple.

 

Page 84: Algoritmos y Lenguajes de Programacion

b)  variables :

nom : Arreglo[1..5] de string

x : Entero

 

Inicio

para x 1 hasta 5 hacer

escribir(‘Dame el nombre número’,x,’ ?’)

leer(nom[x])

para x 1 hasta 5 hacer

    escribir(‘La persona número ‘, x,’ se llama : ‘,nom[x])

Fin

 

Ordenación de Arreglos        Existen diversos métodos para ordenar los elementos de un arreglo. El más conocido de ellos (no el mejor) es el Método de la Burbuja.

 

        El método consiste en hacer un recorrido por el arreglo comparando parejas de elementos ; si estos no están en el orden deseado, se procede a intercambiarlos.

 

        Al finalizar el recorrido se verifica la cantidad de intercambios, si esta es 0 se asume que el arreglo está ordenado ; en caso contrario se inicia nuevamente el recorrido.

 

Page 85: Algoritmos y Lenguajes de Programacion

        Las parejas de elementos que se comparan deben ser contiguos (elemento1 y elemento2, elemento2 y elemento3, etc). El número total de comparaciones es n-1 (donde n es la cantidad de elementos).

 

Ejemplo :

Se requiere la ordenación de una lista con 5 valores enteros previamente introducidos.

 

Variables :

LISTA : arreglo[1..5] de entero

x, aux : entero

cambio : boleano

 

Inicio

Para x 1 hasta 5 hacer

escribir(‘Dame el valor’,x,’ :’)

leer( LISTA[x])

        repetir

            cambio falso

            para x 1 hasta 4 hacer

si LISTA[x] > LISTA[x+1] entonces

aux LISTA[x]

LISTA[x] LISTA[x+1]

LISTA[x+1] aux

Page 86: Algoritmos y Lenguajes de Programacion

cambio verdadero

            fin_si_entonces

        hasta cambio = falso

        escribir(‘Lista ordenada’)

para x 1 hasta 5 hacer

    escribir(‘Elemento número’,x,’ es’,LISTA[x])

Fin

Page 87: Algoritmos y Lenguajes de Programacion

"REGISTROS"

Los archivos también denominados ficheros (file); es una colección de información (datos relacionados entre sí), localizada o almacenada como una unidad en alguna parte de la computadora.

Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones.

1.1. - INTRODUCCIÓN A LOS ARCHIVOS.

Los archivos como colección de datos sirve para la entrada y salida a la computadora y son manejados con programas.

Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta dinámico y por esto en un registro se deben especificar los campos, él número de elementos de un arrays (o arreglo), el número de caracteres en una cadena; por esto se denotan como "Estructuras Estáticas".

En los archivos no se requiere de un tamaño predeterminado; esto significa que se pueden hacer archivos de datos más grandes o pequeños, según se necesiten.

Cada archivo es referenciado por su identificador (su nombre.).

1.2. - CARACTER ÍSTICAS DE LOS ARCHIVOS

Las principales características de esta estructura son:

Independencia de las informaciones respecto de los programas

La información almacenada es permanente

Un archivo puede ser accedido por distintos programas en distintos momentos

Gran capacidad de almacenamiento.

1.3. - CLASIFICACION DE LOS ARCHIVOS

Los archivos se clasifican según su uso en tres grupos:

Permanentes o Maestros:

Page 88: Algoritmos y Lenguajes de Programacion

Estos contienen información que varia poco. En algunos casos es preciso actualizarlos periódicamente.

De Movimientos

Se cercan para actualizar los archivos maestros. Sus registros son de tres tipos: alta, bajas y modificaciones.

De Maniobra o Trabajo.

Tienen una vida limitada, normalmente menor que la duración de la ejecución de un programa. Su utilizan como auxiliares de los anteriores.

1.4. - TIPOS DE ARCHIVOS

Los elementos de un archivo pueden ser de cualquier tipo, simples o estructurados o según su función.

1.4.1. - SEGÚN SU FUNCION.

Se define por:

a.- Archivos Permanentes:

Son aquellos cuyo registros sufren pocas o ninguna variación a lo largo del tiempo, se dividen en:

Constantes: Están formados por registros que contienen campos fijos y campos de baja frecuencia de variación en el tiempo.

De Situación: Son los que en cada momento contienen información actualizada.

Históricos: Contienen información acumulada a lo largo del tiempo de archivos que han sufridos procesos de actualización o bien acumulan datos de variación periódica en el tiempo.

b.- Archivos de Movimiento

Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algún campo común en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos.

c.- Archivo de Maniobra o Transitorio

Son los archivos creados auxiliares creados durante la ejecución del programa y borrados habitualmente al terminar el mismo.

Page 89: Algoritmos y Lenguajes de Programacion

 

1.4.2. – SEGÚN SUS ELEMENTOS.

Los principales archivos de este tipo son:

Archivo de Entrada: Una colección de datos localizados en un dispositivo de entrada.

Archivo de Salida: Una colección de información visualizada por la computadora.

Constantes: están formados por registros que contienen campos fijos y campos de baja frecuencia de variación en el tiempo.

De Situación: son los que en cada momento contienen información actualizada.

Históricos: Contienen información acumulada a lo largo del tiempo de archivos que han sufrido procesos de actualización, o bien acumulan datos de variación periódica en el tiempo.

Archivos de Movimiento o Transacciones: Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algún campo común en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos.

Archivos de Maniobra o Transitorios: Son los archivos auxiliares creados durante la ejecución del programa y borrados habitualmente al terminar el mismo.

 

- SEGÚN SUS ELEMENTOS

Los principales archivos de este tipo son:

Archivo de Entrada, una colección de datos localizada en un dispositivo de entrada.

Archivo de Salida, una colección de información visualizada por la computadora.

Archivo de Programa, un programa codificado en un lenguaje especifico y localizado o almacenado en un dispositivo de almacenamiento.

Archivo de Texto, una colección de caracteres almacenados como una unidad en un dispositivo de almacenamiento.

2. - ACCESO A LOS ARCHIVOS

Page 90: Algoritmos y Lenguajes de Programacion

Se refiere al método utilizado para acceder a los registros de un archivo prescindiendo de su organización. Existen distintas formas de acceder a los datos:

Secuenciales; los registros se leen desde el principio hasta el final del archivo, de tal forma que para leer un registro se leen todos los que preceden.

Directo; cada registro puede leerse / escribirse de forma directa solo con expresar su dirección en el fichero por él numero relativo del registro o por transformaciones de la clave de registro en él numero relativo del registro a acceder.

Por Índice; se accede indirectamente a los registros por su clave, mediante consulta secuenciales a una tabla que contiene la clave y la dirección relativa de cada registro, y posterior acceso directo al registro.

 

Dinámico; es cuando se accede a los archivos en cualquier de los modos anteriormente citados.

La elección del método esta directamente relacionada con la estructura de los registros del archivo y del soporte utilizado.

2.1. - TIPOS DE ACCESOS

Acceso Secuencial. Exige el tratamiento de elemento, para esto es necesario una exploración secuencial comenzando desde el primer momento (Pascal permite este acceso)

Secuenciales:  archivo de texto que debe ser leído del principio hasta el final.

Acceso Directo. Permite procesar o acceder a un elemento determinado y referencia directamente por su posición en el soporte de almacenamiento (Turbo Pascal permite este acceso.

Aleatorios:  es un archivo con registros de un mismo largo.  Un programa puede accesar directamente cualquier registro sin tener que leer los registros previos.

 

Binarios:  es un archivo que lee byte por byte sin asumir ninguna estructura. Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva forma de manipular cualquier tipo de archivo. Las técnicas de archivo binarios permiten leer o cambiar cualquier byte de un archivo. Son herramientas extremadamente potentes, pero como toda herramienta potente debe manejarse con cuidado

Page 91: Algoritmos y Lenguajes de Programacion

Entre otras características, a las técnicas de archivo binario no les preocupa los caracteres EOF intercalados (Control+Z = Chr$(26)) que pueda tener un archivo.

Ejemplo Open NombreArchivo for Binary as #NumeroArchivo.

Instrucciones para manejar archivos

OPEN:  reserva un espacio del buffer para la data que moverá entre el programa y los archivos.  La estructura es:

    OPEN filespec FOR {Append|Binary|Input|Outuput|Random} As #filenumber

Por ejemplo:

     OPEN "C:\Windows\AddrBook.ini" FOR Input As #1

Filespec:  Es la localización de archivo en el que se trabajará, incluyendo usualmente el drive y path.

    "C:\Windows\AddrBook.ini"

{Append| Binary| Input| Outuput| Random}  El programador tiene que seleccionar uno.  Binary y Random se utiliza para archivos binarios y aleatorios.  Append, Input y Output son usados con archivos secuenciales.  Un archivo secuencial no puede ser abierto para leer y escribir simultaneamente.  Output es usado para escribir en el archivo.  Input es usado para leer del archivo.  Append es usado para colocar data al final de un archivo exitente.

#filenumber:  es necesario asignar un número al archivo.  El número puede estar en el rango de #1 a #511 y es usado por Visual Basic para identificar el archivo.

CLOSE:  para cerrar un archivo.  La estructura es:

     CLOSE #filenumber

Por ejemplo:

    CLOSE #1

WRITE:  envia data del programa al archivo secuencial.  La estructura es:     WRITE #filenumber, [OutputList]

Por ejemplo:

    WRITE #1, UserName, UserCompany, SerialNumber

Page 92: Algoritmos y Lenguajes de Programacion

WRITE es la operación opuesta al INPUT.  Las expresiones en el OutputList son separadas por comas.  WRITE inserta comillas y comas a la data que envia al archivo.

INPUT:  lee data del archivo.  La estructura es:

    INPUT #filenumber, InputList

Por ejemplo:

    INPUT #1, UserName, UserCompany, SerialNumber

Declaración y asignación de archivos

La declaración de un archivo con tipo se efectúa con la ayuda de las palabras reservadas file of.

El procedimiento de asignación es idéntico al utilizado anteriormente.

Ejemplo:

Type

datos = record

clave : integer;

nombre : string[30];

puesto : string[20];

sueldo : real;

estado : boolean;

{true activo,false baja lógica}

end;

Var

archivo:file of datos;

begin

Assign(archivo,'empleado.dat');

Page 93: Algoritmos y Lenguajes de Programacion

SISTEMA DE MANEJO DE ARCHIVOS.

Tiene las siguientes funciones:

Controla los datos en almacenamiento secundario [ ]

Proporciona al usuario una abstracción de cómo se manipulan los datos internamente. [ ]

Proporciona independencia de E/S con los dispositivos [ ]

Soporte de compartición, protección, recuperación de archivos y posibles caídas del sistema. [ ]

Transmisión de datos de memoria principal a secundaria.[ ]

 Los archivos de una empresa pueden almacenarse en diferentes dispositivos. Todos los archivos se pueden almacenar por medio de directorios, que no son otra cosa más que tablas de símbolos de archivo, los directorios se pueden utilizar de dos formas:

 DIRECTORIO DE NIVEL ÚNICO O DIRECTORIO PLANO

  Con este método, se almacenan todos los archivos en un solo nivel, este método en sistemas donde el volumen de archivos no es grande.[ ]

  DIRECTORIO JERARQUICO

  Los archivos son almacenados por medio de directorios, esta clasificación se de acuerdo a la conveniencia del usuario o de la empresa. [ ] .La estructura tiene una forma de árbol con raíz, este método es el más utilizado debido a que la revisión o búsqueda se realiza de forma sencilla.

 Para accesar a los archivos que se almacenan en un sistema jerárquico, el usuario debe indicar el o los directorios que se deben recorrer para localizar el archivo deseado, a esto se le denomina ruta de acceso del archivo. La ruta de acceso puede ser de dos formas:

Ruta absoluta.- Este tipo de ruta de acceso inicia siempre con una diagonal invertida [ ]

C:\Edit c:\SOS\sistemas\report.txt

Ruta relativa.- Este tipo de ruta de acceso realiza la búsqueda del archivo en el directorio de trabajo actual, si el archivo no se localiza aquí, el S.O. lo buscará en los directorios especificados en el PATH de un archivo con extensión .BAT.

Page 94: Algoritmos y Lenguajes de Programacion

C:\Edit report.txt

2.2. - OPERACIONES GENERALES QUE SE REALIZAN SOBRE UN ARCHIVO.

Las operaciones generales que se realizan son:

Creación. Escritura de todos sus registros.

Consulta. Lectura de todos sus registros.

Actualización. Inserción supresión o modificación de algunos de sus registros

Clasificación. Reubicación de los registros de tal forma que queden ordenados según determinados criterios.

Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba.

 

 

3. - ORGANIZACIÓN DE LOS ARCHIVOS.

Los archivos se encuentran organizados lógicamente como una secuencia de registros de varias longitudes diferentes.

Los archivos de registros de longitud fija: son los que almacenan la información en los archivos mediante un encabezado y luego se introducen uno a uno los registros ubicados en posiciones consecutivas.

Los registros de longitud variable: es el almacenamiento de registros de varios tipos en un archivo y permite uno o más campos de longitudes variables y dichos campos pueden ser repetidos. La longitud de los registros debe estar definida correctamente para poder leer y escribir de forma efectiva.

 

3.1. - ENFOQUES GENERALES PARA LA ORGANIZACIÓN DE ARCHIVOS.

Los enfoques son:

1. - Enfoque de acceso secuencial: Se refiere al procesamiento de los archivos de acuerdo con el orden especifico. Ejemplo archivo secuenciales y de texto.

Page 95: Algoritmos y Lenguajes de Programacion

2. - Enfoque de acceso Directo Permite recuperar registros individuales sin leer otros registros del archivo, ejemplos archivos indizados.

 

 

3.2. - ARCHIVOS SECUENCIALES.

Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros están organizados en forma de una lista y recuperarlos y procesarlos uno por uno de principio a fin.

Rudimentos de los archivos Secuenciales; dependiendo del dispositivo de almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera un sistema secuencial.

Al finalizar un archivo secuencial se denota con una marca de fin de archivo. (End end-of-file)

El usuario de un archivo secuancial puede ver los registros en un orden secuancial simple.

La única forma de recuperar registros es comenzar al principio y extraerlos en el orden contemplado.

Cuestiones de programación; la manipulación de los archivos se hace en el contexto de la programación en un lenguaje por procedimientos de alto nivel. Estos lenguajes tienden a expresar la manipulación de archivos mediante subrutinas que se definen como parte del lenguaje formal o se incluyen como extensiones del lenguaje en una biblioteca estándar.

La mayor parte de los lenguajes por procedimiento de alto nivel cuenta con características que ayudan a detectar la marca de fin de archivo.

 

3.3. -ARCHIVOS DE TEXTO.

También conocidos como (Slream File) son utilizados para almacenar documentos que consisten en texto; En ellos, cada registro es un solo símbolo o código de control.

El leer estos archivos recibimos la información en orden secuencial en el que aparece cuando lo vemos en un monitor.

Page 96: Algoritmos y Lenguajes de Programacion

Los archivos de texto son una secuencia de líneas separadas por marcas de fin de línea.

Rudimentos de los archivos de textos; El usuario escribe los archivos de textos mediante un procesador de palabras que le permitirá almacenar la información pero no estrictamente en forma secuencial.

El procesador también nos permite desplazarnos por todo el bloque de información y permitirnos realizar modificaciones.

Mientras el usuario avance rápidamente en la lectura de registro lograra ver mas archivos.

Cuestiones de programación; Casi todos los entornos de programación por procedimientos de alto nivel cuentan con subrutinas para manipular los archivos de texto.

Estas subrutinas pueden formar parte de la definición formal del lenguaje o que se ofrezca en biblioteca como extensiones del mismo.

 

3.4. - ARCHIVOS INDIZADOS.

Es la aplicación de incluir índices en el almacenamiento de los archivos; de esta forma nos será más fácil buscar algún registro sin necesidad de ver todo el archivo.

Un índice en un archivo consiste en un listado de los valores del campo clave que ocurren en el archivo, junto con la posición de registro correspondiente en el almacenamiento masivo.

Fundamento de los Índices

a.- La colocación de un listado al inicio del archivo: para la identificación del contenido.

b.- La presentación de un segundo índice: para reflejar la información de cada punto principal del índice anterior.

c.- La actualización de los índices: Cuando se insertan y eliminan archivos, es preciso actualizar los índices para evitar contratiempos actualizando un archivo.

d.- La organización de un índice: Nos evita examinar archivo por archivo para recuperar algún registro buscado; por lo tanto ahorraríamos tiempo si tenemos una adecuado organización de los índices.

Page 97: Algoritmos y Lenguajes de Programacion

Cuestiones de Programación

Algunos lenguajes de alto nivel cuentan con subtítulos para manipular los archivos de un registro indizado.

Valiéndose de las subrutinas es posible escribir programas sin tener que preocuparse por la estructura real del sistema de índices que se aplique.

 

3.5. - ARCHIVOS DISPERSOS.

También llamados (Hashed Files) representan un sistema de almacenamiento de archivos que solo ofrece acceso directo, y permiten calcular la posición de un registro en el almacenamiento masivo.

Rudimentos de los archivos dispersos.

El usuario debe dividir el área de almacenamiento asignando al archivo en varias secciones llamadas cubetas para poder ingresar los datos.

La distribución de la información en las cubetas es problemática debido a que la estructura de los archivos es dispersa.

Dentro de los archivos se presentan colisiones de información debido al agrupamiento de los registros ingresados.

Cuestiones de programación.

Casi ninguno de los lenguajes de programación por procedimientos en la actualidad ofrece implantaciones directas de archivos dispersos; esto es debido a las cuestiones dependientes de la aplicación implicadas en el diseño de estos archivos.

 

4. -MEDIDAS DE UTILIZACIÓN DE LOS ARCHIVOS.

Para utilizar un archivo debemos tener en cuenta:

1. - Índice de Volatilidad; Un archivo es volátil cuando tiene un alto porcentaje de adiciones y supresiones debido al ingreso o eliminación de registros respecto al numero promedio de registros que haya en el archivo.

Page 98: Algoritmos y Lenguajes de Programacion

2. - Índice de Actividad; Un archivo es activo cuando tiene un alto porcentaje de utilidad sea de actualización o consulta en un periodo de tiempo fijo respecto al numero promedio de registro que se encuentran en el archivo.

El índice de actividad suele emplearse para saber si un archivo puede explotarse como una organización secuencial o relativa.

Archivos de acceso directo (con tipo)

Los archivos tipeados (con tipo), también llamados archivos binarios, contienen datos de tipo simple o estructurado, tales como integer, real , record, etc., excepto otro tipo de archivos.

Los archivos con tipos están estructurados en elementos o registros (record) cuyo tipo puede ser cualquiera. A los elementos de estos archivos se accede directamente, al no situarse éstos en posiciones físicamente consecutivas, sino en posiciones lógicas. Esta es la razón por la cual se les denomina archivos de acceso aleatorio o directo. Los elementos de los archivos aleatorios son de igual tamaño y el término acceso directo significa que es posible acceder directamente a un elemento con solo especificar su posición

5. - DEFINICIONES.

Los más utilizados en el desarrollo del tema son:

Archivo (Fichero):

Conjunto de información estructurada en unidades de acceso denominada registro.

Registros.

Estructura de datos formada por uno o más elementos denominados "Campos" y estos pueden estar compuestos a su vez por "subcampos".

Claves:

Se denomina a un campo especial del registro que sirve para identificarlo

Bloque:

Es la cantidad de información que se transfiere en cada operación de lectura o escritura sobre un archivo.

Campo:

Page 99: Algoritmos y Lenguajes de Programacion

Es cada uno de los diferentes datos que constituyen un registro lógico.

FUENTE: http://www.monografias.com/trabajos7/arch/arch.shtml