Vous êtes sur la page 1sur 78

Curso de Programacin

Estructurada
Parte I
Dr. Ana Lilia Laureano-Cruces
e-mail: clc@correo.azc.uam.mx

Departamento de Sistemas
UAM, Unidad Azcapotzalco

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

...

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

Datos de salida:

Continuamos con el
anlisis del problema

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
<N
6.1 Leer TP
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
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

U
X

P1

P2

P4

P3

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

Consulta de
saldo

Retiro de
efectivo

Seleccin de
tipo de
operacin

Traspaso
entre cuentas
propias

...

...

Finalizar

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.

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

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.

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

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)

Inicio

3. NE <- 0, SE <- 0, SP <- 0


4. MIENTRAS NE < N

Leer N

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


4.2 SE <- SE + E

NE <- 0

4.3 SP <- SP + P
4.4 Incrementar el contador: NE <- NE + 1

SE <- 0

5. FIN-MIENTRAS
Calcular la media de la edad: ME <- SE/N
6. Calcular la media del peso: MP <- SP/N

SP <- 0

7. Escribir La edad promedio es: , ME


8. Escribir El peso promedio es: , MP
9. Fin

Diseo de algoritmos (XVIII)


1

Continuacin (IV)

Leer E, P

1. Inicio

SE <- SE+E

2. Leer cantidad de estudiantes (N)


3. NE <- 0, SE <- 0, SP <- 0

SP <- SP+P

4. MIENTRAS NE < N
4.1 Leer edad y peso del estudiante (E, P)
4.2 SE <- SE + E
4.3 SP <- SP + P

NE <- NE+1
Si

NE <N
No

4.4 Incrementar el contador: NE <- NE + 1

ME <- SE/N

5. FIN-MIENTRAS
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

MP <- SP/N
Escribir
ME, MP
Fin

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

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

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

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

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

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

si <condicin> entonces

condicin

<accin 1>

si_no

No

<acciones>

<accin 2>
selector
Estructura
de control
condicional
CASE

otro

3 ...

<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

CM = CM + 1

No

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

Representacin en el diagrama N-S


de la estructura REPITE-HASTA

(condicin)

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

start
read N

real: SE, SP

NE 0

entero: NE

SE 0

NE = 0

SP 0
while NE < N
read E, P
SE SE + E
SP SP + P
NE NE + 1
end while

SE = 0
SP = 0
Mientras
leer E, P
SE = SE + E
SP = SP + P
NE = NE + 1

NE <N

Diseo de algoritmos (XXIX)


Representacin grfica del algoritmo:
diagramas de Nassi-Schneiderman (N-S) (XI)
ME <- SE/N

ME = SE/N

MP <- SP/N

MP = SP/N

write Edad promedio: , ME

Escribir Edad promedio, ME

write Peso promedio: , MP

Escribir Peso promedio, MP

end

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

Memoria central

Unidad de
control

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

Analizador
lxico

Compilador

Analizador
sintctico

Programa
objeto

Analizador
semntico

Linker

Generador
de cdigo
intermedio

Optimizador
de cdigo

Programa
ejecutable
en lenguaje
de mquina

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 11

Mdulo 2

Mdulo 12

Mdulo 3

Mdulo 31

Mdulo 311

Mdulo 32

Mdulo 312

...

Mdulo N1

Mdulo N

Mdulo N2

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