Données et types de données
Les données sont le nom donné aux informations que votre programme utilise pour résoudre une tâche particulière. Par exemple, un programme conçu pour afficher une simple liste de diffusion peut traiter des éléments de données tels que des noms et des codes postaux. Un coup d'oeil à la sortie du programme devrait suffire pour vous dire que la liste est affichée sous forme d'étiquettes d'adresse.
Malheureusement, alors que vous pouvez reconnaître l'utilisation prévue des noms et des codes postaux à partir de leur contexte, l'ordinateur ne voit qu'une longue série de uns et de zéros. Par lui-même, l'ordinateur ne peut pas déterminer combien de bits doivent être combinés dans un seul champ. Il est également incapable de déterminer comment le champ doit être interprété et utilisé. Par exemple, il faut dire à l'ordinateur si le champ est un nombre ou un caractère : vous ne voudriez pas que le programme de liste de diffusion prenne la racine carrée d'un nom de famille ou qu'il mette en majuscule un code postal. Le type d'un élément de données détermine comment les données peuvent être utilisées.
Types de données numériques
Les nombres sont un territoire familier pour la plupart des gens. Nous pouvons généralement reconnaître un nombre - toute combinaison valide de chiffres, de signes plus et moins et de points décimaux - lorsque nous en voyons un. Dans notre expérience quotidienne, cependant, nous faisons des distinctions subtiles entre différents nombres en fonction de la façon dont ils sont le plus souvent appliqués. L'une des différences les plus fondamentales se situe entre les nombres entiers et les nombres contenant des décimales.
Le QuickPascal reflète ces catégories en offrant deux types de données numériques, les types de données entiers représentent des nombres entiers et peuvent être positifs, négatifs ou zéro. Les types de données Real (réels) sont utilisés pour tous les nombres contenant une virgule décimale. Une valeur entière est exacte alors qu'une valeur réelle est approximative. (En fait, un nombre réel peut être exact, bien que le type de données Real puisse ne pas le représenter exactement.) Des nombres tels que 1776, 29028 et -1 sont des nombres entiers ; 3,14159, 98,6 et -459,7, sont des réels. Vous pouvez effectuer des opérations mathématiques avec les deux catégories de nombres.
Entiers
Le mot entier fait référence à la fois à une catégorie de types de données et à un type de données spécifique. Le microprocesseur de la famille 8086 gère les informations via ses registres 16 bits et son bus de données (32 bits pour le 80386). Cela signifie que chaque fois qu'un élément de données est lu (ou écrit dans) la mémoire, il est déplacé par morceaux de 16 bits. Par conséquent, si un nombre peut être représenté sur 16 bits ou moins, il peut être accédé et manipulé plus rapidement par le microprocesseur.
Le QuickPascal offre une variété de types de données entiers entreposant des informations dans des formats 8, 16 et 32 bits (chaque bit correspond à un chiffre dans un nombre binaire). Il existe cinq types d'entiers : Byte, ShortInt, Integer, Word et LongInt. Comme le montre le tableau suivant, chaque type peut accueillir un intervalle unique de valeurs dans 1, 2 ou 4 octets d'entreposage :
Type | Taille | Intervalle de valeurs autorisées |
---|---|---|
Byte | 1 octet | 0 à +255 |
ShortInt | 1 octet | -128 à +127 |
Integer | 2 octets | -32 768 à +32 767 |
Word | 2 octets | 0 à +65 535 |
LongInt | 4 octets | -2 147 483 648 à +2 147 483 647 |
Le type de données le plus approprié à utiliser pour votre application dépend de l'intervalle de valeurs possible dans une variable particulière. En général, sélectionnez le type de données ayant utilisé la plus petite quantité d'entreposage pour une intervalle de valeurs donnée.
En raison de sa plus grande taille, LongInt peut sembler être le type entier idéal pour toutes les situations. Cependant, travailler avec son format à 4 octets nécessite un temps de traitement plus long sur une machine typique de 8 ou 16 bits. Vous ne devez donc utiliser LongInt que lorsqu'aucun des autres types d'entiers ne convient.
Écriture de valeurs entières
La façon la plus courante d'écrire un nombre entier est une série de chiffres éventuellement précédés d'un signe plus ou moins. Utilise un signe moins si le nombre est négatif ; sinon, le QuickKPascal suppose que le nombre est positif. N'incluez pas de virgules et d'espaces avec le nombre.
Vous pouvez également écrire des nombres entiers au format hexadécimal en utilisant le signe dollar en tête. Par exemple, $10 hexadécimaux est équivalent à 16 décimales, mais 10 est simplement 10 décimal. Les lettres A, B, C, D, E et F (ou a, b, c, d, e et f) correspondent respectivement aux nombres décimaux 10, 11, 12, 13, 14 et 15.
Dans QuickPascal, les hexadécimaux sont toujours supposés représenter des entiers positifs plutôt que les modèles de bits sous-jacents. Par exemple, la valeur $FF (égale à la décimale 255) peut être affectée à une variable déclarée comme un Byte, mais ne peut pas être affectée à un ShortInt. Les hexadécimaux sont absolument équivalents à leurs homologues décimaux et peuvent être utilisés partout où les valeurs décimales sont autorisées.
Affichage des nombres entiers
Bien que d'habitude on utilise qu'un seul paramètre dans une instruction Write ou WriteLn, il est possible d'en mettre plusieurs. Ainsi, cela fonctionne bien lorsque vous voulez plusieurs nombres les uns à côté des autres. Le programme suivant affiche 6 entiers :
Le programme du programme OUTINT produit le groupe de chiffres suivant :
24681012Évidemment, un peu de formatage serait bénéfique dans cette situation. Heureusement, Write et WriteLn permettent de spécifier le formatage en ajoutant : W (largeur) à la fin de chaque paramètre, où W représente le minimum autorisé pour afficher la donnée. Nous pouvons alors réécrire l'exemple en tant que programme OUTINT2 (en utilisant 3 comme valeur pour :W) :
La sortie formatée de OUTINT2 est la suivante :
2 4 6 8 10 12Les procédures Write et WriteLn ne tronqueront jamais un paramètre numérique. Si un paramètre nécessite plus d'espace que spécifié par la valeur de W, W est remplacé et l'ensemble des paramètres est affiché dans le format par défaut.
Le signe utilisé avec :W est également significatif. Lorsque :W est positif, le champ est justifié à droite ; lorsqu'il est négatif, le champ est cadré à gauche, comme le montre le programme suivant :
Lorsque NForme s'exécute, il produit la sortie suivante :
1234567890100
1234567890
100
Utilisation d'entiers signés et non signés
Les types de données ShortInt et Integer sont appelés les formes signées de Byte et Word, respectivement, car chacun utilise son bit de poids fort pour indiquer le signe du nombre. Le bit est mis à 1 pour les nombres négatifs et à 0 pour les nombres positifs.
Étant donné que le bit de poids fort n'est pas considéré comme faisant partie du nombre lui-même, les nombres signés ont une plage positive plus petite que leurs homologues non signés. Plus précisément, les modèles de bits correspondant à 128 à 255 dans un nombre signé 8 bits et à 32 768 à 65 535 dans un nombre signé 16 bits sont interprétés par le compilateur comme des valeurs négatives. Par conséquent, le modèle binaire correspondant à +156 pour une variable déclarée comme un Byte est interprété comme -100 si la variable est un ShortInt, comme indiqué ici :
Dans le programme ShowNeg, Byte et ShortInt reçoivent la valeur +156. Chaque variable entrepose le modèle binaire identique (10011100) mais interprète différemment la signification de la valeur. Voici le résultat du programme :
Version Byte : 156Version ShorInt : -100
En d'autres termes, vous devez éviter de mélanger des valeurs signées et non signées dans la même expression.
Détermination des valeurs entières maximales
Bien qu'un octet soit toujours défini comme ayant une longueur de 8 bits, un mot correspond en fait à la taille des registres de l'ordinateur. Par conséquent, tous les ordinateurs n'ont pas la même longueur de mot. Sur tous les compatibles IBM PC, cependant, un mot est considéré comme étant de 16 bits.
À l'origine, un type de données Integer était simplement le plus grand ensemble de nombres entiers pouvant tenir dans le mot de l'ordinateur hôte. Dans QuickPascal, par exemple, un entier Integer est défini comme ayant une longueur de 16 bits. La valeur maximale d'un entier Integer de QuickPascal est donc de +32 767. D'autres ordinateurs - et d'autres compilateurs - peuvent avoir des intervalles assez différentes.
Sur la plupart des compilateurs Pascal, y compris le QuickPascal, vous pouvez connaître la plus grande valeur Integer prise en charge en examinant la constante prédéfinie MaxLongInt, contenant la plus grande valeur LongInt.
Le programme BigInt suivant montre comment ces valeurs peuvent être lues :
Lorsque BigInt s'exécute, il produit la sortie suivante :
MaxInt = 32767MaxLongInt = 2147483647
Nombres réels
Tous les nombres ne peuvent pas être représentés de manière adéquate avec des types de données entiers. Bien qu'un LongInt puisse confortablement contenir un nombre supérieur à deux milliards, il n'a toujours pas l'intervalle pour contenir la valeur actuelle de la dette nationale. De même, aucun nombre entier n'a la précision à deux décimales pour représenter avec précision la valeur nette (en dollars et en cents) de la tirelire d'un enfant.
Heureusement, les types de données réels de QuickPascal sont spécifiquement conçus pour gérer des nombres très grands, très petits ou très précis. Étant donné qu'un nombre réel est un nombre contenant une virgule décimale, des valeurs telles que 2.0, π et la racine carrée de 2 sont toutes des nombres réels, parfois appelés nombres à virgule flottante.
Les types de données réels pris en charge par QuickPascal sont résumés dans le tableau suivant. Chaque type de données offre une combinaison unique de taille d'entreposage, d'intervalle et de nombre de chiffres significatifs :
Type | Taille d'entreposage | Intervalles de valeurs autorisés | Chiffre significatif avec {$N-} | Chiffre significatif avec {$N+} |
---|---|---|---|---|
Real | 6 octets | 2,9x10-39 à 1,7x1038 | 11 ou 12 | 11 ou 12 |
Single | 4 octets | 1,5x10-45 à 3,4x1038 | 7 ou 8 | 7 ou 8 |
Double | 8 octets | 5,0x10-324 à 1,7x10308 | 15 ou 16 | 15 ou 16 |
Extended | 10 octets | 3,4x10-4951 à 1,1x104932 | 15 ou 16 | 19 ou 20 |
Comp | 8 octets | 9,2x1018 à 9,2x1018 | 15 ou 16 | 19 ou 20 |
Notez que la précision de chaque nombre réel dépend de l'activation ou non de la directive du compilateur $N.
Écrire des valeurs réels
Étant donné que les types de données réels sont conçus pour accueillir des nombres avec des valeurs fractionnaires, un nombre réel est généralement écrit avec un point décimal, devant apparaître entre deux chiffres. Par conséquent, les valeurs 54,40, 90,44 et 0,25 sont des nombres réels, mais 0, 4, 63 et 999 ne le sont pas.
Un nombre réel peut inclure un exposant positif ou négatif pour indiquer où le point décimal doit être déplacé. Ce format est similaire à la notation scientifique, sauf que la lettre "E" (ou "e") est utilisée à la place du symbole x10 (x 10 à la puissance de). Par conséquent, le nombre 7.6x104 peut être écrit 7.6E4, 7.6e4, 76.0E3 ou 0.76e5. De même, le nombre 3.4x10-4 peut être écrit sous la forme 3.4E-4, 3.4e-4, 34.0E-5 ou 0.34e-3.
Affichage des nombres réels
Par défaut, le QuickPascal affiche les nombres réels en notation scientifique, comme illustré dans le programme suivant :
Le programme RawStyle produit la sortie suivante :
1.23450000000000E+0004-4.30000000000000E+0006
-4.30000000000000E-0004
1.00000000000000E-0015
7.65000000000000E+0002
Heureusement, les procédures Write et WriteLn vous permettent de générer un affichage plus agréable en ajoutant le code de formatage :W:D à n'importe quelle valeur réelle. Comme précédemment, le champ W spécifie la largeur de sortie minimale souhaitée, y compris les décimales ; D spécifie le nombre réel de décimales que vous souhaitez afficher. W peut être positif ou négatif pour indiquer une justification à droite ou à gauche, respectivement.
Comme pour les éléments de données entiers, les procédures Write et WriteLn ne tronquent jamais une valeur réelle. Si le nombre à afficher est plus large que la largeur spécifiée, la valeur de W sera remplacée. Cependant, le nombre spécifié de décimales apparaîtra toujours, bien que la valeur puisse être arrondie au cours du processus. Le programme NewStyle démontre ces fonctionnalités :
- Program NewStyle;
- Const
- R_Type:Real=12345; { Assigne la valeur 12345.0 }
- S_Type:Single=-43e5;
- D_Type:Double=-43e-5;
- E_Type:Extended=0.000000000000001;
- C_Type:Comp=765.0;
-
- BEGIN
- WriteLn('123467890');
- WriteLn(R_Type:-10:2);
- WriteLn(S_Type:10:7);
- WriteLn(D_Type:10:7);
- WriteLn(E_Type:10:1);
- WriteLn(C_Type:0:0);
- END.
Le programme NewStyle produit la sortie suivante :
123456789012345.00
-4300000.0000000
-0.0004300
0.0
765
Ne vous inquiétez pas trop si vous ne pouvez pas prédire la taille finale d'un nombre que vous souhaitez afficher. Les paramètres de format par défaut sont idéaux dans de telles situations. Par exemple, :0:D affiche n'importe quelle valeur réelle avec D décimales mais sans espaces de début. De même, :W:0 affiche toute valeur réelle sous forme de nombre entier.
Entreposer des nombres réels
La plupart des programmeurs n'ont jamais besoin de connaître le format de données interne d'un nombre réel. Cependant, une connaissance générale de la disposition d'un nombre réel peut vous aider à comprendre comment, où, quand et pourquoi les nombres réels sont utilisés dans une application particulière.
Une comparaison rapide des deux tableaux précédents (entier et réel) montre que les types de données réels nécessitent plus d'espace d'entreposage que les entiers. C'est principalement parce que chaque élément de données réel contient en fait deux nombres : un nombre : une valeur numérique (communément appelée la mantisse) et un exposant. Un autre bit est réservé pour indiquer le signe de la mantisse. Par exemple, les trois composantes du nombre +2,5x108 sont constituées de la mantisse (2,5), de l'exposant (8) et du bit de signe (ici, 0 pour indiquer un nombre positif).
Les intervalles particulières indiquées dans le tableau de réels sont dues au fait que la mantisse et l'exposant sont entreposés sous forme binaire. En fait, la valeur entreposée comme mantisse est en fait le logarithme de la valeur numérique. Ainsi, pour le nombre +2,5x108, la mantisse est entreposée sous forme de logarithme de 2,5.
Parce que les éléments de données réels sont entreposés sous forme de logarithmes. le QuickPascal peut considérablement accélérer la multiplication et la division de nombres réels. (Rappelez-vous que les nombres peuvent être multipliés en ajoutant - et divisés en soustrayant - leurs logarithmes.) D'un autre côté, chaque fois que des nombres réels sont directement ajoutés ou soustraits, les valeurs individuelles doivent être converties sous forme décimale avant que l'addition ou la soustraction puisse se produire ; le résultat doit ensuite être reconverti en entreposage sous forme logarithmique.
Le logarithme de presque tous les nombres est une valeur irrationnelle. En d'autres termes, l'écriture de la valeur logarithmique exacte d'un nombre nécessite plus de chiffres que n'importe quel type de données de nombre réel est conçu pour contenir, comme le montre le programme suivant :
Lorsque le programme Precis s'exécute, il affiche les valeurs suivantes :
1.23456789000034E+000410000000000.00
Notez comment Test1 contient des chiffres supplémentaires produits par le processus d'arrondi. Notez également comment la valeur de Test2 est arrondie, même si le format sélectionné était suffisamment grand pour gérer confortablement sa valeur assignée. Les différences dans ces exemples sont minimes et, dans la plupart des cas, il est hautement improbable que des erreurs significatives se produisent.
En bref, bien que les nombres réels puissent être très précis dans un nombre spécifié de chiffres significatifs, un nombre réel n'est qu'une approximation. Lorsque vous devez travailler avec des quantités exactes, concevez votre programme pour qu'il utilise plutôt des nombres entiers.
L'intervalle des nombres réels
Le tableau de nombre réel précédent montre que la valeur entreposée dans un type de données Real peut aller de 2,9x10-39 à 1,7x1038. Sous forme décimale, la limite inférieure de cette intervalle, 2,9x10-39, est
0.0000000000000000000000000000000000000029Le nombre est peut-être petit, mais il est toujours positif. L'exposant négatif indique seulement que le nombre est un nombre décimal - pas que le nombre est inférieur à zéro.
N'oubliez pas que les types de données réels entreposent les valeurs sous forme de logarithmes. Étant donné que les logarithmes sont définis pour les nombres positifs uniquement, la mantisse entreposée est en fait le logarithme de la valeur absolue du nombre. La valeur du bit de signe indique le signe du nombre dans son ensemble. Vous devez interpréter les intervalles Real, Single, Double et Extended présentées dans le tableau réel précédent comme les valeurs absolues les plus petites à plus grandes pouvant être représentées par ces types. L'intervalle réelle du type Real est donc de -1,7x1038 à +1,7x1038. Le nombre 2.9x10-39 est simplement la plus petite valeur absolue non nulle qu'un Real peut contenir. (Bien que le logarithme de zéro ne soit pas défini, le QuickPascal peut entreposer un zéro en plaçant un zéro dans chaque octet de l'élément de données.)
La précision des nombres réels
En entreposant la mantisse et l'exposant en tant que valeurs séparées, le QuickPascal fournit un nombre réel avec un intervalle considérablement plus grande que n'importe quel entier. Une valeur Extended, par exemple, peut être aussi grande que 104932 (un 1 suivi de 4933 zéros).
De toute évidence, peu d'applications nécessiteraient une valeur aussi élevée. Encore moins vous obligeraient à entreposer et à manipuler deux nombres à 4933 chiffres. En fait, puisqu'il n'y a qu'environ 1080 atomes dans l'univers connu, il est difficile d'imaginer une application qui pourrait repousser les limites d'une valeur Extended.
Dans la plupart des applications impliquant de grands nombres, seules des valeurs approximatives sont requises. Par exemple, la distance moyenne entre la Terre et le Soleil en 93 millions de miles. Bien qu'il soit possible de déterminer cette distance au millimètre près, cette précision n'est probablement pas nécessaire pour la plupart des applications.
Le tableau de réel précédent résume la précision de chaque type de données réel en tant que nombre de chiffres significatifs d'exactitude garantie. Tous les chiffres supplémentaires seront perdus. Tant que vos calculs maintiennent l'exposant dans l'intervalle appropriée, l'élément de données aura toujours le bon ordre de grandeur.
Utiliser un coprocesseur mathématique
Chaque type de données réel nécessite plus d'espace d'entreposage que les registres de la taille d'un mot d'un ordinateur personnel ne peuvent en gérer à la fois. Par conséquent, chaque opération impliquant des nombres réels - des simples comparaisons aux calculs logarithmiques complexes - doit être décomposée en morceaux plus petits et effectuée en plusieurs étapes. En conséquence, même des instructions aussi courantes que l'addition et la multiplication prennent considérablement plus de temps pour les types de données réels que des processus similaires exécutés avec des nombres entiers.
Ce processus consistant à décomposer les types de données réels en plusieurs morceaux, à effectuer des opérations sur les composantes individuels, puis à combiner les valeurs intermédiaires pour produire un résultat final est appelé émulation logicielle. De même, lorsqu'on travaille avec des nombres réels, on dit que le microprocesseur émule une machine beaucoup plus grande.
La plus grande machine peut être n'importe quel membre de la famille 80x87 de puces de coprocesseur mathématiques, étant spécialement conçues pour gérer des opérations impliquant des types de données réels. Comme le registre d'un coprocesseur fait 10 octets, il peut traiter confortablement même des types de données Extended de 10 octets en une seule opération.
En plus d'améliorer la vitesse d'exécution, le coprocesseur offre une plus grande précision lorsque vous utilisez les types de données Comp et Extended. L'appel de l'option Numeric Processing augmente la précision garantie des éléments de données Comp et Extended de quatre chiffres significatifs :
Si vous envisagez de développer des applications reposant fortement sur des calculs à virgule flottante, vous devriez envisager d'investir dans un coprocesseur numérique. Cependant, même si un coprocesseur mathématique est installé sur votre ordinateur, le QuickPascal ne générera pas automatiquement le code machine nécessaire à son utilisation. Pour profiter d'un coprocesseur, le programme doit être compilé avec l'option Numeric Processing {$N+} activée. Le fichier exécutable résultant (.EXE) essaiera d'appeler le coprocesseur chaque fois qu'il rencontrera une instruction impliquant un ou plusieurs nombres réels. Si aucun coprocesseur n'est disponible, le programme se terminera avec un message d'erreur indiquant qu'un coprocesseur est requis.
Dans QuickPascal, l'émulation logicielle et le traitement numérique sont des options s'excluant mutuellement. Il n'est pas prévu qu'un programme d'exécution détecte la présence d'un coprocesseur et sélectionne automatiquement la routine la plus efficace. Vous ne devez activer l'option de traitement numérique que lorsque vous êtes certain que le programme s'exécutera toujours sur un ordinateur sur lequel un coprocesseur est installé.
Utilisation du type Comp
Le type de données Comp à 8 octets est un hybride d'entiers et de réels. Un élément de données Comp entrepose des valeurs entières exactes dans l'intervalle -263+1 à +263-1. En notation scientifique, cette intervalle correspond approximativement à -9,2E+18 à 9,2E+18 - ±9 223 372 036 854 775 808 - soit environ 9,2 quintillions.
Parce qu'elles sont capables d'entreposer des entiers aussi volumineux, les variables Comp peuvent entreposer des valeurs monétaires. Ne vous inquiétez pas de l'absence de décimales. Mettez simplement à l'échelle vos variables afin que des valeurs telles que 1234,56 $ soient entreposées sous la forme 123 456.
Les variables Comp sont toujours manipulées avec une émulation logicielle, garantissant cependant une précision de seulement 15 ou 16 chiffres significatifs. Vous devez utiliser un coprocesseur mathématique pour assurer une précision totale sur toute l'intervalle. Une valeur Comp sera affichée comme n'importe quel autre type de données réel. Vous devez utiliser la fonction de formatage :W:0 dans les instructions Write et WriteLn pour empêcher la valeur de s'afficher en notation scientifique.
Types de données caractère et chaîne de caractères
Le QuickPascal propose trois façons d'entreposer des caractères ASCII. Un seul caractère peut être entreposé dans une variable déclarée en tant que type de données Char. Les types de variables déclarés STRING ou CSTRING peuvent contenir chacun des chaînes de caractères d'une longueur maximale de 255 caractères. (N'oubliez pas qu'une chaîne de caractères est une série de caractères ASCII.)
Caractères
D'une manière générale, un type de données Char peut être affecté à n'importe quel caractère pris en charge par votre ordinateur. Sur les compatibles IBM PC, un type de données Char peut contenir n'importe lequel des caractères ASCII étendus répertoriés dans la table ASCII. Les lettres majuscules sont entreposées sous les nombres 65 à 90, les lettres minuscules sont entreposées sous les nombres 97 à 122 et les chiffres 0 à 9 sont entreposés sous les nombres 48 à 57. Les caractères étrangers et graphiques sont entreposés sous entre les nombres 128 à 255.
Ne laissez pas le terme «caractère» vous tromper. Dans la conversation de tous les jours, nous avons tendance à considérer un caractère comme une lettre majuscule ou minuscule. Dans le QuickPascal, un caractère peut être une lettre, un chiffre, un signe de ponctuation, un symbole scientifique, une lettre étrangère, un symbole graphique ou un caractère de contrôle - en bref, tout symbole intégré pouvant être affiché sur votre écran d'ordinateur.
Le QuickPascal alloue 1 octet pour entreposer un caractère. Étant donné que chaque octet a 8 bits, vous pouvez avoir au plus 256 (28) valeurs de caractères. Chaque symbole est associé à l'un de ces nombres. Par exemple, A est le code ASCII 65, B est 66, C est 67, et ainsi de suite.
Écriture des caractères
Vous pouvez saisir un caractère en l'écrivant directement, en le ressaisissant à partir du clavier, en l'écrivant sous forme de valeur numérique ou en l'écrivant sous forme de caractère de contrôle.
Écriture directe des caractères
Pour les caractères de votre clavier (lettres, chiffres et signes de ponctuation), saisissez simplement le caractère lui-même, entre guillemets simples. Si vous voulez représenter le guillemet lui-même, vous devez l'écrire deux fois (n'utilisez pas le guillemet double). Notez que les lettres majuscules et minuscules sont considérées comme différentes. L'exemple suivant montre comment les caractères lisibles sont utilisés dans les instructions QuickPascal :
Saisie de caractères à partir du pavé numérique
Vous pouvez saisir n'importe quel caractère ASCII à l'aide du pavé numérique. Par exemple, la lettre majuscule L est répertoriée dans la table ASCII en tant qu'ASCII 76. Maintenez la touche Alt enfoncée, entrez 7, 6 sur le clavier (pas la rangée supérieure de chiffres) et relâchez la touche Alt. La lettre L apparaîtra à l'emplacement du curseur, comme si vous l'aviez tapée directement. Vous pouvez ainsi utiliser le clavier pour saisir des graphiques et des caractères étrangers que vous ne trouvez pas sur votre clavier. N'oubliez pas que chaque caractère saisi au clavier doit être mis entre guillemets simples (saisis avant d'appuyer sur et après avoir relâché Alt).
Écriture de caractères sous forme de valeurs numériques
Il existe une autre technique que vous pouvez utiliser lorsque vous travaillez avec des symboles graphiques. Vous pouvez représenter directement n'importe quel caractère ASCII en faisant précéder sa valeur numérique d'un signe dièse (#). Vous pouvez ainsi représenter la lettre majuscule L comme #76. (Étant donné que le nombre décimal 76 équivaut à la valeur hexadécimale $4C, vous pouvez également représenter L par #$4C.) Le QuickPascal traite les trois symboles - #76 - comme un seul caractère ASCII. Étant donné que les guillemets ne sont pas requis lorsque vous représentez des caractères ASCII avec cette méthode, l'affectation :
- LaLettreL:='L';
est équivalant à l'affectation :
- LaLettreL:=#76;
Notez que le signe dièse doit être suivi d'un nombre décimal ou hexadécimal : Vous ne pouvez pas utiliser les constantes du programme QuickPascal, les constantes typées et les variables.
Écriture des caractères de contrôle
Les valeurs ASCII de 0 à 31 sont appelées caractères de contrôle car elles sont utilisées comme codes de contrôle sur l'équipement Teletype. Par exemple, ASCII 4 (#4) est noté EOT (End of Transmission). De même, #5 est un ENQuiry, #6 est un ACKnownledgement, et ainsi de suite. Chacun de ces codes est conçu pour déclencher une réponse spécifique lorsqu'il est transmis à un autre terminal. Comme aucun d'entre eux ne correspond à un caractère imprimé, les codes de contrôle sont fréquemment appelés caractères non imprimables.
Étant donné que votre ordinateur dispose d'un autre moyen de contrôler l'imprimante et l'écran, la plupart des codes de contrôle ne sont que des curiosités. Quelques-uns d'entre eux, cependant, sont toujours utilisés : #7 produit le son de cloche familier, #8 est un retour arrière, #10 est un saut de ligne, #12 est un saut de page et #13 est un retour chariot.
Les codes de contrôle de #1 à #26 peuvent être représentés par le symbole caret (^) suivi d'une lettre de contrôle correspondante de A à Z. (C'est pourquoi de nombreux textes de programmation font encore référence au son de la cloche comme le caractère ^G ou Ctrl+G). Étant donné que le saut de formulaire est #12 et que L est la douzième lettre de l'alphabet, tous les codes suivants sont équivalents :
^L #12 #$C |