LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Agence fédérale de l'éducation

abstrait

"TYPES DE DONNÉES DANS PASCAL"

1. Types de données

Toutes les données, c'est-à-dire les constantes, les variables, les propriétés, les valeurs de fonction ou les expressions sont caractérisées par leurs types. Un type définit l'ensemble des valeurs valides qu'un objet peut avoir, ainsi que l'ensemble des opérations valides qui lui sont applicables. En outre, le type détermine également le format de la représentation des données internes dans la mémoire du PC.

En général, le langage Object Pascal est caractérisé par une structure ramifiée de types de données (Fig. 1.1). Le langage fournit un mécanisme pour créer de nouveaux types, grâce auquel le nombre total de types utilisés dans le programme peut être aussi grand que souhaité.

Les données traitées dans le programme sont divisées en variables, constantes et littéraux:

Constantes sont des données dont les valeurs sont définies dans la section de déclaration de constante et ne changent pas pendant l'exécution du programme.

Variables sont déclarées dans la section de déclaration de variable, mais contrairement aux constantes, elles reçoivent leurs valeurs déjà pendant l'exécution du programme, et ces valeurs peuvent être modifiées. Les constantes et les variables sont accessibles par nom.

Littéral n'a pas d'identifiant et est représenté dans le texte du programme directement par la valeur.

Un type définit l'ensemble de valeurs que les éléments de données peuvent prendre et l'ensemble des opérations autorisées sur eux.

Ce chapitre et les quatre chapitres suivants fournissent description détaillée de tous types.

1.1 Types simples

Les types simples incluent ordinal, réel et date-heure.

Types ordinaux diffèrent en ce que chacun d'eux a un nombre fini de valeurs possibles. Ces valeurs peuvent être ordonnées d'une certaine manière (d'où le nom des types) et, par conséquent, chacune d'elles peut être associée à un entier - le nombre ordinal de la valeur.

Types réels , à proprement parler, ont également un nombre fini de valeurs, qui est déterminé par le format de la représentation interne d'un nombre réel. Cependant, le nombre de valeurs possibles de types réels est si grand qu'il n'est pas possible de comparer un entier (son nombre) avec chacun d'eux.

Type de date-heure conçu pour stocker la date et l'heure. En fait, il utilise un format réel à ces fins.

1.1.1 Types ordinaux

Les types ordinaux incluent (voir Figure 1.1) entier, booléen, caractère, énuméré et type de plage. La fonction Ord (x) est applicable à n'importe lequel d'entre eux, qui renvoie la valeur ordinale de l'expression X.


Figure: 1.1 - Structure des types de données

Pour entier de types, la fonction ord (x) renvoie la valeur de x elle-même, c'est-à-dire Ord (X) \u003d x pour x appartenant à tout entier type. Application d'Ord (x) à logique , symbolique et énumérable types donne un entier positif compris entre 0 et 1 ( type booléen), de 0 à 255 ( symbolique), de 0 à 65535 ( énumérable). Type de gamme conserve toutes les propriétés du type ordinal de base, de sorte que le résultat de l'application de la fonction ord (x) à celui-ci 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 оrd (рred (х)) \u003d оrd (х) - 1;

succ (x) - renvoie la valeur suivante de type ordinal, qui correspond au nombre ordinal ord (x) +1, c'est-à-dire ord (Succ (x)) \u003d ord (x) + 1.

Par exemple, si le programme définit la variable

puis la fonction PRED (c) renverra le caractère "4", et la fonction SUCC (c) renverra le caractère "6".

Si nous imaginons un type ordinal comme un ensemble ordonné de valeurs augmentant de gauche à droite et occupant un certain segment sur l'axe numérique, alors la fonction pred (x) n'est pas définie pour la gauche, et succ (x) - pour l'extrémité droite de ce segment.

Types entiers ... La plage de valeurs possibles pour les types entiers dépend de leur représentation interne, qui peut être un, deux, quatre ou huit octets. Table 1.1 liste les noms des types entiers, la longueur de leur représentation interne en octets et la plage de valeurs possibles.

Tableau 1.1 - Types entiers

Nom Longueur, octets Gamme de valeurs
Cardinal 4 0. .. 2 147 483 647
Octet 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Mot 2 0...65 535
Entier 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
LongWord 4 0. . .4 294 967 295

Les types LongWord et Int64 introduit pour la première fois dans la version 4, et les types Smallint et Cardinal non disponible dans Delphi 1. Tapez entier pour cette version, il prend 2 octets et a une plage de valeurs de -32768 à +32767, c'est-à-dire que c'est la même chose que Smallint .

Lors de l'utilisation de procédures et de fonctions avec des paramètres entiers, il faut être guidé par «l'imbrication» des types, ie. partout où il peut être utilisé mot , l'utilisation est autorisée Octet (mais pas l'inverse), en Longint "Inclus" Smallint , qui à son tour comprend Shortint .

La liste des procédures et fonctions applicables aux types entiers est donnée dans le tableau. 1.2. Les lettres b, s, w, i, l désignent respectivement des expressions du type Octet , Shortint, Word, Integer et Longint ,

x est une expression de l'un de ces types; les lettres vb, vs, vw, vi, vl, vx désignent des variables des types correspondants. Un paramètre facultatif est indiqué entre crochets.

Tableau 1.2 - Procédures standards et fonctions applicables aux types entiers

Charme Type de résultat Acte
abs (x) x Renvoie le module 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 [, i]) - Augmente la valeur de vx de i, et en l'absence de i, de 1
Salut (w) Octet Renvoie l'arc de poids fort de l'argument
Salut (je) Aussi Renvoie le troisième octet
Lo (i) Renvoie l'octet le moins significatif de l'argument
Faible) Aussi
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 réparti dans la plage 0 ... (w-l)
sqr (x) X Renvoie le carré de l'argument
swap (i) Entier Échange les octets dans un mot
swap (w) Mot Aussi

Pour les opérations 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, le type commun, qui comprend les deux opérandes. Par exemple, en agissant avec abrégé et mot commun sera le type entier ... Dans le paramètre par défaut, le compilateur Delphi ne génère aucun code pour vérifier si une valeur est hors plage, ce qui peut prêter à confusion.

Types booléens ... Les types booléens incluent Booléen, ByteBool, Bool, wordBool et LongBool ... En Pascal standard, seul le type est défini Booléen , le reste des types booléens est introduit dans Object Pascal pour la compatibilité avec Windows: types Booléen et ByteBool occupent chacun un octet, Booléen et WordBool - 2 octets chacun, LongBool - 4 octets. Les valeurs booléennes peuvent être l'une des constantes précédemment déclarées False (false) ou True (true).

Comme le type booléen est un type ordinal, il peut être utilisé dans un opérateur de boucle de type comptage. Dans Delphi 32 pour Booléen valeur

Ord (True) \u003d +1, tandis que pour les autres types ( Booléen, WordBool etc.)

Ord (True) \u003d -1, donc ce type d'opérateurs doit être utilisé avec précaution! Par exemple, pour Delphi 6, l'instruction exécutable showMessage ("---") dans la boucle suivante pour ne sera pas exécuté une seule fois:

pour L: \u003d faux à vrai faire

Voir le message ("-);

Si on remplace le type du paramètre de boucle L dans l'exemple précédent par Booléen , le cycle se déroulera et le message apparaîtra deux fois à l'écran. [Pour Delphi version 1 et 2, ord (True) \u003d + 1 pour tout type booléen.]

Type de caractère ... Les valeurs de type caractère sont 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 et est renvoyé par la fonction ord.

Windows utilise le code ANSI pour l'encodage (nommé d'après l'American National Standard Institute - l'American Standards Institute qui a proposé ce code). La première moitié des symboles PC avec les codes 0 ... 127 correspond au tableau 1.3. La seconde moitié des caractères avec les codes 128 ... 255 varie selon les polices. Les polices Windows standard Arial Cyr, Courier New Cyr et Times New Roman pour représenter les caractères cyrilliques (sans les lettres «ё» et «Ё») utilisent les 64 derniers codes (de 192 à 256): «A» ... «Z» sont encodés valeurs 192..223, "a" ... "i" - 224 ... 255. Les symboles "Ё" et "ё" ont respectivement les codes 168 et 184.

Tableau 1.3 - Codage des caractères selon la norme ANSI

Code symbole Code. symbole Code. symbole Code symbole
0 NUL 32 BL 64 @ 96 "
1 ZON 33 ! 65 ET 97 et
2 STX 34 66 DANS 98 b
3 ETX 35 # 67 DE 99 de
4 EOT 36 $ 68 100
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 " 71 g 103
8" BS 40 ( 72 H 104 h
9 HT 41 ) 73 je 105 je
10 LF 42 * 74 J 106 j
11 Vermont 43 + 75 À 107 k
12 FF 44 F 76 L 108 1
13 CR 45 - 77 M 109 m
14 ALORS 46 78 N 110 n
15 SI 47 / 79 0 111 à propos
16 DEL 48 0 80 R 112 P
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC 4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 W
24 POUVEZ 56 8 88 x 120 x
25 EM 57 9 89 Oui 121 Avoir
26 SOUS 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 L 126 ~
31 NOUS 63 F 95 127 r

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 de caractère du programme, ils sont considérés comme des espaces.

Taper carboniser les opérations relationnelles sont applicables, ainsi que les fonctions intégrées:

Сhar (dans) - fonction comme carboniser ; convertit l'expression en type Octet à un symbole et le renvoie avec sa valeur;

UpCase (CH) - fonction comme carboniser ; renvoie une lettre majuscule si ch est une lettre latine minuscule, sinon renvoie le caractère ch lui-même (pour le cyrillique, il renvoie le caractère d'origine).

Type énuméré ... Un type énuméré est spécifié en énumérant les valeurs qu'il peut recevoir. Chaque valeur est nommée par un identificateur et se trouve dans une liste entre parenthèses, par exemple:

couleurs \u003d (rouge, blanc, bleu);

L'utilisation de types énumérés rend les programmes plus clairs.

La correspondance entre les valeurs du 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 obtient le nombre ordinal 0, la seconde - 1, etc. La cardinalité maximale d'un type énuméré est de 65536 valeurs, donc, en fait, le type énuméré spécifie un sous-ensemble du type entier mot et peut être considérée 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 raison de la capacité de contrôler les valeurs que reçoivent les variables correspondantes. Object Pascal permet la conversion inverse: toute expression comme Mot peut être convertie en une valeur énumérée tant que la valeur de l'expression entière ne dépasse pas la cardinalité de ce type. Cette conversion est obtenue en utilisant une fonction automatiquement déclarée avec un nom de type énuméré.

Type de gamme ... Range-type est un sous-ensemble de son type de base, qui peut être de n'importe quel type ordinal, à l'exception du range-type.

Le type de plage est défini par les limites de ses valeurs dans le type de base:

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

Ici<мин. знач. > - la valeur minimale du type de plage;<макс. знач. > - sa valeur maximale.

Le type de plage 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.

Lors de la définition d'un type de plage, les règles suivantes doivent être suivies:

deux caractères ".." sont traités comme un seul caractère, donc aucun espace n'est autorisé entre eux; la bordure gauche de la plage ne doit pas dépasser sa bordure droite.

Un type de plage hérite de toutes les propriétés de son type de base, mais avec des restrictions en raison de sa cardinalité inférieure. En particulier, si une variable est définie.

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

Élevé (x) - renvoie la valeur maximale du type de plage auquel appartient la variable x;

Faible (x) - renvoie la valeur minimale du type de plage.

1.1.2 Types réels

Contrairement aux types ordinaux, dont les valeurs sont toujours comparées à un nombre d'entiers et, par conséquent, sont représentées de manière absolument exacte dans le PC, les valeurs des types réels ne définissent un nombre arbitraire qu'avec une certaine précision finie, en fonction du format interne du nombre réel.

Tableau 1.4 - Types réels

DANS versions précédentes Delphi 1 ... 3 type Réel a pris 6 octets et avait une plage de valeurs de 2,9 * 10-39 à 1,7 * 1038. Dans les versions 4 et 5, ce type est équivalent au type Double ... Si nécessaire (pour des raisons de compatibilité), utilisez 6 octets Réel , vous devez spécifier la directive du compilateur (SREALCOMPATIBILITY ON).

Comme vous pouvez le voir sur le tableau. 1.4, un nombre réel dans Object Pascal occupe de 4 à 10 octets contigus et a la structure suivante dans la mémoire du PC.

Voici le chiffre signé du nombre; e - partie exponentielle; contient un ordre binaire; m est la mantisse du nombre.

Mantisse m a une longueur de 23 (pour célibataire) jusqu'à 63 (pour Élargi) de chiffres binaires, ce qui garantit une précision de 7 ... 8 pour célibataire et 19 ... 20 pour Élargi chiffres décimaux. Le point décimal (virgule) est implicite avant le chiffre gauche (le plus significatif) de la mantisse, mais lors de la manipulation d'un nombre, sa position est décalée vers la gauche ou la droite conformément à l'ordre binaire du nombre stocké dans la partie exponentielle, donc les opérations sur les nombres réels sont appelées arithmétique à virgule flottante (virgule) ...

Notez que le coprocesseur arithmétique traite toujours les nombres au format Élargi , tandis que les trois autres types réels dans ce cas sont obtenus en tronquant simplement les résultats à la taille souhaitée et sont principalement utilisés pour économiser de la mémoire.

Les types occupent une place particulière dans Object Pascal. comp et Devise , qui sont traités comme des nombres réels avec des parties fractionnaires de longueur fixe: en comp la partie fractionnaire a une longueur de 0 chiffre, c'est-à-dire qu'elle est simplement absente, en devise la longueur de la partie fractionnaire est de -4 décimales. En fait, les deux types définissent un grand entier signé qui stocke 19 ... 20 chiffres décimaux significatifs (en interne, ils occupent 8 octets contigus). En même temps, dans les expressions comp et devise sont entièrement compatibles avec tous les autres types réels: toutes les opérations réelles sont définies sur eux, elles peuvent être utilisées comme arguments de fonctions mathématiques, etc. Le domaine d'application le plus approprié de ces types est le calcul comptable.

1.1.3 Type date-heure

Le type date-heure est déterminé par un identifiant standard TDateTime et est destiné au stockage simultané de la date et de l'heure. En interne, il prend 8 octets et est similaire devise est un nombre réel avec une partie fractionnaire fixe: la date est stockée dans la partie entière du nombre, l'heure est stockée dans la partie fractionnaire. La date est définie comme le nombre de jours qui se sont écoulés depuis le 30 décembre 1899, et l'heure est définie comme une fraction du jour depuis 0 heure, donc la valeur 36444.837 correspond à la date 10/11/1999 et à l'heure 20:05. Le nombre de jours peut être négatif, mais les valeurs inférieures à -693594 (correspondant à la date 00.00.0000 de Noël) sont ignorées par les fonctions de conversion de date.

Au-dessus des données comme TDateTime les mêmes opérations sont définies qu'avec les nombres réels, et les constantes et variables de types entiers et réels peuvent participer à des expressions de ce type.

Depuis le type TDateTime compatible avec le format des nombres réels, vous pouvez facilement déterminer la date qui est quelques jours en avant ou en arrière de celle donnée: pour cela, il suffit d'ajouter ou de soustraire l'entier souhaité de la date donnée, respectivement.

1.2 Types structurés

Tous les types structurés (et dans Object Pascal, il y en a quatre: tableaux, enregistrements, ensembles et fichiers) se caractérise par la multiplicité des éléments qui forment ce type. Chaque élément, à son tour, peut appartenir à un type structuré, ce qui nous permet de parler de l'imbrication possible des types. Object Pascal permet une profondeur arbitraire d'imbrication des types, mais la longueur totale de l'un d'entre eux dans la représentation interne ne doit pas dépasser 2 Go.

Pour la compatibilité avec le Pascal standard, Object Pascal est autorisé à précéder une déclaration de type structuré avec un mot réservé emballé ordonner au compilateur d'économiser autant que possible la mémoire allouée aux objets de type structuré; mais le compilateur ignore en fait cet indice: "empaqueter" les données dans Object Pascal se fait automatiquement chaque fois que possible.

1.2.1 Tableaux

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

Une description de type de tableau est définie comme suit:

<имя типа> \u003d tableau [<сп.инд.типов> ] sur<тип>;

Ici<имя типа> - identifiant correct; tableau de - mots réservés (tableau, à partir de);<сп.инд.типов> - une liste d'un ou plusieurs types d'index, séparés par des virgules; les crochets autour de la liste sont une exigence de syntaxe;<тип> - tout type d'Objet Pascal.

En tant que types d'index dans Object Pascal, vous pouvez utiliser tous les types ordinaux dont la cardinalité ne dépasse pas 2 Go (c'est-à-dire, sauf LongWord et Int64)

La profondeur d'imbrication des types structurés en général et, par conséquent, des tableaux est arbitraire.Par conséquent, le nombre d'éléments dans la liste des types d'index (dimension du tableau) n'est pas limité, mais la longueur totale de la représentation interne de tout tableau ne peut dépasser 2 Go. Dans la mémoire du PC, les éléments du tableau se succèdent de sorte que lors du passage des adresses inférieures aux adresses supérieures, l'index le plus à droite du tableau change le plus rapidement.

Dans Object Pascal, vous pouvez passer tous les éléments d'un tableau à un autre tableau du même type avec un opérateur d'affectation.

1.2.2 Registres

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. Les champs sont nommés de sorte que vous puissiez faire référence à un composant d'enregistrement particulier.

La structure de la déclaration de type d'enregistrement est la suivante:

<имятипа> \u003d enregistrement<сп.полей> fin;

Ici<имя типа> - identifiant correct; enregistrement / fin - mots réservés (enregistrement, fin);<сп.полей> - liste des champs; est une séquence de sections d'un enregistrement avec un point-virgule entre elles.

Chaque section d'un enregistrement se compose d'un ou de plusieurs identificateurs de champ, séparés par des virgules.

Phrase cas de , qui ouvre la partie variante, ressemble à l'opérateur de sélection correspondant, mais ne joue en fait que le rôle d'une sorte de mot de service désignant le début de la partie variante. C'est pourquoi à la fin de la partie variante, vous ne devez pas mettre fin en couple pour cas de ... (Étant donné que la partie variante est toujours la dernière de l'enregistrement, elle est toujours suivie de la fin, mais uniquement en tant que paire à enregistrer). Touche de sélection dans la proposition cas de est en fait ignoré par le compilateur: la seule exigence pour cela dans Object Pascal est que la clé définisse un type ordinal standard ou pré-déclaré.

Les noms de champ doivent être uniques dans l'enregistrement où ils sont déclarés, cependant, si les enregistrements contiennent des champs d'enregistrement, c'est-à-dire qu'ils sont imbriqués les uns dans les autres, les noms peuvent être répétés à différents niveaux d'imbrication.

1.2.3 Ensembles

Les décors sont des ensembles d'objets similaires connectés logiquement les uns aux autres. La nature des connexions entre objets n'est impliquée que par le programmeur et n'est pas contrôlée par Object Pascal. Le nombre d'éléments inclus dans l'ensemble peut varier de 0 à 256 (un ensemble qui ne contient pas d'éléments est appelé vide). C'est l'inconstance du nombre de leurs éléments qui diffère des ensembles 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, ils parlent d'inclure le premier ensemble dans le second. Un ensemble vide est inclus dans tout autre.

La description du type d'ensemble est la suivante:

<имя типа> \u003d ensemble de<базовый тип>;

Ici<имя типа> - identifiant correct; ensemble de - 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, Longint, Int64 .

Pour définir un ensemble, le soi-disant constructeur d'ensemble est utilisé: une liste de spécifications des éléments d'ensemble, séparés les uns des autres par des virgules; la liste est entourée de crochets. Les spécifications d'élément peuvent être des constantes ou des expressions d'un type de base, ainsi qu'un type de plage du même type de base.

La structure interne de l'ensemble est telle que chacun de ses éléments se voit attribuer un chiffre binaire (un bit); si l'élément est inclus dans l'ensemble, le bit correspondant a la valeur 1, sinon - 0. Dans le même temps, l'unité minimale de mémoire est un octet contenant 8 bits, le compilateur a donc alloué un octet aux ensembles, et par conséquent, la cardinalité de chacun d'eux est devenue 8 éléments. La cardinalité maximale d'un ensemble est de 256 éléments. Pour de tels ensembles, le compilateur alloue 16 octets contigus.

Et encore une expérience: changez la plage du type de base en 1..256. Bien que la cardinalité de ce type soit de 256 éléments, lors de la tentative de compilation du programme, le compilateur signalera une erreur: les ensembles peuvent avoir au plus 256 éléments (les ensembles ne peuvent avoir plus de 256 éléments) car la numérotation des éléments de l'ensemble commence à zéro quelle que soit la limite inférieure déclarée dans le programme ... Le compilateur permet l'utilisation d'un type de plage entier avec une limite minimale de 0 et un maximum de 255, ou tout type énuméré avec pas plus de 256 éléments (la cardinalité maximale d'un type énuméré est de 65536 éléments) comme type de base.

1.3 Cordes

Object Pascal utilise les types suivants pour le traitement de texte:

ligne courte shortString ou chaîne [n] où n<= 255;

longue ligne chaîne ;

chaîne large WideString ;

chaîne de terminal nulle pchar .

Ce que ces types ont en commun est que chaque chaîne est traitée comme un tableau unidimensionnel de caractères, dont le nombre de caractères peut changer dans un programme en cours d’exécution: pour la chaîne [n], la longueur de la chaîne varie de 0 à n, pour chaîne et pchar - de 0 à 2 Go.

Le Pascal standard n'utilise que des chaînes courtes Chaîne [n] ... En mémoire, une telle chaîne est allouée n + i octets, le premier octet contient la longueur actuelle de la chaîne et les caractères eux-mêmes sont situés à partir du 2ème octet. Étant donné que dans ce cas, un octet est alloué pour la longueur de la chaîne, la longueur maximale d'une chaîne courte ne peut pas dépasser 255 caractères. Pour déclarer une chaîne courte de longueur maximale, il est prévu type standard Shortstring (équivalent Chaîne).

Windows utilise largement des chaînes terminées par , qui sont des chaînes de caractères délimitées par le caractère # o. La longueur maximale d'une telle chaîne n'est limitée que par la mémoire disponible et peut être très grande.

Delphi 32 bits introduit un nouveau type chaîne qui combine les commodités des deux types. Lorsque vous travaillez avec ce type, la mémoire est allouée selon les besoins (dynamiquement) et est limitée par la mémoire disponible disponible pour le programme.

1.4 Pointeurs et mémoire de tas

1.4.1 Mémoire dynamique

Mémoire dynamique - il s'agit de la RAM PC fournie au programme lors de son exécution. L'allocation dynamique des données signifie l'utilisation de la mémoire dynamique directement pendant l'exécution du programme. En revanche, l'allocation statique est effectuée par le compilateur Object Pascal lors de la compilation du programme. Avec l'allocation dynamique, ni le type ni la quantité de données à allouer ne sont connus à l'avance.

1.4.2 Pointeurs

La RAM du PC est un ensemble de cellules pour stocker des informations - des octets, chacun ayant son propre numéro. Ces numéros sont appelés adresses, ils vous permettent d'accéder à n'importe quel octet de mémoire. Object Pascal fournit au programmeur un moyen flexible de gérer la mémoire dynamique - les soi-disant pointeurs. Un pointeur est une variable qui contient l'adresse d'octet de mémoire comme valeur. À l'aide de pointeurs, vous pouvez allouer l'un des types de données connus dans Object Pascal dans le tas. Seuls certains d'entre eux ( Byte, Char, ShortInt, Booléen) occupent un octet dans la représentation interne, le reste - plusieurs octets adjacents. Par conséquent, en fait, le pointeur adresse uniquement le premier octet de données.

En règle générale, un pointeur est associé à un type de données. Nous appellerons ces pointeurs tapés. Pour déclarer un pointeur typé, utilisez le symbole ^, qui est placé avant le type correspondant.

Dans Object Pascal, vous pouvez déclarer un pointeur et ne pas le lier à un type de données particulier. Ceci est fait par le type standard aiguille , par exemple:

Les pointeurs de ce type seront appelés non typés. Puisque les pointeurs non typés ne sont pas associés à un type spécifique, il est pratique de les utiliser pour allouer dynamiquement des données, dont la structure et le type changent au cours du programme.

Comme déjà mentionné, les valeurs des pointeurs sont les adresses des variables en mémoire, on peut donc s'attendre à ce que la valeur d'un pointeur puisse être transmise à un autre. En fait, ce n'est pas vrai. Dans Object Pascal, vous ne pouvez passer des valeurs qu'entre des pointeurs associés au même type de données.

1.4.3 Allocation et libération de la mémoire dynamique

Toute la mémoire de tas dans Object Pascal est traitée comme un tableau solide d'octets appelé un tas.

La mémoire pour toute variable allouée dynamiquement est allouée par la procédure New. Le paramètre pour appeler cette procédure est un pointeur typé. À la suite de l'appel, le pointeur acquiert une valeur correspondant à l'adresse à partir de laquelle les données peuvent être placées. La valeur pointée par le pointeur, c'est-à-dire les données réelles allouées sur le tas, sont désignées par ^, qui est placé immédiatement après le pointeur. S'il n'y a pas de signe ^ derrière le pointeur, c'est l'adresse où se trouvent les données. Il est logique de repenser à ce qui vient d'être dit: la valeur de tout pointeur est une adresse, et pour indiquer que nous ne parlons pas d'une adresse, mais des données qui se trouvent à cette adresse, un ^ est placé derrière le pointeur (parfois on parle de déréférencement aiguille).

Les données allouées dynamiquement peuvent être utilisées n'importe où dans le programme où elles sont autorisées pour les constantes et les variables du type approprié

La mémoire dynamique peut non seulement être extraite du tas, mais également renvoyée. Pour ce faire, utilisez la procédure Dispose. Par exemple, les opérateurs

Éliminer (pJ);

Éliminer (pR);

retournera au tas la mémoire qui était précédemment affectée aux pointeurs pJ et pR (voir ci-dessus).

Notez que la procédure Dispose (pPtr) ne modifie pas la valeur du pointeur pPtr, mais renvoie uniquement la mémoire précédemment associée à ce pointeur dans le tas. Cependant, la réapplication de la procédure à un pointeur libre entraînera une erreur d'exécution. Le programmeur peut marquer le pointeur libéré avec le mot réservé nil.

1.5 Alias \u200b\u200bde type

Pour tout type, vous pouvez déclarer autant d'alias que vous le souhaitez. Par exemple:

TMyInteger \u003d Entier;

À l'avenir, l'alias pourra être utilisé de la même manière que le type de base:

Mylnt: TMyInteger;

Mylnt: \u003d 2 * Round (pi);

Ces types d'alias sont couramment utilisés pour rendre le code plus lisible. Cependant, dans Object Pascal, vous pouvez déclarer des alias fortement typés en ajoutant le type de mot réservé devant le nom du type de base:

TMyIntegerType \u003d type Integer;

MylntVar: TMyIntegerType;

Du point de vue du compilateur, les alias typés sont compatibles avec le type de base dans divers types d'expressions, mais en fait ils déclarent un nouveau type de données, ils ne peuvent donc pas être utilisés comme paramètres formels pour appeler des sous-programmes au lieu du type de base. Si, par exemple, une procédure est déclarée

function MylntFunc (APar: entier): Integer;

alors un tel appel à elle

MylntFunc (MylntVar)

sera considéré comme erroné par le compilateur.

Les alias fortement typés amènent le compilateur à générer des informations de type à l'exécution (RTTI). Ces informations sont généralement utilisées par l'environnement Delphi pour prendre en charge le fonctionnement de différents types d'éditeurs.

Bases de la programmation
Chaque professionnel était autrefois une théière. Vous connaissez sûrement l’état lorsque «vous ne savez pas comment commencer à penser pour arriver à cela». Vous avez probablement rencontré une situation où vous ne savez tout simplement pas par où commencer. Ce livre s'adresse uniquement aux personnes qui aimeraient devenir programmeur, mais ne savent pas du tout comment démarrer cette voie. ...

Presque tous les types de données entiers le sont. Ces types de données représentent des entiers dans une plage spécifique. Les noms exacts des types entiers et des plages de valeurs dépendent du langage de programmation particulier, du compilateur et du mode de compilation. En savoir plus à ce sujet dans la documentation du compilateur.

Par exemple, le type de données Entier dans Delphi, il a une plage de -2147483648 ... 2147483647, tandis que dans Turbo Pascal, le type de données est Entier représente des nombres compris entre -35768 et 32767. En Free Pascal, une plage de valeurs comme Entier est déterminé par le mode sélectionné.

Puisque Lazarus utilise le compilateur Free Pascal, ce qui a été dit sur les types de données par rapport à Free Pascal est également vrai pour Lazarus.

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

Tableau 13.1. Types de données entiers Free Pascal (Lazarus).

Un type Taille, octets Gamme de valeurs
Octet 1 0…255
Shortint 1 -128…127
Smallint 2 -35768…32767
Mot 2 0…65535
Entier 2 ou 4 Dépend du mode de compilation
Cardinal 4 0…4294967295
Longint 4 -2147483648…2147483647
Longword 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QWord 8 0...18446744073709551615

REMARQUE
Dans Free Pascal, types Int64 et QWord 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 amenés ici, afin de ne pas les décrire séparément dans le futur et de rassembler en un seul endroit tous les types entiers de Free Pascal. Si vous ne comprenez pas certains mots, ne vous inquiétez pas. En temps voulu, je vous en dirai plus sur tout.

Et maintenant quelques explications pour le tableau.

Dans une colonne UN TYPE des identificateurs de types de données sont donnés (mots-clés qui indiquent au compilateur à quel type telle ou telle donnée appartient). Vous apprendrez à utiliser ces identifiants dans les leçons suivantes.

Dans une colonne LA TAILLE indique la taille occupée par 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: 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, il est préférable de le définir comme un type Octet, car cela économisera de l'espace dans la mémoire de l'ordinateur. Bien que tout ne soit pas si simple ici (les nuances d'allocation de mémoire et d'autres ressources informatiques sont au-delà de la portée).

Dans une colonne GAMME la plage de valeurs sur laquelle le type de données opère est spécifiée. Par exemple, un nombre comme Octet peut prendre des valeurs de 0 à 255.

Maintenant, pratiquez. Écrivons un programme qui affiche les plages de valeurs de tous les types de données entiers. Le code source de ce programme est indiqué ci-dessous:

Liste 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); begin Writeln ("Byte:", Low (Byte), "..", High (Byte)); Writeln ("Shortint:", Low (Shortint), "..", High (Shortint)); Writeln ("Smallint:", Low (Smallint), "..", High (Smallint)); Writeln ("Word:", Low (Word), "..", High (Word)); Writeln ("Integer:", Low (Integer), "..", High (Integer)); Writeln ("Cardinal:", Bas (Cardinal), "..", Haut (Cardinal)); Writeln ("Longint:", Low (Longint), "..", High (Longint)); Writeln ("Longword:", Low (Longword), "..", High (Longword)); Writeln ("Int64:", Faible (Int64), "..", Élevé (Int64)); Writeln ("QWord:", Low (QWord), "..", High (QWord)); Readln; fin.

Fonction standard Faible définit la valeur minimale du type de données. Funckia Haute définit la valeur maximale. Avec fonctions WriteLn et ReadLn vous êtes déjà un peu familier. Nous parlerons plus en détail des sous-programmes (procédures et fonctions) dans la section correspondante.

Enfin, je vais vous dire comment les données entières sont écrites dans un programme. Ainsi que partout ailleurs - écrivez simplement le nombre, sans guillemets ni caractères supplémentaires. Par exemple, donc

10
178
35278

Certes, cela s'applique aux nombres dans le système décimal. Vous savez probablement déjà qu'il existe d'autres systèmes. Les systèmes de nombres binaires, décimaux et hexadécimaux sont les plus utilisés.

Free Pascal prend en charge quatre formats de notation entière:

  1. Notation décimale... Juste un nombre comme 10.
  2. Notation hexadécimale... Un nombre précédé de $. Par exemple, hexadécimal $ 10 équivaut à la décimale 16.
  3. Notation octale... Un numéro précédé de &. Par exemple, octal & 10 est égal à 8 décimal.
  4. Notation binaire... Un nombre précédé de%. Par exemple, le nombre binaire% 10 est égal à la décimale 2.

Devoirs:

Créez un programme qui affiche des plages de valeurs entières (extrait 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 un mot tp... Autrement dit, la ligne résultante devrait ressembler à ceci:

($ mode tp) ($ H +)

Exécutez le programme. Regardez la plage de valeurs comme Entier... Tirez vos conclusions.

Apprenez à penser comme un programmeur, c'est-à-dire logiquement. Personne ne mâchera tout jusqu'à la retraite, comme je le fais actuellement. Vous devez vous habituer à penser par vous-même. Sinon, vous glisserez dans le "principe de l'apprentissage du singe", et vos chances de devenir un grand programmeur approcheront de zéro. Pour vous aider à ne pas glisser dans le niveau du «bourrage», je laisserai périodiquement des lacunes dans votre formation afin que vous essayiez de comprendre certaines choses vous-même.

C'est bien mieux si tu réfléchis toi-même mauvaise décision, vous trouverez vous-même l'erreur et la réparerez vous-même, que vous utiliserez toujours les solutions correctes des autres et les copierez bêtement.

Dans n'importe quel programme, vous devez déterminer le type et le type de quantités qui seront utilisées pour résoudre le problème. Par leur forme, les quantités simples (en programmation, elles sont toutes appelées données) sont divisées en constantes et variables.

ConstantesSont des données dont les valeurs ne peuvent pas être modifiées pendant l'exécution du programme. Introduit dans un bloc const.

En général, une simple constante non typée est décrite comme suit:

Const constant_name \u003d expression;

Les constantes typées sont décrites comme suit:

Const constant_name: type \u003d expression;

Les éléments suivants peuvent être utilisés dans les expressions:

· Nombres ou jeu de caractères dans les apostrophes;

· Opérations mathématiques;

· Opérations de relation et opérations logiques;

Fonctions abs (x), round (x), trunc (x);

Fonctions chr (x), ord (x), pred (x), succ (x) et autres.

Format de description des constantes:

id \u003d valeur;

1. Entier - sont définis au moyen de nombres écrits au format décimal ou hexadécimal qui ne contiennent pas de point décimal.

2. Réel - défini au moyen de nombres écrits au format décimal.

3. Symbolique - il s'agit de tout caractère d'un ordinateur personnel, entouré d'apostrophes.

4. Chaîne - définie par une séquence de caractères arbitraires entourés d'apostrophes.

5. Logical est soit faux, soit vrai.

Le type de la constante n'est pas spécifié, mais il est déterminé automatiquement lors de la compilation: les valeurs des expressions sont calculées immédiatement, puis uniquement substituées à la place des noms.

Variables Ce sont des données qui peuvent changer pendant l'exécution du programme. Chaque variable a son propre emplacement / emplacements de mémoire nommés. Ceux. une variable est une sorte de conteneur dans lequel vous pouvez mettre des données et les y stocker. Les variables ont un nom, un type et une valeur.

Nom de variable - doit nécessairement commencer par une lettre, ne peut pas contenir d'espaces et ne peut contenir que:

· Lettres de l'alphabet latin;

· Souligner.

Exemples: A, A_1, AA, i, j, x, y, etc. Noms non valides: My 1, 1A. Les noms de variables peuvent comporter jusqu'à 126 caractères, essayez donc de choisir des noms de variables significatifs. Cependant, le compilateur distingue les 63 premiers caractères dans les noms. Mais il ne fait pas la distinction entre les lettres minuscules et majuscules, à la fois dans les noms de variables et dans l'écriture des identifiants de service.

Type de variable - doit être défini dans le bloc de déclaration de variable VAR. La valeur d'une variable est une constante du même type.

Chaque programme fonctionne avec des données. Les données sont, au sens large du terme, des objets qu'un programme traite. Le type d'un donné est sa caractéristique. Dépend du type:

Comment ces données seront stockées,

Combien de cellules mémoire seront allouées pour son stockage,

Quelle est la valeur minimale et maximale que cela peut prendre,

· Quelles opérations peuvent être effectuées avec.

Quelques types de données Pascal simples:

1. Types entiers (ShortInt, Integer, LongInt, Byte, Word).

2. Types réels (réel, simple, double, étendu, comp).

3. Logique (booléen).

4. Caractère (Char).

5. Types de chaîne (String, String [n]).

9. Opérateurs inconditionnels en Pascal. Description et utilisation.

Type d'opérateur

aller à<метка>;

Objectif - transfert du contrôle du programme à l'opérateur marqué d'une étiquette<метка>... Une étiquette peut être un nom (écrit selon les règles des noms de langue) ou un entier non signé, décrit dans la description de l'étiquette statementLabel, et placé avant l'instruction marquée, mais seulement à un endroit du programme. L'étiquette est séparée de l'opérateur par le symbole «:». Un saut vers une étiquette peut se produire plusieurs fois dans un bloc, mais l'étiquette elle-même ne peut se produire qu'une seule fois. S'il n'y a pas de transfert de contrôle vers une étiquette, il n'y aura pas d'erreur.

L'opérateur de saut inconditionnel n'est généralement pas autorisé dans la programmation structurée. Bien qu'il vous permette de raccourcir le texte du programme, son utilisation dans pascal est limitée par un certain nombre de règles et de directives. Il est interdit d'entrer dans une instruction composée, à l'intérieur ou au début d'un sous-programme et de laisser le sous-programme au programme qui l'a appelé. Il n'est pas recommandé d'aller au-delà de la page (écran) du texte du programme, sauf pour le passage aux instructions finales du programme. Tout cela est dû à la possibilité de manquer des déclarations importantes pour le bon fonctionnement du programme. En règle générale, l'opérateur de saut inconditionnel est utilisé uniquement pour revenir au début du corps de la boucle si la boucle est construite à l'aide d'instructions conditionnelles et inconditionnelles.

Notez que l'instruction qui suit le goto doit également être marquée avec une étiquette différente (sauf si le goto est le dernier dans le groupe d'instructions). Sinon, il n'y a aucun moyen d'accéder à l'opérateur suivant après goto.

10. Opérateurs de branchement en Pascal. Description et utilisation.

Les opérateurs qui vous permettent de sélectionner une seule des nombreuses options possibles pour exécuter un programme (branches) comprennent

Ceux. ces instructions vous permettent de modifier l'ordre naturel d'exécution des instructions de programme.

si<условие> puis< оператор 1 >

autre<оператор 2> ;

si a\u003e \u003d b alors Max: \u003d a sinon Max: \u003d b;

Dans l'instruction if, une seule instruction peut être exécutée sur les deux branches (then et else)!

Un exemple de tâche pour les opérateurs de branchement dans pascal. Entrez deux entiers et affichez le plus grand d'entre eux.

Idée de solution: vous devez afficher le premier nombre s'il est supérieur au second, ou le second s'il est supérieur au premier.

Particularité: les actions de l'interprète dépendent de certaines conditions (si ... sinon ...).

var a, b, max: entier;

writeln ("Entrez deux entiers");

si a\u003e b alors max: \u003d a sinon max: \u003d b;

writeln ("Nombre le plus élevé", max);

Des conditions difficiles

Une condition complexe est une condition qui se compose de plusieurs conditions simples (relations) liées par logique

opérations:

Non - NON (négation, inversion)

Et - ET (multiplication logique, conjonction,

satisfaction simultanée des conditions)

Ou - OU (addition logique, disjonction,

satisfaction d'au moins une des conditions)

Xor - OU exclusif (exécution uniquement

l'une des deux conditions, mais pas les deux)

Conditions simples (relations)

< <= > >= = <>

Ordre d'exécution (priorité \u003d ancienneté)

Expressions entre parenthèses

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

Caractéristique - chacune des conditions simples doit être placée entre crochets.

Déclaration de sélection de cas

L'énoncé de cas vous permet de choisir entre plusieurs options.

L'opérateur de variante se compose

Øà partir d'une expression appelée sélecteur,

Ø et une liste d'opérateurs, chacun marqué par une constante du même type que le sélecteur.

Le sélecteur doit être uniquement un type de données ordinales, pas un type longint.

Le sélecteur peut être une variable ou une expression.

La liste des constantes peut être spécifiée comme une énumération explicite, ainsi qu'un intervalle ou leur union. Les constantes répétitives ne sont pas

permis.

Le type de commutateur et les types de toutes les constantes doivent être compatibles.

Cas< выражение {селектор}> de

<список констант 1> : < оператор 1>;

< список констант K> : < оператор K>;

L'instruction case est exécutée comme suit:

1) la valeur du sélecteur est calculée;

2) le résultat obtenu est vérifié pour appartenir à une liste particulière de constantes;

3) si une telle liste est trouvée, alors d'autres contrôles ne sont plus effectués, mais l'opérateur correspondant à

la branche sélectionnée, après quoi le contrôle est transféré à l'opérateur suivant mot-clé fin, ce qui ferme l'ensemble

construction de cas;

4) s'il n'y a pas de liste appropriée de constantes, alors l'opérateur derrière le mot-clé else est exécuté; s'il n'y a pas d'autre branche,

alors rien n'est fait.

Dans une instruction de branchement de cas, une seule instruction peut être exécutée sur toutes les branches!

Si vous devez en exécuter plusieurs, vous devez utiliser les crochets d'opérateur de début de fin.

case Index mod 4 de

1: x: \u003d y * y - 2 * y;

11.Opérateur d'option (sélection) en Pascal. Description et utilisation.

L'opérateur de choix (option, commutateur) implémente le choix de l'une des alternatives possibles, i.e. options pour poursuivre le programme.

Format d'enregistrement:

Cas - choix, option;

S - sélecteur, expression de type ordinal;

Ki - constantes de sélection, une constante dont le type correspond au type du sélecteur;

OPi - tout opérateur, y compris vide;

L'opérateur de sélection implémente la construction suivante:

Sélectionnez le travail de l'opérateur en Pascal: l'expression du sélecteur est évaluée. La valeur calculée est comparée séquentiellement aux constantes des alternatives et le contrôle est passé à la constante de sélection de l'opérateur, qui coïncide avec la valeur calculée du sélecteur. L'instruction est exécutée et le contrôle est transféré en dehors de l'instruction de sélection. Si la valeur calculée du sélecteur ne correspond à aucune des constantes, alors le contrôle est transféré à la branche Else, dont la présence n'est pas nécessaire dans ce cas, le contrôle est transféré en dehors de l'opérateur de sélection.

Schéma structurel opérateur de choix.

La structure de l'instruction select peut être implémentée à l'aide de opérateurs conditionnels, mais cela aggrave la clarté du programme. Recommandé pas plus de 2-3 niveaux de pièces jointes.

12. Types d'opérateurs de boucle en Pascal, leur but.

5. Constructions algorithmiques de cycles. Types de cycles.

Il existe trois types d'algorithmes de boucle: une boucle de paramètres (appelée boucle arithmétique), une boucle de préconditionnement et une boucle de post-condition (appelée boucle itérative).

12.13 Boucle arithmétique.Dans un cycle arithmétique, le nombre de ses étapes (répétitions) est uniquement déterminé par la règle de modification du paramètre, qui est définie à l'aide des valeurs initiales (N) et finales (K) du paramètre et de l'étape (h) de sa modification. Autrement dit, à la première étape du cycle, la valeur du paramètre est égale à N, au deuxième - N + h, au troisième - N + 2h, etc. À la dernière étape du cycle, la valeur du paramètre n'est pas supérieure à K, mais telle que sa modification ultérieure conduira à une valeur supérieure à K.

Les boucles de compteur sont utilisées lorsque la partie cyclique du programme doit être répétée un nombre fixe de fois. Ces boucles ont une variable entière appelée compteur de boucles.

S'il est nécessaire qu'un fragment de programme soit répété un certain nombre de fois, alors la construction est utilisée:

POUR<имя счетчика цикла> = <начальное значение> À<конечное значение> FAIRE<оператор>;

FOR, TO, DO - mots réservés (anglais: for, to, execute);

<счетчик (параметр) цикла> - une variable de type INTEGER, qui change dans l'intervalle de<начального значения>augmentant de un à la fin de chaque étape du cycle;

<оператор> - tout opérateur (le plus souvent composé).

Il existe une autre forme de cet opérateur:

POUR<имя счетчика цикла>:= <начальное значение> DOWNTO<конечное значение> FAIRE<оператор> :

Remplacer TO par DOWNTO (anglais: jusqu'à) signifie que l'étape de modification du paramètre de cycle est - 1, c'est-à-dire qu'une diminution pas à pas du compteur de un se produit.

12.14 Boucle avec précondition. Le nombre d'étapes dans le cycle n'est pas prédéterminé et dépend des données d'entrée du problème. Dans cette structure de boucle, la valeur de l'expression conditionnelle (condition) est d'abord vérifiée avant d'exécuter l'étape suivante de la boucle. Si la valeur de l'expression conditionnelle est true, le corps de la boucle est exécuté. Après cela, le contrôle est à nouveau transféré à la vérification de l'état, etc. Ces actions sont répétées jusqu'à ce que l'expression conditionnelle soit évaluée à FALSE. À la première violation de la condition, le cycle se termine.

Cet opérateur de répétition le plus couramment utilisé est:

TANDIS QUE<условие> FAIRE<оператор>;

WHILE, DO - mots réservés (anglais: bye, to do);

<условие> - expression d'un type logique;

<оператор> - un opérateur arbitraire (éventuellement composé).

La particularité d'une boucle avec une précondition est que si l'expression conditionnelle initiale est fausse, alors le corps de la boucle ne sera pas exécuté une seule fois.

Les boucles avec une condition préalable sont utilisées lorsque l'exécution de la boucle est associée à une condition logique. Une instruction de boucle avec une condition préalable comprend deux parties: la condition d'exécution de la boucle et le corps de la boucle.

12.15 Boucle avec postcondition (boucle itérative). Comme dans une boucle avec une pré-condition, dans une boucle avec une post-condition, le nombre de répétitions du corps de la boucle n'est pas prédéterminé, il dépend des données d'entrée de la tâche. Contrairement à une boucle avec une précondition, le corps d'une boucle avec une postcondition sera toujours exécuté au moins une fois, après quoi la condition est vérifiée. Dans cette construction, le corps de la boucle s'exécutera tant que la valeur de l'expression conditionnelle est fausse. Dès que cela devient vrai, la commande est terminée.

Cet opérateur a la forme:

RÉPÉTER<тело цикла> JUSQU'À CE QUE<условие>:

RÉPÉTER, JUSQU'À - mots réservés (anglais: répéter jusqu'à non);

<условие> - une expression de type logique, si sa valeur est vraie, alors la boucle est quittée.

Il convient de noter que dans cette construction, la séquence d'instructions définissant le corps de la boucle n'est pas entourée des crochets d'opérateur BEGIN ... END, puisqu'ils sont la paire REPEAT ... UNTIL.

Les boucles de postconditionnement sont similaires aux boucles préconditionnées, mais elles placent la condition après le corps de la boucle.

Contrairement à une boucle avec une précondition, qui peut terminer son travail sans jamais exécuter le corps de la boucle (si la condition d'exécution est fausse lors du premier passage de la boucle), le corps de la boucle avec une postcondition doit être exécuté au moins une fois, après quoi la condition est vérifiée.

L'un des opérateurs du corps de la boucle doit influencer la valeur de la condition d'exécution de la boucle, sinon la boucle se répétera un nombre infini de fois.

Si la condition est vraie, alors la boucle est quittée, sinon les instructions de boucle sont répétées.

16. Tableauest un ensemble d'éléments du même type, unis par un nom commun et occupant une certaine zone mémoire dans l'ordinateur. Le nombre d'éléments dans un tableau est toujours fini. En général, un tableau est type structuré données, constituées d'un nombre fixe d'éléments du même type. Les tableaux sont nommés de type régulier (ou lignes) car ils combinent des éléments du même type (logiquement homogènes), ordonnés (ajustés) par des indices qui déterminent la position de chaque élément dans le tableau. N'importe quel type de données peut être utilisé comme éléments de tableau, il est donc tout à fait légitime pour les tableaux d'enregistrements, les tableaux de pointeurs, les tableaux de chaînes, les tableaux, etc. Les éléments de tableau peuvent être des données de n'importe quel type, y compris des données structurées. Le type d'éléments de tableau est appelé basique. La particularité du langage Pascal est que le nombre d'éléments du tableau est fixe lors de la description et ne change pas lors de l'exécution du programme. Les éléments qui composent le tableau sont ordonnés de telle manière que chaque élément correspond à un ensemble de nombres (indices) qui déterminent son emplacement dans la séquence générale. Chaque élément individuel est accessible en indexant les éléments du tableau. Les indices sont des expressions de tout type scalaire (le plus souvent un entier), à l'exception des vrais. Le type d'index définit la plage de modifications des valeurs d'index. Le tableau de phrases de est utilisé pour décrire un tableau.

Un tableau est appelé une collection de données qui exécutent des fonctions similaires et désigné par un nom. Si un seul nombre ordinal est attribué à chaque élément du tableau, alors un tel tableau est appelé linéaire ou unidimensionnel.

17... Tableau unidimensionnelEst un nombre fixe d'éléments du même type, unis par un seul nom, et chaque élément a son propre numéro unique, et les numéros d'article vont dans une rangée.

Pour décrire ces objets en programmation, vous devez d'abord entrer le type approprié dans la section de description de type.

Le type de tableau est décrit comme suit:

Nom du type \u003d Tableau [type d'index (s)] De type d'élément;

Nom de la variable: nom du type;

Type de variable le tableau peut être décrit directement dans la section Description de la variable Var:

Var Nom de la variable: tableau [type d'index (s)] De type d'éléments;

Array - un mot de service (traduit de l'anglais signifie «tableau»);

Of - un mot de service (traduit de l'anglais signifie "de").

Type d'index - tout type ordinal, à l'exception des types entiers et longs.

Le type des éléments eux-mêmes peut être tout autre que le type de fichier.

Le nombre d'éléments dans un tableau s'appelle sa dimension. Il est facile de calculer qu'avec la dernière méthode de description de l'ensemble d'indices, la dimension du tableau est égale à: la valeur maximale de l'indice - la valeur minimale de l'indice + 1.

Par exemple:

mas \u003d tableau de réel;

Tableau X - unidimensionnel, composé de vingt éléments type réel... Les éléments du tableau sont stockés dans la mémoire de l'ordinateur de manière séquentielle les uns après les autres.

Lors de l'utilisation de variables pour désigner un index, leurs valeurs doivent être déterminées au moment de l'utilisation, et dans le cas d'expressions arithmétiques, leur résultat ne doit pas dépasser les limites des valeurs minimales et maximales des indices du tableau.

Les indices d'élément de tableau peuvent commencer par n'importe quel entier, y compris négatif, par exemple:

Tapez bb \u003d Array [-5..3] Of Boolean;

Les tableaux de ce type contiendront 9 variables booléennes, numérotées de -5 à 3.

18. Tableau bidimensionnel en Pascal est traité comme un tableau à une dimension, dont le type d'élément est également un tableau (tableau de tableaux). La position des éléments dans les tableaux Pascal bidimensionnels est décrite par deux indices. Ils peuvent être représentés sous forme de tableau ou de matrice rectangulaire.

Considérons un tableau Pascal bidimensionnel de dimensions 3 * 3, c'est-à-dire qu'il aura trois lignes et que chaque ligne aura trois éléments:

Chaque élément a son propre numéro, comme dans les tableaux à une dimension, mais maintenant, le nombre se compose déjà de deux nombres - le numéro de la ligne dans laquelle se trouve l'élément et le numéro de la colonne. Ainsi, le numéro d'article est déterminé par l'intersection de la ligne et de la colonne. Par exemple, un 21 est l'élément de la deuxième ligne et de la première colonne.

Description d'un tableau Pascal bidimensionnel.

Il existe plusieurs façons de déclarer un tableau Pascal à deux dimensions.

Nous savons déjà comment décrire des tableaux à une dimension, dont les éléments peuvent être de n'importe quel type, et, par conséquent, les éléments eux-mêmes peuvent être des tableaux. Considérez la description suivante des types et des variables:

Actions de base avec tableaux à deux dimensions Pascal

Tout ce qui a été dit sur les opérations de base avec des tableaux unidimensionnels est également vrai pour les matrices. La seule action qui peut être effectuée sur des matrices du même type dans leur ensemble est l'affectation. Autrement dit, si notre programme décrit deux matrices du même type, par exemple,

matrice \u003d tableau d'entiers;

puis lors de l'exécution du programme, vous pouvez affecter à la matrice a la valeur de la matrice b (a: \u003d b). Toutes les autres actions sont effectuées élément par élément, tandis que sur les éléments, vous pouvez effectuer toutes les opérations valides qui sont définies pour le type de données des éléments du tableau. Cela signifie que si un tableau se compose d'entiers, alors les opérations définies pour les entiers peuvent être effectuées sur ses éléments, mais si le tableau se compose de caractères, alors les opérations définies pour travailler avec des caractères leur sont applicables.

21. Technologies pour travailler avec des documents texte. Éditeurs et processeurs de texte: objectif et capacités.

plus parfait éditeurs de texte (par exemple, Microsoft Word et OpenOffice.org Writer), parfois appelés traitements de texte, ont un large éventail de capacités de création de documents (insérer des listes et des tableaux, des vérificateurs orthographiques, des corrections de sauvegarde, etc.).

Pour préparer la publication de livres, de magazines et de journaux en cours de prototypage de la publication, de puissants programmes de traitement de texte sont utilisés - des systèmes de publication assistée par ordinateur (par exemple, Adobe PageMaker, Microsoft Office Publisher).

Pour préparer des pages Web et des sites Web en vue de leur publication sur Internet, des applications spécialisées (telles que Microsoft FrontPage) sont utilisées.

Les éditeurs de texte sont des programmes de création, d'édition, de formatage, d'enregistrement et d'impression de documents. Un document moderne peut contenir, en plus du texte, d'autres objets (tableaux, diagrammes, images, etc.).

L'édition est une transformation qui ajoute, supprime, déplace ou corrige le contenu d'un document. La modification d'un document se fait généralement en ajoutant, supprimant ou déplaçant des caractères ou des morceaux de texte.

Le formatage est la décoration du texte. En plus des caractères de texte, le texte formaté contient des codes invisibles spéciaux qui indiquent au programme comment l'afficher à l'écran et l'imprimer sur une imprimante: quelle police utiliser, quel style et quelle taille de caractères doivent être, comment les paragraphes et les en-têtes sont formatés.

Les textes formatés et non formatés sont de nature quelque peu différente. Cette distinction doit être comprise. Tout est important dans le texte formaté: la taille des lettres, leur image, et où une ligne se termine et une autre commence. C'est-à-dire que le texte formaté est inextricablement lié aux paramètres de la feuille de papier sur laquelle il est imprimé.

Lors de la conception de documents texte, il est souvent nécessaire d'ajouter des éléments ou des objets non textuels au document. Les éditeurs de texte avancés vous permettent de faire cela - ils ont de nombreuses possibilités d'insérer des images, des diagrammes, des formules, etc. dans le texte.

Documents papier et électroniques. Les documents peuvent être papier ou électroniques. Les documents papier sont créés et formatés pour une meilleure représentation lorsqu'ils sont imprimés sur une imprimante. Les documents électroniques sont créés et formatés pour la meilleure présentation sur l'écran du moniteur. Le remplacement progressif du flux de documents papier par l'électronique est l'une des tendances de développement technologies de l'information... La réduction de la consommation de papier est bénéfique pour la conservation des ressources naturelles et la réduction de la pollution environnementale.

Le formatage des documents papier et électroniques peut varier considérablement. Pour les documents papier, la mise en forme dite absolue est adoptée. Un document imprimé est toujours formaté pour s'adapter à une feuille imprimée d'un format (format) connu. Par exemple, la largeur d'une ligne de document dépend de la largeur du papier. Si le document a été préparé pour être imprimé sur des feuilles de grand format, il ne peut pas être imprimé sur de petites feuilles de papier - une partie du document ne rentrera pas dessus. En un mot, la mise en forme d'un document imprimé nécessite toujours une sélection préalable d'une feuille de papier puis une reliure à cette feuille. Pour un document imprimé, vous pouvez toujours nommer avec précision (dans n'importe quelle unité de mesure) les tailles des polices, les marges, l'espacement entre les lignes ou les paragraphes, etc.

Pour les documents électroniques, la mise en forme dite relative est adoptée. L'auteur du document ne peut pas prédire à l'avance sur quel ordinateur, avec quelle taille d'écran le document sera visualisé. De plus, même si les tailles d'écran étaient connues à l'avance, il est encore impossible de prédire quelle sera la taille de la fenêtre dans laquelle le lecteur verra le document. Par conséquent, les documents électroniques sont conçus pour s'adapter à la taille actuelle de la fenêtre et sont formatés à la volée.

L'auteur d'un document électronique ne sait pas non plus quelles polices sont disponibles sur l'ordinateur du futur lecteur, et ne peut donc pas spécifier de manière rigide dans quelle police le texte et les titres doivent être affichés. Mais il peut spécifier un formatage tel que sur n'importe quel ordinateur, les en-têtes apparaîtront plus grands que le texte.

Le formatage relatif est utilisé pour créer des documents électroniques sur Internet (appelés pages Web), et le formatage absolu est utilisé pour créer des documents imprimés dans des traitements de texte.

22. de base éléments structurels document texte... Polices, styles, formats.

Formatage de la police (caractères).

Les symboles sont des lettres, des chiffres, des espaces, des signes de ponctuation, des caractères spéciaux. Les symboles peuvent être formatés (modifiés apparence). Les principales propriétés des symboles sont les suivantes: police, taille, style et couleur.

Une police est un ensemble complet de caractères dans un style spécifique. Chaque police a son propre nom, par exemple Times New Roman, Arial, Comic Sans MS. L'unité de police est un point (1 pt \u003d 0,367 mm). Les tailles de police peuvent être modifiées dans une large gamme. En plus du style normal (normal) des caractères, les caractères gras, italique et gras italique sont généralement utilisés.

Les polices bitmap et vectorielles se distinguent par la manière dont elles sont présentées sur un ordinateur. Les méthodes utilisées pour représenter les polices bitmap sont graphiques bitmap, les caractères de police sont des groupes de pixels. Les polices bitmap ne peuvent être mises à l'échelle que par certains facteurs.

Dans les polices vectorielles, les symboles sont décrits par des formules mathématiques et leur mise à l'échelle arbitraire est possible. Les polices TrueType sont les polices vectorielles les plus utilisées.

Vous pouvez également définir options supplémentaires mise en forme des caractères: souligner les caractères avec différents types de lignes, changer le type de caractères (exposant et indice, barré), changer l'espacement entre les caractères.

Si vous envisagez d'imprimer un document en couleur, vous pouvez définir différentes couleurs pour différents groupes de caractères.

Pour vérifier l'orthographe et la syntaxe, des modules logiciels spéciaux sont utilisés, qui sont généralement inclus dans les traitements de texte et les systèmes de publication. Ces systèmes contiennent des dictionnaires et des règles de grammaire pour plusieurs langues, ce qui vous permet de corriger les erreurs dans les documents multilingues.

24... Base de données est un modèle d'information qui vous permet de stocker de manière ordonnée des données sur un groupe d'objets ayant le même ensemble de propriétés.

Il y a plusieurs différents types bases de données: tabulaires (relationnelles), hiérarchiques et en réseau.

Bases de données tabulaires.

Une base de données tabulaire contient une liste d'objets du même type, c'est-à-dire des objets avec le même ensemble de propriétés. Il est pratique de représenter une telle base de données sous la forme d'une table à deux dimensions.

Dans les bases de données relationnelles, toutes les données sont présentées sous forme de tableaux simples, divisés en lignes et colonnes, à l'intersection desquels se trouvent les données. Les requêtes sur de telles tables renvoient des tables, qui elles-mêmes peuvent faire l'objet de requêtes ultérieures. Chaque base de données peut inclure plusieurs tables.

Le principal avantage des tableaux est leur clarté. Nous traitons des informations tabulaires presque tous les jours. Jetez un œil, par exemple, dans votre agenda: l'horaire des cours y est présenté sous forme de tableau. Lorsque nous arrivons à la gare, nous regardons les horaires des trains. Quelle forme a-t-il? C'est une table! Et puis il y a le tableau du championnat de football. Et le journal du professeur, où il vous donne des notes, est aussi un tableau.

En bref, les fonctionnalités d'une base de données relationnelle peuvent être formulées comme suit:

1. Les données sont stockées dans des tables composées de colonnes ("attributs", "champs") et de lignes ("enregistrements");

2. Il y a exactement une valeur à l'intersection de chaque colonne et ligne;

3. Chaque colonne a son propre nom, qui lui sert de nom, et toutes les valeurs d'une colonne sont du même type.

4. Les requêtes adressées à la base de données renvoient les résultats sous la forme de tables, qui peuvent également servir d'objet de requête.

5. Les lignes d'une base de données relationnelle ne sont pas ordonnées - l'ordre est effectué au moment de la génération d'une réponse à une demande.

6. Habituellement, les informations contenues dans les bases de données ne sont pas stockées dans une table, mais dans plusieurs tables interconnectées.

Dans les bases de données relationnelles, une ligne de table est appelée enregistrementet la colonne est champ... Chaque champ de table a un nom.

Des champs - ce sont diverses caractéristiques (parfois disent-ils - attributs) d'un objet. Les valeurs de champ sur une ligne se réfèrent à un objet.

Clé primaire dans la base de données, un champ (ou un ensemble de champs) est appelé, dont la valeur n'est pas répétée dans les enregistrements.

Il y a une autre propriété très importante associée à chaque champ - type de champ... Le type de champ définit l'ensemble de valeurs qu'un champ donné peut prendre dans divers enregistrements.

Il existe quatre principaux types de champs utilisés dans les bases de données relationnelles:

Numérique;

Symbolique;

Logique.

25. Systèmes de gestion de bases de données et principes de travail avec eux. Recherche, suppression et tri des données dans la base de données. Conditions de recherche (expressions logiques); ordonner et trier les clés.

Systèmes de gestion de base de données (SGBD).

Pour créer des bases de données, ainsi que pour effectuer des opérations de recherche et de tri, il existe programmes spéciaux - les systèmes de gestion de bases de données (SGBD).

Ainsi, il est nécessaire de faire la distinction entre la base de données réelle (DB) - ensembles de données ordonnés, et les systèmes de gestion de base de données (SGBD) - programmes qui gèrent le stockage et le traitement des données. Par exemple, l'application Access incluse dans suite bureautique programmes Microsoft Office est un système de gestion de base de données qui permet à l'utilisateur de créer et de manipuler des bases de données tabulaires.

Une base de données relationnelle est essentiellement une table à deux dimensions. Un enregistrement signifie ici une ligne d'un tableau bidimensionnel, dont les éléments forment les colonnes du tableau. Les colonnes peuvent être numériques, textuelles ou date en fonction du type de données. Les lignes du tableau sont numérotées.

Travailler avec un SGBD commence par créer une structure de base de données, c'est-à-dire avec la définition:

le nombre de colonnes;

noms de colonnes;

types de colonnes (texte / nombre / date);

largeurs de colonne.

Les principales fonctions du SGBD:

Gestion des données dans mémoire externe (sur disques);

Gestion des données dans mémoire vive;

Journalisation des modifications et récupération de la base de données après des échecs;

Prise en charge des langages de base de données (langage de définition de données, langage de manipulation de données).

Dans les commandes SGBD, la condition de sélection est écrite sous la forme d'une expression logique.

Expression booléenne, comme une expression mathématique, elle est exécutée (calculée), mais le résultat n'est pas un nombre, mais une valeur booléenne: vrai ou faux.

Une expression constituée d'une valeur logique ou d'une relation sera appelée une expression logique simple.

Il y a souvent des problèmes dans lesquels on n'utilise pas des conditions séparées, mais un ensemble de conditions liées (relations). Par exemple, vous devez sélectionner des élèves dont le poids est supérieur à 60 et la taille inférieure à 168.

Une expression contenant des opérations logiques sera appelée une expression logique complexe.

L'union de deux (ou plus) instructions en une seule utilisant l'union "et" est appelée opération de multiplication logique ou de conjonction.

À la suite de la multiplication logique (conjonction), true est obtenu si toutes les expressions logiques sont vraies.

L'union de deux (ou plus) instructions utilisant l'union «ou» est appelée l'opération d'addition ou de disjonction logique.

À la suite d'une addition logique (disjonction), true est obtenu si au moins une expression logique est vraie.

Attacher une particule «non» à une déclaration est appelé une opération de négation ou d'inversion logique.

27. Feuilles de calcul, objectif et fonctions de base.

Tableur est un programme de traitement de données numériques qui stocke et traite les données dans des tableaux rectangulaires.

Une feuille de calcul est composée de colonnes et de lignes. Les en-têtes de colonnes sont désignés par des lettres ou des combinaisons de lettres (A, G, AB, etc.), les en-têtes de lignes par des chiffres (1, 16, 278, etc.). La cellule est l'intersection d'une colonne et d'une ligne.

Chaque cellule du tableau a sa propre adresse. Une adresse de cellule de feuille de calcul est composée d'un en-tête de colonne et d'un en-tête de ligne, par exemple: A1, F123, R1. La cellule avec laquelle certaines actions sont effectuées est mise en évidence avec un cadre et appelée active.

Types de données. Les feuilles de calcul vous permettent de travailler avec trois types de données de base: nombre, texte et formule.

Numéros en électronique feuilles de calcul Excel peut être écrit au format numérique normal ou exponentiel, par exemple: 195,2 ou 1,952E + 02. Par défaut, les nombres sont alignés à droite dans une cellule. Cela est dû au fait que lors du placement des nombres les uns sous les autres (dans une colonne de tableau), il est pratique d'avoir un alignement par chiffres (unités sous unités, dizaines sous dizaines, etc.).

Une formule doit commencer par un signe égal et peut inclure des nombres, des noms de cellules, des fonctions (mathématiques, statistiques, financières, date et heure, etc.) et des signes d'opérations mathématiques. Par exemple, la formule «\u003d A1 + B2» ajoute les nombres stockés dans les cellules A1 et B2 et la formule «\u003d A1 * B» multiplie le nombre stocké dans la cellule A1 par 5. Lorsque vous entrez une formule, la cellule n'affiche pas la formule elle-même, et le résultat des calculs utilisant cette formule. Si vous modifiez les valeurs d'origine incluses dans la formule, le résultat est recalculé immédiatement.

Liens absolus et relatifs. Les formules utilisent des références aux adresses de cellules. Il existe deux principaux types de liens: relatifs et absolus. Les différences entre eux apparaissent lorsque vous copiez une formule d'une cellule active vers une autre cellule.

Une référence relative dans une formule est utilisée pour indiquer une adresse de cellule, calculée par rapport à la cellule dans laquelle réside la formule. Lorsque vous déplacez ou copiez une formule à partir de la cellule active, les références relatives sont automatiquement mises à jour en fonction de la nouvelle position de la formule. Les références relatives sont les suivantes: A1, B3.

Si le signe dollar est devant une lettre (par exemple: $ A1), la coordonnée de la colonne est absolue et la coordonnée de la ligne est relative. Si le signe dollar est devant un nombre (par exemple, A $ 1), alors, au contraire, la coordonnée de la colonne est relative et les lignes sont absolues. Ces liens sont appelés liens mixtes.

Par exemple, supposons que la cellule C1 contienne la formule \u003d A $ 1 + $ J31, qui, lorsqu'elle est copiée dans la cellule D2, devient \u003d B $ 1 + $ B2. Les liens relatifs ont changé lors de la copie, mais pas les liens absolus.

Tri et recherche de données. Les feuilles de calcul vous permettent de trier vos données. Les données des feuilles de calcul sont triées par ordre croissant ou décroissant. Le tri organise les données dans un ordre spécifique. Vous pouvez effectuer des tris imbriqués, c'est-à-dire trier les données sur plusieurs colonnes, tout en affectant une séquence de tri aux colonnes.

Dans les feuilles de calcul, vous pouvez rechercher des données conformément aux conditions spécifiées - filtres. Les filtres sont définis à l'aide de termes de recherche (supérieur à, inférieur à, égal, etc.) et de valeurs (100, 10, etc.). Par exemple, plus de 100. La recherche trouvera les cellules contenant des données correspondant au filtre spécifié.

Construction de diagrammes et de graphiques. Les feuilles de calcul vous permettent de présenter des données numériques sous forme de tableaux ou de graphiques. Il existe différents types de graphiques (barres, secteurs, etc.); le choix du type de graphique dépend de la nature des données.

28. Technologie de traitement de l'information dans les tableaux électroniques (ET). La structure de la feuille de calcul.

Une feuille de calcul est un programme de traitement de données numériques qui stocke et traite les données dans des tableaux rectangulaires. Une feuille de calcul est composée de colonnes et de lignes. Les en-têtes de colonnes sont désignés par des lettres ou des combinaisons de lettres (A, G, AB, etc.), les en-têtes de lignes par des numéros (1, 16, 278, etc.). La cellule est l'intersection d'une colonne et d'une ligne. Chaque cellule du tableau a sa propre adresse. Une adresse de cellule de feuille de calcul est composée d'un en-tête de colonne et d'un en-tête de ligne, par exemple: Al, B5, E7. La cellule avec laquelle certaines actions sont effectuées est mise en évidence avec un cadre et appelée active. Les feuilles de calcul avec lesquelles l'utilisateur travaille dans l'application sont appelées feuilles de calcul. Vous pouvez saisir et modifier des données sur plusieurs feuilles de calcul en même temps et effectuer des calculs basés sur les données de plusieurs feuilles. Les documents de feuille de calcul peuvent inclure plusieurs feuilles de calcul et sont appelés classeurs.

29. Types de données dans les feuilles de calcul (ET): nombres, formules, texte. Règles d'écriture des formules.

Types de données.

Les feuilles de calcul vous permettent de travailler avec trois types de données de base: nombre, texte et formule.

Les nombres dans les feuilles de calcul Excel peuvent être écrits au format numérique normal ou exponentiel, par exemple: 195,2 ou 1,952О + 02. Par défaut, les nombres sont alignés à droite dans une cellule. Cela est dû au fait que lors du placement des nombres les uns sous les autres (dans une colonne de tableau), il est pratique d'avoir un alignement par chiffres (unités sous unités, dizaines sous dizaines, etc.).

Le texte dans les feuilles de calcul Excel est une séquence de caractères composée de lettres, de chiffres et d'espaces, par exemple, «32 Mo» est du texte. Par défaut, le texte est aligné à gauche dans une cellule. Cela est dû à la manière traditionnelle d'écrire (de gauche à droite).

Une formule doit commencer par un signe égal et peut inclure des nombres, des noms de cellules, des fonctions (mathématiques, statistiques, financières, date et heure, etc.) et des signes mathématiques: opérations. Par exemple, la formule «\u003d A1 + B2» ajoute les nombres stockés dans les cellules A1 et B2 et la formule «\u003d A1 * 5» multiplie le nombre stocké dans la cellule A1 par 5. Lorsque vous entrez une formule, la cellule n'affiche pas la formule elle-même, et le résultat des calculs utilisant cette formule. Si vous modifiez les valeurs d'origine incluses dans la formule, le résultat est recalculé immédiatement.

Règles d'écriture de formules dans des feuilles de calcul

1. Les formules contiennent des nombres, des noms de cellules, des signes d'opération, des parenthèses, des noms de fonctions

2. Opérations arithmétiques et leurs signes:

Nom de l'opération Symbole Combinaison de touches

addition + (Shift + + \u003d) ou (+) sur un clavier supplémentaire

soustraction - (-)

multiplication * (Shift + 8) ou (*) sur un clavier supplémentaire

division / (Maj + | \\) ou (/) sur un clavier supplémentaire

exponentiation ^ (Shift + 6) en anglais

3. La formule est écrite sur une ligne, les symboles sont alignés séquentiellement les uns après les autres, tous les signes d'opérations sont inscrits; des parenthèses sont utilisées.

4. Tout d'abord, les opérations entre parenthèses sont effectuées, s'il n'y a pas de parenthèses, alors l'ordre d'exécution est déterminé par la priorité des opérations. Par ordre décroissant d'ancienneté, les opérations sont organisées dans l'ordre suivant:

1. exposition

2. multiplication, division

3. addition, soustraction

Les opérations de même priorité sont effectuées dans l'ordre dans lequel elles sont écrites de gauche à droite.

5. Les formules peuvent être saisies dans le mode d'affichage des calculs, c.-à-d. L'utilisateur commence à écrire une formule dans la cellule actuelle avec le signe \u003d et après avoir appuyé sur la touche Entrée, le résultat du calcul de la formule s'affiche dans la cellule.

6. Les formules peuvent être saisies dans le mode d'affichage des formules, c.-à-d. l'utilisateur écrit une formule non signée \u003d dans la cellule actuelle et la formule s'affiche dans la cellule après avoir appuyé sur la touche Entrée.

30. Fonctions intégrées de base. Références absolues et relatives dans les tableaux électroniques (ET).

Une référence relative dans une formule est utilisée pour indiquer l'adresse d'une cellule calculée par rapport à la cellule dans laquelle réside la formule. Lorsque vous déplacez ou copiez une formule à partir de la cellule active, les références relatives sont automatiquement mises à jour en fonction de la nouvelle position de la formule. Les références relatives sont les suivantes: A1, OT.

Une référence absolue dans une formule est utilisée pour indiquer une adresse de cellule fixe. Les références absolues ne changent pas lorsque vous déplacez ou copiez une formule. Dans les références absolues, un signe dollar (par exemple, $ A $ 1) est placé avant la valeur de l'adresse de cellule immuable.

Si le symbole dollar est devant une lettre (par exemple: $ A1), la coordonnée de la colonne est absolue et les lignes sont relatives. Si le signe dollar est devant un nombre (par exemple, A $ 1), alors, au contraire, la coordonnée de la colonne est relative et les lignes sont absolues. Ces liens sont appelés liens mixtes. Supposons, par exemple, que dans la cellule C1 la formule \u003d A $ 1 + $ B1 soit écrite, qui, lorsqu'elle est copiée dans la cellule D2, devient \u003d B $ 1 + $ B2. Les liens relatifs ont changé lors de la copie, mais pas les liens absolus.

La leçon expliquera l'algorithme de création de types de données utilisateur en Pascal (Type). Les exemples seront triés.

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

Les types simples incluent standard, énumérable et limité.

Aux types complexes - tableaux, ensembles, enregistrements, fichiers. Les éléments de types complexes peuvent être des types simples et complexes. Nous apprendrons à connaître les types de données complexes plus tard.

L'un des types les plus courants est le type standard ordinal.
Type standard ordinaire désigne un ensemble linéaire fini de valeurs. Il comprend généralement types entiers, octets, caractères et booléens.

Nouveaux types de données (personnalisés) sont nécessaires principalement pour plus de clarté et de commodité:

Exemple: Une matrice 10 x 50 est spécifiée. Décrivez la matrice à l'aide d'un type de données personnalisé

procédure p (a: tableau d'entiers);

Mais devrait créer un type de données et écrivez-le comme ceci:

1 2 type vecteur \u003d tableau [1 .. 10] d'entier; procédure var p (a: vecteur);

type vector \u003d tableau d'entiers; procédure var p (a: vecteur);

Exemples de description de tableaux à l'aide de nouveaux types

type vector \u003d tableau d'entiers; matritsa \u003d tableau de vecteur;

  • 1 type matritsa \u003d tableau [1 .. 8] du tableau [1 .. 10] d'entier;

    type matritsa \u003d tableau de tableau d'entiers;

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

    type matritsa \u003d tableau d'entiers;

  • Dans l'exemple suivant, les variables c et sont décrits de la même manière:

    1 2 3 4 5 6 type vecteur \u003d tableau [1 .. 10] d'entier; matritsa \u003d tableau [1 .. 8] de vecteur; var a, b: vecteur; c: matritsa; d: tableau [1 .. 8] de vecteur;

    type vector \u003d tableau d'entiers; matritsa \u003d tableau de vecteur; var a, b: vecteur; c: matritsa; d: tableau de vecteur;

    Type 1: Les tableaux a, b et c sont donnés. Trouvez la moyenne arithmétique des éléments minimaux d'un tableau (utilisez la mise en forme de tableau et).
    Lors de la description des procédures, utilisez types personnalisés Les données

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

    Type énuméré

    Le programme peut utiliser des variables d'un type qui ne correspond à aucun des types standard.

    Par exemple, un type peut être spécifié en énumérant des valeurs lorsqu'il est déclaré; une variable de ce type peut prendre n'importe laquelle de ces valeurs.

    Ces valeurs ne peuvent pas être des chaînes, elles ne peuvent pas être imprimées et ne peuvent pas être entrées dans un ordinateur en utilisant les instructions Read et Write.

    Prenons un exemple de création d'un type énuméré en Pascal:

    type pt \u003d (mot1, mot2, ... motN); var w: pt;

    type pt \u003d (mot1, mot2, ... motN); var w: pt;

  • pt - identifiant de type (arbitraire),
  • mot1, mot2 ... - valeurs spécifiques qu'une variable w de type pt peut prendre
  • les valeurs de ce type sont considérées comme ordonnées, c'est-à-dire la déclaration de type introduit simultanément la commande mot1.
  • Type d'intervalle

    Type d'intervalle définit un sous-ensemble spécifique de valeurs qu'une variable donnée peut prendre. Créé en spécifiant la valeur la plus petite et la plus grande d'un type ordinal... Les valeurs de tous types simples autres que les types réels peuvent être utilisées comme constantes (valeurs minimum et maximum).

    Prenons un exemple de déclaration de type intervalle:

    a: min .. max;
  • une - variable d'intervalle
  • min - résultat
  • max Est la limite supérieure du sous-ensemble
  • les limites de la plage sont séparées par deux points
  • frontière mindevrait toujours être moins max
  • constantes minet maxdoit être du même type. Ils définissent le type de base d'une variable une.
  • Utilisation conjointe des types énumérés et intervalle

    Une variable de type intervalle peut être définie avec une racine du type énuméré sous-jacent... Prenons un exemple:

    Exemple: Si la variable b peut prendre l'une des valeurs rouge, jaune, vert, alors cette variable peut être décrite comme suit: b: rouge.. vert; type de base pour b est le 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); readln end.

    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); readln end.

    DANS cet exemple le type de couleur est basique. La variable b d'un type d'intervalle est définie à l'aide d'un type d'énumération de base.

    Exemple: On sait combien de jours il y a dans chaque mois de l'année. Combien de jours en été?
    31,28,31,30,31,30,31,31,30,31,30,31

    L'une des options pour résoudre ce problème ressemble à ceci:

      Afficher la solution:

      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); var s, i: entier; commencer s: \u003d 0; pour i: \u003d 6 à 8 faire s: \u003d s + dni [i]; (mois d'été - 6, 7, 8) writeln (s) fin.

      const dni: tableau d'octets \u003d (31,28,31,30,31,30,31,31,30,31,30,31); var s, i: entier; commencer s: \u003d 0; pour i: \u003d 6 à 8 faire s: \u003d s + dni [i]; (mois d'été - 6, 7, 8) fin d'écriture (s).

      Code cette décision n'a pas la meilleure clarté, de plus, vous devez calculer vous-même les nombres des mois de début et de fin d'été (6 et 8).
      La commodité et la visibilité de ces programmes peuvent être améliorées comme suit:

      Afficher la solution:

      1 2 3 4 5 6 7 8 9 TYPE mes \u003d (janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre); CONST dni: tableau [janvier .. décembre] de Byte \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); VAR s: Entier; i: mes; (la variable de compteur de boucle i est de type mes, pas Integer) COMMENCER s: \u003d 0; pour i: \u003d juin à août do s: \u003d s + dni [i]; WriteLn (s) END.

      TYPE mes \u003d (janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre); CONST dni: tableau d'octets \u003d (31,28,31,30,31,30,31,31,30,31,30,31); VAR s: Entier; i: mes; (la variable de compteur de boucle i est de type mes, pas Integer) BEGIN s: \u003d 0; pour i: \u003d juin à août do s: \u003d s + dni [i]; WriteLn (s) END.

    Type 2: Déterminez s'il s'agit d'un week-end ou d'un jour ouvrable par le nom du jour de la semaine.

  • Définissez un type énuméré avec des valeurs de jour de la semaine ( lun, mar, mer, jeu, ven, sam, soleil).
  • Dans le programme, attribuez une valeur à une variable (à partir de valeurs de type, par exemple, lun).
  • Vérifier la variable: si la valeur est samedi ou dimanche, imprimer un message "Production!"autrement "Nous travaillons!".
  • Type 3: Selon le mois de l'année, émettez un message "du froid" - si le mois d'hiver, et "chaleureusement" - si l'été.

  • Définissez un type énuméré avec les valeurs des noms des mois de l'année.
  • Déclarez une variable de ce type.
  • Dans le programme, attribuez une valeur à une variable (à partir des valeurs de type).
  • Vérifier la variable: si la valeur se réfère au mois d'hiver, afficher un message "du froid" autrement, - "chaleureusement".
  • Mettre en œuvre de plusieurs manières.
  • Writeln (pribitie) fin.

    var otpravlenie, pribitie: octet; commencer otpravlenie: \u003d 22; pribitie: \u003d otpravlenie + 10; writeln (pribitie) fin.

    le programme au lieu de la réponse «8» affichera la réponse «32».
    L'introduction d'un type de plage restreint évitera le mauvais résultat, mais le compilateur lancera toujours une erreur:

    1 2 3 4 5 6 var otpravlenie, pribitie: 0 .. 24; commencer otpravlenie: \u003d 22; pribitie: \u003d otpravlenie + 10; writeln (pribitiedeva); var a: znak; commencer a: \u003d lev; si un<= strelets then writeln ("огонь" ) ; if (a>\u003d vesi) et (a<= bliznetsi) then writeln ("воздух" ) ; if (a>\u003d rak) et (a<= ribi) then writeln ("вода" ) ; if (a>\u003d kozerog) et (a<= deva) then writeln ("земля" ) ; end .

    {!LANG-c3f27ee3bd1b19df9646d8a96731c5a9!}<=strelets then writeln("огонь"); if (a>{!LANG-11df8a4cf9d20c428983d5c7434e6ef4!}<=bliznetsi) then writeln ("воздух"); if (a>{!LANG-81cdef8bfbe7989478009d997dd11401!}<=ribi) then writeln ("вода"); if (a>{!LANG-6b019715f0a74e6543cb32e3cf22bc45!}<=deva) then writeln ("земля"); end.

    {!LANG-e879451df867640c3ca3acaa8df6a8b9!}{!LANG-0bdeac5ab33eb1c9f66646cdaf0e697f!}

  • {!LANG-c15c644f672fbb7e6036f306280bfd0f!}
  • {!LANG-8820b3c587a5ebc368b58794b6a00c39!}
  • {!LANG-46a4d531c9638615e4f7c099584c95a1!}
  • {!LANG-a9d0231c18cf90c0d1098e2af6f87a70!}

    {!LANG-5c0f575e4a9616d386a42cce9b567efe!}

    {!LANG-9a8539da0149016440b901e01017b3ac!}

    {!LANG-430e39bc7bcbcbac9a433d014b57b5a2!}

    {!LANG-76bbf44ce9538192801da1aa059fff51!}

    {!LANG-5f37ec87af4edcc2f76af90f37707c82!}

    {!LANG-b3d0e2aa84871b5bff774205913c08a9!}

    {!LANG-9d1bfffeb6ea5544009f55f385c10dda!}

    {!LANG-d93fea3eab240f1261dd752825556a29!}

    {!LANG-15a4750846fde8d5e2aae750be68188a!}

    {!LANG-fde3efe3bde4e1d3d57a09b2ff1947b1!}

    2147483648 +2147483647

    {!LANG-7124acfe8c809d463d514a454686a55e!}

    {!LANG-44a8e995fedcd1845ba0e76e6e447954!}

    {!LANG-6731b2b15f1c12107570035ce733d253!}

    {!LANG-796df03ad45f1106b72dcdda30b665e2!}

    1. {!LANG-81e702807760890abd252ff850741525!}
    2. {!LANG-5b410405b0d9c5b03b6f9d7953d5aba0!}
    3. {!LANG-5c21a159828918e65ccbd96902061624!}

    {!LANG-3a093ba441150758f7bc1f6654ac6da4!}

    {!LANG-b9dd46cce04ade26a74da0180eb17c11!}

    {!LANG-3ab41f6d5dfb64ec26b2334092f4fe80!}

    {!LANG-af8a627c27de1333ac8822cb1e416c9c!}

    {!LANG-acaf48bbf98f583495a097256b3a5126!}

    {!LANG-e1f3d1593bf06467d8cf502c71d02b2d!}

    {!LANG-ce910165b939dfcbde974f7fcafd5c51!}

    {!LANG-8d32d8ba71cc6c5f47a2ebb17c21a06a!}

    {!LANG-68dc95829d1d0860d8d08ffb0b071eac!}

    {!LANG-44c7e1106fe336e7714f97c71320aeed!}

    {!LANG-8c47655bb8e11877c42bbe496b2a7c6f!}

    {!LANG-0ab011296aca507cb87abb81679e0279!}

    {!LANG-cdef3e4ceae5ecb6bd78a7a479731ee4!}

    {!LANG-edbe3727048f2d3c64c458d98e32b4f1!}

    {!LANG-23916f10d81321677cfbe5d37cd6d361!}

    {!LANG-5af5d370c7ee760b0c980fb59285c155!}

    {!LANG-f0f0695626d8d0f4f9fce8b8db1fb6b6!}

    {!LANG-9d1bfffeb6ea5544009f55f385c10dda!}

    {!LANG-0c0c368292bd42a40df5bf0e21826be5!}

    {!LANG-ce32c9ec9b8086b204f8103878948a11!}

    {!LANG-e80f5c0247690ef6767156866ce821fd!}

    {!LANG-cd145e10a1136aeee4d12f88efd2a898!}

    {!LANG-7bd3b3140ce6b46355f462698ab824e3!}

    {!LANG-a45d154aac45e1379140ca59a3db1728!}

    {!LANG-f07c572e4bbbfda52e4cef0c95194eb8!}

    • {!LANG-b21a38f870a88fa4408187ad168584fb!}
    • {!LANG-74d0be63aabc0e6e6f39beab984e98f9!}
    • {!LANG-cf68b58b439466fb2e4448e578a08617!}
    • {!LANG-8b4fcb731a2b9cde1da4cdec6f195e88!}
    • {!LANG-3ba8759b387f4a3d9c4e4840bc58aa42!}
    • {!LANG-e7278bce09f786f20588b65871992843!}
    • {!LANG-a16bb42909645444347794ab53064fd4!}
      • {!LANG-90b829f3da9a6a393cd0bff5f9c65081!}
      • {!LANG-b9b59934e07f7f69114563bd7a22f820!}
    • {!LANG-d44b94106f89077fd8ff42ea9f54e1ec!}
      • {!LANG-f2cf1a5d8ffb13709b8483a0ce2fe8cd!}
      • {!LANG-e37d23a234a927a984226db977cff2db!}
      • {!LANG-1b79f5b916826c21892fca177d09d1b3!}
      • {!LANG-7379c1a88af717cc6ce097be6081ed71!}

    {!LANG-552357ee3d1a1cf988fd51572d7b0429!}

    {!LANG-d76ba0cbe8b2646a335bfa23326e0ccd!}

    Par exemple:

    {!LANG-2dc08ee74e0d7373b540a85382734d41!}

    {!LANG-9c932e76dd90bdecd1404fc946cfb64a!}

    {!LANG-e79a66c2e0285888b54fe63a1483d4c3!}

    {!LANG-3011c8045002629691c0fef0143dfedd!}

    {!LANG-f82cd7228da499f905a84ca8d81b72a6!}

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

    {!LANG-066ee6346a9649bd9ad43e26be105992!}< ‘W’

    {!LANG-c4ddfe631dd864c6f21a28906457e385!}

    1. {!LANG-c15ef462a16447478b00d668a920aa55!}
    2. {!LANG-fdcad6456bdfb89269213eeac286c485!}
    3. {!LANG-9b9df1df361eddf3dc31ae2fdcc7dc3c!}
    4. {!LANG-5f2aa2cf9a632e7e33274ab62d9b5554!}

    {!LANG-52b3827c88264ed7a5295de75aac14ef!}

    {!LANG-87e8462f317746a901ae06b5997549c1!}

    {!LANG-506fd0f1761fe1408000b1c7d1397c49!}<имя типа>{!LANG-d0bdeab691815b515ff9cc9c6b6473d7!}<имя переменной>:<имя типа>;

    {!LANG-b4105a8365f96fbf4ef90b1000a2102e!}<список констант>{!LANG-e51f1b13962f7419c7ad45082a4ee884!}

    Par exemple:

    {!LANG-a8532071ccd14f7b92fbe060697c55c7!}

    {!LANG-ae48852fda0a28bedc4e2d50b61e5da5!}

    {!LANG-f6c637bcf80c40c6885e83dfc529aae2!}

    {!LANG-3acefeb4044d8d72b96c06c9aa2cf2cb!}

    {!LANG-57a0212da5b9616d8e6f6a4f1b90f751!}

    {!LANG-20d0237248fbdaba33743c5e8c7a345c!}

    {!LANG-3aa1cf2b8aec2f64e88580927422fad3!}

    {!LANG-34a519820d8ca363d229802dcb0af5f9!}

    {!LANG-469729bd6759f326331992fc4e7873ee!}

    {!LANG-75f7994fcaba4e867c26e6cd082c4653!}

    {!LANG-271c4586b9199b2f68bca5b456431eae!}< юг, июнь < январь имеют значения TRUE, а юг>{!LANG-f25a1e01c983e62c597437bcb6f4957e!}<бочка значение FАLSE.

    {!LANG-fc495093385ff53a0a0850d79957a37e!}

    {!LANG-a8dc54d4f38b45ea510346b4c2771d62!}

    {!LANG-51c2ecd3d6086f4e0c35176e891b7a39!}

    {!LANG-f86c83953689d94772e6d35e50803e7e!}<имя типа>{!LANG-b2df41d53d55952f29d74e0e765158f4!}

    {!LANG-46ff07fcf73c42eb9a27f55e327ff0c7!}

    1. {!LANG-63497ea4092123926fa15aa8490a3b91!}
    2. {!LANG-8972ccda69bfc42449fe4aa6af6b4090!}
    3. {!LANG-2e97052cda7b2a7afe457ce46abfeb64!}
    {!LANG-c1f28761fbe40f36b1f340fc1c139e2b!}

    {!LANG-c98a9b152167fd24cc03b73d61ad8883!}

    {!LANG-3dc67fbb368474071d974e00e3c5116c!}

    LA CLOCHE

    Il y a ceux qui ont lu cette nouvelle avant vous.
    Abonnez-vous pour recevoir les derniers articles.
    Email
    Nom
    Nom de famille
    Comment voulez-vous lire The Bell
    Pas de spam