Felder. November 5, 2014



Ähnliche Dokumente
WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

2. Programmierung in C

Software Engineering Klassendiagramme Assoziationen

Funktionale Programmierung mit Haskell

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Anleitung OpenCms 8 Webformular Auswertung

Fax einrichten auf Windows XP-PC

Modellierung und Programmierung 1

Eigenwerte und Eigenvektoren von Matrizen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Anwendungsbeispiele Buchhaltung

Professionelle Seminare im Bereich MS-Office

Erfahrungen mit Hartz IV- Empfängern

Scala kann auch faul sein

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

FIS: Projektdaten auf den Internetseiten ausgeben

Einrichten eines HBCI- Zugangs mit Bank X 5.1

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Was meinen die Leute eigentlich mit: Grexit?

Erklärung zum Internet-Bestellschein

PROJEKTE FREIBERUFLICHE TÄTIGKEIT. Klare Strukturen für Deine freiberufliche Tätigkeit

EINFACHES HAUSHALT- KASSABUCH

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Anleitung, WebRecherche

Arbeiten mit dem Outlook Add-In

Artikel Schnittstelle über CSV

Text-Zahlen-Formatieren

Die Invaliden-Versicherung ändert sich

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Umstellung einer bestehenden T-Online Mailadresse auf eine kostenlose T-Online Fre -Adresse

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

Adminer: Installationsanleitung

IBIS Professional. z Dokumentation zur Dublettenprüfung

Reporting Services und SharePoint 2010 Teil 1

Was ich als Bürgermeister für Lübbecke tun möchte

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

So richten Sie ihre s unter Outlook Express 5 / 6 ein

Wie Sie beliebig viele PINs, die nur aus Ziffern bestehen dürfen, mit einem beliebigen Kennwort verschlüsseln: Schritt 1

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Nutzungsmöglichkeiten der interaktiven Westoverledingen Karte

YouTube: Video-Untertitel übersetzen

Was muss gesichert werden? -Ihre angelegten Listen und Ihre angelegten Schläge.

Erklärung zu den Internet-Seiten von

Informationsblatt Induktionsbeweis

Anlegen eines virtuellen http Server unter Exchange 2003 mittels HOSTNAME

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Zählen von Objekten einer bestimmten Klasse

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Anzeige von eingescannten Rechnungen

Der Kalender im ipad

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

Datenbanken Microsoft Access 2010

Pages, Keynote. und Numbers

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Das Schulsystem in Deutschland (Band 2, Lektion 1)

Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

(im Rahmen der Exchange-Server-Umstellung am )

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in die Java- Programmierung

Übungen Programmieren 1 Felix Rohrer. Übungen

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Wie installiere und richte ich die Sync-Plus Software auf einem PC mit Windows 7 und Outlook ein?

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Berechnungen in Access Teil I

Leichte-Sprache-Bilder

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

STLB-Bau Kundenmanager

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS Prof. Dr. Margarita Esponda. Prof. Dr.

AutoCAD Dienstprogramm zur Lizenzübertragung

Anwendungsbeispiele Buchhaltung

Aufgaben zur Flächenberechnung mit der Integralrechung

Einführung in die Programmierung (EPR)

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Bauteilattribute als Sachdaten anzeigen

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Algorithmen und Datenstrukturen

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Hilfe zur Urlaubsplanung und Zeiterfassung

Anleitung für die Registrierung und das Einstellen von Angeboten

Erstellen einer digitalen Signatur für Adobe-Formulare

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Vorkurs Mathematik Übungen zu Polynomgleichungen

Aufgabe 1: [Logische Modellierung]

Kurze Anleitung zum Guthaben-Aufladen bei.

Transkript:

