115
Instituto Tecnológico de Querétaro Unidad I "Conceptos Básicos" 1.1 Introducció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

DISENO_ESTRUCTURADO_DE_ALGORITMOS.pdf

Embed Size (px)

Citation preview

  • Instituto Tecnolgico de Quertaro

    Unidad I "Conceptos Bsicos"

    1.1 Introduccin

    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

  • Instituto Tecnolgico de Quertaro

    expresadas en trminos de su lenguaje mquina, pero esto se

    explicar ms adelante.

    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 Mquina

    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

  • Instituto Tecnolgico de Quertaro

    1.4 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. 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 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 :

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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.5 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 :

  • Instituto Tecnolgico de Quertaro

    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 al sentido comn.

    Elimina instrucciones innecesarias.

  • Instituto Tecnolgico de Quertaro

    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 Mquina.

    Lenguaje de bajo Nivel (ensamblador).

    Lenguajes 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.

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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.6 Historia y 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

  • Instituto Tecnolgico de Quertaro

    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 .

  • Instituto Tecnolgico de Quertaro

    Unidad II

    " 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 los 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

  • Instituto Tecnolgico de Quertaro

    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 esperados.

    Los datos de entrada disponibles.

    Herramientas a nuestro alcance para manipular los datos y alcanzar

    un resultado (frmulas, 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.

  • Instituto Tecnolgico de Quertaro

    Las salidas sern dos variables : superficie y circunferencia que

    tambin sern de tio 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 fcil 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 superficie y longitud.

  • Instituto Tecnolgico de Quertaro

    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

    Est en lenguaje mquina.

    Entendible por la mquina.

    2.5 Prueba y depuracin

  • Instituto Tecnolgico de Quertaro

    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 di origen a su diseo.

    En vista de que esta utilizacin no podr ser supervizada 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

  • Instituto Tecnolgico de Quertaro

    susceptible de ser modificado para adecuarlo a nuevas condiciones de

    operacin.

    Cualquier actualizacin o cambio en el programa deber reflejarse en

    su documentacin.

    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).

  • Instituto Tecnolgico de Quertaro

    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 :

    3 7

    -10 9

    15.25

    50

    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

    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.

  • Instituto Tecnolgico de Quertaro

    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 un 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

    codigo ASCII.

    ASCII (American Standard Code for Information Interchange).

  • Instituto Tecnolgico de Quertaro

    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 especifca 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:

  • Instituto Tecnolgico de Quertaro

    (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 traves de letras y smbolos

    generalmente numricos a los que se les asigna un valor.

    Ejemplos:

    Constantes Variables

    Numricos

    36

    450.35

    0.58

    A

    Nom

    Edad

    Ciudad

    Estatura

    Cadena

    'A'

    'Juan'

    'La Paz'

    Lgicos

    Falso

    Verdadero

    3.2 Operadores y Operandos

  • Instituto Tecnolgico de Quertaro

    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 Operacin

    + Suma

    - Resta

    * Multiplicacin

    / Divisin real

    Div Divisin entera

    Mod Residuo

    ^ Exponenciacin

    Ejemplos:

  • Instituto Tecnolgico de Quertaro

    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.

    Operadores Div y Mod

    El smbolo / se utiliza para la divisin real, y el operador Div representa

    la divisin entera.

    Expresin Resultado Expresin 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

  • Instituto Tecnolgico de Quertaro

    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

    = 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

  • Instituto Tecnolgico de Quertaro

    (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.

  • Instituto Tecnolgico de Quertaro

    Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden de prioridad.

    Operador Prioridad

    ^ Alta

    *, /, Div

    +, -, Mod

    Relacionales Baja

    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:

  • Instituto Tecnolgico de Quertaro

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

  • Instituto Tecnolgico de Quertaro

    Operador Relacin

    not Negacin (No)

    and Conjuncin (Y)

    or Disyuncin (O)

    xor

    Disyuncin Exclusiva (O/SOLO)

    Se obtiene Verdadero si:

    NOT El operando es falso

    AND Ambos operandos son

    verdaderos

    OR Al menos un operando es

    verdadero

    XOR Solo uno de los operandos

    son verdadero

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

    Y X 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

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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 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 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 8 < 5

    N M o (7 6

  • Instituto Tecnolgico de Quertaro

    Tras ejecutar las operaciones anteriores, las variables M,N,P

    toman los valores, falso, verdadero, verdadero respectivamente.

    Asignacin de caracteres

    La operacimn que se evala es de tipo caracter.

    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

  • Instituto Tecnolgico de Quertaro

    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 B*h

    A x/2

    escribir(A)

    Fin

    3.3 Expresiones

  • Instituto Tecnolgico de Quertaro

    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.

    + suma

    - resta

    * multiplicacin

  • Instituto Tecnolgico de Quertaro

    / divisin

    **, ^ exponenciacin

    div divisin entera

    mod 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) =, >,

  • Instituto Tecnolgico de Quertaro

    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 (diseo descendente)

    Botton Up

    Warnier Orr

    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

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    Esta tcnica consiste en partir de los detalles ms precisos del

    algoritmo completando suscesivamente 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.

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

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

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

    UNIDAD V

    "TENICAS PARA LA FORMULACION DE

    ALGORITMOS"

  • Instituto Tecnolgico de Quertaro

    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 :

    Diagrama 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

  • Instituto Tecnolgico de Quertaro

  • Instituto Tecnolgico de Quertaro

    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).

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

    5.2 Pseudocdigo

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    :

    accin n

    Fin

    Decisin

    Simple

    si condicin entonces

    a

    c

    c

    i

    n

    1

    a

    c

    c

    i

    n

    2

    :

  • Instituto Tecnolgico de Quertaro

    a

    c

    c

    i

    n

    n

    Doble

    si condicin then

    accin1

    accin2

    :

    en caso contrario

    accin1

    acci2

    Iteraccin

    Fija

  • Instituto Tecnolgico de Quertaro

    para var. Entera

    inicial hasta final

    hacer

    a

    c

    c

    i

    n

    1

    a

    c

    c

    i

    n

    2

    :

    a

    c

    c

    i

    n

    n

  • Instituto Tecnolgico de Quertaro

    Condicional al inicio

    mientras condicin

    hacer

    a

    c

    c

    i

    n

    1

    a

    c

    c

    i

    n

    2

    :

    a

    c

    c

    i

    n

  • Instituto Tecnolgico de Quertaro

    n

    Condicional al final

    Repetir

    accin1

    accin2

    :

    accin n

    Hasta que condicin

    Seleccin

    casos selector de

    valor1 : accin1

    accin2

    valor2 : accin1

    accin2

  • Instituto Tecnolgico de Quertaro

    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 )

  • Instituto Tecnolgico de Quertaro

    escribir(2) Resta )

    escribir(3)

    Multiplicacin )

    escribir(4) Divisin )

    escribir(Qu

    operacin deseas

    realizar ? : )

    leer(OPCION)

    casos OPCION de

    1 :

    RESULTA

    DO

    X+Y

    2 :

    RESULTA

    DO X-

    Y

    3 :

    RESULTA

    DO

    X*Y

    4 : si Y=0

    entonces

  • Instituto Tecnolgico de Quertaro

    escribir(

    Error )

    RESULTADO 0

    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

  • Instituto Tecnolgico de Quertaro

    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 (nassi-schneiderman)

    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.

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

    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 suscesivamente hasta el fin del

    proceso. La estructura secuencial tiene una entrada y una salida. Su

    representacin grfica es la siguiente:

    ESTRUCTURA SECUENCIAL

    ....

  • Instituto Tecnolgico de Quertaro

    DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL

    PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL

    Inicio

    :

    :

    acciones

    :

    :

    fin

    Ejemplo:

  • Instituto Tecnolgico de Quertaro

    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 horas * precio

    impuestos 0.20 * salario_bruto

    salario_neto

    salario_bruto_impuestos

    escribir nombre, salario_bruto,

    salario_neto_bruto, salario_neto

    Fin

    Diagrama de flujo

  • Instituto Tecnolgico de Quertaro

    Diagrama N-S

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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

    Entonces

  • Instituto Tecnolgico de Quertaro

    Fin_si

    Pseudocdigo en ingls

    If

    then

    end_if

    Diagrama N-S

    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 estrucura de decisin mltiple evaluar una expresin que

    podr tomar n valores distintos 1,2,3,4,..n . Segn que elija uno de

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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 Pseudocdigo en ingls

    Mientras condicin hacer while condicin do

    Accin S1

    Accin S2 :

    : End_while

    accin Sn

  • Instituto Tecnolgico de Quertaro

    Fin_mientras

    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 0

    Leer (numero)

    Mientras numero > 0 hacer

    contador contador+1

    Leer (numero)

    Fin_Mientras

  • Instituto Tecnolgico de Quertaro

    Escribir('El nmero de enteros positivos es : ',

    contador)

    Fin

    Diagrama de Flujo

    Representacin en N-S

  • Instituto Tecnolgico de Quertaro

    Ver:

    Repetir (repeat)

    Desde (for)

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

  • Instituto Tecnolgico de Quertaro

    "ordenado" significa que el elemento primero, segundo, terceron-

    simo de un arreglo puede ser identificado. Los elementos de una

    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 Descripcin

    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.

    Declaracin de un Arreglo

    Nom_variable : Arreglo [dimensin] de Nom_tipo

    En donde dimensin especifica :

    En el orden : Fila, Columna, Fondo.

  • Instituto Tecnolgico de Quertaro

    Ejemplo de una declaracin :

    0 Dimensin :

    x 20 donde x, es de tipo

    Entero.

    1 Dimensin :

    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.

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

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

    2)

    calif(n-

    1) 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) Direccin x

    NUMEROS(2) Direccin x+1

    NUMEROS(3) Direccin x+2

    :

    :

  • Instituto Tecnolgico de Quertaro

    NUMEROS(50) Direccin x+49

    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

  • Instituto Tecnolgico de Quertaro

    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)

  • Instituto Tecnolgico de Quertaro

    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) 15

    A(6) 9

  • Instituto Tecnolgico de Quertaro

    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 n+1

    fin

  • Instituto Tecnolgico de Quertaro

    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 [subndice]

    Ejemplo :

    x x[3] 9

    escribir (x[2])

  • Instituto Tecnolgico de Quertaro

    ? 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 nmero, x, se llama : ,nom)

    Fin

  • Instituto Tecnolgico de Quertaro

    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.

  • Instituto Tecnolgico de Quertaro

    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, :)

  • Instituto Tecnolgico de Quertaro

    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

    cambio verdadero

    fin_si_entonces

    hasta cambio = falso

    escribir(Lista ordenada)

    para x 1 hasta 5 hacer

    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

  • Instituto Tecnolgico de Quertaro

    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:

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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 1 hasta 4 hacer

    para emp 1 hasta 6 hacer

    escribir(Empleado : ,emp)

    escribir(Nombre del empleado :)

    leer(nom[fab,emp])

    escribir(Salarios del empleado : )

    leer(sal[fab,emp])

  • Instituto Tecnolgico de Quertaro

    para fab 1 hasta 4 hacer

    total 0

    cont 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 salario[fab,emp]

    lug fab

    zuc emp

    finEntonces

    escribir(El mejor pagado es

    ,nom[lug,zuc],y gana ,salario[lug,zuc])

    escribir(El total es : ,total)

    Fin

    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.

  • Instituto Tecnolgico de Quertaro

    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?

  • Instituto Tecnolgico de Quertaro

    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 A 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

  • Instituto Tecnolgico de Quertaro

    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 E S T A C A S A E S G U A Y /// /// ///

    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:

    NOMBRE Juan Gonzlez

  • Instituto Tecnolgico de Quertaro

    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:

    Clculo de la longitud

    Comparacin

    Concatenacin

    Extraccin de subcadenas

  • Instituto Tecnolgico de Quertaro

    Bsqueda de informacin

    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?') Proporciona 11.

    longitud(' ') Cadena de un blanco,

    proporciona 1.

    longitud(' Hola') 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

  • Instituto Tecnolgico de Quertaro

    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 conservanso 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.

  • Instituto Tecnolgico de Quertaro

    Ejemplos:

    'Mayo ' + 'de 1999' = 'Mayo de 1999'

    x 'Lenguaje'

    y 'Ensamblador'

    z x+' '+y z= 'Lenguaje Ensamblador'

    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'

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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')= 'Juan de la O'

    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.

  • Instituto Tecnolgico de Quertaro

    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.

    Ejemplos:

    Valor ('12345') = 12345

    Cadena(12345)= '12345'

    Funciones internas

  • Instituto Tecnolgico de Quertaro

    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 Descripcin Tipo_Argumento Resultado

    abs(x) Valor absoluto de x

    Entero o real igual que argumento

    arctan(x) Arcotangente de x Entero o real real

    cos(x) Coseno de x Entero o real real

    exp(x) Exponencial de x Entero o real real

    ln(x) Logaritmo de x Entero o real real

    log10(x) Logaritmo decimal de x

    Entero o real real

    round(x) Redondeo de x Real entero

    sin(x) Seno de x Entero o real real

    sqr(x) Cuadrado de x Entero o real igual que argumento

  • Instituto Tecnolgico de Quertaro

    sqrt(x) Raz cuadrada de x

    Entero o real real

    trunc(x) Truncamiento de x

    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 N+1

    fin si

    hasta que Letra = '.'

  • Instituto Tecnolgico de Quertaro

    escribir('La frase tiene :', N,' letras i')

    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)

  • Instituto Tecnolgico de Quertaro

    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

  • Instituto Tecnolgico de Quertaro

    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 1

  • Instituto Tecnolgico de Quertaro

    j 0

    leer F(i)

    Repetir

    Si F(i) ' ' entonces

    j j+1

    G(j) F(i)

    Fin si

    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 Posicin (' ',nom)

    a Subcadena (nom,1,x-1)

    b Subcadena (nom, x+1, x)

  • Instituto Tecnolgico de Quertaro

    Fin

    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 Subcadena(nom,1,1)

    y MAYUSCULA(x)

    z Longitud (nom)

    a Subcadena (nom, 2, z-1)

    Concatenacin y+a

    Escribir('Te llamas : ' , concatenacin)

    Fin

    Nota: MAYUSCULA es una funcin para convertir letras

    minsculas a maysculas.

  • Instituto Tecnolgico de Quertaro

    UNIDAD IX

    "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.

  • Instituto Tecnolgico de Quertaro

    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.