Difference between revisions of "Basic Pascal Tutorial/Chapter 1/Variables and Data Types/es"

From Lazarus wiki
Jump to navigationJump to search
(New page: 1D - Tipos de Datos y de variables (autor: Tao Yue, estado: ''cambiado'')    Las variables son similares a las constantes, pero sus valores pueden ser cambiados durante la ...)
 
Line 20: Line 20:
 
   Más información sobre los  tipos de datos de Pascal:
 
   Más información sobre los  tipos de datos de Pascal:
  
* The '''integer''' data type can contain integers from <tt>-32768</tt> to <tt>32767</tt>. This is the signed range that can be stored in a 16-bit word, and is a legacy of the era when 16-bit CPUs were common. For backward compatibility purposes, a 32-bit signed integer is a longint and can hold a much greater range of values.
+
* El tipo '''integer''' puede contener valores enteros desde <tt>-32768</tt> hasta <tt>32767</tt>. Este es el rango de valores con signo que puede ser almacenado en una palabra de 16 bits, y es herencia de la época en que las CPUs de 16 bits eran comunes. Por compatibilidad con versiones anteriores, un entero de 32 bits con signo es un entero largo ('''longint''') y puede almacenar una gama mucho mayor de los valores.
* The '''real''' data type has a range from <tt>3.4x10<sup>-38</sup></tt> to <tt>3.4x10<sup>38</sup></tt>, in addition to the same range on the negative side. Real values are stored inside the computer similarly to scientific notation, with a mantissa and exponent, with some complications. In Pascal, you can express real values in your code in either fixed-point notation or in scientific notation, with the character <tt>E</tt> separating the mantissa from the exponent. Thus, <tt>452.13</tt> is the same as <tt>4.5213e2</tt>
+
* El tipo '''real''' tiene un rango desde <tt>3.4x10<sup>-38</sup></tt> hasta <tt>3.4x10<sup>38</sup></tt>, además del mismo rango para números negativos. Los valores reales se almacenan en la computadora de manera similar a la notación científica, con una mantisa y exponente, con algunas complicaciones. En Pascal, se pueden expresar los valores reales en el código en la notación de punto fijo o en notación científica, con el carácter <tt>E</tt> separando la mantisa del exponente. Por lo tanto <tt>452.13</tt> es lo mismo que <tt>4.5213e2</tt>.
* The '''char''' data type holds characters. Be sure to enclose them in single quotes, like so: <tt>'a' 'B' '+'</tt> Standard Pascal uses 8-bit characters, not 16-bits, so Unicode, which is used to represent all the world's language sets in one UNIfied CODE system, is not supported.
+
* El tipo '''char''' contiene caracteres. Asegúrate de incluirlos entre comillas simples, así: <tt> 'a' 'B' '+'</tt> El Pascal estándar utiliza caracteres de 8 bits, no de 16 bits, de modo que Unicode, que se utiliza para representar en todos los conjuntos de caracteres de los idiomas del mundo  en un sistema de Código Unificado, no está soportado.
* The '''WideChar''' is a two-byte character (an element of a DBCS: Double Byte Character Set) and can hold a unicode character.
+
* El tipo '''WideChar''' es un carácter de dos octetos (un elemento de un DBCS: Double Byte Character Set -conjunto de caracteres de dos bytes-) y puede contener un carácter Unicode.
* Free Pascal supports the Delphi implementation of the '''PChar''' type. PChar is defined as a pointer to a Char type, but allows additional operations. The PChar type can be understood best as the Pascal equivalent of a C-style null-terminated string, i.e. a variable of type PChar is a pointer that points to an array of type Char, which is ended by a null-character (#0). Free Pascal supports initializing of PChar typed constants, or a direct assignment. For example, the following pieces of code are equivalent:  
+
* Free Pascal soporta la implementación de Delphi del tipo '''PChar'''. PChar se define como un puntero a un tipo Char, pero permite operaciones adicionales. El tipo PChar puede ser mejor entendido como el equivalente Pascal de una cadena C terminada en nulo, es decir, una variable de tipo PChar es un puntero que apunta a una matriz de tipo Char, que se termina por un carácter nulo (#0). Free Pascal soporta la inicialización de constantes con tipo PChar, o una asignación directa. Por ejemplo, los trozos de código siguientes son equivalentes:  
* Free Pascal supports the '''String''' type as it is defined in Turbo Pascal: a sequence of characters with an optional size specification. It also supports ansistrings (with unlimited length) as in Delphi. And can be declared as:
+
<delphi> </delphi>
 +
* Free Pascal soporta el tipo '''String''' tal como se define en Turbo Pascal: una secuencia de caracteres con una especificación de tamaño opcional. También es compatible con ansistrings (con longitud ilimitada) como en Delphi. Y pueden ser declarados así:
 
<delphi> variable_nombre : string;                    // si no se especifica la longitud, el valor predeterminado será 255
 
<delphi> variable_nombre : string;                    // si no se especifica la longitud, el valor predeterminado será 255
 
  variable_nombre : string[longitud];          // donde:  1 < longitud <= 255 </delphi>
 
  variable_nombre : string[longitud];          // donde:  1 < longitud <= 255 </delphi>
* The predefined type '''ShortString''' is defined as a string of size 255.
+
* El tipo predefinido '''ShortString''' está definido como una cadena de tamaño 255.
* '''AnsiStrings''' are strings that have no length limit. They are reference counted and are guaranteed to be null terminated. Internally, an ansistring is treated as a pointer: the actual content of the string is stored on the heap, as much memory as needed to store the string content is allocated.
+
* '''AnsiStrings''' son cadenas que no tienen límite de longitud. Dsipone de un contador de referencias y está garantizado para terminar en un valor nulo. Internamente, un AnsiString se trata como un puntero: el contenido real de la cadena se almacena en el montón, y tanta memoria como sea necesaria para almacenar el contenido de la cadena se asignará.
* '''Widestrings''' (used to represent unicode character strings) are implemented in much the same way as ansistrings: reference counted, null-terminated arrays, only they are implemented as arrays of <tt>WideChars</tt> instead of regular <tt>Chars</tt>.  
+
* '''Widestrings''' (utilizada para representar cadenas de caracteres Unicode) se implementan en la misma forma que ansistrings: un contador de referencias, terminada en matrices nulas, sólo que se implementan como matrices de <tt>WideChars </tt> en lugar de <tt>Chars</tt> normales.
* The '''boolean''' data type can have only two values: '''TRUE''' and '''FALSE'''
+
* El tipo '''boolean''' (lógico o booleano) sólo puede tener dos valores: '''true''' y '''false'''
  
 
&nbsp;&nbsp;&nbsp;Un ejemplo de declaración de varias variables es:
 
&nbsp;&nbsp;&nbsp;Un ejemplo de declaración de varias variables es:

Revision as of 20:10, 12 January 2011

1D - Tipos de Datos y de variables (autor: Tao Yue, estado: cambiado)

   Las variables son similares a las constantes, pero sus valores pueden ser cambiados durante la ejecución del programa. Las variables deben ser declaradas en Pascal antes de poder ser utilizadas: <delphi> var

 ListaIdentificadores1 : TipoDato1;
 ListaIdentificadores2 : TipoDato2;
 ListaIdentificadores3 : TipoDato3;
 ...</delphi>

   Donde ListaIdentificadores es una serie de identificadores, separados por comas (,). Todos los identificadores en la lista se declaran como del mismo tipo de datos.

   Los tipos de datos básicos en Pascal incluyen:

  • integer (entero)
  • real
  • char (un byte, un carácter)
  • boolean (lógico: verdadero -true- o falso -false-)

   El Pascal estándar no prevé nada para el tipo de datos de cadena de caracteres, pero los compiladores más modernos si lo hacen. Programadores Pascal avanzados utilizan punteros para la asignación dinámica de memoria, objetos para la programación orientada a objetos, y muchos otros, pero esto te ayudará a comenzar

   Más información sobre los tipos de datos de Pascal:

  • El tipo integer puede contener valores enteros desde -32768 hasta 32767. Este es el rango de valores con signo que puede ser almacenado en una palabra de 16 bits, y es herencia de la época en que las CPUs de 16 bits eran comunes. Por compatibilidad con versiones anteriores, un entero de 32 bits con signo es un entero largo (longint) y puede almacenar una gama mucho mayor de los valores.
  • El tipo real tiene un rango desde 3.4x10-38 hasta 3.4x1038, además del mismo rango para números negativos. Los valores reales se almacenan en la computadora de manera similar a la notación científica, con una mantisa y exponente, con algunas complicaciones. En Pascal, se pueden expresar los valores reales en el código en la notación de punto fijo o en notación científica, con el carácter E separando la mantisa del exponente. Por lo tanto 452.13 es lo mismo que 4.5213e2.
  • El tipo char contiene caracteres. Asegúrate de incluirlos entre comillas simples, así: 'a' 'B' '+' El Pascal estándar utiliza caracteres de 8 bits, no de 16 bits, de modo que Unicode, que se utiliza para representar en todos los conjuntos de caracteres de los idiomas del mundo en un sistema de Código Unificado, no está soportado.
  • El tipo WideChar es un carácter de dos octetos (un elemento de un DBCS: Double Byte Character Set -conjunto de caracteres de dos bytes-) y puede contener un carácter Unicode.
  • Free Pascal soporta la implementación de Delphi del tipo PChar. PChar se define como un puntero a un tipo Char, pero permite operaciones adicionales. El tipo PChar puede ser mejor entendido como el equivalente Pascal de una cadena C terminada en nulo, es decir, una variable de tipo PChar es un puntero que apunta a una matriz de tipo Char, que se termina por un carácter nulo (#0). Free Pascal soporta la inicialización de constantes con tipo PChar, o una asignación directa. Por ejemplo, los trozos de código siguientes son equivalentes:

<delphi> </delphi>

  • Free Pascal soporta el tipo String tal como se define en Turbo Pascal: una secuencia de caracteres con una especificación de tamaño opcional. También es compatible con ansistrings (con longitud ilimitada) como en Delphi. Y pueden ser declarados así:

<delphi> variable_nombre : string; // si no se especifica la longitud, el valor predeterminado será 255

variable_nombre : string[longitud];          // donde:  1 < longitud <= 255 </delphi>
  • El tipo predefinido ShortString está definido como una cadena de tamaño 255.
  • AnsiStrings son cadenas que no tienen límite de longitud. Dsipone de un contador de referencias y está garantizado para terminar en un valor nulo. Internamente, un AnsiString se trata como un puntero: el contenido real de la cadena se almacena en el montón, y tanta memoria como sea necesaria para almacenar el contenido de la cadena se asignará.
  • Widestrings (utilizada para representar cadenas de caracteres Unicode) se implementan en la misma forma que ansistrings: un contador de referencias, terminada en matrices nulas, sólo que se implementan como matrices de WideChars en lugar de Chars normales.
  • El tipo boolean (lógico o booleano) sólo puede tener dos valores: true y false

   Un ejemplo de declaración de varias variables es: <delphi> var

 edad, anyo, grado : integer;
 circunferencia : real;
 GradoObtenido : char;
 Aprobado: Boolean;</delphi>

   Del manual de FPC

Tipos enteros
Tipo Rango Bytes
Byte 0 .. 255 1
Shortint -128 .. 127 1
Smallint -32768 .. 32767 2
Word 0 .. 65535 2
Integer smallint o longint 2 o 4
Cardinal longword 4
Longint -2147483648 .. 2147483647 4
Longword 0..4294967295 4
Int64 -9223372036854775808 .. 9223372036854775807 8
QWord 0 .. 18446744073709551615 8

   Free Pascal realiza una conversión automática de tipos si en las expresiones se utilizan diferentes tipos de enteros .

Tipos real
Tipo Rango dígitos significativos Bytes
Real depende de la plataforma ??? 4 or 8
Single 1.5E-45 .. 3.4E38 7-8 4
Double 5.0E-324 .. 1.7E308 15-16 8
Extended 1.9E-4932 .. 1.1E4932 19-20 10
Comp -2E64+1 .. 2E63-1 19-20 8
Currency -922337203685477.5808 922337203685477.5807 8


Tipos lógicos (boolean)
Tipo Bytes Ord(True)
Boolean 1 1
ByteBool 1 Valor distinto de cero
WordBool 2 Valor distinto de cero
LongBool 4 Valor distinto de cero
previo índice siguiente