Datenspeicherung

Nehmen wir an, dass Sie ein Computerspiel namens Vulnerable User entwickelt haben, in dem Spieler mit dem Design und der nicht-Freund-Computer-Schnittstelle konkurrieren. Jetzt müssen Sie ein Programm schreiben, das die monatlichen Verkäufe dieses Spiels über einen Zeitraum von fünf Jahren verfolgt. Oder, sagen wir einfach, Sie müssen einen Blick auf die Handelskarten der Helden nehmen.
Sehr bald werden Sie feststellen, dass Sie mehr als einfache grundlegende Datentypen benötigen, um Informationen zu erstellen und zu verarbeiten.

Massive (Listen). Einleitung

Um mit einer Vielzahl von Daten bequem zu sein, hat eine Gruppe von Zellen einen gemeinsamen Namen. Diese Gruppe von Zellen wird genannt Masse
Massiv ist eine Gruppe von Speicherzellen gleichen Typs, in der Nähe und mit einem gemeinsamen Namen. Jede Zelle in der Gruppe hat eine einzigartige Zahl.

Wir müssen mit den Massen umgehen. Wie man entscheidet Drei Aufgaben:
• Erinnerung an die unter der Masse benötigte Größe kommunizieren
• Daten in die richtige Zelle aufnehmen
• Zellendaten lesen


Pascal


Traditionell werden in Pascal die statischen Massen der Art verwendet

var a: Array [1..10] ganzzahlig;

Die Grenzen der Masse werden zwangsläufig um Konstanten zurückgesetzt und die Größe der Masse kann während des Programms nicht verändert werden. Ein Index kann jedoch nicht nur vom gesamten, sondern auch vom symbolischen oder gelisteten Typ gemacht werden. Beispielsweise kann eine Masse verwendet werden, um die Besprechungskapazität jedes Buchstabens zu berechnen

var LettersCount: Array ['a'.'z'] von ganzem;

und mit ihm zu arbeiten:

LettersCount['z'] := 1;
LettersCount['d'] := LettersCount['d'] + 1;

Es sind Unzulänglichkeiten solcher Massen bekannt: Ist nicht vorher bekannt, wie viele Elemente verwendet werden müssen, so ist der maximale Speicher zu speichern. Am Ende, in den meisten Fällen, sind wir "protektiv", und manchmal ist "pasy" nicht genug. Deshalb heißt es diese Massen.statische: Ihre Größe ist statisch und sollte auf der Programmkompilationsstufe festgelegt werden. Aber in Pascal,Dynamikderen Größe nicht nur angewendet werden kann, sondern auch im Laufe des Programms geändert werden. Dies sind die Bereiche und die Vorteile ihrer Nutzung.

Massenerschaffung

Wenn die Masse erzeugt wird, wird ein Ort (bestimmte Anzahl von Zellen) identifiziert.
(1) Massive können durch eine einfache Liste von Elementen erstellt werden:
var a: ganzes Array;
SetLength(a, 3);
a[0] := 1;
a[1] := 2.
a[2] := 3;

(2) Massive können von jeder Art abgeleitet werden - ganze oder Substanznummern, symbolische Linien
var a: Array von char;
SetLength(a, 3);
a[0]:= 'a';
a[1] := „b";
a[2]:= 'c';
(3) Massiv kennt seine Größe immer. Mit einer Funktion wird die Größe der Masse bestimmtlength♪ Häufig wird die Masse in einer separaten Größe gespeichert, so dass das Programm mit einer anderen Größe leicht verändert werden kann. Beispiel:
N := 10; / in variabler N Speichergröße
SetLength(a, N); // eine Größe a N
Schreibln(Länge(a)); /
Die Größe des Körpers kann von der Tastatur aufgebracht werden.

Bezug zum Masseelement

Der größte Wert der Massen wird dadurch bestimmt, dass ihre Elemente einzeln behandelt werden können.
Die Möglichkeit dazu besteht darin, einen Index zur Messung der Elemente zu verwenden.
Index ist der Wert, der das spezifische Element der Masse angibt

Wach auf!
Ich weiß nicht.

(Dies ist obligatorisch - Sie müssen von Grund auf beginnen. Dies ist besonders wichtig zu erinnern.

Beispiele für den Rückgriff auf A:
x := (A[3] + 5) * A[1] // A[3] und A[1]
A[0] := x + 6 /// einen neuen Wert in A[0] aufzeichnen
Wir werden ein Arbeitsprogramm mit Cluster-Elementen herausfinden.
var i: ganze Zahl;
a: ganzes Array;

Anfang
: = 1;
setlength(a, 5); // ein Set von 5 Elementen erstellen
a[0] := 23; // in jeder der 5 Komponenten der Masse (Indizes 0 bis 4)
a[1] := 12; //
a[2] :=7;
a[3] := 43;
a[4] := 51;
a[2] := a[i] + 2 * a[i - 1] + a[2 * i]; / den Elementwert mit Index 2 zum Ergebnis der Expression ändern
/ t i=1, dann i in den Ausdruck eingefügt
/ der folgende Ausdruck a[2]:= a[1] + 2*a[0] + a[2]
Schreibln(a[2] + a[4];
Ende.


Durch dieses Programm wird der Wert der Masse mit Index 2 und Index 4 auf dem Bildschirm angezeigt. 116. Wie aus dem Beispiel ersichtlich, können wir jedes Element der Masse ansprechen. Berechnen Sie auch die erforderliche Anzahl des Elements für unterschiedliche Formeln (z.B. A[i-1] oder A[2*i), in diesen Fällen werden die Elementindizes berechnet und von i abhängig.)

Wir werden das Beispiel des Programms herausfinden.
var a: ganzes Array;

Anfang
Länge (a, 5)
a[5] :=5;
a[1] := 0;
Ende.

Wie die Masse aus 5 Elementen angegeben wird, werden die Elemente umnummeriert0 bis 4. Wir sehen, dass die 6. Linie einem nicht vorhandenen Element nähert. eine[5] und in Zeile 7 auch nicht vorhandena[1].

Es stellt sich heraus, dass das Programm über die Grenzen der Masse ging.
Выход за границы массива - это обращение к элементу с индексом, который не существует в массиве.
In diesen Fällen endet das Programm in der Regel mit einem versehentlichen Fehler. Laufzeitfehler



Beim Umgang mit den Massen ist es in der Regel notwendig, direkt mit allen Elementen des Körpers zu arbeiten.
Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем с каждым из них некоторую операцию.
Dies ist der am häufigsten verwendete Zyklus mit Variablen, die von 0 bis N-1 variieren, wobei N die Anzahl der Masse ist.
Unter dem N zählen wir die aktuelle Größe der Masse, das ist
N := Länge(A)
#
für i := 0 bis n - 1 beginnen
/ Arbeiten Sie hier mit a[i]
Ende;
#
In diesem Zyklus nimmt die Variable i 0, 1, 2,...,N-1. So drehen wir bei jedem Schritt des Zyklus auf ein bestimmtes Element der i-Zahl Masse.
So ist es ausreichend, zu beschreiben, was mit einem Element eines[i] zu tun ist, und diese Aktionen in diesem Zyklus setzen.

Wir schreiben ein Programm, das die erste N-Masse in natürlichen Zahlen ausfüllt, d.h. am Ende des Programms sollten die Elemente der Masse gleich sein.
a[0] = 1
a[1] = 2
a[2] = 3
#
a[N - 1] = N
Es ist nicht möglich, das Muster anzugeben: der Wert des Masseelements sollte um 1 größer sein als der Elementindex.
Das Angebot wird wie folgt aussehen.
für i := 1 bis n - 1
a[i] := i + 1;

Mach den Job.