Comment définir le type d'une variable dans un programme Pascal. TurboPascal. Types de données

Tout programme écrit dans n'importe quel langage de programmation est essentiellement conçu pour traiter des données. Les données peuvent être des nombres, des textes, des graphiques, du son, etc. Certaines données sont des données sources, d'autres sont le résultat obtenu en traitant les données sources par le programme.

Les données sont stockées dans la mémoire de l'ordinateur. Le programme y accède en utilisant des noms de variables associés aux emplacements mémoire où les données sont stockées.

Les variables sont décrites avant le code du programme principal. Les noms des variables et le type de données qui y sont stockées sont indiqués ici.

Il existe de nombreux types de données dans le langage de programmation Pascal. De plus, l'utilisateur peut définir lui-même ses propres types.

Le type d'une variable détermine quelles données peuvent être stockées dans l'emplacement mémoire qui lui est associé.

Tapez les variables entier ne peut être associé qu'à des valeurs entières généralement comprises entre -32768 et 32767. Pascal a d'autres types entiers (octet, entier long).

Tapez les variables réel stocker des nombres réels (fractionnaires).

Variable Booléen Le type (booléen) (booléen) ne peut prendre que deux valeurs - vrai(1, vrai) ou FAUX(0, faux).

Type de caractère (caractère) peut prendre des valeurs à partir d'une séquence ordonnée spécifique de caractères.

Type d'intervalle défini par l'utilisateur et formé uniquement à partir de types ordinaux. Représente un sous-ensemble de valeurs dans une plage spécifique.

Vous pouvez créer votre propre type de données en répertoriant simplement les valeurs que peut prendre une variable de ce type. C'est ce qu'on appelle type de données énuméré.

Tous les éléments ci-dessus sont des types de données simples. Mais il en existe aussi des complexes, structurés, qui reposent sur des types simples.

Tableau est une structure qui occupe une seule zone en mémoire et constituée d'un nombre fixe de composants du même type.

Cordes est une séquence de caractères. De plus, le nombre de ces caractères ne peut être supérieur à 255 inclus. Cette limitation est une caractéristique de Pascal.

Enregistrer est une structure composée d'un nombre fixe de composants appelés champs. Les données des différents champs d'un enregistrement peuvent être de différents types.

Ensembles représentent une collection d’un nombre quelconque d’éléments, mais du même type énuméré.

Fichiers pour Pascal, ce sont des séquences du même type de données qui sont stockées sur des dispositifs de mémoire externes (par exemple, un disque dur).

Le concept d'un type de données tel que aiguille associé au stockage dynamique des données dans la mémoire de l'ordinateur. Souvent, l’utilisation de types de données dynamiques est plus efficace en programmation que l’utilisation de types de données statiques.

Bases de la programmation
Chaque professionnel était autrefois une théière. Vous connaissez sûrement l’état où « vous ne savez pas par où commencer à réfléchir pour arriver à une telle chose ». Vous avez probablement rencontré une situation dans laquelle vous ne savez tout simplement pas par où commencer. Ce livre s'adresse précisément aux personnes qui aimeraient devenir programmeur, mais qui n'ont absolument aucune idée par où commencer dans cette voie.

...

Presque tous les types de données entiers sont . Ces types de données représentent des entiers dans une certaine plage. Les noms spécifiques des types entiers et des plages de valeurs dépendent du langage de programmation spécifique, du compilateur et du mode de compilation. Vous pouvez en savoir plus à ce sujet dans la documentation du compilateur. Par exemple, le type de données Entier Par exemple, le type de données en Delphi, sa plage est comprise entre -2147483648…2147483647, tandis qu'en Turbo Pascal, le type de données Par exemple, le type de données représente des nombres compris entre -35 768 et 32 ​​767. En Free Pascal, la plage de valeurs de type

déterminé par le mode sélectionné.

Puisque Lazarus utilise le compilateur Free Pascal, tout ce qui est dit sur les types de données en relation avec Free Pascal est également vrai pour Lazarus.

Ainsi, les types de données entiers de Free Pascal sont répertoriés dans le tableau 13.1.

Tableau 13.1. Types de données entiers Pascal gratuits (Lazarus). Taper Taille, octets
Plage de valeurs 1 0…255
Octet 1 -128…127
Raccourci 2 -35768…32767
Petitint 2 0…65535
Par exemple, le type de données Mot 2 ou 4
Dépend du mode de compilation 4 0…4294967295
Cardinal 4 -2147483648…2147483647
Entier long 4 0...4294967295
Mot long 8 -9223372036854775808...9223372036854775807
Int64 8 0...18446744073709551615

QMot
NOTE Mot long Types en Pascal Libre Int64 Et

ne le sont pas ! Cela signifie que vous ne pouvez pas les utiliser, par exemple, pour les variables d'index dans les boucles. Cependant, je les ai présentés ici afin de ne pas les décrire séparément à l'avenir et de rassembler tous les types entiers Free Pascal en un seul endroit. Si vous ne comprenez pas certains mots, ne vous inquiétez pas. En temps voulu, je vous raconterai tout plus en détail.

Et maintenant quelques explications sur le tableau. Dans la colonne TAPER

Et maintenant quelques explications sur le tableau. des identifiants de type de données sont donnés (des mots clés qui indiquent au compilateur à quel type appartient une donnée particulière). Vous apprendrez à utiliser ces identifiants dans les leçons suivantes. TAILLE Plage de valeurs, Petitint, Dépend du mode de compilation indique la taille qu'occupe le type de données dans la mémoire de l'ordinateur. Par exemple, un entier positif peut être représenté par différents types : Dépend du mode de compilation occupera 4 octets en mémoire, tandis qu'un nombre comme Plage de valeurs– seulement 1 octet. Par conséquent, si vous savez avec certitude que le nombre avec lequel vous travaillez ne prendra jamais une valeur supérieure à 255, alors il est préférable de le définir comme un type Plage de valeurs, car cela permettra d'économiser de l'espace dans la mémoire de votre ordinateur. Bien que tout ne soit pas si simple ici (les nuances de la répartition de la mémoire et des autres ressources informatiques dépassent le cadre).

Et maintenant quelques explications sur le tableau. GAMME spécifie la plage de valeurs sur laquelle le type de données opère. Par exemple, un nombre comme Plage de valeurs peut prendre des valeurs de 0 à 255.

Maintenant, place à la pratique. Écrivons un programme qui affiche les plages de valeurs de tous les types de données entières. Le code source de ce programme est donné ci-dessous :

Inscription 13.1. Un programme pour afficher des plages d'entiers. programme td; ($mode objfpc)($H+) utilise ($IFDEF UNIX)($IFDEF UseCThreads) cthreads, ($ENDIF)($ENDIF) classes (vous pouvez ajouter des unités après cela) ; commencer Writeln("Octet : ", Low(Octet), "..", High(Octet));

Writeln("Abréviation : ", Faible(Abréviation), "..", Élevé(Abréviation)); Writeln("Smallint : ", Low(Smallint), "..", High(Smallint)); Writeln("Mot : ", Faible(Mot), "..", Élevé(Mot)); Writeln("Entier : ", Faible(Entier), "..", Élevé(Entier)); Writeln("Cardinal : ", Faible(Cardinal), "..", Haut(Cardinal)); Writeln("Entier Long : ", Faible(Entier Long), "..", Haut(Entier Long)); Types en Pascal Libre Writeln("Mot long : ", Faible(Mot long), "..", Haut(Mot long)); Writeln("Int64 : ", Faible(Int64), "..", Élevé(Int64));

Writeln("QWord : ", Faible(QWord), "..", Élevé(QWord));

10
178
35278

Lire ; fin.

Fonction standard

  1. Faible définit la valeur minimale du type de données. Funtskia
  2. Haut définit la valeur maximale. Avec fonctions
  3. ÉcrireLn LireLn
  4. vous vous connaissez déjà un peu. Nous parlerons plus en détail des sous-programmes (procédures et fonctions) dans la section correspondante.. Un nombre préfixé par %. Par exemple, le nombre binaire %10 est égal au nombre décimal 2.

Devoirs:

Créez un programme qui affiche des plages de valeurs entières (liste 13.1). Compilez le programme et exécutez-le. Assurez-vous que ces valeurs correspondent à celles indiquées dans le tableau 13.1.

Dans le code source du programme, recherchez la ligne qui définit le mode de compilation :

($mode objfpc)($H+)

Dans cette ligne, au lieu du mot objfpcécrire le mot tp. Autrement dit, la dernière ligne devrait ressembler à ceci :

($mode tp)($H+)

Lancez le programme. Regardez la plage de valeurs de type Par exemple, le type de données. Tirez des conclusions.

Apprenez à penser comme un programmeur, c'est-à-dire logiquement. Personne ne mâchera tout à votre place jusqu’à la retraite, comme je le fais maintenant. Il faut s'habituer à penser par soi-même. Sinon, vous tomberez dans le « principe d’apprentissage du singe » et vos chances de devenir un grand programmeur seront alors proches de zéro. Pour vous aider à ne pas tomber dans le niveau « bachotage », je laisserai périodiquement des lacunes dans votre apprentissage afin que vous essayiez de comprendre certaines choses vous-même.

C'est bien mieux si tu le découvres toi-même mauvaise décision, vous trouverez l’erreur vous-même et la corrigerez vous-même, plutôt que de toujours utiliser les bonnes solutions des autres et de les copier bêtement.

