Le concept de données structurées. Définition et affectation de la base de données. Le concept général de la structure de données

Initialement, le processus de programmation prévu pour enregistrer le programmeur de tous les algorithmes directement à language de machine. Une telle approche a été aggravée par une tâche difficile de développer des algorithmes et a trop souvent conduit aux erreurs qu'il était nécessaire de détecter et de corriger [le processus appelé débogage] avant que le travail puisse être considéré comme terminé.

La première étape sur le moyen de faciliter la tâche de programmation était une défaillance des chiffres pour enregistrer des commandes et des opérandes directement sous la forme dans laquelle ils sont utilisés dans la machine. À cette fin, le développement de programmes a commencé à utiliser le dossier mnémonique de diverses équipes au lieu de leur représentation hexadécimale. Par exemple, au lieu d'un code numérique de commandes de téléchargement, le programmeur pourrait maintenant écrire LOD, et au lieu du code de copie du contenu du registre à la mémoire, la désignation mnémonique STO pourrait utiliser. Pour l'enregistrement des opérandes, les règles ont été développées, selon lesquelles le programmeur pouvait attribuer des noms descriptifs à certaines zones de mémoire [elles sont souvent appelées identifiants] et les utilisent lors de l'enregistrement des commandes du programme au lieu d'adresses des cellules de mémoire correspondantes. De tels identificateurs sont généralement appelés variables. Cela souligne qu'en modifiant la valeur placée dans cette section de la mémoire, nous modifions la valeur associée à l'identifiant attribué à cette zone le long de l'exécution du programme.

Lors de la déclaration, leur type est généralement déterminé dans le programme de variable simultanément. Le type de données définit à la fois l'interprétation de données et d'opérations spécifiques pouvant être effectuées avec elles. Ces données incluent l'entier [entier], réel [Valable], caractère [symbole] et booléen [logique].

Le type entier est utilisé pour désigner des données numériques qui sont des entiers. En mémoire, ils sont le plus souvent soumis dans un code supplémentaire binaire. Les données entière peuvent être effectuées par des opérations arithmétiques conventionnelles et des opérations de comparaison.

Le type réel est conçu pour représenter des données numériques pouvant contenir des valeurs non cibles. En mémoire, ils sont généralement stockés comme numéros binaires Point flottant. Les opérations pouvant être effectuées avec des données réelles sont similaires aux opérations effectuées avec des données de type entier. Cependant, que les manipulations à effectuer pour plier les deux éléments de données du type réel diffèrent des manipulations requises pour effectuer des actions avec type de variables Entier.

Le type de caractères est utilisé pour des données constituées de caractères stockés en mémoire sous forme de codes ASCII ou UNICODE. Ce type de données peut être comparé à l'autre [Déterminer lequel des deux caractères est précédé d'un autre par ordre alphabétique]; Vérifiez si une ligne de caractères est différente, tout en combinant deux lignes en une seule chaîne plus longue, en ajoutant l'un d'entre eux après une autre [opération de concession].

Boolean fait référence aux données qui ne peuvent prendre que deux valeurs vraies [vérité] et false [mensonges]. Un exemple de ces données peut résulter d'une opération de comparaison à deux numérotation. Les opérations avec le type booléen comprennent la vérification si la valeur actuelle de la variable est vraie ou fausse.

La mémoire principale de la machine est organisée en tant que cellules distinctes avec des adresses d'augmentation constante. Cependant, ces cellules servent de base à la mise en œuvre d'autres méthodes de placement de données. Par exemple, le texte est généralement considéré comme une longue chaîne de caractères, tandis que les informations de vente peuvent être considérées comme une table rectangulaire avec des valeurs numériques, chacune représentant le nombre de transactions conclues par un employé spécifique un jour spécifique. La tâche consiste à fournir aux outils utilisateur de fonctionner avec des structures abstraites similaires, au lieu de délibérer dans les détails de la véritable organisation de données dans la mémoire principale de la machine. Pour une utilisation appropriée de l'ordinateur, il est nécessaire de connaître les relations structurelles entre les données, les principales méthodes de représentation des structures à l'intérieur de l'ordinateur, ainsi que des méthodes de travail avec elles. Pour les connexions entre les données, les éléments suivants sont utilisés dans l'ordinateur. structures d'information: Array, enregistrement, liste, bois, pile, file d'attente.

Tableaux

Le tableau est une structure contenant plusieurs éléments en soi. Pour les éléments de tableau, les index sont utilisés. Les index sont enregistrés entre parenthèses après le nom de la matrice. Un tableau avec un indice est appelé un dimension, avec deux - deux dimensions, etc.

Enregistrer

L'enregistrement est une structure constituée d'éléments non nécessairement du même type. Les entrées distinctes sont appelées champs. Le champ à son tour peut également être un enregistrement.

record étudiant (
PRÉNOM
Nom de famille
Grouper.
)

Listes

La liste est de nombreux enregistrements, chacun contenant un champ spécial - un pointeur. Le pointeur relie un enregistrement avec une autre entrée ou contient valeurs nullqui suggère que la valeur du pointeur n'est pas définie.

Les enregistrements dans une liste unique connectée ont un pointeur, alors qu'ils sont associés à une chaîne:

La flèche sur la figure indique le contenu du pointeur et les données de mots indiquent les ensembles de champs dans lesquels les données sont stockées. La liste peut être organisée à l'aide d'une matrice bidimensionnelle, tous les éléments dont le premier index de 0 sont conçus pour stocker des données, et des éléments avec le premier index égal à 1 sont des pointeurs.


DANS cette liste Les enregistrements contenant les lettres de l'alphabet anglais sont construits dans l'ordre alphabétique. Le premier enregistrement de la liste contient le symbole "A", le second - "B", etc.

Pour travailler avec une liste, vous devez pouvoir effectuer trois opérations principales:

Passer () - contourner ou déplacer dans la liste;
Ajouter () - Ajouter nouvel enregistrement dans la liste;
Supprimer () - Supprimer l'enregistrement de la liste.

En plus des opérations pour travailler avec une liste, deux autres variables sont nécessaires:

variable de la tête dans laquelle les premières informations d'enregistrement sont stockées dans la liste
Variable actuelle qui indique l'entrée actuelle dans la liste

Le tableau résume certaines des opérations de liste, dont il est donné ci-dessus.

Nom de l'opérationPseudocode
Aller le long de la liste une étape

pass de fonction (actuel) (
Si (m null) puis actuel: \u003d m;
Retour (courant);
}

fonction Ajouter (actuel, nouveau) (
M: \u003d m;
M: \u003d nouveau;
Revenir;
}

Ajouter à la liste des enregistrements à laquelle la nouvelle variable indique

fonction Supprimer (actuel) (
Si (m null) alors
M: \u003d m];
Revenir;
}

Les enregistrements dans la liste à double connexion sont liés à la chaîne, mais il y a deux champs de pointeur. L'un d'eux indique l'élément précédent de la liste, l'autre est l'élément suivant. Une telle structure vous permet de vous déplacer sur la liste dans deux directions: d'avant en arrière.

