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

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Variables_and_Data_Types}} 1D - Variables et types de donnée Variables are similar to constants, but their values can be changed as the program runs. Variables must first...")
 
m (Text replacement - "Object Pascal Tutorial" to "Basic Pascal Tutorial")
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Variables_and_Data_Types}}
+
{{Variables and Data Types}}
  
1D - Variables et types de donnée
+
[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Bases / '''Variables et types de données'''
  
Variables are similar to constants, but their values can be changed as the program runs. Variables must first be declared in Pascal before they can be used:
+
Les variables sont similaires aux constantes mais leurs valeurs peuvent changer pendant que le programme fonctionne. Les variables doivent d'abord être déclarées avant de pouvoir être utilisées :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   IdentifierList1 : DataType1;
 
   IdentifierList1 : DataType1;
Line 11: Line 11:
 
   ...  
 
   ...  
 
</syntaxhighlight>
 
</syntaxhighlight>
<tt>IdentifierList</tt> is a series of identifiers, separated by commas (<tt>,</tt>). All identifiers in the list are declared as being of the same data type.
+
<code>IdentifierList</code> est une série d'identificateurs, séparés par des virgules (<code>,</code>). Tous les identificateurs dans une liste sont déclarés comme étant du même type.
  
The basic data types in Pascal include:
+
Les types de donnée de base dans Pascal incluent :
 +
* les entiers (''integer'') ;
 +
* les réels (''real'') ;
 +
* les caractères (''char'') ;
 +
* les booléens (''boolean'').
  
* integer
+
Le Pascal standard ne prévoit pas de type chaine mais les compilateurs modernes le font. Les développeurs Pascal expérimentés utilise aussi des pointeurs pour l'allocation dynamique de mémoire, les objets pour la programmation orientée objet et d'autres choses ; mais vous êtes ici pour débuter.
* real
 
* char
 
* boolean
 
  
Standard Pascal does not make provision for the string data type, but most modern compilers do. Experienced Pascal programmers also use pointers for dynamic memory allocation, objects for object-oriented programming, and many others, but this gets you started.
+
Plus d'informations sur les types de données de Pascal :
  
More information on Pascal data types:
+
* Le type '''integer''' peut contenir des entiers de <tt>-32768</tt> à <tt>32767</tt>. C'est une plage signée qui peut être contenue dans un un mot de 16 bits, c'est un héritage de l'époque où les CPU 16 bits étaient communes. En raison de la compatibilité descendante, un entier signé sur 32 bits est un longint et peut manier une plage de valeurs supérieure.
 
+
* Le type de donnée '''real''' a une plage de <tt>3.4x10<sup>-38</sup></tt> à <tt>3.4x10<sup>38</sup></tt>, en plus de la même plage sur le côté négatif et de 0. Les valeurs réelles sont stockées dans l'ordinateur de manière similaire à la notation scientifique, avec une mantisse et un exposant, avec quelques complications. Dans Pascal, vous pouvez exprimer les valeurs réelles soit en notation à virgule fixe soit en notation scientifique avec le caractère <tt>E</tt> séparant la mantisse de l'exposant. Ainsi, <tt>452.13</tt> est la même chose que <tt>4.5213e2</tt>.
* 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.
+
* Le type de donnée '''char''' contient les caractères. Assurez-vous de les délimiter par des guillemets, comme ici : <tt>'a' 'B' '+'</tt> le Pascal standard utilise des caractères sur 8 bits, non des 16 bits comme Unicode, utilisé pour représenter tous les jeux de caractères dans un système de code unifié, qui n'est pas supporté.
* 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>
+
* Le '''WideChar''' est un caractère sur 2 octets (un élément du jeu de caractère à double octet) et peut contenir un caractère unicode.
* 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.
+
* Free Pascal supporte l'implémentation du type '''PChar'''. PChar est défini comme un pointeur vers un type Char, mais permet des opérations supplémentaires. Le type PChar peut être mieux compris comme une chaîne à zéro terminal comme en C, i.e. une variable PChar est un pointeur sur un tableau de type Char qui se termine par un caractère nul (#0). Free Pascal autorise l'initialisation des constantes typées PChar ou l'affectation directe. Par exemple, les morceaux de code suivants sont équivalents :
* The '''WideChar''' is a two-byte character (an element of a DBCS: Double Byte Character Set) and can hold a unicode character.
+
<syntaxhighlight lang=pascal>
* 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:  
+
program one;
* 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:
+
var P : PChar;
<syntaxhighlight>
+
begin
 +
  P := 'This is a null-terminated string.';
 +
  WriteLn (P);
 +
end.
 +
</syntaxhighlight>
 +
<syntaxhighlight lang=pascal>
 +
program two;
 +
const P : PChar = 'This is a null-terminated string.';
 +
begin
 +
  WriteLn (P);
 +
end.
 +
</syntaxhighlight>
 +
* Free Pascal supporte les types '''String''' comme définis dans Turbo Pascal : une suite de caractères avec une spécification de taille optionnelle (à la déclaration). Il supporte aussi les AnsiString (de taille illimitée) comme dans Delphi et peuvent être déclarées comme :
 +
<syntaxhighlight lang=pascal>
 
variable_name : string;                    // if no length is given, it defaults to 255
 
variable_name : string;                    // if no length is given, it defaults to 255
 
variable_name : string[length];            // where:  1 < length <= 255
 
variable_name : string[length];            // where:  1 < length <= 255
 
</syntaxhighlight>
 
</syntaxhighlight>
* The predefined type '''ShortString''' is defined as a string of size 255.
+
* Le type prédéfini '''ShortString''' est défini comme étant une chaîne de taille 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.
+
* Les '''AnsiString''' sont des chaînes de taille illimitée. Elles sont munies du comptage de références et sont garanties à zéro terminal. En interne, une AnsiString est traitée comme un pointeur : le contenu réel de la chaîne est stocké dans le tas, il est alloué autant de mémoire que nécessaire pour stocker son contenu.
* '''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>.  
+
* '''Widestring''' (utilisé pour représenter des chaînes de caractères unicode) sont implémentées de manière proche des AnsiString : comptage de référence, tableaux à zéro terminal, seulement elles sont implémentées comme des tableaux de <tt>WideChar</tt> au lieu de <tt>Char</tt>.
* The '''boolean''' data type can have only two values: '''TRUE''' and '''FALSE'''
+
* Le type de donnée '''boolean''' ne peut avoir que deux valeurs : '''TRUE''' ou '''FALSE'''.
  
An example of declaring several variables is:
+
Un exemple de déclaration de plusieurs variables est :
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   age, year, grade : integer;
 
   age, year, grade : integer;
Line 48: Line 62:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''From the FPC manual'''
+
'''Obtenu du manuel de FPC'''
  
 
{| style="background-color:#f5f5f5" cellspacing=5
 
{| style="background-color:#f5f5f5" cellspacing=5
|+'''integer types'''
+
|+'''Types entiers'''
!Type !!align="center"|Range !!Bytes
+
!Type !!align="center"|Plage !!Octets
 
|-
 
|-
 
|Byte ||align="center"| 0 .. 255 || 1
 
|Byte ||align="center"| 0 .. 255 || 1
Line 74: Line 88:
 
|QWord ||align="center"|0 .. 18446744073709551615 ||8
 
|QWord ||align="center"|0 .. 18446744073709551615 ||8
 
|}
 
|}
Free Pascal does automatic type conversion in expressions where different kinds of integer types are used.  
+
Free Pascal effectue une conversion de type automatique dans les expressions dans lesquelles plusieurs types entiers sont utilisés.
  
 
{| style="background-color:#f5f5f5" cellspacing=5
 
{| style="background-color:#f5f5f5" cellspacing=5
|+'''real types'''
+
|+'''Types réels'''
!Type !!align="center"|Range !!Significant digits !!Bytes
+
!Type !!align="center"|Plage !!Chiffres significatifs !!Octets
 
|-
 
|-
 
|Real ||align="center"|platform dependent ||align="center"|??? ||4 or 8
 
|Real ||align="center"|platform dependent ||align="center"|??? ||4 or 8
Line 95: Line 109:
  
 
{| style="background-color:#f5f5f5" cellspacing=5
 
{| style="background-color:#f5f5f5" cellspacing=5
|+'''boolean types'''
+
|+'''Types booléens'''
!Type !! Bytes !! Ord(True)  
+
!Type !! Octets !! Ord(True)  
 
|-
 
|-
 
|Boolean ||align="center"|1 ||1
 
|Boolean ||align="center"|1 ||1
 
|-
 
|-
|ByteBool ||align="center"|1 ||Any nonzero value
+
|ByteBool ||align="center"|1 ||Toute valeur non nulle
 
|-
 
|-
|WordBool ||align="center"|2 ||Any nonzero value
+
|WordBool ||align="center"|2 ||Toute valeur non nulle
 
|-
 
|-
|LongBool ||align="center"|4 ||Any nonzero value
+
|LongBool ||align="center"|4 ||Toute valeur non nulle
|}
 
 
 
{|style=color-backgroud="white" cellspacing="20"
 
|[[Constants/fr|précédent]]
 
|[[Contents/fr|table des matières]]
 
|[[Assignment_and_Operations/fr|suivant]]
 
 
|}
 
|}
  
[[Category:Pascal]]
+
{{Tutorial page navigation/fr|Constants|Assignment and Operations}}
[[Category: Object Pascal Introduction]]
 

Revision as of 03:31, 29 March 2020

български (bg) Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) русский (ru) 中文(中国大陆)‎ (zh_CN)

Tutoriel de Pascal Objet : Bases / Variables et types de données

Les variables sont similaires aux constantes mais leurs valeurs peuvent changer pendant que le programme fonctionne. Les variables doivent d'abord être déclarées avant de pouvoir être utilisées :

var
  IdentifierList1 : DataType1;
  IdentifierList2 : DataType2;
  IdentifierList3 : DataType3;
  ...

IdentifierList est une série d'identificateurs, séparés par des virgules (,). Tous les identificateurs dans une liste sont déclarés comme étant du même type.

Les types de donnée de base dans Pascal incluent :

  • les entiers (integer) ;
  • les réels (real) ;
  • les caractères (char) ;
  • les booléens (boolean).

Le Pascal standard ne prévoit pas de type chaine mais les compilateurs modernes le font. Les développeurs Pascal expérimentés utilise aussi des pointeurs pour l'allocation dynamique de mémoire, les objets pour la programmation orientée objet et d'autres choses ; mais vous êtes ici pour débuter.

Plus d'informations sur les types de données de Pascal :

  • Le type integer peut contenir des entiers de -32768 à 32767. C'est une plage signée qui peut être contenue dans un un mot de 16 bits, c'est un héritage de l'époque où les CPU 16 bits étaient communes. En raison de la compatibilité descendante, un entier signé sur 32 bits est un longint et peut manier une plage de valeurs supérieure.
  • Le type de donnée real a une plage de 3.4x10-38 à 3.4x1038, en plus de la même plage sur le côté négatif et de 0. Les valeurs réelles sont stockées dans l'ordinateur de manière similaire à la notation scientifique, avec une mantisse et un exposant, avec quelques complications. Dans Pascal, vous pouvez exprimer les valeurs réelles soit en notation à virgule fixe soit en notation scientifique avec le caractère E séparant la mantisse de l'exposant. Ainsi, 452.13 est la même chose que 4.5213e2.
  • Le type de donnée char contient les caractères. Assurez-vous de les délimiter par des guillemets, comme ici : 'a' 'B' '+' le Pascal standard utilise des caractères sur 8 bits, non des 16 bits comme Unicode, utilisé pour représenter tous les jeux de caractères dans un système de code unifié, qui n'est pas supporté.
  • Le WideChar est un caractère sur 2 octets (un élément du jeu de caractère à double octet) et peut contenir un caractère unicode.
  • Free Pascal supporte l'implémentation du type PChar. PChar est défini comme un pointeur vers un type Char, mais permet des opérations supplémentaires. Le type PChar peut être mieux compris comme une chaîne à zéro terminal comme en C, i.e. une variable PChar est un pointeur sur un tableau de type Char qui se termine par un caractère nul (#0). Free Pascal autorise l'initialisation des constantes typées PChar ou l'affectation directe. Par exemple, les morceaux de code suivants sont équivalents :
program one;
var P : PChar;
begin
  P := 'This is a null-terminated string.';
  WriteLn (P);
end.
program two;
const P : PChar = 'This is a null-terminated string.';
begin
  WriteLn (P);
end.
  • Free Pascal supporte les types String comme définis dans Turbo Pascal : une suite de caractères avec une spécification de taille optionnelle (à la déclaration). Il supporte aussi les AnsiString (de taille illimitée) comme dans Delphi et peuvent être déclarées comme :
variable_name : string;                    // if no length is given, it defaults to 255
variable_name : string[length];            // where:  1 < length <= 255
  • Le type prédéfini ShortString est défini comme étant une chaîne de taille 255.
  • Les AnsiString sont des chaînes de taille illimitée. Elles sont munies du comptage de références et sont garanties à zéro terminal. En interne, une AnsiString est traitée comme un pointeur : le contenu réel de la chaîne est stocké dans le tas, il est alloué autant de mémoire que nécessaire pour stocker son contenu.
  • Widestring (utilisé pour représenter des chaînes de caractères unicode) sont implémentées de manière proche des AnsiString : comptage de référence, tableaux à zéro terminal, seulement elles sont implémentées comme des tableaux de WideChar au lieu de Char.
  • Le type de donnée boolean ne peut avoir que deux valeurs : TRUE ou FALSE.

Un exemple de déclaration de plusieurs variables est :

var
  age, year, grade : integer;
  circumference : real;
  LetterGrade : char;
  DidYouFail : Boolean;

Obtenu du manuel de FPC

Types entiers
Type Plage Octets
Byte 0 .. 255 1
Shortint -128 .. 127 1
Smallint -32768 .. 32767 2
Word 0 .. 65535 2
Integer smallint or longint 2 or 4
Cardinal longword 4
Longint -2147483648 .. 2147483647 4
Longword 0..4294967295 4
Int64 -9223372036854775808 .. 9223372036854775807 8
QWord 0 .. 18446744073709551615 8

Free Pascal effectue une conversion de type automatique dans les expressions dans lesquelles plusieurs types entiers sont utilisés.

Types réels
Type Plage Chiffres significatifs Octets
Real platform dependent ??? 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


Types booléens
Type Octets Ord(True)
Boolean 1 1
ByteBool 1 Toute valeur non nulle
WordBool 2 Toute valeur non nulle
LongBool 4 Toute valeur non nulle
Sommaire