SlideShare a Scribd company logo
1 of 20
Compiladores IDescripción del Lenguaje REDDefinición y Gramática del Lenguajerapsware21/07/2010Lenguaje de programación 2T, definición y gramática del lenguaje, ejemplos y toda la descripción del lenguaje. Lenguaje de programación básico especialmente desarrollado para personas principiantes en el mundo de la programación, además ofrece características necesarias para desarrollar, pequeñas rutinas de programación de nivel intermedio, y de bastante facilidad.<br />Tabla de contenido TOC  quot;
1-3quot;
    Descripción del Lenguaje PAGEREF _Toc270360437  3Programas PAGEREF _Toc270360438  3Estructura básica de un programa PAGEREF _Toc270360439  3Cabecera PAGEREF _Toc270360440  3Diccionario de palabras reservadas PAGEREF _Toc270360441  4Símbolos especiales PAGEREF _Toc270360442  4Tipos de Comentarios PAGEREF _Toc270360443  5Los comentarios en el lenguaje RED, pueden ser puestos en cualquier parte del código, ya sea la final al inicio o en medio del código. Existen dos tipos de comentarios de una sola línea, utilizando las dos plecas (//) antes de escribir el comentario, y todo lo que se escriba después de estos es tomado como comentario, hasta que finalice la línea, cuando se escribe en otra línea ya no es tomado como comentario. PAGEREF _Toc270360444  6Tipos de datos fundamentales y su representación PAGEREF _Toc270360445  6Operaciones de entrada y salida básica PAGEREF _Toc270360446  7Entrada PAGEREF _Toc270360447  7Salida PAGEREF _Toc270360448  7Declaración e inicialización de variables PAGEREF _Toc270360449  7Para declarar variables utilizamos la siguiente sintaxis: PAGEREF _Toc270360450  9Nombres de Variables: PAGEREF _Toc270360451  9Para inicializar las variables recién creadas: PAGEREF _Toc270360452  9El bloque principal del programa PAGEREF _Toc270360453  10Los primeros programas PAGEREF _Toc270360454  10Tabla de operadores con asociatividad y precedencia PAGEREF _Toc270360455  10Estructuras de decisión e iteración PAGEREF _Toc270360456  11Decisión PAGEREF _Toc270360457  12Uso del Si PAGEREF _Toc270360458  12Iteración PAGEREF _Toc270360459  12Para PAGEREF _Toc270360460  12Ciclo Mientras PAGEREF _Toc270360461  13Declaración, definición y uso de métodos y funciones PAGEREF _Toc270360462  13Funciones: PAGEREF _Toc270360463  13Características especificas del lenguaje PAGEREF _Toc270360464  15Definición de Arreglos PAGEREF _Toc270360465  15Ejemplo de un programa en RED-2T PAGEREF _Toc270360466  16Estructura de un Programa en RED PAGEREF _Toc270360467  16Ejemplo de un Programa en RED PAGEREF _Toc270360468  17Gramática del lenguaje PAGEREF _Toc270360469  18<br />Descripción del Lenguaje<br />RED es un lenguaje que permite programar en forma estructurada. Esto significa que es posible dividir al programa implementando funciones, y organizarlo de manera tal que se pueda leer con facilidad. Esto último tiene que ver con una indentación, comentarios, nombres mnemotécnicos, etc. Aunque estas últimas características NO son imprescindibles en un programa RED.<br />Programas<br />RED define un tipo básico de archivo que se puede compilar. Los archivos de código fuente que se escriben con el editor (IDE) conviene que tengan la extensión (.red), al compilar estos programas tendremos archivos .exe<br />Estructura básica de un programa<br />Cabecera<br />Todos los programas tienen la misma estructura. Para indicar al compilador que se trata de un programa tenemos que escribir la palabra PROGRAMA seguida de un espacio y un nombre (que puede tener letras y números) y que tiene que terminar en un punto y coma. Por ejemplo:<br />Programa ejemploNumero6;<br />Es importante indicar que el nombre que le damos al programa tiene que seguir unas reglas ya que sino en caso contrario no será válido por el compilador:<br />El primer carácter tiene que ser una letra y no una cifra ya que en caso contrario el compilador se pensaría que es un número. Por ejemplo, no es válido el nombre siguiente:<br />Programa 6ejemplo;<br />El único carácter no alfanumérico valido es el guion bajo. No se admiten caracteres como exclamaciones o signos de interrogación, etc.<br />Tampoco se admiten vocales acentuadas o letras que no pertenezcan al alfabeto ingles. Por ejemplo ÿ y la ῆ no se admiten.<br />Finalmente,  el nombre del programa no tiene que coincidir con otras variables o constantes del programa.<br />Diccionario de palabras reservadas<br />Esta es una lista de palabras reservadas y estas no pueden redefinirse o ser utilizadas como identificadores. Hay que tener en cuenta que no se pueden emplear las siguientes palabras para nombres de variables ya que son palabras reservadas para RED.<br />NombreDescripciónEnteroTipo de dato, que representa los números enterosDecimalTipo de dato, que representa los números decimalesCarácterTipo de dato, que representa caracteresLogicoTipo de dato, que representa los datos lógicosVarPrefijo para declarar una variableFuncionUtilizado para declarar funciones en el programaLeaFunción con la cual obtenemos un valor de el usuarioEscribaFunción con la cual escribimos en pantalla algoSiEstructura de decisiónSinoComplemento de la estructura de decisiónParaEstructura de iteraciónMientrasEstructura de iteración condicionadaRetorneEspecifica lo que retorna una funciónProgramaUtilizada para declarar un programa en REDVerdaderoValor lógicoFinDelimita el fin de un programaFalsoValor lógicoInicioIndica el inicio de un programaVacioTipo utilizado en las funciones donde no necesita que retorne nada<br />Todas las palabras reservadas dentro del lenguaje RED, pueden ser escritas sin importar si están en mayúsculas o en minúsculas o una combinación de estos, así como las variables, tomando en cuenta que una variable escrita en mayúsculas es la misma que escrita en minúsculas, así como las palabras reservadas.<br />Símbolos especiales<br />Los símbolos especiales son caracteres no alfabéticos, o pares de estos caracteres, que tienen significados fijos. Los siguientes caracteres son símbolos especiales:<br />SímboloDescripción/Símbolo aritmético utilizado para representar la división*Símbolo aritmético utilizada para representar la multiplicación+Símbolo aritmético utilizado para representar la suma-Símbolo aritmético utilizado para representar la resta%Símbolo utilizado para representar el MOD=Símbolo utilizado para representar la asignación,Símbolo utilizado para separar los parámetros de las funciones;Símbolo utilizado para representar el fin de línea dentro de un programa:Símbolo utilizado para definir los tipos de datos de las variables<Símbolo utilizado para representar el “menor que”>Símbolo utilizado para representar el “mayor que”<br />Los siguientes pares de caracteres también son símbolos:<br />SímboloDescripción&&Representa el Y lógico||Representa O lógico“ ”Utilizado para representar cadenas de texto‘ ’Utilizado para poner caracteres[]Utilizado en los arreglos()Utilizado en la funciones {}Utilizado para definir los límites de funciones y ciclos//Utilizado para comentarios de una sola línea/*Utilizado para comentarios de varias líneas y finaliza con el símbolo  */==Representa la igualdad!=Representa la desigualdad<=Representa “menor o igual que” >=Representa “mayor o igual que” <br />Tipos de Comentarios<br />Los comentarios son ignorados por el compilador, excepto cuando su función es de separadores delimitando tokens adyacentes.<br />//Comentario de una línea/*Comentario de varias     Líneas*/<br />Los comentarios en el lenguaje RED, pueden ser puestos en cualquier parte del código, ya sea la final al inicio o en medio del código. Existen dos tipos de comentarios de una sola línea, utilizando las dos plecas (//) antes de escribir el comentario, y todo lo que se escriba después de estos es tomado como comentario, hasta que finalice la línea, cuando se escribe en otra línea ya no es tomado como comentario.<br />Los comentarios de varias líneas, empiezan con la combinación de símbolos /*, seguido de cualquier combinación de letras y números así como de símbolos, ya que el compilador los omite, estos acepta hasta saltos de línea, hasta que se cierre con la combinación de símbolos */<br />Tipos de datos fundamentales y su representación<br />Los tipos de variables, llamados tipos de datos, se dividen en tres grandes grupos fundamentales:<br />Numéricos. Enteros o Decimales<br />Alfanuméricos. Caracteres<br />Lógicos. Solo pueden valer verdadero o falso<br />NombreRangoDescripciónEnteroNúmeros enteros comprendidosDecimalRepresenta números decimalesCaracter[a-zA-Z][0-9]Representa caracteres alfanumericosLogicoVerdadero-FalsoRepresenta valores lógicos<br />Nota: Existe un tipo especial llamado Vacio, este devuelve un valor indefinido, se utiliza en la funciones donde no necesitamos que devuelva nada, entonces en el tipo a retornar en las funciones se pone vacio.<br />Operaciones de entrada y salida básica<br />Entrada<br />Lea(<tipo>,<variable>);/*donde variable es cualquier tipo de variable donde se almacena lo que el usuario introducey tipo es uno de los tipos definidos en el lenguaje*///EjemploVar entero: num1;Lea(entero,num1);/*en la variable num1 se almacena lo que el usuario ingrese siempre que sea del tipo definido en la misma función en este caso tendría que ser del tipo entero*/<br />Salida<br />Escriba(<Expresion>);Escriba(“cadena”,<variable>,(3*5+2),función());/*Donde expresión puede ser una combinación tanto de variables cadenas de texto como de constantes numéricas, las cuales cada una de estas deben estar separadas por comas Ejemplo:*///EjemploVar entero: numero=23;Escriba(“hola mundo”,numero,(3+5),getedad());//donde getedad() es una función que retorna un entero<br />Declaración e inicialización de variables<br />Si pensamos en muchas formulas matemáticas veremos que emplean variables en su expresión. Por ejemplo el área del triangulo es AT=b*h . Cuando queremos calcular el área de un triangulo dado nos limitamos a sustituir estas variables. En RED, y programación ocurre algo parecido.<br />RED exige que se declaren las variables que se utilizaran. Las variables pueden modificar su valor a lo largo del programa. Cada variable tiene que ser de un tipo determinado.<br />Para declarar variables emplearemos la palabra reservada VAR,  seguida de un espacio y luego el tipo de dato de la variable seguida de dos puntos y espacio y después el nombre de la variable. Por ejemplo:<br />Var entero: base;Var entero: altura=10;Var carácter: Lnombre=”a”;<br />Lo que va después del signo igual recibe el nombre de literal. Un literal es un valor incluido directamente en el código. El primer caso es el numero entero 10, la variable altura vale 10. En el caso de Lnombre representa un carácter con el valor “a”.<br />La declaración de literales se rige por unas normas sencillas:<br />Los caracteres siempre empiezan y terminan con las comillas y solo tiene un carácter, en caso contrario el compilador enviara un error.<br />Los caracteres pueden aceptar más de un carácter en caso de que sea una combinación de tabulación “” o salto de línea “”, solo en este caso es aceptado más de un carácter.<br />Los números enteros se escriben de manera normal respetando el tamaño máximo y mínimo establecido.<br />Los números decimales deben ir acompañados del signo de punto y la cantidad de decimales y enteros que desee, respetando el tamaño máximo y mínimo establecido.<br />En RED, los nombres de constantes es indiferente de que estén en mayúsculas o minúsculas. Por tanto, en el ejemplo anterior altura, ALTURA, ALtuRa representan lo mismo para el compilador. Hay que ir con cuidado para no duplicar nombres. Por ejemplo, esto es incorrecto:<br />Var entero: maximo;Var entero: MAXIMO;<br />Ya que MAXIMO y máximo son lo mismo y se esta redeclarando una variable ya declarada. Esta independencia sintáctica a las mayúsculas está presente en todos los aspectos de RED.<br />La declaración anterior se podía haber simplificado de la siguiente forma:<br />Var entero: base, altura;Var caracter: Lnombre;<br />Podemos declarar dos o más variables del mismo tipo a la vez separándolas entre comas.<br />Para declarar variables utilizamos la siguiente sintaxis:<br />Var <tipo>: <nombre>;Var <tipo>: <nombre1>,<nombre2>,…<nombreN>;//ejemploVar carácter: a, cvar;Var entero: numero1;Var lógico: continuar, avance;Var decimal: real;<br />Nombres de Variables:<br />Los nombres de variables deben iniciar con una letra seguida de cualquier combinación de números o letras.<br />Los nombres de variables no deben ser los mismos que las palabras reservadas definidas en el lenguaje.<br />Los nombres de variables no deben contener ningún de los símbolos especiales, definidos en el lenguaje, en cambio puede utilizar cualquier otro símbolo.<br />Para inicializar las variables recién creadas:<br /> <nombreVariable>=<Valor>;//ejemploNumero=34;A=”b”;Avance=verdadero;Real=23.45;<br />El bloque principal del programa<br />Una vez hemos declarado la etiqueta programa, y las declaraciones de variables solo falta el bloque principal de código del programa. El bloque donde se ejecutaran las ordenes.<br />Este bloque, a diferencia de los anteriores, no se puede dejar de poner en un programa RED. El bloque principal del programa se define entre las palabras INICIO y FIN. Por ejemplo estas dos líneas ya son un programa valido para el compilador aunque no haga nada:<br />Iniciofin<br />Es entre estas dos palabras que incluiremos nuestro código. Todas las órdenes que se incluyen en este bloque reciben el nombre de sentencias.<br />Los primeros programas<br />Vamos a hacer un programa que calcule el área de un triangulo dadas las bases y la altura. El código podría ser el siguiente:<br />Var entero: base, altura;Var caracter: Lnombre;<br />Tabla de operadores con asociatividad y precedencia<br />OperadorAsociatividad+Por la izquierda-Por la izquierda*Por la izquierda/Por la izquierda%Por la izquierda<br />Orden de precedenciaOperadores1Las operaciones entre paréntesis2Raíces o potencias3Multiplicaciones o divisiones4Sumas o restas5Si hay dos o más operadores del mismo orden entonces se usa la asociatividad por la izquierda<br />Estructuras de decisión e iteración<br />Antes de iniciar con las estructuras de decisión e iteración, se deben conocer los operadores de las condiciones que son la base de las siguientes estructuras a ver.<br />OperadorSignificado<Menor que>Mayor que<=Menor o igual que>=Mayor o igual que==Igual!=Distinto de<br />Hay que tener claro que la diferencia entre “=”  y”==” es, que el primero compara dos variables y el segundo es una asignación de valores.<br /> A continuación se presenta una tabla con los operadores para cuando hay más de una condición a evaluar.<br />OperadorSignificado&&“Y” lógico||“O” lógico<br />Decisión<br />Uso del Si<br />Si(condicion){Bloque de instrucciones}Sino{Bloque de instrucciones}/*donde bloque de instrucciones puede ser un conjunto de ciclos u operaciones y llmados a función etc., además de tener otros ciclos Si*///ejemploSi(numero < 15 || numero==0){Escriba();}sino{Si(numero>30 && numero < 45){Escriba();}sino{Escriba();}}<br />Iteración<br />Para<br />Para(<Variable>=<valor inicial> ; <restricción de limite>; <expresión de incremento>){Bloque de instrucciones;}//el bloque de instrucciones  puede contener lo mismo que el bloque de instrucciones que el ciclo Si*///ejemploPara(i=0;i < 10; i=i+1){Escriba();}<br />Ciclo Mientras<br />Mientras(<Condicion>){Bloque de instrucciones;}//el bloque de instrucciones  puede contener lo mismo que el bloque de instrucciones que el ciclo Si*///ejemploMientras(numero !=0){Escriba();}<br />Dependiendo de la condición, la instrucción puede variar pero esta instrucción es vital para evitar ciclos infinitos.<br />Declaración, definición y uso de métodos y funciones<br />RED por supuesto tiene lo que es el uso de procedimientos y funciones, ahora definiremos por separado cada uno de estos módulos.<br />Funciones:<br />Una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor o no, a la parte principal del programa u otra función o procedimiento que la invoque.<br />Declaración y Definición de las Funciones<br />//Declaración de FunciónFuncion <Tipo> <NombreFuncion>(parámetros);//Definición de FunciónFuncion <Tipo> <nombre funcion>(parámetros){Declaracion de variables localesBloque de instrucciones;Retorne <Valor>;}/* en el caso especial donde no se deba regresar ningún valor donde dice tipo se pone la palabra reservada Vacio, y no se necesita poner Retorne dentro de la función.La declaración de variables se debe de hacer antes de que se inicie el bloque de instrucciones, de lo contrario tirara un error, y estas variables son validas únicamente en la funcion*///ejemploFunción entero getEdad(entero,entero);Función entero getedad(entero: num1, entero: num2){Retorne valor;}<br />Este esquema de la definición y declaración se hace en la sección de Var del programa principal, donde parámetros está definido de la siguiente forma:<br />(<tipo>:<nombre_var>,<tipo>:<nombrevar2>,…)//ejemploEntero: num1, entero: num2<br />Uso<br />Simplemente en el programa principal se hace llamado a función.<br />//llamado a una función desde el programa principal o desde otra función[<variable>]=<nombrefuncion>(parametros);/*En el caso de retornar algo poner la variable en la que se guardara el valor de retorno de lo contrario solo se llama a la función*///ejemploVcadena=getedad(num1,num2);<br />Características especificas del lenguaje<br />Definición de Arreglos<br />Para declarar un arreglo se usa el siguiente formato:<br />Var <Tipo>:<nombre arreglo>[expresion];/*donde expresion puede ser una constante una combinación de operaciones matematicas o una variable con valores enteros//ejemploVar entero: arreglo[5];<br />Para asignar un valor a un arreglo es de la siguiente forma:<br /><nombre arreglo>[constante]=<Valor>;//donde constante es el índice del arreglo, alque se desean introducir datos, el índice en los arreglos empieza desde 0 hasta el numero antes del que se definió al declarar el arreglo//ejemploArreglo[i]=23;<br />Donde constante es una numero entero el cual define la posición del arreglo.<br />Ejemplo de un programa en RED-2T<br />Estructura de un Programa en RED<br /><Nombre de programa>*< REF _Ref270199318  Declaración e inicialización de variables>< REF _Ref270199343  Declaración, definición y uso de métodos y funciones><Definición del programa principal>**<Definición de funciones><Definición de procedimientos><br />*: El nombre del programa y como inicia todo programa en RED, inicia con la palabra reservada PROGRAMA, y seguido de el nombre para el programa utilizando las mismas reglas que los nombres de variable, luego se finaliza la línea con “;” que indica el fin de la línea.<br />**: La definición del programa principal es donde inicializamos y utilizamos las variables, constantes funciones y procedimientos, así como de todos los ciclos y demás componentes del lenguaje RED. Este debe de ir siempre en cualquier programa en RED, siempre empieza con la palabra reservada INICIO, y finaliza con la palabra FIN, dentro de estas instrucciones  definimos nuestro programa principal.<br />Ejemplo de un Programa en RED<br />Programa ejemplo;Var  Entero ventero,i;Var Entero arreglo[2];Var  Carácter vcaracter;Var  Decimal vreal;Funcion Entero Suma(Entero,Entero);Procedimiento Imprime(Entero);InicioPara(i=0 Hasta 2){Escriba(“Escriba un numero: ”);Lea(ventero1);arreglo[i]=ventero1;}Imprime(Suma(arreglo[1],arreglo[2]));Ventero1=arreglo[1];ventero2=arreglo[2];Si(ventero1 > ventero2){Escriba(“el mayor es: ”,ventero1);}Sino{Escriba(“El mayor es: ”,ventero2);}FinFuncion Entero Suma(Entero: num1,Entero: num2){Retorne num1+num2;}Procedimiento Imprime(Entero: num){Escriba(num);}<br />Gramática del lenguaje<br />1Gramatica->DeclaracionesDefiniciones2Declaraciones->CabeceraCuerpo3Cabecera->PROGRAMA ID;4Cuerpo->DeclaracionVariablesDeclaracionFunciones5DeclaracionVariables->LineaVar DeclaracionVariables6LineaVar->VAR Tipo: LVar7LVar->Lid LVar28LVar2->,LVar | ;9LId->ID L2Id10L2Id->= ValorT | [Expresion] | λ11ValorT->Expresion | VLogico | VCaracter12DeclaracionFunciones->FUNCION vRetorno ID( LParam );13vRetorno->Tipo | VACIO14cRetorno->RETORNE ValorT ; | λ15LParam->L2Param LParam | λ16L2Param->Tipo L3Param17L3Param->, | λ18LParametros->L2Parametros LParametros | λ19L2Parametros->Tipo : ID L3Parametros20L3Parametros->, | λ21Definiciones->PPrincipalDefinicionFunciones22PPrincipal->INICIODeclaracionVariablesBloqueInstruccionesFIN23DefinicionFunciones->FUNCION vRetorno ID( Lparametros ){DeclaracionVariablesBloqueInstruccionescRetorno }24BloqueInstrucciones->LBloque BloqueInstrucciones | λ25LBloque->Asignacion | Lectura | Escritura | Decisión | Iteracion | BloCod | LlamFunc26Asignacion->ID TVar DAsignacion ;27TVar->= | [ Expresion ]=28DAsignacion->ValorT | LlamFunc ;29LlamFunc->ID( LisPram )30LisParam->ID Lis2Param31Lis2Param->,LisParam | λ32Lectura->LEA( Tipo, ID);33Escritura->ESCRIBA( LisEsc );34LisEsc->Lis Lis2Esc35Lis2Esc->,LisEsc | λ36Lis->ValorT | LlamFunc | Cadena37BloCod->BLOQUE{DeclaracionVariablesBloqueInstrucciones}38Iteracion->CicloMientras | CicloPara39CicloMientras->MIENTRAS( Condicion ){BloqueInstrucciones}40CicloPara->PARA(ID=Expresion ; ID OperC Expresion ; Asignacion){BloqueInstrucciones}41Decisión->IR | IA | BloqueInstrucciones42IR->SI( Condicion ){IR}SINO{IR}| λ43IA->SI( Condicion ){Decisión} | SI( Condicion ){IR}SINO{IA}44Condicion->45Tipo->ENTERO | DECIMAL | CARÁCTER | LOGICO46OperC->47Expresion->Terminal ExpresionP48ExpresionP->+Terminal ExpresionP | -Terminal ExpresionP | λ49Terminal->Factor TerminalP50TerminalP->*Factor TerminalP | /Factor TerminalP | λ51Factor->( Expresion ) | Num | ID52VLogico->53VCaracter->54Num-><br />
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red
Descripción del lenguaje red

More Related Content

What's hot

Curso de lenguaje c prev
Curso de lenguaje c prevCurso de lenguaje c prev
Curso de lenguaje c prevjtk1
 
Lenguaje c 1
Lenguaje c   1Lenguaje c   1
Lenguaje c 1Denisse C
 
Unidad 3
Unidad 3Unidad 3
Unidad 3tf94
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c Liz O
 
Programación c
Programación cProgramación c
Programación cvictdiazm
 
Programa en lenguaje c
Programa en lenguaje cPrograma en lenguaje c
Programa en lenguaje cErik Gonzalez
 
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguajeLenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguajeDunkherz
 
Estructura Sintactica
Estructura SintacticaEstructura Sintactica
Estructura SintacticaluchoGL
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesFenix Flame
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++Tensor
 

What's hot (20)

Curso de lenguaje c prev
Curso de lenguaje c prevCurso de lenguaje c prev
Curso de lenguaje c prev
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Lenguaje c 1
Lenguaje c   1Lenguaje c   1
Lenguaje c 1
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Guia en lenguaje c
Guia en lenguaje c Guia en lenguaje c
Guia en lenguaje c
 
Manual C/C++ Jason Martinez
Manual C/C++ Jason MartinezManual C/C++ Jason Martinez
Manual C/C++ Jason Martinez
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c
 
Programación c
Programación cProgramación c
Programación c
 
Cppbasico
CppbasicoCppbasico
Cppbasico
 
Turbo c++
Turbo c++Turbo c++
Turbo c++
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Programa en lenguaje c
Programa en lenguaje cPrograma en lenguaje c
Programa en lenguaje c
 
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguajeLenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
 
Estructura Sintactica
Estructura SintacticaEstructura Sintactica
Estructura Sintactica
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Elementos basicos c++
Elementos basicos c++Elementos basicos c++
Elementos basicos c++
 
Ikgi
IkgiIkgi
Ikgi
 

Viewers also liked

Rencontre économique du diocèse d'angoulême 19 septembre 2014
Rencontre économique du diocèse d'angoulême   19 septembre 2014Rencontre économique du diocèse d'angoulême   19 septembre 2014
Rencontre économique du diocèse d'angoulême 19 septembre 2014Diocèse d'Angoulême
 
Croisiére en bateau
Croisiére en bateauCroisiére en bateau
Croisiére en bateauYàcine Miika
 
Classement général Pronodix
Classement général PronodixClassement général Pronodix
Classement général Pronodixbenjaave
 
Lemtierdecommunitymanager alexitauzin-120203084808-p
Lemtierdecommunitymanager alexitauzin-120203084808-pLemtierdecommunitymanager alexitauzin-120203084808-p
Lemtierdecommunitymanager alexitauzin-120203084808-pPierre Duplaix
 
Adjectifs 120131091936-phpapp02 (1)
Adjectifs 120131091936-phpapp02 (1)Adjectifs 120131091936-phpapp02 (1)
Adjectifs 120131091936-phpapp02 (1)Mohamed Haj Ali
 
La médecine du travail une spécialité riche.
La médecine du travail   une spécialité riche.La médecine du travail   une spécialité riche.
La médecine du travail une spécialité riche.Réseau Pro Santé
 
Presentation site htr s dz
Presentation site htr s dzPresentation site htr s dz
Presentation site htr s dzHTR services dz
 
Offres d’emploi sur internet
Offres d’emploi sur internetOffres d’emploi sur internet
Offres d’emploi sur internetAlexL79
 
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management Spain
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management SpainEstudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management Spain
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management SpainDAVID DE LUCAS
 
Présentation Domotique Maximin Coste
Présentation Domotique Maximin CostePrésentation Domotique Maximin Coste
Présentation Domotique Maximin Costenedseb
 
Hydroplast - L'étanchéité zéro défaut !
Hydroplast - L'étanchéité zéro défaut !Hydroplast - L'étanchéité zéro défaut !
Hydroplast - L'étanchéité zéro défaut !Eurovia_Group
 
Prix radeos 2013 & hotcase radioactif !
Prix radeos 2013 & hotcase radioactif !Prix radeos 2013 & hotcase radioactif !
Prix radeos 2013 & hotcase radioactif !Réseau Pro Santé
 
Communique de presse etude telemedecine
Communique de presse etude telemedecineCommunique de presse etude telemedecine
Communique de presse etude telemedecineLes Echos Etudes
 
Presentation, Poisy (MENDEZ, 2014)
Presentation, Poisy (MENDEZ, 2014)Presentation, Poisy (MENDEZ, 2014)
Presentation, Poisy (MENDEZ, 2014)techmapping
 
Iv comment valider votre dpc avec l’odpc psy-aefcp .
Iv  comment valider votre dpc avec  l’odpc psy-aefcp  .Iv  comment valider votre dpc avec  l’odpc psy-aefcp  .
Iv comment valider votre dpc avec l’odpc psy-aefcp .Réseau Pro Santé
 

Viewers also liked (20)

Rencontre économique du diocèse d'angoulême 19 septembre 2014
Rencontre économique du diocèse d'angoulême   19 septembre 2014Rencontre économique du diocèse d'angoulême   19 septembre 2014
Rencontre économique du diocèse d'angoulême 19 septembre 2014
 
Croisiére en bateau
Croisiére en bateauCroisiére en bateau
Croisiére en bateau
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Classement général Pronodix
Classement général PronodixClassement général Pronodix
Classement général Pronodix
 
Presentation datalocale generaliste
Presentation datalocale generalistePresentation datalocale generaliste
Presentation datalocale generaliste
 
Lemtierdecommunitymanager alexitauzin-120203084808-p
Lemtierdecommunitymanager alexitauzin-120203084808-pLemtierdecommunitymanager alexitauzin-120203084808-p
Lemtierdecommunitymanager alexitauzin-120203084808-p
 
Adjectifs 120131091936-phpapp02 (1)
Adjectifs 120131091936-phpapp02 (1)Adjectifs 120131091936-phpapp02 (1)
Adjectifs 120131091936-phpapp02 (1)
 
La médecine du travail une spécialité riche.
La médecine du travail   une spécialité riche.La médecine du travail   une spécialité riche.
La médecine du travail une spécialité riche.
 
Presentation site htr s dz
Presentation site htr s dzPresentation site htr s dz
Presentation site htr s dz
 
Offres d’emploi sur internet
Offres d’emploi sur internetOffres d’emploi sur internet
Offres d’emploi sur internet
 
La notació medieval
La notació medievalLa notació medieval
La notació medieval
 
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management Spain
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management SpainEstudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management Spain
Estudio Gestion Riesgo De CréDito Ie Iberinform Espana Credit Management Spain
 
Présentation Domotique Maximin Coste
Présentation Domotique Maximin CostePrésentation Domotique Maximin Coste
Présentation Domotique Maximin Coste
 
Hydroplast - L'étanchéité zéro défaut !
Hydroplast - L'étanchéité zéro défaut !Hydroplast - L'étanchéité zéro défaut !
Hydroplast - L'étanchéité zéro défaut !
 
Prix radeos 2013 & hotcase radioactif !
Prix radeos 2013 & hotcase radioactif !Prix radeos 2013 & hotcase radioactif !
Prix radeos 2013 & hotcase radioactif !
 
Communique de presse etude telemedecine
Communique de presse etude telemedecineCommunique de presse etude telemedecine
Communique de presse etude telemedecine
 
Pauta juicios
Pauta juiciosPauta juicios
Pauta juicios
 
Presentation, Poisy (MENDEZ, 2014)
Presentation, Poisy (MENDEZ, 2014)Presentation, Poisy (MENDEZ, 2014)
Presentation, Poisy (MENDEZ, 2014)
 
Iv comment valider votre dpc avec l’odpc psy-aefcp .
Iv  comment valider votre dpc avec  l’odpc psy-aefcp  .Iv  comment valider votre dpc avec  l’odpc psy-aefcp  .
Iv comment valider votre dpc avec l’odpc psy-aefcp .
 
ABC lanza portal web
ABC lanza portal webABC lanza portal web
ABC lanza portal web
 

Similar to Descripción del lenguaje red

Programacion 2
Programacion 2Programacion 2
Programacion 258994146
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prologAnderipe Pinto
 
Estructura sintactica de los lenguajes de programacion y bases de datos
Estructura sintactica de los lenguajes de programacion y bases de datosEstructura sintactica de los lenguajes de programacion y bases de datos
Estructura sintactica de los lenguajes de programacion y bases de datosspedy93
 
Estructura del programa arduino
Estructura del programa arduinoEstructura del programa arduino
Estructura del programa arduinotecnocm
 
Escritura de algoritmos (grupo 5)
Escritura de algoritmos (grupo 5)Escritura de algoritmos (grupo 5)
Escritura de algoritmos (grupo 5)Mayron Martinez
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Carlos Pastorino
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1zeta2015
 
1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo1.2.3.- Pseudocódigo
1.2.3.- PseudocódigoYenny Salazar
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15AndresDvila
 

Similar to Descripción del lenguaje red (20)

Programacion 2
Programacion 2Programacion 2
Programacion 2
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prolog
 
Estructura sintactica de los lenguajes de programacion y bases de datos
Estructura sintactica de los lenguajes de programacion y bases de datosEstructura sintactica de los lenguajes de programacion y bases de datos
Estructura sintactica de los lenguajes de programacion y bases de datos
 
Turbo pascal
Turbo pascalTurbo pascal
Turbo pascal
 
Estructura del programa arduino
Estructura del programa arduinoEstructura del programa arduino
Estructura del programa arduino
 
Parcial
ParcialParcial
Parcial
 
Fundamentos de Lenguaje C
Fundamentos de Lenguaje CFundamentos de Lenguaje C
Fundamentos de Lenguaje C
 
Practica
PracticaPractica
Practica
 
presentacion
presentacionpresentacion
presentacion
 
Escritura de algoritmos (grupo 5)
Escritura de algoritmos (grupo 5)Escritura de algoritmos (grupo 5)
Escritura de algoritmos (grupo 5)
 
Estructura programa arduino
Estructura programa arduinoEstructura programa arduino
Estructura programa arduino
 
IntroLenguajeC.ppt
IntroLenguajeC.pptIntroLenguajeC.ppt
IntroLenguajeC.ppt
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Pascal [modo de compatibilidad]
Pascal [modo de compatibilidad]Pascal [modo de compatibilidad]
Pascal [modo de compatibilidad]
 
Pascal
PascalPascal
Pascal
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1
 
1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15
 

Recently uploaded

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Recently uploaded (11)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Descripción del lenguaje red

  • 1. Compiladores IDescripción del Lenguaje REDDefinición y Gramática del Lenguajerapsware21/07/2010Lenguaje de programación 2T, definición y gramática del lenguaje, ejemplos y toda la descripción del lenguaje. Lenguaje de programación básico especialmente desarrollado para personas principiantes en el mundo de la programación, además ofrece características necesarias para desarrollar, pequeñas rutinas de programación de nivel intermedio, y de bastante facilidad.<br />Tabla de contenido TOC quot; 1-3quot; Descripción del Lenguaje PAGEREF _Toc270360437 3Programas PAGEREF _Toc270360438 3Estructura básica de un programa PAGEREF _Toc270360439 3Cabecera PAGEREF _Toc270360440 3Diccionario de palabras reservadas PAGEREF _Toc270360441 4Símbolos especiales PAGEREF _Toc270360442 4Tipos de Comentarios PAGEREF _Toc270360443 5Los comentarios en el lenguaje RED, pueden ser puestos en cualquier parte del código, ya sea la final al inicio o en medio del código. Existen dos tipos de comentarios de una sola línea, utilizando las dos plecas (//) antes de escribir el comentario, y todo lo que se escriba después de estos es tomado como comentario, hasta que finalice la línea, cuando se escribe en otra línea ya no es tomado como comentario. PAGEREF _Toc270360444 6Tipos de datos fundamentales y su representación PAGEREF _Toc270360445 6Operaciones de entrada y salida básica PAGEREF _Toc270360446 7Entrada PAGEREF _Toc270360447 7Salida PAGEREF _Toc270360448 7Declaración e inicialización de variables PAGEREF _Toc270360449 7Para declarar variables utilizamos la siguiente sintaxis: PAGEREF _Toc270360450 9Nombres de Variables: PAGEREF _Toc270360451 9Para inicializar las variables recién creadas: PAGEREF _Toc270360452 9El bloque principal del programa PAGEREF _Toc270360453 10Los primeros programas PAGEREF _Toc270360454 10Tabla de operadores con asociatividad y precedencia PAGEREF _Toc270360455 10Estructuras de decisión e iteración PAGEREF _Toc270360456 11Decisión PAGEREF _Toc270360457 12Uso del Si PAGEREF _Toc270360458 12Iteración PAGEREF _Toc270360459 12Para PAGEREF _Toc270360460 12Ciclo Mientras PAGEREF _Toc270360461 13Declaración, definición y uso de métodos y funciones PAGEREF _Toc270360462 13Funciones: PAGEREF _Toc270360463 13Características especificas del lenguaje PAGEREF _Toc270360464 15Definición de Arreglos PAGEREF _Toc270360465 15Ejemplo de un programa en RED-2T PAGEREF _Toc270360466 16Estructura de un Programa en RED PAGEREF _Toc270360467 16Ejemplo de un Programa en RED PAGEREF _Toc270360468 17Gramática del lenguaje PAGEREF _Toc270360469 18<br />Descripción del Lenguaje<br />RED es un lenguaje que permite programar en forma estructurada. Esto significa que es posible dividir al programa implementando funciones, y organizarlo de manera tal que se pueda leer con facilidad. Esto último tiene que ver con una indentación, comentarios, nombres mnemotécnicos, etc. Aunque estas últimas características NO son imprescindibles en un programa RED.<br />Programas<br />RED define un tipo básico de archivo que se puede compilar. Los archivos de código fuente que se escriben con el editor (IDE) conviene que tengan la extensión (.red), al compilar estos programas tendremos archivos .exe<br />Estructura básica de un programa<br />Cabecera<br />Todos los programas tienen la misma estructura. Para indicar al compilador que se trata de un programa tenemos que escribir la palabra PROGRAMA seguida de un espacio y un nombre (que puede tener letras y números) y que tiene que terminar en un punto y coma. Por ejemplo:<br />Programa ejemploNumero6;<br />Es importante indicar que el nombre que le damos al programa tiene que seguir unas reglas ya que sino en caso contrario no será válido por el compilador:<br />El primer carácter tiene que ser una letra y no una cifra ya que en caso contrario el compilador se pensaría que es un número. Por ejemplo, no es válido el nombre siguiente:<br />Programa 6ejemplo;<br />El único carácter no alfanumérico valido es el guion bajo. No se admiten caracteres como exclamaciones o signos de interrogación, etc.<br />Tampoco se admiten vocales acentuadas o letras que no pertenezcan al alfabeto ingles. Por ejemplo ÿ y la ῆ no se admiten.<br />Finalmente, el nombre del programa no tiene que coincidir con otras variables o constantes del programa.<br />Diccionario de palabras reservadas<br />Esta es una lista de palabras reservadas y estas no pueden redefinirse o ser utilizadas como identificadores. Hay que tener en cuenta que no se pueden emplear las siguientes palabras para nombres de variables ya que son palabras reservadas para RED.<br />NombreDescripciónEnteroTipo de dato, que representa los números enterosDecimalTipo de dato, que representa los números decimalesCarácterTipo de dato, que representa caracteresLogicoTipo de dato, que representa los datos lógicosVarPrefijo para declarar una variableFuncionUtilizado para declarar funciones en el programaLeaFunción con la cual obtenemos un valor de el usuarioEscribaFunción con la cual escribimos en pantalla algoSiEstructura de decisiónSinoComplemento de la estructura de decisiónParaEstructura de iteraciónMientrasEstructura de iteración condicionadaRetorneEspecifica lo que retorna una funciónProgramaUtilizada para declarar un programa en REDVerdaderoValor lógicoFinDelimita el fin de un programaFalsoValor lógicoInicioIndica el inicio de un programaVacioTipo utilizado en las funciones donde no necesita que retorne nada<br />Todas las palabras reservadas dentro del lenguaje RED, pueden ser escritas sin importar si están en mayúsculas o en minúsculas o una combinación de estos, así como las variables, tomando en cuenta que una variable escrita en mayúsculas es la misma que escrita en minúsculas, así como las palabras reservadas.<br />Símbolos especiales<br />Los símbolos especiales son caracteres no alfabéticos, o pares de estos caracteres, que tienen significados fijos. Los siguientes caracteres son símbolos especiales:<br />SímboloDescripción/Símbolo aritmético utilizado para representar la división*Símbolo aritmético utilizada para representar la multiplicación+Símbolo aritmético utilizado para representar la suma-Símbolo aritmético utilizado para representar la resta%Símbolo utilizado para representar el MOD=Símbolo utilizado para representar la asignación,Símbolo utilizado para separar los parámetros de las funciones;Símbolo utilizado para representar el fin de línea dentro de un programa:Símbolo utilizado para definir los tipos de datos de las variables<Símbolo utilizado para representar el “menor que”>Símbolo utilizado para representar el “mayor que”<br />Los siguientes pares de caracteres también son símbolos:<br />SímboloDescripción&&Representa el Y lógico||Representa O lógico“ ”Utilizado para representar cadenas de texto‘ ’Utilizado para poner caracteres[]Utilizado en los arreglos()Utilizado en la funciones {}Utilizado para definir los límites de funciones y ciclos//Utilizado para comentarios de una sola línea/*Utilizado para comentarios de varias líneas y finaliza con el símbolo */==Representa la igualdad!=Representa la desigualdad<=Representa “menor o igual que” >=Representa “mayor o igual que” <br />Tipos de Comentarios<br />Los comentarios son ignorados por el compilador, excepto cuando su función es de separadores delimitando tokens adyacentes.<br />//Comentario de una línea/*Comentario de varias Líneas*/<br />Los comentarios en el lenguaje RED, pueden ser puestos en cualquier parte del código, ya sea la final al inicio o en medio del código. Existen dos tipos de comentarios de una sola línea, utilizando las dos plecas (//) antes de escribir el comentario, y todo lo que se escriba después de estos es tomado como comentario, hasta que finalice la línea, cuando se escribe en otra línea ya no es tomado como comentario.<br />Los comentarios de varias líneas, empiezan con la combinación de símbolos /*, seguido de cualquier combinación de letras y números así como de símbolos, ya que el compilador los omite, estos acepta hasta saltos de línea, hasta que se cierre con la combinación de símbolos */<br />Tipos de datos fundamentales y su representación<br />Los tipos de variables, llamados tipos de datos, se dividen en tres grandes grupos fundamentales:<br />Numéricos. Enteros o Decimales<br />Alfanuméricos. Caracteres<br />Lógicos. Solo pueden valer verdadero o falso<br />NombreRangoDescripciónEnteroNúmeros enteros comprendidosDecimalRepresenta números decimalesCaracter[a-zA-Z][0-9]Representa caracteres alfanumericosLogicoVerdadero-FalsoRepresenta valores lógicos<br />Nota: Existe un tipo especial llamado Vacio, este devuelve un valor indefinido, se utiliza en la funciones donde no necesitamos que devuelva nada, entonces en el tipo a retornar en las funciones se pone vacio.<br />Operaciones de entrada y salida básica<br />Entrada<br />Lea(<tipo>,<variable>);/*donde variable es cualquier tipo de variable donde se almacena lo que el usuario introducey tipo es uno de los tipos definidos en el lenguaje*///EjemploVar entero: num1;Lea(entero,num1);/*en la variable num1 se almacena lo que el usuario ingrese siempre que sea del tipo definido en la misma función en este caso tendría que ser del tipo entero*/<br />Salida<br />Escriba(<Expresion>);Escriba(“cadena”,<variable>,(3*5+2),función());/*Donde expresión puede ser una combinación tanto de variables cadenas de texto como de constantes numéricas, las cuales cada una de estas deben estar separadas por comas Ejemplo:*///EjemploVar entero: numero=23;Escriba(“hola mundo”,numero,(3+5),getedad());//donde getedad() es una función que retorna un entero<br />Declaración e inicialización de variables<br />Si pensamos en muchas formulas matemáticas veremos que emplean variables en su expresión. Por ejemplo el área del triangulo es AT=b*h . Cuando queremos calcular el área de un triangulo dado nos limitamos a sustituir estas variables. En RED, y programación ocurre algo parecido.<br />RED exige que se declaren las variables que se utilizaran. Las variables pueden modificar su valor a lo largo del programa. Cada variable tiene que ser de un tipo determinado.<br />Para declarar variables emplearemos la palabra reservada VAR, seguida de un espacio y luego el tipo de dato de la variable seguida de dos puntos y espacio y después el nombre de la variable. Por ejemplo:<br />Var entero: base;Var entero: altura=10;Var carácter: Lnombre=”a”;<br />Lo que va después del signo igual recibe el nombre de literal. Un literal es un valor incluido directamente en el código. El primer caso es el numero entero 10, la variable altura vale 10. En el caso de Lnombre representa un carácter con el valor “a”.<br />La declaración de literales se rige por unas normas sencillas:<br />Los caracteres siempre empiezan y terminan con las comillas y solo tiene un carácter, en caso contrario el compilador enviara un error.<br />Los caracteres pueden aceptar más de un carácter en caso de que sea una combinación de tabulación “” o salto de línea “”, solo en este caso es aceptado más de un carácter.<br />Los números enteros se escriben de manera normal respetando el tamaño máximo y mínimo establecido.<br />Los números decimales deben ir acompañados del signo de punto y la cantidad de decimales y enteros que desee, respetando el tamaño máximo y mínimo establecido.<br />En RED, los nombres de constantes es indiferente de que estén en mayúsculas o minúsculas. Por tanto, en el ejemplo anterior altura, ALTURA, ALtuRa representan lo mismo para el compilador. Hay que ir con cuidado para no duplicar nombres. Por ejemplo, esto es incorrecto:<br />Var entero: maximo;Var entero: MAXIMO;<br />Ya que MAXIMO y máximo son lo mismo y se esta redeclarando una variable ya declarada. Esta independencia sintáctica a las mayúsculas está presente en todos los aspectos de RED.<br />La declaración anterior se podía haber simplificado de la siguiente forma:<br />Var entero: base, altura;Var caracter: Lnombre;<br />Podemos declarar dos o más variables del mismo tipo a la vez separándolas entre comas.<br />Para declarar variables utilizamos la siguiente sintaxis:<br />Var <tipo>: <nombre>;Var <tipo>: <nombre1>,<nombre2>,…<nombreN>;//ejemploVar carácter: a, cvar;Var entero: numero1;Var lógico: continuar, avance;Var decimal: real;<br />Nombres de Variables:<br />Los nombres de variables deben iniciar con una letra seguida de cualquier combinación de números o letras.<br />Los nombres de variables no deben ser los mismos que las palabras reservadas definidas en el lenguaje.<br />Los nombres de variables no deben contener ningún de los símbolos especiales, definidos en el lenguaje, en cambio puede utilizar cualquier otro símbolo.<br />Para inicializar las variables recién creadas:<br /> <nombreVariable>=<Valor>;//ejemploNumero=34;A=”b”;Avance=verdadero;Real=23.45;<br />El bloque principal del programa<br />Una vez hemos declarado la etiqueta programa, y las declaraciones de variables solo falta el bloque principal de código del programa. El bloque donde se ejecutaran las ordenes.<br />Este bloque, a diferencia de los anteriores, no se puede dejar de poner en un programa RED. El bloque principal del programa se define entre las palabras INICIO y FIN. Por ejemplo estas dos líneas ya son un programa valido para el compilador aunque no haga nada:<br />Iniciofin<br />Es entre estas dos palabras que incluiremos nuestro código. Todas las órdenes que se incluyen en este bloque reciben el nombre de sentencias.<br />Los primeros programas<br />Vamos a hacer un programa que calcule el área de un triangulo dadas las bases y la altura. El código podría ser el siguiente:<br />Var entero: base, altura;Var caracter: Lnombre;<br />Tabla de operadores con asociatividad y precedencia<br />OperadorAsociatividad+Por la izquierda-Por la izquierda*Por la izquierda/Por la izquierda%Por la izquierda<br />Orden de precedenciaOperadores1Las operaciones entre paréntesis2Raíces o potencias3Multiplicaciones o divisiones4Sumas o restas5Si hay dos o más operadores del mismo orden entonces se usa la asociatividad por la izquierda<br />Estructuras de decisión e iteración<br />Antes de iniciar con las estructuras de decisión e iteración, se deben conocer los operadores de las condiciones que son la base de las siguientes estructuras a ver.<br />OperadorSignificado<Menor que>Mayor que<=Menor o igual que>=Mayor o igual que==Igual!=Distinto de<br />Hay que tener claro que la diferencia entre “=” y”==” es, que el primero compara dos variables y el segundo es una asignación de valores.<br /> A continuación se presenta una tabla con los operadores para cuando hay más de una condición a evaluar.<br />OperadorSignificado&&“Y” lógico||“O” lógico<br />Decisión<br />Uso del Si<br />Si(condicion){Bloque de instrucciones}Sino{Bloque de instrucciones}/*donde bloque de instrucciones puede ser un conjunto de ciclos u operaciones y llmados a función etc., además de tener otros ciclos Si*///ejemploSi(numero < 15 || numero==0){Escriba();}sino{Si(numero>30 && numero < 45){Escriba();}sino{Escriba();}}<br />Iteración<br />Para<br />Para(<Variable>=<valor inicial> ; <restricción de limite>; <expresión de incremento>){Bloque de instrucciones;}//el bloque de instrucciones puede contener lo mismo que el bloque de instrucciones que el ciclo Si*///ejemploPara(i=0;i < 10; i=i+1){Escriba();}<br />Ciclo Mientras<br />Mientras(<Condicion>){Bloque de instrucciones;}//el bloque de instrucciones puede contener lo mismo que el bloque de instrucciones que el ciclo Si*///ejemploMientras(numero !=0){Escriba();}<br />Dependiendo de la condición, la instrucción puede variar pero esta instrucción es vital para evitar ciclos infinitos.<br />Declaración, definición y uso de métodos y funciones<br />RED por supuesto tiene lo que es el uso de procedimientos y funciones, ahora definiremos por separado cada uno de estos módulos.<br />Funciones:<br />Una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor o no, a la parte principal del programa u otra función o procedimiento que la invoque.<br />Declaración y Definición de las Funciones<br />//Declaración de FunciónFuncion <Tipo> <NombreFuncion>(parámetros);//Definición de FunciónFuncion <Tipo> <nombre funcion>(parámetros){Declaracion de variables localesBloque de instrucciones;Retorne <Valor>;}/* en el caso especial donde no se deba regresar ningún valor donde dice tipo se pone la palabra reservada Vacio, y no se necesita poner Retorne dentro de la función.La declaración de variables se debe de hacer antes de que se inicie el bloque de instrucciones, de lo contrario tirara un error, y estas variables son validas únicamente en la funcion*///ejemploFunción entero getEdad(entero,entero);Función entero getedad(entero: num1, entero: num2){Retorne valor;}<br />Este esquema de la definición y declaración se hace en la sección de Var del programa principal, donde parámetros está definido de la siguiente forma:<br />(<tipo>:<nombre_var>,<tipo>:<nombrevar2>,…)//ejemploEntero: num1, entero: num2<br />Uso<br />Simplemente en el programa principal se hace llamado a función.<br />//llamado a una función desde el programa principal o desde otra función[<variable>]=<nombrefuncion>(parametros);/*En el caso de retornar algo poner la variable en la que se guardara el valor de retorno de lo contrario solo se llama a la función*///ejemploVcadena=getedad(num1,num2);<br />Características especificas del lenguaje<br />Definición de Arreglos<br />Para declarar un arreglo se usa el siguiente formato:<br />Var <Tipo>:<nombre arreglo>[expresion];/*donde expresion puede ser una constante una combinación de operaciones matematicas o una variable con valores enteros//ejemploVar entero: arreglo[5];<br />Para asignar un valor a un arreglo es de la siguiente forma:<br /><nombre arreglo>[constante]=<Valor>;//donde constante es el índice del arreglo, alque se desean introducir datos, el índice en los arreglos empieza desde 0 hasta el numero antes del que se definió al declarar el arreglo//ejemploArreglo[i]=23;<br />Donde constante es una numero entero el cual define la posición del arreglo.<br />Ejemplo de un programa en RED-2T<br />Estructura de un Programa en RED<br /><Nombre de programa>*< REF _Ref270199318 Declaración e inicialización de variables>< REF _Ref270199343 Declaración, definición y uso de métodos y funciones><Definición del programa principal>**<Definición de funciones><Definición de procedimientos><br />*: El nombre del programa y como inicia todo programa en RED, inicia con la palabra reservada PROGRAMA, y seguido de el nombre para el programa utilizando las mismas reglas que los nombres de variable, luego se finaliza la línea con “;” que indica el fin de la línea.<br />**: La definición del programa principal es donde inicializamos y utilizamos las variables, constantes funciones y procedimientos, así como de todos los ciclos y demás componentes del lenguaje RED. Este debe de ir siempre en cualquier programa en RED, siempre empieza con la palabra reservada INICIO, y finaliza con la palabra FIN, dentro de estas instrucciones definimos nuestro programa principal.<br />Ejemplo de un Programa en RED<br />Programa ejemplo;Var Entero ventero,i;Var Entero arreglo[2];Var Carácter vcaracter;Var Decimal vreal;Funcion Entero Suma(Entero,Entero);Procedimiento Imprime(Entero);InicioPara(i=0 Hasta 2){Escriba(“Escriba un numero: ”);Lea(ventero1);arreglo[i]=ventero1;}Imprime(Suma(arreglo[1],arreglo[2]));Ventero1=arreglo[1];ventero2=arreglo[2];Si(ventero1 > ventero2){Escriba(“el mayor es: ”,ventero1);}Sino{Escriba(“El mayor es: ”,ventero2);}FinFuncion Entero Suma(Entero: num1,Entero: num2){Retorne num1+num2;}Procedimiento Imprime(Entero: num){Escriba(num);}<br />Gramática del lenguaje<br />1Gramatica->DeclaracionesDefiniciones2Declaraciones->CabeceraCuerpo3Cabecera->PROGRAMA ID;4Cuerpo->DeclaracionVariablesDeclaracionFunciones5DeclaracionVariables->LineaVar DeclaracionVariables6LineaVar->VAR Tipo: LVar7LVar->Lid LVar28LVar2->,LVar | ;9LId->ID L2Id10L2Id->= ValorT | [Expresion] | λ11ValorT->Expresion | VLogico | VCaracter12DeclaracionFunciones->FUNCION vRetorno ID( LParam );13vRetorno->Tipo | VACIO14cRetorno->RETORNE ValorT ; | λ15LParam->L2Param LParam | λ16L2Param->Tipo L3Param17L3Param->, | λ18LParametros->L2Parametros LParametros | λ19L2Parametros->Tipo : ID L3Parametros20L3Parametros->, | λ21Definiciones->PPrincipalDefinicionFunciones22PPrincipal->INICIODeclaracionVariablesBloqueInstruccionesFIN23DefinicionFunciones->FUNCION vRetorno ID( Lparametros ){DeclaracionVariablesBloqueInstruccionescRetorno }24BloqueInstrucciones->LBloque BloqueInstrucciones | λ25LBloque->Asignacion | Lectura | Escritura | Decisión | Iteracion | BloCod | LlamFunc26Asignacion->ID TVar DAsignacion ;27TVar->= | [ Expresion ]=28DAsignacion->ValorT | LlamFunc ;29LlamFunc->ID( LisPram )30LisParam->ID Lis2Param31Lis2Param->,LisParam | λ32Lectura->LEA( Tipo, ID);33Escritura->ESCRIBA( LisEsc );34LisEsc->Lis Lis2Esc35Lis2Esc->,LisEsc | λ36Lis->ValorT | LlamFunc | Cadena37BloCod->BLOQUE{DeclaracionVariablesBloqueInstrucciones}38Iteracion->CicloMientras | CicloPara39CicloMientras->MIENTRAS( Condicion ){BloqueInstrucciones}40CicloPara->PARA(ID=Expresion ; ID OperC Expresion ; Asignacion){BloqueInstrucciones}41Decisión->IR | IA | BloqueInstrucciones42IR->SI( Condicion ){IR}SINO{IR}| λ43IA->SI( Condicion ){Decisión} | SI( Condicion ){IR}SINO{IA}44Condicion->45Tipo->ENTERO | DECIMAL | CARÁCTER | LOGICO46OperC->47Expresion->Terminal ExpresionP48ExpresionP->+Terminal ExpresionP | -Terminal ExpresionP | λ49Terminal->Factor TerminalP50TerminalP->*Factor TerminalP | /Factor TerminalP | λ51Factor->( Expresion ) | Num | ID52VLogico->53VCaracter->54Num-><br />