La bague s'appelle la liste, dernier enregistrement qui indique le premier. Ces listes n'ont pas d'enregistrement avec un pointeur vide.


Un arbre est une liste ramifiée, dont chaque enregistrement peut contenir plusieurs pointeurs. Les entrées incluses dans l'arborescence sont appelées nœuds. Nœuds que tous les pointeurs sont vides appelés feuilles. Le nœud de départ supérieur de l'arborescence est appelé nœud racine. Dans de nombreuses tâches, il suffit d'utiliser des arbres binaires [binaires] dont les nœuds n'ont pas plus de deux pointeurs.

Exemple. Il est nécessaire de calculer l'expression mathématique (3 + 7) * (2 / (3-1)). Imaginez cette expression sous la forme d'un arbre:

Chaque noeud de cet arbre est le type de type suivant:

noeud d'enregistrement (
Opération
Nombre
GauchePointer.
Righpointer.
)

Les feuilles d'arbres contiennent des chiffres, d'autres nœuds - symboles d'opérations.

Réaliser l'arborescence décrite sur une matrice bidimensionnelle, nous recevrons la photo suivante:


Pour calculer la valeur de l'arborescence, il est nécessaire de calculer les valeurs du sous-arbre droit et gauche, puis effectuez l'opération résultante sur eux. Le pseudocode de l'algorithme de la tâche décisive sera le suivant:

fonction calculer (courant) (
Si (m \u003d null) alors
Résultat: \u003d m;
AUTRE (
R1: \u003d calculer (m);
R2: \u003d calculer (m);
Résultat: \u003d R1 (m) R2;
}
Retour (résultat);
}

La pile est la structure des données organisées par le principe de "le dernier arrivé - la première à gauche". L'accès aux données stockées dans la pile est effectué via le sommet. Les données sont placées sur la pile d'élément séquentiellement placée dans la pile du tout premier, se révèlent être sur le bas et pour le retirer de la pile, vous devez d'abord extraire toutes les données qui ont été placées sur la pile plus tard. .

Lorsque vous travaillez avec une pile, deux urgences sont possibles: une tentative de lecture de données d'une pile vide; Tentative d'empiler un élément lorsque le nombre d'éléments de la pile a atteint la quantité maximale admissible.

La file d'attente est la structure de données, organisée selon le principe "d'abord venu - la première à gauche". Dans la file d'attente, la quantité variable de données. Lorsque la mise en file d'attente, les données sont ajoutées à la queue, lors de la suppression de la tête.

Table de hachage

Hazing est une méthode qui fournit un accès direct aux enregistrements sans utiliser de structures supplémentaires. Le processus peut être brièvement décrit comme suit. L'espace où les données sont stockées sont divisées en plusieurs segments. Les entrées sont distribuées sur ces segments selon un certain algorithme appelé l'algorithme de hachage qui convertit la valeur du champ clé vers le numéro de segment. Chaque entrée est stockée dans le segment déterminé par ce processus. Par conséquent, l'enregistrement peut être supprimé en appliquant l'algorithme de hachage à la valeur de son champ clé et en tenant compte de l'enregistrement du segment correspondant. La structure de données conçue de cette manière est appelée table de hachage.

Par exemple, si vous devez organiser une table de hachage pour le stockage lettres majuscules L'alphabet anglais, puis en tant que touches, vous pouvez sélectionner des caractères ASCII et l'algorithme de hachage coupera les cinq bits plus jeunes et formera un index d'un élément de tableau pour le stockage d'un symbole:

Dans le cas général, l'algorithme de hachage devrait être la valeur de la clé pour rendre la valeur de l'index dans les bordures de matrice et répartir uniformément les clés par les éléments de la matrice. Le non-respect de la dernière exigence conduit à des situations dans lesquelles plusieurs entrées tombent dans le même segment. Ces situations sont appelées conflits.

Les données stockées dans la mémoire de l'ordinateur représentent la totalité des zéros et des unités (bits). Les bits sont combinés dans des séquences: octets, mots, etc. Chaque site mémoire vivequi peut accueillir un octet ou un mot attribué le numéro de séquence (adresse).

Quel sens est conclu dans les données, quels symboles ils sont exprimés - lettrage ou numérique, ce qui signifie quelque chose ou une autre - tout cela est déterminé par le programme de traitement. Toutes les données nécessaires à la résolution de tâches pratiques sont divisées en plusieurs différents types, de plus, le concept un type associé non seulement à la présentation des données dans l'espace d'adressage, mais aussi avec À titre de traitement.

Toute données peut être attribuée à l'un des deux types: le principal (simple), dont la forme est définie par l'architecture de l'ordinateur ou un complexe, conçu par l'utilisateur pour résoudre des tâches spécifiques.

Ce type de type est - symboles, chiffres, etc. Éléments, dont la nouvelle broyage n'a pas de sens. Des données élémentaires, des structures (types complexes) des données sont formées.

Certaines structures:

· Déployer(La fonction avec la zone de définition finale) est un ensemble simple d'éléments du même type de données, un moyen d'exploiter un groupe de données par le même type. Un élément de tableau séparé est défini par l'index. Un tableau peut être unidimensionnel, bidimensionnel, etc. Les espèces de baies unidimensionnelles de longueur variable sont des structures de type anneau, pile, file d'attente et file bilatérale.

· Enregistrer(Production Cartesovo) - ensemble d'éléments de données de différents types. Dans le cas le plus simple, l'enregistrement contient un nombre constant d'éléments appelés des champs. L'ensemble des enregistrements de la même structure est appelé déposer. (Le fichier s'appelle également un ensemble de données dans mémoire externePar exemple, sur disque magnétique). Pour pouvoir extraire des enregistrements individuels du fichier, chaque enregistrement est attribué à un nom ou un numéro unique qui sert d'identifiant et est situé dans un champ distinct. Cet identifiant est appelé clé.

Ces structures de données qu'un tableau ou un enregistrement occupent un montant permanent en mémoire, ils sont donc appelés structures statiques. Les structures statiques s'appliquent également beaucoup de.

Il existe un certain nombre de structures qui peuvent changer leur longueur - le soi-disant structures dynamiques. Ceux-ci incluent le bois, la liste, le lien.

Une structure importante pour la mise en place d'éléments que l'espace d'adresse non linéaire est requis est bois. Il existe un grand nombre de structures de données pouvant être représentées comme des arbres. Ceci, par exemple, la classification, les structures hiérarchiques, récursives et autres. Plus de détails sur les arbres sont racontés au paragraphe 1.2.1.

Figure. 1.1. Classification des types de données

1.1.2. Structures enchères ou modèles de données.

Au-dessus, nous avons examiné plusieurs types de structures qui sont des ensembles d'éléments de données: tableau, bois, enregistrement. Un type de données plus complexe peut inclure ces structures en tant qu'éléments. Par exemple, les éléments d'enregistrement peuvent être une matrice, une pile, un bois, etc.

Il existe une grande variété de types de données complexes, mais des études menées sur un grand matériau pratique ont montré que parmi eux peut être distingué par plusieurs des plus courants. Les structures généralisées sont également appelées modèles de donnéescar Ils reflètent la présentation des données du monde réel de l'utilisateur.

Tout modèle de données doit contenir trois composants:

1. structure de données - Décrit le point de vue de l'utilisateur pour représenter les données.

2. ensemble d'opérations autorisées effectué sur la structure de données. Le modèle de données suppose au minimum la présence d'une langue de définition de données (noyau) décrivant la structure de leur stockage et de leur langage de manipulation de données (NMID), qui inclut l'extraction et la modification des données.

3. limitations de l'intégrité - Mécanisme de conformité des données domaine Basé sur les règles formellement décrites.

Dans le processus de développement historique dans le SGBM, les modèles de données suivants ont été utilisés:

· hiérarchique

· réseau

· relationnel.

DANS dernièrement tout plus important Accompose une approche orientée objet de la présentation de données.

1.2.Methods d'accès aux données

Les problèmes de présentation de données sont étroitement liés aux opérations, avec lesquelles ces données sont traitées. Ces opérations comprennent: sélection, changement, inclusion et une exception Les données. La base de toutes les opérations répertoriées est l'opération accèsqui ne peut être considéré comme indépendamment de la méthode de présentation.

Dans les tâches de recherche, il est supposé que toutes les données sont stockées en mémoire avec une certaine identification et, parlant d'accès, moyennes, d'abord, accès aux données (appelées clés), identifie sans ambiguïté l'ensemble de données associé.

Devons organiser l'accès à un fichier contenant un ensemble d'enregistrements identiques, chacun ayant signification unique Champ clé. Le moyen le plus simple de rechercher est de visualiser séquentiellement chaque entrée du fichier jusqu'à ce qu'elle soit trouvée, dont la valeur clé satisfait aux critères de recherche. Évidemment, cette méthode est très inefficace, car les entrées du fichier ne sont pas commandées par la valeur du champ clé. Le tri des enregistrements dans le fichier n'est pas non plus applicable, car il nécessite encore plus de temps et doit être exécuté après que chaque addition soit ajoutée. Par conséquent, ils viennent comme suit - les clés ainsi que les pointeurs vers les entrées correspondantes du fichier sont copiées sur une autre structure qui vous permet d'effectuer rapidement le tri et les opérations de recherche. Lors de l'accès à des données, au début, dans cette structure, la valeur de clé correspondante est trouvée, puis le pointeur est stocké avec le pointeur avec celui-ci.

Il existe deux classes de méthodes qui implémentent l'accès aux données clés:

· méthodes de recherche d'arbres,

· méthodes d'éclosion.

1.2.1. Compteurs de recherche de bois

Définition: L'arborescence est appelée un ensemble fini constitué d'un ou plusieurs éléments appelés nœuds, tels que:

1. entre les nœuds, il existe un rapport entre le type "Source - généré";

2. il n'y a qu'un seul noeud qui n'a pas de nœud source. On l'appelle la racine;

3. tous les nœuds sauf la racine n'ont qu'une source; Chaque nœud peut avoir plusieurs nœuds générés;

4. le rapport "Source - généré" n'est valable que dans une direction, c'est-à-dire Aucun descendant de certains nœuds ne peut être un ancêtre pour lui.

Le nombre de nœuds individuels générés (le nombre de sous-arbres de cette racine) est appelé degré. Un nœud avec un degré zéro s'appelle une feuille ou un nœud de terminal. Valeur maximum Les degrés de tous les nœuds de cet arbre ont appelé degré de bois.

Si dans un arbre entre les nœuds générés comportant une source commune, leur commande est considérée comme essentielle, l'arbre est appelé commandé. Dans les tâches de recherche, les arbres commandés sont presque toujours considérés.

Un arbre commandé dont le degré n'est pas plus que 2 appelé binaire Arbre. L'arbre binaire est particulièrement souvent utilisé lors de la recherche de RAM. Algorithme de recherche: Initialement, l'argument de recherche est comparé à la clé située à la racine. Si l'argument coïncide avec la clé, la recherche est terminée, si elle ne coïncide pas, alors dans le cas où l'argument est inférieur à la clé, la recherche se poursuit dans le sous-arbre de gauche et dans le cas où la clé est dans le Sous-arbre droit. Augmentation du niveau de 1, répétez la comparaison en comptant la racine de nœud actuelle.

Exemple: Laissez la liste des élèves contenant leurs noms et la performance moyenne des progrès (voir tableau 1.1). Le nom de famille de l'étudiant est utilisé comme clé. Supposons que tous les enregistrements ont une longueur fixe, le numéro d'enregistrement peut être utilisé comme un pointeur. Le décalage de l'écriture dans le fichier dans ce cas sera calculé comme ([Number_aping] -1) * [longueur_instation] . Laissez l'argument de recherche "Petrov". La figure 1.2 montre l'un des arborescences de recherche binaire possibles et le chemin de recherche de cette base de données.

Tableau 1.1.

Vasilyev

Kuznetsov

Tikhomirov

Figure. 1.2. Recherche de bois binaire

Notez que voici la règle suivante de comparaison des variables de chaîne: on pense que la valeur du symbole correspond à son numéro de séquence dans l'alphabet. Par conséquent, "et" moins "à", et "à" moins "avec". Si les caractères actuels des lignes comparés sont coïncidés, les caractères sont comparés dans les positions suivantes.

Les arbres binaires sont particulièrement efficaces dans le cas où de nombreuses clés ne sont pas connues à l'avance ou lorsque cet ensemble change de manière intensive. Évidemment, avec une variable plusieurs clés, il vaut mieux avoir arbre équilibré.

Définition: L'arbre binaire est appelé équilibré (équilibré) si la hauteur de la sous-arbre gauche chaque nœud diffère de la hauteur du sous-arbre droit au plus 1.

Lors de la recherche de données dans la mémoire externe, un problème très important est le problème de la réduction du nombre de mouvements de données de la tuyauterie dans la RAM. Par conséquent, dans ce cas, comparé aux arbres binaires, des arbres hautement ramifiés seront plus rentables - parce que Leur hauteur est inférieure, alors lorsque la recherche est requise, moins de contacter la mémoire externe. Dans ce cas, la plus grande application a été obtenue dans des arbres (équilibré)

Définition: Dans une ordonnance d'arbre N, un arbre hautement ramifiant de degré 2n + 1, qui présente les propriétés suivantes:

  1. Chaque nœud, à l'exception de la racine, contient au moins N et pas plus de 2n clés.
  2. La racine contient au moins une et pas plus de 2n clés.
  3. Toutes les feuilles sont situées à un niveau.
  4. Chaque nœud intermédiaire contient deux listes: ordonnée d'augmenter la liste de la liste des touches et de la liste correspondante des pointeurs (pour les nœuds de feuilles, il n'y a pas de panneaux de signalisation).

Pour un tel arbre:

· les comparatifs peuvent être relativement simplement organisés, car Toutes les feuilles sont situées à un niveau;

· lors de l'ajout et de la modification des touches, toutes les modifications sont limitées, en règle générale, par un nœud.

Figure. 1.3.Le bois équilibré

DANS-Deevo, dans lequel les significations vraies ne sont contenues que dans les feuilles (nœuds terminaux), appelées DANS +- arbre. Dans les nœuds internes d'un tel arbre contient les séparateurs de clés qui définissent la plage de modifications apportées aux touches.

Plus sur divers types d'arbres équilibrés, ainsi que des méthodes de mise en œuvre, vous pouvez lire dans la littérature, dont la liste est donnée à la fin de la page. Il convient de noter que B.- Les arbres sont mieux adaptés uniquement à l'organisation d'un accès à des structures de données assez simples (unidimensionnelles). Pour que l'accès à des structures plus complexes, tels que les données spatiales (multidimensionnelles), on utilise de plus en plus de plus degré de consommation. R-Dervia.

R-bois ( R-Tree) Il s'agit d'une structure d'index d'accès aux données spatiales proposées par A. Guttman (Université de Californie, Berkeley). L'arbre R permet une exécution arbitraire des opérations d'ajout, de suppression et de recherche de données sans ré-indexation périodique.

Les enregistrements sont utilisés pour soumettre des données, chacune d'un identifiant unique (identifiant TUPLE). Dans chaque noeud d'extrémité (feuille) de l'arbre contient une vue du formulaire ( I, tuple-identifiant)JE. - n.-Les pointes de parallélépiped contenant des données spatiales (il est également appelé rectangle de liaison minimale, MBR) et chaque élément de tuple-identifiant Contient la borne supérieure et inférieure du parallélépiped dans la mesure appropriée.

Les nœuds non consécutifs contiennent des enregistrements de type (i, pointeur d'enfant)JE. Le parallélépipe minimum restrictif pour le MBR de tous les dérivés de nœuds par rapport à cela. Pointeur d'enfant. - Ceci est un pointeur sur les nœuds dérivés.

Laisser être M. et m. <= M/2 En conséquence, la quantité maximale et mimimale d'éléments pouvant être placés dans le nœud. Ensuite, les propriétés du r-arbre peuvent être décrites comme suit:

· R-Tree est un arbre fortement équilibré, c'est-à-dire Toutes les feuilles sont au même niveau.

· Le nœud racine a au moins deux descendants.

· Pour chaque élément (je, pointeur d'enfant) En nœud non consécutif JE. est un le moins possible Parallélépipède, c'est-à-dire Contient toutes les parallelpipedesd de nœuds dérivés.

· Chaque nœud de terminal (feuille) contient de m. avant que M. Indice des enregistrements.

· Pour chaque enregistrement d'index (I, tuple-identifiant) Dans le nœud Terminal JE. est un parallélépiped qui contient n.- l'objet dimensionnel des données indiquant tuple-identifiant .

1.2.2.Hechancification

Cette méthode est utilisée lorsque toutes les touches multiples sont connues à l'avance et pendant le temps de traitement peuvent être placées dans la RAM. Dans ce cas, une fonction spéciale est construite, affichant plusieurs clés multiples à une pluralité de pointeurs, appelée fonction de hachage (du mot anglais "à hachage" - coupé, écraser). Avoir une telle fonction, vous pouvez calculer l'adresse de l'entrée dans le fichier en fonction de la clé de recherche spécifiée. En général, les données clés utilisées pour déterminer l'adresse d'adresse sont organisées comme une table appelée table de hachage.

Si de nombreuses clés sont inconnues à l'avance ou très grandes, alors de l'idée d'un calcul sans ambiguïté de l'adresse d'adresse par sa clé refuse, et la fonction de hachage est considérée comme une fonction de diffusion de plusieurs clés dans de nombreuses adresses.

Annotation: Le concept global de la structure de données en tant qu'artiste qui organise des données à stocker, d'ajouter et de supprimer, de rechercher, etc. La réalisation de certaines structures sur la base des autres, en particulier, la mise en œuvre de la matrice basée sur le massif. Les plus importantes des structures de données les plus simples sont données: la file d'attente et la pile, ainsi que leur mise en œuvre continue basée sur le massif. De nombreux exemples d'utilisation de la pile dans la programmation sont donnés. L'enregistrement de polonais inverse de la formule (le fonctionnement de l'opération après arguments) est pris en compte et le procédé de calcul sur la machine de pile. À titre d'exemple d'utilisation de l'enregistrement de polonais inverse, le langage graphique PostScript est pris en compte. Le matériau est illustré par le projet "Calculatrice", mis en œuvre dans la langue C.

Structures de données

"Algorithmes + structures de données \u003d programmes". C'est le nom du livre de Niklaus Virut, le célèbre spécialiste de la programmation suisse, auteur de Pascal, Module-2, Oberon. Avec le nom de WIRTH, le développement d'une approche structurelle de la programmation est connecté. N.Virt est également appelé professeur brillant et auteur de manuels classiques.

Les deux composants des programmes alloués par N.VIRT sont également importants. Non seulement l'algorithme imparfait, mais également l'organisation infructueuse de travail avec des données peut entraîner un ralentissement des travaux du programme de dizaines et parfois de plusieurs fois. D'autre part, possession théorie de la programmation Et la capacité de l'appliquer systématiquement dans la pratique vous permet de développer rapidement efficacement et à la fois de beaux programmes esthétiquement.

Le concept général de la structure de données

Structure de données - Il s'agit d'un interprète qui organise des données avec des données, y compris leur stockage, l'ajout et la suppression, la modification, la recherche, etc. Structure de données Soutient un certain ordre d'accès à eux. La structure de données peut être considérée comme une sorte d'entrepôt ou de bibliothèque. Lorsque vous décrivez la structure de données, vous devez énumérer l'ensemble des actions qui lui sont possibles et décrivent clairement le résultat de chaque action. Nous appellerons de telles actions ordonnances. D'un point de vue logiciel, le système de prescription de structure de données correspond à un ensemble de fonctions qui fonctionnent sur des variables communes.

Les structures de données sont les plus correctement implémentées dans les langues orientées objet. En eux, la structure de données correspond à la classe, les données elles-mêmes sont stockées dans les variables de membre de classe (ou l'accès aux données sont effectuées via des variables d'éléments), le système de prescription correspond à un ensemble de méthodes de classe. En règle générale, dans la structure de données orientée objet Les langages sont implémentées comme une bibliothèque de classe standard: ce sont les soi-disant cours de conteneur Langue C ++ incluse dans la bibliothèque de classe standard Stlou des classes qui mettent en œuvre diverses structures de données de la bibliothèque Kit de développeur Java. Langue java.

Cependant, les structures de données sont également implémentées avec succès dans les langages de programmation traditionnels, tels que Fortran ou C. Dans ce cas, le style de programmation orienté objet doit être suivi: il est clairement attribué à un ensemble de fonctions qui fonctionnent avec la structure de données et limitent l'accès aux données uniquement par cet ensemble de fonctions. Les données elles-mêmes sont implémentées comme variables statiques (non globales). Lors de la programmation de la structure de données, deux fichiers avec des textes source sont configurés:

  1. header ou H-File, qui décrit l'interface de la structure de données, c'est-à-dire Un ensemble de prototypes d'entités correspondant au système de prescriptions de structure de données;
  2. le fichier de mise en œuvre ou un fichier C, qui définit les variables statiques qui stockent et accédent aux données et sont également implémentées par les fonctions correspondant à la structure de données de la structure de données

Structure de données généralement mis en œuvre sur la base d'un plus simple structure de basedéjà déjà implémenté ou basé sur un tableau et un ensemble de variables simples. Une description de la structure de données d'un point de vue logique doit être clairement distinguée. Il peut y avoir de nombreuses implémentations différentes, du point de vue logique (c'est-à-dire du point de vue de l'utilisateur externe), ils sont tous équivalents et diffèrent, peut-être une vitesse d'exécution des ordonnances.


Structures et types de données. Tableaux, arbres, listes, graphiques. Opérations de données.

Les données stockées dans la mémoire de l'ordinateur sont une totalité de zéros et d'unités (bits). Les bits sont combinés dans des séquences: octets, mots, etc. Chaque zone de RAM, qui peut accueillir un octet ou un mot est attribuée au numéro de séquence (adresse).

Quel sens est conclu dans les données, quels symboles ils sont exprimés - lettrage ou numérique, ce qui signifie quelque chose ou une autre - tout cela est déterminé par le programme de traitement. Toutes les données nécessaires à la résolution de tâches pratiques sont divisées en plusieurs types et le concept de type est associé non seulement à la présentation des données dans l'espace d'adresses, mais également à la méthode de leur traitement.

Toute données peut être attribuée à l'un des deux types: le principal (simple), dont la forme est définie par l'architecture de l'ordinateur ou un complexe, conçu par l'utilisateur pour résoudre des tâches spécifiques.

Ce type de type est - symboles, chiffres, etc. Éléments, dont la nouvelle broyage n'a pas de sens. Des données élémentaires, des structures (types complexes) des données sont formées.

Certaines structures:

Un tableau (fonction avec une zone de définition finie) est un ensemble simple d'éléments de données du même type, outil pour exploiter un groupe de données du même type. Un élément de tableau séparé est défini par l'index. Un tableau peut être unidimensionnel, bidimensionnel, etc. Les espèces de baies unidimensionnelles de longueur variable sont les structures de la bague de type, de la pile, de la file d'attente et de la file d'attente bidirectionnelle.

Si le tableau occupe toujours une partie continue de la mémoire, la liste est l'exemple le plus simple de la structure de données dynamique. Dans les structures de données dynamiques, l'objet est contenu dans différentes parties de la mémoire, dont le nombre et la composition peuvent changer pendant le fonctionnement. L'unité d'un tel objet est supportée en combinant ses parties dans la description de la classe.

La liste linéaire la plus simple est une séquence linéaire d'éléments. Pour chacun d'eux, en plus de ce dernier, il y a un élément suivant, et l'un pour l'autre que le premier - le précédent. La liste est traditionnellement décrite comme une séquence d'éléments, chacune d'entre elles aura une référence (pointeur) à l'élément suivant et / ou précédent, cependant, nous notons que physiquement dans la vue de l'élément de liste peut ne pas être des liens.

Un ensemble typique d'opérations spatiales comprendra l'ajout, la suppression et la recherche de ses éléments, en calculant la longueur de la liste, l'utilisation séquentielle des éléments (itération) de la liste.

Comme dans le cas des tableaux, de nombreuses bibliothèques de classe incluent la possibilité de décrire et de travailler avec des listes (par exemple, des classifications de la bibliothèque de la clientèle MFC). Malgré cela, la nécessité de décrire ses propres structures de données sous la forme, des listes contenant plus appropriées pour la tâche solide de fonctionnement, plus simple (et donc plus efficace) que la norme ou possèdent des caractéristiques spécifiques (par exemple, des listes commandées) .

En règle générale, lors de la description de la liste, la représentation de chaque élément de liste est décrite comme une classe distincte. Dans cette classe, comme son attribut, il existe un lien vers l'élément suivant et / ou précédent.

L'enregistrement (production Cartesovo) est un ensemble d'éléments de données de type différents. Dans le cas le plus simple, l'enregistrement contient un nombre constant d'éléments appelés champs. L'ensemble des enregistrements de la même structure s'appelle le fichier. (Le fichier s'appelle également un jeu de données dans la mémoire externe, par exemple sur un disque magnétique). Pour pouvoir extraire des enregistrements individuels du fichier, chaque enregistrement est attribué à un nom ou un numéro unique qui sert d'identifiant et est situé dans un champ distinct. Cet identifiant s'appelle la clé.

Ces structures de données qu'un tableau ou un enregistrement occupent un montant permanent en mémoire, ils sont donc appelés structures statiques. Les structures statiques incluent également de nombreuses.

Il existe un certain nombre de structures qui peuvent changer leur longueur - les structures dynamiques. Ceux-ci incluent le bois, la liste, le lien.

Un arbre est une structure importante pour placer les éléments dont l'espace d'adresse non linéaire est requis. Il existe un grand nombre de structures de données pouvant être représentées comme des arbres. Ceci, par exemple, la classification, les structures hiérarchiques, récursives et autres.

Structures généralisées ou modèles de données.

Au-dessus, nous avons examiné plusieurs types de structures qui sont des ensembles d'éléments de données: tableau, bois, enregistrement. Un type de données plus complexe peut inclure ces structures en tant qu'éléments. Par exemple, les éléments d'enregistrement peuvent être une matrice, une pile, un bois, etc.

Il existe une grande variété de types de données complexes, mais des études menées sur un grand matériau pratique ont montré que parmi eux peut être distingué par plusieurs des plus courants. Les structures généralisées sont également appelées modèles de données, car Ils reflètent la présentation des données du monde réel de l'utilisateur.

Tout modèle de données doit contenir trois composants:

Structure de données - décrit le point de vue de l'utilisateur à la représentation des données.

Un ensemble d'opérations autorisées effectuées sur la structure de données. Le modèle de données suppose au minimum la présence d'une langue de définition de données (noyau) décrivant la structure de leur stockage et de leur langage de manipulation de données (NMID), qui inclut l'extraction et la modification des données.

Restrictions d'intégrité - Un mécanisme permettant de maintenir la conformité des données de matière sur la base des règles décrits formellement.

Dans le processus de développement historique dans le SGBM, les modèles de données suivants ont été utilisés:

Hiérarchique - Ce modèle a un objet principal et le reste - subordonnés - objets situés à différents niveaux de la hiérarchie. Les relations d'objets forment un arbre hiérarchique avec un objet racine.

Réseau - L'approche réseau de l'organisation des données est une expansion du hiérarchique. Dans les structures hiérarchiques, le dossier descendant doit avoir exactement un ancêtre; Dans la structure du réseau des données, un descendant peut avoir un nombre quelconque d'ancêtres.

Dans le modèle de données de réseau, tout objet peut être à la fois principal et subordonné et peut participer à la formation de n'importe quel nombre de relations avec d'autres objets.

Relation relationnelle - dans les données de modèle relationnel sont divisées en ensembles qui constituent la structure de la table. Cette structure de table est composée d'éléments de données individuels appelés champs. Un ensemble unique ou un groupe de champs est appelé enregistrement.

Méthodes d'accès aux données.

Les problèmes de présentation de données sont étroitement liés aux opérations, avec lesquelles ces données sont traitées. Ces opérations comprennent: l'échantillonnage, la modification, l'activation et l'exclusion des données. Toutes les opérations énumérées sont basées sur le fonctionnement d'accès, qui ne peut être considérée comme indépendamment de la méthode de présentation.

Dans les tâches de recherche, il est supposé que toutes les données sont stockées en mémoire avec une certaine identification et, parlant d'accès, reportent principalement accès aux données (appelées clés), identifiant sans ambiguïté l'ensemble de données associé.

Devant organiser l'accès à un fichier contenant un ensemble d'enregistrements identiques, chacun ayant une valeur unique du champ clé. Le moyen le plus simple de rechercher est de visualiser séquentiellement chaque entrée du fichier jusqu'à ce qu'elle soit trouvée, dont la valeur clé satisfait aux critères de recherche. Évidemment, cette méthode est très inefficace, car les entrées du fichier ne sont pas commandées par la valeur du champ clé. Le tri des enregistrements dans le fichier n'est pas non plus applicable, car il nécessite encore plus de temps et doit être exécuté après que chaque addition soit ajoutée. Par conséquent, ils viennent comme suit - les clés ainsi que les pointeurs vers les entrées correspondantes du fichier sont copiées sur une autre structure qui vous permet d'effectuer rapidement le tri et les opérations de recherche. Lors de l'accès à des données, au début, dans cette structure, la valeur de clé correspondante est trouvée, puis le pointeur est stocké avec le pointeur avec celui-ci.

Il existe deux classes de méthodes qui implémentent l'accès aux données clés:

Méthodes de recherche d'arbres,

Méthodes d'éclosion.

La théorie des graphiques est une partie importante des mathématiques informatiques. Avec cette théorie, un grand nombre de tâches sont résolues dans divers domaines. Le graphique consiste en une variété de sommets et de jeux de côtes qui relient les sommets entre eux. Du point de vue de la théorie des graphiques, peu importe le sens investi dans les sommets et les côtes. Les sommets peuvent être des points peuplés et les nervures de la route qui les relie, ou les sommets pour apparaître les sous-routines reliées par le dessus des nervures signifie l'interaction des sous-routines. Cela compte souvent la direction de l'arc dans la colonne. Si le bord a une direction, il s'appelle un arc, et le graphique avec des côtes orientées est appelé un orgraf.

Nous donnons maintenant plus formellement la définition de base de la théorie des graphiques. Compter G Il existe une paire commandée (V, E), où v est un ensemble non vide de sommets, E est une pluralité de paramètres des éléments d'un V, une paire d'éléments de V est appelé une nervure. Une paire d'éléments commandée de V est appelée arc. Si toutes les paires d'E sont commandées, le graphique est appelé orienté orienté.

Le chemin est une séquence du sommet Orgraf telle que dans cette séquence, le sommet B peut suivre le sommet A, uniquement s'il y a un arc, le suivant de A en b. De même, vous pouvez déterminer le chemin composé d'arcs. Le chemin qui commence dans un sommet et se terminant dans un sommet est appelé cycle. Le graphique dans lequel il n'y a pas de cycles n'est appelé acyclique.

Un cas privé important est un arbre.

Définition: L'arborescence est appelée un ensemble fini constitué d'un ou plusieurs éléments appelés nœuds, tels que:

Entre les nœuds, il existe un rapport entre le type "généré par la source";

Il n'y a qu'un seul nœud qui n'a pas la source. On l'appelle la racine;

Tous les nœuds sauf la racine n'ont qu'une source; Chaque nœud peut avoir plusieurs générées;

Le rapport "généré par la source" n'est valable que dans une direction, c'est-à-dire Aucun descendant de certains nœuds ne peut être un ancêtre pour lui.

Le nombre de nœuds individuels générés (le nombre de sous-arbres de cette racine) est appelé son degré. Un nœud avec un degré zéro s'appelle une feuille ou un nœud de terminal. La valeur maximale de tous les nœuds de cet arborescence est appelée degré de bois.

Si dans un arbre entre les nœuds générés avec une source courante, leur commande est considérée comme essentielle, l'arbre est appelé commandé. Dans les tâches de recherche, les arbres commandés sont presque toujours considérés.

Un arbre commandé dont le degré n'est pas plus de 2 appelé arbre binaire. L'arbre binaire est particulièrement souvent utilisé lors de la recherche de RAM. Algorithme de recherche: Initialement, l'argument de recherche est comparé à la clé située à la racine. Si l'argument coïncide avec la clé, la recherche est terminée, mais si elle ne coïncide pas, alors lorsque l'argument est inférieur à la clé, la recherche se poursuit dans le sous-arbre de gauche et dans le cas où la clé est dans le sous-arbre de droite. . Augmenter le niveau de 1 Répétez la comparaison en comptant la racine de nœud actuelle.

Les arbres binaires sont particulièrement efficaces dans le cas où de nombreuses clés sont inconnues à l'avance ou lorsque cet ensemble change de manière intensive. Évidemment, avec une variété de touches multiples, il est préférable d'avoir un arbre équilibré.

Définition: L'arborescence binaire est appelée équilibré (équilibré) si la hauteur de la sous-arbre gauche chaque nœud diffère de la hauteur du sous-arbre droit pas plus de 1.

Haming.

Cette méthode est utilisée lorsque toutes les touches multiples sont connues à l'avance et pendant le temps de traitement peuvent être placées dans la RAM. Dans ce cas, une fonction spéciale est construite, affichant des touches multiples à une pluralité de pointeurs, appelée fonction de hachage (de l'anglais "à hachage" - coupée, broyée). Avoir une telle fonction, vous pouvez calculer l'adresse de l'entrée dans le fichier en fonction de la clé de recherche spécifiée. Dans le cas général, les données clés utilisées pour déterminer l'adresse d'adresse sont organisées comme une table appelée table de hachage.

Si de nombreuses clés sont inconnues à l'avance ou très grandes, alors de l'idée d'un calcul sans ambiguïté de l'adresse d'adresse par sa clé refuse, et la fonction de hachage est considérée comme une fonction de diffusion de plusieurs clés dans de nombreuses adresses.

La structure de données est une unité logicielle qui vous permet d'enregistrer et de traiter la masse du même type ou des informations logiquement connexes dans les périphériques informatiques. Si vous souhaitez ajouter, trouver, modifier ou supprimer des informations, la structure fournira un package spécifique d'options, qui est son interface.

Qu'est-ce qui inclut le concept de structure de données?

Ce terme peut avoir plusieurs proches, mais toujours distinguant des valeurs. Il:

  • type abstrait;
  • mise en œuvre d'un type d'information abstraite;
  • une instance du type de données, par exemple une liste spécifique.

Si nous parlons de la structure de données dans le contexte de la programmation fonctionnelle, il s'agit d'une unité spéciale qui est enregistrée par changement. Cela peut en dire informellement en tant que structure unique, malgré le fait qu'il peut y avoir des versions différentes.

Qu'est-ce qui fait la structure?

Formulaires utilisant des références et des opérations sur eux dans un langage de programmation spécifique. Il convient de dire que différents types de structures conviennent à la réalisation de différentes applications, par exemple, ont une spécialisation complètement étroite et conviennent uniquement à la production de tâches établies.

Si vous prenez des arbres B, ils conviennent généralement à la formation de bases de données et que pour eux. Dans la même heure, les panneaux de hachage sont toujours utilisés partout dans la pratique pour créer divers dictionnaires, par exemple, pour démontrer des éléments de domaine dans les adresses Internet PC et non seulement pour former les bases.

Au cours de l'élaboration d'un logiciel particulier, la complexité de la mise en œuvre et de la qualité de la fonctionnalité des programmes dépend directement de l'utilisation appropriée des structures de données. Une telle compréhension des choses a donné une impulsion au développement de méthodes formelles de développement et de programmes de programmation, où des structures et non des algorithmes sont mis sur la position de leader dans l'architecture de programme.

Il convient de noter que de nombreuses langues de programmation ont le type de modularité établi, ce qui permet des structures avec des données en toute sécurité utilisées dans diverses applications. Les exemples lumineux sont des langues Java, C # et C ++. Maintenant, la structure classique des données utilisées est représentée dans les langages de programmation standard ou directement, elle est déjà intégrée à la langue elle-même. Par exemple, la table de hachage est intégrée à Lua, Python, Perl, Ruby, TCL et autres. La bibliothèque de modèles standard en C ++ est largement appliquée.

Comparez la structure dans la programmation fonctionnelle et impérative

Il devrait immédiatement faire une réservation que la conception des structures pour les langues fonctionnelles est plus difficile que d'impératif, au moins il y a deux raisons:

  1. En fait, toutes les structures sont souvent utilisées dans la pratique, qui n'est pas utilisée dans un style purement fonctionnel.
  2. Les structures fonctionnelles sont des systèmes flexibles. Dans la programmation impérative, les anciennes versions sont simplement remplacées par de nouvelles, et tout fonctionne dans fonctionnel, comme cela a fonctionné. En d'autres termes, dans la programmation impérative, la structure est éphémère et dans la fonctionnalité, elles sont constantes.

Qu'est-ce qui inclut la structure?

Souvent, les données avec lesquelles des programmes fonctionnent sont enregistrées dans des tableaux de langage de programmation appliqués, constants ou variable. Un tableau est la structure la plus simple avec des informations, toutefois, pour résoudre certains problèmes nécessite une plus grande efficacité de certaines opérations, par conséquent, d'autres structures sont appliquées (plus compliquées).

La matrice la plus simple convient à la circulation fréquente aux composants établis par des index et de leur changement, et la suppression des éléments du milieu fonctionne pour le principe O (n) O (n). Si vous devez supprimer des éléments pour résoudre certaines tâches, vous devrez utiliser une autre structure. Par exemple, un arbre binaire (STD :: Set) vous permet de le faire par O (logn) O (log\u2061n), mais elle ne prend pas en charge le travail avec des index, mais uniquement en contournement alternativement les éléments et leur recherche est effectuée. Ainsi, on peut dire que la structure est caractérisée par des opérations qu'il est capable d'effectuer, ainsi que de la vitesse de leurs portes. Par exemple, il vaut la peine d'envisager les structures les plus simples qui ne bénéficient pas d'efficacité, mais ont un ensemble d'opérations appuyées exactement établi.

Empiler

C'est l'un des types de structures de données soumises sous la forme d'une matrice la plus simple. La pile classique ne prend en charge que trois options:

  • Faire un élément dans la pile (complexité: O (1) O (1)).
  • Extraction de l'élément de la pile (complexité: O (1) O (1)).
  • Vérifiez, pile vide ou non (complexité: O (1) O (1)).

Pour clarifier le principe de fonctionnement de la pile, vous pouvez appliquer dans la pratique une analogie avec un biscuit. Imaginez qu'il y a plusieurs biscuits au bas de la cour. Vous pouvez mettre quelques pièces en haut ou vous pouvez au contraire, prendre un cookie d'en haut. Le reste des cookies sera fermé vers le haut et vous ne saurez rien à leur sujet. C'est comme ça que les choses sont et avec une pile. Pour la description du concept, l'abréviation LIFO est utilisée (dernier dans, premier out), qui souligne que le composant tombé dans la dernière pile sera le premier et extrait de celui-ci.

File d'attente

Il s'agit d'un autre type de structure de données, qui prend en charge le même ensemble d'options que la pile, mais elle a la sémantique opposée. L'abréviation FIFO est utilisée pour décrire la file d'attente (premier dans, d'abord out), car l'élément est extrait pour la première fois, qui a été ajouté avant tout. Le nom de la structure parle pour elle-même - le principe de travail coïncide complètement avec les files d'attente qui peuvent être vues dans le magasin, supermarché.

déc

C'est un autre type de structure de données, qui s'appelle également la file d'attente avec deux extrémités. L'option prend en charge l'ensemble d'opérations suivant:

  • Faire un élément au début (complexité: O (1) O (1)).
  • Extraire un composant du début (complexité: O (1) O (1)).
  • Faire un élément à la fin (complexité: O (1) O (1)).
  • Extraction de l'élément de la fin (complexité: O (1) O (1)).
  • Vérifiez, vide LEE DEC (Complexité: O (1) O (1)).

Listes

Cette structure de données définit la séquence de composants linéaires liés auxquels les options d'ajout de composants dans n'importe quel lieu de la liste et de la suppression sont autorisées. La liste linéaire est définie par le pointeur sur le début de la liste. Opérations typiques sur les listes: contournement, recherche d'un composant spécifique, élément d'insertion, retrait du composant, combinant deux listes dans une seule unité, panne de la liste sur une paire, etc. Il convient de notifier que dans la liste linéaire, en plus de la première, il existe un composant précédent pour chaque élément, non compris par ce dernier. Cela signifie que les composants de la liste sont dans un état ordonné. Oui, le traitement d'une telle liste n'est pas toujours pratique, car il n'existe aucune possibilité de déplacer du côté opposé - de la fin de la liste au début. Cependant, dans la liste linéaire, il est possible de marcher progressivement dans tous les composants.

Il y a toujours des listes de sonneries. C'est la même structure que la liste linéaire, mais elle a une relation supplémentaire entre les premier et dernier composants. En d'autres termes, après le dernier élément est le premier composant.

Dans cette liste, les éléments sont égaux. L'allocation de la première et la dernière est une conventionnalité.

Des arbres.

Cette combinaison de composants qui sont appelés nœuds dans lesquels il existe un composant principal (un) sous la forme d'une racine, et tous les autres sont cassés en une pluralité d'éléments non interssercents. Chaque ensemble est un arbre et la racine de chaque arbre est le descendant de la racine de l'arbre. En d'autres termes, tous les composants sont interconnectés par la relation de l'ancêtre. En conséquence, vous pouvez observer la structure hiérarchique des nœuds. Si les nœuds n'ont pas de descendance, ils sont appelés des feuilles. Sur l'arborescence définit des opérations telles que: Ajouter un composant et le supprimer, le contournement, la composante de recherche. Les arbres binaires jouent un rôle particulier dans l'informatique. Ce que c'est? Il s'agit d'un cas privé d'un arbre, où chaque nœud ne peut avoir plus de couple de descendants qui sont des racines de la sous-arbre gauche et droite. Si une condition supplémentaire est toujours exécutée pour les nœuds d'arbre que toutes les valeurs des composants à l'échelle gauche sont moins de valeurs racines et que les valeurs des composants de support appropriées sont supérieures à la racine, alors un tel arbre est appelé Un arbre de recherche binaire, et il est destiné aux articles rapides. Comment fonctionne l'algorithme de recherche dans ce cas? La valeur souhaitée est comparée à la valeur de la racine et en fonction du résultat, la recherche se termine ou continue, mais exclusivement dans le sous-arbre à gauche ou à droite. Le nombre total d'opérations de comparaison ne dépassera pas la hauteur de l'arborescence (il s'agit du plus grand nombre de composants sur le chemin de la racine à l'une des feuilles).

