ii.-los lenguajes de programación universidad latina

55
II.-Los lenguajes de programación UNIVERSIDAD LATINA

Upload: magdalena-serrano-rubio

Post on 23-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: II.-Los lenguajes de programación UNIVERSIDAD LATINA

II.-Los lenguajes de programación

UNIVERSIDAD LATINA

Page 2: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Definición

Un lenguaje de programación es un conjunto de símbolos y palabras (instrucciones y sentencias) que el usuario tiene a su disposición para elaborar un programa.

Hay distintos Tipos y distintas Historias y Evoluciones

Page 3: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Tipos de Lenguaje

• Lenguaje máquina• Lenguajes de bajo nivel• Lenguajes de alto nivel

Definición

Page 4: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguaje Máquina

Es el programa de programación que entiende directamente la computadora. Este lenguaje utiliza el alfabeto binario, es decir, el 0 y el 1, formando cadenas binarias con las que se elaboran las instrucciones que la CPU del ordenador procesa. Este lenguaje dejó de utilizarse por la complejidad y facilidad para cometer errores al usarlo.

Tipos

Page 5: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de bajo nivel

Son mucho mas fáciles de usar. Las instrucciones son conocidas nemotecnicos.También tiene inconvenientes como por ejemplo que se necesitan muchas instrucciones para realizar tareas simples y exige grandes conocimientos de los hardware.

Tipos

Page 6: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de alto nivel

Estos lenguajes están diseñados para que los programadores escriban y entiendan instrucciones lo más parecidas al lenguaje humano, lo k hace que haya que hace que se requiera menos tiempo para aprender a programar. Son los más utilizados. Este lenguaje es pasado a código binario mediante un intérprete.

Tipos

Page 7: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Evolución

• Lenguajes de primera generación o 1GL• Lenguajes de segunda generación o 2GL• Lenguajes de tercera generación o 3GL• Lenguajes de cuarta generación o 4GL• Lenguajes de quinta generación

Definición

Page 8: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de primera generación

Se caracteriza por el uso de lenguaje máquina. Puesto que el hardware se desarrollaba antes que el software, estos lenguajes estaban adaptados a una máquina específica.

Historia y Evolución

Page 9: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de segunda generación

Es el paso de lenguaje máquina al lenguaje ensamblador o de bajo nivel.Esta etapa duró desde 1950 hasta 1955

Historia y Evolución

Page 10: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de tercera generación

Los intérpretes admiten instrucciones más completas y se crean lenguajes con sus correspondientes frases y palabras que expresaban de manera comprensible las acciones que se quería realizar sobre el ordenador.El primero lenguaje de programación de alto nivel es FORTARAN

Historia y Evolución

Page 11: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de cuarta generación

Son los derivados de los anteriores e incluyen herramientas de mas alto nivel. También están orientados hacia propósitos muy específicos y dependen de cada campo de aplicación.También aparecen los lenguajes de programación orientada a objetos

Historia y Evolución

Page 12: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Lenguajes de quinta generación

Son un problema de debate en la comunidad de la programación porque algunos programadores no pueden estar de acuerdo que existan.Estos lenguajes de alto nivel usarían inteligencia artificial para crear software, haciéndolos sumamente difíciles de desarrollar.

Historia y Evolución

Page 13: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Historia de los lenguajes de programaciónLos primeros lenguajes de alto nivel aparecieron en loas 50´s, y desde entonces han evolucionado de manera continua. En los años 60´s se estaban usando más de 500 lenguajes en proyectos de la defensa de USA.

- 1955- 1960. Lenguajes basados en el cálculo numérico.- Principios de los 50´s. Empezaron a aparecer notaciones simbólicas.- Lenguajes proyectados para compilar expresiones aritméticas sencillas en un lenguaje de máquina ejecutable.- Grace Hopper encabezó un grupo en UNIVAC para desarrollar el lenguaje A-0.- John Backus desarrolló Speedcoding para la IBM 701.- Aparece IPL (Information Processing Language) lenguaje de procesamiento de información, como el primer lenguaje de inteligencia artificial. IPL-V se conoció en forma amplia, pero su uso estaba limitado por su diseño de bajo nivel.- Lenguaje para sistemas es el Ensamblador que ha estuvo mucho tiempo como estándar en esta rama. También se desarrollaron CPL y BCPL.

Page 14: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Historia de los lenguajes de programación1955-1957.- Backus encabezó un equipo para desarrollar FORTRAN, o FORmula TRANslator (traductor de formulas), enfocado a cálculos numéricos, pero la meta era un lenguaje de programación en toda forma que incluyera estructuras de control, condicionales y enunciados de entrada y salida. Su meta fue la eficiencia de la IBM 704. FORTRAN fue un éxito ya que cambio para siempre la programación.- John McCarthy, del MIT diseño LISP(List Processing) procesamiento de listas para la IBM 704. - Grace Hooper encabezo un grupo en UNIVAC para desarrollar FLOWMATIC con la finalidad de desarrollar aplicaciones de negocios usando una forma de texto parecido al inglés.- Yngve del MIT desarrollo el COMIT y ATT desarrollo SNOBOL, lenguajes donde se podían sustituir cadenas de símbolos por otras cadenas.- Aparece PROLOG como un lenguaje para usos especiales cuya estructura básica de control y su estrategia de implementación se basaban en conceptos de lógica matemática.

Page 15: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Historia de los lenguajes de programación1958.-Debido al éxito de FORTRAN, existió el temor de que IBM dominará la industria, por lo que La Sociedad Alemana de Matemáticas Aplicadas y la Asociación de Maquinarias de Cómputo de USA, unieron esfuerzos y liderado por Naur desarrollaron el lenguaje ALGOL 58. Se revisó en 1960 y dio lugar a ALGOL 60.-Uso la notación sintáctica comparable con el concepto de lenguaje libre de contexto desarrollado por Chomsky. Esto constituyo la introducción de la teoría formal de la gramática al mundo de los lenguajes de programación.

- Burrougs, vendedor de computadoras que más tarde se fusiono con Sperrry Univac para formar Unisys incluye la técnica del polaco Lukasewics de evaluación de expresiones matemáticas sin paréntesis con un proceso eficiente de evaluación con base a pilas. Esta técnica tuvo un importante efecto sobre la teoría de compiladores. A través del uso de la técnica de Lukasewics, Borrougs desarrollo el hardware de computadora B5500 con base en una arquitectura de pilas y pronto tuvo un compilador de ALGOL, mucho más rápido que cualquier compilador de FORTRAN.

Page 16: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Historia de los lenguajes de programación1959.- El departamento de defensa de USA patrocino una reunión para desarrollar el Common Business Languaje (CBL: lenguaje común para negocios), el cual habría de ser un lenguaje orientado a negocios que usara el inglés tanto como fuera posible para su notación.1960´s.- Aparecen las especificaciones de COBOL (Common Business Oriented Languaje), se reviso en 1961 y 1962, se estandarizó en 1968, y revisado nuevamente en 1974 y 78. Aparecen los tipos definidos por el usuario. Aparece SIMULA-67, desarrollado por Nygaard y Dahl de Noruega introdujo el concepto de clases en ALGOL. Stroustrup lo implementa en sus clases de C++ como una extensión de C n los 80’s..Whirth desarrollo ALGOL-W como una extensión de ALGOL (con mediano éxito).Whirth desarrolla PASCAL el cual se convirtió en el lenguaje de la ciencia de la computación en los 70. Aparece ALGOL 68.1970’s.-IBM desarrolla NPL (new programming lenguaje). Después cambia el nombre a MPPL (multi purpose programming lenguaje) para finalmente quedar en PL/1. Fusiona los atributos numéricos de FORTRAN con las características de programación para negocios de COBOL . Aparece el lenguaje C, con el desarrollo de un entorno competitivo en UNIX escrito principalmente en C, se ha demostrado la eficacia de lenguajes de alto nivel en el entorno de los lenguajes para sistemas .- actualidad: lenguajes orientados a objetos (C sharp, Java) y lenguajes de 4GL (oracle, ABAP, Progress)

