programacion estructurada

73
Programación Estructurada

Upload: rose

Post on 15-Nov-2015

12 views

Category:

Documents


0 download

DESCRIPTION

programacion

TRANSCRIPT

  • Programacin Estructurada

  • Concepto de algoritmo (I)

    Un algoritmo es un procedimiento para resolver un problema.

    ste describe un conjunto finito y ordenado de pasos, reglas o

    instrucciones para producir la solucin a un problema dado.

    Un algoritmo puede ser definido como una secuencia de

    instrucciones bien definidas y efectivas, y finaliza con la

    produccin del resultado esperado a partir de las entradas

    dadas.

  • 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

    . . .

  • 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*a

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

    del problema

  • Caractersticas de los algoritmos (I)

    Son precisos. Deben indicar el orden de realizacin de cada paso, as como especificar con precisin las

    entradas y cada paso o etapa

    Estn bien definidos. Etapas bien definidas y concretas

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

    Son finitos. Deben tener un nmero finito de pasos y deben terminar

    Deben describir el resultado o efecto final. La salida esperada del algoritmo debe estar completamente

    especificada

  • Caractersticas de los algoritmos (II)

    Entrada

    Proceso

    Salida

    Partes que debe describir la definicin de un algoritmo:

    Entrada Salida Proceso

  • Caractersticas de los algoritmos (III)

    Son independientes tanto del lenguaje de programacin en el que se expresan como del hardware en que se

    ejecutan los programas

    Algoritmo

    Cdigo en C

    Cdigo en

    Pascal

    Cdigo en

    Fortran

    Computadora con

    los compiladores

    de C y Pascal

    Computadora con

    el compilador de

    Fortran

    Expresado

    en

    Ejecutado

    en

  • El rol del algoritmo en la resolucin de

    problemas (I)

    Descripcin y

    anlisis del

    problema

    Diseo del

    algoritmo

    Programa en un

    lenguaje de

    programacin

    La resolucin de un problema en computadora requiere como

    paso previo el diseo de un algoritmo que especifique el

    procedimiento para resolver el problema. Es decir, antes de

    codificar un programa se requiere disear el algoritmo.

  • Ejemplos de algoritmos (I.a.)

    Definicin del problema

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

    deportistas

    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)

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

    anlisis del problema

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

    4. 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 + 1 6.3 SI S = F, entonces CF CF + 1 6.4 Incrementar en 1 el contador: TP TP + 1

  • 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: , PM

    10. Escribir Porcentaje de mujeres en el grupo: , PF

    11. Fin

    En este algoritmo se puede apreciar el uso de las tres

    estructuras de control de la programacin estructurada:

    Estructura secuencial

    Estructura selectiva

    Estructura iterativa

  • Diseo de algoritmos (I)

    Diseo del

    algoritmo

    Diseo

    descendente Refinamiento Representacin

    grfica

  • Diseo de algoritmos (II)

    Diseo descendente (I)

    El diseo descendente (top down) es un procedimiento de

    refinamiento iterativo de un problema, en el cual se parte del

    mayor nivel de abstraccin del problema (sistema o tarea) y

    se prosigue hacia los niveles inferiores a travs de un proceso

    de descomposicin del problema en subproblemas.

    En el diseo descendente se parte de una visin estructural

    del problema sin especificar detalles para ninguna de sus

    partes componentes. Cada componente del sistema es

    entonces refinado, mostrando ms detalles en cada nivel de

    refinamiento.

  • Diseo de algoritmos (III)

    Diseo descendente (II)

    . . .

    Problema

    Subproblema Subproblema Subproblema Subproblema

    Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema

    Subproblema Subproblema

  • Diseo de algoritmos (IV)

    Diseo descendente (III)

    El diseo descendente efecta una relacin entre las

    sucesivas etapas de refinamiento, de forma tal que stas se

    relacionen unas con otras a travs de los flujos de entrada y

    de salida de informacin.

    X Y P

    P1

    P2

    P3

    P4 X Y

    U

    V

    P

    Q

    P31 P32 P33 V Q R S

  • 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

    efectivo Pago de

    servicios . . .

    . . .

  • Diseo de algoritmos (VI)

    Refinamiento del algoritmo (I)

    Comnmente, la primera versin de un algoritmo no

    constituye una versin completa ni especfica del mismo. El

    refinamiento del algoritmo se refiere a la conversin del

    primer esbozo/versin del algoritmo en una versin ms

    detallada y completa, haciendo los pasos del algoritmo ms

    especficos. Este proceso conduce a la obtencin de un

    algoritmo claro, preciso y completo.

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

    estudiantes (primer esbozo)

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

    estudiantes (versin refinada)

  • Diseo de algoritmos (IX)

    Refinamiento del algoritmo (IV)

    5. Calcular la media de la edad: ME SE/N

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

    peso de un grupo de estudiantes (versin refinada)

  • Diseo de algoritmos (X)

    Especificacin y representacin grfica del

    algoritmo

    Pseudocdigo

    Diagramas de flujo

    Diagramas de Nassi-Schneiderman (N-S)

  • Diseo de algoritmos (XI)

    Especificacin del algoritmo: pseudocdigo (I)

    El pseudocdigo es un lenguaje de especificacin de

    algoritmos, comnmente con una sintaxis para las estructuras

    de control similar a la expresada en el lenguaje de

    programacin al que ser traducido el algoritmo. Cuando un

    algoritmo es expresado en pseudocdigo, entonces la

    traduccin de ste al lenguaje de programacin seleccionado

    resultar relativamente fcil.

    Algoritmo Especificacin

    en

    pseudocdigo

    Programa

  • Diseo de algoritmos (XII)

    Especificacin del algoritmo: pseudocdigo (II)

    Las acciones y las estructuras de control se representan en el

    pseudocdigo con palabras reservadas del ingls, similares a las utilizadas

    en los lenguajes de programacin estructurada. Entre estas palabras

    reservadas, las ms usadas son:

    start

    read

    write

    If-then-else

    while-end

    repeat-until

    end

    Comnmente, la

    escritura del

    pseudocdigo

    requiere el uso de la

    indentacin de las

    diferentes lneas

  • Diseo de algoritmos (XIII)

    Especificacin del algoritmo: pseudocdigo (III)

    Begin

    read N

    NE 0

    SE 0

    SP 0

    while NE < N

    read E, P

    SE SE + E

    SP SP + P

    NE NE + 1

    end while

    Algoritmo para el

    clculo de la media y

    desviacin estndar

    de la edad y peso de

    un grupo de

    estudiantes (versin

    en pseudocdigo)

  • Diseo de algoritmos (XIV)

    Especificacin del algoritmo: pseudocdigo (IV)

    ME SE/N

    MP SP/N

    write La edad promedio es: , ME

    write El peso promedio es: , MP

    end

    Cuando se usa el

    pseudocdigo como

    lenguaje de

    especificacin de un

    algoritmo, el

    programador puede

    concentrarse en la

    lgica y en las

    estructuras de control

    sin preocuparse por

    la sintaxis y reglas

    del lenguaje de

    programacin.

  • Diseo de algoritmos (XV)

    Representacin grfica del algoritmo:

    diagramas de flujo (I) Un diagrama de flujo (flowchart, del ingls) es una tcnica de

    representacin grfica de la lgica o pasos de un algoritmo. El diagrama

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

    ejecutar en un algoritmo (lectura, asignacin, decisin, escritura, etc.),

    mientras que las flechas muestran la progresin paso a paso a travs

    del algoritmo.

    Con la aparicin de los lenguajes de programacin estructurada el uso

    de los diagramas de flujo ha disminudo considerablemente, dando paso

    a otras tcnicas de representacin (como por ejemplo, diagramas N-S,

    tablas procesos-entidades, diagramas estructurales, diagramas de

    burbujas, etc. ) que capturan en un modo ms adecuado la esencia y

    principios de la programacin estructurada.

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

    seleccin (decisin lgica)

    Rectngulo redondeado Representa el inicio y fin del

    diagrama

    Crculo Se usa como conector entre

    dos partes del diagrama

  • Diseo de algoritmos (XVII)

    Representacin grfica del algoritmo:

    diagramas de flujo (III) 1. Inicio

    2. Leer cantidad de estudiantes (N)

    3. NE

  • Diseo de algoritmos (XVIII)

    Continuacin (IV)

    1. Inicio

    2. Leer cantidad de estudiantes (N)

    3. NE

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

    algoritmos que combina la especificacin en pseudocdigo con la

    representacin grfica del diagrama de flujo.

    Cuando se usa el diagrama N-S un algoritmo es representado con un

    rectngulo dividido en franjas o bandas horizontales, donde cada banda

    representa una accin a realizar.

    La especificacin de los pasos del algoritmo se hace utilizando las

    palabras reservadas ya vistas en el pseudocdigo, mientras que los

    smbolos utilizados en el diagrama corresponden a cada tipo de

    estructura de control: secuencia, seleccin, iteracin.

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

    en espaol)

  • 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

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

    leer edad, peso

    leer deporte

    Instruccin escribir

    escribir

    Ejemplos:

    escribir edadPromedio, pesoPromedio

    escribir deporte

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

    2. Leer base y altura (b, a)

    3. ar b*a 4. pe 2*(b + a) 5. Escribir rea: , ar 6. Escribir Permetro: , pe 7. Fin

    Diagrama N-S Algoritmo para calcular el rea y

    permetro de un rectngulo

  • 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 . . . n Estructura

    de control

    condicional

    CASE

  • 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

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

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

    de la estructura PARA

    Para Contador valor_inicial hasta valor_final hacer

  • Diseo de algoritmos (XXVIII)

    Representacin grfica del algoritmo:

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

    start

    read N

    NE 0

    SE 0

    SP 0

    while NE < N

    read E, P

    SE SE + E

    SP SP + P

    NE NE + 1

    end while

    Inicio

    real: SE, SP

    entero: NE

    Mientras NE

  • Diseo de algoritmos (XXIX)

    Representacin grfica del algoritmo:

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

    ME = SE/N

    MP = SP/N

    Escribir Edad promedio, ME

    Escribir Peso promedio, MP

    ME

  • De los algoritmos a los programas

    Elementos, estructura y funcionamiento de un sistema de cmputo

    Lenguajes de programacin: niveles, sintaxis y semntica

    Estrategias de contruccin de programas

  • Elementos, estructura y funcionamiento de

    un sistema de cmputo (I)

    CPU

    Unidad Central de Proceso

    CU

    Unidad de control

    ALU

    Unidad

    lgico-aritmtica

    RAM

    Memoria

    Dispositivos

    de entrada

    Dispositivos

    de salida

    Memoria externa

    (almacenamiento

    permanente)

    Organizacin fsica de una computadora

  • Elementos, estructura y funcionamiento de

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

  • Elementos, estructura y funcionamiento de

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

  • Elementos, estructura y funcionamiento de

    un sistema de cmputo (IV)

    Funcionamiento de una computadora (III)

    El papel de la memoria central (memoria RAM, Random Access Memory) es

    el almacenamiento de informacin: datos y programas. Para que un

    programa se pueda ejecutar, debe ser almacenado en la memoria central

    (carga o load del programa). Tambin los datos que sern usados por el

    programa 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

    cach Procesador

  • Elementos, estructura y funcionamiento de

    un 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

  • Elementos, estructura y funcionamiento de

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

    memorias auxiliares) ms comnmente utilizados se encuentran:

    La memoria externa

    El disco duro

    Disquetes magnticos

    Unidad CD-ROM

    Unidad DVD

    Memoria USB

  • Elementos, estructura y funcionamiento de

    un sistema de cmputo (VII)

    El microprocesador

    El microprocesador es un chip, un circuito integrado electrnico que es

    utilizado como unidad central de proceso en una computadora. Las

    funciones del microprocesador son el clculo y control computacional.

    Memoria central Unidad de

    control

    Unidad lgico-

    aritmtica

    Microprocesador

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (I)

    Niveles de lenguajes de programacin (I)

    Lenguajes de mquina

    Lenguajes

    ensambladores

    Lenguajes de alto nivel

    Lenguajes declarativos

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

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

    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,

    sintaxis y semntica (IV)

    Lenguaje de programacin =

    Lxico + Sintaxis + Semntica

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (V)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes de programacin (I)

    Lxico

    Sintaxis

    Semntica

    Gestin de memoria

    Manejo de excepciones

    Implementacin

    Pragmtica

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (VI)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes de programacin (II)

    Lxico

    Es el conjunto de categoras gramaticales que definen el vocabulario del

    lenguaje de programacin. Comnmente, el lxico de un lenguaje de

    programacin posee las siguientes categoras gramaticales:

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

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

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (VII)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes de programacin (III)

    La sintaxis de un lenguaje de programacin es la definicin gramatical de

    lo que constituye un programa en dicho lenguaje. La sintaxis se especifica

    en trminos de un conjunto de reglas que rigen la construccin de los

    programas. La definicin de la sintaxis de un lenguaje de programacin

    debe ser clara, concisa y formal. La sintaxis del lenguaje de programacin

    se describe a partir de otros lenguajes, llamados metalenguajes. Uno de

    los metalenguajes ms difundidos es el formalismo BNF (Backus-Naur

    Form), una gramtica libre de contexto.

    Sintaxis

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (VIII)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes de programacin (IV)

    Se refiere al significado de los programas. Es el conjunto de reglas que

    permiten determinar el significado de cualquier construccin del lenguaje.

    La semntica asocia un significado a cada posible construccin gramatical

    del lenguaje.

    Semntica

    La gestin de memoria se refiere al proceso de asignar valores a la

    memoria, considerando tanto las caractersticas estticas como dinmicas

    de dichos valores. Los valores pueden ser asignados a una de tres

    categoras de memoria: memoria esttica, la pila en tiempo de ejecucin y

    el montculo.

    Gestin de memoria

  • Lenguajes de programacin: niveles,

    sintaxis y semntica (IX)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes de programacin (V)

    Una excepcin es una condicin detectada por una operacin la cual no se

    puede resolver en el contexto de la operacin. Dos procesos bsicos se

    asocian al manejo de excepciones: (1) lanzamiento de la excepcin y (2)

    captura de la excepcin. El lanzamiento de una excepcin es sealar que

    se ha producido una excepcin, mientras que la captura de la excepcin

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

    sintaxis y semntica (X)

    Aspectos a considerar en el diseo e implementacin de los

    lenguajes 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

    y semntica (XI)

    Contexto en el

    que se ubican

    los lenguajes de

    programacin

    Lenguaje natural

    Aplicacin

    Lenguaje de programacin

    Compilador/Intrprete

    Mquina virtual

    Sistema operativo

    Lenguaje

    de mquina

  • Lenguajes de programacin: traductores de

    lenguajes (I)

    Traductores de

    lenguaje

    Intrpretes Compiladores

    Un traductor de lenguaje es un programa que traduce a cdigo de

    mquina un programa fuente escrito en un lenguaje de alto nivel.

  • Lenguajes de programacin: traductores de

    lenguajes (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 son

    ms lentos en ejecucin que los programas compilados.

    Programa fuente Intrprete

    Traduccin y

    ejecucin lnea

    a lnea

  • Lenguajes de programacin: traductores de

    lenguajes (III)

    Compiladores

    Un compilador traduce un programa fuente escrito en lenguaje de alto

    nivel 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

    lenguajes (IV)

    Fases de la compilacin de un programa

    Programa

    fuente Compilador Programa

    objeto Linker

    Programa

    ejecutable

    en lenguaje

    de mquina

    Analizador

    lxico

    Analizador

    sintctico

    Analizador

    semntico

    Generador

    de cdigo

    intermedio

    Optimizador

    de cdigo

    Generador

    de cdigo

    objeto

  • Paradigmas de programacin (I)

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

  • Paradigmas de programacin (II)

    El programa se define como una serie de acciones o pasos, cada uno de

    los cuales recibe una entrada, ejecuta un clculo, o produce como

    resultado una salida. La programacin imperativa se basa en la asignacin

    de valores, en la utilizacin de variables para almacenar valores y en la

    realizacin de operaciones con estos valores almacenados. Ejemplos de

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

    funciones. Las funciones interactan entre s utilizando condicionales,

    recursividad y composicin funcional. Ejemplos de lenguajes de

    programacin funcional son Lisp y Scheme.

    Programacin funcional

  • Paradigmas de programacin (III)

    Un lenguaje de programacin lgica es un tipo de lenguaje declarativo, en

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

    problema. El ejemplo clsico de lenguaje de programacin lgica es

    Prolog.

    Programacin lgica

    El programa es una coleccin de objetos que interactan entre s a travs

    del paso de mensajes, los cuales comnmente transforman el estado de

    los objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk,

    C++, Eiffel y Java.

    Programacin orientada a objetos

  • Paradigmas de programacin (IV)

    La programacin se basa en la ejecucin simultnea de procesos, ya sea

    en una misma computadora con uno o varios procesadores, que en un

    cluster de computadoras. El programa se define como una coleccin de

    procesos cooperativos y asncronos. Ejemplos de lenguajes concurrentes

    son Linda y Fortran de alto rendimiento.

    Programacin concurrente

    El programa responde a eventos externos generados en un orden no

    predecible. Los eventos comnmente se generan a partir de acciones del

    usuario en la pantalla (por ejemplo, clics del mouse o pulsaciones de

    teclas), pudiendo existir tambin otras fuentes generadoras de eventos.

    Ejemplos de lenguajes de programacin guida por eventos son Visual

    Basic y Java.

    Programacin guiada por eventos

  • Estrategias de construccin de

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

    programas (II)

    Programacin modular (I)

    La filosofa subyacente de la programacin modular es la descomposicin

    del programa en mdulos independientes, cada uno de los cuales ejecuta

    una nica actividad o funcin. Cada mdulo se analiza, se disea, se

    codifica y se verifica por separado. El programa es una jerarqua de

    mdulos, con un mdulo principal (tambin llamado programa principal) con

    una funcin de controlador. El mdulo principal transfiere el control a los

    mdulos inmediatamente subordinados (o subprogramas), de modo que

    stos puedan ejecutar sus funciones. Una vz que el mdulo subordinado

    haya completado su tarea, devolver nuevamente el control al mdulo

    controlador.

    La descomposicin de un mdulo en submdulos contina hasta que se

    llegue a un punto en que el mdulo resultante tenga slo una tarea

    especfica que ejecutar (lectura, salida de resultados, procesamiento de

    datos o control de otros mdulos).

  • Estrategias de construccin de

    programas (III)

    Programacin modular (II)

    . . .

    Mdulo

    principal

    Mdulo 1 Mdulo 2 Mdulo 3 Mdulo N

    Mdulo 12 Mdulo 31 Mdulo 32 Mdulo N1 Mdulo N2 Mdulo 11

    Mdulo 311 Mdulo 312

  • Estrategias de construccin de

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

    programas (V)

    Programacin estructurada (programacin sin goto)

    La programacin estructurada es un conjunto de tcnicas que

    incorporan:

    Diseo modular

    Diseo descendente (top-down)

    Estructuras de control bsico:

    secuencia, seleccin e iteracin