Resultados 1 al 4 de 4

Tema: Introduccin a la programacin estructurada. Captulo 2

  1. #1  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicacin
    Galiza
    Mensajes
    3.918
    Descargas
    8
    Uploads
    1
    Introduccin a la programacin estructurada

    Capitulo 2: VARIABLES, CONSTANTES, FUNCIONES PREDEFINIDAS


    En el capitulo se tratarn las variables, constantes y funciones predefinidas bsicas de Modula 2, y todo lo relacionado con ello, como pueden ser los tipos predefinidos, identificadores vlidos...


    Variables:

    Es muy comn que alguien que se acerca por primera vez a la programacin, piense que las variables de programacin son similares a las algebraicas. Ese es un gran problema, ya que aunque hay una similitud formal, las diferencias son muy grandes.

    Una variable algebraica representa valores simblicos, que puede ser un valor cualquiera o un valor desconocido, pero una vez asociada esa variable a un valor, ese valor no puede modificarse. En cambio una variable en programacin est ms ntimamente ligada a la idea de contenedor, puede tener un valor “x” en una parte del cdigo y un valor “y” en otra parte del cdigo.

    La definicin de variable para la mayora de los autores estaba relacionada con una posicin de memoria, pero yo me alejare de estas definiciones, ya que son muy especificis y si las usamos nos estamos cerrando puertas restringiendo la definicin.

    Un buen ejemplo que corrobora que la definicin de variable como posicin de memoria es un error es compararlo con las variables de un PIC (por ejemplo el 16F84), en donde las variables puras (es muy flexible y hay otras opciones) solo son 8 y se corresponden con 8 registros, adems en los PICs el cdigo y los datos estn separados ya que siguen la arquitectura Hardbarg y no la Von Newman que impera en los PCs. Alguno pensara, pero que dice este to, si se est contradiciendo? Pues no, no me contradigo, ya que el concepto de memoria est muy ligado a la arquitectura Von Newman y adems, como he dicho, en los PICs son 8 registros, no actan como acta una posicin de memoria de un PC, por ejemplo. Adems, hoy en da, incluso en el PC, la idea de variable como posicin de memoria ya es muy dbil, ya que la memoria virtual (en almacenamiento secundario, como el Disco Duro) y las caches (que son memorias asociativas de carga en paralelo y muchas veces dentro del propio procesador) hacen que realmente ese concepto de variable como posicin de memoria no sea correcto.

    NOTA: Los procesadores actuales ya rara vez ejecutan cdigo directo de la memoria (alguno incluso ya no puede), sino que lo que se ejecuta es el cdigo que hay en la Cache, y cuando referenciamos posiciones de memoria no presentes en la cache, lo que se haces es desalojar una porcin de la cache y cargar en ella una zona de la memoria RAM que incluya a la zona referenciada y a partir de lo cargado en las caches se procede a ejecucin.

    Pero entonces Qu es una variable? Una definicin ms correcta de variable y que coincide con la definicin habitual de variable en los lenguajes imperativos es: “Una variable representa un valor almacenado, y que se puede conservar indefinidamente para ser usado tantas veces como se desee. Pero el valor de una variable se puede modificar en cualquier momento, y ser el nuevo valor el que estar almacenado en ella a partir de entonces”.

    Las variables se designan mediante identificadores (o nombres). El identificador representa el valor almacenado en dicha variable. Los identificadores son elegidos por el programador atendiendo a ciertas reglas propias de cada lenguaje de programacin en particular.

    Por otro lado, podemos encontrarnos con 2 tipos bsicos de variables dependiendo del lenguaje, variables estticas y variables dinmicas. Modula 2 no tiene variables dinmicas puras, por lo cual solo se mencionaran.

    Las variables estticas son aquellas ntimamente ligadas a un tipo de datos (numrico, texto…) mientras que las variables dinmicas estn ligadas al contenido, si en un momento contiene un nmero se comportaran como variables estticas numricas, pero en la siguientes instruccin puede cargarse un carcter y entonces esa variables pasara a comportarse como una variable esttica de tipo carcter… Modula 2 bsicamente utiliza variables estticas, aunque hay forma de simular variables dinmicas, no es el propsito de este texto.

    Dentro de los lenguajes que utilizan variables estticas (Modula 2, C, Pascal…) podemos diferencias aquellos fuertemente tipados (Modula 2) de los dbilmente tipados (C). Modula 2 es un leguaje muy fuertemente tipado, lo que significa que no se pueden hacer operaciones entre variables de tipos distintos, por ejemplo no se pueden hacer directamente la suma de un carcter con un nmero entero. Eso no quiere decir que no se pueda hacer, simplemente que el lenguaje integra protecciones para que eso no pase como consecuencia de un fallo del programador, ya que si el programador quiere pues hay forma de hacerlo, como puede ser realizar la operacin anterior usando la posicin del carcter (con ORD()) para realizar la suma. En los lenguajes dbilmente tipados no hay estas restricciones y se pueden hacer operaciones entre tipos sin haber hecho una conversin explicita. Esto suele deberse a que todos los tipos internamente son tratados como nmeros, el clsico ejemplo es el lenguaje “C”.

    En cuanto a tipos de datos, en casi todos los lenguajes hay unos tipos bsicos y unos tipos definidos por el programador. Y Modula2 no iba a ser la excepcin, en Modula 2 hay unos tipos bsicos (CHAR, INTEGER, CARDINAL y REAL) y tipos definidos (ARRAYS, Conjuntos, Registros…). Esto no es ms que una adaptacin de las leyes matemticas a la informtica, ya que en matemticas no es lo mismo un nmero Real que un nmero Entero, o un nmero Natural y un Entero, solo por mencionar algunos ejemplos. Adems hay que programar de alguna forma lenguaje humano dentro de binario, y de ah surgen el tipo Carcter y sus derivados (STRINGS…).

    La gran diferencia entre las matemticas y la informtica es que mientras en matemticas trabajar con nmeros grandes (incluyo al infinito) o nmeros terriblemente pequeos no tiene ningn problema, en la informtica si, ya que las mquinas tienen unas restricciones, bsicamente de hardware, por lo cual los tipos tienen limites dentro de los que podemos trabajar. Y no es que no se pueda trabajar con nmeros muy grandes en un ordenador, por poner un ejemplo, sino que los tipos y operaciones bsicas no pueden, pero hay forma de operar con nmeros grandsimos, simplemente se trata de utilizar tcnicas para simular esos nmeros grandsimos con nmeros mucho ms pequeos. Y es que no hace falta una mquina capaz operar con nmero de 30 cifras para operar con nmeros de 30 cifras, solo hace falta saber algo de matemticas y saber programar para superar esa barrera.

    Tipos:
    Los tipos predefinidos bsicos de Modula 2 son:

    -INTEGER

    -CARDINAL

    -REAL

    -CHAR

    El tipo STRING, al igual que en muchos otros lenguajes, como el C, no es un tipo primitivo sino un tipo especifico de ARRAY (por ahora llega que entendis que un ARRAY es una agrupacin de varios elementos del mismo tipo en un orden determinado. Por otro lado algo lgico, ya que las palabras, estn compuestas de letras (sera ms correcto de fonemas, pero no nos vetamos en berenjenales) siguiendo un orden determinado, esto ltimo es realmente importante, porque por ejemplo SOPA y PASO son 2 palabras con las mismas letras, pero que representan conceptos muy distintos.

    En cuanto al tipo BOOLEAN, pues tampoco es un tipo predefinido, sino un tipo enumerado predefinido.

    Ahora paso a dar las caractersticas de cada tipo por separado:

    INTEGER

    Podemos decir que el tipo INTEGER se corresponde con los nmeros enteros de matemticas, con una sola limitacin, no hay infinitos nmeros. Solo existen en un determinado rango, rango determinado por la maquina y el compilador. Un procesador de 16 bits no puede trabajar con enteros que estn fuera del rango [-32768..0..32767] y uno de 32 bits en el rango de [-2147483648..0.2147483647]. Y como los compiladores general cdigo mquina para un procesador determinado, pues si el compilador vuestro genera para procesadores de 16 bits tenis que apaaros con el rango para procesadores de 16 bits, por eso se dice que depende tambin del compilador. Por desgracia, a excepcin del XDS para Windows y el MOKA para Linux, la mayora de los compiladores para Modula 2 son de 16 bits, como casi todas las versiones del FST. Como la mayora de los compiladores aun compilan para 16 bits, pues a lo largo de los textos usare el rango de enteros de 16 bits.

    Si tenis dudas de que rango es capaz de mostrar vuestro compilador no tenis ms que integrar este cdigo en un programa y ya os lo da:


    WriteString(“Nmero mximo: “);

    WriteInt(MAX(INTEGER), 7);

    WriteLn;

    WriteString(“Nmero menor: “);

    WriteInt(MIN(INTEGER),7);

    WriteLn;

    Las funciones predefinidas “MAX(tipo)” y “MIN(tipo)” dan el valor ms alto y ms bajo del tipo pasado. Son funciones internas al lenguaje con lo cual podis usarlas directamente sin tener que llamar a ninguna librera.

    Pero pasemos a partes serias, las operaciones bsicas que podremos realizar con el tipo INTEGER. Bsicamente son las operaciones bsicas, valga la redundancia, de matemticas para trabajo con enteros, y son:

    + Suma (Ej: a+b)

    - Resta (Ej: a-b)

    * Multiplicacin (Ej: a*b)

    DIV Divisin entera (Ej: a DIV b)

    MOD Resto de divisin (Ej: a MOD b)

    + Identidad de entero (Ej: +a) (un signo “+“ delante no cambia el valor de un nmero)

    - Cambio de signo (Ej: -a) (un signo “-“ delante cambia el signo del nmero)
    NOTA: no se pueden hacer divisiones por “0”, cuidado de que nunca se produzcan, produciran un error insalvable del programa, en cristiano, en el mejor de los casos el programa se cerrara, en el peor un pantallaza azul de Windows. Tampoco se puede pasar del rango (ni por abajo ni por arriba).

    CARDINAL

    Este tipo es el equivalente a los nmeros naturales de matemticas (de cero a infinito), pero como siempre en programacin, aqu hay unos limintes:

    [0..65535] en caso de 16 bits.

    [0..4294967295] en caso de 32 bits.

    Por lo dems es igual al INTEGER, tanto es as que en este caso se produce la nica excepcin que tiene Modula2, las variables INTEGER Y CARDINAL se pueden mezclar en operaciones, eso s, teniendo en cuenta los rangos del tipo de cada variable. No se pueden introducir valores negativos en variables CARDINAL, ni valores fuera de rango en las INTEGER. Y es que los tipos CARDINAL e INTEGER realmente son 2 versiones del mismo tipo, los nmeros enteros con y sin signo.

    REAL

    El tipo REAL es el encargado de trabajar con nmeros reales (Ej: 4,56), tanto positivos como negativos. El de REAL de Modula 2 internamente utiliza el formato de 32bits definido por el IEEE.

    Un punto muy importante cuando trabajamos con variables tipo REAL es que la precisin no es exacta y no es un tipo cardinal (la representacin interna no respecta que para que uno valla delante de otro sea menor).

    Su rango ms habitual es:

    [-3.4E+38 .. -1.2E-38] para nmeros negativos.

    [1.2E-38 .. +3.4E+38] para nmeros positivos.

    Otro punto importante: 5 y 5.0 no son representan al mismo nmero. El primero es un INTEGER o CARDINAL y el segundo un REAL. Cuando trabajis con nmeros reales no os olvidis nunca de ponerle parte fraccionaria, aunque esta sea cero (“0”).

    Las operaciones asociadas al tipo REAL tambin son diferentes a las de los tipos INTEGER y CARDINAL:

    + Suma (Ej: a+b)

    - Resta (Ej: a-b)

    * Multiplicacin (Ej: a*b)

    / Divisin real (Ej: a/b)

    + Identidad de entero (Ej: +a) (un signo “+“ delante no cambia el valor de un nmero)

    - Cambio de signo (Ej: -a) (un signo “-“ delante cambia el signo del nmero)
    NOTA: En algunos compiladores el tipo real se denomina FLOAT, porque este nombre es el ms usado en los distintos lenguajes.

    Un Ejemplo de que los reales que usan los computadores no son exactos sino aproximaciones puede ser:

    3.3333332538604736E+0=10.0/3.0

    Este ejemplo es muy usado porque es donde patinaban los Pentium Originales, que no daban este valor, sino uno muy similar cambiando uno de los ltimos decimales.

    CHAR

    El tipo CHAR es el equivalente a las letras, aunque en su formato digital, en este caso son los caracteres de la tabla ASCII (me han dicho que actualmente hay algn compilador que trabaja con UNICODE, pero supongo que ser alguna caractersticas introducida cuando se estandarizo el lenguaje Modula 2 por el ISO). Aun as, hay algn computador donde esto no es as, ya que el compilador para este tipo recurre siempre al SO. En concreto se dice que ciertos compiladores de Mainframes y Minicomputadoras que incluyen (o incluyeron) este lenguaje no usan el ASCII, pero no creo que ninguno de vosotros tenga problemas con eso, y la nica diferencia es el cambio de posicin de los smbolos de la tabla, no los smbolos en si mismo.

    Una particularidad de Modula 2, que es una de las caractersticas que ms lo diferencian de C/C++, es que en Modula 2 los caracteres son caracteres y no se comportan como nmeros, algo que en C no es as, ya que en C realmente todos los tipos son nmeros, incluso los bolean y los char, lo que cambia es la representacin. Por lo anterior, en Modula no se pueden utilizar directamente operaciones de enteros sobre el tipo CHAR, antes hay que cambiarlo a su valor ordinal con la funcin “ORD(“carcter”);”. Por otro lado, tambin podemos obtener el carcter correspondiente a una posicin (entero) con la ord “CHR(Nmero);”. Puede decirse que son operaciones opuestas ya que:

    “C”=CHR(ORD(“C”));

    x=ORD(CHR(x));
    Hay otros tipos que aunque son basicos, no se consideran como tal ya que no pueden ser tratados por el procesador directamente, porque no coinciden con los tipos que el puede operar directamente. Los principales son LONGINT (Un Entero con un rango mayor que el INTEGER) y LONGREAL (Un Real con un rango mayor que el REAL). Todo lo dicho para el tipo INTEGER (LONGINT) y REAL (LONGREAL) es igual para los tipos largos (o grandes). Las funciones que trabajan con estos tipos estan en las mismas librerias que las de los tipos basicos, por ejemplo, el equivalenet al WriteInt es WriteLongInt, y el de ReadReal es ReadLongReal. Seguire los criterios de la mayoria de los autores de manuales de Modula 2 y no explicare nada mas sobre ellos, aunque con lo dicho llega. Cualquier duda me consultais.

    Conversiones entre tipos:

    Aparte de las ya vistas CHR y ORD, existen las funciones FLOAT y TRUNC.

    FLOAT transforma un nmero INTEGER o CARDINAL en el nmero REAL ms prximo (recordad lo dicho sobre la precisin de los REAL). Ej:

    45.0=FLOAT(45)

    TRUNC convierte un nmero REAL en un nmero INTEGER/CARDINAL, truncando la parte entera del nmero (puede depender del compilador ya que algunos toman directamente la parte entera y en cambio otros realizan una aproximacin al entero ms proximo. Ej:

    -10=TRUNC(-10.5)

    ORD no devuelve la posicin de un carcter, dicho valor se puede utilizar como si fuese un CARDINAL/INTEGER.

    CHR convierte un CARDINAL en su equivalente, por posicin en la tabla, CHAR.

    Funciones de consola de los tipos bsicos:

    De poco nos serviran los lenguajes de programacin si no fuesen interactivos (que permiten operar con el usuario del programa). Para ello tienen que disponer de funciones para poder obtener datos desde el teclado y funciones para sacarlos por la pantalla. El teclado y la pantalla son los dispositivos estndar, pero pueden ser redirecionados a otros medios, por ejemplo un archivo, un puerto, etc.

    En Modula 2, las funciones para trabajar con los tipos estndar no forman parte del lenguaje directamente, sino que estn incluidas dentro de las libreras estndar que todo compilador debe llevar, adems hay posibilidad de generar nuestras propias funciones y no tener que utilizar las bsicas, algo habitual cuando se realizan proyectos de cierta envergadura.

    Por otro lado, por cada tipo hay una funcin para capturar el valor del teclado y otra para presentar el valor en pantalla.

    En Modula 2, las funciones para trabajar con los tipos estndar no estn todas en la misma librera, sino que las del tipo INTEGER, CARDINAL y CHAR (entre otras) estn en la librera InOut, mientras que las equivalente para el tipo REAL estn en la biblioteca RealInOut. Esto tiene una explicacin simple, los tipos INTEGER, CARDINAL y CHAR son tipos ordinales (su valor depende de la posicin en la tabla de valores, solo hay un mayor de todos los menores del un valor y un menor de todos los mayores de un valor). En cambio los tipo REAL, por lo comentado antes, no es un tipo ORDINAL.

    Para poder utilizar estas funciones hay que declararlas en la parte declarativa del programa, ejemplo:

    FROM InOut IMPORT WriteInt, WriteCard;

    FROM RealInOut IMPORT WriteReal;
    Hay otra posible declaracin, aunque es menos utilizada para este tipo de funciones:

    IMPORT InOut.WriteInt, InOut.WriteCard;

    IMPORT RealInOut.WriteReal;
    Esta segunda formula de declaracin es ms usada para cuando llamamos mdulos propios, o funciones de libreras no estndar. Su ventaja es que siempre tendremos claros en donde est declarada tal o cual funcin, mejorando la legibilidad del cdigo. Aun as creo que no es demasiado utilizada.

    Aunque se pueden declarar todas las funciones de una libreria y muchas librerias, lo recomendable es solo declarar las que se utilicen.

    WriteInt(valor de tipo INTEGER, espacios reservados)

    WriteInt es la funcion encargada de sacar por pantalla valores INTEGER, tanto da literales como variables, ademas tambien se encarga de la presentacion de ese valor. Si en espacios reservados poner un 10 por ejemplo, lo que estamos haciendo es escribir el numero de izquierda a derecha dejando espacios en blanco hasta un total de 10 cifras:WriteInt(10,10)= 10, donde "" representa un espacio en blanco. Esta funcion pertenece a la libreria InOut.

    NOTA: Los literales son valores escritos directamente, por ejemplo 10, es un literal de un INTEGER o CARDINAL. En cristiano, cuando escribimos un numero o un caracter que participa en operaciones aritmeticologicas.

    WriteCard(valor de tipo CARDINAL, espacios reservados)

    WriteCard es similar al WriteInt con la diferencia de que WriteCard es para trabajar con valores CARDINALES, por lo demas lo dicho para WriteInt es correcto para WriteCard.

    WriteReal(valor de tipo REAL, espacios reservados)

    WriteReal es la funcion encargada de sacar por pantalla valores REAL, tanto literales como variables, y al igual que las anteriores tambien se encarga de la presentacion del numero. Ejemplo: WriteReal(1,10)=0.1000E+01. Pertenece a la libreria RealInOut.

    Write(valor de tipo CHAR)

    Write es la funcion para la salida de caracteres a pantalla, tanto literales como funciones. A diferencia de las anteriores, saca el valor directamente, no tiene funcion de presentacion, aunque es logico, ya que mientras que los valores numericos pueden ser de un numero de cifras desconocido en el momento de realizar el programa, los caracteres siempre son 1 solo caracter por cada funcion Write que hagamos. Pertenece a la libreria InOut. Hay dos formas de poner literales:

    Write("*");

    Write('*');
    Aunque por logica deberia pasar a las funciones de lectura desde teclado, voy a mencionar otras 2 funciones pertenecientes a la libreria InOut, ya mencionadas en el capitulo pasado: WriteString() y WriteLn. Os remito al capitulo anterior. Solo decir que WriteString se utiliza para imprimir varibles tipo STRING y literales tipo STRING, pero ese tipo de variables las daremos mas alante, con los ARRAYS, un ejemplo es WriteString("Hola");. WriteLn se utiliza para hacer un salto de linea en la pantalla.
    ReadInt(Variable INTEGER)
    La funcion ReadInt, de la libreria InOut, es la encargada de capturar valores INTEGER del teclado.
    ReadCard(Variable CARDINAL)
    La funcion ReadCard, de la libreria InOut, es la encargada de capturar valores CARDINAL del teclado.
    ReadReal(Variable REAL)
    La funcion ReadReal, de la libreria RealInOut, es la encargada de capturar valores REAL del teclado.
    Antes de seguir, hay que mencionar algo muy importante relativo a esas funciones (ReadInt, ReadCard y ReadReal), y es que lee los caracteres introducidos hasta el primer caracter valido del tipo que quiere leer, sigue leyendo hasta el primer caracer invalido para el tipo que esta leyendo, hace la combersion de ese valor y devuelve a la variable correspondiente. Pero mejor un ejemplo para que lo entendais:
    a4/68
    Pues en este ejemplo, si la llamada fuese un ReadInt, lo que cogeria seria 4, porque hasta el 4 hay espacios y letras que ignora, y despues del 4 hay un caracter ("/") que tambien ingnora y da por terminada la lectura. Esta peculiaridad de estas funciones provablemente se deba a que el usuario del programa, muchas veces no tiene cuidado con lo que escribe y el programador no puede tener en cuenta todas las opciones posibles, con lo cual el propio lenguaje ya incorpora ciertas medidas de seguridad.
    Read(Variable CHAR)
    La funcion Read, de la libreria InOut, lee el primer caracter introducido desde la anterior posicion del cursor, y es el valor qeu devuelve. Cualquier caracter es valido, incluidos letras, numeros, signos de puntuacion.... Un Ejemplo puede ser:
    a.t srs2
    En este caso la funcion Read devolveria el caracter "a", ya que es el primer caracter introducido.
    Constantes:
    Podemos definir constantes como un valor fijo que se utiliza en un programa y no cambia de una ejecucion a otra. Hay 2 formas basicas de constantes: los literales y las declaradas. Nos centramos en las constantes declaradas, que no son mas que dar un identificador a un valor fijo. Una vez declarada una constante, puede ser utilizada a lo largo del programa utilizando su nombre como si se tratase de un literal. Precisamente ahi radica la ventaja de su utilizacion, ya que con este metodo tenemos asegurado que a lo largo del programa ese valor no sera modificado, y si queremos modificarlo, solo tenemos que modificar la definicion y no tenemos que preocuparnos por cambiar un monton de literales. Un ejemplo que suele usarse para demostrar su utilidad, es la de declarar una constante con el valor PI (3.14159265), aunque tambien es muy utilizada la constante de Euler y otras muchas. Ademas declarar constantes es una muy buena estrategia de programacion. Las constantes, al igual que cualquier literal, aunque no se declaren con tipo, lo tienen implicito, es un detalle que hay que tener en cuenta siempre. Un ejemplo de definicion de constantes es el siguiente:
    CONST
    E = 2.718281828459; (*Se podria haber decladado en una sola linea, pero asi se mejora la legibilidad del codigo*)
    PI = 3.14159265;
    Como puede apreciarse, la declaracion va precedida de la etiqueta CONST que indica que a partir de ahi se van a declarar constantes. Ademas las declaraciones de constantes tienen que hacerse en la parte declarativa de los modulos o procedimientos.
    Para terminar con las constantes, solo repetir algo ya dicho, declarar constantes es una muy buena politica de programacion, incluso voy mas alla, parafraseando a un profesor que tuve en el ciclo superior de electronica: "Los buenos programadores saben de la importancia de la utilizacion de las constantes, por eso las utilizan mucho, si no utilizas constantes, probablemente sea un programodor pesimo, aunque hayas programdo un PhotoShop". Que significa lo anterior, que las constantes no son obligatorias normalmente, pero deben usarse, es mejor pecar de un exceso de declaracion de constantes que una falta de su utilizacion.
    Identificadores:
    Cuando definimos Variables, Constantes, Funciones... siempre tenemos que darles un nombre, ese nombre es lo que se conoce como Identificador y al acto se llama definicion o declaracion.
    Modula 2 sigue los criterios mas usualmente usados en lo referente a los identificadores, criterios normalmente utilizados por la mayoria de los lenguajes. Esos criterios son:
    -Deben comenzar con una letra obligatoriamente.
    -Puede ser una letra o una letra seguida de otras letras o numeros.
    -Sin espacios en blanco.
    -Pueden suarse las 52 letras (52 entre mayusculas y minusculas) del alfabeto ingles y los digitos del 0 al 9.
    -Modula 2 es case sensitive, lo que significa que distingue entre mayusculas y minusculas, no son lo mismo: Hola, hola, HOLA...
    -No se pueden usar las letras , o las vocales acentuadas. Estos caracteres solo pueden estar incluidos dentro de varibles CHAR o STRING.
    -No pueden usarse palabras clave o predefinidas del lenguaje Modula 2, como pueden ser BEGIN, END, MODULE...
    Por lo demas, casi todas las demas construcciones son admisibles, aunque hay que tener en cuenta unas normas basicas de diseo, que mas que nada sirven para mejorar la legibilidad del codigo, por ejemplo, no deben usarse identificadores de un tamao esceciso, como podria ser el siguiente: "VariableEnteraQueUsoComoContador", que muy bien, es muy descritivo y todo lo que se quiera, pero, por Dios, hay formas de, manteniendo la misma informacion, definir un identificador mas corto e igualmente legible, como puede ser "IntContador", ademas este identificador cumpliria las recomendaciones de MicroSoft suele recomendar y que suele denominarse Notacion Hungara, en honor a un programador ya fallecido de MicroSoft.
    Palabras Clave:
    Las palabras clave son aquellas utilizadas para determinar las construcciones del lenguaje Modula 2 y son:
    AND, ARRARY, BEGIN, BY, CASE, CONST, DEFINITION, DIV, DO, ELSE, ELSIF, END, EXIT, EXPORT, FOR, FROM, IF, IMPLEMENTATION, IMPORT, IN, LOOP, MOD, MODULE, NOT, OF, OR, POINTER, P ROCEDURE, QUALIFIED, RECORD, REPEAT, RETURN, SET, THEN, TO, TYPE, UNTIL, VAR, WHILE, WITH.
    Identificadores Predefinidos:
    En Modula 2, al igual que otros muchos lenguajes, tiene elementos de uso tan frecuente que se ha considerado conveniente tenerlos disponibles en cualqueir porograma sin necesidad de declararlos explicitamente. El compilador reconoce una serie de indentificadores predefinidos. La lista completa es:
    ABS, BITSET, BOOLEAN, CAP, CARDINAL, CHAR, CHR, DEC, EXCL, FALSE, FLOAT, HALT, HIGH, INC, INCL, INTEGER, LONGINT, LONGREAL, MAX, MIN, NIL, ODD, ORD, PROC, REAL, SIZE, TRUE, TRUNC, VAL.
    Bueno, con identificadores predefinidos llegue al final deste tema, el proximo tratara de las estructuras de control y repeticion del lenguaje Modula 2. Alguno echara en falta que no haya tocado nada de C/C++ como hice en el tema anterior, y en verdad si que lo habia puesto, pero complico el tema mucho mas de lo deseable y decidi borrar esos elementos, ademas de reescribir una parte (especialmente las refentes a funciones basicas). Es posible que haga un pequeo apendice del tema con las equivalencias a C/C++, pero no prometo nada.

    Hasta la proxima.
    iberhack@gmail.com
    He conocido muchos dioses. Quien niegue su existencia est tan ciego como el que confa en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
    Citar  
     

  2. #2  
    Iniciado
    Fecha de ingreso
    Jul 2007
    Ubicacin
    En la playa :)
    Mensajes
    48
    Descargas
    0
    Uploads
    0
    Muy bueno el tutorial, espero que pongas el apendice para aprender C, C++, hay algun programa para programar en Modula 2 para OS X?.
    Aquello que no ha sido elegido por no nostros no podemos considerarlo ni como merito ni como fracaso.
    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Nov 2007
    Mensajes
    1
    Descargas
    0
    Uploads
    0
    Me parece muy bue material el que dictas habra algun libro donde ampliar los conceptos
    Citar  
     

  4. #4  
    Colaborador HH
    Fecha de ingreso
    Jun 2006
    Ubicacin
    Uruguay
    Mensajes
    1.450
    Descargas
    11
    Uploads
    0
    surfman, eso de "programa para programar" se llama IDE - entorno de desarrollo -
    Y en realidad lo nico que hace es colorear los comandos y las palabras reservadas, para que quede ms lindo y entendible.
    ahh y te trae un boton para compilar todo junto sin comandos eso s es bueno..
    Pero.. pods programar en modula con el block de notas o con gedit

    Para MAC no hay compilador pero s para GNU/Linux, son compatibles los binarios ? en freebsd s :S

    Aqui podes bajarte todo http://www.excelsior-usa.com/xdsdl.html

    ---
    k3nsh1n, existe un libro llamdo "Programming in Modula2", escrito por Wirth, pero usa el estandar pim en ese libro

    Saludos,
    Cypress
    ltima edicin por Cypress; 11-11-2007 a las 04:40
    Louis Armstrong le dice a Ella Fitzgerald
    "take another drink of wine, and maybe you change your mind"
    Citar  
     

Temas similares

  1. Introducin a la programacin estructurada (Modula 2)
    Por gondar_f en el foro PROGRAMACION DESKTOP
    Respuestas: 13
    ltimo mensaje: 11-08-2011, 15:22
  2. Nuevo capitulo de Mundo Hacker TV
    Por clarinetista en el foro CIBERACTIVISMO
    Respuestas: 2
    ltimo mensaje: 07-06-2011, 03:25
  3. Introduccion a los VIRUS
    Por Esperpentor en el foro GENERAL
    Respuestas: 1
    ltimo mensaje: 27-08-2007, 18:01
  4. introduccion al batch
    Por das090 en el foro GENERAL
    Respuestas: 1
    ltimo mensaje: 19-12-2005, 03:19
  5. Introduccion
    Por SxR en el foro DIGITAL+
    Respuestas: 3
    ltimo mensaje: 01-12-2004, 11:24

Marcadores

Marcadores

Permisos de publicacin

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •