Programmierparadigmen, Datentypen und Abstraktion

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 76,33 KB

Ein Paradigma besteht aus den allgemeinen theoretischen Annahmen, Gesetze und Techniken für die Anwendung auf die Mitglieder einer bestimmten wissenschaftlichen Gemeinschaft zu nehmen. Es ist ein grundlegendes Modell oder Regelung, dass unsere Ansichten in Bezug auf ein bestimmtes Thema organisiert. Die Paradigmen Grenzen setzen, um Probleme innerhalb sie zu lösen, und damit zu verbessern oder neue Lösungen und Erfahrungen, die diese Filter sind bis an die Grenzen, Vorstellungen oder Überzeugungen angepasst. Programming Paradigmen stellen eine besondere Herangehensweise und Philosophie für die Erstellung von Software. Der Imperativ Paradigma gilt als die häufigste und vertreten ist, z. B. C, Pascal, COBOL. Die objektorientierte Paradigma. Eine vollständig objektorientierte Sprache Smalltalk. Die funktionale Paradigma wird von der LISP Familie von Sprachen vertreten. Ein weiterer Vorschlag wäre zu Haskell. Die logische Paradigma, ist ein Beispiel Prolog. Paradigm eingeführt Fortran-Befehle und sub-symbolische Ausdrücke mit Schalter. Wurde das Konzept der COBOL-Daten Beschreibung. Die Algol-60 wurde das Konzept der Block-Struktur, Variablen, Prozeduren etc.. Er beeinflusste viele spätere Sprachen so stark, dass sie genannt wurden Algol-ähnliche Sprachen. Pascal war die Sprache Algol Stil, mehr populär geworden, weil es einfach ist, systematisch und effizient umgesetzt werden. Beschreibt die Programmierung des Programms in Bezug auf Staat und Aussagen, dass der Wandel des Staates. Imperative Programme sind eine Reihe von Anweisungen, die der Computer sagen, wie man eine Aufgabe zu erledigen. Die Rezepte und Listen der Review-Prozesse, während keine Software, werden auch bekannte Konzepte wie imperativen Programmierung Stil, ist jeder Schritt eine Anleitung. Imperative Programmierung wird so genannt, weil sie auf Aussagen beruht, dass Update-Variablen bei der Lagerung. Steht in engem Zusammenhang mit der realen Welt zu modellieren. Es ist im Wesentlichen dadurch gekennzeichnet, da die Anweisungen, aus denen es nacheinander in einer vorgegebenen Reihenfolge ausgeführt werden. Das Grundgerät wird in der Ausführung des Programms oder der ausführbaren Anweisungen, die in einer Reihe von Modulen oder Routinen nach einer hierarchischen Organisation verteilt unterteilt ist eingestellt. Bei dieser Art der Programmierung die Daten ungeordnet, sind bloße Anhängsel der Programme und bieten nur Werte, die Berechnungen dienen. Ein Programm in der Wurzel der Hierarchie wird als das Hauptprogramm und andere sind mit dem Namen der Unterprogramme, Subroutinen, Funktionen oder Verfahren bekannt. Hinsichtlich der Daten, abhängig von der Sprache kann es sich um globale, auf das alle Programme in der Hierarchie oder lokale, geeignet nur durch das Programm zu dem es gehört. Innerhalb dieser Art der Programmierung können wir zwei Bereiche: die strukturierte Programmierung oder Programmierung ohne GOTO: hat mehrere Vorteile in der Leichtigkeit, der Modularisierung, Dokumentation und Wartung von Programmen zu finden, Programmierung unstrukturierten unbedingte Sprünge, die die Durchführung des Programms zu erlauben durch GOTO Anweisungen. Objekt-orientierte Paradigma ist das Paradigma, das immer beliebter in den letzten Jahren ist. Die objektorientierte Programmierung ist aus den Begriffen von Simula, einer anderen Sprache Algol Stil eingeführt, abgeleitet. Smalltalk ist für Klassen der Objekte, ein Objekt ist eine Variable, die nur durch die damit verbundenen Operationen zugegriffen werden kann. Die Objekte sind Unternehmen, die staatliche kombinieren (dh Daten) und Verhalten (dh, Verfahren oder Methoden). Die objektorientierte Programmierung ein Programm, ausgedrückt als eine Menge von diesen Objekten, die miteinander kommunizieren, um Aufgaben.Prozedurale Sprachen: Schreiben Sie Funktionen und Daten gehen dann zu ihnen. Objektorientierte Sprachen definieren Objekte mit Daten und Methoden und dann Nachrichten an Objekte, sagen, dass diese Methoden selbst gemacht. Funktionale Paradigma auf Lambda-Kalkül basiert (oder?-Kalkül), Alonso Kirche. LISP war die erste Sprache ganz auf die Lambda-Kalkül beruht. Lisp in seiner reinen Form, ist ganz auf die Funktionen auf den Listen und Bäumen auf. Moderne und funktionelle Sprache, behandeln Funktionen als First-Class-Werte und auch ein fortschrittliches System zu integrieren. Die Reihenfolge von Berechnungen durch das Programm durchgeführt würden ausschließlich durch Umschreiben breitere Definitionen immer konkreter definiert und geregelt. Programme in einer funktionalen Sprache geschrieben werden ausschließlich von Funktionsdefinitionen bestimmten Eigenschaften wie referentielle Transparenz überprüft gemacht werden (die Bedeutung eines Ausdrucks hängt nur von der Bedeutung seiner Teilausdrücke). Es gibt keine Variablenzuweisungen. Mangel an strukturierten Konstrukte wie Sequenz oder Iteration (Rekursion nur) zwischen rein funktionalen Sprachen: Haskell Miranda Hybrid Funktionale Sprachen: Scheme, Lisp OCaml Standard ML (die beiden letzteren, die Nachkommen der Sprache ML). Eine logische Paradigma Programmiersprache ist auf eine Teilmenge der mathematischen Logik. Der Computer ist so programmiert, dass Beziehungen zwischen den Werten schließen die Ausgabe Werte aus Input-Werte zu berechnen. Prolog-Logik-Programmierung populär gemacht und ist eher schwach und ineffizient, sondern wurde geändert, um neue Funktionen hinzuzufügen nicht logisch, nutzbar zu machen als Programmiersprache. Die meisten dieser Sprachen sind auf Prädikatenlogik beruht. Definieren Sie Eigenschaften von Objekten in dem Referenz-Domänencontroller und die Beziehungen zwischen ihnen durch Formeln, die normalerweise verwendet werden, Auswirkungen auf Anschluss. Oriented Paradigm Events Die Event-Driven-Programmierung ist ein Paradigma, in dem sowohl die Struktur und Umsetzung der Programme werden durch die Ereignisse bestimmt, die im System auftreten oder dass sie verursachen. Es wird dem Benutzer-oder was auch immer Sie das Programm, das den Fluss der sie lenkt tätig sind. Aus anderen Initialisierungen und erste Code und dann wird das Programm blockiert, bis ein Ereignis eintritt durchgeführt werden. Mausklick. Ankunft einer Nachricht über das Netzwerk. Aspect Oriented Programming (AOP) ist ein Programmier-Paradigma relativ reciente.Entre die Ziele des POA vorgeschlagen werden, vor allem die Begriffe zu trennen und die Abhängigkeiten zwischen ihnen zu minimieren. Mit dem ersten Tor von jeder Entscheidung verfolgt wird an einem bestimmten Ort und nicht von der Anwendung verstreut. Mit dem zweiten ist es, die verschiedenen Elemente in einem Programm beteiligt zu entkoppeln. Seine Leistung hätte folgende Vorteile verbunden: weniger verschlungenen Code, natürlicher und leichter an die Vernunft über reducido.Mayor Konzepte, da sie getrennt sind und die Abhängigkeiten zwischen ihnen sind mínimas.Un Code leichter zu debuggen und einfacher zu verwalten. Sie erhalten eine große Anzahl von Änderungen zu der Definition eines Themas mit einem minimalen Auswirkungen auf otras.Se hat einen Code mehr wieder verwendbar und kann angedockt werden und abgedockt, wenn notwendig. Werte und Typen namens Wert auf etwas, das evaluiert werden können, gespeichert, in eine Datenstruktur als Argument an eine Prozedur oder Funktion, als Ergebnis einer Funktion zurückgegeben und so weitergegeben übernommen. Mit anderen Worten, ist ein Wert, jede Einheit, die während einer Berechnung besteht. Zum Beispiel in Pascal finden wir die folgenden Werte: primitive Werte (Wahrheitswerte, Zeichen aufgeführt sind, Zahlen und Realen) Wertpapiere Verbindungen (Records, Arrays, Sets und Dateien) Zeiger Verweise auf Variablen und Funktionen Abstraktion Verfahren.Ein Typ wird eine Reihe von Werten. Wenn wir sagen, dass v ein Wert vom Typ T ist, bedeutet es einfach, dass v? T. Wenn wir sagen, dass ein Ausdruck E vom Typ T ist bedeutet, dass das Ergebnis der Auswertung des Ausdrucks E wird ein Wert des Typs geben T. Sollte weisen eine einheitlich niedrige Operationen mit dieser Art verbunden sind. Zum Beispiel die Menge (23, true, Montag) ist kein Typ, sondern (true, false), wenn sie ist, weil es einheitliche Verhalten unter die logischen Operationen der Negation, Konjunktion und Disjunktion Ausstellungen und {..., -2, -1, 0, 1, 2, ...) zu, weil alle Werte ein einheitliches Verhalten zu zeigen unter den Operationen Addition, Multiplikation, etc.. Primitive Datentypen Primitive Typen sind diejenigen, die von atomaren Werten zusammengesetzt sind und daher nicht in einfachere Werte zerlegt werden. Wir werden die folgenden Bezeichnungen für die primitive Typen: Valor_de_verdad weiterhin (true, false) Ganze {..., -2, -1, 0, 1, 2, ...) Real {..., -1,0, ..., 0,0, ..., 1.0, ...) {..., Zeichen 'a', 'b', ..., 'z', ...) Aufzählungstyp. Monate (Jan, Feb, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember) eine Sub-Baureihe. Zum Beispiel den Teilbereich Typ 28 .. 31 die Werte (28, 29, 30, 31). Ein interessanter Punkt ist die Mächtigkeit einer Menge (oder Typs). Wir schreiben # S für deut-chung der Anzahl der unterschiedlichen Werte in S. Zum Beispiel: # # valor_de_verdad = 2 Monate = 12 # integer = 2 x MAXINT + 1 (in Pascal) Typen A composite type Verbindungen (oder strukturierten Datentyp) ist eine Art, deren Werte aus oder auf einfache Werte strukturierten . Programmiersprachen unterstützt eine große Vari-schaft von Datenstrukturen: Tupel, Records, Arrays, Sets, Strings, Listen, Bäume, sequentielle Dateien, direkte Dateien, etc.. Kartesisches Produkt eine einfache Form der Komposition ist das kartesische Produkt Werte, wobei die Werte von zwei Typen (eventuell abweichend) sind gekoppelt ist. S x T ist die Menge aller geordneten Paare von Werten, wobei der erste Wert jedes Paar aus der Menge S und die zweite von T. Formal: S x T = ((x, y) / x? S, und? T) Die Mächtigkeit des kartesischen Produkts ist # (S x T) = S # # T x Mächtigkeit von einem Typ in der Höhe von Wertpapieren der gleichen zur Verfügung gestellt. Wir können Anregungen von den kartesische Produkt eines Registers Definition: Art Datum: Record m zu ziehen: Monat, d: 1 .. 31 Ende, das Datum geben Sie den folgenden Satz von Werten (Jan, Feb, ..., Dezember) x (1, 2, 3, ..., 31). Das 372 Paare der Form (Jan, 1) (2. Januar) ist ... (Feb, 1) ... (31. Dezember). Eine andere Art von disjunkte Vereinigung Zugehörigkeitswerte disjunkt sind Gewerkschaften, wo die Werte sind aus einer von zwei Typen getroffen (in der Regel anders aus). S + T ist die Menge der Werte, bei denen jeder Wert wird entweder von S oder T übernommen und ist gekennzeichnet (links oder rechts), um die Menge anzugeben getroffen wurde: S + T = (links x / x? S)? (der y / y? T) Die Kardinalität wird durch # (S + T) = S + # # T Typ precision = (Exakt, Ca) in der Rechtssache Satznummer = prec: Exakte Präzision: (Valente: Integer); ca.: (valReal: Real gegeben ) end Die Menge von Werten dieses Typs Integer x Real. Ihre Werte sind exakte {..., (-2), ist eine genaue (-1), ist eine genaue (0), ist eine genaue (1), ist eine genaue (2), ...)? Über {..., (-1,0), ... Ca. (0,0), ... Ca. (1,0), ... Mapping) Der Begriff der Abbildung oder Funktion von einem Set zum anderen ist sehr wichtig, in der Sprache der Programmierung. Betrachten Sie eine Funktion m, dass jeder Wert x in S mit einem Wert von T. Bezieht Die Werte von T heißen Bildern von x nach m und schreiben m (x). M: S? T ist eine Funktion von S in T. Wenn wir bedenken, S = (u, v) und T = (a, b, c). Zum Beispiel K (x) = (u? A, v? C) kann eine bestimmte Funktion von S in T. Mit den Bezeichnungen S? T definieren wir die Menge aller möglichen Funktionen von S nach T. S? T = (m / x? S? M (x)? T) Die Kardinalität wird durch # S gegeben? T = (# t) # S zum Beispiel ein Feld kann als eine Zuordnung zu verstehen: Array [S] von T Typ color = (rot, grün, blau); Pixel = array [color] von 0.1 Die Menge der Werte der Pixel-Array type = Farbe? (0, 1) =, wo Farbe (rot, grün, blau) Die Werte für die Pixel-Rate von acht Kombinationen gegeben. (rot? 0, grün? 0, blau? 0) (rot? 1 grün? 0, blau? 0) (rot? 0, grün? 0, blau? 1) (rot? 1 grün? 0, blau? 1) (rot? 0, grün? 1, blau? 0) (rot? 1 grün? 1, blau? 0) (rot? 0, grün? 1, blau? 1) (rot? 1 grün? 1, blau? 1) Funktion auch (n: Integer): Boolean; Start Par: = (n mod 2 = 0) End; Diese Funktion implementiert einen bestimmten mapping Integer? Und boolesche Werte sind: (0? True, ± 1? False, ± 2? True, ± 3? Falsch, ...) eine ungerade Funktion, die Kartierung durchgeführt anderen Integer? Boolean. Wenn eine Funktion übernimmt n-Werte als Parameter kann als ein einfaches Argument verstanden werden. Ein n-Tupel. Power Joint Stellen Sie sich eine Menge von Werten als S. Wir sind in den Werten, die einander sind, Teilmengen von S. Interessiert Die Menge aller Teilmengen nennt man die Kraft der S gesetzt und schreiben formal:? S = (s / s? S) Die grundlegenden Operationen sind eine Reihe von üblichen Operationen der Mengenlehre: Die Zugehörigkeit, Eingliederung, Vereinigung und Durchschnitt. Jeder Wert von S kann ein Mitglied oder nicht, einen bestimmten Satz? S. Und die Cardin-keit von der Macht der S gesetzt ist gegeben durch: (: S) = 2 # S Betrachten wir zum Beispiel die folgende Definition von Pascal ... Typ color = (rot, grün, blau); ConjPot = der Farbsatz Die Menge der Werte ist so Poset = "color ist die Menge aller Teilmengen von = Farbe (rot, grün, blau). Die folgenden 8: () (rot) (grün) (blau) (rot, grün) (rot, blau) (grün, blau) (rot, grün, blau) Ressourcen-Typen gilt als eine Art rekursive ein, dass der aus Werte des gleichen Typs und ist durch sich selbst definiert. Einer der rekursiven Typen sind Listen, die eine beliebige Anzahl von Komponenten, einschließlich keiner haben kann. Die Anzahl der Komponenten ist die Liste aufgerufen. Eine Liste ist homogen, wenn alle Elemente der sie den gleichen Typ sind. Angenommen, wir wollen eine Art, deren Werte sind Listen von Zahlen zu definieren. Wir definieren die Liste der ganzen Zahlen als ein Wert, der leer sein kann oder ein Paar, bestehend aus einer ganzen Zahl (Kopf) und eine Liste von Zahlen (Schwanz). Diese Definition ist rekursiv, und kann so geschrieben werden: Lista_enteros = Einheit + (Integer x Lista_enteros) Die Mächtigkeit einer rekursiven Typs ist unendlich. Deshalb können wir nicht alle aufzählen, die Werte für eine rekursive Typ. Control Group verzinslichen Wertpapieren erlaubt es dem Programmierer Typen beschreiben die Daten. Verhindert auch Programme, die Operationen wie sinnlos vermehren einen Charakter wirklich wert. In diesem Sinne ist die High-Level-Sprachen aus niedrigen auszeichnen-Ebene, wo die Typen Byte und Wort. Um die Durchführung der Maßnahmen ohne Sinn für die Sprache, die Umsetzung zu verhindern muss Typprüfung auf die Operanden durchzuführen. In einer statisch typisierte Sprache ist, hat jede Variable Parameter und einem festen Zinssatz ist cho-do von den Programmierer. Deshalb ist die Art der jeder Ausdruck kann gefolgert werden, und die Typprüfung wird beim Kompilieren getan. Die meisten High-Level-Sprachen sind statisch typisiert. In einem dynamisch typisierte Sprache ist, haben die Werte nur einen festen Zinssatz. Eine Variable oder Parameter haben keinen Typ bezeichnet, kann aber verschiedene Werte in verschiedenen Typ MO-gen nehmen. Dies bedeutet, dass der Typ der Operanden sollte sich direkt vor einer Operation durchgeführt Zaren Laufzeit geprüft. Lisp und Smalltalk ist dynamisch typisierte Sprachen. Die dynamische Typisierung bedeutet, dass die Durchführung eines Programms ein wenig langsamer, da die Kontrolle der notwendigen Typen zur Laufzeit und wird auch bedeutet, dass jeder Wert mit ihrer Art so markierten Felder müssen auf die Überwachung der Preise zu ermöglichen.Diese zusätzliche Zeit und Raum sind in einem statisch typisierte Sprache zu vermeiden, da alle Typprüfung bei der Kompilierung erfolgt. Ein großer Vorteil der statische Typisierung ist die Gewissheit, dass Typfehlern garantiert werden vom Compiler erkannt werden. Der Vorteil der dynamischen Typisierung ist seine Flexibilität. Gleichwertigkeit der Arten für eine Operation, die einen Operanden vom Typ erwartet, T. Nehmen wir an, dass in der Tat nicht in Frage zu betreiben ist vom Typ "T". Die Sprache sollte prüfen, ob der Typ T ist gleichbedeutend mit T '(T: T "). Strukturelle Äquivalenz: T? T 'genau dann, wenn T und T' sind die gleichen Werte. Durch strukturelle Äquivalenz wird Typprüfung durch den Vergleich der Strukturen der Typen T und T '. (Nicht notwendig, und in der Regel unmöglich, alle aufzuzählen Werte). Die folgenden Regeln zeigen, wie können wir entscheiden, ob T? T ', definiert in Bezug auf die kartesischen Produkte, disjunkte Gewerkschaften und Zuordnungen. O Wenn T und T 'sind zwei primitive Typen. Dann ist T? T 'genau dann, wenn T und T' sind identisch. Beispiel: Integer? Integer. O Wenn T = A x B-und T '= A' x B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B '. Beispiel: Integer x Charakter? Integer x Zeichen oder, wenn T = A + B-und T '= A' + B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B oder A? B 'und B? A '. Beispiel: Integer + Zeichen? Integer oder Character + Wenn T = A? B-und T '= A'? B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B '. Beispiel: Integer? Charakter? Integer? Zeichen oder Andernfalls ist nicht gleichbedeutend mit T T '. T Namen entsprechen? T 'genau dann, wenn T und T "wurden an der gleichen Stelle definiert. Betrachten wir zum Beispiel die folgende Definition von Pascal. Typ T1 = file of Integer; T2 = file of Integer; var F1: T1, F2: T2; beginnen Prozedur p (var F: T1); ... Procedure call "p (F1)" Typprüfung geschieht, weil die Art der F-und F1-äquivalent sind. Aber das "p (F2)" Typprüfung wird fehlschlagen, weil die Typen F und F2 gleichwertig sind; T1 und T2 sind in verschiedenen Erklärungen definiert. Typ Vollständigkeit Prinzip "Die Vorgänge, die in Wertpapieren erzielt werden können aus der Art sollte nicht ar-bitrarias zu ihnen." Dieser Grundsatz sollte helfen, diese Sprachen nicht über Beschränkungen für Operationen, die möglicherweise für bestimmte Arten und somit die Macht einer Programmiersprache. Allerdings könnte eine Einschränkung durch andere, widersprüchliche, Design-Überlegungen und so weiter gerechtfertigt werden kann. Jede Art Systems Konstante, Variable, Funktion und das Ergebnis der formalen Parameter müssen mit einem bestimmten Typ deklariert werden. Dieses System wird als monomorph Typen, und macht es leicht, um Preise zu kontrollieren. Ist unbefriedigend, vor allem für das Schreiben von wiederverwendbarer Software. Viele Standard-Algorithmen (wie zB Sortier-Algorithmen) sind von Natur aus Normen, in dem Sinne, dass nur auf die Art von Werten, die verwaltet werden abhängen. Die entsprechenden Konzepte sind überlastet, die die Fähigkeit eines Bezeichners oder Betreiber verschiedene Abstraktionen bezeichnen gleichzeitig; Polymorphismus FISMA, die über die Abstraktionen, die sich gleichmäßig auf Werte von verschiedenen Typen und Vererbung, die auf die Tatsache bezieht betreiben ist, dass Subtypen Supertypen vererbten Eigenschaften. Monomorphismus A monomorph Typ ist ein, wo die Konstanten, Variablen, Parameter und re-parieren der Funktion haben, einen einzigen Typ. Das Pascal-Typ ist im Gründe monomorph. Überladen bedeutet, dass eine (kleine) Anzahl unterschiedlicher Abstraktionen sind mit der gleichen Kennung zugeordnet, müssen diese Abstraktionen nicht verwandten Arten, die nicht unbedingt führen ähnliche Operationen in ihren Parametern. Polymorphismus ist eine Eigenschaft von einem einzigen Abstraktion, die ein (breit) hat Reihe von verwandten Arten, betreibt die einheitliche Abstraktion auf ihre Argumente, unabhängig von ihrer Art.Ein Bezeichner oder Operator-Überladung soll überlastet werden, wenn sie gleichzeitig zwei oder mehrere verschiedene Funktionen bezeichnet. Im Allgemeinen ist der Aufwand nur dann zulässig, wenn jeder Funktionsaufruf ist eindeutig, wo die Funktion aufrufen können eindeutig identifiziert werden können mit dem Typ-Information erhältlich. Beispiel 1: Der Betreiber gleichzeitig '-' steht für fünf verschiedene Funktionen. ? Denial-of-Ganzzahl (Integer-Funktion? Integer)? Denial-of-real (in Abhängigkeit von Real? Real)? Differenz der Zahlen (eine Funktion von Integer Integer x: Integer)? Real Differenz (in Abhängigkeit von Real x Real? Real)? Differenz von Mengen (eine Funktion von x Set Set? Set) Es gibt zwei Arten von Gemeinkosten:? Overload unabhängig von ihrem Kontext (wie in Pascal und ML) verlangt, dass S1 und S2 unterschiedlich sind. Betrachten Sie die Funktion rufe ich (E). Wenn der aktuelle Parameter ist vom Typ E S1, dann habe ich f1 bezeichnet und das Ergebnis ist vom Typ T1, wenn E ist vom Typ S2, so ist i f2 und das Ergebnis ist vom Typ T2. Mit kontextabhängigen Überlastung der Funktionsaufruf ist eindeutig durch die aktuellen Parameter identifiziert. ? Overload kontextabhängig (wie in Ada): Erfordert, dass S1 und S2 unterschiedlich sind oder dass T1 und T2 verschieden sind. Wenn S1 und S2 unterschiedlich sind, um die Funktion aufzurufen, um sich zu identifizieren "Früher Sie. Wenn S1 und S2 nicht unterscheidbar sind, aber T1 und T2 verschieden sind, muss der Kontext berücksichtigt werden, um die Funktion zu identifizieren zu nennen. Betrachten Sie die Funktion rufe ich (E), wobei E den Typ S1 (? S2) ist. Bei Aufruf der Funktion erfolgt in einem Kontext, wo es wird erwartet, ein Ausdruck vom Typ T1, in-Tonces ich f1 bezeichnen, wenn die Funktion Aufruf erfolgt in einem Kontext, wo Sie erwarten eine Ex-pression des Typs T2, dann Ich muß bezeichnen f2. Mit kontextabhängigen Überlastung ist mög-lich, um Ausdrücke, in dem Aufruf der Funktion nicht eindeutig identifiziert werden kann, sondern die Sprache muss eine solche mehrdeutige Ausdrücke verbieten zu formulieren. Polymorphismus in einer polymorphen Typ-System, können wir schreiben Abstraktionen, die gleichmäßig arbeiten auf Argumente einer Vielzahl von verwandten Arten. In ML polymorphe Abstraktionen ist einfach eine polymorphe Funktion zu definieren. Der Schlüssel liegt in der Art solcher Funktionen mit variablem Zinssatz festzulegen, und stattdessen bestimmter Arten. Beispiel 1: Die folgende Funktion akzeptiert ein Paar von ganzen Zahlen und gibt ihre Summe: fun sum (x: int, y: int) = x + y Diese Funktion ist vom Typ Integer Integer x? Integer. Der Aufruf der Funktion sum (13, 21) liefert 34. Parametrisierten Typen A parametrisierten Typ ist eine Art, die andere (n) Art (en) als Parameter. Zum Beispiel, in Pas-cal-Datei Art, Satz und Array. Zum Beispiel können wir definieren, der char-Datei oder eine Datei von Ganzzahl. Wir denken, dass Datei ist eine parametrisierte Typ des einreiche?. Ein Zwang Zwang ist eine implizite Zuordnung zwischen den Werten eines bestimmten Typs auf die Werte eines anderen Typs. Typische Beispiele sind Zuordnungen coersion zu reellen Zahlen und Zuordnung von Zeichen in Strings eines Zeichens integer. Ein Zwang wird automatisch durchgeführt, wenn der Kontext es erfordert. Dies wird durch Pascal Ausdruck sqrt (n), wo die sqrt Funktion erwartet dargestellten Argumente, die dem tatsächlichen Typ, aber n ist integer. Es besteht eine offensichtliche Abbildung von Integer zu Real: {..., -2? -2,0, -1? -1,0, 0? 0,0, 1? 1,0, 2? 2,0, ...) so dass der Ausdruck sqrt (n) ist legal. Subtypen und Vererbung Wenn wir einen Typ T prüfen, wie eine Reihe von Werten, könnten wir darüber nachdenken, Gebäude Teilmengen von T. Wir rufen jede Teilmenge von T-Subtyp von T. Im Zusammenhang mit jedem Typ T, gibt es eine Reihe von Operationen, die für die Werte der T. Jede dieser Maßnahmen gelten auch für die Wertpapiere eines Subtyps von T. S Wir denken, dass alle Operationen mit S T. Verbundenen erbt Ausdrücke Ein Ausdruck ist ein Ausdruck, der ausgewertet werden, um einen Wert zurückgeben.Ausdrücke können auf verschiedene Weise gebildet werden. Grundlagen sind: entweder wörtlich oder Aggregate oder Funktionsaufrufe oder bedingte Ausdrücke oder Konstanten und Variablen Zugang zu Literalen ist die einfachste Art des Ausdrucks, bedeutet sie einen festen Wert und eine Art Manifest. Zum Beispiel: 6356 3.1416 '%' 'See' Und sie bezeichnen eine ganze Zahl, eine echte Persönlichkeit und einen String bzw.. Aggregate ist ein Ausdruck, ein Composite-Wert aus seiner Komponenten-Werte Konstrukte. Die Komponente Werte sind durch die Auswertung Teilausdrücke bestimmt. Function Calls Ein Funktionsaufruf berechnet ein Ergebnis aus der Anwendung eine Abstraktion Funktion, um ein Argument. Ein Funktionsaufruf hat in der Regel die Form F (pa), wo F bestimmt die Funktion angewendet werden, und pro Jahr die aktuellen Parameter 'bestimmt, die Argumente, die übergeben wird. Bedingte Ausdrücke Ein bedingter Ausdruck hat mehrere Teilausdrücke von denen nur einer wird genommen bewertet werden. Nicht alle Sprachen zur Verfügung bedingte Ausdrücke ist nicht das Gleiche als bedingte Befehle. Zum Beispiel bietet der C-Sprache eines bedingten Ausdrucks: strNum = (a> 0? "Positiv": "negative") konstanten und variablen Zugang Ausdrücke Ein Mann hat mit Zugang zu Konstanten und Variablen, die durch ihre Namen nicht . Zum Beispiel: const pi = 3,1416; var r: real; In dem Ausdruck 2 * Pi * r gibt es einen Zugang, den konstanten Wert pi dem der Wert 3,1416 und r Variable, die den Wert enthalten kann Renditen Renditen hat das gleiche. Variablen und Updates in Informatik, ist eine Variable, ein Objekt, das einen Wert enthält, kann dieser Wert kontrolliert und aktualisiert Schwimmen so viel wie gewünscht. Die bekannteste einen Programmierer sind die Variablen, die erstellt werden und in einem bestimmten Programm verwendet, solche Variablen sind in der Regel durch die Zuordnung aktualisiert, und sind von kurzer Dauer. Allerdings sind die Dateien und Datenbanken ebenfalls variabel. Diese sind in der Regel langlebige, die unabhängig von einem bestimmten Programm. Ein Lagerhaus ist eine Sammlung von Zellen. Jede Zelle hat einen aktuellen Status: reserviert oder vorbehaltlos. Jede Zelle hat einen Inhalt jetzt still, die einen gespeicherten Wert oder nicht definiert ist. Beispiel: Betrachten Sie die Variable n in einer Pascal-Programm. 1. Die Deklaration von Variablen (var n: Integer) führt zu einer Zelle nicht ändern Sie den Status für reservierte und permanenten Wandel, um den Inhalt vorbehalten. 2. Die Zuordnung n: = 0 geändert, um den Inhalt der Zelle durch n bezeichnet Null 3. Der Begriff n +1 gibt einen mehr als der Inhalt der Zelle durch n bezeichnet Die Zuordnung n: = n +1 addiert man zu dem Inhalt der Zelle. 4. Am Ende des Blocks mit der Erklärung von n, kehren wir den Zustand der Zelle durch n nicht bezeichnet-vorbehalten. Composite-Variablen Der Wert eines zusammengesetzten Typ besteht aus Komponenten, die separat untersucht werden mately. Außerdem besteht eine Variable eines zusammengesetzten Typ von Komponenten, die auch unterschiedlich sein und den Inhalt dieser Komponenten untersucht werden können und separat aktualisiert werden. Die Lebensdauer einer variablen Zeitspanne zwischen dem Anlegen und Löschen heißt Lebensdauer einer Variablen. Globale und lokale Variablen Eine lokale Variable ist einer, der in einem Block deklariert wird und dass nur in diesem Block verwendet werden (z. B. Ein Block ist der Körper eine Funktion oder Prozedur in Pascal). Eine globale Variable ist eine, die in der äußersten Block eines Programms erklärt wird. Stack-Variablen (Hügel) Diese Variablen können erstellt werden und jederzeit gelöscht werden. Sind anonym und werden durch einen Befehl erstellt. Sie werden durch einen Zeiger zugegriffen wird. Persistent persistente Variablen Eine Variable ist ein, deren Lebensdauer erstreckt sich über die De-Aktivierung eines Programms über die Befehle Ein Befehl ist ein Satz von Programm ausgeführt werden, um Variablen zu aktualisieren.Es gibt verschiedene Arten von Befehlen ist ein Befehl, springt keine Wirkung (überspringen). Das bedeutet dann, wenn E C anderes überspringen Aufgaben haben die typische Form V: = E. Aktualisieren Sie die Variable V mit dem Wert durch Auswertung des Ausdrucks E. Zurück Gilt ein Verfahren fordert ein Verfahren Abstraktion Parameterliste. Sequentielle Befehle Die Reihenfolge, in der Befehle ausgeführt sind, ist die Aktualisierung der Zugriffe auf Variablen wichtig. Befehle Sicherheiten Die Reihenfolge der Befehle ausgeführt werden, ist irrelevant. Ej: m: = 7, n: = n +1. Bedingte Befehle hat eine Reihe von Unterbefehle von denen genau eine ausgewählt werden, zu laufen. Eine typische Verwendung ist das, wenn. (Groß-) Kommandos AKA iterative Schleife. Hat eine Gruppe von Unterbefehle immer wieder mit einer Art von Satz, der bestimmt, wann die Iteration beendet ausgeführt werden. (für wiederholen, while) Ein Konzept für alle Programmiersprachen der Programmierer ist die Fähigkeit, zu binden oder in Verbindung mit Identifikatoren Einrichtungen wie Konstanten, Variablen, Prozeduren, Funktionen und Typen Link. Gute Wahl von Bezeichnern hilft, Programme leichter verständlich und einfach zu interpretieren. Darüber hinaus verbindet eine Kennung mit einer Einrichtung, an einem Ort und verwenden Sie dann die Kennung, die mit dieser Stelle an anderer Stelle verweisen, so dass die Programme sehr flexibel. Verbindungs-und Bereiche können wir sagen, dass eine Aussage eines Verbandes oder einer Verbindung zwischen den angegebenen Kennung und produziert das Unternehmen bezeichnet. Ein Umfeld oder Kontext ist eine Sammlung von Links. Anwendungsbereich In der Regel hat jede Aussage zu einem gewissen Grad, dass mit dem Teil des Programms, an dem die Erklärung wirksam zu tun hat. Ein Block Block-Struktur des Programms ist ein Satz, den Geltungsbereich einer Erklärung, dass die beliebtesten Bausteinstruktur enthalten können definiert, ist die verschachtelte wobei jeder Block in einem anderen Block verschachtelt werden können? Die Blöcke können von der Prozess-und Funktion abstrahiert werden, sondern kann auch Blöcke von Befehlen. ? Eine noch stärkere Konzept ist die Ausdrücke zu blockieren. Ein Ausdruck, der ausgewertet wird, um einen Link mit einer ID, die nur im Block verwendet werden, in dem Sie festlegen wird, herstellen. Geltungsbereich und Sichtbarkeit Bezeichner kann in zwei unterschiedlichen Kontexten. Auftreten der Link wird der Punkt, an dem ein Bezeichner deklariert ist anzurufen, und rufen Sie jedes Auftreten der Anwendung Ent-stehung des Griffs, wenn es das Unternehmen, auf die er gebunden bezeichnet. Zum Beispiel: Das Auftreten von n const n = 7 ist ein verbindliches Auftreten, wobei n bis 7 gebunden. Nachfolgende Erscheinungen von n in den Ausdruck n * (n +1) sind Ereignisse der Anwendung, wobei n die 7. Statische und dynamische Link Terminologie statische und dynamische Bindung muss mit der Zeit zu tun, dass wir entschlossen Auftreten von Kennung entspricht ich einen Link, um das Auftreten der Anwendung von I. Bei der statischen Verknüpfung können wir tun dies auf der Kompilierung. Bei der dynamischen Verknüpfung wir langsam es erst zur Laufzeit. Bei der frühen Bindung Auftreten können wir feststellen, dass ich einen Link entspricht einer gegebenen Vorkommen der Anwendung von R, nur für den Programm-Code zu untersuchen, finden den kleinsten Block, enthält ein Vorkommen der Anwendung von I, die ebenfalls ein Auftreten von I. Binding Der Zusammenhang zwischen dem Auftreten der Anwendung und Verknüpfung ist behoben. Mit dem Auftreten von Dynamic Link I-Link, der ein Auftreten der Anwendung von I entspricht, hängt von der dynamischen Ablaufsteuerung des Programms. Das Unternehmen mit I bezeichnet ist die Erklärung habe ich zuletzt in der aktuellen aktiven Block. Abstrakt Abstrakt ist eine Art zu denken, in denen wir über die allgemeine Ideen konzentrieren, anstatt ihren spezifischen Ausprägungen dieser Ideen in der Programmierung, der Abstraktion, die Unterscheidung zwischen bezieht sich (a), was ein Teil eines Pro-gramm und (b ), wie es umgesetzt wird.Wenn Sie eine Prozedur aufrufen konzentrieren wir uns nur auf das, was macht dieses Verfahren nur dann, wenn wir ein Verfahren, wie die Umsetzung wird es uns interessant zu schreiben. Art der Abstraktion definieren eine Abstraktion als eine Einheit, die eine Berechnung enthält. Abstrakt Eine Abstraktion Funktion Funktion umfasst einen Ausdruck zu bewerten und bei Aufruf liefert einen Wert als Ergebnis. Mitglied der Abstraktion stellt nur das Ergebnis, nicht die Stufen, auf denen die Funktion ausgewertet wird. Eine Abstraktion Funktion ist unabhängig von einer Funktionsdefinition gebaut: Funktion I (FP1, ..., FPN): T, B Abstraction Eine Abstraktion des Verfahrens Verfahren beinhaltet einen Befehl ausführen, und wenn er aufgerufen wird Variable aktualisieren . Der Nutzer der Abstraktion der Fall stellt fest, und nicht nur die Updates die Schritte, die gemacht wurden eine prozedurale Abstraktion ist in Pascal gebaut, aus der Festlegung des Verfahrens: Verfahren I (FP1, ..., FPN) ; B Das Prinzip der Abstraktion als Zusammenfassend kann man sagen? Eine Abstraktion ist eine Abstraktion Funktion auf einem Ausdruck. Es bedeutet, eine Abstraktion Funktion, die eine Stelle, die ein Ausdruck ist, und ein Funktionsaufruf ist ein Ausdruck, der einen Wert, um den Körper der Abstraktion Funktion zu beurteilen. ? Eine prozedurale Abstraktion ist eine Abstraktion eines Befehls. Das bedeutet, dass ein ABS-Traktion Verfahren hat einen Körper, der einen Befehl und einen Prozeduraufruf ist ein Befehl, der Variablen, die den Körper des prozedurale Abstraktion führen zu aktualisieren. Sie können syntaktische Abstraktionen über jede Art zu bauen, sofern diese Sätze eine Art der Berechnung angegeben sind. ? Eine Auswahl der Abstraktion ist eine Abstraktion über einer Variablen zuzugreifen. Abstrakt bedeutet, dass eine Auswahl einer Einrichtung, die eine variable Zugang hat, und ein Aufruf, den Zugang Selektor ist eine Variable, die einen Verweis auf eine Variable zurück in die Bewertung der Stelle der Abstraktion der Auswahl wird. Parameter an die Macht der Begriff der Abstraktion nutzen, müssen wir parametrisierte Abstraktionen über die Werte, mit denen sie tätig ist. Ein Bezeichner, der verwendet wird, um eine Abstraktion bezeichnen als ein Argument der formalen Parameter pa. Ein Ausdruck oder Phrase, die als Argument übergeben wird, wird als AC-TUAL Parameter beispielsweise 1,0 oder a + b in fordert Umfang (1,0) und cicunf (a + b). Ein Argument ist der Wert, zu einer Abstraktion Mechanismus übergeben werden kann, um eine Kopie copy-Mechanismus ermöglicht Werte kopiert werden sollen und / oder eine Abstraktion, wenn sie aufgerufen wird. Die formalen Parameter X eine lokale Variable für die Abstraktion. Der Wert X ist, um den Eintrag der Abstraktion kopiert und / oder Kopie des X (auf eine lokale Variable) mit dem Ausgang der Abstraktion. Da X ist eine lokale Variable befindet sich am Eingang zu den abstrakten erstellt und bei der Abfahrt entfernt. Ein Parameter-Wert ist eine lokale Variable X befindet sich am Eingang der Abstraktion erstellt und erhält den Wert des Arguments. Da X fungiert als eine lokale Variable kann den Wert überprüft und aktualisiert werden. Allerdings hat jeder Aktualisierung von X keine Auswirkungen auf alle nicht-lokalen variablen. Ein Ergebnis-Parameter ist das Gegenteil der oben genannten. In diesem Fall muss das Argument, ein Verweis auf eine Variable. Auch eine lokale Variable X erstellt wird, aber ihren ursprünglichen Wert nicht definiert ist. Am Rande der Abstraktion der endgültige Wert von X ist die Variable Argument zugewiesen. Diese beiden Mechanismen können kombiniert werden, um das Ergebnis auf das Value-Ergebnis geben Parameter. Das Argument, wieder muss eine Variable Referenz. Am Eingang der Abstraktion ist die lokale Variable X erstellt und mit dem aktuellen Wert der Variablen Argument.Am Ausgang wird der endgültige Wert von X auf die Variable Argument wieder zugeordnet. Mechanismus, durch Definition Dieser Mechanismus erlaubt die formalen Parameter X wird direkt auf das Argument zu verknüpfen. Daraus ergibt sich eine einfache und einheitliche Semantik für Parameterübergabe beliebigen Wert in der Programmiersprache (nicht nur First-Class-Werte). ? Im Falle eines konstanten Parameter, ist das Argument einen Wert (erste Klasse). X ist das Argument Wert für die Aktivierung der Aufforderung Abstraktion gebunden. ? Im Falle eines variablen Parameter (oder Referenz), ist das Argument, ein Verweis auf eine Variable. X ist das Argument Variable bei der Aktivierung der Aufforderung Abstraktion gebunden. Daher Aktualisierung oder Überprüfung von X ist eigentlich eine Aktualisierung oder Überprüfung des Arguments. ? Im Falle eines Verfahrensfehlers Parameter, ist das Argument, eine prozedurale Abstraktion. X ist das Verfahren (Argument) für die Aktivierung der Aufforderung Abstraktion gebunden. Daher ist jeder Aufruf von X ist wirklich ein Aufruf der Prozedur (Argument). ? Wenn ein Parameter ist funktional, ist das Argument, eine Abstraktion Funktion. X ist die Funktion (Argument) für die Aktivierung der Aufforderung Abstraktion gebunden. Daher ist jede X-esis ist wirklich eine Funktion aufrufen (Argument). Ein Nachteil der variablen Parameter ist die Möglichkeit, Aliase erstellen. Dies geschieht, wenn zwei oder mehr IDs gleichzeitig auf die gleiche Variable verbunden sind. Diese neigt dazu, dass Programme mehr schwer zu verstehen. Reihenfolge der Bewertung Die Bewertung der Bestellung ist genau Bezug nimmt, wenn die jeweils aktuelle Parameter beurteilt wird, wenn Sie eine Abstraktion nennen. Grundsätzlich gibt es zwei Möglichkeiten:? Bewerten Sie die aktuelle Parameter an der Stelle des Anrufs. ? Delay Evaluierung bis das Argument tatsächlich genutzt werden. Der erste Auftrag der Bewertung heißt "Evaluation Ungeduldige" (oder applikativen Bewertung Reihenfolge). Aktuelle Parameter wird einmal ausgewertet, und in der Tat das Ergebnis erhält jedes Vorkommen des formalen Parameters. Der zweite Auftrag der Bewertung heißt "Evaluation in der normalen Reihenfolge. Nicht sofort wertet die aktuellen Parameter, wobei jedoch die aktuellen Parameter für jedes Auftreten des formalen Parameters. Die Funktion sqr soll streng sein, was bedeutet, dass ein Aufruf dieser Funktion können bewertet werden, wenn ihre Argumente ausgewertet werden können. Cand Funktion gilt als nicht streng in seinem zweiten Argument, das bedeutet, dass ein Aufruf dieser Funktion kann manchmal zu beurteilen, auch wenn das zweite Argument nicht ausgewertet werden können werden. Dies wird als Lazy Evaluation (lazy evaluation), ist das Argument nur ausgewertet, wenn zum ersten Mal (die werden niemals, wenn die Funktion nicht eingeschränkt wird) benötigt. Ein Paradigma besteht aus den allgemeinen theoretischen Annahmen, Gesetze und Techniken für die Anwendung auf die Mitglieder einer bestimmten wissenschaftlichen Gemeinschaft zu nehmen. Es ist ein grundlegendes Modell oder Regelung, dass unsere Ansichten in Bezug auf ein bestimmtes Thema organisiert. Die Paradigmen Grenzen setzen, um Probleme innerhalb sie zu lösen, und damit zu verbessern oder neue Lösungen und Erfahrungen, die diese Filter sind bis an die Grenzen, Vorstellungen oder Überzeugungen angepasst. Programming Paradigmen stellen eine besondere Herangehensweise und Philosophie für die Erstellung von Software. Der Imperativ Paradigma gilt als die häufigste und vertreten ist, z. B. C, Pascal, COBOL. Die objektorientierte Paradigma. Eine vollständig objektorientierte Sprache Smalltalk. Die funktionale Paradigma wird von der LISP Familie von Sprachen vertreten. Ein weiterer Vorschlag wäre zu Haskell. Die logische Paradigma, ist ein Beispiel Prolog. Paradigm eingeführt Fortran-Befehle und sub-symbolische Ausdrücke mit Schalter.Wurde das Konzept der COBOL-Daten Beschreibung. Die Algol-60 wurde das Konzept der Block-Struktur, Variablen, Prozeduren etc.. Er beeinflusste viele spätere Sprachen so stark, dass sie genannt wurden Algol-ähnliche Sprachen. Pascal war die Sprache Algol Stil, mehr populär geworden, weil es einfach ist, systematisch und effizient umgesetzt werden. Beschreibt die Programmierung des Programms in Bezug auf Staat und Aussagen, dass der Wandel des Staates. Imperative Programme sind eine Reihe von Anweisungen, die der Computer sagen, wie man eine Aufgabe zu erledigen. Die Rezepte und Listen der Review-Prozesse, während keine Software, werden auch bekannte Konzepte wie imperativen Programmierung Stil, ist jeder Schritt eine Anleitung. Imperative Programmierung wird so genannt, weil sie auf Aussagen beruht, dass Update-Variablen bei der Lagerung. Steht in engem Zusammenhang mit der realen Welt zu modellieren. Es ist im Wesentlichen dadurch gekennzeichnet, da die Anweisungen, aus denen es nacheinander in einer vorgegebenen Reihenfolge ausgeführt werden. Das Grundgerät wird in der Ausführung des Programms oder der ausführbaren Anweisungen, die in einer Reihe von Modulen oder Routinen nach einer hierarchischen Organisation verteilt unterteilt ist eingestellt. Bei dieser Art der Programmierung die Daten ungeordnet, sind bloße Anhängsel der Programme und bieten nur Werte, die Berechnungen dienen. Ein Programm in der Wurzel der Hierarchie wird als das Hauptprogramm und andere sind mit dem Namen der Unterprogramme, Subroutinen, Funktionen oder Verfahren bekannt. Hinsichtlich der Daten, abhängig von der Sprache kann es sich um globale, auf das alle Programme in der Hierarchie oder lokale, geeignet nur durch das Programm zu dem es gehört. Innerhalb dieser Art der Programmierung können wir zwei Bereiche: die strukturierte Programmierung oder Programmierung ohne GOTO: hat mehrere Vorteile in der Leichtigkeit, der Modularisierung, Dokumentation und Wartung von Programmen zu finden, Programmierung unstrukturierten unbedingte Sprünge, die die Durchführung des Programms zu erlauben durch GOTO Anweisungen. Objekt-orientierte Paradigma ist das Paradigma, das immer beliebter in den letzten Jahren ist. Die objektorientierte Programmierung ist aus den Begriffen von Simula, einer anderen Sprache Algol Stil eingeführt, abgeleitet. Smalltalk ist für Klassen der Objekte, ein Objekt ist eine Variable, die nur durch die damit verbundenen Operationen zugegriffen werden kann. Die Objekte sind Unternehmen, die staatliche kombinieren (dh Daten) und Verhalten (dh, Verfahren oder Methoden). Die objektorientierte Programmierung ein Programm, ausgedrückt als eine Menge von diesen Objekten, die miteinander kommunizieren, um Aufgaben. Prozedurale Sprachen: Schreiben Sie Funktionen und Daten gehen dann zu ihnen. Objektorientierte Sprachen definieren Objekte mit Daten und Methoden und dann Nachrichten an Objekte, sagen, dass diese Methoden selbst gemacht. Funktionale Paradigma auf Lambda-Kalkül basiert (oder?-Kalkül), Alonso Kirche. LISP war die erste Sprache ganz auf die Lambda-Kalkül beruht. Lisp in seiner reinen Form, ist ganz auf die Funktionen auf den Listen und Bäumen auf. Moderne und funktionelle Sprache, behandeln Funktionen als First-Class-Werte und auch ein fortschrittliches System zu integrieren. Die Reihenfolge von Berechnungen durch das Programm durchgeführt würden ausschließlich durch Umschreiben breitere Definitionen immer konkreter definiert und geregelt. Programme in einer funktionalen Sprache geschrieben werden ausschließlich von Funktionsdefinitionen bestimmten Eigenschaften wie referentielle Transparenz überprüft gemacht werden (die Bedeutung eines Ausdrucks hängt nur von der Bedeutung seiner Teilausdrücke).Es gibt keine Variablenzuweisungen. Mangel an strukturierten Konstrukte wie Sequenz oder Iteration (Rekursion nur) zwischen rein funktionalen Sprachen: Haskell Miranda Hybrid Funktionale Sprachen: Scheme, Lisp OCaml Standard ML (die beiden letzteren, die Nachkommen der Sprache ML). Eine logische Paradigma Programmiersprache ist auf eine Teilmenge der mathematischen Logik. Der Computer ist so programmiert, dass Beziehungen zwischen den Werten schließen die Ausgabe Werte aus Input-Werte zu berechnen. Prolog-Logik-Programmierung populär gemacht und ist eher schwach und ineffizient, sondern wurde geändert, um neue Funktionen hinzuzufügen nicht logisch, nutzbar zu machen als Programmiersprache. Die meisten dieser Sprachen sind auf Prädikatenlogik beruht. Definieren Sie Eigenschaften von Objekten in dem Referenz-Domänencontroller und die Beziehungen zwischen ihnen durch Formeln, die normalerweise verwendet werden, Auswirkungen auf Anschluss. Oriented Paradigm Events Die Event-Driven-Programmierung ist ein Paradigma, in dem sowohl die Struktur und Umsetzung der Programme werden durch die Ereignisse bestimmt, die im System auftreten oder dass sie verursachen. Es wird dem Benutzer-oder was auch immer Sie das Programm, das den Fluss der sie lenkt tätig sind. Aus anderen Initialisierungen und erste Code und dann wird das Programm blockiert, bis ein Ereignis eintritt durchgeführt werden. Mausklick. Ankunft einer Nachricht über das Netzwerk. Aspect Oriented Programming (AOP) ist ein Programmier-Paradigma relativ reciente.Entre die Ziele des POA vorgeschlagen werden, vor allem die Begriffe zu trennen und die Abhängigkeiten zwischen ihnen zu minimieren. Mit dem ersten Tor von jeder Entscheidung verfolgt wird an einem bestimmten Ort und nicht von der Anwendung verstreut. Mit dem zweiten ist es, die verschiedenen Elemente in einem Programm beteiligt zu entkoppeln. Seine Leistung hätte folgende Vorteile verbunden: weniger verschlungenen Code, natürlicher und leichter an die Vernunft über reducido.Mayor Konzepte, da sie getrennt sind und die Abhängigkeiten zwischen ihnen sind mínimas.Un Code leichter zu debuggen und einfacher zu verwalten. Sie erhalten eine große Anzahl von Änderungen zu der Definition eines Themas mit einem minimalen Auswirkungen auf otras.Se hat einen Code mehr wieder verwendbar und kann angedockt werden und abgedockt, wenn notwendig. Werte und Typen namens Wert auf etwas, das evaluiert werden können, gespeichert, in eine Datenstruktur als Argument an eine Prozedur oder Funktion, als Ergebnis einer Funktion zurückgegeben und so weitergegeben übernommen. Mit anderen Worten, ist ein Wert, jede Einheit, die während einer Berechnung besteht. Zum Beispiel in Pascal finden wir die folgenden Werte: primitive Werte (Wahrheitswerte, Zeichen aufgeführt sind, Zahlen und Realen) Wertpapiere Verbindungen (Records, Arrays, Sets und Dateien) Zeiger Verweise auf Variablen und Funktionen Abstraktion Verfahren. Ein Typ wird eine Reihe von Werten. Wenn wir sagen, dass v ein Wert vom Typ T ist, bedeutet es einfach, dass v? T. Wenn wir sagen, dass ein Ausdruck E vom Typ T ist bedeutet, dass das Ergebnis der Auswertung des Ausdrucks E wird ein Wert des Typs geben T. Sollte weisen eine einheitlich niedrige Operationen mit dieser Art verbunden sind. Zum Beispiel die Menge (23, true, Montag) ist kein Typ, sondern (true, false), wenn sie ist, weil es einheitliche Verhalten unter die logischen Operationen der Negation, Konjunktion und Disjunktion Ausstellungen und {..., -2, -1, 0, 1, 2, ...) zu, weil alle Werte ein einheitliches Verhalten zu zeigen unter den Operationen Addition, Multiplikation, etc.. Primitive Datentypen Primitive Typen sind diejenigen, die von atomaren Werten zusammengesetzt sind und daher nicht in einfachere Werte zerlegt werden.Wir werden die folgenden Bezeichnungen für die primitive Typen: Valor_de_verdad weiterhin (true, false) Ganze {..., -2, -1, 0, 1, 2, ...) Real {..., -1,0, ..., 0,0, ..., 1.0, ...) {..., Zeichen 'a', 'b', ..., 'z', ...) Aufzählungstyp. Monate (Jan, Feb, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember) eine Sub-Baureihe. Zum Beispiel den Teilbereich Typ 28 .. 31 die Werte (28, 29, 30, 31). Ein interessanter Punkt ist die Mächtigkeit einer Menge (oder Typs). Wir schreiben # S für deut-chung der Anzahl der unterschiedlichen Werte in S. Zum Beispiel: # # valor_de_verdad = 2 Monate = 12 # integer = 2 x MAXINT + 1 (in Pascal) Typen A composite type Verbindungen (oder strukturierten Datentyp) ist eine Art, deren Werte aus oder auf einfache Werte strukturierten . Programmiersprachen unterstützt eine große Vari-schaft von Datenstrukturen: Tupel, Records, Arrays, Sets, Strings, Listen, Bäume, sequentielle Dateien, direkte Dateien, etc.. Kartesisches Produkt eine einfache Form der Komposition ist das kartesische Produkt Werte, wobei die Werte von zwei Typen (eventuell abweichend) sind gekoppelt ist. S x T ist die Menge aller geordneten Paare von Werten, wobei der erste Wert jedes Paar aus der Menge S und die zweite von T. Formal: S x T = ((x, y) / x? S, und? T) Die Mächtigkeit des kartesischen Produkts ist # (S x T) = S # # T x Mächtigkeit von einem Typ in der Höhe von Wertpapieren der gleichen zur Verfügung gestellt. Wir können Anregungen von den kartesische Produkt eines Registers Definition: Art Datum: Record m zu ziehen: Monat, d: 1 .. 31 Ende, das Datum geben Sie den folgenden Satz von Werten (Jan, Feb, ..., Dezember) x (1, 2, 3, ..., 31). Das 372 Paare der Form (Jan, 1) (2. Januar) ist ... (Feb, 1) ... (31. Dezember). Eine andere Art von disjunkte Vereinigung Zugehörigkeitswerte disjunkt sind Gewerkschaften, wo die Werte sind aus einer von zwei Typen getroffen (in der Regel anders aus). S + T ist die Menge der Werte, bei denen jeder Wert wird entweder von S oder T übernommen und ist gekennzeichnet (links oder rechts), um die Menge anzugeben getroffen wurde: S + T = (links x / x? S)? (der y / y? T) Die Kardinalität wird durch # (S + T) = S + # # T Typ precision = (Exakt, Ca) in der Rechtssache Satznummer = prec: Exakte Präzision: (Valente: Integer); ca.: (valReal: Real gegeben ) end Die Menge von Werten dieses Typs Integer x Real. Ihre Werte sind exakte {..., (-2), ist eine genaue (-1), ist eine genaue (0), ist eine genaue (1), ist eine genaue (2), ...)? Über {..., (-1,0), ... Ca. (0,0), ... Ca. (1,0), ... Mapping) Der Begriff der Abbildung oder Funktion von einem Set zum anderen ist sehr wichtig, in der Sprache der Programmierung. Betrachten Sie eine Funktion m, dass jeder Wert x in S mit einem Wert von T. Bezieht Die Werte von T heißen Bildern von x nach m und schreiben m (x). M: S? T ist eine Funktion von S in T. Wenn wir bedenken, S = (u, v) und T = (a, b, c). Zum Beispiel K (x) = (u? A, v? C) kann eine bestimmte Funktion von S in T. Mit den Bezeichnungen S? T definieren wir die Menge aller möglichen Funktionen von S nach T. S? T = (m / x? S? M (x)? T) Die Kardinalität wird durch # S gegeben? T = (# t) # S zum Beispiel ein Feld kann als eine Zuordnung zu verstehen: Array [S] von T Typ color = (rot, grün, blau); Pixel = array [color] von 0 .. 1 Alle Werte der Pixel-Array type = Farbe? (0, 1) =, wo Farbe (rot, grün, blau) Die Werte für die Pixel-Rate von acht Kombinationen gegeben. (rot? 0, grün? 0, blau? 0) (rot? 1 grün? 0, blau? 0) (rot? 0, grün? 0, blau? 1) (rot? 1 grün? 0, blau? 1) (rot? 0, grün? 1, blau? 0) (rot? 1 grün? 1, blau? 0) (rot? 0, grün? 1, blau? 1) (rot? 1 grün? 1, blau? 1) Funktion auch (n: Integer): Boolean; Start Par: = (n mod 2 = 0) End; Diese Funktion implementiert einen bestimmten mapping Integer? Und boolesche Werte sind: (0? True, ± 1? False, ± 2? True, ± 3? Falsch, ...) eine ungerade Funktion, die Kartierung durchgeführt anderen Integer? Boolean. Wenn eine Funktion übernimmt n-Werte als Parameter kann als ein einfaches Argument verstanden werden.Ein n-Tupel. Power Joint Stellen Sie sich eine Menge von Werten als S. Wir sind in den Werten, die einander sind, Teilmengen von S. Interessiert Die Menge aller Teilmengen nennt man die Kraft der S gesetzt und schreiben formal:? S = (s / s? S) Die grundlegenden Operationen sind eine Reihe von üblichen Operationen der Mengenlehre: Die Zugehörigkeit, Eingliederung, Vereinigung und Durchschnitt. Jeder Wert von S kann ein Mitglied oder nicht, einen bestimmten Satz? S. Und die Cardin-keit von der Macht der S gesetzt ist gegeben durch: (: S) = 2 # S Betrachten wir zum Beispiel die folgende Definition von Pascal ... Typ color = (rot, grün, blau); ConjPot = der Farbsatz Die Menge der Werte ist so Poset = "color ist die Menge aller Teilmengen von = Farbe (rot, grün, blau). Die folgenden 8: () (rot) (grün) (blau) (rot, grün) (rot, blau) (grün, blau) (rot, grün, blau) Ressourcen-Typen gilt als eine Art rekursive ein, dass der aus Werte des gleichen Typs und ist durch sich selbst definiert. Einer der rekursiven Typen sind Listen, die eine beliebige Anzahl von Komponenten, einschließlich keiner haben kann. Die Anzahl der Komponenten ist die Liste aufgerufen. Eine Liste ist homogen, wenn alle Elemente der sie den gleichen Typ sind. Angenommen, wir wollen eine Art, deren Werte sind Listen von Zahlen zu definieren. Wir definieren die Liste der ganzen Zahlen als ein Wert, der leer sein kann oder ein Paar, bestehend aus einer ganzen Zahl (Kopf) und eine Liste von Zahlen (Schwanz). Diese Definition ist rekursiv, und kann so geschrieben werden: Lista_enteros = Einheit + (Integer x Lista_enteros) Die Mächtigkeit einer rekursiven Typs ist unendlich. Deshalb können wir nicht alle aufzählen, die Werte für eine rekursive Typ. Control Group verzinslichen Wertpapieren erlaubt es dem Programmierer Typen beschreiben die Daten. Verhindert auch Programme, die Operationen wie sinnlos vermehren einen Charakter wirklich wert. In diesem Sinne ist die High-Level-Sprachen aus niedrigen auszeichnen-Ebene, wo die Typen Byte und Wort. Um die Durchführung der Maßnahmen ohne Sinn für die Sprache, die Umsetzung zu verhindern muss Typprüfung auf die Operanden durchzuführen. In einer statisch typisierte Sprache ist, hat jede Variable Parameter und einem festen Zinssatz ist cho-do von den Programmierer. Deshalb ist die Art der jeder Ausdruck kann gefolgert werden, und die Typprüfung wird beim Kompilieren getan. Die meisten High-Level-Sprachen sind statisch typisiert. In einem dynamisch typisierte Sprache ist, haben die Werte nur einen festen Zinssatz. Eine Variable oder Parameter haben keinen Typ bezeichnet, kann aber verschiedene Werte in verschiedenen Typ MO-gen nehmen. Dies bedeutet, dass der Typ der Operanden sollte sich direkt vor einer Operation durchgeführt Zaren Laufzeit geprüft. Lisp und Smalltalk ist dynamisch typisierte Sprachen. Die dynamische Typisierung bedeutet, dass die Durchführung eines Programms ein wenig langsamer, da die Kontrolle der notwendigen Typen zur Laufzeit und wird auch bedeutet, dass jeder Wert mit ihrer Art so markierten Felder müssen auf die Überwachung der Preise zu ermöglichen. Diese zusätzliche Zeit und Raum sind in einem statisch typisierte Sprache zu vermeiden, da alle Typprüfung bei der Kompilierung erfolgt. Ein großer Vorteil der statische Typisierung ist die Gewissheit, dass Typfehlern garantiert werden vom Compiler erkannt werden. Der Vorteil der dynamischen Typisierung ist seine Flexibilität. Gleichwertigkeit der Arten für eine Operation, die einen Operanden vom Typ erwartet, T. Nehmen wir an, dass in der Tat nicht in Frage zu betreiben ist vom Typ "T". Die Sprache sollte prüfen, ob der Typ T ist gleichbedeutend mit T '(T: T "). Strukturelle Äquivalenz: T? T 'genau dann, wenn T und T' sind die gleichen Werte. Durch strukturelle Äquivalenz wird Typprüfung durch den Vergleich der Strukturen der Typen T und T '.(Nicht notwendig, und in der Regel unmöglich, alle aufzuzählen Werte). Die folgenden Regeln zeigen, wie können wir entscheiden, ob T? T ', definiert in Bezug auf die kartesischen Produkte, disjunkte Gewerkschaften und Zuordnungen. O Wenn T und T 'sind zwei primitive Typen. Dann ist T? T 'genau dann, wenn T und T' sind identisch. Beispiel: Integer? Integer. O Wenn T = A x B-und T '= A' x B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B '. Beispiel: Integer x Charakter? Integer x Zeichen oder, wenn T = A + B-und T '= A' + B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B oder A? B 'und B? A '. Beispiel: Integer + Zeichen? Integer oder Character + Wenn T = A? B-und T '= A'? B '. Dann ist T? T 'genau dann, wenn A? A 'und B? B '. Beispiel: Integer? Charakter? Integer? Zeichen oder Andernfalls ist nicht gleichbedeutend mit T T '. T Namen entsprechen? T 'genau dann, wenn T und T "wurden an der gleichen Stelle definiert. Betrachten wir zum Beispiel die folgende Definition von Pascal. Typ T1 = file of Integer; T2 = file of Integer; var F1: T1, F2: T2; beginnen Prozedur p (var F: T1); ... Procedure call "p (F1)" Typprüfung geschieht, weil die Art der F-und F1-äquivalent sind. Aber das "p (F2)" Typprüfung wird fehlschlagen, weil die Typen F und F2 gleichwertig sind; T1 und T2 sind in verschiedenen Erklärungen definiert. Typ Vollständigkeit Prinzip "Die Vorgänge, die in Wertpapieren erzielt werden können aus der Art sollte nicht ar-bitrarias zu ihnen." Dieser Grundsatz sollte helfen, diese Sprachen nicht über Beschränkungen für Operationen, die möglicherweise für bestimmte Arten und somit die Macht einer Programmiersprache. Allerdings könnte eine Einschränkung durch andere, widersprüchliche, Design-Überlegungen und so weiter gerechtfertigt werden kann. Jede Art Systems Konstante, Variable, Funktion und das Ergebnis der formalen Parameter müssen mit einem bestimmten Typ deklariert werden. Dieses System wird als monomorph Typen, und macht es leicht, um Preise zu kontrollieren. Ist unbefriedigend, vor allem für das Schreiben von wiederverwendbarer Software. Viele Standard-Algorithmen (wie zB Sortier-Algorithmen) sind von Natur aus Normen, in dem Sinne, dass nur auf die Art von Werten, die verwaltet werden abhängen. Die entsprechenden Konzepte sind überlastet, die die Fähigkeit eines Bezeichners oder Betreiber verschiedene Abstraktionen bezeichnen gleichzeitig; Polymorphismus FISMA, die über die Abstraktionen, die sich gleichmäßig auf Werte von verschiedenen Typen und Vererbung, die auf die Tatsache bezieht betreiben ist, dass Subtypen Supertypen vererbten Eigenschaften. Monomorphismus A monomorph Typ ist ein, wo die Konstanten, Variablen, Parameter und re-parieren der Funktion haben, einen einzigen Typ. Das Pascal-Typ ist im Gründe monomorph. Überladen bedeutet, dass eine (kleine) Anzahl unterschiedlicher Abstraktionen sind mit der gleichen Kennung zugeordnet, müssen diese Abstraktionen nicht verwandten Arten, die nicht unbedingt führen ähnliche Operationen in ihren Parametern. Polymorphismus ist eine Eigenschaft von einem einzigen Abstraktion, die ein (breit) hat Reihe von verwandten Arten, betreibt die einheitliche Abstraktion auf ihre Argumente, unabhängig von ihrer Art. Ein Bezeichner oder Operator-Überladung soll überlastet werden, wenn sie gleichzeitig zwei oder mehrere verschiedene Funktionen bezeichnet. Im Allgemeinen ist der Aufwand nur dann zulässig, wenn jeder Funktionsaufruf ist eindeutig, wo die Funktion aufrufen können eindeutig identifiziert werden können mit dem Typ-Information erhältlich. Beispiel 1: Der Betreiber gleichzeitig '-' steht für fünf verschiedene Funktionen. ? Denial-of-Ganzzahl (Integer-Funktion? Integer)? Denial-of-real (in Abhängigkeit von Real? Real)? Differenz der Zahlen (eine Funktion von Integer Integer x: Integer)? Real Differenz (in Abhängigkeit von Real x Real? Real)? Differenz von Mengen (eine Funktion von x Set Set? Set) Es gibt zwei Arten von Gemeinkosten:? Overload unabhängig von ihrem Kontext (wie in Pascal und ML) verlangt, dass S1 und S2 unterschiedlich sind.Betrachten Sie die Funktion rufe ich (E). Wenn der aktuelle Parameter ist vom Typ E S1, dann habe ich f1 bezeichnet und das Ergebnis ist vom Typ T1, wenn E ist vom Typ S2, so ist i f2 und das Ergebnis ist vom Typ T2. Mit kontextabhängigen Überlastung der Funktionsaufruf ist eindeutig durch die aktuellen Parameter identifiziert. ? Overload kontextabhängig (wie in Ada): Erfordert, dass S1 und S2 unterschiedlich sind oder dass T1 und T2 verschieden sind. Wenn S1 und S2 unterschiedlich sind, um die Funktion aufzurufen, um sich zu identifizieren "Früher Sie. Wenn S1 und S2 nicht unterscheidbar sind, aber T1 und T2 verschieden sind, muss der Kontext berücksichtigt werden, um die Funktion zu identifizieren zu nennen. Betrachten Sie die Funktion rufe ich (E), wobei E den Typ S1 (? S2) ist. Bei Aufruf der Funktion erfolgt in einem Kontext, wo es wird erwartet, ein Ausdruck vom Typ T1, in-Tonces ich f1 bezeichnen, wenn die Funktion Aufruf erfolgt in einem Kontext, wo Sie erwarten eine Ex-pression des Typs T2, dann Ich muß bezeichnen f2. Mit kontextabhängigen Überlastung ist mög-lich, um Ausdrücke, in dem Aufruf der Funktion nicht eindeutig identifiziert werden kann, sondern die Sprache muss eine solche mehrdeutige Ausdrücke verbieten zu formulieren. Polymorphismus in einer polymorphen Typ-System, können wir schreiben Abstraktionen, die gleichmäßig arbeiten auf Argumente einer Vielzahl von verwandten Arten. In ML polymorphe Abstraktionen ist einfach eine polymorphe Funktion zu definieren. Der Schlüssel liegt in der Art solcher Funktionen mit variablem Zinssatz festzulegen, und stattdessen bestimmter Arten. Beispiel 1: Die folgende Funktion akzeptiert ein Paar von ganzen Zahlen und gibt ihre Summe: fun sum (x: int, y: int) = x + y Diese Funktion ist vom Typ Integer Integer x? Integer. Der Aufruf der Funktion sum (13, 21) liefert 34. Parametrisierten Typen A parametrisierten Typ ist eine Art, die andere (n) Art (en) als Parameter. Zum Beispiel, in Pas-cal-Datei Art, Satz und Array. Zum Beispiel können wir definieren, der char-Datei oder eine Datei von Ganzzahl. Wir denken, dass Datei ist eine parametrisierte Typ des einreiche?. Ein Zwang Zwang ist eine implizite Zuordnung zwischen den Werten eines bestimmten Typs auf die Werte eines anderen Typs. Typische Beispiele sind Zuordnungen coersion zu reellen Zahlen und Zuordnung von Zeichen in Strings eines Zeichens integer. Ein Zwang wird automatisch durchgeführt, wenn der Kontext es erfordert. Dies wird durch Pascal Ausdruck sqrt (n), wo die sqrt Funktion erwartet dargestellten Argumente, die dem tatsächlichen Typ, aber n ist integer. Es besteht eine offensichtliche Abbildung von Integer zu Real: {..., -2? -2,0, -1? -1,0, 0? 0,0, 1? 1,0, 2? 2,0, ...) so dass der Ausdruck sqrt (n) ist legal. Subtypen und Vererbung Wenn wir einen Typ T prüfen, wie eine Reihe von Werten, könnten wir darüber nachdenken, Gebäude Teilmengen von T. Wir rufen jede Teilmenge von T-Subtyp von T. Im Zusammenhang mit jedem Typ T, gibt es eine Reihe von Operationen, die für die Werte der T. Jede dieser Maßnahmen gelten auch für die Wertpapiere eines Subtyps von T. S Wir denken, dass alle Operationen mit S T. Verbundenen erbt Ausdrücke Ein Ausdruck ist ein Ausdruck, der ausgewertet werden, um einen Wert zurückgeben. Ausdrücke können auf verschiedene Weise gebildet werden. Grundlagen sind: entweder wörtlich oder Aggregate oder Funktionsaufrufe oder bedingte Ausdrücke oder Konstanten und Variablen Zugang zu Literalen ist die einfachste Art des Ausdrucks, bedeutet sie einen festen Wert und eine Art Manifest. Zum Beispiel: 6356 3.1416 '%' 'See' Und sie bezeichnen eine ganze Zahl, eine echte Persönlichkeit und einen String bzw.. Aggregate ist ein Ausdruck, ein Composite-Wert aus seiner Komponenten-Werte Konstrukte. Die Komponente Werte sind durch die Auswertung Teilausdrücke bestimmt. Function Calls Ein Funktionsaufruf berechnet ein Ergebnis aus der Anwendung eine Abstraktion Funktion, um ein Argument. Ein Funktionsaufruf hat in der Regel die Form F (pa), wo F bestimmt die Funktion angewendet werden, und pro Jahr die aktuellen Parameter 'bestimmt, die Argumente, die übergeben wird.Bedingte Ausdrücke Ein bedingter Ausdruck hat mehrere Teilausdrücke von denen nur einer wird genommen bewertet werden. Nicht alle Sprachen zur Verfügung bedingte Ausdrücke ist nicht das Gleiche als bedingte Befehle. Zum Beispiel bietet der C-Sprache eines bedingten Ausdrucks: strNum = (a> 0? "Positiv": "negative") konstanten und variablen Zugang Ausdrücke Ein Mann hat mit Zugang zu Konstanten und Variablen, die durch ihre Namen nicht . Zum Beispiel: const pi = 3,1416; var r: real; In dem Ausdruck 2 * Pi * r gibt es einen Zugang, den konstanten Wert pi dem der Wert 3,1416 und r Variable, die den Wert enthalten kann Renditen Renditen hat das gleiche. Variablen und Updates in Informatik, ist eine Variable, ein Objekt, das einen Wert enthält, kann dieser Wert kontrolliert und aktualisiert Schwimmen so viel wie gewünscht. Die bekannteste einen Programmierer sind die Variablen, die erstellt werden und in einem bestimmten Programm verwendet, solche Variablen sind in der Regel durch die Zuordnung aktualisiert, und sind von kurzer Dauer. Allerdings sind die Dateien und Datenbanken ebenfalls variabel. Diese sind in der Regel langlebige, die unabhängig von einem bestimmten Programm. Ein Lagerhaus ist eine Sammlung von Zellen. Jede Zelle hat einen aktuellen Status: reserviert oder vorbehaltlos. Jede Zelle hat einen Inhalt jetzt still, die einen gespeicherten Wert oder nicht definiert ist. Beispiel: Betrachten Sie die Variable n in einer Pascal-Programm. 1. Die Deklaration von Variablen (var n: Integer) führt zu einer Zelle nicht ändern Sie den Status für reservierte und permanenten Wandel, um den Inhalt vorbehalten. 2. Die Zuordnung n: = 0 geändert, um den Inhalt der Zelle durch n bezeichnet Null 3. Der Begriff n +1 gibt einen mehr als der Inhalt der Zelle durch n bezeichnet Die Zuordnung n: = n +1 addiert man zu dem Inhalt der Zelle. 4. Am Ende des Blocks mit der Erklärung von n, kehren wir den Zustand der Zelle durch n nicht bezeichnet-vorbehalten. Composite-Variablen Der Wert eines zusammengesetzten Typ besteht aus Komponenten, die separat untersucht werden mately. Außerdem besteht eine Variable eines zusammengesetzten Typ von Komponenten, die auch unterschiedlich sein und den Inhalt dieser Komponenten untersucht werden können und separat aktualisiert werden. Die Lebensdauer einer variablen Zeitspanne zwischen dem Anlegen und Löschen heißt Lebensdauer einer Variablen. Globale und lokale Variablen Eine lokale Variable ist einer, der in einem Block deklariert wird und dass nur in diesem Block verwendet werden (z. B. Ein Block ist der Körper eine Funktion oder Prozedur in Pascal). Eine globale Variable ist eine, die in der äußersten Block eines Programms erklärt wird. Stack-Variablen (Hügel) Diese Variablen können erstellt werden und jederzeit gelöscht werden. Sind anonym und werden durch einen Befehl erstellt. Sie werden durch einen Zeiger zugegriffen wird. Persistent persistente Variablen Eine Variable ist ein, deren Lebensdauer erstreckt sich über die De-Aktivierung eines Programms über die Befehle Ein Befehl ist ein Satz von Programm ausgeführt werden, um Variablen zu aktualisieren. Es gibt verschiedene Arten von Befehlen ist ein Befehl, springt keine Wirkung (überspringen). Das bedeutet dann, wenn E C anderes überspringen Aufgaben haben die typische Form V: = E. Aktualisieren Sie die Variable V mit dem Wert durch Auswertung des Ausdrucks E. Zurück Gilt ein Verfahren fordert ein Verfahren Abstraktion Parameterliste. Sequentielle Befehle Die Reihenfolge, in der Befehle ausgeführt sind, ist die Aktualisierung der Zugriffe auf Variablen wichtig. Befehle Sicherheiten Die Reihenfolge der Befehle ausgeführt werden, ist irrelevant. Ej: m: = 7, n: = n +1. Bedingte Befehle hat eine Reihe von Unterbefehle von denen genau eine ausgewählt werden, zu laufen. Eine typische Verwendung ist das, wenn. (Groß-) Kommandos AKA iterative Schleife. Hat eine Gruppe von Unterbefehle immer wieder mit einer Art von Satz, der bestimmt, wann die Iteration beendet ausgeführt werden.(für wiederholen, while) Ein Konzept für alle Programmiersprachen der Programmierer ist die Fähigkeit, zu binden oder in Verbindung mit Identifikatoren Einrichtungen wie Konstanten, Variablen, Prozeduren, Funktionen und Typen Link. Gute Wahl von Bezeichnern hilft, Programme leichter verständlich und einfach zu interpretieren. Darüber hinaus verbindet eine Kennung mit einer Einrichtung, an einem Ort und verwenden Sie dann die Kennung, die mit dieser Stelle an anderer Stelle verweisen, so dass die Programme sehr flexibel. Verbindungs-und Bereiche können wir sagen, dass eine Aussage eines Verbandes oder einer Verbindung zwischen den angegebenen Kennung und produziert das Unternehmen bezeichnet. Ein Umfeld oder Kontext ist eine Sammlung von Links. Anwendungsbereich In der Regel hat jede Aussage zu einem gewissen Grad, dass mit dem Teil des Programms, an dem die Erklärung wirksam zu tun hat. Ein Block Block-Struktur des Programms ist ein Satz, den Geltungsbereich einer Erklärung, dass die beliebtesten Bausteinstruktur enthalten können definiert, ist die verschachtelte wobei jeder Block in einem anderen Block verschachtelt werden können? Die Blöcke können von der Prozess-und Funktion abstrahiert werden, sondern kann auch Blöcke von Befehlen. ? Eine noch stärkere Konzept ist die Ausdrücke zu blockieren. Ein Ausdruck, der ausgewertet wird, um einen Link mit einer ID, die nur im Block verwendet werden, in dem Sie festlegen wird, herstellen. Geltungsbereich und Sichtbarkeit Bezeichner kann in zwei unterschiedlichen Kontexten. Auftreten der Link wird der Punkt, an dem ein Bezeichner deklariert ist anzurufen, und rufen Sie jedes Auftreten der Anwendung Ent-stehung des Griffs, wenn es das Unternehmen, auf die er gebunden bezeichnet. Zum Beispiel: Das Auftreten von n const n = 7 ist ein verbindliches Auftreten, wobei n bis 7 gebunden. Nachfolgende Erscheinungen von n in den Ausdruck n * (n +1) sind Ereignisse der Anwendung, wobei n die 7. Statische und dynamische Link Terminologie statische und dynamische Bindung muss mit der Zeit zu tun, dass wir entschlossen Auftreten von Kennung entspricht ich einen Link, um das Auftreten der Anwendung von I. Bei der statischen Verknüpfung können wir tun dies auf der Kompilierung. Bei der dynamischen Verknüpfung wir langsam es erst zur Laufzeit. Bei der frühen Bindung Auftreten können wir feststellen, dass ich einen Link entspricht einer gegebenen Vorkommen der Anwendung von R, nur für den Programm-Code zu untersuchen, finden den kleinsten Block, enthält ein Vorkommen der Anwendung von I, die ebenfalls ein Auftreten von I. Binding Der Zusammenhang zwischen dem Auftreten der Anwendung und Verknüpfung ist behoben. Mit dem Auftreten von Dynamic Link I-Link, der ein Auftreten der Anwendung von I entspricht, hängt von der dynamischen Ablaufsteuerung des Programms. Das Unternehmen mit I bezeichnet ist die Erklärung habe ich zuletzt in der aktuellen aktiven Block. Abstrakt Abstrakt ist eine Art zu denken, in denen wir über die allgemeine Ideen konzentrieren, anstatt ihren spezifischen Ausprägungen dieser Ideen in der Programmierung, der Abstraktion, die Unterscheidung zwischen bezieht sich (a), was ein Teil eines Pro-gramm und (b ), wie es umgesetzt wird. Wenn Sie eine Prozedur aufrufen konzentrieren wir uns nur auf das, was macht dieses Verfahren nur dann, wenn wir ein Verfahren, wie die Umsetzung wird es uns interessant zu schreiben. Art der Abstraktion definieren eine Abstraktion als eine Einheit, die eine Berechnung enthält. Abstrakt Eine Abstraktion Funktion Funktion umfasst einen Ausdruck zu bewerten und bei Aufruf liefert einen Wert als Ergebnis. Mitglied der Abstraktion stellt nur das Ergebnis, nicht die Stufen, auf denen die Funktion ausgewertet wird. Eine Abstraktion Funktion ist unabhängig von einer Funktionsdefinition gebaut: Funktion I (FP1, ..., FPN): T, B Abstraction Eine Abstraktion des Verfahrens Verfahren beinhaltet einen Befehl ausführen, und wenn er aufgerufen wird Variable aktualisieren .Der Nutzer der Abstraktion der Fall stellt fest, und nicht nur die Updates die Schritte, die gemacht wurden eine prozedurale Abstraktion ist in Pascal gebaut, aus der Festlegung des Verfahrens: Verfahren I (FP1, ..., FPN) ; B Das Prinzip der Abstraktion als Zusammenfassend kann man sagen? Eine Abstraktion ist eine Abstraktion Funktion auf einem Ausdruck. Es bedeutet, eine Abstraktion Funktion, die eine Stelle, die ein Ausdruck ist, und ein Funktionsaufruf ist ein Ausdruck, der einen Wert, um den Körper der Abstraktion Funktion zu beurteilen. ? Eine prozedurale Abstraktion ist eine Abstraktion eines Befehls. Das bedeutet, dass ein ABS-Traktion Verfahren hat einen Körper, der einen Befehl und einen Prozeduraufruf ist ein Befehl, der Variablen, die den Körper des prozedurale Abstraktion führen zu aktualisieren. Sie können syntaktische Abstraktionen über jede Art zu bauen, sofern diese Sätze eine Art der Berechnung angegeben sind. ? Eine Auswahl der Abstraktion ist eine Abstraktion über einer Variablen zuzugreifen. Abstrakt bedeutet, dass eine Auswahl einer Einrichtung, die eine variable Zugang hat, und ein Aufruf, den Zugang Selektor ist eine Variable, die einen Verweis auf eine Variable zurück in die Bewertung der Stelle der Abstraktion der Auswahl wird. Parameter an die Macht der Begriff der Abstraktion nutzen, müssen wir parametrisierte Abstraktionen über die Werte, mit denen sie tätig ist. Ein Bezeichner, der verwendet wird, um eine Abstraktion bezeichnen als ein Argument der formalen Parameter pa. Ein Ausdruck oder Phrase, die als Argument übergeben wird, wird als AC-TUAL Parameter beispielsweise 1,0 oder a + b in fordert Umfang (1,0) und cicunf (a + b). Ein Argument ist der Wert, zu einer Abstraktion Mechanismus übergeben werden kann, um eine Kopie copy-Mechanismus ermöglicht Werte kopiert werden sollen und / oder eine Abstraktion, wenn sie aufgerufen wird. Die formalen Parameter X eine lokale Variable für die Abstraktion. Der Wert X ist, um den Eintrag der Abstraktion kopiert und / oder Kopie des X (auf eine lokale Variable) mit dem Ausgang der Abstraktion. Da X ist eine lokale Variable befindet sich am Eingang zu den abstrakten erstellt und bei der Abfahrt entfernt. Ein Parameter-Wert ist eine lokale Variable X befindet sich am Eingang der Abstraktion erstellt und erhält den Wert des Arguments. Da X fungiert als eine lokale Variable kann den Wert überprüft und aktualisiert werden. Allerdings hat jeder Aktualisierung von X keine Auswirkungen auf alle nicht-lokalen variablen. Ein Ergebnis-Parameter ist das Gegenteil der oben genannten. In diesem Fall muss das Argument, ein Verweis auf eine Variable. Auch eine lokale Variable X erstellt wird, aber ihren ursprünglichen Wert nicht definiert ist. Am Rande der Abstraktion der endgültige Wert von X ist die Variable Argument zugewiesen. Diese beiden Mechanismen können kombiniert werden, um das Ergebnis auf das Value-Ergebnis geben Parameter. Das Argument, wieder muss eine Variable Referenz. Am Eingang der Abstraktion ist die lokale Variable X erstellt und mit dem aktuellen Wert der Variablen Argument. Am Ausgang wird der endgültige Wert von X auf die Variable Argument wieder zugeordnet. Mechanismus, durch Definition Dieser Mechanismus erlaubt die formalen Parameter X wird direkt auf das Argument zu verknüpfen. Daraus ergibt sich eine einfache und einheitliche Semantik für Parameterübergabe beliebigen Wert in der Programmiersprache (nicht nur First-Class-Werte). ? Im Falle eines konstanten Parameter, ist das Argument einen Wert (erste Klasse). X ist das Argument Wert für die Aktivierung der Aufforderung Abstraktion gebunden. ? Im Falle eines variablen Parameter (oder Referenz), ist das Argument, ein Verweis auf eine Variable. X ist das Argument Variable bei der Aktivierung der Aufforderung Abstraktion gebunden. Daher Aktualisierung oder Überprüfung von X ist eigentlich eine Aktualisierung oder Überprüfung des Arguments.? Im Falle eines Verfahrensfehlers Parameter, ist das Argument, eine prozedurale Abstraktion. X ist das Verfahren (Argument) für die Aktivierung der Aufforderung Abstraktion gebunden. Daher ist jeder Aufruf von X ist wirklich ein Aufruf der Prozedur (Argument). ? Wenn ein Parameter ist funktional, ist das Argument, eine Abstraktion Funktion. X ist die Funktion (Argument) für die Aktivierung der Aufforderung Abstraktion gebunden. Daher ist jede X-esis ist wirklich eine Funktion aufrufen (Argument). Ein Nachteil der variablen Parameter ist die Möglichkeit, Aliase erstellen. Dies geschieht, wenn zwei oder mehr IDs gleichzeitig auf die gleiche Variable verbunden sind. Diese neigt dazu, dass Programme mehr schwer zu verstehen. Reihenfolge der Bewertung Die Bewertung der Bestellung ist genau Bezug nimmt, wenn die jeweils aktuelle Parameter beurteilt wird, wenn Sie eine Abstraktion nennen. Grundsätzlich gibt es zwei Möglichkeiten:? Bewerten Sie die aktuelle Parameter an der Stelle des Anrufs. ? Delay Evaluierung bis das Argument tatsächlich genutzt werden. Der erste Auftrag der Bewertung heißt "Evaluation Ungeduldige" (oder applikativen Bewertung Reihenfolge). Aktuelle Parameter wird einmal ausgewertet, und in der Tat das Ergebnis erhält jedes Vorkommen des formalen Parameters. Der zweite Auftrag der Bewertung heißt "Evaluation in der normalen Reihenfolge. Nicht sofort wertet die aktuellen Parameter, wobei jedoch die aktuellen Parameter für jedes Auftreten des formalen Parameters. Die Funktion sqr soll streng sein, was bedeutet, dass ein Aufruf dieser Funktion können bewertet werden, wenn ihre Argumente ausgewertet werden können. Cand Funktion gilt als nicht streng in seinem zweiten Argument, das bedeutet, dass ein Aufruf dieser Funktion kann manchmal zu beurteilen, auch wenn das zweite Argument nicht ausgewertet werden können werden. Dies wird als Lazy Evaluation (lazy evaluation), ist das Argument nur ausgewertet, wenn zum ersten Mal (die werden niemals, wenn die Funktion nicht eingeschränkt wird) benötigt.

Verwandte Einträge: