Vous êtes sur la page 1sur 123

ANTOLOGA

DISEO ESTRUCTURADO DE ALGORITMOS


INGENIERA EN SISTEMAS COMPUTACIONALES PRIMER SEMESTRE

FILOSOFA INSTITUCIONAL
Nuestra Universidad ha sido creada con la finalidad de ofrecer los mejores servicios Educativos, independientemente del nivel que estemos ofertando, y que sea accesible para todas las personas que tengan los deseos de seguir estudiando, buscar siempre la innovacin en un sentido real, es decir, aplicarlo tener siempre ese sentido de urgencia que tanto bien le hace a todas las organizaciones, todos aquellos que participemos dentro de Nuestra Organizacin tratremos siempre la forma de mejorar nuestro trabajo, y realizarlo de una manera gil, oportuna y eficiente. Cumplir con nuestros alumnos a travs de una Educacin de calidad, con nuestros docentes y personal ofrecindoles todas las herramientas para realizar mejor su trabajo, y sobre todo realizar nuestras actividades siempre alineadas a nuestros valores ya que con ello cuidaremos nuestro prestigio, necesitamos a personas comprometidas con su entorno y que den resultados para alcanzar los mximos niveles de Productividad, y sobre todo con una profunda vocacin de servicio. Estar conscientes de que tenemos que actuar en base a nuestras fortalezas, tratar de cubrir todas nuestras debilidades, y las necesidades que demanda el mundo laboral, siempre saber que la competencia ms fuerte que tenemos es con nosotros mismos y por eso trataremos de ser mejores cada da, realizando nuestro trabajo con energa, entusiasmo y pasin por hacer bien las cosas.

MISIN
En Nuestra Institucin buscamos satisfacer la necesidad de Educacin que promueva el espritu emprendedor, basado en Altos Estndares de Calidad Acadmica, que propicie el desarrollo de los Estudiantes, los docentes y empleados. A travs de la incorporacin de tecnologas en el proceso Enseanza Aprendizaje.

VISIN
A travs de nuestra Misin Institucional, propiciaremos ser la mejor oferta acadmica en cada Regin de Influencia, buscando en todo momento los ms altos estndares de Calidad, el crecimiento sostenible y las ofertas acadmicas innovadoras con pertinencia para la sociedad, as como la incorporacin de la tecnologa en cada proceso de formacin profesional.

VALORES
Disciplina Honestidad Respeto Responsabilidad Equidad Libertad

INTRODUCCIN GENERAL DE LA MATERIA


La metera aporta conocimientos y habilidades para las materias de programacin y anlisis y diseo de sistemas.

OBJETIVO GENERAL
El alumno ser capaz de plantear metodolgicamente las soluciones de problemas susceptibles de ser computarizados a travs del manejo de tcnicas estructuradas de diseo y formulacin de algoritmos de manera que estos queden debidamente documentados.

OBJETIVO ESPECFICOS
Que el alumno conozca los fundamentos de los algoritmos. Que el alumno conozca los lenguajes algortmicos. Que el alumno conozca la metodologa para la solucin de problemas por medio de computadoras. Que el alumno conozca las tcnicas bsicas del diseo de algoritmos.

El alumno manejar los conceptos fundamentales para el diseo de algoritmos.

BIBLIOGRAFA BSICA
Wirth, Niklaus. Algoritmos y Estructura de Datos. Editorial Mc Graw Hill Mxico, 1989 Jean Paul Tremblay, Richard B. Bunt. Introduccin a la Ciencia de las Computadoras, Enfoque Algortmico. Editorial Mc Graw Hill Mxico, 1990 Luis Joyanes Aguilar. Fundamentos de Programacin, Algoritmos y Estructura de Datos. Editorial Mc Graw Hilll Mxico, 1994 Guillermo Levine. Introduccin a la Computacin y la Programacin Estructurada. Editorial Mc Graw Hill Mxico, 1991 Goodman, Hedetmienic. Introduction to the Design and Analysis of Algorithms. Editorial Mc Graw Hill U.S.A., 1991

James Martn & Carma Mc Clure. Diagraming Techniques for Analysis and Programmers. Editorial Prentice Hall

BIBLIOGRAFA COMPLEMENTARIA
http://www.gayatlacomulco.com/tutorials/algoritmos/index.htm http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r45057.PDF http://aprendecomputofacil.blogspot.mx/2009/12/modelo-solucion-tipos-dedatos-e.html

CRITERIOS DE EVALUACIN
Informes y exposicin sobre investigaciones Participacin en clase Asistencia a clases Exmenes escritos Total Escala de calificaciones ser de 20% 20% 10% 50% 100% 5 al 10

La calificacin mnima aprobatoria ser de

UNIDAD I CONCEPTOS BASICOS

I.1. INTRODUCCIN I.1.1DE LOS PROBLEMAS A LOS PROGRAMAS 1.1.2 BREVES PRACTICAS DE PROGRAMACIN 1.2 DEFINICIN DEL LENGUAJE

1.3 DEFINICIN DE ALGORITMOS 1.4 DEFINICIN DE LENGUAJES ALGORTMICOS 1.5 HISTORIA Y APLICACIN DE LOS LENGUAJES ALGORTMICOS

1.1 INTRODUCCION
Los sistemas modernos de computacin consisten en una gran conjuncin de elementos de circuitos (hardware) y de programacin (software) que han sido diseados para proporcionar a la computacin un ambiente productivo y hasta cierta medida agradable.

El trmino Sistema de Cmputo se utiliza para sealar lo que el usuario emplea, en lugar del trmino Computadora. En los primeros aos de la computacin, los usuarios del sistema deban interactuar ms estrechamente con el hardware real que lo que es hoy necesario, muchas funciones que deban 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 computacin, es que se ha desarrollado la multiprogramacin, en la cual varios usuarios emplean el sistema de forma simultnea, como Windows por ejemplo. Un trmino 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 clculos, el cual debe expresarse de forma que sea entendido por el CPU. Un CPU slo puede entender instrucciones que estn expresadas en trminos de su lenguaje mquina, pero esto se explicar ms adelante. Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilizacin de la computadora en la resolucin de problemas aporta grandes ventajas, como son la rapidez de ejecucin y la confiabilidad de los resultados obtenidos. En la actualidad los sistemas de computadoras consisten en un enorme conjunto de elementos de circuitos (hardware)y programacin (software), que se han diseado para proporcionar a la computacin un ambiente productivo y agradable.

Muchos de los problemas acarrean complicados clculos, as como la utilizacin de grandes cantidades de datos; esto nos causa muchos problemas ya que el riesgo de equivocarse es muy grande, y tambin con la utilizacin de grandes cantidades de datos el trabajo se convierte en pesado y rutinario. Mediante la computadora se eliminan estos problemas, pues su capacidad se basa en la rapidez, la precisin y memoria. Sin embargo la computadora no puede hacer todo por si sola. Es preciso que se le describa con detalle y en su lenguaje, todos los pasos que tiene que realizar para la resolucin del problema. Esta descripcin es lo que se conoce como programa de computadora, este dirigir el funcionamiento de la mquina en la resolucin del problema. La primera decisin que hay que tomar cuando se crea un programa, es contestar a las preguntas: Qu es lo que el programa se supone que va a hacer?, cul es el problema que se va a resolver?,Qu tarea va a realizar nuestro programa?. Cuanto ms se detalle la descripcin, ms fcil ser lograr resultados.

1.2 DEFINICIN DE LENGUAJE DE PROGRAMACIN


Un Lenguaje de Programacin es aqul que es utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. Estos lenguajes se clasifican en tres grandes categoras: Lenguaje maquina Lenguaje de bajo nivel (ensamblador)

Lenguaje de alto nivel

1.3 DEFINICIN DE ALGORITMO


"Un algoritmo se define como un mtodo que se realiza paso a paso para solucionar un problema que termina en un nmero finito de pasos". Las caractersticas fundamentales que debe cumplir todo algoritmo son: Debe ser preciso. e indicar el orden de realizacin 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 algn momento; o sea debe tener un nmero finito de pasos. La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. Algoritmos Cotidianos Se refiere a todos aqullos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodologa para resolverlos. Algunos ejemplos son: Disear un algoritmo para cambiar una llanta a un coche. 1. 2. 3. 4. Inicio. Traer gato. Levantar el coche con el gato. Aflojar tornillos de las llantas.

5. 6. 7. 8. 9.

Sacar los tornillos de las llantas. Quitar la llanta. Poner la llanta de repuesto. Poner los tornillos. Apretar los tornillos.

10. Bajar el gato. 11. Fin Un cliente ejecuta un pedido a una fbrica. La fbrica 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 nmeros enteros. Pasos del algoritmo: 1.- Comparar el primero y el segundo entero, deduciendo cul es el mayor. 2.- Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado.

Los pasos anteriores se pueden descomponer en otros pasos ms simples en los que se denomina refinamiento del algoritmo. 1.- Obtener el primer nmero (entrada), denominado NUM1 2.- Obtener el segundo nmero (entrada), denominado NUM2 3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR. 4.- Obtener el tercer nmero (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 nmero MAYOR. 6.- Presentar el valor MAYOR (salida). 7.- Fin

1.4 DEFINICIN DE LENGUAJES ALGORTMICOS


Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle. La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente manera: Lenguaje natural Lenguaje de diagrama de flujo Lenguaje natural de programacin Lenguaje de programacin de algoritmos

Lenguaje natural: Es aqul que describe en espaol, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan trminos especializados de una determinada ciencia, profesin o grupo. Lenguaje de diagrama de flujo: Es aqul que se vale de diversos smbolos 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 cmputo. Lenguaje Natural de Programacin: Son aqullos que estn orientados a la solucin de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboracin de frmulas o mtodos cientficos. Tiene las siguientes caractersticas: Evita la ambigedad (algo confuso que se puede interpretar de varias maneras). Son precisos y bien definidos Utilizan trminos familiares en el sentido comn Eliminan instrucciones innecesarias

Lenguaje de Programacin de Algoritmos: Es aqul que se utiliza para introducir en la computadora un algoritmo especfico. Se les conoce tambin como Lenguaje de Programacin. Lenguaje de Programacin: Es un conjunto de palabras, smbolos y reglas sintcticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.

Los lenguajes de programacin pueden clasificarse por diversos criterios, siendo el ms comn su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la mquina. Los principales tipos de lenguajes utilizados son tres: Lenguaje maquina Lenguaje de alto nivel (ensamblador) Lenguaje de alto nivel

Lenguaje Mquina Son aqullos que estn escritos en lenguajes directamente inteligibles por la mquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dgitos 0 y 1) que especifican una operacin y las posiciones (direccin) de memoria implicadas en la operacin se denominan instrucciones de mquina o cdigo mquina. El cdigo mquina es el conocido cdigo binario. Las instrucciones en lenguaje mquina dependen del hardware de la computadora y, por tanto, diferirn de una computadora a otra. Ventajas del Lenguaje Mquina Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traduccin posterior, lo que supone una velocidad de ejecucin superior a cualquier otro lenguaje de programacin. Desventajas del Lenguaje Mquina Dificultad y lentitud en la codificacin 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 prcticamente no recomendables a los lenguajes mquinas. Lenguajes de Bajo Nivel Son ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotcnicos. Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son: en ingls: ADD, SUB, DIV, etc.; en espaol: SUM, RES, DIV, etc. Una instruccin tpica de suma sera: ADD M, N, P Esta instruccin significa "sumar el contenido en la posicin de memoria M al nmero almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria P". Evidentemente es ms sencillo recordar la instruccin anterior con un nemotcnico que su equivalente en cdigo mquina. 0110 1001 1010 1011 Un programa escrito en lenguaje ensamblador, requiere de una fase de traduccin al lenguaje mquina 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 mquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.

Ventajas del lenguaje ensamblador frente al lenguaje mquina Mayor facilidad de codificacin y, en general, su velocidad de clculo.