Page 17: II.-Los lenguajes de programación UNIVERSIDAD LATINA

sintaxis de los lenguajes de programación.La sintaxis de un lenguaje de programación proporciona las reglas de cómo se escriben los enunciados, declaraciones y otras construcciones del lenguaje.

La semántica de un lenguaje de programación es el significado que se da a las diversas construcciones sintácticas. Por ejemplo, en C un vector, se especificaría como: Int V[10];

La definición de sintaxis es “la disposición de palabras como elementos en una oración para mostrar su relación”, describe la serie de símbolos que constituyen programas validos. La sintaxis suministra información significativa que se necesita para entender un programa y proporciona información imprescindible para la traducción del programa fuente a un programa objeto.

El propósito primordial de la sintaxis es proveer una notación para la comunicación entre el programador y el procesador de lenguajes de programación.

Page 18: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Elementos sintácticos del lenguaje•Conjunto de caracteres. Es lo primero que se define al proyectar la sintaxis de un lenguaje.•Identificadores. Conjuntos de caracteres pertenecientes al lenguaje, que por lo regular inician con una letra y están compuestos por letras y dígitos.•símbolos de operadores. +,-, *, /, etc.•Palabras clave y palabras reservadas. Es un identificador que se usa como una parte fijas de la sintaxis de un enunciado, ejemplo READ, IF, etc.•Palabras pregonadas. Palabras opcionales que se insertan en los enunciados para mejorar la legibilidad.•Comentarios. Importantes para su documentación.•Espacios en blanco. •Delimitadores y corchetes.•Formatos de campo (libres y fijos).•Expresiones.•Enunciados.

Page 19: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Etapas de traducción•Análisis del programa fuente:

i. Análisis Léxico.- Agrupar la serie de caracteres del programa objeto en sus constituyentes elementales: identificadores, delimitadores, símbolos de operadores, números, palabras clave, palabras pregonadas, espacios en blanco, comentarios, etc. Las unidades básicas de programa que resultan del análisis léxico se llaman elementos o componentes léxicos. Además identifica el tipo de cada elemento.ii. Análisis Sintáctico (parsing).- Se identifican las estructuras de programa más grandes (enunciados, declaraciones, expresiones, etc.) usando los elementos léxicos producidos por el analizador léxico . Primero identifica una serie de elementos léxicos que forman una unidad sintáctica como una expresión, enunciado, llamada de subprograma o declaración.iii. Análisis Semántico.- Fase modular de la traducción. Aquí se procesan las estructuras sintácticas reconocidas por el analizador sintáctico y la estructura del código objeto ejecutable comienza a tomar forma. El análisis semántico es, por tanto, el puente entre las partes de análisis y de síntesis de traducción. Aquí también ocurre el mantenimiento de tablas de símbolos, la mayor parte de la detección de errores, la expansión de macros y la ejecución de enunciados de tiempo de compilación. Las partes del analizador semántico son:a. Mantenimiento de tablas de símbolos.b. Inserción de información implícita.c. Detección de errores.d. Procesamiento de macros y operaciones en tiempo de compilación.

Page 20: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Etapas de traducciónSíntesis del programa objeto:

i. Optimización.- El analizador semántico genera la forma del programa interno de manera irregular, conforme se analiza cada segmento del programa de entrada. El optimizador lo que hace es que reemplaza las secuencias que son irregulares por otras mejoras que evitan insuficiencias obvias.ii. Generación de código.- Después de que se ha optimizado el programa traducido en la representación interna, se debe transformar en los enunciados en lenguaje ensamblador, código de máquina u otra forma de programa objeto que va a constituir la salida de la traducción. Este proceso implica dar el formato apropiado a la salida con base en la información que contiene la representación interna del programa. El código de salida puede ser directamente ejecutable o puede haber otros pasos de traducción por seguir, por ejemplo, ensamblado o vinculación y carga.iii. Vinculación y carga.- Los fragmentos de código que son resultado de las traducciones individuales de los subprogramas se funden en el programa final ejecutable. La salida de las fases de traducción precedentes consisten en programas ejecutables en una forma casi final, excepto cuando los programas hacen referencia a datos externos u otros subprogramas. Estas ubicaciones incompletas en el código se especifican en las tablas de cargador anexas que produce el traductor. El cargador vinculador (o editor de vínculos) carga los diversos de código traducido en la memoria y luego usa las tablas del cargador anexas para vincularlos correctamente entre sí introduciendo datos y direcciones de subprograma el código según se requiere. El resultado es un programa ejecutable listo para usarse