Les types ordinaux incluent (voir Figure 4.1) les types entier, logique, caractère, énuméré et plage. La fonction ORD(X) est applicable à n'importe lequel d'entre eux, qui renvoie le numéro ordinal de la valeur de l'expression X. Pour les types entiers, la fonction ORD(X) renvoie la valeur de X lui-même, c'est-à-dire ORD(X) = X pour X appartenant à n’importe quel type de shell. L’application de ORD(X) aux types booléen, caractère et énumération produit un entier positif compris entre 0 et 1 (booléen), 0 à 155 (caractère), 0 à 65 535 (énumération). Un type plage conserve toutes les propriétés du type ordinal sous-jacent, donc le résultat de l’application de la fonction ORD(X) dépend des propriétés de ce type.

Vous pouvez également appliquer des fonctions aux types ordinaux :

PRED (X) - renvoie la valeur précédente du type ordinal (la valeur qui correspond au nombre ordinal ORD(X) - 1), c'est-à-dire

ORD(PRED(X)) = ORD(X) - 1;

SUCC (X) - renvoie la valeur ordinale suivante qui correspond au nombre ordinal ORD(X) +1, c'est-à-dire

ORD(SUCC(X)) = ORD(X) + 1.

Par exemple, si un programme définit une variable

alors la fonction PRED(C) renverra la valeur « 4 » et la fonction SUCC(C) renverra la valeur « 6 ».

Si nous imaginons n'importe quel type ordinal comme un ensemble ordonné de valeurs, augmentant de gauche à droite et occupant un certain segment sur l'axe des nombres, alors la fonction PRED(X) n'est pas définie pour la gauche, et SUCC(X) pour la droite. fin de ce segment.

Des types entiers. La plage des valeurs possibles des types entiers dépend de leur représentation interne, qui peut être un, deux ou quatre octets. Dans le tableau 4.1 montre le nom des types entiers, la longueur de leur représentation interne en octets et la plage de valeurs possibles.

Tableau 4.1

Lorsque vous utilisez des procédures et des fonctions avec des paramètres entiers, vous devez être guidé par « l'imbrication » des types, c'est-à-dire partout où WORD peut être utilisé, BYTE peut être utilisé (mais pas l'inverse), LONGINT "inclut" INTEGER, qui, à son tour, inclut SHORTINT.

La liste des procédures et fonctions applicables aux types entiers est donnée dans le tableau 4.2. Courrier b, s, w, je, l les expressions de type BYTE, SHORTINT, WORD, INTEGER et LONGINT sont désignées, respectivement, x est une expression de l'un de ces types ; courrier vb, contre, vw, vi, vl, vx désignent les variables des types correspondants. Un paramètre facultatif est indiqué entre crochets.

Tableau 4.2

Procédures et fonctions standard applicables à des types entiers
Appel Type de résultat Action
abdos(x) x Module de retour x
chr(b) Carboniser Renvoie un caractère par son code
déc(vx[, i]) - Diminue la valeur de vx de i, et en l'absence de i - de 1
inc(vx[, je]) - Augmente la valeur de vx de i, et en l'absence de i - de 1
Salut (je) Octet Renvoie l'octet de poids fort de l'argument
Salut (w) Même Même
Lo(je) " Renvoie l'octet de poids faible de l'argument
Faible) " Même
impair(l) Booléen Renvoie True si l'argument est un nombre impair
Aléatoire (w) Identique au paramètre Renvoie un nombre pseudo-aléatoire uniformément distribué dans la plage 0...(w-l)
sgr(x) X Renvoie le carré de l'argument
échanger(i) Entier Échange des octets dans un mot
échanger(w) Mot

Lorsqu'on opère avec des entiers, le type du résultat correspondra au type des opérandes, et si les opérandes sont de types entiers différents, au type de l'opérande qui a la puissance maximale (plage maximale de valeurs). Un éventuel débordement du résultat n'est en aucun cas contrôlé, ce qui peut conduire à des malentendus, par exemple :

une := 32 767 ; (Valeur ENTIÈRE maximale possible)