Graphiques

Les comptes sont une totalité de composants qui sont appelés sommets avec un complexe de relations entre les sommets qui s'appellent des côtes. L'interprétation graphique de cette structure est présentée sous la forme d'un ensemble de points, responsable des sommets, et certaines paires sont reliées par des lignes ou des flèches, ce qui correspond aux côtes. Le dernier cas suggère que le graphique doit être appelé orienté.

Les comptes peuvent être décrits par des objets structurels, ce sont les moyens principaux de décrire les structures complexes et le fonctionnement de tous les systèmes.

Plus de détails sur la structure abstraite

Pour construire un algorithme, il est nécessaire de former une formalisation des données ou, en d'autres termes, il est nécessaire d'apporter des données à un modèle d'information spécifique, qui a déjà été étudié et écrit. Dès que le modèle est trouvé, on peut affirmer qu'une structure abstraite est installée.

Il s'agit de la structure de données principale qui démontre les signes, la qualité de l'objet, la relation entre les composants de l'objet et l'opération, qui est possible d'effectuer au-dessus de celle-ci. La tâche principale consiste à rechercher et à afficher des formes de visualisation de l'information, confortable pour le réglage de l'ordinateur. Il est nécessaire de faire une réservation à une fois que l'informatique comme une science exacte agit avec des objets formels.

L'analyse des structures de données est effectuée par les objets suivants:

  • Nombres entiers et réels.
  • Valeurs logiques.
  • Symboles.

Pour le traitement sur un ordinateur de tous les éléments, il existe des algorithmes appropriés et des structures de données. Les objets typiques peuvent être combinés en structures complexes. Vous pouvez ajouter des opérations sur eux, les règles à certains composants de cette structure.

La structure de l'organisation de données comprend:

  • Vecteurs.
  • Structures dynamiques.
  • Les tables.
  • Tableaux multidimensionnels.
  • Graphiques.

Si tous les éléments sont sélectionnés avec succès, il s'agira d'une clé de la formation d'algorithmes efficaces et de structures de données. Si vous appliquez dans la pratique l'analogie des structures et des objets réels, vous pouvez résoudre efficacement les tâches existantes.

Il convient de noter que toutes les structures d'organisation de données existent individuellement dans la programmation. Au-dessus d'eux travaillaient de nombreuses années aux XIXe et XIXe siècles, lorsqu'il n'y avait pas de machine informatique en maman.

Il est possible de développer un algorithme dans les concepts d'une structure abstraite, toutefois, de mettre en œuvre l'algorithme dans un langage de programmation spécifique, vous devrez trouver une méthode de la présentation des types de données, des opérateurs, appuyés par une programmation spécifique. Langue. Pour créer des structures, telles que le vecteur, la plaque, la chaîne, la séquence, dans de nombreuses langues de programmation, des types de données classiques sont des types de données classiques: une matrice unidimensionnelle ou bidimensionnelle, une chaîne, un fichier.

Nous avons traité des caractéristiques des structures de données, maintenant, il convient de faire plus attention à la compréhension du concept de structure. Lors de la résolution, une tâche est absolument nécessaire pour travailler avec certaines données pour produire des opérations sur des informations. Chaque tâche a son propre ensemble d'opérations, mais un ensemble est appliqué dans la pratique plus souvent pour résoudre diverses tâches. Dans ce cas, il est utile de proposer une certaine manière d'organiser des informations, ce qui permettra ces opérations aussi efficaces que possible. Dès que cette méthode est apparue, nous pouvons supposer que vous avez une "boîte noire", dans laquelle les données d'un certain type seront enregistrées et qui seront effectuées par ces transactions de données ou d'autres. Cela vous permettra d'être distraire des détails et de vous concentrer complètement sur les caractéristiques de la tâche. Cette boîte noire peut être mise en œuvre de quelque manière que ce soit, s'il est nécessaire de s'efforcer autant que possible la mise en œuvre.

Qui a besoin de savoir?

Je vais vous familiariser avec des informations avec des programmeurs novices qui souhaitent trouver leur place dans ce domaine, mais ne savent pas où aller. Ce sont les fondements de chaque langue de programmation, il ne sera donc pas superflu de savoir immédiatement sur les structures de données et après avoir travaillé avec eux sur des exemples spécifiques et avec une certaine langue. Nous ne devrions pas oublier que chaque structure est possible de caractériser des idées logiques et physiques, ainsi qu'une combinaison d'opérations sur ces idées.

N'oubliez pas: si vous parlez d'une structure particulière, gardez à l'esprit sa représentation logique, car la représentation physique dissimule complètement l'observateur externe.

De plus, gardez à l'esprit qu'une représentation logique ne dépend pas complètement du langage de programmation et de la machine informatique, et le physique, au contraire dépend des traducteurs et des ordinateurs. Par exemple, une matrice bidimensionnelle dans "Fortran" et "Pascal" peuvent être représentées d'une manière identique, et la représentation physique dans la même machine de calcul dans ces langues varie.

Ne vous précipitez pas pour commencer à apprendre des structures spécifiques, il est préférable de comprendre leur classification, de vous familiariser avec tout le monde en théorie et de préférence dans la pratique. Il convient de rappeler que la variabilité est une caractéristique importante de la structure et indique une position statique, dynamique ou demi-histoire. Apprenez les fondations avant de procéder à des choses plus mondiales, cela vous aidera à développer davantage.

Avez-vous aimé l'article? Partager avec des amis: