Supreme fx 2: ASUS ROG Supreme FX II 2 PCIe x1 HD 7.1 Channel Soundkarte für Asus ROG MB* s73

Laborarbeit №2. Rekursion, Verfahren höherer Ordnung, Listenverarbeitung

Ziel der Arbeit

Erwerb von Kenntnissen im Umgang mit den Grundlagen der Programmierung in der Sprache Scheme: Verwendung von Rekursion, Verfahren höherer Ordnung, Listen.

Aufgaben

Verwenden Sie beim Ausführen der Aufgaben keine -Zuweisungen, Schleifen und Verweise auf Sequenzelemente über den Index. Vermeiden Sie die Rückgabe boolescher Werte aus bedingten Konstrukten. Demonstrieren Sie die Leistung der Verfahren anhand von Beispielen.

  1. Implementieren Sie die Prozedur (Anzahl x xs) , um zu zählen, wie oft das Element x in der Liste xs vorkommt. Beispiele für die Anwendung des Verfahrens:

     (count 'a '(a b c a)) ⇒ 2
    (count 'b '(a c d)) ⇒ 0
    (count 'a'()) ⇒ 0
     
  2. Implementieren Sie die Prozedur (delete pred? xs) , die alle Elemente aus der Liste xs „löscht“, die das Prädikat pred erfüllen? . Beispiele für die Anwendung des Verfahrens:

     (gerade löschen? '(0 1 2 3)) ⇒ (1 3)
    (gerade löschen? '(0 2 4 6)) ⇒ ()
    (gerade löschen? '(1 3 5 7)) ⇒ (1 3 5 7)
    (Auch löschen? '()) ⇒ ()
     
  3. Implementieren Sie eine Prozedur (iterate f x n) , die eine Liste von n Elementen der Form (x, f(x), f(f(x)), f(f(f(x))) zurückgibt, ...) , wobei f eine Prozedur (Funktion) eines Arguments ist. Beispiele für die Anwendung des Verfahrens:

     (iterieren (Lambda (x) (* 2 x)) 1 6) ⇒ (1 2 4 8 16 32)
    (iterieren (Lambda (x) (* 2 x)) 1 1) ⇒ (1)
    (iterate (lambda (x) (* 2 x)) 1 0) ⇒ ()
     
  4. Implementieren Sie die Prozedur (intersperse e xs) , die eine Liste zurückgibt, die durch Einfügen des Elements e zwischen den Elementen der Liste xs erhalten wird. Beispiele für die Anwendung des Verfahrens:

     (Einstreuung 'x'(1 2 3 4)) ⇒ (1 x 2 x 3 x 4)
    (einstreuen 'x'(1 2)) ⇒ (1 x 2)
    (einstreuen 'x'(1)) ⇒ (1)
    (einstreuen 'x'()) ⇒ ()
     
  5. Implementieren Sie die Prädikate (any? pred? xs) , die 9 zurückgeben0015 #t wenn mindestens eines der Elemente der Liste xs das Prädikat pred erfüllt? und (all? pred? xs) , was #t zurückgibt, wenn alle Elemente der Liste xs das Prädikat pred erfüllen? . Verwenden Sie keine -Bedingungskonstrukte, sondern verwenden Sie stattdessen die Funktionen der integrierten Funktionen und sowie oder . Anwendungsbeispiele:

     (beliebig? ungerade? '(1 3 5 7)) ⇒ #t
    (beliebig? ungerade? '(0 1 2 3)) ⇒ #t
    (beliebig? ungerade? '(0 2 4 6)) ⇒ #f
    (irgendein? ungerade? '()) ⇒ #f
        
    (alle? ungerade? '(1 3 5 7)) ⇒ #t
    (alle? ungerade? '(0 1 2 3)) ⇒ #f
    (alle? ungerade? '(0 2 4 6)) ⇒ #f
    (alle? ungerade? '()) ⇒ #t ; Es ist eine Funktion, implementieren Sie sie
     
  6. Implementieren Sie die Zusammensetzung von Funktionen (Prozeduren) eines Arguments, für die Sie eine Prozedur oder schreiben, die eine beliebige Anzahl von Prozeduren eines Arguments annimmt und eine Prozedur zurückgibt, die eine Zusammensetzung dieser Prozeduren ist. Beispiele für die Anwendung des Verfahrens:

     (definieren (f x) (+ x 2))
    (definiere (g x) (* x 3))
    (definiere (h x) (- x))
        
    ((o f g h) 1) ⇒ -1
    ((o f g) 1) ⇒ 5
    ((o h) 1) ⇒ -1
    ((o) 1) ⇒ 1
     

GIGABYTE unterstützt weiterhin die AMD FX AM3+ 9-Plattform0001