x := une + 2 ; (Débordement lors de l'évaluation de cette expression !}

y:= LongInt(a)+2; (Pas de débordement après avoir converti la variable en un type plus puissant)

ÉcrireLn(x:10:0, y:10:0)

À la suite de l'exécution du programme, nous obtenons

Type booléen. Les valeurs booléennes peuvent être l'une des constantes pré-déclarées FALSE ou TRUE. Les règles s'appliquent à eux :

FAUX< True;

succ(Faux)= Vrai ;

pred(Vrai) = Faux.

Puisque le type booléen est un type ordinal, il peut être utilisé dans un opérateur de type dénombrable, par exemple :

pour 1 : = Faux à Vrai, faites ....

Type de caractère. La valeur d'un type de caractère est l'ensemble de tous les caractères PC. Chaque caractère se voit attribuer un entier compris entre 0 et 255. Ce numéro sert de code pour la représentation interne du symbole ; il est renvoyé par la fonction ORD.

Le code ASCII est utilisé pour l'encodage ( Code standard américain pour l'échange d'informations- Code standard américain pour l'échange d'informations). Il s'agit d'un code de 7 bits, c'est-à-dire il ne peut encoder que 128 caractères dans la plage de 0 à 127. Dans le même temps, dans l'octet de 8 bits alloué au stockage d'un caractère dans Turbo Pascal, vous pouvez encoder deux fois plus de caractères dans la plage de 0 à 255. Le la première moitié des caractères PC avec les codes 0...127 correspond à la norme ASCII (Tableau 4.3). La seconde moitié des caractères avec les codes 128...255 ne sont pas limitées par le cadre rigide de la norme et peuvent être modifiées sur différents types de PC (l'annexe 2 montre quelques options de codage courantes pour ces caractères).

Tableau 4.3

Codage des caractères selon la norme ASCII
Code Symbole Code Symbole Code Symbole Code Symbole
NUL B.L. ® "
ZON ! UN un
STX " DANS b
ETX # AVEC Avec
EOT $ D d
ENQ % E e
DEMANDER & F f
BEL " G g
BS. ( H h
NT ) je je
LF * J. j
Vermont + k k
FR , L je
CR - M m
DONC . N n
SI. / À PROPOS
DEL p P.
DC1 Q q
DC2 R. r
DC3 S s
DC4 T t
N.A.K. U toi
SYN V V
ETB w w
PEUT X X
E.M. U U
SOUS : z z
ÉCHAP / [ {
FS < \ je
G.S. = ] }
R.S. > ^ ~
NOUS ? - n

Les caractères avec les codes 0...31 font référence aux codes de service. Si ces codes sont utilisés dans le texte des caractères du programme, ils sont considérés comme des espaces. Lorsqu'ils sont utilisés dans des opérations d'E/S, ils peuvent avoir la signification indépendante suivante :

Symbole Code Signification
BEL Appel; L'affichage de ce symbole est accompagné d'un signal sonore
NT Tabulation horizontale ; lorsqu'il est affiché à l'écran, déplace le curseur vers une position qui est un multiple de 8 plus 1 (9, 17, 25, etc.)
LF Saut de ligne ; lors de son affichage à l'écran, tous les caractères suivants seront affichés à partir de la même position, mais sur la ligne suivante
Vermont Onglet vertical ; lorsqu'il est affiché à l'écran, il est remplacé par un caractère spécial
FR Exécution de la page ; lors de la sortie sur une imprimante, il forme une page ; lors de la sortie à l'écran, il est remplacé par un caractère spécial ;
CR Retour en calèche ; saisi en appuyant sur la touche Entrée (lors de la saisie avec READ ou READLN, cela signifie la commande « Entrée » et n'est pas placé dans le tampon d'entrée ; en sortie, cela signifie la commande « Continuer la sortie depuis le début de la ligne actuelle »)
SOUS Fin du dossier ; saisi à partir du clavier en appuyant sur Ctrl-Z ; lors de la sortie, il est remplacé par un signe spécial
CSS Fin des travaux ; saisie à partir du clavier en appuyant sur la touche ESC ; lors de la sortie, il est remplacé par un signe spécial

Les opérations relationnelles, ainsi que les fonctions intégrées, sont applicables au type CHAR : СНR(В) - fonction du type CHAR ; convertit une expression B de type BYTE en caractère et la renvoie avec sa valeur ;

UPCASE(CH) - Fonction de type CHAR ; renvoie la lettre majuscule si CH est une lettre latine minuscule, sinon renvoie le caractère CH lui-même, par exemple :

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

ÉcrireLn(cl," ",c2)

Puisque la fonction UPCASE ne traite pas le cyrillique, le résultat de l'exécution de cette commande

les programmes seront affichés à l'écran

Type d'énumération. Un type énuméré est spécifié par une énumération des valeurs qu'il peut recevoir. Chaque valeur est nommée par un identifiant et se trouve dans une liste entourée de parenthèses, par exemple :

couleurs =(rouge, blanc, bleu) ;

L'utilisation de types énumérés rend les programmes plus visuels. Si, par exemple, le programme utilise des données associées aux mois de l'année, alors le fragment suivant du programme :

TypeMonth=(janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre) ;

mois : TypeMois ;

si mois = Août alors WriteLn("Ce serait bien d'aller à la mer !");

Ce serait, voyez-vous, très clair. Hélas! En Turbo Pascal vous ne pouvez pas utiliser le cyrillique dans les identifiants, nous sommes donc obligés d'écrire ainsi :

TypeMonth=(jan, février, mars, mai, juin, juillet, août, septembre, octobre, nov, décembre) ;

mois : TypeMois ;

ifmonth = août then WriteLn("Ce serait bien d'aller à la mer !");

La correspondance entre les valeurs d'un type énuméré et les nombres ordinaux de ces valeurs est établie par l'ordre d'énumération : la première valeur de la liste reçoit le nombre ordinal 0, la seconde - 1, etc. La capacité maximale d'un type énuméré est de 65 536 valeurs, donc en fait un type énuméré définit un certain sous-ensemble du type WORD entier et peut être considéré comme une déclaration compacte d'un groupe de constantes entières avec des valeurs 0, 1, etc.

L'utilisation de types énumérés augmente la fiabilité des programmes en vous permettant de contrôler les valeurs que reçoivent les variables correspondantes. Par exemple, donnons les types énumérés suivants :

couleurs = (noir, rouge, blanc) ;

ordinal= (un, deux, trois) ;

jours = (lundi, mardi, mercredi) ;

En termes de pouvoir et de représentation interne, les trois types sont équivalents :

ord(noir)=0, ..., ord(blanc)=2,

ord(un)=0, ...ord(trois)=2,

ord(lundi)=0, ...ord(mercredi)=2.

Cependant, si les variables sont définies

col:couleurs; num:ordénal;

alors les opérateurs sont autorisés

num:= succ(deux);

jour:= pred(mardi);

mais inacceptable

Comme déjà mentionné, il existe une correspondance biunivoque entre les valeurs d'un type énuméré et l'ensemble d'entiers spécifié par la fonction ORD(X). Turbo Pascal permet également la conversion inverse : toute expression de type WORD peut être convertie en une valeur de type énumération, tant que la valeur de l'expression entière ne dépasse pas la puissance1™ du type énumération. Cette conversion est réalisée en utilisant une fonction déclarée automatiquement avec le nom du type énuméré (voir section 4.4). Par exemple, pour la déclaration de type discutée ci-dessus, les affectations suivantes sont équivalentes :

col:= couleurs(0);

Bien sûr, la mission

sera inacceptable.

Les variables de n'importe quel type énuméré peuvent être déclarées sans déclarer au préalable ce type, par exemple :

col : (noir, blanc, vert) ;

Gamme de types. Un type plage est un sous-ensemble de son type de base, qui peut être n’importe quel type ordinal à l’exception d’un type plage. Un type de plage est défini par les limites de ses valeurs au sein du type de base :

<мин.знач.>..<макс.знач.>

Ici<мин.знач. >- valeur minimale de la plage de types ;

<макс.знач.>- sa valeur maximale.

Par exemple:

chiffre = "0".."9" ;

Le type range n'a pas besoin d'être décrit dans la section TYPE, mais peut être spécifié directement lors de la déclaration d'une variable, par exemple :

Ichr : "A".."Z" ;.

Lors de la détermination d'un type de plage, vous devez suivre les règles suivantes :

  • deux caractères ".." sont traités comme un seul caractère, les espaces entre eux ne sont donc pas autorisés ;
  • la bordure gauche de la plage ne doit pas dépasser sa bordure droite. Un type range hérite de toutes les propriétés de son type de base, mais avec les limitations de sa puissance inférieure. En particulier, si une variable est définie

jours = (lu,tu,nous,je,fr,sa,su);

WeekEnd = sa .. su;

alors ORD(W) renverra la valeur 5, tandis que PRED(W) entraînera une erreur.

La bibliothèque standard Turbo Pascal comprend deux fonctions qui prennent en charge l'utilisation des types de plage :

HIGH(X) - renvoie la valeur maximale du type de plage auquel appartient la variable X ;

LOW(X) - renvoie la valeur minimale du type de plage.

Le programme court suivant imprimera la ligne

ÉcrireLn(Faible(k),"..",Élevé(k))

L'ensemble des nombres entiers est infini, mais nous pouvons toujours choisir le nombre de bits pour représenter tout entier qui apparaît lors de la résolution d'un problème spécifique. L'ensemble des nombres réels est non seulement infini, mais aussi continu, donc quel que soit le nombre de bits que nous prenons, nous rencontrerons inévitablement des nombres qui n'ont pas de représentation exacte. Les nombres à virgule flottante sont une façon possible de représenter des nombres réels, ce qui représente un compromis entre précision et plage de valeurs acceptées.

Un nombre à virgule flottante se compose d'un ensemble de chiffres individuels, classiquement divisés en signe, exposant et mantisse. L'exposant et la mantisse sont des nombres entiers qui, avec le signe, donnent la représentation suivante d'un nombre à virgule flottante :

Mathématiquement, cela s'écrit ainsi :

(-1) s × M × B E, où s est le signe, B est la base, E est l'exposant et M est la mantisse.

La base détermine le système de numérotation numérique. Il a été mathématiquement prouvé que les nombres à virgule flottante de base B=2 (représentation binaire) sont les plus résistants aux erreurs d'arrondi, donc en pratique, seules les bases 2 et, plus rarement, 10 sont rencontrées. Pour une présentation plus approfondie, nous supposerons toujours B=. 2, et la formule pour un nombre à virgule flottante ressemblera à :

(-1) s × M × 2 E

Qu'est-ce que la mantisse et l'ordre ? Mantisse est un entier de longueur fixe qui représente les bits les plus significatifs d'un nombre réel. Disons que notre mantisse se compose de trois bits (|M|=3). Prenons, par exemple, le nombre « 5 », qui dans le système binaire sera égal à 101 2. Le bit de poids fort correspond à 2 2 =4, le bit du milieu (qui est égal à zéro) est 2 1 =2 et le bit de poids faible est 2 0 =1. Commande– c'est la puissance de la base (deux) du chiffre le plus élevé. Dans notre cas E=2. Il est pratique d'écrire de tels nombres sous la forme standard dite « scientifique », par exemple « 1,01e+2 ». Il est immédiatement clair que la mantisse est composée de trois signes et que l'ordre est de deux.

Disons que nous voulons obtenir un nombre fractionnaire en utilisant les mêmes 3 bits de la mantisse. Nous pouvons le faire si nous prenons, disons, E=1. Alors notre nombre sera égal

1,01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0,5=2,5

Évidemment, le même nombre peut ainsi être représenté de différentes manières. Considérons un exemple avec la longueur de la mantisse |M|=4. Le chiffre « 2 » peut être représenté comme suit :

2 = 10 (en binaire) = 1,000e+1 = 0,100e+2 = 0,010e+3.

C'est pourquoi, dès les toutes premières machines, les nombres étaient représentés dans ce qu'on appelle forme normalisée, lorsque le premier bit de la mantisse était toujours supposé égal à un.

Cela enregistre un bit (puisque le bit implicite n'a pas besoin d'être stocké en mémoire) et garantit que le nombre est représenté de manière unique. Dans notre exemple, « 2 » a une seule représentation (« 1.000e+1 ») et la mantisse est stockée en mémoire sous la forme « 000 », car l’unité principale est implicitement implicite. Mais un nouveau problème se pose dans la représentation normalisée des nombres : il est impossible de représenter zéro sous cette forme.

  • Analyse des données à l'aide des commandes de sélection de paramètres et de recherche de solutions
  • Analyse et interprétation des données de recherche psychologique expérimentale.
  • Analyse des données sources. Normes techniques pour les routes urbaines.
  • ANALYSE DES DONNÉES OBTENUES. PRENDRE UNE DÉCISION SUR LA SUFFISANCE OU L'INSUFFISANCE DES CARACTÉRISTIQUES D'APPROVISIONNEMENT EN EAU POUR LES BESOINS DU SYSTÈME D'IRRIGATION.
  • Équipements de ligne de communication : équipements de transmission de données, équipements terminaux, équipements intermédiaires.

  • Pour qu'une machine puisse traiter n'importe quelle donnée d'entrée, elle doit « comprendre » à quel type appartiennent les variables dans lesquelles les valeurs sont stockées. En l'absence d'informations sur le format des données, l'ordinateur ne sera pas en mesure de déterminer si une opération particulière est autorisée dans un cas particulier : par exemple, il est intuitivement clair qu'il est impossible d'élever une lettre à une puissance ou de prendre la intégrale d'une chaîne. Ainsi, l'utilisateur doit déterminer quelles actions peuvent être effectuées avec chaque variable.

    Comme dans d'autres langages de programmation de haut niveau, les types de variables en Pascal sont optimisés pour effectuer des tâches de différents types, ont une plage de valeurs et une longueur en octets différentes.

    Subdivision des types de variables

    Les types de variables en Pascal sont divisés en simples et structurés. Les types simples incluent les types réels et ordinaux. Les structurés incluent des tableaux, des enregistrements, des ensembles et des fichiers. Séparément, les pointeurs, les objets et les types procéduraux sont distingués.

    Regardons les types ordinaux et réels. Les types ordinaux incluent 5 types entiers, le type énumération et le type plage.

    Types ordinaux

    Il existe 5 types d'entiers, différant par la longueur d'octet et la plage de valeurs.

    La longueur de Byte et ShortInt est de 1 octet. La différence entre eux est que Byte ne stocke que les valeurs non négatives, tandis que ShortInt vous permet de stocker les valeurs négatives (de -128 à +127). Les types Word et Integer sont liés les uns aux autres de la même manière, la seule différence étant que leur taille est de 2 octets.

    Enfin, LongInt vous permet de stocker des valeurs négatives et positives en utilisant 4 octets - à la puissance 16 de la dimension numérique de chaque côté de zéro. Différents types de variables en Pascal contribuent à la solution efficace des tâches utilisateur, car dans chaque cas spécifique, une plage de valeurs petite et large peut être requise, et il peut également y avoir des restrictions sur la quantité de mémoire allouée.

    Il est important de comprendre que zéro occupe autant d’espace mémoire que n’importe quel autre nombre. Ainsi, lors de la formation d'une plage de valeurs, le nombre négatif minimum en valeur absolue sera supérieur d'un nombre positif : par exemple, de -128 à +127.

    Les variables appartenant à peuvent prendre la valeur TRUE (vrai) ou FALSE (faux) et nécessitent 1 octet de mémoire.

    Le type CHAR vous permet de stocker l'un des nombreux caractères qui existent dans la mémoire de l'ordinateur. Parallèlement, dans les variables symboliques en Pascal, seul le code du signe est effectivement stocké, selon lequel sa forme graphique est affichée.

    Types réels

    Parmi les types de variables en Pascal, il en existe plusieurs numériques avec la possibilité d'écrire une partie fractionnaire. Les différences entre les types Single, Real, Double et Extended se résument à la plage de valeurs acceptées, au nombre de chiffres significatifs après la virgule décimale et à la taille en octets.

    Selon l'ordre présenté ci-dessus, une variable de chaque type occupera 4, 6, 8 ou 10 octets.

    Tableaux

    Les types de données structurées sont complexes et vous permettent de combiner un certain nombre de valeurs simples au sein d'une seule variable. Un bon exemple est un tableau, qui peut être défini comme suit :

    String=tableau de caractères ;

    Ainsi, nous avons obtenu un type appelé String, qui nous permet de définir des variables jusqu'à 100 caractères. La dernière ligne spécifie directement un tableau unidimensionnel Y de type String. Les variables en Pascal sont décrites en plaçant l'identifiant à gauche et la valeur de la variable à droite, après le signe égal.

    La plage d'index écrite permet d'accéder à chaque élément spécifique du tableau :

    Dans ce cas, on lit le deuxième élément du tableau Y précédemment créé.

    Les variables chaîne en Pascal sont également un cas particulier de tableau unidimensionnel, car une chaîne est une séquence de caractères, c'est-à-dire des éléments de type char.

    Messages

    Un enregistrement est constitué de plusieurs champs remplis de données de tout type sauf fichier. En général, ce type de variable s'apparente à un élément de base de données. Par exemple, vous pouvez saisir le nom et le numéro de téléphone d’une personne :

    tapez NTel = Enregistrer

    La première ligne à gauche indique le nom du type et à droite, l'enregistrement du mot de service. La deuxième ligne contient un champ avec un nom, la troisième un numéro de téléphone. Le mot « fin » signifie que nous avons renseigné tous les champs souhaités, ce qui termine le processus de création d'un enregistrement.

    Enfin, dans la dernière ligne, nous définissons la variable One, qui est de type NTel.

    Vous pouvez accéder à la fois à l'enregistrement dans son ensemble et à ses composants individuels, par exemple : one.NAME (c'est-à-dire nom_variable. nom_champ_enregistrement).

    Fichiers

    Pascal vous permet de travailler avec des fichiers texte, typés et non typés, qui sont une séquence structurée de composants ayant le même type.

    Lors de la lecture ou de l'écriture dans un fichier, l'adresse complète ou sa forme abrégée peut être utilisée :

    'C:\Dossier\File2.txt'

    La forme courte est utilisée lorsque le fichier est placé dans le dossier où est stocké le programme qui y accède. Le formulaire complet peut être utilisé en toute circonstance.

    Vous pouvez définir une variable de type de fichier comme suit :

    f1 : fichier d'entier ;

    Pour travailler avec des fichiers, diverses fonctions et procédures sont utilisées qui associent une variable à un fichier sur le disque, l'ouvrent en lecture, écriture et écrasement, la ferment une fois terminé, vous permettant de créer un nouveau nom et de supprimer le fichier de l'ordinateur.

    En conclusion

    Sans la possibilité d'utiliser différents types de variables en Pascal, l'utilisateur ne pourra pas implémenter même la tâche la plus simple. Pour que le programme exécute l'algorithme sans erreurs, il est nécessaire d'apprendre à la fois les mots de fonction et la syntaxe, car la machine ne peut « comprendre » les commandes que si elles sont écrites de la seule manière correcte.

    La notion de données est l’une des clés de la programmation et de l’informatique en général. En gros, les données en informatique sont des informations qui sont en état de stockage, de traitement ou de transmission pendant une certaine période de temps. Dans les machines de Turing, l’information a un type, qui dépend à son tour du type d’information.

    Les types de données en Pascal définissent les valeurs possibles des variables, constantes, expressions et fonctions. Ils sont intégrés et personnalisés. Les types intégrés sont initialement présents dans le langage de programmation et les types personnalisés sont créés par le programmeur.

    Selon le mode de présentation et de traitement, les types de données sont :

    • simple
    • structuré
    • pointeurs
    • objets
    • procédures

    Cet article ne considérera que les types de données les plus simples, car aux premières étapes de la formation, il sera plus facile pour votre programme de se passer, par exemple, de fichiers et d'enregistrements que de variables entières ou de chaînes.

    Type entier

    Cela inclut plusieurs types entiers, qui diffèrent par la plage de valeurs, le nombre d'octets alloués pour les stocker et le mot avec lequel le type est déclaré.

    Tableau 13.1. Types de données entiers Pascal gratuits (Lazarus). Gamme Taille en octets
    raccourci -128…127 1
    entier -32 768…32 767 2
    entier long -2 147 483 648…2 147 483 647 4
    octet 0…255 1
    mot 0…65 535 2

    Vous pouvez déclarer une variable entière dans la section Var, par exemple :

    Toutes les opérations arithmétiques et logiques peuvent être effectuées sur les variables de cette catégorie à l'exception de la division (/), qui nécessite un type réel. Certaines fonctions et procédures standard peuvent également s'appliquer.

    Type réel

    En Pascal, il existe les types de données réels suivants :

    Tableau 13.1. Types de données entiers Pascal gratuits (Lazarus). Gamme Mémoire, octet Nombre de chiffres
    Réel 2,9e-39 … 1,7e38 6 11-12
    Célibataire 1,5e-45 … 3,4e38 4 7-8
    Double 5.0e-324…1.7e308 8 15-16
    Étendu 3.4e-4932 … 1.1e493 10 19-20
    Comp -9.2e63…(9.2e63)-1 8 19-20

    Plus d'opérations et de fonctions peuvent être effectuées sur eux que sur des entiers. Par exemple, ces fonctions renvoient un résultat réel :

    péché(x) – sinus ;

    cos(x) – cosinus ;

    arctan(x) – arctangente ;

    ln(x) – logarithme népérien ;

    sqrt(x) – racine carrée ;

    exp(x) – exposant ;

    Type booléen

    Une variable de type de données booléen ne peut prendre que deux valeurs : vrai et faux. Ici, vrai correspond à la valeur 1 et faux correspond à zéro. Vous pouvez déclarer une variable booléenne comme ceci :

    Des opérations de comparaison et logiques peuvent être effectuées sur des données de ce type : not, et, ou, xor.

    Type de caractère

    Un type de données caractère est une collection de caractères utilisés dans un ordinateur particulier. Une variable de ce type prend la valeur d'un de ces caractères et occupe 1 octet en mémoire de l'ordinateur. Mot Carboniser définit une valeur de ce type. Il existe plusieurs manières d'écrire une variable (ou constante) caractère :

    1. comme un seul caractère entouré d'apostrophes : « W », « V », « p » ;
    2. en précisant le code du caractère dont la valeur doit être comprise entre 0 et 255.
    3. en utilisant la construction ^K, où K est le code du caractère de contrôle. La valeur de K doit être supérieure de 64 au code du caractère de contrôle correspondant.

    Les opérations relationnelles et les fonctions suivantes sont applicables aux valeurs d'un type de données caractère :

    Succès(x)- renvoie le caractère suivant ;

    Préd(x)- renvoie le caractère précédent ;

    Commande(x)- renvoie la valeur du code du caractère ;

    Chr(x)- renvoie la valeur d'un symbole par son code ;

    UpCase(x)- convertit les lettres de l'intervalle 'a'..'z' en majuscules.

    Pour travailler efficacement avec un type de caractère, je recommande d'utiliser .

    Type de chaîne

    Une chaîne en Pascal est une séquence de caractères entourée d'apostrophes et est désignée par le mot Chaîne. Le nombre de caractères (longueur de ligne) ne doit pas dépasser 255. Si la longueur de la ligne n'est pas précisée, elle sera automatiquement déterminée à 255 caractères. La forme générale d'une déclaration de variable chaîne ressemble à ceci :

    Var<имя_переменной>:chaîne[<длина строки>];

    Chaque caractère d'une ligne possède son propre index (numéro). L'index du premier octet est 0, mais il ne stocke pas le premier caractère, mais la longueur de la chaîne entière, ce qui signifie qu'une variable de ce type occupera 1 octet de plus que le nombre de variables qu'elle contient. Le numéro du premier caractère est 1, par exemple, si nous avons la chaîne S='stroka', alors S=s;. Dans l’une des leçons suivantes, le type de données chaîne sera abordé plus en détail.

    Type de données énumérées

    Un type de données énuméré représente un nombre limité d'identifiants. Ces identifiants sont mis entre parenthèses et séparés par des virgules.

    Type Jour=(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;

    La variable A ne peut prendre que les valeurs spécifiées dans la section Type. Vous pouvez également déclarer une variable de type énuméré dans la section Var :

    Var A : (lundi, mardi) ;

    Les opérations relationnelles sont applicables à ce type, et il est prédéterminé que lundi

    Type de données d'intervalle

    Lorsqu'il est nécessaire de spécifier une plage de valeurs, dans de telles situations, le type de données intervalle est utilisé. La construction utilisée pour la déclaration est m..n, Où m est la valeur minimale (initiale), et n– maximum (final) ; ici m et n sont des constantes, qui peuvent être de type entier, caractère, énumération ou booléen. Les valeurs de type intervalle peuvent être décrites à la fois dans la section types et dans la section description des variables.

    Vue générale :

    TAPER<имя_типа> = <мин. значение>..<макс. значение>;



    Des questions ?

    Signaler une faute de frappe

    Texte qui sera envoyé à nos rédacteurs :