Vous êtes sur la page 1sur 78

Curso de Programacin Estructurada Parte I

Objetivos (I)

Que al final del curso el estudiante sea capaz de: Ubicar la importancia de la programacin en la ingeniera del software Explicar el proceso de construccin de un programa Disear algoritmos para resolver problemas simples Disear y construir programas modulares bajo el enfoque de la programacin estructurada utilizando eficazmente y eficientemente un entorno de desarrollo convencional

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

Contenido Sinttico
Resolucin de problemas y los algoritmos
De los algoritmos a los programas Constructores fundamentales de la programacin estructurada Fundamentos del diseo modular Algoritmos iterativos de bsqueda y ordenamiento Archivos Introduccin a los tipos de datos abstractos Introduccin al anlisis y diseo estructurado del software

Resolucin de problemas y los algoritmos


Concepto de algoritmo Propiedades de un algoritmo El rol del algoritmo en la resolucin de problemas

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

Descripcin del resultado o efecto

Accin o procedimiento

Accin o procedimiento

Un primer ejemplo de algoritmo


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

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)
1. 2. 3. 4. 5. 6. 7. Inicio Leer base y altura (b, a) ar b*a pe 2*(b + a) Escribir rea del rectngulo: , ar Escribir Permetro del rectngulo: , pe Fin

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)


Partes que debe describir la definicin de un algoritmo: Entrada Proceso Salida

Entrada

Proceso

Salida

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
Expresado en Cdigo en C

Ejecutado en
Computadora con los compiladores de C y Pascal

Algoritmo

Cdigo en Pascal Cdigo en Fortran


Computadora con el compilador de Fortran

El rol del algoritmo en la resolucin de problemas (I)


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.

Descripcin y anlisis del problema

Diseo del algoritmo

Programa en un lenguaje de programacin

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) Continuamos con el anlisis del problema

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)

Ejemplos de algoritmos (I.c.)


Algoritmo: 1. 2. 3. 4. 5. 6. Inicio Inicializar en cero el total de personas del sexo masculino: CM 0 Inicializar en cero el total de personas del sexo femenino: CF 0 Inicializar en cero el total de personas procesadas: TP 0 Leer total de deportistas (N) MIENTRAS TP < N

6.1 6.2 6.3 6.4

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

FIN-MIENTRAS

Ejemplos de algoritmos (I.d.)


Algoritmo (continuacin): 7. 8. 9. 10. 11. Calcular porcentaje de hombres en el grupo: PM CM/N*100 Calcular porcentaje de mujeres en el grupo: PF CF/N*100 Escribir Porcentaje de hombres en el grupo: , PM Escribir Porcentaje de mujeres en el grupo: , PF 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

Ejemplos de algoritmos (II)

1. 2. 3. 4. 5.

Clculo de la media de N observaciones numricas Determinar si un nmero es primo dada una lista de N nmeros enteros Clculo del factorial de un nmero N Retiro de efectivo en un cajero automtico Receta para preparar spaghetti alla napoletana

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

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

U
X
P1

P2

P
Y

V
P3

P4

P31

P32

P33

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

Retiro de efectivo

Traspaso entre cuentas propias

...

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)
Algoritmo para el clculo de la media de la edad y peso de un grupo de estudiantes (primer esbozo) 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

Diseo de algoritmos (VIII)


Refinamiento del algoritmo (III)
Algoritmo para el clculo de la media de la edad y peso de un grupo de estudiantes (versin refinada)
1. Inicio 2. Leer cantidad de estudiantes (N)

3.
4.

NE 0, SE 0, SP 0
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

Diseo de algoritmos (IX)


Refinamiento del algoritmo (IV)
Algoritmo para el clculo de la media y desviacin estndar de la edad y peso de un grupo de estudiantes (versin refinada)
5. 6. 7. 8. Calcular la media de la edad: ME SE/N Calcular la media del peso: MP SP/N Escribir La edad promedio es: , ME Escribir El peso promedio es: , MP

9. Fin

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

ME SE/N MP SP/N write La edad promedio es: , ME write El peso promedio es: , MP end

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
Flechas o lneas de flujo Rectngulo

Representacin

Significado
Indica el sentido de ejecucin de las acciones Proceso o accin a realizar (por ejemplo, asignacin)

Paralelogramo
Rombo Rectngulo redondeado Crculo

Representa una entrada o salida


Representa el constructor de seleccin (decisin lgica) Representa el inicio y fin del diagrama 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 <- 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 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
1 SE <- 0 NE <- 0 Leer N

Inicio

SP <- 0

Diseo de algoritmos (XVIII)


Continuacin (IV)
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 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
Fin Escribir ME, MP Si NE <- NE+1 NE <N No ME <- SE/N MP <- SP/N 1 Leer E, P SE <- SE+E SP <- SP+P

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)
Representacin grfica N-S de un algoritmo
Begin

<accin 1>
<accin 2> <accin 3> ... End

Palabras reservadas comnmente usadas en la especificacin de las acciones (pueden ser tambin usadas en espaol)

Begin read

write
If-then-else while-end repeat-until

end

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 <lista de identificadores de variables> Ejemplos: leer edad, peso leer deporte Instruccin escribir escribir <lista de variables y constantes> Ejemplos: escribir edadPromedio, pesoPromedio escribir deporte

Diseo de algoritmos (XXIII)


Representacin grfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (V)
Algoritmo para calcular el rea y permetro de un rectngulo
Diagrama N-S Inicio real: b, a, ar, pe Leer b, a ar = b*a pe = 2(b + a) Escribir rea: , ar Escribir permetro: , pe Fin

1. 2. 3. 4. 5. 6. 7.

Inicio Leer base y altura (b, a) ar b*a pe 2*(b + a) Escribir rea: , ar Escribir Permetro: , pe Fin

Diseo de algoritmos (XXIV)


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

si <condicin> entonces
<accin 1> si_no <accin 2>
selector Estructura de control condicional CASE otro 1 2 3 ... n

<acciones>

<acciones>

Diseo de algoritmos (XXV)


Representacin grfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (VII)
Representacin de la estructura de control condicional
Diagrama N-S Algoritmo 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
S = M S No

CM = CM + 1

CF = CF + 1

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
Mientras (condicin)

Representacin en el diagrama N-S de la estructura REPITE-HASTA

<acciones que se repiten>

<acciones que se repiten>

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

<acciones que se repiten>

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

NE = 0
SE = 0 SP = 0 Mientras leer E, P NE <N

SE = SE + E
SP = SP + P

NE = NE + 1

Diseo de algoritmos (XXIX)


Representacin grfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (XI)
ME <- SE/N MP <- SP/N write Edad promedio: , ME write Peso promedio: , MP end
ME = SE/N MP = SP/N Escribir Edad promedio, ME Escribir Peso promedio, MP Fin

Lo que hemos hecho en estas ltimas dos transparencias ha sido la especificacin en un diagrama N-S del algoritmo para el clculo de la edad promedio y peso promedio de un grupo de N personas

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)


Organizacin fsica de una computadora
CPU Unidad Central de Proceso ALU Unidad lgico-aritmtica

Dispositivos de entrada

CU Unidad de control

Dispositivos de salida

RAM Memoria

Memoria externa (almacenamiento permanente)

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


Funcionamiento de una computadora (I)
La unidad central de proceso (del ingls, CPU)
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)

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


Funcionamiento de una computadora (II)
La unidad de control (CU)
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 lgico-aritmtica (ALU)


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

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


Funcionamiento de una computadora (III)
La memoria central (RAM)
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.

Memoria central

Memoria cach

Procesador

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


Funcionamiento de una computadora (IV)
Dispositivos de entrada/salida
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.

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


Funcionamiento de una computadora (V)
La memoria externa
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:

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.
Microprocesador
Unidad de control

Memoria central

Unidad lgicoaritmtica

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


Niveles de lenguajes de programacin (I)

Lenguajes declarativos

Lenguajes de alto nivel

Lenguajes ensambladores

Lenguajes de mquina

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


Niveles de lenguajes de programacin (II)
Lenguajes de mquina
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 ensambladores
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 de programacin: niveles, sintaxis y semntica (III)


Niveles de lenguajes de programacin (III)
Lenguajes de alto nivel
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 declarativos
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 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)
Sintaxis 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.

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


Aspectos a considerar en el diseo e implementacin de los lenguajes de programacin (IV)
Semntica 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.

Gestin de memoria
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.

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


Aspectos a considerar en el diseo e implementacin de los lenguajes de programacin (V)
Manejo de excepciones 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.

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


Aspectos a considerar en el diseo e implementacin de los lenguajes de programacin (VI)
Implementacin Cmo se ejecutan los programas.

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

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


Lenguaje natural
Aplicacin Lenguaje de programacin Compilador/Intrprete

Contexto en el que se ubican los lenguajes de programacin

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 Programa objeto Programa ejecutable en lenguaje de mquina

Compilador

Linker

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)


Programacin imperativa 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 funcional 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.

Paradigmas de programacin (III)


Programacin lgica 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 orientada a objetos 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.

Paradigmas de programacin (IV)


Programacin concurrente 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 guiada por eventos

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.

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 11

Mdulo 12

Mdulo 31

Mdulo 32

Mdulo N1

Mdulo N2

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

Vous aimerez peut-être aussi