Page 21: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Modelos formales de traducción

Las partes del reconocimiento sintáctico de la teoría de compiladores son bastante normales y se basan en general en la teoría de lenguajes independientes de contexto planteadas por Chomsky.

se conocen con el nombre de gramáticas de contexto libre son un método recursivo sencillo de especificación de reglas gramaticales con las que se pueden generar cadenas de un lenguaje.

La definición formal de la sintaxis de un lenguaje de programación se conoce ordinariamente como gramática, en analogía con la terminología común para los lenguajes naturales.

Una gramática se compone de un conjunto de reglas llamadas producciones que especifican las series de caracteres (o elementos léxicos) que forman programas permisibles en el lenguaje que se está definiendo.

Una gramática formal es simplemente una gramática que se especifica usando una notación definida de manera estricta. Las dos clases de gramática útiles en tecnología de compiladores incluyen la gramática BNF (o gramática libre del contexto) y la gramática normal.

Page 22: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Introducción al lenguaje Dr. Racket

Racket o Dr. Racket (formalmente llamado PLT Scheme) es un lenguaje de programación de software libre, multiparadigma de la familia Lisp/Scheme. Proviene de la familia del lenguaje LISP utilizado en inteligencia artificial, matemáticas y estructuras de datos.

Uno de los objetivos de este lenguaje (Racket) es ser una plataforma de diseño e implementación de programas. El lenguaje es funcional (su programación es a través de funciones) y es usado dentro de diferentes contextos como es la programación de propósito general, las ciencias de la computación la educación y la investigación científica.

véase: http://racket-lang.org/

Page 23: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Tipos de datosUn tipo de datos es una clase de objetos de datos ligados a un conjunto de operaciones para crearlos y manipularlos.

Los elementos básicos de una especificación de un tipo de datos son:• Los atributos que distinguen objetos de datos de ese tipo,• Los valores que los objetos de datos de ese tipo pueden tener y• Las operaciones que definen las posibles manipulaciones de objetos de datos de ese tipo.

Los elementos básicos de la implementación de un tipo de datos son:

•La representación de almacenamiento que se usa para representar los objetos de datos del tipo de datos en el almacenamiento de la computadora durante la ejecución del programa.•La manera en que las operaciones definidas para el tipo de datos se representan en términos de algoritmos o procedimientos particulares que manipulan la representación del almacenamiento elegida para los objetos de datos.

Page 24: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Tipos de datos abstractosUn tipo de datos abstracto se define como:

• Un conjunto de objetos de datos ordinariamente usando una o más definiciones de tipo.• Un conjunto de operaciones abstractas sobre estos objetos de datos.• El encapsulamiento de todo en forma tal que el usuario del nuevo tipo no pueda manipular objetos de datos del tipo excepto a través del uso de operaciones definidas.

En la construcción de programas grandes el programador se ocupa casi inevitablemente del diseño y de la implementación de tipos de datos nuevos, aunque el término rara vez se usa en forma explícita.

Un tipo de datos abstracto es un tipo de datos que crea un programador en base a las necesidades y requerimientos que tiene que cubrir su programa.

Page 25: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Gestión de almacenamientoEs cuando el programador ocupa a fondo la gestión de almacenamiento de los datos y debe proyectar programas que usen el almacenamiento de manera eficiente. Sin embargo tiene poco control directo sobre él. Un programa afecta el almacenamiento, solo de manera indirecta a través del uso de ciertas características del lenguaje, esto es porque se trata como un tema dependiente de la máquina.

