La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam

Description et utilisation

Le type énumété est défini comme un ensemble d'identificateurs, du point de vue de la langue de la lecture du même rôle que les constantes nommées habituelles, mais liées à ce type. Une description classique de la liste de types dans le langage Pascal ressemble à ceci:

Type Cardsuit \u003d (clubs, diamants, cœurs, piques);

Voici un type de données de type de type AD-Type (costume de cartes), qui peut être n'importe laquelle des quatre constantes répertoriées. Tapez la variable Cardsuit peut prendre l'une des valeurs des clubs, des diamants, des cœurs, des pelles, autorisé à comparer les valeurs du type d'énumération à l'égalité ou à l'inégalité, ainsi que de les utiliser dans les opérateurs de sélection (dans le cas de Pascal) comme des valeurs d'identification des options.

L'utilisation d'énumérations vous permet de faire codes source Les programmes sont plus lisibles, car ils vous permettent de remplacer les "numéros magiques" codant sur certaines valeurs pour lire les noms.

Basé sur des énumérations dans certaines langues, des ensembles d'ensembles peuvent être créés. Dans de tels cas, l'ensemble est compris (et décrit) comme un ensemble non ordonné valeurs uniques Type de liste.

Le type de type peut être utilisé dans les déclarations de variables et paramètres formels de fonctions (procédures, méthodes). Les valeurs de la liste peuvent être attribuées aux variables appropriées et transmises via les paramètres des types correspondants dans la fonction. De plus, une comparaison des valeurs du type énuméré sur l'égalité et l'inégalité est toujours prise en charge. Certaines langues prennent également en charge les autres opérations de comparaison pour les valeurs des types répertoriés. Le résultat de la comparaison de deux valeurs énumérées dans de tels cas est déterminé, en règle générale, la procédure de suivi de ces valeurs dans la déclaration de types - la valeur que dans l'annonce de type est évaluée précédemment, elle est considérée comme " Moins "la valeur se produisant plus tard. Parfois, un type indiqué ou une plage de valeurs de type répertoriés peut également être utilisé comme type d'index pour un tableau. Dans ce cas, pour chaque valeur de la plage sélectionnée dans la matrice, il y a un élément et l'ordre réel des éléments correspond à l'ordre des valeurs dans le type AD.

Ventes

Habituellement, dans le processus de compilation des valeurs des valeurs de transfert, sont présentés à l'aide d'entiers. Selon le langage de programmation spécifique, une telle représentation peut être complètement masquée à partir d'un programmeur, soit accessible à celle-ci en utilisant certains «manœuvres de contournement» (par exemple, la transformation forcée du type de valeur de transfert à la valeur du type «Entier». ), voire gérés par le programmeur (dans de tels cas, le programmeur a la capacité d'indiquer explicitement quels numéros ou certaines valeurs du type de transfert seront codées). Toutes les options ont leurs propres côtés positifs et négatifs. D'une part, la possibilité d'utiliser les valeurs numériques des constantes constituant l'énumération de type, en particulier lorsqu'il l'abuse, prive l'utilisation de ces types et crée un risque d'erreurs (lorsque des valeurs numériques sont utilisées pour lesquelles Il n'y a pas de constantes correspondantes dans le type). D'autre part, le contrôle explicite des valeurs donne quelques caractéristiques supplémentaires. Par exemple, vous permet d'utiliser la liste de types lors de l'organisation d'une interface avec des modules écrits dans d'autres langues, s'ils utilisent ou retournés sur les valeurs codées par des entiers à partir d'un certain ensemble prédéfini.

Une autre possibilité que les types énumérés soient indiqués au niveau de la mise en œuvre de la langue - Économies de mémoire. Avec un petit type de liste de type pour stocker la valeur de ce type, plusieurs bits sont suffisants (le type Cardsuit ci-dessus nécessite seulement deux bits à la valeur, tandis que l'entier standard sur la plupart des architectes utilisées prend 32 bits - 16 fois plus ), et le compilateur peut utiliser ce fait est de sceller le stockage des données en mémoire. Il peut être particulièrement important si plusieurs valeurs de listes de types sont stockées dans un enregistrement - enregistrements d'étanchéité lors du traitement de grandes quantités peuvent libérer beaucoup de mémoire. Vrai, il convient de noter que les compilateurs ne mettent généralement pas en œuvre cette possibilité au moins ces derniers temps. mémoire d'ordinateur Significativement chuté.

Critique

Le type d'énumération est traditionnel pour les langages de programmation développés, est utilisé assez largement et est souvent perçu comme quelque chose d'acquis. Cependant, ce type ne fait pas non plus de critique de la part des théoriciens et des praticiens de la programmation. Ainsi, lorsque vous développez une langue de programmation, Oberon, des types énumérés sont tombés dans la liste des fonctionnalités qui ont été supprimées de la langue. Niklaus Wirth, le développeur de la langue, appelé les raisons suivantes:

D'autre part, par exemple, en Java, contenant à l'origine un type indiqué, ce type a ensuite été introduit pour des raisons non seulement de la commodité, mais également de la fiabilité: le problème de l'utilisation au lieu de la liste des groupes de constantes nommées est qu'il n'y a pas de contrôle du compilateur comme unicité des constantes de valeurs et la possibilité d'une affectation aléatoire valeurs variablesne correspondant à aucune de ces constantes.

Description des énumérations dans différentes langues

Ada

Cardsuit d'énormes (clubs, diamants, coeurs, piques);

Les langages dynamiques de la saisie faible avec la syntaxe C-type (par exemple, Perl ou JavaScript), en règle générale, n'ont pas la liste.

C ++.

C #

Cardsuit (clubs, diamants, pelles, coeurs);

Java.

Enum Cardsuit (Clubs, Diamants, Spades, Cœurs)

Haskell.

Dans certaines langages de programmation (par exemple, à Haskell), avec l'aide de types algébriques, vous pouvez imiter des énumérations. Par exemple, un type booléen est ainsi codé contenant deux identifiants pour représenter les valeurs de la vérité:

DATA BOOL \u003d FALSE | Vrai.

Remarques


Fondation Wikimedia. 2010.

Wikipédia

Pour des raisons techniques, Bool est redirigé ici. À propos de Bool peut être trouvé ici: stdbool.h. Logique, Boolean (Type de données booléen français ou logique) Type de données type primitif données en informatique qui peut prendre deux ... Wikipedia

Dans la théorie de la programmation, tout type, dont les valeurs sont les valeurs de certains autres types, des concepteurs «WedROGOGOGO» de type algébrique. En d'autres termes, le type de données algébriques comporte un ensemble de concepteurs de type, chacun desquels ... Wikipedia

Un entier, type de données entier (ENG. INTEGER), en informatique, l'un des types de données les plus simples et les plus courants dans les langages de programmation. Utilisé pour représenter des entiers. Les nombreux chiffres de ce type représentent ... ... Wikipedia

Type de type de données primitif (intégré, basique) fourni par la langue de programmation comme une unité de langue intégrée de base. Selon la langue et sa mise en œuvre, un ensemble de tels types peut varier considérablement. Il est déterminé ... ... Wikipedia

Ce terme a également d'autres valeurs, voir définie (valeurs). De nombreuses structures de type et de données en informatique sont la mise en œuvre d'un ensemble d'objets mathématiques. Ces données de type vous permettent de stocker un nombre limité de valeurs ... ... Wikipedia

Certaines langages de programmation fournissent un type de données spécial pour les nombres intégrés. La présence d'un type intégré simplifie le stockage de valeurs intégrées et en calculant sur eux. Contenu 1 Arithmétique sur complexe 2 Support en langues ... Wikipedia

Pour améliorer cet article sur technologies de l'information De préférence?: Rechercher et organiser sous forme de notes de bas de page Références aux sources autoritaires confirmant écrit. Slip Notes de bas de page, faire plus précis ... Wikipedia

Variablesappelez les valeurs dont peut changeren cours d'exécution du programme. Chaque variable est définie par son nom unique, construite selon les règles spécifiées au début du chapitre. Le nom maximum possible du nom dépend de la mise en oeuvre de Pascal, de manière théoriquement peut être donnée de noms de variables jusqu'à 63 caractères, ce qui n'est guère pertinent - généralement les noms de 5 à 10 caractères ne sont pas supérieurs à 5 à 10 caractères.

Étant donné que toutes les données de la mémoire de l'ordinateur sont stockées sous forme numérique et un système de numéros binaires, à l'exception du nom, la variable doit être attribuée et un typedéterminant gamme de valeursVariable reçue et méthode de son traitementmachine. Expliquons l'exemple de l'exemple. Comme on peut le voir à partir de l'annexe 1, la grande lettre latin "A" a un code décimal 65, ou 01000001 en représentation binaire. Aucune information supplémentaire sur taperles données stockées dans une cellule de mémoire, l'ordinateur serait impossible de décider exactement de représenter exactement ces données - le numéro 65, le code du symbole "A" ou autre chose. Dans n'importe quel langage de programmation, y compris à Pascal, il existe un ensemble de types standard sur lequel un ou plusieurs éléments de cellules de mémoire peuvent être attribués. Les informations sur les types de données de Pascal sont pratiques à être réduites à la table. Les lignes de cette table seront commandées par types d'ancienneté, Du plus jeune »nécessitant le plus petit nombre d'octets de présentation et, en conséquence, représentant la plus petite gamme de valeurs possibles, au" Senior ", représentant la plus grande gamme de valeurs. Le tableau ne montre pas tous possible, mais seuls les principaux types de données Pascal.

Mot-clé Pascal

Titre et description Type

Volume de la mémoire, octet

Gamme de valeurs possibles

Logic: stocke une variable logique

Symbole: stocke le code d'un caractère à partir du jeu de codes ASCII

de 0 à 255 inclus (2 8 \u003d 256)

Entier

Intermininés sans signe

± 2 16 - La gamme est deux fois plus que le 16ème bit n'est pas occupé sous le signe

Long Entier: Pour la présentation de grandes valeurs entier

Nombre réel avec une précision de représentation à 11-12 signe dans la partie fractionnée

~ 2.9*10 -39 - 1.7*10 38

Nombre réel avec une précision de présentation jusqu'à 15-16 signes en partie fractionnée

~ 5*10 -324 – 1.7*10 308

Séquence de caractères de chargeline de 1 à 255

2-256 (données de rangée + 1 octet pour stocker sa longueur)

Toutes les lignes de texte constituées de caractères imprimés

Théoriquement, 1 bit est théoriquement pour écrire une variable, mais l'unité de mémoire adressable minimale est de 1 octet (voir annexe 1). Dans la même demande, spécifiez exactement comment la quantité de mémoire dans les octets allouée à la variable affecte la plage de valeurs représentée par celle-ci.

Les types entiers et symboliques sont généralisés appelés ordinalEn soulignant cela que ces types ont un ensemble fini de valeurs pouvant être commandées ou répertoriées. Rappelez-vous que les valeurs réelles sont stockées dans la mémoire de l'ordinateur autrement que - à savoir une totalité de la manche et de la commande.

Bien entendu, la tâche de la sélection correcte des types de données est entièrement sur le programmeur. Par exemple, si un compteur de votre programme peut prendre des valeurs entières de 1 à 100000, il serait incorrect de la décrire comme une variable de type entier - après tout, 2 15 \u003d 32768 et lorsque le compteur de cette magnitude est atteint , cela va arriver réinitialiserses valeurs seront égales à -32768. Raisonnable dans ce cas serait une description du comptoir comme une variable typelongint.

Les variables sont décrites dans le programme par l'opérateur d'espèces suivant:

var list1: type1;

LIST2: TYPE2;

Listhn: typen;

Ici liste- ensemble de noms de variables séparés par des virgules (ou une variable), et un type- l'un des types de données discutés ci-dessus. Par exemple, conception

décrit 2 variables de matériau avec des noms TIR, ainsi qu'une variable entière avec le nom. Mot-clévaracan et duplicata, mais il n'y a généralement pas de tel besoin. AbréviationsFractées du mot anglais "variable" (variable).

La classe expliquera l'algorithme de création de types de données d'utilisateur à Pascal (type). Des exemples seront démontés.

Les types de données à Pascal sont divisés en simples et complexes.

Les types simples incluent Standard, répertorié et limité.

À des types complexes - Arrayes, ensembles, enregistrements, fichiers. Les éléments de types complexes peuvent être des types simples et complexes. Nous vous familiariserons avec des types de données complexes plus tard.

L'un des types les plus courants est ordinal type de standard.
Type de standard Indique le dernier ensemble de valeurs linéaires. À cela appartient habituellement types entiers, octets, symboliques et logiques.

Nouveaux types de données (personnalisés) Nécessaire principalement pour la visibilité et la commodité:

Exemple: Matrix est défini sur 10 x 50 dimension. Effectuer la description de la matrice à l'aide du type de données utilisateur

pROCÉDURE P (A: Array d'entier);

Mais vous devriez créer un type de données et enregistrer comme ceci:

1 2 Type vectoriel \u003d tableau [1 .. 10] d'entier; VAR PROCÉDURE P (A: Vecteur);

type vectoriel \u003d tableau d'entier; VAR PROCÉDURE P (A: Vecteur);

Exemples de la description des tableaux en utilisant de nouveaux types

type vectoriel \u003d tableau d'entier; Matritsa \u003d tableau de vecteur;

  • 1 Type Matritsa \u003d Array [1 .. 8] de tableau [1 .. 10] d'entier;

    type Matritsa \u003d Tableau de la matrice d'entier;

  • 1 Type matritsa \u003d tableau [1 .. 8, 1 .. 10] d'entier;

    type matritsa \u003d tableau d'entier;

  • Dans l'exemple suivant, variables c. et rÉ. Décrit la même chose:

    1 2 3 4 5 6 Type vectoriel \u003d tableau [1 .. 10] d'entier; Matritsa \u003d tableau [1 .. 8] de vecteur; Var a, b: vecteur; C: matritaitsa; D: Array [1 .. 8] de vecteur;

    type vectoriel \u003d tableau d'entier; Matritsa \u003d tableau de vecteur; Var a, b: vecteur; C: matritaitsa; D: tableau de vecteur;

    Type 1.: Définir des tableaux A, B et C. Trouvez les éléments minimaux arithmétiques moyens de la matrice (utilisez la formation d'un tableau et).
    Lors de la description des procédures, utilisez types personnalisés Données

    Type énuméré et type d'intervalle à Pascal

    Type énuméré

    Le programme peut utiliser des variables de ce type, qui ne correspondent à aucun des types standard.

    Donc, le type peut être défini par la liste des valeurs lors de la déclaration; variable ce type Peut prendre l'une de ces valeurs.

    Ces valeurs ne peut pas être des lignes, vous ne pouvez pas vous retirer et vous ne pouvez pas entrer dans un ordinateur Avec de l'aide lire les opérateurs et écrire.

    Considérons un exemple de création d'un type énumété à Pascal:

    Type PT \u003d (Word1, Word2, ... Wordn); Var w: pt;

    type PT \u003d (Word1, Word2, ... Wordn); Var w: pt;

  • identificateur de type PT (arbitraire),
  • word1, Word2 ... - des valeurs spécifiques pouvant recevoir une variable d'appartenance à un type PT
  • les valeurs de ce type sont considérées comme ordonnées, c'est-à-dire Description du type à la fois introduit la commande word1.
  • Type d'intervalle

    Type d'intervalle Spécifie un sous-ensemble spécifique de valeurs que cette variable peut recevoir. Créé en définissant la plus petite et la plus grande valeur du type ordinal. Comme une constante (valeurs minimum et maximum), des valeurs de tout types simples En plus des vrais types.

    Considérons un exemple d'annonce de type intervalle:

    A: min .. max;
  • uNE. - variable d'intervalle
  • min. - En bout de ligne
  • max - bordure de sous-ensemble supérieure
  • les limites de la gamme sont séparées par deux points.
  • la frontière min.devrait toujours être moins max
  • constantes min.et maxdoit appartenir au même type. Ils définissent le type de base de variable uNE..
  • Partage des types de transfert et d'intervalles

    La variable du type d'intervalle peut être définie avec la base du type de base répertorié.. Considérons un exemple:

    Exemple: Si la variable b. peut prendre l'une des valeurs rouge, jaune, vert.Cette variable peut être décrite comme suit: B: rouge..green; Type de base pour b. est de type couleur:

    Type couleur \u003d (rouge, jaune, vert, bleu); Var b: rouge .. vert; Commencer b: \u003d rouge; Writeln (b); B: \u003d jaune; Writeln (b); B: \u003d vert; Writeln (b); Fin de lecture.

    type couleur \u003d (rouge, jaune, vert, bleu); Var b: rouge..green; Commencer b: \u003d rouge; Writeln (b); B: \u003d jaune; Writeln (b); B: \u003d vert; Writeln (b); Fin de lecture.

    DANS cet exemple Type Color - est basique. La variable de type intervalle est définie à l'aide du type de base répertorié.

    Exemple: Il est connu combien de jours à chaque mois de l'année. Combien de jours en été?
    31,28,31,30,31,30,31,31,30,31,30,31

    Une des solutions de cette tâche ressemble à ceci:

      Solution de spectacle:

      1 2 3 4 5 6 7 8 Const dni: tableau [1. 12] d'octet \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); Var S, I: Integer; Commencer s: 0; Car je: \u003d 6 à 8 do s: \u003d s + dni [i]; (Mois d'été - 6, 7, 8) Writeln (s) fin.

      const DNI: réseau d'octets \u003d (31 28,31,30,31,30,31,31,30,30,30,31); Var S, I: Integer; Commencer s: 0; Car je: \u003d 6 à 8 do s: \u003d s + dni [i]; (Mois d'été - 6, 7, 8) Writeln (s) fin.

      Le code cette solution Il n'a plus la meilleure visibilité, en outre, il est nécessaire de calculer le nombre des mois du début et de la fin de l'été (6 et 8).
      La commodité et la visibilité de tels programmes peuvent être améliorées comme suit:

      Solution de spectacle:

      1 2 3 4 5 6 7 8 9 Type MES \u003d (janvier, février, mars, avril, mai, juin, juillet, septembre, octobre, novembre, décembre, décembre); (Junaire, février, mars, août, septembre, octobre, août, septembre); Const DNI: Array [janvier .. Décembre] d'octet \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); Var s: entier; I: MES; (Compteur de cycle variable i est défini par le type MES, pas entier) Commencer s: 0; Car je: \u003d juin à août fait s: \u003d s + dni [i]; Writeln (s) fin.

      Type Mes \u003d (janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre, décembre); (Junaire, février, mars, août, septembre Const DNI: réseau d'octets \u003d (31 28,31,30,31,30,31,31,30,30,30,31); Var s: entier; I: MES; (Compteur de cycle variable i est défini par le type MES, et non entier) commence S: \u003d 0; Car je: \u003d juin à août fait s: \u003d s + dni [i]; Writeln (s) fin.

    Type 2: Déterminez par le nom du jour de la semaine, que ce soit ou la journée de travail.

  • Déterminez le type énumérable avec les valeurs des jours de la semaine ( lUN., mar., mER, jeu., ven, sAM., soleil.).
  • Dans le programme attribue la valeur de la variable (des valeurs de type, par exemple, lUN.).
  • Vérifiez la variable: si la valeur du samedi ou du dimanche consiste à émettre un message. "Production!"Sinon "Nous travaillons!".
  • Type 3: Selon le mois de l'année, émettez un message "du froid" - Si le mois d'hiver et "Chauffer" - Si été.

  • Déterminez le type indiqué avec les noms des mois de l'année.
  • Déclarez une variable relative à ce type.
  • Dans le programme attribue la valeur de la variable (à partir des valeurs du type).
  • Vérifiez la variable: Si la valeur fait référence au mois d'hiver, - Émettez un message "du froid" Sinon, - "Chauffer".
  • Mettre en œuvre de plusieurs manières.
  • Writeln (pribitie) fin.

    var otpravlenie, priorité: octets; Commencer otpravlenie: \u003d 22; Pribitie: \u003d otpravlenie + 10; Writeln (pribitie) fin.

    le programme au lieu de la réponse "8" imprimera "32".
    L'introduction d'un type de gamme limitée évitera un résultat incorrect, mais le compilateur donnera toujours une erreur:

    1 2 3 4 5 6 Var otpravlenie, pribitie: 0 .. 24; Commencer otpravlenie: \u003d 22; Pribitie: \u003d otpravlenie + 10; Writeln (pribiiedeva); Var A: Znak; Commencer un: \u003d Lev; SI UN.<= strelets then writeln ("огонь" ) ; if (a>\u003d vesi) et (un<= bliznetsi) then writeln ("воздух" ) ; if (a>\u003d Rak) et (un<= ribi) then writeln ("вода" ) ; if (a>\u003d kozerog) et (un<= deva) then writeln ("земля" ) ; end .

    tapez znak \u003d (four, lev, striéts, Vesi, Vodoley, Bliznetsi, Rak, Skorpion, Ribi, Kozerog, Telets, Deva); Var A: Znak; Commencer un: \u003d Lev; SI UN.<=strelets then writeln("огонь"); if (a>\u003d vesi) et (un<=bliznetsi) then writeln ("воздух"); if (a>\u003d Rak) et (un<=ribi) then writeln ("вода"); if (a>\u003d kozerog) et (un<=deva) then writeln ("земля"); end.

    Type 5: Selon le nom de la fleur, émettez la saison de l'année qui se réfère:

  • Printemps: Snowdrop, Iris, Narcisse
  • Été: camomille, Dailed, Mac
  • Automne: Astra, Chrysanthemum, FLOX
  • Lorsque vous décrivez la variable, vous devez spécifier son type. Le type de variable décrit un ensemble de valeurs qu'il peut accepter et des actions pouvant être complétées ci-dessus. Type Description Spécifie l'identifiant qui signifie le type.

    Les types simples sont divisés en standard (ordinal) et répertoriés (limité).

    Types standard

    Turbo-Paskal a quatre types standard intégrés: entier (entier), réel (réel), booléen (logique) et char (symbole).

    Type d'entier (entier)

    À Turbo Pascal, il y a cinq types d'entiers intégrés: raccourcis (entier court), entier (entier), longint (entier long), octet (octet-long) et mot (longueur de mot). Chaque type indique un sous-ensemble spécifique d'entiers, comme indiqué dans le tableau suivant.

    Types entiers intégrés.

    Varier

    Format

    8 bits avec un signe

    16 bits avec un signe

    2147483648 +2147483647

    32 bits avec un signe

    8 bits sans signe

    16 bits sans signe

    Les actions arithmétiques sur les opérandes de type entier sont effectuées conformément aux règles suivantes:

    1. Le type de constante entière est un type entier intégré avec la plus petite plage, qui inclut la valeur de toute cette constante.
    2. Dans le cas d'une opération binaire (opération à l'aide de deux opérandes), les deux opérandes sont converties à leur type partagé avant que l'action soit effectuée au-dessus d'eux. Le type commun est le type entier intégré avec la plus petite plage, qui inclut toutes les valeurs possibles des deux types. Par exemple, un type commun pour un tout et une longueur entière en octets est un entier et le type commun pour un tout et une longueur entière dans le mot est un entier long. L'action est effectuée conformément à la précision du type total et le type de résultat est un type général.
    3. L'expression à droite dans la déclaration d'affectation est calculée indépendamment de la taille de la variable à gauche.

    Opérations effectuées sur des entiers:

    "+" - Ajout

    "-" - Sous-traction

    "*" - multiplication

    SQR - Construction de Square

    Div - après la fission de la partie fractionnée rejetée

    Mod - obtenir un équilibre complet après la division

    ABS - Numéro de module

    Aléatoire (x) - nombre aléatoire de 0 à x

    A: \u003d 100; B: \u003d 60; A DIV B Résultat - 1 A MOD B Résultat - 40

    Les variables entières sont décrites comme suit:

    var liste des variables: type;

    Par exemple: var a, p, n: entier;

    Type réel (réel)

    Le type réel comprend un sous-ensemble de nombres réels, qui peuvent être représentés dans un format de semi-flûte flottant avec un nombre fixe de nombres. Un enregistrement d'un point-virgule flottant comprend généralement trois valeurs - M, B et E - de telle manière que M * B E, où B est toujours 10, et M et E sont des valeurs entières dans la plage de types réels. Ces valeurs M et E déterminent en outre la plage et la précision du type réel.

    Il existe cinq types de types réels: réel, célibataire, duble, exnende, comp. Les vrais types diffèrent dans la plage et la précision des valeurs associées

    Numéros de gamme et décimaux pour de vrais types

    Varier

    Nombres

    2.9x10e-39 à 1.7x10e 38

    1.5x10e-45 à 3.4x10e 38

    5.0x10e-324 à 1.7x10e 308

    3.4x10e-493 à 1.1x10e 403

    2E 63 à 2E 63

    Opérations effectuées au-dessus des nombres réels:

    • Toutes les opérations admissibles pour les entiers.
    • SQRT (x) -Korn Square parmi x.
    • Sin (x), cos (x), arctan (x).
    • Ln (x)-VOCARITHM.
    • Exp (x) -exponent x (e x).
    • Exp (x * ln (a)) - Erend (A x).
    • Type Fonctions de conversion:
      • Trunc (x) est une partie fractionnaire;
      • Rond (x) -crug.
    • Quelques règles d'opérations arithmétiques:
      • Si dans l'action arithmétique, il y a un nombre de type réel et entier, le résultat aura un type de réel.
      • Tous les composants de l'expression sont enregistrés en une seule ligne.
      • Seuls les crochets ronds sont utilisés.
      • Il est impossible de mettre deux signes arithmétiques dans une rangée.

    Décrit des variables de type réel comme suit:

    Var liste des variables: type;

    Par example:

    Var d, g, k: réel;

    Type de symbole (char)

    K Type Char appartient à tout symbole enfermé dans des apostrophes. Pour représenter l'Apostrophe sous forme de variable symbolique, il est nécessaire de le conclure à l'Apostrophe: '' ''.

    Chaque symbole a son propre code et son numéro. Les numéros de séquence des nombres 0.1..9 sont commandés ascendants. Les numéros de séquence de lettres sont également commandés en ascension, mais ne se suivent pas nécessairement mutuellement.

    Données symboliques Signes de comparaison applicables:

    > , < , >=, <=, <> .

    Par exemple: 'a'< ‘W’

    Fonctions qui s'appliquent aux variables symboliques:

    1. Ord (x) - définit le numéro de séquence du symbole X. ORD ('A') \u003d 97;
    2. CHR (x) - détermine le caractère par numéro. CHR (97) \u003d 'A';
    3. Pred (x) - donne un symbole face au symbole de X. Pred ('B') \u003d 'A';
    4. SUPC (x) - Problime un symbole suivant après le symbole X. Succ ('A') \u003d 'B';

    Type énuméré

    Le type de données indiqué est nommé car il est défini sous la forme de transfert de constantes dans une commande strictement définie et dans une quantité strictement définie. Le type énuméré consiste en une liste de constantes. Les variables de ce type peuvent faire la valeur de l'une de ces constantes. La description du type énuméré a la forme:

    Taper<имя типа>\u003d (liste des constantes); Var.<имя переменной>:<имя типа>;

    où<список констант> - Il s'agit d'un type spécial de constantes définies par la virgule et ayant son propre numéro de série, à partir de 0.

    Par example:

    Type direction \u003d (nord, sud, ouest, est); mois \u003d (juin, juillet, août, janvier); Capacité \u003d (seau, baril, bidon, réservoir); VAR TOUR: Direction; Départ: lundi; Volume: capacité; VAR TOUR: (SPE, Sud, Occident, Est); Départ: (juin, juillet, août, janvier); Volume: (seau, baril, bidon, réservoir);

    Vous pouvez effectuer de tels opérateurs d'affectation:

    Tourner: \u003d sud; Départ: \u003d août; Volume: \u003d réservoir;

    mais il est impossible d'effectuer des missions mixtes:

    Départ: \u003d Sud; Volume: \u003d août;

    Les fonctions suivantes sont appliquées aux variables de type répertoriée:

    1. Numéro de séquence ORD

    2. Elément précédent

    3. Succ est l'élément suivant.

    Pred (baril) \u003d seau; Succ (sud) \u003d ouest; ORD (juillet) \u003d 1;

    Les variables de la liste peuvent être comparées, car elles sont commandées et numérotées. Alors expressions: nord< юг, июнь < январь имеют значения TRUE, а юг>ouest et Buck<бочка значение FАLSE.

    Type limité

    Si la variable n'accepte pas toutes les valeurs de son type, mais uniquement dans une certaine plage, elle peut être considérée comme une variable de type limité. Chaque type limité est défini par des restrictions imposantes sur les types de base.

    Décrit comme ceci:

    Taper<имя типа>\u003d Constant1 .. Constanta2

    Dans le même temps, les règles suivantes doivent être suivies:

    1. Les deux constantes limitées doivent être un type.
    2. En tant que type de base, vous pouvez utiliser n'importe quel type simple que valide (réel).
    3. La valeur initiale lors de la détermination du type limité ne doit pas être supérieure à la valeur finale.
    type index \u003d 0 ..63; Lettre \u003d 'a' .. 'z'; Var char1, char2: lettre; A, G: index;

    Peut être décrit immédiatement dans les descriptions des variables:

    Var a, g: 0 ..63; Char1, Char2: 'A' .. 'Z'.

    Dont de nombreuses valeurs sont une liste limitée d'identificateurs.

    Youtube encyclopédique.

    • 1 / 5

      Le type énumété est défini comme un ensemble d'identificateurs, du point de vue de la langue de la lecture du même rôle que les constantes nommées habituelles, mais liées à ce type. Une description classique de la liste de types dans le langage Pascal ressemble à ceci:

      type Cardsuit \u003d (clubs, diamants, cœurs, piques);

      Voici un type de données de type de type AD-Type (costume de cartes), qui peut être n'importe laquelle des quatre constantes répertoriées. La variable de type Cardsuit peut prendre l'une des valeurs de clubs, des diamants, des cœurs, des piques, il est autorisé à comparer les valeurs du type d'énumération à l'égalité ou à l'inégalité, ainsi que de les utiliser dans les opérateurs de sélection (dans Pascal-Case ) comme des valeurs d'identification des options.

      L'utilisation d'énumérations vous permet de créer des codes de programme source plus lisibles, car ils vous permettent de remplacer des "numéros magiques" codant pour trouver certaines valeurs pour lire les noms.

      Basé sur des énumérations dans certaines langues, des ensembles d'ensembles peuvent être créés. Dans de tels cas, l'ensemble est compris (et décrit) comme un ensemble non ordonné de valeurs uniques de l'énumération de type.

      Le type de type peut être utilisé dans les déclarations de variables et paramètres formels de fonctions (procédures, méthodes). Les valeurs de la liste peuvent être attribuées aux variables appropriées et transmises via les paramètres des types correspondants dans la fonction. De plus, une comparaison des valeurs du type énuméré sur l'égalité et l'inégalité est toujours prise en charge. Certaines langues prennent également en charge les autres opérations de comparaison pour les valeurs des types répertoriés. Le résultat de la comparaison de deux valeurs énumérées dans de tels cas est déterminé, en règle générale, la procédure de suivi de ces valeurs dans la déclaration de types - la valeur que dans l'annonce de type est évaluée précédemment, elle est considérée comme " Moins "la valeur se produisant plus tard. Parfois, un type indiqué ou une plage de valeurs de type répertoriés peut également être utilisé comme type d'index pour un tableau. Dans ce cas, pour chaque valeur de la plage sélectionnée dans la matrice, il y a un élément et l'ordre réel des éléments correspond à l'ordre des valeurs dans le type AD.

      Ventes

      Habituellement, dans le processus de compilation des valeurs des valeurs de transfert, sont présentés à l'aide d'entiers. Selon le langage de programmation spécifique, une telle représentation peut être complètement masquée à partir d'un programmeur, soit accessible à celle-ci en utilisant certains «manœuvres de contournement» (par exemple, la transformation forcée du type de valeur de transfert à la valeur du type «Entier». ), voire gérés par le programmeur (dans de tels cas, le programmeur a la capacité d'indiquer explicitement quels numéros ou certaines valeurs du type de transfert seront codées). Toutes les options ont leurs propres côtés positifs et négatifs. D'une part, la possibilité d'utiliser les valeurs numériques des constantes constituant l'énumération de type, en particulier lorsqu'il l'abuse, prive l'utilisation de ces types et crée un risque d'erreurs (lorsque des valeurs numériques sont utilisées pour lesquelles Il n'y a pas de constantes correspondantes dans le type). D'autre part, le contrôle explicite des valeurs donne quelques fonctionnalités supplémentaires. Par exemple, vous permet d'utiliser la liste de types lors de l'organisation d'une interface avec des modules écrits dans d'autres langues, s'ils utilisent ou retournés sur les valeurs codées par des entiers à partir d'un certain ensemble prédéfini.

      Une autre possibilité que les types énumérés soient indiqués au niveau de la mise en œuvre de la langue - Économies de mémoire. Avec un petit type de liste de type pour stocker la valeur de ce type, plusieurs bits sont suffisants (le type Cardsuit ci-dessus nécessite seulement deux bits à la valeur, tandis que l'entier standard sur la plupart des architectes utilisées prend 32 bits - 16 fois plus ), et le compilateur peut utiliser ce fait est de sceller le stockage des données en mémoire. Il peut être particulièrement important si plusieurs valeurs de listes de types sont stockées dans un enregistrement - enregistrements d'étanchéité lors du traitement de grandes quantités peuvent libérer beaucoup de mémoire. VRAI, il convient de noter que les compilateurs ne mettent généralement pas en œuvre cette opportunité, au moins ces derniers temps, lorsque la mémoire de l'ordinateur est tombée de manière significative.

      Critique

      Le type d'énumération est traditionnel pour les langages de programmation développés, est utilisé assez largement et est souvent perçu comme quelque chose d'acquis. Cependant, ce type ne fait pas non plus de critique de la part des théoriciens et des praticiens de la programmation. Ainsi, lorsque vous développez une langue de programmation, Oberon, des types énumérés sont tombés dans la liste des fonctionnalités qui ont été supprimées de la langue. Niklaus Wirth, le développeur de la langue, appelé les raisons suivantes:

      D'autre part, par exemple, en Java, contenant à l'origine un type indiqué, ce type a ensuite été introduit pour des raisons non seulement de la commodité, mais également de la fiabilité: le problème de l'utilisation au lieu de la liste des groupes de constantes nommées est qu'il n'y a pas de contrôle Du compilateur comme unicité des constantes de valeurs et la possibilité d'une affectation accidentelle par des valeurs variables qui ne correspondent à aucune de ces constantes.

      Description des énumérations dans différentes langues

      Cardsuit d'énormes (clubs, diamants, coeurs, piques);

      Les langages dynamiques de la saisie faible avec la syntaxe de type C (par exemple, Perl ou JavaScript), en règle générale, n'ont pas d'énumérations.

    La cloche.

    Il y a ceux qui ont lu cette nouvelle devant vous.
    Abonnez-vous pour recevoir des articles frais.
    E-mail
    Nom
    Nom de famille
    Comment voulez-vous lire la cloche
    Sans spam