You are on page 1of 29

FUSION

TIPOS DE DATOS: Los tipos de datos en FUSION se emplean en minúsculas y son las siguientes: ent: Datos numéricos enteros. dec: Datos numéricos de tipo decimal. cad: Cadena de caracteres.

Números enteros: ent: Los números son expresados en notación decimal opcionalmente precedidos por un ± o +, lo cual designara si el valor es positivo o negativo.

INICIO ID_PROG[

ID_VARIABLE = 30 ent: ID_VARIABLE2 = 10 ent: ] FIN

Números reales: dec: Representan cadenas de dígitos con punto decimal. 1.234 INICIO ID_PROG[ 0.534 0.001

ID_VARIABLE = 1.234 dec: ID_VARIABLE2 = 0.534 dec: ]FIN

Cadena: cad: Representa una cadena de caracteres. En FUSION un carácter es lo mismo que un byte. y Las cadenas de caracteres se pueden especificar de dos formas:

1) Comillas simples: (µAquí hay una cadena¶) INICIO ID_PROG[ ID_VARIABLE = µHOLA MUNDO¶ cad: Imprimir (ID_VARIABLE):

] FIN

Imprimir: sirve para imprimir en pantalla lo que se esta escrito entre µcomillas¶.

Declaración de variables: En fusion, para utilizar una variable primero tenemos que declararla. Esto se realiza de la siguiente manera: ID_VARIABLE Tipo_de_dato:

1) Damos el nombre a la variable (el nombre solo se reconocerá en MAYUSCULAS). 2) Pueden utilizarse signos como ³_´ y números entre cada palabra del nombre. 3) Se declara el tipo de dato al que pertenezca la variable. (Entre el nombre y el tipo de dato se deja un espacio). EJEMPLO: ID_VARIABLE ent: ID_VARIABLE dec: ID_VARIABLE cad: nota: fusión es un lenguaje sensible a mayúsculas y minúscula.

Las expresiones aritméticas se evalúan de izquierda a derecha. Producto y división se evalúan antes que suma y resta. Operadores relacionales: = < > <= >= + Igualdad Menor que Mayor que Menor o igual que Mayor o igual que Concatenación de cadena . Las variables también se pueden inicializar.3 dec: ID_VARIABLE = µHOLA MUNDO¶ cad: Operadores en fusion: + * / Suma Resta Producto División y y y y Existe un orden jerárquico en la lectura de los operadores. ID_VARIABLE = 10 ent: ID_VARIABLE = 3. se utilizan los paréntesis. Para especificar el orden de evaluación deseado.

Ciclo ³SINO´ SINTAXIS: INICIO ID_PROG [ SI (VARIABLE=5): imprimir (³el valor es igual a 5´): SINO (VARIABLE=6): imprimir (³el valor es igual a 6´): ]FIN .

Estructura de un programa en FUSION INICIO ID_PROG[ atributos: // Se declaran variables. // Se cierra la clase principal. INICIO ID_PROG[ SI (VARIABLE=5): imprimir (³el valor es igual a 5´): SINO (VARIABLE=6): imprimir (³el valor es igual a 6´): ] FIN // ejemplo de comentario . Comentarios: Multilinea: Colocando al inicio del comentario el signo // y al final de la última línea colocar el mismo signo. contantes (los atributos del programa). operaciones: ] FIN y y Las variables se declara escribiendo su NOMBRE (en mayúsculas) y por último el tipo de dato (en minúsculas): La separación de instrucciones en fusion se hace terminando cada declaración con dos puntos (:). // Se declaran las operaciones del programa.

INICIO PROGRAMA_PRUEBA [ N = 30 ent: A = 1.234 dec: L = µHOLA MUNDO¶ cad: Imprimir (N): Imprimir (A): Imprimir (L): SI (N<A): imprimir ( N + ³Es Menor´): SINO : imprimir (N + ³Es Mayor´): ] FIN .

q9 q7. q7. init accion end q4 q5 q6.AUTÓMATAS FINITOS 1) Programa class id . q8. q8. q9 q7. q8. q8. q7. init acción acción * end A B C D E F G H I CONJUNTOS q0 q2 q3 q4 q5 q6. q8. q9 q1 q1 . q9 q7. q9 q1 class q2 id q3 .

.

q3. q3. q1 ciclo q22. q1 q22. q1 escribir q19. q13. q9. q3. q9. q1 B C D E F G H q3. q17. q9. q9. q13. q9. q17. q13. q1 declaración q7. q3. q3. q9. q1 evaluacion q11. q1 leer q15.2) acción asignación | declaración | evaluación | leer | escribir | ciclo A CONJUNTOS q0 asignacion q3. q1 q15. q17. q1 . q13. q3. q13. q3. q3. q3. q17. q9. q1 q7. q9. q1 q11. q13. q3. q1 q19.

.

q14. q12. q2 id = . q2 float q9. q14. q5. q15. q12. num q3 q3 q4. q10. q5 . q14. q2 q3 q4. q5 q11. q5 q11. q15 q1 q1 q1 q13. q12. q5. q12. q5 q1 int q8. q2 q9. q15. A B C D E F G H F CONJUNTOS q0 q8. q5 q13. q10. q15 q13. q14.3) declaracion [ int | float ] id [ = [ id | num ] | ].

H =G .G .G num F int G float G D D D E E E E E E F F F F id G .P{ S S S S S S A A A A A B B int A float B id G =G . num F int G float G id G . int G float G id G .G =D id G int G float G num G .G num G id C int G float G =G .G id C int G B B B B C C C C C C D D D float G =G num G .

D. | num id C| A´G int | float | = | num | . H | D´G int | float | id | = num F | .. | num . = D | C´G id | int | float | num | . | F´G int | float | id | = | num G´G int | float | id | = | . id C | B´G int | float | = | num | .G num G } G { { S. E. = . A. B. | E´G int | float | id | = . S } S S´ A A´ B B´ C C´ int A | float B | S´ G id | = | . D D´ E E´ F F´ G G´ num F | . num } P. C. .F F G =G num G int G G G G floa G id G =G G G . float. G} {int. id. F.

.4) asignacion id = [ id | num ] [ oparit [ id | num ] ] *.

q10 q15. q12. q13 q11. H | oparit H oparit B | id H | num H | . q12. q4. q12. q11. q5. q5. q7 q8. q12. q6. q7 num oparit . q5. H oparit E | id H | num H | = H id F| num G | = H | oparit H num G | oparit G | id H | = H num H | oparit H | id H | = H | . H id C | num D | = H | . q12. q11. q10 q11. q9. q11. q11. q5. q5. q13 P{ S A B C D E G H id A | = H | num H | oparit H | . q10 q9. q5.A B C D E F G H I J CONJUNTOS q0 q2 q3. q10 q15. q4. q11. q10 = q5. q13 q1 q1 q1 q1 q1 q14. q4. q6. q10 q15. q5. q10 id q2 q8. q10 q11. H = B | id H | num H | oparit H | . H } . q5. q10 q15. q10 q11. q5. q11. q13 q1 q14. q4. q13 q11. q5.

C. D.G { { S. | F´G int | float | id | = | num num G | oparit G | G¶ H id | = H¶ H num | oparit | id | = | . oparit. = . | oparit oparit E | D¶ H id num | . H} {id. F. id C | num D | B¶ H = | . S } S S´ A A´ B B´ C C´ D id A | S´H = | num | oparit | . num. . = B | A´H id | num | oparit | . } P. B. . id F | num G | E´H = | oparit . G. A. oparit E | D¶ H D´ E E´ F F´ G G´ H H¶ id | num | = | . E.

q15 q9. q19. q20. q14. q14. q13. q19. q21 q11. q15 q9. q14. q21 q19.q10. q12. q20. q20. q12.5) evaluacion if (cond) { accion accion* } [ else {accion accion*} | ] A B C D E F G H I J K L M N Ñ CONJUNTOS q0 q2 q3 q4 q5 q6 q7. q21 q19. q21 q19. q13. q10. q20. q15 q8. q1 if q2 ( q3 cond ) { accion } Else q4 q5 q6 q7. q8. q10. q8. q1 q11. q13. q20. q21 q11. q15 q8. q1 q9. q1 q16 q17 q18. q14. q14. q1 . q1 q16 q17 q18. q12. q15 q8.