Desventajas del lenguaje ensamblador Dependencia total de la mquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes mquinas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Machintosh. La formacin de los programadores es ms compleja que la correspondiente a los programadores de alto nivel, ya que exige no solo las tcnicas de programacin, sino tambin el conocimiento del interior de la mquina. Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran bsicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrnicos. Lenguajes de Alto Nivel Estos lenguajes son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes mquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la mquina (las instrucciones no dependen del diseo 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 modificacin en diferentes tipos de computadoras. Ventajas de los lenguajes de alto nivel

El tiempo de formacin de los programadores es relativamente corto comparado con otros lenguajes.

La escritura de programas se basa en reglas sintcticas 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 ms fciles. Reduccin 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 mquina que se explotan mucho mejor en lenguajes mquina y ensambladores. Aumento de la ocupacin de memoria. El tiempo de ejecucin de los programas es mucho mayor.

Para una mejor compresin de este tema se definir el concepto de programa, por ser este un trmino muy utilizado en el diseo estructurado de algoritmos. Programa: Es un conjunto de instrucciones escritas en un lenguaje de programacin que indican a la computadora la secuencia de pasos para resolver un problema.

1.5

HISTORIA

APLICACIN

DE

LOS

LENGUAJES

ALGORTMICOS

Al igual que los idiomas sirven de vehculo de comunicacin entre los seres humanos, existen lenguajes que realizan la comunicacin entre los seres humanos y las computadoras. Estos lenguajes permiten expresar los programas o el 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 componan en el lenguaje real de las mquinas mismas. La dificultad de programar las mquinas de esta manera limitaba drsticamente su utilidad y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programacin ms orientados hacia la expresin de soluciones con la notacin de los problemas mismos. Los primeros lenguajes de programacin se conocieron como Lenguajes Ensambladores, un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un cdigo especial llamado mnemnico para cada una de las operaciones de la mquina y se introduce una notacin especial para especificar el dato con el cual debe realizarse la operacin. A mediados de los aos 60s aparecieron los primeros lenguajes de propsito general como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc. pero el desarrollo de nuevas tecnologas, tanto en arquitectura de computadoras como en lenguajes de programacin, contina 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 programacin actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C.

UNIDAD 2 METODOLOGIA PARA LA SOLUCION DE PROGRAMAS POR MEDIO DE COMPUTADORAS

2.1. DEFINICIN DE PROBLEMAS 2.2 ANLISIS DE DATOS 2.3 DISEO DE SOLUCIN 2.4 CODIFICACIN 2.5 PRUEBA Y DEPURAMIENTO 2.6 DOCUMENTACIN 2.7 MANTENIMIENTO

METODOLOGIA PARA LA SOLUCION DE PROBLEMAS POR MEDIO DE COMPUTADORAS


A fin de resolver un problema utilizando sistemas de cmputo, debe seguirse una serie de pasos que permiten avanzar por etapas bien definidas hacia la solucin. Estas etapas son las siguientes: Definicin del problema Anlisis de datos Diseo de la solucin Codificacin Prueba y depuracin Documentacin Mantenimiento

2.1 DEFINICIN 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.

2.2 ANLISIS DE LOS DATOS


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

Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes aspectos: Los resultados esperado Los datos de entrada disponibles Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (formulas, 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 crculo y calcular e imprimir su superficie y circunferencia. Anlisis Las entradas de datos en este problema se concentran en el radio del crculo. Dado que el radio puede tomar cualquier valor dentro del rango de los nmeros reales, el tipo de datos radio debe ser real. Las salidas sern dos variables: superficie y circunferencia que tambin sern de tipo real. Entradas: Radio del crculo (variable RADIO). Salidas: Superficie del crculo (variable AREA). Circunferencia del crculo (variable CIRCUNFERENCIA). Variables: RADIO, AREA, CIRCUNFERENCIA tipo real.

2.3 DISEO DE LA SOLUCIN


Una computadora no tiene capacidad para solucionar problemas ms que cuando se le proporcionan los sucesivos pasos a realizar, esto se refiere a la obtencin 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 descripcin del algoritmo resultante en un lenguaje natural, de diagrama de flujo o natural de programacin. Como puede verse, solo se establece la metodologa para alcanzar la solucin en forma conceptual, es decir; sin alcanzar la implementacin en el sistema de cmputo.

De acuerdo al ejemplo 2.1 tenemos que la informacin proporcionada constituye su entrada y la informacin producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver ms eficazmente por la computadora cuando se dividen en subproblemas que sean ms fciles de solucionar. El problema de clculo de la longitud y superficie de un crculo se puede descomponer en subproblemas ms simples: Leer datos de entrada Calcular la superficie y la longitud Escribir resultados (datos de salida)

2.4 CODIFICACIN
Se refiere a la obtencin de un programa definitivo que pueda ser comprensible para la mquina. Incluye una etapa que se reconoce como compilacin. Si la codificacin original se realiz en papel, previo a la compilacin deber existir un paso conocido como transcripcin.

Programa Fuente

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

Es entendible por el programador

Programa Ejecutable Esta en lenguaje maquina Entendible por la maquina

2.5 PRUEBA Y DEPURACIN


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. Comnmente se inicia la prueba de un programa introduciendo datos vlidos, invlidos e incongruentes y observando como reacciona en cada ocasin. El proceso de depuracin consiste en localizar los errores y corregirlos en caso de que estos existan. Si no existen errores, puede entenderse la depuracin como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeo del programa.

2.6 DOCUMENTACIN
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin errores), se procede a la utilizacin para resolver problemas del tipo que dio origen a su diseo.

En vista de que esta utilizacin no podr ser supervisada en todas las ocasiones por el programador, debe crearse un manual o gua de operacin que indique los pasos a seguir para utilizar el programa.

2.7 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 operacin. Cualquier actualizacin o cambio en el programa deber reflejarse en su documentacin.

UNIDAD 3 ENTIDADES PRIMITIVAS PARA EL DISEO DE INSTRUCCIONES

3.1 TIPOS DE DATOS 3.2 OPERACIONES Y OPERNDOS 3.3 EXPRESIONES 3.4 IDENTIFICADORES COMO LOCALIDADES DE MEMORIA

3.1 TIPOS DE DATOS


Un dato se define como la expresin general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, despus de las etapas intermedias, en datos de salida. Los datos se clasifican en diversas categoras, segn el tipo de mquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categoras : Numricos Lgicos Cadenas

Datos Numricos Son aqullos que representan una cantidad o valor determinado. Su representacin 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 numrico entero (integer). Tipo numrico real (real)

Enteros Es un conjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos. Algunos ejemplos son: Reales Consiste en un subconjunto de los nmeros reales. Estos nmeros siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real consiste de un nmero entero y una parte decimal. Algunos ejemplos son: 0.52 664.32 6.579 8.0 -9.3 -47.23 3-7 -10 9 15.25 50

Cadenas Son los datos que representan informacin textual (palabras, frases, smbolos, etc.). No representan valor alguno para efectos numricos. Pueden distinguirse porque son delimitados por apstrofes o comillas. Se clasifica en dos categoras:

Datos tipo carcter (char) Datos tipo cadena (string)

Datos Tipo Carcter Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene solo un carcter. Reconoce los siguientes caracteres: Caracteres alfabticos (A,B,C,Z,a,b,cz) Caracteres numricos (0, 1, 2, 9) Caracteres especiales (+, -, *, ^, ., ;, <, >, $,.)

Datos Tipo Cadena (string) Es una sucesin de caracteres que se encuentran delimitados por una comilla (apstrofe) o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los separadores o delimitadores. Ejemplos: `Hola Mortimer `12 de octubre de 1496 `Enunciado cualquiera

Nota: Los smbolos disponibles para la formulacin de caracteres y de cadenas son aqullos que se encuentran en el cdigo ASCII.

ASCII (American Standard Code for Information Interchange). Lgicos Tambin se le denomina Booleano, es aqul 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, segn sea. Las categoras 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 utilizacin de Tipos Compuestos, siendo estos, datos que tienen una estructura predeterminada.

Tipos Compuestos Entre los principales tipos compuestos se encuentran los siguientes: a.- SUBRANGO: Son aqullos en los que se especifica con precisin el intervalo de valores vlidos para un dato. Ejemplos: 0..100 (son enumerativos de tipo entero)

'A'..'Z' (son enumerativos de tipo cadena) Los Reales no son vlidos para crear enumerativos, ya que su intervalo no est definido. b.- ENUMERATIVOS : Son aqullos en los que se definen individualmente los valores para un dato. Ejemplos: (0,25,40,52) Siempre deben ponerse netre parntesis. c.- DEFINIDOS POR EL USUARIO: Son aqullos que el programador crea para satisfacer las necesidades del programa en diseo. Constantes y variables Una Constante es aqulla que no cambia de valor durante la ejecucin de un programa (o comprobacin de un algoritmo en este caso). Se representa en la forma descrita para cada categora. Las Variables son aqullas que pueden modificar su valor durante la ejecucin de un programa (idem). Su representacin se da a travs de letras y smbolos generalmente numricos a los que se les asigna un valor. Ejemplos: Constantes Numricos 36 Variables A

450.35 0.58 'A' Cadena 'Juan' 'La Paz' Falso Lgicos Verdadero

Nom Edad Ciudad Estatura

3.2 OPERADORES Y OPERANDOS


Operadores Un operador es el smbolo que determina el tipo de operacin o relacin que habr de establecerse entre los operandos para alcanzar un resultado. Los operadores se clasifican en tres grupos: Aritmticos Relacionales lgicos

1.- Operadores Aritmticos

Son aqullos que permiten la realizacin de clculos aritmticos. Utilizan operandos numricos y proporcionan resultados numricos. Operador + * / Div Mod ^ 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 En la expresin 7+3, los valores 7 y 3 se denominan operandos. El valor de la expresin 7+3 se conoce como resultado de la expresin. Todos los operadores aritmticos no existen en todos los lenguajes de programacin, por ejemplo, en Fortran no existen Div y mod. Operacin Suma Resta Multiplicacin Divisin real Divisin entera Residuo Exponenciacin

Operadores Div y Mod El smbolo / se utiliza para la divisin real, y el operador Div representa la divisin entera. Expresin 10.5/3.0 2.0/4.0 30/30 6/8 Resultado 3.5 0.25 0.5 1.0 0.75 Expresin 10 Div 3 18 Div 2 30 Div 30 10 Mod 3 10 Mod 2 Resultado 3 9 1 1 0

Operadores Relacionales Permiten realizar comparaciones de valores de tipo numrico o carcter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lgicos. 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: expresin1 operador de relacin expresin2 El resultado de la operacin 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 relacin se pueden aplicar a cualquiera de los cuatro tipos de datos estndar: enteros, real, lgico y carcter. A < K = Verdadero A > a = Falso MARIA < JUAN = Falso (se considera la primera letra) JAIME > JORGE = Falso Nota: La comparacin de cadenas se rige por el cdigo ASCII. Prioridad De Operadores Aritmticos y Relacionales Determina el orden en que habrn de realizarse las operaciones en una expresin determinada. Para obtener la prioridad se deben conocer las siguientes reglas: Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero.

Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden de prioridad. Operador ^ *, /, Div +, -, Mod Relacionales Baja Prioridad Alta

En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha. Cuando se desea realizar una operacin 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 Solucin: -4 *7 + 2 ^ Resulta: -4 * 7+ 8/4 -5 -28 + 8/4 -5

-28 + 2 - 5 -26 - 5 -31 Los parntesis tienen prioridad sobre el resto de las operaciones. A * (B+3) La constante 3 se suma primero al valor de B, despus este resultado se multiplica por el valor de A. (A*B) +3 A y B Se multiplican primero y a continuacin se suma 3. A + (B/C) + D Esta expresin equivale a A+ B/C + D

Operadores Lgicos Son aqullos que permiten la combinacin de condiciones para formar una sola expresin lgica. Utilizan operandos lgicos y proporcionan resultados lgicos tambin. Operador not and Or xor Relacin Negacin (No) Conjuncin (Y) Disyuncin (O) Disyuncin Exclusiva (O/SOLO)

Se obtiene Verdadero si:

NOT AND

El operando es falso Ambos verdaderos Al menos un operando es verdadero Solo uno de los operandos son verdadero NOT(X) V F V F NOT(Y) V V F F X AND Y F F F V X OR Y F V V V X XOR Y F V V F operandos son

OR

XOR

X F V F V

Y F F V V

Prioridad De Los Operadores Lgicos Los operadores aritmticos seguan un orden especfico o de prioridad cuando existan ms de un operador en las expresiones. De modo similar los operadores lgicos 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.

Asignacin

La operacin de asignacin es el modo de darle valores a una variable. La operacin de asignacin se representa por el smbolo u operador . La

operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacin. 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 declaracin previa de tales variables. En una asignacin se resuelve, primeramente la expresin (al lado derecho del smbolo de asignacin) y se asigna el resultado en la variable. El formato general de asignacin es: Nom_variable Expresin

Donde Expresin puede ser una variable o constante, operacin, funcin. Ejemplo: A 9

Significa que la variable A se le ha asignado el valor 9. La accin de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde y se remplaza por el nuevo valor. As en la secuencia de operaciones: A A A 30 189 9

Cuando se ejecutan, el ltimo valor que toma A ser 9, ya que los valores anteriores a este han desaparecido. Las acciones de asignacin se clasifican segn sea el tipo de expresiones : Aritmticas, Lgicas y de Caracteres. Asignacin Aritmtica Las expresiones en las operaciones de asignacin son aritmticas: Suma 5+10+2 Se evala la expresin 5+10+2 y se asigna a la variable Suma,

es decir, 17 ser el valor que toma Suma. Asignacin Lgica La expresin que se evala en la operacin de asignacin es lgica. Supngase que M, N, y P son variables de tipo lgico. M N P 8<5 M o (7 <= 12) 7>6

Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso, verdadero, verdadero respectivamente. Asignacin de caracteres La operacin que se evala es de tipo carcter. x '3 de Mayo de 1999'

La accin de asignacin anterior asigna la cadena de caracteres '3 de Mayo de 1999' a la variable de tipo carcter x. Entrada y Salida de Informacin Los clculos que realizan las computadoras requieren para ser tiles la Entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirn en resultados, es decir, Salida. Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se conoce como operacin 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 operacin 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 tringulo. Entrada

Frmula (A= B*h/2) Datos (Base, altura)

Proceso

Multiplicar Base y altura. Dividir resultado de la multiplicacin anterior entre dos.

Mostrar resultado de divisin anterior.

Salida

Area del tringulo.

Algoritmo Inicio leer(B) leer(h) x A B*h x/2

escribir(A) Fin

3.3 EXPRESIONES
Las expresiones son combinaciones de constantes, variables, smbolos de operadores, parntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicional; por ejemplo : a + b ( b+2) Aqu los parntesis indican el orden de clculo. Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de objetos que manipulan, las expresiones se clasifican en : Aritmticas Relacionales Lgicas Carcter

El resultado de la expresin numrica es de tipo numrico ; el resultado de una expresin relacional y de una expresin lgica es de tipo lgico ; el resultado de una expresin carcter es de tipo carcter.

1.- Expresiones Aritmticas Las expresiones aritmticas son anlogas a las frmulas matemticas. Las variables y constantes son numricas (real o entera) y las operaciones son las aritmticas. + * / **, ^ div mod suma resta multiplicacin divisin exponenciacin divisin entera mdulo (resto)

Los clculos que implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son tambin. 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 Lgicas (booleanas) Es una expresin que solo pueden tomar los valores de : verdadero y falso. Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones y otras expresiones lgicas utilizando los operadores lgicos not, and y or, y los operadores relacionales (de relacin o comparacin) =, >, <, <=, >=, <>.

3.4 IDENTIFICADORES COMO LOCALIDADES DE MEMORIA


Los algoritmos y programas de computadora contienen ciertos valores que no deben cambiar durante la ejecucin del programa. Tales valores se llaman constantes.

Existen otros valores que cambiaran durante la ejecucin del programa o corrida de escritorio (tambin llamada prueba de escritorio) del algoritmo; a estos valores se les llama variable.

Constantes Una constante es un dato o datos cuyo valor no puede cambiar durante la ejecucin del programa o el desarrollo del algoritmo. Por ejemplo, si tenemos la frmula para resolver el rea de un triangulo. Independientemente de los valores de la base y la altura cambien, segn la dimensin del triangulo, siempre se dividir entre 2, por lo tanto el 2 es una constante ya que nunca cambia. Variables Una variable es un nombre asociado a un elemento de datos que est situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecucin de un programa o desarrollo del algoritmo. En el mismo ejemplo del rea de un triangulo, si las dimensiones de este cambian por lo tanto el valor de la base (b) y de la altura (h) varan. Entonces podemos decir que la base y la altura son variables. Identificadores Son los nombres que reciben las variables y algunas constantes, suelen constar de varios caracteres alfanumricos, de los cuales primero suelen ser una letra.

Reglas para asignar identificadores: Siempre debern iniciar con una letra. Pueden contener letras y nmeros. No se permiten caracteres especiales, el nico permitido es el _ (guin bajo). No deben haber espacios en blanco. Deben ser significativos y tener relacin con el objeto que representan.

UNIDAD 4 TECNICAS DE DISEO

4.1 TOP DOWN 4.2 BOTTOM UP 4.3 WARNTER

TECNICAS DE DISEO"
Con el objeto de facilitar el diseo de algoritmos y la organizacin de los diversos elementos de los que se componen se utilizan algunas tcnicas que muestran una metodologa a seguir para resolver los problemas. Estas tcnicas hacen que los programas sean ms fciles de escribir, verificar, leer y mantener. Algunas de las tcnicas ms conocidas son : Top down Bottom up Warnter

4.1 TOP DOWN


Es una tcnica para disear que consiste en tomar el problema en forma inicial como una cuestin global y descomponerlo sucesivamente en problemas ms pequeos y por lo tanto, de solucin ms sencilla. La descomposicin 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 fcilmente. El problema se descompone en etapas o estructuras jerrquicas, de modo que se puede considerar cada estructura como dos puntos de vista : lo que hace?, y cmo 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. "cmo lo hace?" Ejemplo de un diseo descendente (top-down ) de un control de almacn :

4.2 BOTTON UP
Esta tcnica consiste en partir de los detalles ms precisos del algoritmo completando sucesivamente mdulos 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 mdulos ms grandes se plantea como objetivo final la resolucin global del problema. Este mtodo es el inverso del anterior y es recomendable cuando se tiene un modelo a seguir o se cuenta con amplia experiencia en la resolucin de problemas semejantes. La tcnica de Botton Up es frecuentemente utilizada para la realizacin de pruebas a sistemas ya concluidos.

4.3 WARNIER ORR


Es una tcnica que utiliza una representacin semejante a la de cuadros sinpticos para mostrar el funcionamiento y organizacin de los elementos que conforman el algoritmo. Bsicamente, utiliza una notacin de llaves para organizar los mdulos y se auxilia en la siguiente simbologa para indicar operaciones de control. Smbolo + 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 almacn

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

UNIDAD 5 TECNICAS PARA LA FORMULACION DE ALGORITMOS

5.1 DIAGRAMAS DE FLUJO 5.2 PSEUDOCDIGO 5.3 DIAGRAMAS ESTRUCTURADOS

TENICAS PARA LA FORMULACION DE ALGORITMOS


Las tcnicas analizadas en la unidad anterior permiten un diseo global del algoritmo, pero ocasionalmente pueden desatender detalles especficos de este. Las tres tcnicas de formulacin de algoritmos ms populares son: Diagramas de flujo Pseudocdigo Diagramas estructurados

5.1 DIAGRAMAS DE FLUJO


Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. La simbologa utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse a un patrn definido previamente.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO Smbolo Funcin

Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100).

Ejemplo: Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayora o minora de edad segn sea el caso para un nombre especfico.

5.2 PSEUDOCDIGO

Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. El pseudocdigo naci como un lenguaje similar al ingls y era un medio representar bsicamente las estructuras de control de programacin estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, adems de todo esto es fcil su traduccin a lenguajes como pascal, COBOL, C, FORTRAN o BASIC. El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls (similares a sus homnimos en los lenguajes de programacin), tales como star,begin, end, stop, if-then-else, while, repeat-until.etc Secuencia Inicio accin1 accin2 : accin n Fin

Decisin Simple si condicin entonces accin1 accin2 : accin n Doble si condicin then accin1 accin2 : en caso contrario accin1 acci2 Iteraccin Fija para var. Entera inicial hasta final hacer accin1 accin2 : accin n

Condicional al inicio mientras condicin hacer accin1 accin2 : accin n

Condicional al final Repetir accin1 accin2 : accin n Hasta que condicin Seleccin casos selector de valor1 : accin1 accin2 valor2 : accin1 accin2 valor n : accin1 accin2 Ejercicio:

Se requiere preguntar dos valores, y a continuacin ofrecer un men con las operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la posibilidad de una nueva operacin. Declaracin de variables: Real: X, Y, RESPUESTA Entero: OPCION Carcter: OP Inicio Repetir escribir(Primer valor : ) leer(X) escribir(Segundo valor : ) leer(Y) escribir(1) Suma ) escribir(2) Resta ) escribir(3) Multiplicacin ) escribir(4) Divisin ) escribir(Qu operacin deseas realizar ? : ) leer(OPCION) casos OPCION de 1 : RESULTADO 2 : RESULTADO 3 : RESULTADO 4 : si Y=0 entonces escribir( Error ) RESULTADO 0 X+Y X-Y X*Y

en caso contrario RESULTADO X/Y

escribir (Resultado : ,RESULTADO) escribir(Deseas otro clculo : [S/N] ) 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 nmero de repeticin. Declaracin de variables Cadena: nom entero: x, n Inicio escribir(Nombre : ) leer(nom) escribir(Cuntas veces quieres repetirlo ? : ) leer(n) para x 1 hasta n hacer

escribir(x.- , nom) Fin

5.3 DIAGRAMAS ESTRUCTURADOS


El diagrama N-S de Nassi-Schneiderman, tambin conocido como diagrama de Chapin, es como un diagrama de flujo en el que se omiten las flechas de unin 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 tcnica que permite formular algoritmos mediante una representacin geomtrica y de asignacin de espacios de un bloque especfico. Un algoritmo se representa de la manera siguiente:

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

Ejemplo: Se desea calcular el salario neto semanal de un trabajador en funcin del nmero de horas trabajadas y la tasa de impuestos.

UNIDAD 6 ESTRUCTURAS ALGORITMICAS

6.1 SECUENCIALES 6.1.1 ASIGNACIN

6.1.2 ENTRADA 6.1.3 SALIDA 6.2 CONDICIONALES 6.2.1 SIMPLE 6.2.2MLTIPLE

6.1 ESTRUCTURA SECUENCIAL

Es aqulla en la que una accin (instruccin) 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 sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representacin grfica es la siguiente: ESTRUCTURA SECUENCIAL

.... DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL

PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL Inicio : : acciones : : fin Ejemplo: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100). Pseudocdigo Inicio {clculo salario neto} leer nombre, horas, precio_hora salario_bruto impuestos salario_neto horas * precio 0.20 * salario_bruto salario_bruto_impuestos

escribir nombre, salario_bruto, salario_neto_bruto, salario_neto Fin

Diagrama de flujo

Diagrama N-S

6.2 CONDICIONALES
La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripcin ms complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un nmero de posibles alternativas resultantes de la evaluacin de una determinada condicin. Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se suelan denominar tambin estructuras de decisin o alternativas. En las estructuras selectivas se evala una condicin y en funcin del resultado la misma se realiza una opcin u otra. Las condiciones se especifcan usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con una figura geomtrica en forma de romba o bien con un tringulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser:

Simples Mltiples

Alternativa Simple (si-entonces/if-then) La estructura alternativa simple si-entonces (en ingls if-then o bien IF-THEN ) ejecuta una determinada accin cuando se cumple una determinada condicin. La seleccin si-entonces evala la condicin y. . . Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones caso de ser S1 una accin compuesta y constar de varias acciones). Si la condicin es falsa, entonces no hacer nada.

A continuacin se muestra la grfica de la estructura condicional simple.

Pseudocdigo en espaol Si <condicin> Entonces <accin S1>

Fin_si Pseudocdigo en ingls If <condicin> then

<accin S1> Diagrama N-S

end_if

Alternativas Mltiples (segn_sea, caso de / case) Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad. La estructura de decisin mltiple evaluar una expresin que podr tomar n valores distintos 1,2,3,4,..n . Segn que elija uno de estos valores en la condicin, se realizara una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles. La representacin grfica se muestra a continuacin: Diagrama de Flujo

Diagrama N-S Modelo 1 Modelo 2

Pseudocdigo En ingls la estructura de decisin mltiple se representa Case expresin of [e1]: accin S1 [e2]: accin S2 : [en]: accin Sn else accin Sx end_case

Ejemplo: Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por teclado. Los das 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 situacin anmala. Inicio Leer DIA Segn_sea DIA hacer 1: escribir('Lunes') 2: escribir('Martes') 3: escribir('Mircoles') 4: escribir('Jueves') 5: escribir('Viernes') 6: escribir('Sabado') 7: escribir('Domingo') else escribir('Error') fin_segn fin Estructuras Repetitivas Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se denominan Bucles y se denomina Iteracin al hecho de repetir la ejecucin de una secuencia de acciones. Entre las estructuras repetitivas se encuentran:

Mientras (while)

Repetir (repeat) Desde (for)

1.- Estructura Mientras (while) La estructura repetitiva while, es aqulla en que el cuerpo del bucle se repite mientras se cumple una determinada condicin, su representacin grfica es:

Pseudocdigo en espaol Mientras condicin hacer Accin S1 Accin S2 : accin Sn Fin_mientras

Pseudocdigo en ingls while condicin do <Acciones> : End_while

Diagrama N-S

Ejemplo: Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero negativo o cero. Pseudocdigo Inicio contador Leer (numero) Mientras numero > 0 hacer contador Leer (numero) Fin_Mientras Escribir('El nmero de enteros positivos es : ', contador) Fin contador+1 0

Diagrama de Flujo

Representacin en N-S

2.- Estructura Repetir (repeat) Esta estructura se ejecuta hasta que se cumpla una condicin determinada que se comprueba hasta el final del bucle. Se ejecuta al menos una vez. El bucle repetir-Hasta_que se repite mientras el valor de la expresin booleana de la condicin sea falsa, justo la opuesta de la sentencia mientras. Pseudocdigo en Espaol Repetir <acciones> : Hasta que <condicin> Diagrama de Flujo de Repetir Pseudocdigo en Ingls Repeat <acciones> : Until <condicin>

Diagrama N-S de Repetir

3.- Estructura Desde/Para (for) En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el nmero de iteraciones es fija, se debe usar la estructura desde o para. La estructura Desde ejecuta las acciones del cuerpo del bucle un nmero especfico de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle. Pseudocdigo en Espaol Desde variable(v)= vi Hasta vf hacer <acciones> : Fin_desde Donde: v: Variable ndice vi, vf: Valores inicial y final de la variable Pseudocdigo en Ingls For variable (v)= vi To vf Do <acciones>

Diagrama de Flujo de la estructura Desde/Para

Diagrama N-S de la estructura Desde/Para

UNIDAD 7 ARREGLOS

7.1 VECTORES 7.2 MATRICES

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 mltiples en forma eficiente, se requiere almacenamiento en conjunto. A esta organizacin de elementos se le conoce con el nombre de arreglo. Otra definicin de arreglo ms completa (Luis Joyanes A.), es un conjunto finito y ordenado de elementos homogneos. La propiedad "ordenado" significa que el elemento primero, segundo, terceron-simo de un arreglo puede ser identificado. Los elementos de un arreglo debern ser homogneos, es decir, del 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 trmino de dimensin.

Dimensin 0 1 2 3 Un solo punto.

Descripcin

(vector o lista) Una recta. Contiene largo. (matriz o tabla) Contiene largo y ancho. (cubo) Tiene largo, ancho y fondo.

Declaracin de un Arreglo Nom_variable : Arreglo [dimensin] de Nom_tipo En donde dimensin especifica: <subndice inferior><subndice superior> En el orden: Fila, Columna, Fondo. Ejemplo de una declaracin: 0 Dimensin: x 20 donde x, es de tipo Entero.

1 Dimensin : 5
1 2 3 4

x[2]

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

2 Dimensiones:
1 2 3 4

x[2,4]

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 resolucin de un problema son: Asignacin Lectura/escritura Recorrido (acceso secuencial) Actualizar (aadir, borrar, insertar) Ordenacin Bsqueda

7.1 VECTORES
Son aqullos de una sola dimensin, por lo que tambin son llamados arreglos Unidimensionales.

Ejemplo: Un vector de una dimensin llamado CALIF, que consta de n elementos. calif(n- calif(n2) 1)

calif(1)

calif(2)

calif(n)

El subndice o ndice de un elemento (1, 2 n) designa su posicin en la ordenacin del vector. Otras posibles notaciones del vector son : a1 , a2,,an En matemticas y algunos

lenguajes(BASIC) A(1), A(2),A(n) A[1], A[2],A[n] En programacin (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 grficamente por 50 posiciones de memoria sucesivas. Memoria NUMEROS(1) NUMEROS(2) NUMEROS(3) : : NUMEROS(50) Direccin x+49 Direccin x Direccin x+1 Direccin x+2

Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una posicin de memoria. As: NUMEROS(25) 75 (almacena el valor 75 en la posicin 25a del vector

NUMEROS y la instruccin de salida : escribir NUMEROS(25). Declaracin nom _arreglo = arreglo[liminf..limsup] de tipo donde : nom_arreglo : nombre vlido del arreglo. liminf..limsup : lmites inferior y superior del rango del arreglo. tipo : tipo de datos de los elementos del arreglo : entero, real, carcter. NOMBRES= arreglo [1..10] de carcter Significa que NOMBRES es un arreglo (array) unidimensional de 10 elementos (1 a 10) de tipo carcter.

Asignacin 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 tambin

hacerse con estructuras selectivas. Las instrucciones simples de lectura/escritura se representarn 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 subndices del vector (por ejemplo, X(I). El incremento del contador del bucle producir el tratamiento sucesivo de los elementos del vector. 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 sera: 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 lnea independiente). Actualizacin de un Vector Puede constar de tres operaciones ms elementales: a) Aadir elementos (aade un nuevo elemento al final del vector) 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 podrn aadir dos elementos ms con una simple accin de asignacin. A(5) A(6) 15 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 alfabtico y se desea insertar un nuevo nombre. {Calcular la posicin 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 posicin i+1} NOM(i+1) NOM(i)

{decrementar contador} i i-1

fin_mientras

{Insertar el elemento en la posicin P} NOM(P) nuevo elemento

{Actualizar el contador de elementos del vector} n fin 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 desde i NOM(i) j hasta N-1 hacer n+1

{llevar elemento j+1 hacia arriba} NOM(i) fin_desde {actualizar contador de elementos} {ahora tendr un elemento menos, N-1} N N-1 NOM(i+1)

Fin Referencia a un elemento de Arreglo variable de arreglo [subndice] Ejemplo : x x[3] 9

escribir (x[2]) ?
1 2

9
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 nmero, x, se llama : ,nom) Fin Nota: No se utilizaron arreglos porque no se requera de almacenamiento mltiple. b) variables: nom : Arreglo[1..5] de string

x : Entero Inicio para x 1 hasta 5 hacer escribir(Dame el nombre nmero,x, ?) leer(nom[x]) para x 1 hasta 5 hacer escribir(La persona nmero , x, se llama : ,nom[x]) Fin Ordenacin de Arreglos Existen diversos mtodos para ordenar los elementos de un arreglo. El ms conocido de ellos (no el mejor) es el Mtodo de la Burbuja. El mtodo consiste en hacer un recorrido por el arreglo comparando parejas de elementos; si estos no estn 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. Las parejas de elementos que se comparan deben ser contiguos (elemento1 y elemento2, elemento2 y elemento3, etc). El nmero total de comparaciones es n-1 (donde n es la cantidad de elementos). Ejemplo: Se requiere la ordenacin 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+1] cambio fin_si_entonces hasta cambio = falso escribir(Lista ordenada) para x 1 hasta 5 hacer LISTA[x] LISTA[x+1] aux verdadero

escribir(Elemento nmero,x, es,LISTA[x]) Fin

7.2 MATRICES
Se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesitan especificar dos subndices para poder identificar a cada elemento del arreglo.

Tambin se les llama arreglos Bidimensionales, ya que una tabla ser utilizada cuando se requiere de establecer relaciones por renglones y columnas entre datos de un tipo comn.
1 2 3 4...J...N

B(I,J)

Se considera que este arreglo tiene dos dimensiones (una dimensin por cada subndice) y necesita un valor para cada subndice, y poder identificar un elemento individual. En notacin estndar, normalmente el primer subndice se refiere a la fila del arreglo, mientras que el segundo subndice se refiere a la columna del arreglo. Es decir, B(I,J), es el elemento de -b que ocupa la Ia y la Ja columna como se muestra en la figura anterior. Un ejemplo tpico de un arreglo Bidimensional es un tablero de ajedrez. Se puede representar cada posicin o casilla del tablero mediante un arreglo, en el que cada elemento es una casilla y en el que su valor ser un cdigo representativo de cada figura del juego. Ejemplo: Se desea registrar las edades de 4 grupos de personas, cada uno de ellos con 5 elementos. Los datos debern ser mostrados en forma posterior. variables: edad: arreglo(1..4,1..5) de entero g,p: enteros Inicio

para g

1 hasta 4 hacer escribir(Grupo : ,g) para p 1 hasta 5 hacer

escribir(Edad de la persona ,p) leer(edad[g,p]) para g 1 hasta 4 hacer

escribir(Grupo ,g) para p 1 hasta 5 hacer

escribir(persona ,p, Tiene,edad[g,p],aos) Fin

Ejemplo: Se tienen 4 fbricas cada una de ellas con 6 empleados. Se desea registrar los salarios y mostrarlos posteriormente. En forma alternada deber leerse tambin el nombre de cada empleado. Durante el desplegado de los gastos se indicar el nombre y salario del empleado mejor pagado de cada fbrica as como el total de nmina ( de cada fbrica). variables: Nom: arreglo[1..4,1..6] de string salario: arreglo[1..4,1..6] de entero fab, emp, total, cont, lug, zuc: entero

Inicio para fab para emp 1 hasta 4 hacer 1 hasta 6 hacer

escribir(Empleado : ,emp) escribir(Nombre del empleado :) leer(nom[fab,emp]) escribir(Salarios del empleado : ) leer(sal[fab,emp]) para fab total cont 1 hasta 4 hacer 0 sal[fab,1]

escribir(Fbrica, fab) para emp 1 hasta 6 hacer

escribir(El empleado ,emp, se llama,nom[fab,emp], y gana ,salario[fab,emp]) total total + salario[fab,emp]

si salario[fab,emp] >= cont entonces cont lug zuc finEntonces escribir(El mejor pagado es ,nom[lug,zuc],y gana ,salario[lug,zuc]) escribir(El total es : ,total) Fin salario[fab,emp] fab emp

UNIDAD 8 MANEJO DE CADENAS DE CARACTERES

8.1 DEFINICIN 8.2 FUNCIN 8.3 MANIPULACIN

8.1 DEFINICIN
Una cadena (string) de caracteres es un conjunto de caracteres (incluido el blanco), que se almacenan en un rea contigua de la memoria. Pueden ser entradas o salidas a/desde una computadora. La longitud de una cadena es el nmero de caracteres que contiene. La cadena que no contiene ningn carcter se le denomina cadena vaca o nula. y su longitud es cero; no se debe confundir con una cadena compuesta de solo espacios en blanco. La representacin de las cadenas suele ser con comillas simples o dobles, las comillas actan como separadores, algunos ejemplos: 12 de Octubre de 1492 Hola, como ests? MEXICO ES GRANDE La cadena puede contener entre sus separadores, cualquier carcter vlido del cdigo aceptado por el lenguaje y la computadora; el blanco es uno de los caracteres ms utilizado.

Una Subcadena es una cadena de caracteres que ha sido extrada de otra de mayor longitud. 12 de es una subcadena de 12 de Octubre de 1492 como ests es una subcadena de Hola, como ests? XI es una subcadena de MEXICO ES GRANDE Datos Tipo Carcter Anteriormente se analizaron los diferentes tipos de datos y entre ellos existan el dato tipo carcter (char) que se incorpora en diferentes lenguajes de programacin, bien con este nombre, o bien como datos tipo cadena. Constantes Una constante tipo carcter es un conjunto de caracteres vlidos encerrados entre comillas, para evitar confundirlos con nombres de variables, operadores, enteros, etc Variables Una variable de cadena o tipo carcter es una variable cuyo valor es una cadena de caracteres. Las variables de tipo carcter se deben declarar en el algoritmo y segn el lenguaje tendrn una notacin u otra. var NOMBRE, DIRECCION, PAIS: carcter Cadenas de Longitud Fija Se consideran vectores de la longitud declarada, con blancos a izquierda o derecha si la cadena no tiene la longitud declarada. As el ejemplo siguiente:

E S T A

C A S A

E S

U N

R U I N

A ///

///

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Se declar con una dimensin de 24 caracteres y los dos ltimo se rellenan con blancos. Cadenas de Longitud Variable con un Mximo Se considera un puntero, con dos campos que contienen la longitud mxima y la longitud actual. 20 17 Donde: 20 = Longitud mxima 17 = Longitud actual Instrucciones Bsicas con Cadenas Las instrucciones bsicas: asignar y entrada/salida (leer/escribir) se realizan de un modo similar al tratamiento de dichas instrucciones con datos numricos. Asignacin Si la variable NOMBRE ha sido declarada como carcter var NOMBRE : carcter La instruccin de asignacin debe contener en el lado derecho de la asignacin una constante tipo carcter (una cadena) o bien otra variable tipo carcter. As: E S T A C A S A E S G U A Y /// /// ///

NOMBRE Juan Gonzlez Significa que la variable NOMBRE toma por valor la cadena Juan Gonzlez Entrada/Salida La entrada/salida desde una computadora se puede realizar en modo carcter, para ello se asignar una cadena de caracteres a una variable tipo cadena. var A,B,C,D: carcter las instrucciones: leer A,B escribir C,D Asignarn a A y B las cadenas introducidas por el teclado y visualizar o imprimirn en el dispositivo de salida las cadenas que representan las variables C y D.

8.2 FUNCIN DE CADENAS DE CARACTERES


El tratamiento de cadenas es un tema importante, debido esencialmente a la gran cantidad de informacin que se almacena en ellas. Segn el tipo de lenguaje de programacin elegido se tendr mayor o menor facilidad para la realizacin de operaciones. Las operaciones con cadenas ms usuales son: Calculo de la longitud

Comparacin Concatenacin Esxtraccion de subcadenas Busqueda de informacion

1.- CALCULO DE LA LONGITUD DE UNA CADENA La longitud de una cadena, como ya se ha comentado, es el nmero de caracteres de la cadena. As: 'Hola' Tiene 4 caracteres

La operacin de determinacin de la longitud de una cadena se representar por la funcin Longitud, cuyo formato es: Longitud (cadena) La funcin longitud tiene como argumento una cadena, pero su resultado es un valor numrico entero. Ejemplo: longitud('Como ests?') longitud(' ') longitud(' Hola') Proporciona 11. Cadena de un blanco, proporciona 1. Cadena 'Hola' relleanda de un blanco a la

izquierda para tener longitud de 5. 2.- COMPARACION

Es una operacin muy importante sobre todo en la clasificacin de datos tipo carcter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos (clasificaciones de listas, tratamiento de textos, etc). Los criterios de comparacin se basan en el orden numrico del cdigo o juego de caracteres que admite la computadora o el propio lenguaje de programacin. En nuestro lenguaje algortmico utilizaremos el cdigo ASCII como cdigo numrico de referencia. En la comparacin de cadenas se pueden considerar dos operaciones ms elementales: igualdad y desigualdad. Ejemplos: 'LUIS' < 'LUISITO' verdadera 'ANA' < 'MARTA' verdadera 'BARTOLO' >= 'BARTOLOME' falsa 3.- CONCATENACION La concatenacin es la operacin de reunir varias cadenas de caracteres en una sola, pero conservando el orden de los caracteres en cada una de ellas. El smbolo que representa la concatenacin vara de unos lenguajes a otros. Los ms utilizados son: + // & o Las cadenas para concatenarse pueden ser constantes o variables.

Ejemplos: 'Mayo ' + 'de 1999' x y z 'Lenguaje' 'Ensamblador' x+' '+y z= 'Lenguaje Ensamblador' = 'Mayo de 1999'

4.- SUBCADENAS Esta operacin permite la extraccin de una parte especfica de una cadena: subcadena. Subcadena (cadena, inicio, longitud) Cadena: Es la cadena de la que debe extraerse una subcadena. Inicio: Es un nmero o expresin numrica entera que corresponde a la posicin inicial de la subcadena. Longitud: Es la longitud de la subcadena. Ejemplos: subcadena ('abcdefgh',3,6) Equivale a 'cdef' subcadena ('Tecnolgico',1,3) Equivale a 'Tec' subcadena ('Mxico',5,2) Equivale a 'co' 5.- BUSQUEDA

Esta operacin localiza si una determinada cadena forma parte de otra cadena ms grande o buscar la posicin en que aparece un determinado carcter o secuencia de caracteres en un texto. El resultado de la funcin es un valor entero Posicin (cadena, subcadena) subcadena: Es el texto que se trata de localizar. Ejemplo: nombre 'Marielena'

Posicin (nombre,'elena') Produce 5. La funcin Posicin, al tomar tambin un valor numrico entero se puede utilizar en expresiones aritmticas o en instrucciones de asignacin a variables numricas. Otras funciones de cadenas a) Insertar Cadenas Si se desea insertar una cadena C dentro de un texto o cadena ms grande, se debe indicar la posicin. El formato es: Insertar (t, p, s) t Texto o cadena donde se va a insertar. p Posicin a partir de la cual se va a insertar. s Subcadena que se va a insertar.

Ejemplo: Insertar ('Tecnolgico',4,'XXX') = 'TecXXXnolgico' Insertar ('Juan O',5,'de la')= b) Borrar Elimina una subcadena que comienza en la posicin p y tiene una longitud l. Borrar (t, p ,l) t Texto o cadena de donde se va a eliminar una subcadena. p Posicin a partir del cual se va a insertar. l Longitud de la subcadena a eliminar. Ejemplo: Borrar ('Tecnolgico',4,2) = 'Teclgico' c) Conversin Cadenas/Nmeros Existen funciones o procedimientos en los lenguajes de programacin (val y str) que permiten convertir un nmero en una cadena y viceversa. En nuestros algoritmos los denotaremos por valor y cadena. Valor (cadena) = Convierte la cadena en un nmero; siempre que la cadena fuese de dgitos numricos. Cadena (valor) = Convierte un valor numrico en una cadena. 'Juan de la O'

Ejemplos:

Valor ('12345') = 12345 Cadena(12345)= '12345' Funciones internas Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adems de las operaciones aritmticas bsicas, ya tratadas, un nmero determinado de operaciones especiales que se denominan funciones internas, incorporadas o estndar. Por ejemplo la funcin ln se puede utilizar para determinar logaritmo de un n se puede utilizar para determinar logaritmo de un nmero y la funcin sqrt calcula la raz cuadrada de un nmero positivo. Existen otras funciones que se utilizan para determinar las funciones trigonomtricas. La siguiente tabla muestra las funciones internas ms usuales, siendo x el argumento de la funcin. Funcin abs(x) arctan(x) cos(x) exp(x) ln(x) log10(x) round(x) Descripcin Valor absoluto de x Arcotangente de x Coseno de x Exponencial de x Logaritmo de x Logaritmo decimal de x Redondeo de x Tipo_Argumento Entero o real Entero o real Entero o real Entero o real Entero o real Entero o real Real Resultado igual que argumento real real real real real entero

sin(x) sqr(x) sqrt(x) trunc(x)

Seno de x Cuadrado de x Raz cuadrada de x Truncamiento de x

Entero o real Entero o real Entero o real real

real igual que argumento real entero

8.3 MANIPULACIN DE CADENAS


Ejercicio 1: Contar el nmero de letras 'i' de una frase terminada en un punto. Se supone que las letras pueden leerse independientemente. Algoritmo letras_i var N: entera Letra: carcter Inicio N 0

repetir leer(Letra) si Letra = 'i' entonces N fin si hasta que Letra = '.' escribir('La frase tiene :', N,' letras i') N+1

Fin Ejercicio 2: Aceptar un nombre y proporcionar la cantidad de caracteres que contiene. Inicio escribir('Cul es el nombre : ') Leer(nom) escribir('Tu nombre tiene ', Longitud(nom),' letras') Fin

Ejercicio 3: Pedir una cadena que contenga una vez la letra F ('F'). Deber informarse la posicin donde fue encontrada, el carcter previo y el siguiente. Inicio escribir('Dame cadena que contenga [F] ') leer(cad) x Posicin('F', cad)

escribir('La letra 'F' se encuentra en la posicin : ',x) escribir('El carcter anterior es : ' , Subcadena(cad, x-1,1)) escribir('El carcter siguiente es : ', Subcadena(cad, x+1, 1)) Fin Ejercicio 4: Leer dos caracteres y deducir si estn en orden alfabtico.

variables: CAR1, CAR2 : carcter. Algoritmo Comparacin Inicio Leer CAR1, CAR2 Si CAR1 <= CAR2 entonces escribir('Si se encuentran en orden') sino escribir('Desordenados') Fin_si Fin

Ejercicio 5: Se desea eliminar los blancos de una frase dada terminada en un punto. Se supone que es posible leer los caracteres de la frase de uno a uno. Anlisis del problema Para poder efecturar la lectura de la frase almacena sta en un arreglo de caracteres (F), de modo que F(1) contiene el primer carcter i-simo del a frase dada. Construiremos una frase nueva sin blancos en otro arreglo G. Algoritmo Los pasos a dar para la realizacin del algoritmo son:

Inicializar contador de letras de la nueva frase G. Leer el primer carcter. Repetir

Si el primer carcter no es en blanco, entonces escribir en el lugar siguiente del arreglo F leer carcter siguiente de la frase dada. Hasta que el ltimo carcter se encuentre.

Escribir la nueva frase (G), ya sin blancos.

Variables: F : array de caracteres de la frase dada. G : array de caracteres de la nueva frase dada. i : Constador del array F. j : Constador del array G.

Algoritmo Blanco Inicio i j 1 0

leer F(i) Repetir Si F(i) <> ' ' entonces j G(j) Fin si j+1 F(i)

i+1

leer F(i) Hasta que F(i) = '.' {escritura de la nueva frase G} Desde i 1 a j hacer

escribir G(i) Fin Desde Fin Ejercicio 6: Encontrar un espacio en blanco en una cadena. variables: x: entero nom,a,b : cadena Inicio leer(nom) x a b Fin Posicin (' ',nom) Subcadena (nom,1,x-1) Subcadena (nom, x+1, x)

Ejercicio 7: Solicitar un nombre y mostrarlo con la inicial en mayscula. variables: nom,a,b: cadena

x,y : carcter z : entero Inicio escribir('Introduce nombre : ') leer(nom) x y z a Subcadena(nom,1,1) MAYUSCULA(x) Longitud (nom) Subcadena (nom, 2, z-1) y+a

Concatenacin

Escribir('Te llamas : ' , concatenacin) Fin Nota: MAYUSCULA es una funcin para convertir letras minsculas a maysculas.

UNIDAD 9 MANEJO DE MODULOS

9.1 CONCEPTO Y CARACTERSTICAS DE UN MDULO 9.2 CLASIFICACIN DE LOS MDULOS 9.2.1 FUNCIONES 9.2.2 PROCEDIMIENTOS 9.3 OPERACIN DE MDULOS Y SUS PARMETROS 9.4 CRITERIOS DE MODULARIZACIN

MANEJO DE MODULOS 9.1 CONCEPTO Y CARACTERSTICAS


Mdulo: Es aqul que est constituido por una o varias instrucciones fsicamente contiguas y lgicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. Un mdulo puede ser: Un programa Una funcin Una subrutina (o procedimiento)

Caractersticas de un Mdulo Los mdulos deben tener la mxima cohesin y el mnimo acoplamiento. Es decir, deben tener la mxima independencia entre ellos. La salida del mdulo debe ser funcin de la entrada, pero no de ningn estado interno. En la creacin de los mdulos deben cumplirse tres aspectos bsicos: descripcin, rendimiento y diseo.

En la descripcin se definen las funciones y objetivos del programa. Para obtener el mximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al mximo todos los recursos de los que dispone. En cuanto al diseo, se debe comprobar la estructura que sigue el mdulo, as como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes mdulos. Conforme se extiende el tamao de los algoritmos, se hace ms difcil su revisin, actualizacin y/o correccin. Una poltica comn para solventar este problema consiste en la modularizacin. Esto significa que el algoritmo se fragmenta en partes llamadas mdulos. En realidad, es un mtodo de diseo que tiende a dividir el problema, de forma lgica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a punto independientes. Realmente la programacin modular es un intento para disear programas, de forma tal que cualquier funcin lgica pueda ser intercambiada sin afectar a otras partes del programa. Algunas ventajas de utilizar mdulos son: Un programa modular es fcil de mantener y modificar. Un programa modular es ms fcil de escribir y depurar (ejecutar, probar y poner a punto). Un programa modular es ms fcil de controlar. El desglose de un problema en mdulos permite encomendar los mdulos ms complejos a los programadores ms experimentados y los ms sencillos a los

programadores nveles.

Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas.

Desventajas del uso de mdulos: No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no tienen claras las ideas de los mdulos. La programacin modular requiere ms memoria y tiempo de ejecucin.

Objetivos de la programacin modular: Disminuir la complejidad. Aumentar la claridad y fiabilidad. Disminuir el coste. Aumentar el control del proyecto. Facilitar la ampliacin del programa mediante nuevos mdulos. Facilitar las modificaciones y correcciones al quedar automticamente localizadas en un mdulo.

9.2 CLASIFICACIN DE LOS MDULOS


Pueden ser de dos tipos: Funciones Procedimientos

Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser referenciados (invocadas) en diferentes puntos de un programa, tantas veces como se requiera de modo que se puede evitar la duplicacin innecesaria del cdigo.

Funciones Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituir a la funcin en el punto de invocacin (las funciones devuelven un resultado). Cada funcin se evoca utilizando su nombre en una expresin con los argumentos actuales o reales encerrados entre parntesis. Para hacer una referencia a una funcin se invoca mediante un nombre y en caso de existir, una lista de parmetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con los de la funcin que fue definida. La funcin devuelve un valor nico. Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son definidas por l mismo y permiten su uso en forma idntica a las funciones estndares. Para coordinar e iniciar el procesamiento, se utiliza un mdulo principal que es colocado al final del algoritmo.

Declaracin de funciones funcin nombre_funcin (par1, par2,par3,...) : tipo_del_resultado Inicio accin1 accin2 :

nombre_funcin Fin Donde:

Resultado_Obtenido

par1,par2 .... Lista de parmetros formales o argumentos. nombre_funcin Nombre asociado de la funcin, que ser un nombre de identificador vlido. accin1, accin2,.. Instrucciones que constituyen la definicin de la funcin, y que debe contener una accin sola de asignacin que asigne un valor al nombre de la funcin. Ejemplo: Obtener el sexto carcter de un nombre y si dicho carcter no existe, se asumir un asterisco como tal. Funcin SEXTO(n:string):carcter Inicio si longitud(n) >= 6 entonces SEXTO Subcadena(n,6,1)

en caso contrario SEXTO Fin Invocacin a las funciones Una funcin puede ser llamada slo mediante referencia de la forma siguiente: *

nombre_funcin (lista de parmetros actuales) Donde: nombre_funcin Funcin que llama. Lista de param. actuales Constantes, variables, expresiones, valores de funciones, nombres de funciones o procedimientos. Una llamada a la funcin implica los siguientes pasos: A cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual (esta correspondencia se ver ms tarde y se denomina llamada por valor). Se ejecuta el cuerpo de acciones de la funcin. Se devuelve el valor de la funcin y se retorna al punto de llamada.

Ejercicio: Calcular la potencia de un nmero. funcion POTENCIA(x,n :entero): entero Inicio y 1 1 hasta abs(n) hacer y*x

Desde i y

fin Desde si n < 0 entonces y Fin si POTENCIA Fin y 1/y

9.3 OPERACIN DE MDULOS Y SUS PARMETROS


PASO DE PARAMETROS Existen diferentes mtodos para el paso de parmetros a subprogramas, un mismo programa puede producir diferentes resultados bajo diferentes sistemas de paso de parmetros. Los parmetros se clasifican de la siguiente manera: 1. Entradas: Las entradas proporcionan valores desde el programa que llama y que se utilizan dentro de un procedimiento. En los subprogramas funcin las entradas son los argumentos en el sentido tradicional. 2. Salidas: Las salidas producen los resultados del subprograma; de nuevo si se utiliza el caso una funcin, mientras que con procedimientos pueden calcularse cero, una o varias salidas. 3. Entradas/Salidas: Un solo parmetro se utiliza para mandar argumentos a un programa y para devolver resultados. Los mtodos ms empleados para realizar el paso de parmetros son:

Paso por valor (parmetro valor). Paso por referencia o direccin (parmetro variable).

PASO POR VALOR Se utiliza en muchos lenguajes de programacin (pascal, basic, modula-2, algol, etc), debido a su analoga con los argumentos de una funcin, donde los valores se proporcionan en el orden de clculo de resultados. Los parmetros se tratan como

variables locales y los valores iniciales se proporcionan copiando los valores de los correspondientes argumentos. Los parmetros formales (locales a la funcin), reciben como valores iniciales los valores de los parmetros actuales y con ello se ejecutan las acciones descritas en el subprograma. La llamada por valor no devuelve informacin al programa que llama. PASO POR REFERENCIA Se utiliza cuando se requiere que ciertos parmetros sirvan como parmetros de salida, es decir, devuelvan los resultados a la unidad o programas que llama. La unidad que llama pasa a la unidad llamada la direccin del parmetro actual (que est en el mbito de la unidad llamante). Una referencia al correspondiente parmetro formal se tratra como una referncia a la posicin de memoria, cuya direccin se ha pasado. Entonces una variable pasada como parmetro real es compartida, es decir, se puede modificar directamente por el subprograma. Si el parmetro actual es una expresin, el subprograma recibe la direccin de la posicin temporal que contiene el valor de la expresin.

9.4 CRITERIOS DE MODULARIZACIN


Criterios de la programacin modular Con independencia de las tcnicas, los requisitos que debe cumplir la programacin modular son: Establecimiento de un organigrama modular: Se realiza mediante bloques, en el que cada bloque corresponde a un mdulo y muestra grficamente la comunicacin entre el mdulo principal y los secundarios.

Descripcin del mdulo principal: Debe ser claro y conciso, reflejando los punto fundamentales del programa.

Descripcin de los mdulos bsicos o secundarios: Los mdulos bsicos deben resolver partes bien definidas del problema. Solo pueden tener un punto de entrada y un punto de salida. Si un mdulo es complejo de resolver, conviene se subdivida en submdulos. Ningn mdulo puede ser llamado desde distintos puntos del mdulo principal.

Normas de la programacin : Dependern del anlisis de cada problema y de las normas generales o particulares que haya recibido el programador.

Vous aimerez peut-être aussi