Tildelingstabell (datastruktur)

Den -tabell (også ordliste , liste over nøkkelverdi-par eller assosiative datafelt ) er en datastruktur i hvilken, i motsetning til en normal felt , ikke-numeriske (eller diskontinuerlige) taster , for det meste tegnstrenger kan, brukes til å tildele elementene den inneholder adresse; disse lagres ikke i noen spesifikk rekkefølge. Ideelt sett velges tastene på en slik måte at programmereren kan forstå forbindelsen mellom nøkkelen og dataverdien. De fleste programmeringsspråk støtter assosierende felt. Databaser som inneholder assosierende dataKalt nøkkelverdidatabaser .

Fra et matematisk synspunkt beskriver verditildelingene i oppgavetabellen en kartlegging med et endelig sett med definisjoner og et endelig sett med bilder . En implementering er mulig med trær , men den aller vanligste implementeringen er hash-tabellen .

programmering

Resultatet av alle eksemplene er "Mustermann". Det er alltid det samme endimensjonale assosierende feltet, implementert på forskjellige språk. Noen ganger er det flere muligheter for å lage oppgavetabeller på språkene.

Vanlig Lisp

(defparameter *person* (make-hash-table))

(setf (gethash 'vorname    *person*) "Hans")
(setf (gethash 'name       *person*) "Mustermann")
(setf (gethash 'geburtstag *person*) "01.01.01")
(setf (gethash 'wohnort    *person*) "Musterstadt")

(loop for key being the hash-keys in *person*
      using (hash-value val)
      do (format t "~10a => ~a~%" key val))

Haskell

import qualified Data.Map as M
-- ...
someAction :: IO ()
someAction = putStrLn $ person M.! "Name"
    where person = M.fromList [
        ("Vorname", "Hans"),
        ("Name", "Mustermann"),
        ("Geburtstag", "01.01.01"),
        ("Wohnort", "Musterstadt")
    ]

Mål-C

NSMutableDictionary *person = [[NSMutableDictionary alloc] init];
[person setValue:@"Hans" forKey:@"Vorname"];
[person setValue:@"Mustermann" forKey:@"Name"];
[person setObject:@"01.01.01" forKey:@"Geburtstag"];
[person setObject:@"Musterstadt" forKey:@"Wohnort"];
NSLog(@"%@", [person valueForKey:@"Name"]);

Perle

%person = ('Vorname', 'Hans', 'Name', 'Mustermann', 'Geburtstag', '01.01.01', 'Wohnort', 'Musterstadt');
print $person{'Name'};

PL / SQL

DECLARE
    TYPE ty_person IS TABLE OF VARCHAR2(50) INDEX BY VARCHAR2(50);
    person  ty_person;
BEGIN
    person('Vorname')    := 'Hans';
    person('Name')       := 'Mustermann';
    person('Geburtstag') := '01.01.01';
    person('Wohnort')    := 'Musterstadt';
    DBMS_OUTPUT.PUT_LINE(person('Name'));
END;

python

versjon 1

person={'Vorname': 'Hans', 'Name': 'Mustermann', 'Geburtstag': '01.01.01', 'Wohnort': 'Musterstadt'}
print (person["Name"])

Variant 2

k = ['Vorname', 'Name', 'Geburtstag', 'Wohnort']
v = ['Hans', 'Mustermann', '01.01.01', 'Musterstadt']
person=dict(zip(k, v))
print (person["Name"])

Tcl

array set person {
    Vorname    Hans
    Name       Mustermann
    Geburtstag 01.01.01
    Wohnort    Musterstadt
}
puts $person(Name)

litteratur

  • Peter A. Henning, Holger Vogelsang (red.): Paperback programmeringsspråk . 2. utgave. Hanser, München 2007, ISBN 978-3-446-40744-2 .
  • Klein, Bernd: Introduksjon til Python 3 for nybegynnere og de som bytter . 2., revidert. og eksp. Utgave. München 2014, ISBN 978-3-446-44133-0 , pp. 40 .

weblenker

Individuelle bevis