Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
;; ESEMPI SULLE STRUTTURE IN SCHEME ;; definizione define-struct ;; costruttore make- ;; selettore ;; verifica sulla struttura: ;; ? ;; Esempi con struttura predefinita ;;;;;;; Struttura posn ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Esercizio: ;; Determinare, dati 2 posn, se ;; questi due punti coincidono ;; stessopunto?: posn posn -> boolean (define (stessopunto? p1 p2) (and (= (posn-x p1) (posn-x p2)) (= (posn-y p1) (posn-y p2)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Esercizio: ;; Determinare, dati 2 posn, quale sia ;; la loro distanza nella metrica euclidea (define (distanza p1 p2) (sqrt (+ (square (- (posn-x p1) (posn-x p2))) (square (- (posn-y p1) (posn-y p2)))))) ; (distanza (make-posn 1 1) (make-posn 3 3) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Esercizio: ;; Determinare, dato un posn, la ;; sua distanza (nella metrica euclidea) ;; rispetto all'origine (define (distdaorigine p) (distanza (make-posn 0 0) p)) ;;;;;;;;;;; ;; Esercizio: dati due posn che ;; definiscono una retta, stabilire se ;; questa passa dall'origine ;; y = mx+q dove m = (y2-y1)/(x2-x1) ;; la risposta e': true se q=0, false ;; altrimenti ;; q=y1-m*x1 (define (attr-origine? p1 p2) (= (- (posn-y p1) (* (/ (- (posn-y p2) (posn-y p1)) (- (posn-x p2) (posn-x p1))) (posn-x p1))) 0)) ;;;;;;;;;; DEFINIZIONE DI STRUTTURE (define-struct studente (nome cognome matricola mediavoto nesami)) ;; costruttore: esempio (make- ;; selettore ;; esercizio: ;; Implementare una procedura di aggiornamento ;; della media voto di uno studente (define (aggmedia stud voto) (make-studente (studente-nome stud) (studente-cognome stud) (studente-matricola stud) (/ (+ (* (studente-mediavoto stud) (studente-nesami stud)) voto) (+ (studente-nesami stud) 1)) (+ (studente-nesami stud) 1))) ;; esempi ;;(studente-mediavoto (aggmedia (make-studente 'rob 'luc 1654 20 1) 30)) ;; Esercizio: implementare i controlli sui tipi della struttura studente ;;(studente? (make-studente 'rob 'luc 1654 20 1)) ;;(define (type studente) (.... controllo tipi ...) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Versione ottimizzata di Fb ;; fb contiene: in fbn la valutazione ;; di fibonacci di n, fbn-1 quella per ;; n-1 (define-struct fb (fbn fbn-1)) ;; (Fibonacci) (define (Fibonacci n) (fb-fbn (Fib n))) ;; Fib: number -> fb (define (Fib n) (cond [(= n 0) (make-fb 1 0)] [(= n 1) (make-fb 1 1)] [else (accumula (Fib (- n 1)))])) (define (accumula Fibn-1) (make-fb (+ (fb-fbn Fibn-1) (fb-fbn-1 Fibn-1)) (fb-fbn Fibn-1))) ;; Verificare la differenza di complessita' ;; fra Fibonacci e Fb ;; funzioni generiche ;; Implementare perimetro, la ;; f.ne che calcola il perimetro ;; di una figura geometrica (define-struct cerchio (centro raggio)) (define-struct quadrato (lato)) (define (perimetro figura) (cond [(cerchio? figura) (perimetro-cerchio figura)] [(quadrato? figura) (perimetro-quadrato figura)] [else 'Errore])) (define (perimetro-cerchio c) (* 2 (* 3.14 (cerchio-raggio c)))) (define (perimetro-quadrato q) (* 4 (quadrato-lato q)))