Los elementos de programas y datos que requieren almacenamiento durante la ejecución del programa:•Segmentos de código para programas de usuario traducidos. Los llamados programas objeto y programas interpretados.•Programas de sistema en tiempo de ejecución.- Programas del sistema operativo que usan los programas que hacemos, ejemplos: bibliotecas de funciones, intérpretes, traductores y las rutinas que controlan la gestión de almacenamiento en tiempo de ejecución.•Estructuras de datos constantes definidas por el usuario.•Puntos de retorno en subprogramas.•Entornos de referencia.•Temporales en evaluación de expresiones.•Temporales en transmisión de parámetros .•Buffers de entrada y salida.•Datos diversos del sistema.•Operaciones de llamada y retorno de subprogramas.•Operaciones de creación y destrucción de estructuras de datos.•Operaciones de inserción y eliminación de componentes.

Page 26: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Gestión de almacenamientoFases de la gestión de almacenamiento:

• Asignación inicial.- Al inicio de la ejecución cada segmento de almacenamiento puede estar ya sea asignado o libre. Si esta libre inicialmente, estará disponible para asignarse de manera dinámica conforme avanza la ejecución.• Recuperación.- El almacenamiento que ha sido asignado y usado, y que posteriormente queda disponible, debe ser recuperado por el gestor de almacenamiento para volver a usarlo. La recuperación puede ser muy simple, como en la reubicación de un apuntador de pila, o muy compleja, como en la recolección de basura.• Compactación y nuevo uso.- El almacenamiento recuperado puede estar listo de inmediato para volver a usarse, o puede requerirse una compactación para construir bloques grandes de almacenamiento libre a partir de fragmentos pequeños.

Page 27: II.-Los lenguajes de programación UNIVERSIDAD LATINA

Control de secuenciaEn un lenguaje de programación, las estructuras de control proporcionan el marco básico dentro del cual las operaciones y datos se combinan en programas y conjuntos de programas.

El control de secuencia es el control del orden de ejecución de las operaciones, tanto primitivas como definidas por el usuario.Las estructuras de control de secuencia se pueden clasificar convenientemente en tres grupos:

• Estructuras que se usan en expresiones (y por tanto dentro de enunciados, puesto que las expresiones constituyen los bloques de construcción básicos para enunciados), como regla de precedencia y paréntesis.•Estructuras que se usan entre enunciados o grupos de enunciados, como enunciados condicionales e iterativos.•Estructuras que se usan entre subprogramas, como llamadas de subprograma y corrutinas.Las estructuras de control de secuencias también pueden ser implícitas o explicitas. Las implícitas (o por omisión) son las que el lenguaje define que están en operación, a menos que el programador las modifique a través de alguna estructura explicita. Por ejemplo casi todos los lenguajes definen que el orden físico de los enunciados de un programa controla el orden en el cual los enunciados se ejecutan, a menos que sea modificado por enunciado de control de secuencia explicito. Dentro de las expresiones también hay comúnmente una jerarquía de operaciones definida por el lenguaje y que controla el orden de ejecución de las operaciones de la expresión cuando no hay paréntesis.

Page 28: II.-Los lenguajes de programación UNIVERSIDAD LATINA

28

Las Estructuras de Control de Secuencia

• Proveen el marco de interacción para la ejecución de operaciones y datos.

• Controlan el orden de ejecución de las operaciones.

Page 29: II.-Los lenguajes de programación UNIVERSIDAD LATINA

29

Categorias de ECS

• Expresiones• Instrucciones o grupos

de instrucciones• Programación

Declarativa• Subprogramas

• Implícitas• Explícitas

Page 30: II.-Los lenguajes de programación UNIVERSIDAD LATINA

30

Arboles para representar expresiones

• Composición funcional• Operaciones y sus respectivos operandos• Resultados de operaciones forman nuevos

operandos• Operaciones representadas por niveles• No se define precedencia en operaciones en el

mismo nivel

Page 31: II.-Los lenguajes de programación UNIVERSIDAD LATINA

31

Ejemplo: Raíz de 2do grado/

B

+

_

*

*

-

*^

A4

C2B

SQRT 2 A

-B+ B2 – 4 * A * C

2 * A

Page 32: II.-Los lenguajes de programación UNIVERSIDAD LATINA

32

Representación Sintáctica

• Linealización de arboles.

•Notación Prefija (Polaca)•Notación Polaca Cambridge

•Notación Postfija

•Notación Infija

Page 33: II.-Los lenguajes de programación UNIVERSIDAD LATINA

33

Representación Sintáctica : Ejemplo

*

-+

A DB C

Prefija: *+AB-CD

Prefija Cambridge: (*(+AB)(-CD))

Infija: (A+B)*(C-D)

Postfija: AB+CD-*

Page 34: II.-Los lenguajes de programación UNIVERSIDAD LATINA

34

Representación Semántica• Evaluación de expresiones prefijas.•Características

–Evaluación en una sola pasada

–Necesidad de saber el numero de argumentos por tipo de operación

–No hay necesidad de paréntesis

–Similitud con llamadas a funciones

–Operaciones con cualquier número de operandos

–Decodificacion sencilla a secuencias de código

Page 35: II.-Los lenguajes de programación UNIVERSIDAD LATINA

35

Representación Semántica• Evaluación de expresiones infijas.•Características

–Forma común de expresar las expresiones aritméticas

–Trabaja con operadores binarios

–Funciones y operadores unarios implementados a traves de notación prefija o postfija

–Necesidad de uso de paréntesis para evitar ambigüedad

–Decodificación compleja a secuencias de código

Page 36: II.-Los lenguajes de programación UNIVERSIDAD LATINA

36

Jerarquía de operaciones

• Orden de precedencia de operadores

•Asociatividad–Izquierda

a-b-c evaluado (a-b)-c–Derecha

a^b^c evaluado a^(b^c)

• Lenguajes sin Jerarquía de operaciones

Page 37: II.-Los lenguajes de programación UNIVERSIDAD LATINA

37

Jerarquia de Operaciones : Ejemplo

• CA= =B | C= = D evaluado (A= =B) | (C= = D)Precedencia del operador = = sobre |

• PascalA=B | C=D evaluado A=(B | C)=DPrecedencia del operador | sobre =

Page 38: II.-Los lenguajes de programación UNIVERSIDAD LATINA

38

Etapas de traducción

• Establecer estructura de árbol

• (opcional) decidir el órden óptimo de evaluación

Page 39: II.-Los lenguajes de programación UNIVERSIDAD LATINA

39

Formas en que se traducen las expresiones en notación

infija

• Código máquina

• Estructura de árbol

• Prefija o postfija

Page 40: II.-Los lenguajes de programación UNIVERSIDAD LATINA

40

Control de secuencia entre instrucciones

• Instrucciones básicas• Tipos de control de secuencia a nivel de

instrucciones• Control de secuencia explícita• Diseño estructurado de programas

Page 41: II.-Los lenguajes de programación UNIVERSIDAD LATINA

41

Instrucciones básicas

• Instrucciones de asignación• A:=B (PASCAL)• A=B (C, Java)• MOVE A TO B (COBOL)• AB (APL)• (SETQ A B) (LISP)• A += B (C, Java)• ++A• A++

Page 42: II.-Los lenguajes de programación UNIVERSIDAD LATINA

42

Instrucciones básicas

• Instrucciones de entrada y salida.<STDIN>;System.out.println(”Hola”);

• Otros instrucciones de asignación.– NEWLINE = TRIM(INPUT)– PadreDe(X,Juan), PadreDe(Y,Juan), not (X=Y).

Page 43: II.-Los lenguajes de programación UNIVERSIDAD LATINA

43

Control de secuencia explicita

• GOTO incondicional• GOTO condicional

• BREAK• CONTINUE

Page 44: II.-Los lenguajes de programación UNIVERSIDAD LATINA

44

#include <iostream.h> void main(){

int n;for(;;) {

cout <<“Ingresa un número (0 para terminar): ";cin >> n;cout << n <<" al cubo es: " << n*n*n << "n";if(n == 0) goto esc;

}esc:

cout << endl;}

Goto : Ejemplo

Page 45: II.-Los lenguajes de programación UNIVERSIDAD LATINA

45

C64 BASIC:

750 ifnv(0)=0thenf=0:goto770

760 goto790

770 ifint(rnd(1)*100+1)<=nthen800

780 nextx:goto1640

790 ifn<>nv(1)andn<>0thennextx:goto1640

Problemas con Goto en Basic

Page 46: II.-Los lenguajes de programación UNIVERSIDAD LATINA

46

Break

#include <iostream.h> void main(){

int n, count = 0, sum = 0;cout <<"Enter positive integers. Terminate input with 0:n";for (;;) {

cout << "t" <<count + 1 << ": ";cin >> n;if(n ==0) break;++count;sum += n;

}cout <<"The average of the " << count << " numbers is "

<< (float) sum / count << endl;}

Page 47: II.-Los lenguajes de programación UNIVERSIDAD LATINA

47

Continue

#include <iostream.h> int main(){

int n = 0;for(;;){

n++;if (n%7 == 0) continue;cout << "n = " + n;

}}

Page 48: II.-Los lenguajes de programación UNIVERSIDAD LATINA

48

Diseño estructurado de programas

1. Diseño jerárquico2. Representación del diseño en el código del

programa3. La secuencia textual = la secuencia actual4. Un grupo de instrucciones tiene solamente

una función

• (No usar GOTO)

Page 49: II.-Los lenguajes de programación UNIVERSIDAD LATINA

49

Control de Secuencia Estructurado• Conjunto de instrucciones de control en un

lenguaje de alto nivel– Composición o Agrupamiento– Condicionales o de Alternación– Iteración

Page 50: II.-Los lenguajes de programación UNIVERSIDAD LATINA

50

Agrupamiento

• Contienen una o más instrucciones• Actúan como un solo bloque• Las instrucciones contenidas se ejecutan

secuencialmente

Ejemplos: Begin

...

End

{

...

}

Page 51: II.-Los lenguajes de programación UNIVERSIDAD LATINA

51

Condicionales

• Expresan la ejecucion alternada de dos instrucciones o la ejecución condicional de una instrucción

• La alternativa se controla por medio de una condición.

Page 52: II.-Los lenguajes de programación UNIVERSIDAD LATINA

52

Iteración

• Proveen capacidad de repetición de ejecución de un mismo código

• Estructuras básicas contienen un encabezado y un cuerpo

• El encabezado controla en número de veces que se iterará

• El cuerpo es el conjunto de instrucciones a repetirse

Page 53: II.-Los lenguajes de programación UNIVERSIDAD LATINA

53

Iteración : Ejemplos• Repetición Simple

(Cobol) Perform cuerpo K veces

• Repetición mientras se mantiene una condición(C) While <cond> { cuerpo }

• Repetición mientras se incrementa un contador(Algol) for I := 0 step 2 until 30 do cuerpo

• Repetición controlada por datos(Perl) foreach $X(@Array) { cuerpo }

• Repetición indefinida(Ada) Loop ... Exit when <cond> ... end Loop;

Page 54: II.-Los lenguajes de programación UNIVERSIDAD LATINA

54

Condiciones excepcionales

Utilizando go to

Instrucción 1

If error go to α

Instrucción 2

If error go to α

...

α: Manejo de errores

On Error en VB y Raise en Ada como opción

On error go to α

Instrucción 1

Instrucción 2

...

α: Manejo de errores

Salidas multiples de loops

Utilizando go to

For I := 1 to K do

if Vect[I] = 0 then go to α

Loop

Exit en Ada y Break en C como opción

For I = 1 .. K loop

exit when Vect[I] = 0 ;

End loop;

Problemas de ECS estructurada• Discusión del GotoDo-While-Do

Utilizando go to

Loop

read(x)

if EOF then go to α

process(x)

End loop;

Exit when en Ada e If <cond> Break en C como opción

Loop

read(x)

If EOF break

process(x)

End loop;

Page 55: II.-Los lenguajes de programación UNIVERSIDAD LATINA

55

Gracias por tu atención