Type de données Word. Types de données Pascal

Connaître et comprendre les types de données fait partie intégrante de la programmation.

Dans cette leçon, nous découvrirons les types de données dans le langage de programmation Turbo Pascal.

En langage Pascal, tous les objets, c'est-à-dire les constantes, variables, valeurs de fonction ou expressions sont caractérisées par leurs types. Le type définit l'ensemble valeurs acceptables de tel ou tel objet, ainsi que de nombreuses opérations qui s'y appliquent. De plus, le type détermine le format de la représentation interne des données dans la mémoire de l'ordinateur. En termes de types d'objets, Pascal est un langage statique. Cela signifie que le type d'un objet, par exemple une variable, est déterminé lors de sa déclaration et ne peut pas être modifié ultérieurement.

Structure des types de données en Pascal :

Types de langage simples
Les types simples incluent les types ordinal, réel, chaîne et adresse (pointeur). Ils définissent tous le type d’une seule valeur.

Types ordinaux caractérisé par le fait que chacun d'eux a un nombre fini de valeurs possibles, parmi lesquelles un ordre linéaire est établi. Chacune des valeurs peut être associée à un entier - son numéro de série.

Types entiers- désignent des ensembles d'entiers dans différentes plages. Il existe cinq types entiers, différant par la plage de valeurs acceptables et la taille de l'espace occupé. mémoire vive. Les types entiers sont désignés par des identifiants : Byte, ShortInt, Word, Integer, LongInt ; leurs caractéristiques sont indiquées dans le tableau suivant.

Les valeurs de types entiers sont écrites dans le programme de la manière habituelle :
123 4 -3 +345 -699
La présence d'un point décimal dans la notation d'un nombre entier est inacceptable. Ce serait une erreur d'écrire un entier comme celui-ci :
123.0
En plus de la notation décimale habituelle, il est possible d'écrire des entiers au format hexadécimal en utilisant le préfixe $, par exemple :
$01AF $FF $1A $F0A1B
Registre lettres A, B, ..., F n'a pas d'importance.

Opérations valides :

  • - affectation;
  • - toute l'arithmétique : +, - ,*, /, div, mod (avec une division ordinaire [/] le résultat est réel !) ;
  • - comparaison<, >, >=, <=, <>, =.
Type booléen- se compose de seulement deux valeurs : False (faux) et True (vrai). Les mots Faux et Vrai sont définis dans le langage et sont en fait des constantes logiques. La casse des lettres dans leur écriture n'a pas d'importance : FAUX = faux. Les valeurs de ce type sont le résultat de l'évaluation d'expressions conditionnelles et logiques et participent à toutes sortes d'opérateurs conditionnels du langage.
Opérations valides : Type de caractère (Caractère)- il s'agit d'un type de données composé d'un seul caractère (signe, lettre, code). Une valeur Char peut être n’importe quel caractère du jeu de caractères ASCII. Si un symbole a une représentation graphique, alors dans le programme, il est écrit entre guillemets simples (apostrophes), par exemple :
"w" "s" "." "*" " "-(espace)
Pour représenter l'apostrophe elle-même, son image est doublée : """".
Si le caractère n'a pas de représentation graphique, par exemple un caractère de tabulation ou un caractère de retour chariot, vous pouvez alors utiliser une forme équivalente d'écriture de la valeur du caractère, composée du préfixe # et du code ASCII du caractère :
#9 #32 #13
Opérations valides :
  • - affectation;
  • - comparaison:<, >, >=, <=, <>, =. Le caractère le plus grand est celui qui possède un numéro ASCII plus élevé.
Type de chaîne (Chaîne, Chaîne[n])- Ce type de données définit des séquences de caractères - chaînes. Le paramètre n spécifie le nombre maximum de caractères par ligne. S’il n’est pas spécifié, n=255 est supposé. Une valeur de type « chaîne » dans un programme est écrite sous la forme d'une séquence de caractères entourée de guillemets simples (apostrophes), par exemple
"C'est une chaîne"
"1234" est aussi une chaîne, pas un nombre
"" - ligne vide

Opérations valides :
  • - affectation;
  • - ajout (concaténation, fusion) ; par exemple, S:= "L'hiver"+" "+"est arrivé !";
  • - comparaison:<, >, >=, <=, <>, =. Les chaînes sont considérées comme égales si elles ont la même longueur et sont équivalentes caractère par caractère.