Felder Universität Bielefeld AG Praktische Informatik November 5, 2014

Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf Elemente mit Aufwand unabhängig von der Größe der Datenstruktur. Gegenbeispiel Musik: Finden der n-ten Note erfordert Durchlauf der Datenstruktur in n oder mehr Schritten. Allerdings: Die Noten sind nicht nummeriert.

Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf Elemente mit Aufwand unabhängig von der Größe der Datenstruktur. Gegenbeispiel Musik: Finden der n-ten Note erfordert Durchlauf der Datenstruktur in n oder mehr Schritten. Allerdings: Die Noten sind nicht nummeriert. Besseres Gegenbeispiel: Listen hier sind die Elemente ab 0 nummeriert...

Zugriff auf Listenelemente Listen beherbergen viele Elemente gleichen Typs. Sequentielle Abarbeitung ist einfach und effizient, z.b. 1 map f [] = [] 2 map f ( x: xs) = f x : map f xs Random Zugriff auf einzelne Elemente durch operator!! hängt von der Listenlänge ab: 1 (x:xs)!! 0 = x 2 (x:xs)!! n = xs!!(n -1) Abhilfe schafft der Datentyp Array a b

Datentyp Array a b auf Deutsch Felder Modul Data.Array stellt Datentyp Array a b und Funktionen darauf bereit a ist der Datentyp des Index, b der Elementtyp Operator! für Element-Zugriff bietet effizienten Random-Access Indextyp erlaubt mehrere Dimensionen Funktion array liefert ein Array zurück

Datentyp Array a b auf Deutsch Felder Modul Data.Array stellt Datentyp Array a b und Funktionen darauf bereit a ist der Datentyp des Index, b der Elementtyp Operator! für Element-Zugriff bietet effizienten Random-Access Indextyp erlaubt mehrere Dimensionen Funktion array liefert ein Array zurück 1 a r r a y : : ( I x a ) => ( a, a ) > [ ( a, b ) ] > Array a b 2 3 t = a r r a y ( low, h i g h ) l i s t _ o f _ e n t r i e s =...

Datentyp Array a b auf Deutsch Felder Modul Data.Array stellt Datentyp Array a b und Funktionen darauf bereit a ist der Datentyp des Index, b der Elementtyp Operator! für Element-Zugriff bietet effizienten Random-Access Indextyp erlaubt mehrere Dimensionen Funktion array liefert ein Array zurück 1 a r r a y : : ( I x a ) => ( a, a ) > [ ( a, b ) ] > Array a b 2 3 t = a r r a y ( low, h i g h ) l i s t _ o f _ e n t r i e s =... 1 (!) :: (Ix a) => Array a b -> a -> b

Beispiel: 2D Array 1 > module Arr 2 > where 3 > import Data. Array 4 5 > t a b l e : : Array ( Char, I n t ) I n t 6 > t a b l e = a r r a y ( ( a, 0 ), ( c, 2) ) 7 > [ ( ( a, 0 ), 0 ), 8 > ( ( a, 1 ), 1 ), 9 > ( ( a, 2 ), 2 ), 10 > ( ( b, 0 ), 3 ), 11 > ( ( b, 1 ), 4 ), 12 > ( ( c, 0 ), 6 ), 13 > ( ( c, 1 ), 7 ), 14 > ( ( b, 2 ), 5 ), 15 > ( ( c, 2 ), 8 ) 16 > ] 17 18 > a c c e s s a b = t a b l e! ( a, b ) 19 > a c c e s s 2 = ( t a b l e! )

Alternative Pattern Matching als Alternative für read-only Felder vs. Feldgröße

Alternative Pattern Matching als Alternative für read-only Felder vs. Feldgröße Example 1 access a 0 = 0 2 access a 1 = 1 3 access a 2 = 2 4 access b 1 = 3 5...

Beispiel: Umwandlung String in Char Array 1 2 > s2a : : S t r i n g > Array I n t Char 3 > s2a xs = l i s t A r r a y ( 0, length xs 1) xs

Akkumulierende Manchmal kann man die Einträge eines Feldes nicht auf einmal ausrechnen. Dafür gibt es die Funktion 1 > accumarray :: Ix a = > 2 (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b 3 4 akkumulierende Bereich Ergebnis 5 Fkt. Startwert Elemente

Akkumulierende Manchmal kann man die Einträge eines Feldes nicht auf einmal ausrechnen. Dafür gibt es die Funktion 1 > accumarray :: Ix a = > 2 (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b 3 4 akkumulierende Bereich Ergebnis 5 Fkt. Startwert Elemente Der Aufruf accumarray f s (lo,up) assocslist erlaubt fehlende wie mehrfache Auftreten des Indices in den Associations initialisiert alle Elemente mit dem Startwert s akkumuliert mehrfache Auftreten (i,x),...,(i,y),...,(i,z) in der Form (((s f x) f y) f z) in Element i

Akkumulierende Beispiel: Zählen der Buchstabenhäufigkeit in einem Text 1 > frq :: String - > Array Char Int 2 > frq t = accumarray (+) 0 ( A, z ) ( zip t ones ) 3 > where ones = 1: ones

Akkumulierende Beispiel: Zählen der Buchstabenhäufigkeit in einem Text 1 > frq :: String - > Array Char Int 2 > frq t = accumarray (+) 0 ( A, z ) ( zip t ones ) 3 > where ones = 1: ones Damit z.b. 1 Arr > frq " abraham "! a 2 3 3 Arr > frq " abraham "! U 4 0

von Funktionen 1 Gegeben eine Funktion, die aufwendig zu berechnen ist: 2 > s i d : : I n t > I n t 3 > s i d x = ( x +1) (x 1) (x 2) ( x+2)+(x round 3. 1 )

von Funktionen 1 Gegeben eine Funktion, die aufwendig zu berechnen ist: 2 > s i d : : I n t > I n t 3 > s i d x = ( x +1) (x 1) (x 2) ( x+2)+(x round 3. 1 ) 1 Wenn die Werte (aus einem bekannten Intervall) immer wieder gebraucht werden, nimmt man eine interne Tabelle 2 > f i d : : I n t > I n t 3 > f i d = ( f! ) where 4 > f = a r r a y ( 0, 1 0 0 ) 5 > [ ( x, ( x +1) ( x 1) (x 2) ( x+2)+(x round 3. 1 ) ) 6 > x < [ 0.. 1 0 0 ] ] Das funktioniert schneller, aber nur über dem vorgesehenen Intervall.

von Funktionen ist eine allgemeine Technik. Können wir eine Funktion tabulate schreiben, die andere Funktionen in tabellierte Funktionen verwandelt? Was wäre ihr Typ?

von Funktionen 1 ist eine allgemeine Technik. Können wir eine Funktion tabulate schreiben, die andere Funktionen in tabellierte Funktionen verwandelt? Was wäre ihr Typ? 2 > t a b u l a t e : : ( Int, I n t ) >(Int >a) >(Int >a )

von Funktionen 1 ist eine allgemeine Technik. Können wir eine Funktion tabulate schreiben, die andere Funktionen in tabellierte Funktionen verwandelt? Was wäre ihr Typ? 2 > t a b u l a t e : : ( Int, I n t ) >(Int >a) >(Int >a ) Und was muss sie tun? Wir fordern x, f: (tabulate f) x = f x nur schneller!

von Funktionen 1 ist eine allgemeine Technik. Können wir eine Funktion tabulate schreiben, die andere Funktionen in tabellierte Funktionen verwandelt? Was wäre ihr Typ? 2 > t a b u l a t e : : ( Int, I n t ) >(Int >a) >(Int >a ) Und was muss sie tun? Wir fordern x, f: (tabulate f) x = f x nur schneller! 1 > t a b u l a t e ( lo, up ) f = ( t! ) where 2 > t = a r r a y ( lo, up ) ( z i p domain (map f domain ) ) 3 > domain = [ l o.. up ]

von Funktionen 1 Damit nun einfach für beliebige Funktionen über einem Intervall, aber hier am Beispiel sid 2 > t i d : : I n t > I n t 3 > t i d = t a b u l a t e ( 1, 1 0 0 ) s i d Betrachte die Anzahl der Rechenschritte bei mehrfachen Aufrufen von sid 42, fid 42, tid 42...