P{ S A B C D E G H I J K L if A | ( L | cond L | ) L | { L | accion L | } L | else L ( B | if L | cond L | ) L | { L | accion L | } L | else L cond C | if L | ( L | ) L | { L | accion L | } L | else L ) D | if L | ( L | cond L | { L | accion L | else L { E | if L | ( L | cond L | ) L | accion L | } L | else L accion F | if F | ( L | cond L | ) L | { L | else L accion G | } | if L | ( L | cond L | ) L | { L accion L | else L { I | if L | ( L | cond L | ) L | accion L | } L | else L accion J | if L | ( L | cond L | ) L | { L | } L | else L accion K | if L | ( L | cond L | ) L | { L | else L | } { | accion K | if L | ( L | cond L | ) L | accion L | } L | else L if L | ( L | cond L | ) L | { L | accion L | } L | else L } .

H. ). F. J. accion. I. C. (. {. else } P. B. A. D. S } S S´ A A´ B B´ C C´ D D´ E E´ F F´ if A | S´L ( | cond | ) | { | accion | } | else ( B | A¶ L if | cond | ) | { | accion | } | else cond C | B¶ L if | ( | ) | { | accion | } | else ) D | C¶ L if | ( | cond | { | accion | else { E | D¶ L if | ( | cond | ) | accion | } | else accion F | E¶ L if | ( | cond | ) | accion | } | else } | accion G | L¶ L if | ( | cond | ) | { | else G G´ H H¶ I I´ J J´ K K´ L L¶ accion G | } | G¶ L if | ( | cond | ) | { | accion | else { I | H¶ L if | ( | cond | ) | { | } | else accion J | I¶ L if | ( | cond | ) | { | } | else accion K | } | J¶ L if | ( | cond | ) | { | else { | accion K | K¶ L if | ( | cond | ) | accion | } | else L¶L if | ( | cond | ) | { | accion | } | else . G. cond. K. }. L} {if. E.G { { S.

A B C D E F G H I J K M N CONJUNTOS q0 q2 q3 q4. q5 q12. q11. q4. q5 q6 q6 q7 q6 q8 q9 q10 q1 . q11. q5 q6 q12. q12. q5 q12.6) Ciclo do { accion accion * } while ( cond ) . q12. q5 q7 q8 q9 q10 q1 do q2 { q3 accion } while ( cond ) . q15 q12. q5 q12. q11. q11.

N accion C | do N | { N | } N | while N | ( N | cond N | ) N | . N } E | accion D | do N | { N | while N | ( N | cond N | ) N | . N } . | do N | { N | accion N | } N | while N | ( N | cond N | } N do N | { N | accion N | } N | wile N | ( N | cond N | ) N | . N ( H | do N | { N | accion N | } N | while N | cond N | ) N | . N } F | while G | do N | { N | accion N | ( N | cond N | ) N | . N } E | accion F | do N | { N | while N | ( N | cond N | ) N | . N cond I | do N | { N | accion N | } N | while N | ( N | ) N | . N .P{ S A B C D E G H I J K do A | { N | accion N | } N | while N | (N | cond N ) | ) N . N ) J | do N | { N | accion N | } N | while N | ( N | cond N | . N { B | do N | accion N | | } N | while N | ( N | cond N | ) N | .

G. accion . }. (. K} {do. ). . S } S S´ A A´ B B´ C C´ D D´ E E´ F F´ G G´ H H¶ I I´ J do A | S¶ N { | accion | } | while | ( | cond | ) | . cond I | H¶ N do | { | accion | } | while | ( | ) | . while. F. B. E. } F | while G | E¶ N do | { | accion | ( | cond | ) | . D. | J¶N . H.} P. ) J | I¶ N do | { | accion | } | while | ( | cond | . cond.G { { S. A. N } E | accion F | D¶ N do | { | while | ( | cond | ) | . } E | accion D | C¶ N do N | { N | while N | ( N | cond N | ) N | . I. J. . { . N accion C | B¶ N do | { | } | while | ( | cond | ) | . C. { B | A¶ N do N | accion N | } N | while N | ( N | cond N | ) N | . ( H | G¶ N do | { | accion | } | while | cond | ) | . } E | accion F | F¶ N do | { | while | ( | cond | ) | .

.J´ K K´ N N¶ do | { | accion | } | while | ( | cond | } K¶ N do | { | accion | } | while | ( | cond | ) | . N¶N do | { | accion | } | while | ( | cond | ) | .

q4. q3 q4 q7. q6 q5. A B C D E F G CONJUNTOS q0 q2. q5. q3 q7. q3 q1 printl q2. q6 id num .7) Escribir printl ( id | num ) . q3 q1 q1 q6 . q4.

D } . D . D id B | num C | print D | .P{ S A B C D print A | id D | num D | . | print D | id D | num D print D | id D | num D | . | print D | id D | num D .

S } S S´ A A´ B B´ C C´ D D´ print A | S¶ D id | num | . . | C¶ D print | id | num D¶ D print | id | num | . D } {print. B. C. id B | num C | A¶ D print | . num. . A. } P. | B¶ D print | id | num .G { { S. id. .

int float ) .8) leer scan ( id . q5. q10. A B C D E F G H I J CONJUNTOS q0 q2 q3 q4 q5. q6 q7 q1 scan q2 ( q3 id . q6 q11. q8 q10. q6 q7 q7 q1 . q6 q11. q8 . [ int | float ] ) . q6 q11.

H | scan H | ( H | id H | int H | ) H | . H id C | scan H | ( H | int H | float H | ) H | . H | int H | float H | . H ( B | scan H | id H | int H | float H | ) H | . H ) C | sacn H | ( H | id H | . H . H . . H ) G | scan H | ( H | id H | . H | . H | int H | float H | . D | scan H | ( H | id H | int H | float H | ) H | . H | . | scan H | ( H | id H | . J | int J | float J | ) J |. H float F | . H | . H | int H | float H | ) H scan J | ( J | id J | .P{ S A B C D E F G H scan A | ( H | id H | int H | float H | ) H | .

). | . | int | float | ) H¶ H scan | ( | id | . int. id C | B¶ H scan | ( | int | float | ) | . ( B | A¶ H scan | id | int | float | ) | . D. | . B. } P. | int | float | . D | C¶ H scan | ( | id | int | float | ) | . | G¶ H scan | ( | id | . F. . . |. A. S } S S´ A A´ B B´ C C´ D D´ E E´ F F´ G G´ H H¶ sacn A | S¶ H ( | id | int | float | ) | . ) C | F¶ H scan | ( | id | .G { { S. . H} {sacn. | int | float | . (. . . | int | float | ) | . G. E. id . float. float F | D¶ H . ) G | E¶ H scan | ( | id | . C. | sacn | ( | id | int | ) | .