Types réels- désignent des ensembles de nombres réels dans différentes plages. Il existe cinq types réels, différant par la plage de valeurs autorisées et la taille de la RAM occupée. Les types réels sont désignés par des identifiants : Real, Single, Double, Extended, Comp ; leurs caractéristiques sont indiquées dans le tableau suivant.

Type de composition bien que classé comme type réel, il s’agit en réalité d’un entier avec une très large plage de valeurs.
Les valeurs de types réels peuvent être écrites dans un programme de plusieurs manières :
1.456 0.000134 -120.0 65432
+345 0-45 127E+12
-1,5E-5 -1,6E+12 5E4 0,002E-6

Ce serait une erreur d’écrire un nombre réel comme celui-ci :
0,5 (correct 0,5)
12. (correctement 12,0 ou 12)

Un nombre réel sous forme à virgule flottante (forme scientifique) s'écrit sous forme de paire
<мантисса>E<порядок>
Cette désignation s'entend comme « la mantisse multipliée par dix à une puissance égale à l'ordre ». Par exemple,
-1,6E+12 correspond à -1,6 1012

Opérations valides :
- affectation;
- tout arithmétique : +, - ,*, /;
- comparaison:<, >, >=, <=, <>, =.

Lorsque vous comparez des nombres réels, n'oubliez pas qu'en raison de l'imprécision de leur représentation dans la mémoire de l'ordinateur (en raison de l'inévitabilité des arrondis), vous devez éviter d'essayer de déterminer l'égalité stricte de deux valeurs réelles. Il est possible que l’égalité soit fausse, même si ce n’est pas le cas.

Une plage ou (type restreint) n'est pas un type de langage prédéfini (tel que Integer ou Char) et n'est donc associée à aucun identifiant. Ce type est une entrée utilisateur. En l'utilisant, nous pouvons définir un nouveau type qui contiendra des valeurs uniquement provenant d'une sous-plage limitée d'un certain type de base. Le type de base ne peut être qu'un type entier, un type Char (caractère) et l'un des types d'énumération introduits par le programmeur.

Pour introduire un nouveau type - une plage - vous devez indiquer dans le bloc de description du type TYPE le nom du type saisi et les limites de la plage à travers le symbole de plage spécial ".." (deux points d'affilée) :
TAPER
Siècle = 1..21 ; (sous-plage de type entier)
Lettres majuscules = "A". "Z"; (sous-plage de type Char)

Types de langage structuré

Les types structurés incluent : un tableau, un enregistrement, un ensemble, un fichier, etc. Tous définissent le ou les types d'une structure de données.

Tableau- une structure ordonnée de données du même type qui les stocke séquentiellement. Le tableau doit avoir des dimensions qui déterminent le nombre d'éléments stockés dans la structure. Tout élément d'un tableau peut être atteint par son index.

Le type de tableau est déterminé par la construction :
Tableau [plage] de ElementType ;

La plage entre crochets indique les valeurs d'index du premier et du dernier élément de la structure. Exemples de déclarations de types et de variables :

TYPE Vecteur = tableau de Réel ; VAR V1 : Vecteur ; V2 : tableau d’octets ;
Ici, la variable V1 est définie en utilisant le type Vector décrit ci-dessus ; le type de variable V2 est construit directement au stade de sa description.

En tant que type d'élément de tableau, vous pouvez également spécifier un tableau, formant ainsi des structures multidimensionnelles. Par exemple, une description d'une structure bidimensionnelle (matrice) ressemblera à ceci :
VAR M1 : tableau de tableau d'octets ; La même chose peut être écrite de manière beaucoup plus compacte : VAR M2 : tableau d'octets ;
Ici, les tableaux M1 et M2 ont exactement la même structure : une matrice carrée de taille 3x3.

On accède à un élément de tableau en spécifiant son index, par exemple :

Writeln(V1); (affichage du premier élément du tableau V1) readln(M2); (saisie du troisième élément de la deuxième ligne de la matrice M2)
Ceci conclut la leçon sur les types de données, le texte a été presque entièrement copié et collé (le lien sera ci-dessous), car Je ne vois pas l’intérêt de raconter ce matériel avec mes propres mots. Si la différence entre les types de données est au moins un peu claire, alors c'est déjà bien.

Un type de données définit un ensemble de valeurs valides et un ensemble d'opérations valides.

Types simples.

Les types simples sont divisés en ORDINAL et REAL.

1. TYPES DE COMMANDES , à leur tour, il y a :

un ensemble

Pascal définit 5 types entiers, qui sont définis en fonction du signe et de la valeur que prendra la variable.

Tapez le nom

Longueur (en octets)

Plage de valeurs

32 768...+32 767

2 147 483 648...+2 147 483 647

b) logique

Le nom de ce type est BOOLEAN. Les valeurs booléennes peuvent être l'une des constantes booléennes : VRAI (vrai) ou FAUX (faux).

c) symbolique

Le nom de ce type est CHAR - occupe 1 octet. 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.

2. TYPES RÉELS .

Contrairement aux types ordinaux, dont les valeurs sont toujours mappées sur une série d'entiers et sont donc représentées de manière absolument précise dans PC, les valeurs des types réels définissent un nombre arbitraire uniquement avec une certaine précision finie en fonction du format interne du nombre réel. .

Longueur du type de données numérique, octets

Nom du type de données numérique

Nombre de chiffres significatifs d'un type de données numérique

Plage d'ordre décimal d'un type de données numérique

2*1063 +1..+2*1063 -1

TYPES STRUCTURÉS

Les types de données structurées définissent une collection ordonnée de variables scalaires et sont caractérisées par le type de leurs composants.

Les types de données structurés, contrairement aux types simples, définissent de nombreuses valeurs complexes avec un nom commun. On peut dire que les types structurels déterminent une certaine manière de former de nouveaux types à partir de types existants.

Il existe plusieurs méthodes de structuration. Selon la méthode d'organisation et le type de composants dans les types de données complexes, on distingue les variétés suivantes : type régulier (tableaux) ; type combiné (enregistrements); type de fichier(fichiers); plusieurs types ; type de chaîne (chaînes); dans la version 6.0 et antérieure du langage Turbo Pascal, un type d'objet (objets) a été introduit.

Contrairement aux types de données simples, les données de type structuré se caractérisent par la multiplicité des éléments qui forment ce type, c'est-à-dire une variable ou une constante d'un type structuré a toujours plusieurs composants. Chaque composant, à son tour, peut appartenir à un type structuré, c'est-à-dire l'imbrication des types est possible.

1. Tableaux

Les tableaux dans Turbo Pascal sont similaires à bien des égards aux types de données similaires dans d'autres langages de programmation. Une particularité des tableaux est que tous leurs composants sont des données du même type (éventuellement structurées). Ces composants peuvent être facilement organisés et chacun d’entre eux est accessible simplement en spécifiant un numéro de série.

La description du tableau est spécifiée comme suit :

<имя типа>= tableau[<сп.инд.типов>] de<тип>

Ici<имя типа>- identifiant correct ;

Tableau, de – mots réservés (tableau, de) ;

<сп.инд.типов>- une liste d'un ou plusieurs types d'index, séparés par des virgules ; les crochets encadrant la liste sont une exigence de syntaxe ;

<тип>- tout type de Turbo Pascal.

Tous les types ordinaux peuvent être utilisés comme types d'index dans Turbo Pascal, à l'exception des types LongInt et range avec le type de base LongInt.

La profondeur d'imbrication des types structurés en général, et donc des tableaux, est arbitraire, donc le nombre d'éléments dans la liste des index de type (taille du tableau) n'est pas limité, cependant, la longueur totale de la représentation interne d'un tableau ne peut pas être supérieur à 65 520 octets.

2. Dossiers

Un enregistrement est une structure de données composée d'un nombre fixe de composants appelés champs d'enregistrement. Contrairement à un tableau, les composants (champs) d’un enregistrement peuvent être de différents types. Pour permettre de faire référence à l'un ou l'autre composant d'un enregistrement, les champs sont nommés.

La structure d'une déclaration de type de publication est :

< Nomtaper>=ENREGISTRER< coentreprise. des champs>FIN

Ici<имя типа>- identifiant correct ;

RECORD, END – mots réservés (enregistrement, fin) ;

<сп.полей>- liste des champs ; est une séquence de sections d'un enregistrement séparées par un point-virgule.

3 ensembles

Les ensembles sont un ensemble d'objets du même type qui sont logiquement connectés les uns aux autres. La nature des connexions entre objets est uniquement implicite par le programmeur et n'est en aucun cas contrôlée par Turbo Pascal. le nombre d'éléments inclus dans un ensemble peut varier de 0 à 256 (un ensemble qui ne contient pas d'éléments est dit vide).C'est l'inconstance du nombre de ses éléments qui fait que les ensembles diffèrent des tableaux et des enregistrements.

Deux ensembles sont considérés comme équivalents si et seulement si tous leurs éléments sont identiques et que l'ordre des éléments de l'ensemble est indifférent. Si tous les éléments d’un ensemble sont également inclus dans un autre, le premier ensemble est dit inclus dans le second.

La description du type d'ensemble est :

< Nomtaper>=ENSEMBLE DE< socles. taper>

Ici<имя типа>- identifiant correct ;

SET, OF – mots réservés (set, from) ;

<баз.тип>- le type de base des éléments de l'ensemble, qui peut être n'importe quel type ordinal sauf WORD, INTEGER et LONGINT.

Pour définir un ensemble, on utilise ce qu'on appelle le constructeur d'ensemble : une liste de spécifications des éléments de l'ensemble, séparées par des virgules ; la liste est entourée de crochets. Les spécifications d’éléments peuvent être des constantes ou des expressions d’un type de base, ainsi qu’un type de plage du même type de base.

4. Fichiers

Un fichier fait référence soit à une zone nommée mémoire externe Un PC ou un périphérique logique est une source ou un récepteur potentiel d'informations.

Tout fichier a trois caractéristiques

    il a un nom qui permet au programme de travailler avec plusieurs fichiers simultanément.

    il contient des composants du même type. Le type de composant peut être n'importe quel type Turbo Pascal, à l'exception des fichiers. En d’autres termes, vous ne pouvez pas créer un « fichier de fichiers ».

    encore la longueur fichier créé n’est en aucun cas précisé lors de son annonce et n’est limité que par la capacité des dispositifs de mémoire externes.

Type de fichier ou variable Type de fichier peut être réglé de trois manières :

< Nom>= FICHIER DE< taper>;

< Nom>=TEXTE;

<имя>= FICHIER ;

Ici<имя>- nom du type de fichier (identifiant correct) ;

FILE, OF – mots réservés (fichier, from) ;

TEXTE – nom du type de fichier texte standard ;

<тип>- tout type de Turbo Pascal, sauf les fichiers.

Selon le mode de déclaration, trois types de dossiers peuvent être distingués :

· fichiers typés (définis par la clause FILE OF...) ;

· fichiers texte(défini par le type TEXTE) ;

· fichiers non typés (définis par le type FILE).

À propos de la conversion types numériques Données pascales

En Pascal, les conversions implicites (automatiques) de types de données numériques sont presque impossibles. Une exception est faite uniquement pour le type entier, dont l'utilisation est autorisée dans les expressions de type réel. Par exemple, si les variables sont déclarées comme ceci :

Var X : entier ; Y : réel ;

puis l'opérateur

sera syntaxiquement correct, bien qu'il y ait une expression entière à droite du signe d'affectation et une variable réelle à gauche, le compilateur convertira automatiquement les types de données numériques. La conversion inverse automatiquement du type réel vers le type entier est impossible en Pascal. Rappelons combien d'octets sont alloués pour les variables de type entier et réel : 2 octets de mémoire sont alloués pour le type de données entier entier, et 6 octets pour le type réel. Il existe deux fonctions intégrées pour convertir un réel en entier : round(x) arrondit un réel x à l'entier le plus proche, trunc(x) tronque un réel en supprimant la partie fractionnaire.

La notion de type est l'un des concepts fondamentaux de tout langage de programmation. Les objets (constantes, variables, fonctions, expressions) sur lesquels le programme opère appartiennent à un type spécifique.

Taper est un ensemble de valeurs que les objets programme peuvent prendre, et un ensemble d'opérations autorisées sur ces valeurs.

Par exemple, les valeurs 1 et 2 sont de type entier et peuvent être additionnées, multipliées et autres opérations arithmétiques. Les significations « moniteur » et « Pascal » sont de nature linguistique ; elles ont leur propre ensemble d’opérations valides. Dans les langages les plus couramment utilisés, seuls des types strictement définis et pré-connus peuvent être utilisés. Pascal, ainsi que les types standards trouvés dans d'autres langages haut niveau, permet au programmeur de créer ses propres types.

Tous les types autorisés dans le langage Pascal sont divisés en deux : Grands groupes: simple et complexe (structuré).

Taper Gamme Mantisse, signes Mémoire requise (octets)
RÉEL 2,9*10E-39..1,7*10E38 11-12
CÉLIBATAIRE 1,5*10E-45..3,4*10E38 7-8
DOUBLE 5,0*10E-324..1,7*10E308 15-16
ÉTENDU 1.9*10E-4951..1.1*10E4932 19-20
COMP -2E+63+1..2E+63-1 10-20

L'utilisation efficace des types SINGLE, DOUBLE, EXTEND, COMP n'est possible que lorsque la directive ($N+) est activée. Par défaut, il est désactivé. Pour résoudre des problèmes d'ingénierie et économiques, des valeurs de type RÉEL suffisent.

Exemple

Var Res, Summa, Itog : réels ;

Booléen le type de données est décrit par l'identifiant BOOLEAN. Les variables et constantes de ce type ne peuvent prendre qu'une des deux valeurs suivantes : TRUE (vrai) ou FALSE (faux).

Exemple

Var Sel1, Sel2 : booléen ;

A,B,C,D : booléen ;

Les expressions booléennes occupent 1 octet de mémoire et sont utilisées dans les expressions logiques et relationnelles et pour contrôler l'ordre dans lequel les instructions du programme sont exécutées.

Littéral (caractère) le type est décrit par l'identifiant CHAR standard. Les constantes et variables de ce type peuvent prendre l'une des valeurs de code Tableaux ASCII. La signification d’une constante ou d’une variable de ce type est entourée d’apostrophes.

Par exemple, Var Bukva, Znak, Symbole : char ;

Boukva : = 'A'; Znak :=’+’; Symbole :=’!’

Les variables de type caractère occupent 1 octet en mémoire. L'utilisation de données char dans des expressions arithmétiques est interdite. Les opérations de comparaison peuvent être appliquées à des valeurs littérales, le résultat dépendant du numéro de la variable littérale ou de la constante dans la table de codes.

Sauf types standards données, Pascal prend en charge les types scalaires, défini par l'utilisateur. Ceux-ci inclus dénombrable Et intervalle les types . Ces types de données occupent 1 octet en mémoire, donc tout type personnalisé ne peut pas contenir plus de 255 éléments. Leur utilisation améliore considérablement la visibilité du programme, le rend plus recherche facile erreurs et économise la mémoire.

Type d'énumération est spécifié directement en listant toutes les valeurs que peut prendre une variable d'un type donné. Les valeurs individuelles sont séparées par des virgules et la liste entière est placée entre parenthèses.

Format

Taper<имя типа>=(<значение1, значение2, ..., значениеN>);

Var<идентификатор, ...>: < имя типа>;

Exemple

Type Saison = (Printemps, Été, Automne, Hiver);

Var S1, S2 : Saison ;

Automne : (septembre, octobre, novembre) ;

DANS dans cet exemple le type de données explicitement décrit de l'utilisateur Season est affiché. Leurs significations sont déterminées - les désignations des saisons. Les variables S1 et S2 ne peuvent prendre qu'une seule des valeurs répertoriées. Toute tentative de leur attribuer une autre valeur provoquera une interruption logicielle. Le troisième type d'énumération est anonyme (n'a pas de nom) et est spécifié en énumérant les valeurs dans la section Var. L'automne est une variable de ce type et peut prendre les valeurs septembre, octobre, novembre. Ainsi, n’importe quel type peut être spécifié, mais cela n’est pas toujours acceptable. La première méthode est certainement plus compréhensible et plus conforme à la nature du langage Pascal.

Type d'intervalle vous permet de spécifier deux constantes qui définissent les limites de la plage de valeurs pour une variable donnée. Pour chaque opération sur une variable d'intervalle, le compilateur génère des routines de contrôle pour déterminer si la valeur de la variable reste dans sa plage spécifiée. Les deux constantes doivent appartenir à l’un des types standards autres que réel. La valeur de la première constante doit nécessairement être inférieure à la valeur de la seconde.

Format

Taper<имя типа> = <константа1> .. <константа2>;

Var<идентификатор>: < имя типа>;

Exemple

Tapez Jours = 1.. 31 ;

Var Work_d, Free_d : jours ;

Dans cet exemple, les variables Travail_d, Libre_d avoir du type Jours et peut prendre n'importe quelle valeur dans la plage 1. . 31.

La sortie de la plage provoque une interruption logicielle.

Vous pouvez définir un type d'intervalle en définissant les limites de plage non pas par les valeurs des constantes, mais par leurs noms :

Const Min = 1 ; Maximum = 31 ;

Tapez Jours = Min .. Max ;

Var Work_d, Free_d : jours ;

Types structurés les types de données sont basés sur des types scalaires et peuvent en contenir diverses combinaisons. Ils définissent une collection ordonnée d'éléments scalaires et sont caractérisés par le type de leurs composants. Le langage Pascal fournit les types de données structurées suivantes :

doubler - une séquence de caractères entourée d'apostrophes ;

tableau - un type de données structuré composé d'un nombre fixe d'éléments du même type, accessible par index ;

un tas de - un ensemble d'objets sélectionnés en fonction d'une caractéristique ou d'un groupe de caractéristiques qui peuvent être considérés dans leur ensemble ;

enregistrer - un ensemble d'un nombre fixe de composants de différents types ;

déposer- une séquence de composants de même type et de même longueur.

Deux types plus structurés (procédural et objet) sont difficiles à mapper aux données dans une représentation conventionnelle.

Image 1- Un ensemble de types de base du langage Pascal

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 en Delphi, sa plage est comprise entre -2147483648…2147483647, tandis qu'en Turbo Pascal, le type de données Entier représente des nombres compris entre -35 768 et 32 ​​767. En Free Pascal, la plage de valeurs de type Entier 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.

Donc, les types entiers Données gratuites 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
Octet 1 0…255
Raccourci 1 -128…127
Petitint 2 -35768…32767
Mot 2 0…65535
Entier 2 ou 4 Dépend du mode de compilation
Cardinal 4 0…4294967295
Entier long 4 -2147483648…2147483647
Mot long 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QMot 8 0...18446744073709551615

NOTE
En libre Types pascals Int64 Et QMot ne 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 une chronique TAPER les identifiants de type de données sont donnés ( mots clés, qui indique au compilateur de quel type sont les données). Vous apprendrez à utiliser ces identifiants dans les leçons suivantes.

Dans une chronique TAILLE 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é différents types: Octet, Mot, Cardinal etc. Cependant, un nombre comme Cardinal occupera 4 octets en mémoire, tandis qu'un nombre comme Octet– 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 Octet, 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).

Dans une chronique GAMME spécifie la plage de valeurs sur laquelle le type de données opère. Par exemple, un nombre comme Octet 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)); Writeln("Mot long : ", Faible(Mot long), "..", Haut(Mot long)); Writeln("Int64 : ", Faible(Int64), "..", Élevé(Int64)); Writeln("QWord : ", Faible(QWord), "..", Élevé(QWord)); Lire ; fin.

Fonction standard Faible définit valeur minimum Type de données. Funtskia Haut définit la valeur maximale. Avec fonctions ÉcrireLn Et LireLn vous vous connaissez déjà un peu. Nous parlerons plus en détail des sous-programmes (procédures et fonctions) dans la section correspondante.

Enfin, je vais vous expliquer comment les données entières sont écrites dans le programme. Oui, comme partout ailleurs - il suffit d'écrire le numéro, sans guillemets ni autre chose caractères supplémentaires. Par exemple, comme ça

10
178
35278

C'est vrai, cela s'applique aux nombres dans système décimal Compte. Vous savez sûrement déjà qu’il existe d’autres systèmes. Les systèmes numériques les plus utilisés sont le binaire, le décimal et l’hexadécimal.

Free Pascal prend en charge quatre formats d'entiers :

  1. Notation décimale. Juste un chiffre, comme 10.
  2. Notation hexadécimale. Un numéro préfixé par $. Par exemple, le nombre hexadécimal $10 est égal au nombre décimal 16.
  3. Notation octale. Un numéro préfixé par &. Par exemple, l'octal &10 est égal au décimal 8.
  4. Notation binaire. Un nombre préfixé par %. Par exemple, nombre binaire%10 est égal au 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 code source 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+)

Lancer le programme. Regardez la plage de valeurs de type Entier. Conclure.

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.

La notion de données est une des notions clés en programmation et en 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 plus types simples données, 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é.

Taper 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. Certains peuvent également être appliqués caractéristiques standards et les procédures.

Type réel

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

Taper 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

Peut être fait sur eux grande quantité opérations et fonctions que sur les 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 K doit être de 64 plus de code le 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 plus de numéro variables dedans. 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 certains Quantité limitée 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) ;

À ce type les opérations relationnelles sont applicables, 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.

Forme générale:

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