Funktionale Programmierung mit Haskell
|
|
- Cornelia Voss
- vor 8 Jahren
- Abrufe
Transkript
1 Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2012 I. Die Sprache Haskell 1. Einführung in Haskell 2. Funktionen als Basis der Programmierung 3. Algebraische Typen 4. Grundlagen des Typsystems 5. Strukturierung durch Typklassen 6. Verbergen von Information 7. Sprachergänzungen II. Fallstudien c Hans J. Schneider 2012
2 Literate programming Literate Programming kombiniert Programmcode und ausführliche Dokumentation. Programmcode beginnt jeweils mit der ersten Zeile nach einer Zeile, die mit \begin{code} beginnt. Programmcode endet jeweils unmittelbar vor der Zeile, die mit \end{code} beginnt. Alle anderen Zeilen werden vom Haskell-Interpretierer (Compiler) nicht beachtet. Diese anderen Zeilen können beispielsweise LaTeX-Zeilen sein. Der Bericht über die Implementierung der Graphtransformationen mit Haskell (siehe Internetseite zu den Graphtransformationen) ist so geschrieben. Bei Bedarf kann die code-umgebung durch Kopieren der verbatim- Umgebung definiert werden. Funktionale Programmierung mit Haskell 7.1
3 Übersicht Haskell wertet Parameter erst aus, wenn sie benötigt werden, und nur soweit, wie sie benötigt werden (Lazy evaluation). Dies ermöglicht (potentiell) unendlich lange Listen. Es kann sinnvoll sein, aus Effizienzgründen ausdrücklich die strikte Auswertung zu verwenden. Lazy evaluation ist auch beim Mustervergleich möglich: lazy patterns. Die Unifikation wird nur teilweise durchgeführt. Einige Anmerkungen zur Ein- und Ausgabe. Funktionale Programmierung mit Haskell 7.2
4 Unendliche Listen Die rekursive Implementierung der Fibonacci-Zahlen ist sehr aufwendig: fib 0 = 1 fib 1 = 1 fib n = fib (n-2) + fib (n-1) Direkter Zugriff auf die Liste bereits berechneter Zahlen: fib 0 = 1 fib 1 = 1 fib n = flist!!(n-1) + flist!!(n-2) where flist = map fib [0..] map fib ordnet jeder Komponenten einer Liste ihre Fibonacci-Zahl zu. [0..] bezeichnet die unendliche Liste [0,1,2,3,4,...] Unendliche Listen sind möglich, weil Haskell Parameter erst und soweit auswertet, wie sie wirklich benötigt werden. Funktionale Programmierung mit Haskell 7.3
5 Sieb des Erathostenes Man braucht nicht zu wissen, wie lang eine Liste wird! Sieb des Erathostenes: primes = sieve([2..]) where sieve(p:x) = p : sieve([n n<-x, n mod p > 0]) Auch auf unendliche Listen können alle Listenoperationen angewandt werden: prime_number(i) = primes!! (i-1) Main> prime_number Main> initial(15, primes) [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47] Funktionale Programmierung mit Haskell 7.4
6 Grenzwerte Grenzwerte sind ebenfalls ein Beispiel, wo man nicht im vorhinein weiß, wie weit die Liste geht. Definition: limes(a:b:x) = if a == b then a else limes(b:x) limes(other) = error "incorrect use of limes" Bemerkung: other ist ein beliebig gewählter Bezeichner. Beispiel: f(x) = x 2 z = 0 Newtonsche Iteration: f(x i+1 ) = x i f(x i) f (x i ) = 1 ) 2 (x i + zxi wurzel z = limes (iterate f 1) where f(x) = (x + z/x)/2.0 Main> wurzel Da bei Gleitpunktzahlen Rundungsfehler auftreten, ist der Gleichheitstest etwas gefährlich. (siehe Übung) Funktionale Programmierung mit Haskell 7.5
7 Funktionen als Objekte Funktionen sind Objekte wie alle anderen und können entsprechend verwendet werden, z.b. als Operanden spezieller Funktionen oder als Komponenten in Datenstrukturen. Komposition von Funktionen: f1 x = 2*x f2 x = x+2 f3 = f1. f2 Liste von Funktionen: pow 0 n = 1 pow i n = n * (pow (i-1) n) powers = [ pow i i <- [0..] ] In der angewandten Mathematik spielen Folgen von Funktionen etwa bei der Approximation eine Rolle. Funktionale Programmierung mit Haskell 7.6
8 Funktoren I Wir kennen bereits Funktionen höherer Ordnung, die Funktionen auf alle Elemente einer Liste anwenden, z.b.: map f [] = [] map f (x:xs) = f x : map f xs Im Standardvorspann definiert: class Functor s where fmap :: (a -> b) -> s a -> s b Damit können wir eine Funktion auf die Elemente einer beliebigen Struktur anwenden, z.b. eines binären Baumes: instance Functor StandBinTree where fmap f EmptyBinTree = EmptyBinTree fmap f (Node(x, l, r)) = Node(f x, (fmap f l), (fmap f r)) Main> t2 (87 (123 (471) (200)) (256 () (317))) Main> fmap (+1) t2 (88 (124 (472) (201)) (257 () (318))) Funktionale Programmierung mit Haskell 7.7
9 Funktoren II fmap wendet eine Funktion auf alle Elemente einer Struktur an. class Functor s where fmap :: (a -> b) -> s a -> s b Bei rekursiv aufgebauten Strukturen macht es auch Sinn, eine Funktion auf Teilstrukturen anzuwenden. class RecFunctor s where rmap :: (s a -> b) -> s a -> s b instance RecFunctor StandBinTree where rmap f EmptyBinTree = EmptyBinTree rmap f (Node(x, l, r)) = Node(f (Node(x,l,r)), (rmap f l), (rmap f r)) Main> t2 (87 (123 (471) (200)) (256 () (317))) Main> rmap height t2 (3 (2 (1) (1)) (2 () (1))) Main> rmap balance t2 (0 (0 (0) (0)) (1 () (0))) Funktionale Programmierung mit Haskell 7.8
10 Lazy Patterns: Beispiel Struktur eines Client-Server-Systems: requests Client Server responses initialize Der Server verarbeitet die Anfragen des Client und liefert für jede Anfrage eine Antwort: server (req:reqs) = process req : server reqs Der Client konstruiert aus dem Anfangswert und den Antworten des Servers eine Ergebnisliste: client initialize ~(resp:resps) = initialize : client (next resp) resps ~(resp:resps) verhindert die Auswertung von resps. next bearbeitet die Antwort vor der Weitergabe. Quelle: A Gentle Introduction to Haskell 98 Funktionale Programmierung mit Haskell 7.9
11 Lazy Patterns: Beispiel (II) Struktur eines Client-Server-Systems: requests Client Server responses initialize Einfaches Beispiel einer Verarbeitung: initialize = 0 next resp = resp process req = req + 1 Kommunikation der Komponenten: requests = client initialize responses responses = server requests Beispiellauf: Main> take 10 requests [0,1,2,3,4,5,6,7,8,9] Funktionale Programmierung mit Haskell 7.10
12 Lazy Patterns: Semantik A lazy pattern has the form ~pat. Lazy patterns are irrefutable: matching a value v against ~pat always succeeds. If an identifier in pat is later used on the right-hand side, it will be bound to that portion of the value that would result if v were to successfully match pat, and otherwise. Beispiel: Aufruf: client initialize responses Definition: client initialize ~(resp:resps) = initialize : client (next resp) resps Ohne ~ ergibt sich in unserem Beispiel. Funktionale Programmierung mit Haskell 7.11
13 Strikte Parameterauswertung Die Funktion seq erreicht, dass ein Parameter stets ausgewertet wird. Ihre Definition entspricht: seq b = seq a b = b, if a Beispiel: take :: Integer -> [Integer] -> [Integer] take 0 _ = [] take _ [] = [] take n (x:xs) = x : take (n-1) xs bot = bot take 0 bot funktioniert. seq (take 0) bot funktioniert nicht! Funktionale Programmierung mit Haskell 7.12
14 Die Standardklasse Show The Show class is used to convert values to strings (Report App. A.2). class Show a where showsprec :: Int -> a -> ShowS show :: a -> String showlist :: [a] -> ShowS Beschreibung der Funktionen: showsprec and showlist return a String-to-String function, to allow constant-time concatenation of its results using function composition. A specialised variant, show, is also provided, which uses precedence context zero, and returns an ordinary String. The method showlist is provided to allow the programmer to give a specialised way of showing lists of values. Aus der Betrachtung der vordefinierten Klassen kann man einiges lernen. Funktionale Programmierung mit Haskell 7.13
15 Default-Methoden in der Standardklasse Show ShowS ist ein Funktionstyp: type ShowS = String -> String Die Klasse Show: class Show a where showsprec :: Int -> a -> ShowS show :: a -> String showlist :: [a] -> ShowS showsprec _ x s = show x ++ s show x = showsprec 0 x "" Es genügt, entweder show zu definieren oder showsprec. Weiter gibt es: shows = showsprec 0 Funktionale Programmierung mit Haskell 7.14
16 Beispiele zu ShowS showchar und showstring sind Curry-Funktionen: type ShowS = String -> String showchar showstring :: Char -> ShowS :: String -> ShowS showchar a ist eine Funktion, die das Zeichen a an den Anfang einer Zeichenkette stellt: showchar = (:) Main> showchar a "bcd" "abcd" Entsprechend setzt showstring eine Zeichenkette voran: showstring = (++) Main> showstring "ab" "cde" "abcde" Funktionale Programmierung mit Haskell 7.15
17 Traditionelle Implementierung von showlist Ohne Curry-Funktion würde man das folgendermaßen machen: showlist :: (Show a) => [a] -> String showlist [] = "[]" showlist (x:xs) = "[" ++ show x ++ showl xs where showl [] = "]" showl (x:xs) = "," ++ show x ++ showl xs Die Auflösung der Rekursion führt zu fortgesetzten Konkatenationsoperationen: showlist [1,2,3] = "[" ++ show 1 ++ showl [2,3] = "[1" ++ "," ++ show 2 ++ showl [3] = "[1,2" ++ "," ++ show 3 ++ showl [] = "[1,2,3" ++ "]" = "[1,2,3]" und damit zu quadratischer Laufzeit! (Aus Gründen der Übersichtlichkeit sind die weiter links stehenden Konkatenationsoperationen zusammengefasst, obwohl ++ rechtsassoziativ ist.) Funktionale Programmierung mit Haskell 7.16
18 Standardimplementierung von showlist Implementierung im Standardvorspann: showlist :: [a] -> (String -> String) showlist [] = showstring "[]" showlist (x:xs) = showchar [. shows x. showl xs where showl [] = showchar ] showl (x:xs) = showchar,. shows x. showl xs Arbeitsweise der Standardimplementierung: showlist [1,2,3] "" = showchar [. shows 1. showl [2,3] "" = showchar [. shows 1. showchar,. shows 2. showl [3] "" = showchar [. shows 1. showchar,. shows 2. showchar,. shows 3. showl [] "" Da die Funktionskomposition rechtsassoziativ ist, läuft das auf eine fortgesetzte Anwendung des cons-operators hinaus! Funktionale Programmierung mit Haskell 7.17
19 Monadische Klassen Die erste Begegnung mit monadischen Klassen ist schwierig, aber das IO-System von Haskell basiert darauf. Monad An entity or elementary being thought of as a microcosmos or ultimate unit (Webster). Mathematically, monads are governed by set of laws that should hold for the monadic operations (A gentle introduction...). Functor (haben wir schon gesehen) Die Klasse Functor definiert nur eine einzige Funktion: fmap. fmap wendet eine Operation auf alle Elemente innerhalb eines Containers an und liefert einen Container von gleicher Gestalt zurück. Gesetze für fmap: fmap id = id fmap (f. g) = fmap f. fmap g Funktionale Programmierung mit Haskell 7.18
20 Klasse Monad Definition im Vorspann: class Monad m where (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b return :: a -> m a fail :: String -> m a return fügt einen Wert vom Typ a in eine Monade über a ein. >> verknüpft zwei Monaden, bei >>= ist die Verknüpfung parametrisiert. m >> k = m >>= \_ -> k fail s = error s Die Listen sind eine Instanz von Monad: (>>=):: [a] -> (a -> [b]) -> [b] m >>= k = concat (map k m) Main> "abc" >>= (\x -> [succ x]) "bcd" Main> zip [1,2,3] [4,5,6] >>= (\(x,y) -> [x*y]) [4,10,18] Funktionale Programmierung mit Haskell 7.19
21 Do-Ausdrücke (I) Do-Ausdrücke sind eine suggestive Syntax für Ketten monadischer Operationen. Beispiel: Main> zip [1,2,3] [4,5,6] >>= (\(x,y) -> [x*y]) [4,10,18] Main> do {(x,y) <- zip [1,2,3] [4,5,6]; [x*y] } [4,10,18] Den Linkspfeil <- kennen wir von den Zermelo-Fraenkel-Ausdrücken: Main> [ x*y (x,y) <- zip [1,2,3] [4,5,6] ] [4,10,18] Definition der do-ausdrücke: do {e} = e do {e;stmts} = e >> do {stmts} do {p <- e; stmts} = let ok p = do {stmts} ok _ = fail "..." in e >>= ok ok ist eine (von p abhängige) Funktion. Funktionale Programmierung mit Haskell 7.20
22 Do-Ausdrücke (II) Beispiel für >>: Main> do {putstr "abc"; putstr "\n"} abc Main> putstr "abc" >> putstr "\n" abc Beispiel aus dem Standardvorspann: getline :: IO String getline = do c <- getchar if c == \n then return "" else do s <- getline return (c:s) getchar :: IO Char -- primitive Funktion Die IO-Funktionen im Standardvorspann sind in diesem Stil definiert. Funktionale Programmierung mit Haskell 7.21
23 Anhang: Gesetze für Monaden Instances of Monad should satisfy the following laws: return a >>= k = k a m >>= return = m m >>= (\x -> k x >>= h) = (m >>= k) >>= h (Assoziativgesetz) Instances of both Monad and Functor should additionally satisfy the law: fmap f xs = xs >>= return. f Beispiel: Listen f e = f(e) (return. f) e = [f(e)] xs >>= return. f = [f(e) e <- xs ] = map f xs Funktionale Programmierung mit Haskell 7.22
24 Anhang: Die Standardklasse Read The Read class is used to convert values from strings (Report 7.1 / A.2): class Read a where readsprec :: Int -> ReadS a readlist :: ReadS [a] Die Standardtypen sind Instanzen von Read, z.b. instance Read Float where readsprec p = readfloat Main> :info readfloat readfloat :: RealFrac a => ReadS a Anmerkung: RealFrac umfasst standardmäßig Float und Double. Unbequem: type ReadS a = String -> [(a,string)] Main> readfloat " " [(1.6," ")] Am bequemsten ist es, Beispiele in den Dateien selbst zu speichern. Funktionale Programmierung mit Haskell 7.23
25 Anhang: Hilfsfunktionen für Read Funktion, die eine Eingabezeichenkette in eine Liste von Gleitpunktzahlen umwandelt: Main> readfloatlist " " [1.6,3.4,9.0] Definition: readfloatlist "" = [] :: [Float] readfloatlist s = head:(readfloatlist rest) where [(head, rest)] = readfloat (removeblanks s) removeblanks [] = [] removeblanks ( :rest) = removeblanks rest removeblanks other = other Der Datentyp ReadS erlaubt jedoch die Kombination verschiedener Typen in der Eingabezeichenkette. Vorsicht: In den neueren Hugs-Versionen (ab März 2005) sind Funktionen wie beispielsweise readfloat nicht mehr automatisch verfügbar. Lösung: import Numeric Funktionale Programmierung mit Haskell 7.24
Funktionale Programmierung
Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrTypdeklarationen. Es gibt in Haskell bereits primitive Typen:
Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,
MehrFragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?
Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [
MehrScala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
MehrFunktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.
ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall
MehrFelder. November 5, 2014
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
MehrKapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe
Anfragen für Listen Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe 1 MapReduce-Verfahren Google u.a. verwenden Map-Reduce-Verfahren zur Verarbeitung riesiger
MehrCGI Programmierung mit Ha. Markus Schwarz
CGI Programmierung mit Ha Markus Schwarz Überblick Was ist funktionale Programmierung Einführung in Haskell CGI-Programmierung mit Haskell Ein etwas größeres Beispiel Was ist funktionale Programm Ein Programm
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die
MehrJava Einführung Operatoren Kapitel 2 und 3
Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Mehr4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrGrundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
MehrPrimzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrErweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16
Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrProgrammieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
MehrMatrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -
Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung
MehrÜbungen zu C++ Kapitel 1
Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrReporting Services und SharePoint 2010 Teil 1
Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrFormale Sprachen und Grammatiken
Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrDie Post hat eine Umfrage gemacht
Die Post hat eine Umfrage gemacht Bei der Umfrage ging es um das Thema: Inklusion Die Post hat Menschen mit Behinderung und Menschen ohne Behinderung gefragt: Wie zufrieden sie in dieser Gesellschaft sind.
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrEinrichtung des Cisco VPN Clients (IPSEC) in Windows7
Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrInformatik Grundlagen, WS04, Seminar 13
Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrAnwenderleitfaden Citrix. Stand Februar 2008
Anwenderleitfaden Citrix Stand Februar 2008 Inhalt 1. Ansprechpartner...3 2. Einführung...4 3. Citrix-Standard-Anwendungen...5 4. Sperrung der Citrix-Session durch falsche Anmeldung...5 5. Unterbrechung
Mehr.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage
.htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess
MehrEinfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at
Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrInformatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
MehrGrundlegende Datentypen
Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch
MehrAlgorithmen mit Python
Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten
MehrProgrammierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.
Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil
MehrWürfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
Mehr4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:
4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie
MehrWeb-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter
Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................
MehrFolgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:
Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal
MehrExcel Funktionen durch eigene Funktionen erweitern.
Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrAdressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung
Adressen Adressen, Termine Studienleistung Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Büro und Email Raum 216, Robert-Mayer-Str. 11-15 sabel@ki.informatik.uni-frankfurt.de
MehrMotivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.
Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de
MehrOP-LOG www.op-log.de
Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrAlgorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
MehrJeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint
Bilingual konkret Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Moderner Unterricht ist ohne die Unterstützung durch Computer und das Internet fast
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrAUTOMATISCHE E-MAIL-ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!
AUTOMATISCHE E-MAIL-ARCHIVIERUNG 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD! INHALT AUTOMATISCHE E-MAIL-ARCHIVIERUNG... 4 Eingehende E-Mails können
MehrAGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
MehrÜberprüfung der digital signierten E-Rechnung
Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,
Mehr17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014
17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png
MehrAbamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit
MehrWindows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen
Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Das können wir Ihnen versprechen: An der neuen Taskleiste in Windows 7 werden Sie sehr viel Freude haben. Denn diese sorgt
MehrDatenbank-Verschlüsselung mit DbDefence und Webanwendungen.
Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK WS 11/12 Einführung in die Informatik II Übungsblatt 2 Univ.-Prof. Dr. Andrey Rybalchenko, M.Sc. Ruslán Ledesma Garza 8.11.2011 Dieses Blatt behandelt
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrInformatik 12 Datenbanken SQL-Einführung
Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung
MehrDas neue Volume-Flag S (Scannen erforderlich)
NetWorker 7.4.2 - Allgemein Tip 2, Seite 1/5 Das neue Volume-Flag S (Scannen erforderlich) Nach der Wiederherstellung des Bootstraps ist es sehr wahrscheinlich, daß die in ihm enthaltenen Informationen
MehrDie Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
MehrFORUM HANDREICHUNG (STAND: AUGUST 2013)
FORUM HANDREICHUNG (STAND: AUGUST 2013) Seite 2, Forum Inhalt Ein Forum anlegen... 3 Forumstypen... 4 Beiträge im Forum schreiben... 5 Beiträge im Forum beantworten... 6 Besondere Rechte der Leitung...
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrDer lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
MehrViele Bilder auf der FA-Homepage
Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
Mehre-books aus der EBL-Datenbank
e-books aus der EBL-Datenbank In dieser Anleitung wird erklärt, wie Sie ein ebook aus der EBL-Datenbank ausleihen und mit dem Programm Adobe Digital Edition öffnen. Folgende Vorraussetzungen sind eventuell
MehrComputerarithmetik ( )
Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur
MehrWurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik
Wurzeln als Potenzen mit gebrochenen Exponenten Zur Einstimmung Wir haben die Formel benutzt x m n = x m n nach der eine Exponentialzahl potenziert wird, indem man die Exponenten multipliziert. Dann sollte
Mehr10.6 Programmier-Exits für Workitems
10.6 Programmier-Exits für Workitems 279 10.6 Programmier-Exits für Workitems 10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT Am Schritt einer Workflow-Definition im Reiter»Programmier-Exits«können verschiedene
MehrDie Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.
In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website
MehrAlle gehören dazu. Vorwort
Alle gehören dazu Alle sollen zusammen Sport machen können. In diesem Text steht: Wie wir dafür sorgen wollen. Wir sind: Der Deutsche Olympische Sport-Bund und die Deutsche Sport-Jugend. Zu uns gehören
Mehr3. LINEARE GLEICHUNGSSYSTEME
176 3. LINEARE GLEICHUNGSSYSTEME 90 Vitamin-C-Gehalt verschiedener Säfte 18,0 mg 35,0 mg 12,5 mg 1. a) 100 ml + 50 ml + 50 ml = 41,75 mg 100 ml 100 ml 100 ml b) : Menge an Kirschsaft in ml y: Menge an
MehrTestklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten
Matrikelnummer: Punkte: Testklausur 1 zur Vorlesung Modellierung und Programmierung I Dr. Monika Meiler Zeit: 60 Minuten Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Aufgabe ist
MehrStundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten
Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe
MehrInstallation der SAS Foundation Software auf Windows
Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrGrammatiken. Einführung
Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrSEMINAR Modifikation für die Nutzung des Community Builders
20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen
MehrP&P Software - Adressexport an Outlook 05/29/16 14:44:26
Adressexport an Outlook Wozu? Aus EASY können viele Daten im Excelformat ausgegeben werden. Diese Funktion kann zum Beispiel zum Export von Lieferantenadressen an Outlook genutzt werden. Hinweis Wir können
MehrErstellen eines Screenshot
Blatt 1 von 5 Erstellen eines Screenshot Einige Support-Probleme lassen sich besser verdeutlichen, wenn der Supportmitarbeiter die aktuelle Bildschirmansicht des Benutzers sieht. Hierzu bietet Windows
Mehr