Desarrolla software utilizando programación estructurada

download Desarrolla software utilizando programación estructurada

of 78

Transcript of Desarrolla software utilizando programación estructurada

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    1/78

    Curso de ProgramacinEstructurada

    Parte I

    Dr. Ana Lilia Laureano-Crucese-mail: [email protected]

    Departamento de Sistemas

    UAM, Unidad Azcapotzalco

    http://www.uam.mx/
  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    2/78

    Objetivos (I)

    Ubicar la importancia de la programacin en la ingenieradel software

    Explicar el proceso de construccin de un programa

    Disear algoritmos para resolver problemas simples

    Disear y construir programas modulares bajo elenfoque de la programacin estructurada utilizandoeficazmente y eficientemente un entorno de desarrolloconvencional

    Que al final del curso el estudiante sea capaz de:

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    3/78

    Objetivos (II)

    Explicar y aplicar algoritmos iterativos de bsqueda y

    ordenamiento Conocer el papel de las etapas de anlisis, diseo y

    programacin en el desarrollo estructurado del software

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    4/78

    Contenido Sinttico

    Resolucin deproblemas y los

    algoritmos

    De los algoritmos

    a los programas

    Constructores

    fundamentales de

    la programacinestructurada

    Fundamentos del

    diseo modular

    Algoritmos

    iterativos de

    bsqueda y

    ordenamiento

    Archivos

    Introduccin a los

    tipos de datos

    abstractos

    Introduccin al

    anlisis y diseo

    estructurado delsoftware

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    5/78

    Resolucin de problemas y losalgoritmos

    Concepto de algoritmo

    Propiedades de un algoritmo

    El rol del algoritmo en la resolucin deproblemas

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    6/78

    Concepto de algoritmo (I)

    Un algoritmo es un procedimiento para resolver un problema.ste describe un conjunto finito y ordenado de pasos, reglas oinstrucciones para producir la solucin a un problema dado.

    Un algoritmo puede ser definido como una secuencia deinstrucciones bien definidas y efectivas, y finaliza con laproduccin del resultado esperado a partir de las entradasdadas.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    7/78

    Concepto de algoritmo (II)

    Algoritmo

    Especificacin

    de las

    entradas

    Accin o

    procedimiento

    Accin o

    procedimiento

    Accin o

    procedimiento

    Accin o

    procedimiento

    Descripcin

    del resultado o

    efecto

    . . .

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    8/78

    Un primer ejemplo de algoritmo

    El siguiente algoritmo calcula el rea y el permetro de un rectngulo

    1. Inicio

    2. Leer base y altura (b, a)

    3. ar b*a4. pe 2*(b + a)

    5. Escribir rea del rectngulo: , ar

    6. Escribir Permetro del rectngulo: , pe

    7. Fin

    Datos de entrada: b y a (base y altura)Datos de salida: ar y pe (rea y permetro)

    Procesos: ar = b*a, pe = 2*(b + a)

    Anlisis resumidodel problema

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    9/78

    Caractersticas de los algoritmos (I)

    Son precisos. Deben indicar el orden de realizacin decada paso, as como especificar con precisin lasentradas y cada paso o etapa

    Estn bien definidos. Etapas bien definidas y concretas

    Exactitud y correccin. Se debe demostrar que elalgoritmo resuelve el problema para el cual fue escrito

    Son finitos. Deben tener un nmero finito de pasos ydeben terminar

    Deben describir el resultado o efecto final. La salidaesperada del algoritmo debe estar completamenteespecificada

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    10/78

    Caractersticas de los algoritmos (II)

    Entrada

    Proceso

    Salida

    Partes que debe describir la definicin de un algoritmo:

    Entrada SalidaProceso

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    11/78

    Caractersticas de los algoritmos (III)

    Son independientes tanto del lenguaje de programacinen el que se expresan como del hardware en que seejecutan los programas

    Algoritmo

    Cdigo en C

    Cdigo enPascal

    Cdigo en

    Fortran

    Computadora con

    los compiladores

    de C y Pascal

    Computadora con

    el compilador de

    Fortran

    Expresado

    en

    Ejecutado

    en

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    12/78

    El rol del algoritmo en la resolucin deproblemas (I)

    Descripcin y

    anlisis delproblema

    Diseo del

    algoritmo

    Programa en un

    lenguaje deprogramacin

    La resolucin de un problema en computadora requiere comopaso previo el diseo de un algoritmo que especifique elprocedimiento para resolver el problema. Es decir, antes de

    codificar un programa se requiere disear el algoritmo.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    13/78

    Ejemplos de algoritmos (I.a.)

    Definicin del problema

    Calcular los porcentajes de hombres y mujeres en un grupo de Ndeportistas

    Anlisis del problema

    Datos a considerar:

    Sexo de la persona (S)

    Nmero de personas del sexo masculino (CM)

    Nmero de personas del sexo femenino (CF) Total de deportistas (N)

    Porcentaje de hombres (PM)

    Porcentaje de mujeres (PF)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    14/78

    Ejemplos de algoritmos (I.b.)

    Datos de entrada:

    Total de deportistas (N)

    Sexo de la persona (S)

    Datos de salida:

    Porcentaje de hombres (PM)

    Porcentaje de mujeres (PF)

    Procesos: Contar la cantidad de personas del sexo masculino (CM = CM + 1)

    Contar la cantidad de personas del sexo femenino (CF = CF + 1)

    Calcular el porcentaje de hombres en el grupo (PM = CM/N*100)

    Calcular el porcentaje de mujeres en el grupo (PF = CF/N*100)

    Continuamos con elanlisis del problema

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    15/78

    Ejemplos de algoritmos (I.c.)

    Algoritmo:

    1. Inicio

    2. Inicializar en cero el total de personas del sexo masculino: CM 0

    3. Inicializar en cero el total de personas del sexo femenino: CF 04. Inicializar en cero el total de personas procesadas: TP 0

    5. Leer total de deportistas (N)

    6. MIENTRAS TP < N

    FIN-MIENTRAS

    6.1 Leer sexo de la persona (S)6.2 SI S =M, entonces CM CM + 16.3 SI S = F, entonces CF CF + 16.4 Incrementar en 1 el contador: TP TP + 1

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    16/78

    Ejemplos de algoritmos (I.d.)

    Algoritmo (continuacin):

    7. Calcular porcentaje de hombres en el grupo: PM CM/N*100

    8. Calcular porcentaje de mujeres en el grupo: PF CF/N*100

    9. Escribir Porcentaje de hombres en el grupo: , PM10. Escribir Porcentaje de mujeres en el grupo: , PF

    11. Fin

    En este algoritmo se puede apreciar el uso de las tresestructuras de control de la programacin estructurada:

    Estructura secuencial

    Estructura selectiva

    Estructura iterativa

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    17/78

    Ejemplos de algoritmos (II)

    1. Clculo de la media de N observaciones numricas

    2. Determinar si un nmero es primo dada una lista de N

    nmeros enteros3. Clculo del factorial de un nmero N

    4. Retiro de efectivo en un cajero automtico

    5. Receta para preparar spaghetti alla napoletana

    Definir en cada caso: entrada, procesos/operaciones y salida.Escribir el algoritmo completo para todos los casos.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    18/78

    Diseo de algoritmos (I)

    Diseo del

    algoritmo

    Diseo

    descendente Refinamiento

    Representacin

    grfica

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    19/78

    Diseo de algoritmos (II)

    Diseo descendente (I)

    El diseo descendente (top down) es un procedimiento derefinamiento iterativo de un problema, en el cual se parte del

    mayor nivel de abstraccin del problema (sistema o tarea) yse prosigue hacia los niveles inferiores a travs de un procesode descomposicin del problema en subproblemas.

    En el diseo descendente se parte de una visin estructural

    del problema sin especificar detalles para ninguna de suspartes componentes. Cada componente del sistema esentonces refinado, mostrando ms detalles en cada nivel derefinamiento.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    20/78

    Diseo de algoritmos (III)

    Diseo descendente (II)

    . . .

    Problema

    Subproblema Subproblema Subproblema Subproblema

    Subproblema Subproblema Subproblema Subproblema SubproblemaSubproblema

    Subproblema Subproblema

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    21/78

    Diseo de algoritmos (IV)

    Diseo descendente (III)

    El diseo descendente efecta una relacin entre lassucesivas etapas de refinamiento, de forma tal que stas se

    relacionen unas con otras a travs de los flujos de entrada yde salida de informacin.X Y

    P

    P1

    P2

    P3

    P4X Y

    U

    V

    P

    Q

    P31 P32 P33

    V QR S

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    22/78

    Diseo de algoritmos (V)

    Diseo descendente (IV)

    Ejemplo: el problema del cajero automtico

    Cajero

    automtico

    Lectura y

    validacin

    del NIP

    Seleccin de

    tipo de

    cuenta

    Seleccin de

    tipo de

    operacin

    Finalizar

    Consulta de

    saldo

    Traspaso

    entre cuentas

    propias

    Retiro de

    efectivoPago de

    servicios. . .

    . . .

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    23/78

    Diseo de algoritmos (VI)

    Refinamiento del algoritmo (I)

    Comnmente, la primera versin de un algoritmo noconstituye una versin completa ni especfica del mismo. El

    refinamiento del algoritmo se refiere a la conversin delprimer esbozo/versin del algoritmo en una versin msdetallada y completa, haciendo los pasos del algoritmo msespecficos. Este proceso conduce a la obtencin de unalgoritmo claro, preciso y completo.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    24/78

    Diseo de algoritmos (VII)

    Refinamiento del algoritmo (II)

    1. Inicio

    2. Leer cantidad de estudiantes

    3. Leer edad y peso de los estudiantes

    4. Calcular las medias de la edad y del peso

    5. Escribir resultados

    Algoritmo para el clculo de la media de la edad y peso de un grupo deestudiantes (primer esbozo)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    25/78

    Diseo de algoritmos (VIII)

    Refinamiento del algoritmo (III)

    1. Inicio

    2. Leer cantidad de estudiantes (N)

    3. NE 0, SE 0, SP 0

    4. MIENTRAS NE < N

    4.1 Leer edad y peso del estudiante (E, P)

    4.2 SE SE + E

    4.3 SP SP + P

    4.4 Incrementar el contador: NE NE + 1

    FIN-MIENTRAS

    Algoritmo para el clculo de la media de la edad y peso de un grupo deestudiantes (versin refinada)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    26/78

    Diseo de algoritmos (IX)

    Refinamiento del algoritmo (IV)

    5. Calcular la media de la edad: ME SE/N6. Calcular la media del peso: MP SP/N

    7. Escribir La edad promedio es: , ME

    8. Escribir El peso promedio es: , MP

    9. Fin

    Algoritmo para el clculo de la media y desviacin estndar de la edad ypeso de un grupo de estudiantes (versin refinada)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    27/78

    Diseo de algoritmos (X)

    Especificacin y representacin grfica del

    algoritmo

    Pseudocdigo

    Diagramas de flujo

    Diagramas de Nassi-Schneiderman (N-S)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    28/78

    Diseo de algoritmos (XI)

    Especificacin del algoritmo: pseudocdigo (I)

    El pseudocdigo es un lenguaje de especificacin de

    algoritmos, comnmente con una sintaxis para las estructurasde control similar a la expresada en el lenguaje deprogramacin al que ser traducido el algoritmo. Cuando unalgoritmo es expresado en pseudocdigo, entonces latraduccin de ste al lenguaje de programacin seleccionadoresultar relativamente fcil.

    AlgoritmoEspecificacin

    en

    pseudocdigo

    Programa

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    29/78

    Diseo de algoritmos (XII)

    Especificacin del algoritmo: pseudocdigo (II)

    Las acciones y las estructuras de control se representan en elpseudocdigo con palabras reservadas del ingls, similares a las utilizadasen los lenguajes de programacin estructurada. Entre estas palabras

    reservadas, las ms usadas son:

    start

    read

    writeIf-then-else

    while-end

    repeat-until

    end

    Comnmente, la

    escritura delpseudocdigorequiere el uso de laindentacin de lasdiferentes lneas

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    30/78

    Diseo de algoritmos (XIII)

    Especificacin del algoritmo: pseudocdigo (III)

    Begin

    read N

    NE 0SE 0

    SP 0

    while NE < N

    read E, PSE SE + E

    SP SP + P

    NE NE + 1

    end while

    Algoritmo para elclculo de la media ydesviacin estndarde la edad y peso deun grupo deestudiantes (versinen pseudocdigo)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    31/78

    Diseo de algoritmos (XIV)

    Especificacin del algoritmo: pseudocdigo (IV)

    ME SE/N

    MP SP/Nwrite La edad promedio es: , ME

    write El peso promedio es: , MP

    end

    Cuando se usa elpseudocdigo comolenguaje de

    especificacin de unalgoritmo, elprogramador puedeconcentrarse en lalgica y en las

    estructuras de controlsin preocuparse porla sintaxis y reglasdel lenguaje deprogramacin.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    32/78

    Diseo de algoritmos (XV)

    Representacin grfica del algoritmo:diagramas de flujo (I)Un diagrama de flujo (flowchart, del ingls) es una tcnica derepresentacin grfica de la lgica o pasos de un algoritmo. El diagramade flujo consiste de un conjunto de smbolos (tales como rectngulos,

    paralelogramos, rombos, etc.) y flechas que conectan estos smbolos.Los smbolos representan las diferentes acciones que se puedenejecutar en un algoritmo (lectura, asignacin, decisin, escritura, etc.),mientras que las flechas muestran la progresin paso a paso a travsdel algoritmo.

    Con la aparicin de los lenguajes de programacin estructurada el usode los diagramas de flujo ha disminudo considerablemente, dando pasoa otras tcnicas de representacin (como por ejemplo, diagramas N-S,tablas procesos-entidades, diagramas estructurales, diagramas deburbujas, etc. ) que capturan en un modo ms adecuado la esencia y

    principios de la programacin estructurada.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    33/78

    Diseo de algoritmos (XVI)

    Representacin grfica del algoritmo:diagramas de flujo (II)

    Smbolo Representacin Significado

    Flechas o lneas de flujo Indica el sentido de

    ejecucin de las acciones

    Rectngulo Proceso o accin a realizar

    (por ejemplo, asignacin)

    Paralelogramo Representa una entrada o

    salida

    Rombo Representa el constructor deseleccin (decisin lgica)

    Rectngulo redondeado Representa el inicio y fin del

    diagrama

    Crculo Se usa como conector entre

    dos partes del diagrama

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    34/78

    Diseo de algoritmos (XVII)

    Representacin grfica del algoritmo:diagramas de flujo (III)1. Inicio

    2. Leer cantidad de estudiantes (N)

    3. NE

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    35/78

    Diseo de algoritmos (XVIII)

    Continuacin (IV)

    1. Inicio

    2. Leer cantidad de estudiantes (N)

    3. NE

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    36/78

    Diseo de algoritmos (XIX)

    Representacin grfica del algoritmo:

    diagramas de Nassi-Schneiderman (N-S) (I)

    El diagrama de Nassi-Schneiderman (N-S) (tambin conocido como

    diagrama de Chapin) es una tcnica de representacin grfica dealgoritmos que combina la especificacin en pseudocdigo con larepresentacin grfica del diagrama de flujo.

    Cuando se usa el diagrama N-S un algoritmo es representado con unrectngulo dividido en franjas o bandas horizontales, donde cada banda

    representa una accin a realizar.La especificacin de los pasos del algoritmo se hace utilizando laspalabras reservadas ya vistas en el pseudocdigo, mientras que lossmbolos utilizados en el diagrama corresponden a cada tipo deestructura de control: secuencia, seleccin, iteracin.

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    37/78

    Diseo de algoritmos (XX)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (II)

    Begin

    End

    . . .

    Begin

    read

    write

    If-then-else

    while-end

    repeat-until

    end

    Representacin grfica N-S de un algoritmo Palabras reservadas

    comnmente usadas en la

    especificacin de las acciones

    (pueden ser tambin usadasen espaol)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    38/78

    Diseo de algoritmos (XXI)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (III)

    Representacin de la estructura de control secuencial

    Declaracin de variables

    tipo : nombre_variable

    Ejemplos:

    entero: edad

    real: edadPromedio,

    pesoPromedio

    caracter: sexo

    cadena: deporte

    Asignacin

    Variable = expresion

    Ejemplos:

    edadPromedio = sumaEdad/N

    pesoPromedio = sumaPeso/N

    sexo = M

    Deporte = atletismo

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    39/78

    Diseo de algoritmos (XXII)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (IV)

    Representacin de la estructura de control secuencial

    Instruccin leer

    leer

    Ejemplos:

    leeredad, peso

    leerdeporte

    Instruccin escribirescribir

    Ejemplos:

    escribiredadPromedio, pesoPromedio

    escribirdeporte

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    40/78

    Diseo de algoritmos (XXIII)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (V)

    Inicio

    Escribir rea: , ar

    real: b, a, ar, pe

    Leer b, a

    ar = b*a

    pe = 2(b + a)

    Escribir permetro: , pe

    Fin

    1. Inicio2. Leer base y altura (b, a)3. ar b*a4. pe 2*(b + a)5. Escribir rea: , ar6. Escribir Permetro: , pe

    7. Fin

    Diagrama N-SAlgoritmo para calcular el rea y

    permetro de un rectngulo

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    41/78

    Diseo de algoritmos (XXIV)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (VI)Representacin de la estructura de control condicional

    condicin

    S No

    Algoritmo Diagrama N-S

    si entonces

    si_no

    selector

    otro 1 2 3 . . . nEstructura

    de control

    condicional

    CASE

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    42/78

    Diseo de algoritmos (XXV)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (VII)

    Representacin de la estructura de control condicional

    S = M

    S No

    CM = CM + 1 CF = CF + 1

    Leer sexo de la persona (S)

    SI S =M, entonces CM CM + 1

    SI S = F, entonces CF CF + 1

    Incrementar el contador: TP TP + 1

    Algoritmo Diagrama N-S

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    43/78

    Diseo de algoritmos (XXVI)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (VIII)

    Representacin de la estructura de control de iteracin

    Representacin en el diagrama N-S

    de la estructura MIENTRAS

    Representacin en el diagrama N-S

    de la estructura REPITE-HASTA

    Mientras (condicin)

    HASTA (condicin)

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    44/78

    Diseo de algoritmos (XXVII)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (IX)

    Representacin de la estructura de control de iteracin

    Representacin en el diagrama N-Sde la estructura PARA

    ParaContador valor_inicial hasta valor_finalhacer

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    45/78

    Diseo de algoritmos (XXVIII)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (X)

    start

    read N

    NE 0SE 0

    SP 0

    while NE < N

    read E, PSE SE + E

    SP SP + P

    NE NE + 1

    end while

    Inicio

    real: SE, SP

    entero: NE

    Mientras NE

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    46/78

    Diseo de algoritmos (XXIX)

    Representacin grfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (XI)

    ME = SE/N

    MP = SP/NEscribir Edad promedio, ME

    Escribir Peso promedio, MP

    ME

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    47/78

    De los algoritmos a los programas

    Elementos, estructura y funcionamiento de unsistema de cmputo

    Lenguajes de programacin: niveles, sintaxis ysemntica

    Estrategias de contruccin de programas

    El f i i d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    48/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (I)

    CPU

    Unidad Central de Proceso

    CU

    Unidad de control

    ALUUnidad

    lgico-aritmtica

    RAM

    Memoria

    Dispositivos

    de entrada

    Dispositivos

    de salida

    Memoria externa

    (almacenamiento

    permanente)

    Organizacin fsica de una computadora

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    49/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (II)

    Funcionamiento de una computadora (I)

    La unidad central de proceso (del ingls, CPU) es el cerebro de la

    computadora. La CPU dirige y controla el proceso de informacin efectuado

    por la computadora, es la unidad donde se ejecutan las instrucciones de los

    programas y donde se controla el funcionamiento de los distintos

    componentes de la computadora. La CPU procesa informacin almacenada

    en la memoria, puede recuperar informacin desde la memoria (datos o

    programas) y almacenar nueva informacin o informacin procesada en la

    memoria. La CPU est compuesta por dos componentes: la unidad de

    control (CU) y la unidad lgico-aritmtica (ALU)

    La unidad central de proceso (del ingls, CPU)

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    50/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (III)

    Funcionamiento de una computadora (II)

    Como su nombre lo indica, la unidad lgico-aritmtica es la encargada de

    realizar operaciones artimticas y lgicas (suma, resta, multiplicacin,

    divisin y comparaciones) sobre datos que provienen de la memoria

    principal (RAM).

    La unidad lgico-aritmtica (ALU)

    La unidad de control (CU) dirige y coordina las actividades de la

    computadora, determina la secuencia de operaciones a realizar, interpreta

    instrucciones codificadas, controla las funciones de decodificacin,

    ejecucin y almacenamiento. Esta unidad controla y sincroniza todo el

    proceso que tiene lugar en la computadora.

    La unidad de control (CU)

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    51/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (IV)

    Funcionamiento de una computadora (III)

    El papel de la memoria central (memoria RAM, Random Access Memory) esel almacenamiento de informacin: datos y programas. Para que unprograma se pueda ejecutar, debe ser almacenado en la memoria central

    (carga o load del programa). Tambin los datos que sern usados por elprograma durante su ejecucin deben ser situados en la memoria. Es decir,

    la memoria RAM se usa para mantener los programas mientras se estn

    ejecutando y los datos mientras se estn procesando.

    La memoria central (RAM)

    Memoria

    central

    Memoria

    cachProcesador

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    52/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (V)

    Funcionamiento de una computadora (IV)

    Los dispositivos de entrada/salida establecen la comunicacin entre la

    computadora y el usuario. Los dispositivos de entrada (teclado, mouse,unidad CD-ROM, unidad DVD, escaner, cmara, etc.) permiten la

    introduccin de datos y programas en la computadora para su

    procesamiento. Una vez que los datos son ledos de los dispositivos de

    entrada, stos son almacenados en la memoria central para su

    procesamiento. Los dispositivos de salida (pantalla, impresora, etc.)

    permiten representar/visualizar el resultado de la ejecucin de los

    programas.

    Dispositivos de entrada/salida

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    53/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (VI)

    Funcionamiento de una computadora (V)

    La memoria externa es un medio de almacenamiento permanente tanto para

    programas como para datos. Entre los dispositivos de almacenamiento (omemorias auxiliares) ms comnmente utilizados se encuentran:

    La memoria externa

    El disco duro

    Disquetes magnticos

    Unidad CD-ROM Unidad DVD

    Memoria USB

    El t t t f i i t d

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    54/78

    Elementos, estructura y funcionamiento deun sistema de cmputo (VII)

    El microprocesador

    El microprocesador es un chip, un circuito integrado electrnico que esutilizado como unidad central de proceso en una computadora. Lasfunciones del microprocesador son el clculo y control computacional.

    Memoria centralUnidad de

    control

    Unidad lgico-

    aritmtica

    Microprocesador

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    55/78

    Lenguajes de programacin: niveles,sintaxis y semntica (I)

    Niveles de lenguajes de programacin (I)

    Lenguajes de mquina

    Lenguajesensambladores

    Lenguajes de alto nivel

    Lenguajes declarativos

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    56/78

    Lenguajes de programacin: niveles,sintaxis y semntica (II)

    Niveles de lenguajes de programacin (II)

    Fue el primer lenguaje utilizado en la programacin de computadoras.

    Constituye la capa ms interna en los niveles de lenguaje en la

    computacin. Se podra decir que el lenguaje de mquina es el nico queentiende directamente la computadora. Este lenguaje se expresa a travs

    del alfabeto binario, el cual consta solo de los smbolos 0 y 1. El lenguaje de

    mquina es dependiente de la computadora.

    Lenguajes de mquina

    El lenguaje ensamblador es una representacin simblica del lenguaje de

    mquina asociado. Es decir, cada computadora tiene un lenguaje

    ensamblador propio. El lenguaje ensamblador usa palabras nemotcnicas

    para representar cada instruccin (cadenas de bits) del lenguaje de

    mquina asociado.

    Lenguajes ensambladores

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    57/78

    Lenguajes de programacin: niveles,sintaxis y semntica (III)

    Niveles de lenguajes de programacin (III)Constituyen los lenguajes de programacin ms utilizados. Son lenguajes

    independientes de la computadora. Un programa escrito en lenguaje de alto

    nivel puede ser ejecutado en cualquier computadora, siempre que sta

    disponga del traductor o compilador del lenguaje en cuestin. Los

    programas pueden ser escritos y comprendidos de una forma ms sencilla,

    dada la aproximacin de estos lenguajes con el lenguaje natural. Se

    caracterizan por proporcionar libreras de uso frecuente (entrada/salida,

    funciones matemticas, manejo de cadenas, etc.). Ejemplos de estos

    lenguajes son: Pascal, Fortran, C, C++, Java, Ada, Lisp y Prolog.

    Lenguajes de alto nivel

    Son aquellos lenguajes en los que se indica a la computadora qu es lo que

    debe hacer, qu es lo que se desea obtener o qu es lo que se est

    buscando. Son comnmente lenguajes de rdenes, donde se expresa lo

    que hay que hacer en lugar de cmo hacerlo. Ejemplos de lenguajes

    declarativos son SQL y Prolog.

    Lenguajes declarativos

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    58/78

    Lenguajes de programacin: niveles,sintaxis y semntica (IV)

    Lenguaje de programacin =Lxico + Sintaxis + Semntica

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    59/78

    Lenguajes de programacin: niveles,sintaxis y semntica (V)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (I)

    Lxico

    Sintaxis Semntica

    Gestin de memoria

    Manejo de excepciones

    Implementacin

    Pragmtica

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    60/78

    Lenguajes de programacin: niveles,sintaxis y semntica (VI)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (II)

    Lxico

    Es el conjunto de categoras gramaticales que definen el vocabulario dellenguaje de programacin. Comnmente, el lxico de un lenguaje deprogramacin posee las siguientes categoras gramaticales:

    Identifier(nombre de variables, nombre de constantes, nombre defunciones, etc.)

    Literal(nmeros enteros y decimales)

    Operator(+, -, *, /. etc.) Separator(; . , etc.) Keyword(while, read, write, if, for, case, int, real, etc.)

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    61/78

    Lenguajes de programacin: niveles,sintaxis y semntica (VII)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (III)

    La sintaxis de un lenguaje de programacin es la definicin gramatical delo que constituye un programa en dicho lenguaje. La sintaxis se especificaen trminos de un conjunto de reglas que rigen la construccin de losprogramas. La definicin de la sintaxis de un lenguaje de programacindebe ser clara, concisa y formal. La sintaxis del lenguaje de programacin

    se describe a partir de otros lenguajes, llamados metalenguajes. Uno delos metalenguajes ms difundidos es el formalismo BNF (Backus-NaurForm), una gramtica libre de contexto.

    Sintaxis

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    62/78

    Lenguajes de programacin: niveles,sintaxis y semntica (VIII)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (IV)

    Se refiere al significado de los programas. Es el conjunto de reglas quepermiten determinar el significado de cualquier construccin del lenguaje.La semntica asocia un significado a cada posible construccin gramaticaldel lenguaje.

    Semntica

    La gestin de memoria se refiere al proceso de asignar valores a lamemoria, considerando tanto las caractersticas estticas como dinmicasde dichos valores. Los valores pueden ser asignados a una de trescategoras de memoria: memoria esttica, la pila en tiempo de ejecucin yel montculo.

    Gestin de memoria

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    63/78

    Lenguajes de programacin: niveles,sintaxis y semntica (IX)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (V)

    Una excepcin es una condicin detectada por una operacin la cual no sepuede resolver en el contexto de la operacin. Dos procesos bsicos seasocian al manejo de excepciones: (1) lanzamiento de la excepcin y (2)captura de la excepcin. El lanzamiento de una excepcin es sealar quese ha producido una excepcin, mientras que la captura de la excepcinconsiste en proporcionar una forma de manipular dicha excepcin,

    transfirindose el control del programa al manipulador de la excepcin.

    Manejo de excepciones

    Lenguajes de programacin: niveles

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    64/78

    Lenguajes de programacin: niveles,sintaxis y semntica (X)

    Aspectos a considerar en el diseo e implementacin de loslenguajes de programacin (VI)

    Cmo se ejecutan los programas.

    Implementacin

    Se refiere a los aspectos prcticos del uso de los programas.

    Pragmtica

    Lenguajes de programacin: niveles sintaxis

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    65/78

    Lenguajes de programacin: niveles, sintaxisy semntica (XI)

    Contexto en elque se ubicanlos lenguajes de

    programacin

    Lenguaje natural

    Aplicacin

    Lenguaje de programacin

    Compilador/Intrprete

    Mquina virtualSistema operativo

    Lenguaje

    de mquina

    Lenguajes de programacin: traductores de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    66/78

    Lenguajes de programacin: traductores delenguajes (I)

    Traductores de

    lenguaje

    Intrpretes Compiladores

    Un traductor de lenguaje es un programa que traduce a cdigo demquina un programa fuente escrito en un lenguaje de alto nivel.

    Lenguajes de programacin: traductores de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    67/78

    Lenguajes de programacin: traductores delenguajes (II)

    Intrpretes

    Un intrprete es un traductor que recibe como entrada un programa fuente,lo traduce y lo ejecuta. Un intrprete traduce y ejecuta una instruccin en

    cdigo fuente, a la vez. Los programas interpretados generalmente sonms lentos en ejecucin que los programas compilados.

    Programa fuente IntrpreteTraduccin y

    ejecucin lnea

    a lnea

    Lenguajes de programacin: traductores de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    68/78

    Lenguajes de programacin: traductores delenguajes (III)

    Compiladores

    Un compilador traduce un programa fuente escrito en lenguaje de altonivel al lenguaje de mquina de la computadora. El programa traducido a

    lenguaje de mquina es almacenado como cdigo objeto.

    Programa fuente Compilador Programa objeto

    Lenguajes de programacin: traductores de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    69/78

    Lenguajes de programacin: traductores delenguajes (IV)

    Fases de la compilacin de un programa

    Programa

    fuente CompiladorPrograma

    objeto Linker

    Programa

    ejecutable

    en lenguajede mquina

    Analizador

    lxico

    Analizador

    sintctico

    Analizador

    semntico

    Generador

    de cdigo

    intermedio

    Optimizador

    de cdigo

    Generador

    de cdigo

    objeto

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    70/78

    Paradigmas de programacin (I)

    Programacin imperativa Programacin funcional

    Programacin lgica Programacin orientada a objetos Programacin concurrente Programacin guiada por eventos

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    71/78

    Paradigmas de programacin (II)

    El programa se define como una serie de acciones o pasos, cada uno delos cuales recibe una entrada, ejecuta un clculo, o produce comoresultado una salida. La programacin imperativa se basa en la asignacin

    de valores, en la utilizacin de variables para almacenar valores y en larealizacin de operaciones con estos valores almacenados. Ejemplos delenguajes de programacin imperativa son los lenguajes de alto nivel(Fortran, C, Pascal, etc.) y los lenguajes ensambladores.

    Programacin imperativa

    Los programas estn formados por una coleccin de definiciones defunciones. Las funciones interactan entre s utilizando condicionales,recursividad y composicin funcional. Ejemplos de lenguajes deprogramacin funcional son Lisp y Scheme.

    Programacin funcional

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    72/78

    Paradigmas de programacin (III)

    Un lenguaje de programacin lgica es un tipo de lenguaje declarativo, enel cual el programa est formado por un conjunto de declaraciones lgicas(predicados, hechos). La ejecucin de un programa consiste en aplicar

    estas declaraciones para obtener todas las soluciones posibles a unproblema. El ejemplo clsico de lenguaje de programacin lgica esProlog.

    Programacin lgica

    El programa es una coleccin de objetos que interactan entre s a travsdel paso de mensajes, los cuales comnmente transforman el estado delos objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk,C++, Eiffel y Java.

    Programacin orientada a objetos

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    73/78

    Paradigmas de programacin (IV)

    La programacin se basa en la ejecucin simultnea de procesos, ya seaen una misma computadora con uno o varios procesadores, que en uncluster de computadoras. El programa se define como una coleccin de

    procesos cooperativos y asncronos. Ejemplos de lenguajes concurrentesson Linda y Fortran de alto rendimiento.

    Programacin concurrente

    El programa responde a eventos externos generados en un orden nopredecible. Los eventos comnmente se generan a partir de acciones delusuario en la pantalla (por ejemplo, clics del mouse o pulsaciones deteclas), pudiendo existir tambin otras fuentes generadoras de eventos.Ejemplos de lenguajes de programacin guida por eventos son VisualBasic y Java.

    Programacin guiada por eventos

    Estrategias de construccin de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    74/78

    s a eg as de co s ucc deprogramas (I)

    Fases de construccin de un programa

    Descripcin

    y anlisis del

    problema

    Diseo del

    algoritmo

    Codificacin

    del programa

    Ejecucin del

    programa

    Validacin del

    programa

    Estrategias de construccin de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    75/78

    gprogramas (II)

    Programacin modular (I)La filosofa subyacente de la programacin modular es la descomposicindel programa en mdulos independientes, cada uno de los cuales ejecutauna nica actividad o funcin. Cada mdulo se analiza, se disea, se

    codifica y se verifica por separado. El programa es una jerarqua demdulos, con un mdulo principal (tambin llamado programa principal) conuna funcin de controlador. El mdulo principal transfiere el control a losmdulos inmediatamente subordinados (o subprogramas), de modo questos puedan ejecutar sus funciones. Una vz que el mdulo subordinadohaya completado su tarea, devolver nuevamente el control al mdulocontrolador.

    La descomposicin de un mdulo en submdulos contina hasta que sellegue a un punto en que el mdulo resultante tenga slo una tareaespecfica que ejecutar (lectura, salida de resultados, procesamiento de

    datos o control de otros mdulos).

    Estrategias de construccin de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    76/78

    gprogramas (III)

    Programacin modular (II)

    . . .

    Mdulo

    principal

    Mdulo 1 Mdulo 2 Mdulo 3 Mdulo N

    Mdulo 12 Mdulo 31 Mdulo 32 Mdulo N1 Mdulo N2Mdulo 11

    Mdulo 311 Mdulo 312

    Estrategias de construccin de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    77/78

    gprogramas (IV)

    Programacin modular (III)

    Ejemplo de descomposicin de un programa en mdulos:programa para el clculo de estadsticas descriptivas

    Clculo de

    estadsticas

    Lectura de

    datos

    Clculo de

    medidas de

    tendencia

    central

    Clculo de

    medidas de

    dispersin

    Generacin de

    tablas

    resumen

    Generacin de

    grficos

    Estrategias de construccin de

  • 7/28/2019 Desarrolla software utilizando programacin estructurada

    78/78

    gprogramas (V)

    Programacin estructurada (programacin sin goto)La programacin estructurada es un conjunto de tcnicas queincorporan:

    Diseo modular

    Diseo descendente (top-down)

    Estructuras de control bsico: