Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JS] costruttore e modulo

    ciao ragazzi vorrei risolvere questi 2 esercizi



    il primo va risolto con una funzione , mentre il secondo con un costruttore (un oggetto personalizzato)

    nel primo ho così proceduto:
    un campo di testo TXT che accetta il peso di tutte le statue lavorate
    un bottone INS per far inserire il valore nel campo TXT
    un campo di testo TOT che fa apparire il peso degli scarti delle statue
    un campo TOT2 dove appare il numero delle statue lavorate


    function scartoSculture{
    var pesoBlocco = 3
    var scarto = a
    var pesoScultura = b

    a= 3 - b

    }



    generalizzando la funzione degli scarti è così, ma per fare in modo che da un certo peso lui identifichi il numero di statue ?
    e per ottenere il numero delle statue lavorate? pensavo a un onclick nel bottone, o è meglio di no?


    ------------------
    nel secondo esercizio invece, non sono sicuro della correttezza:

    function macchine = new Macchina();
    function Macchina (Testo){
    this.Digita=t;
    this.Cancella=n;
    this.Stampa=testo;

    function Digita{
    return testo + t;

    function Cancella{
    return testo - n; \\\nn so come si cancellano dei caratteri..

    function Stampa{
    return document.write(Testo)
    }
    }
    }

    chi puo darmi una mano? voi come avreste fatto?
    ciao
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  2. #2
    appp
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  3. #3
    codice:
    function scartoSculture(){
    	for(var	indice = 0, totale = arguments.length, peso = 0; indice < totale; indice++)
    		peso += arguments[indice];
    	return (totale * 3 - peso).toFixed(3);
    };
    // esempio
    document.write(scartoSculture(2.2, 2.9, 2.62));	// 1.280 (in Kg)
    
    
    function Macchina() {
    	this.Digita = function(t){
    		this.Testo += t;
    	};
    	this.Cancella = function(n){
    		this.Testo = this.Testo.substr(0, this.Testo.length - n);
    	};
    	this.Stampa = function(){
    		return this.Testo;
    	};
    	this.Testo = "";
    };
    // esempio
    var	macchina = new Macchina();
    macchina.Digita("abcd");
    macchina.Cancella(3);
    macchina.Digita("dc");
    document.write(macchina.Stampa());	// adc
    poi mi dici il voto ?


    [edit]
    ci sono comunque altri modi ... te ne elenco un paio
    codice:
    // versione prototype
    function Macchina(){};
    Macchina.prototype = {
    	Testo:"",
    	Digita:function(t){this.Testo += t},
    	Cancella:function(n){this.Testo = this.Testo.substr(0, this.Testo.length - n)},
    	Stampa:function(){return this.Testo}
    };
    
    // Singletone con parametro privato Testo
    // (dato che Stampa fa tornare il testo forse è quello che vuole il prof)
    function Macchina(){
    	function Digita(t){
    		Testo += t;
    	};
    	function Cancella(n){
    		Testo = Testo.substr(0, Testo.length - n);
    	};
    	function Stampa(){
    		return Testo;
    	};
    	var	Testo = "";
    	return {
    		Digita: Digita,
    		Cancella: Cancella,
    		Stampa: Stampa
    	};
    };
    // questo si istanzia senza il new
    l'ultimo esempio è quello, a mio avviso, più sensato ... visto che Testo è parametro m è privato, non raggiungibile o modificabile dall'esterno ... e dato che i metodi servono proprio a modificare tale parametro, sfrutterei quelli senza dare la possibilità di richiamare Testo direttamente (come parametro pubblico)



    [edit 2]
    ultima ...
    codice:
    // Costruttore con parametro privato Testo (quella che avrei usato io)
    function Macchina() {
    	this.Digita = function(t){
    		Testo += t;
    	};
    	this.Cancella = function(n){
    		Testo = Testo.substr(0, Testo.length - n);
    	};
    	this.Stampa = function(){
    		return Testo;
    	};
    	var	Testo = "";
    };
    
    // esempio
    var	macchina = new Macchina();
    macchina.Digita("abcd");
    macchina.Cancella(3);
    macchina.Digita("dc");
    document.write(macchina.Stampa());	// adc
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    niente voto, esercizio già valutato ... era per capire come si faceva!

    quindi l'esercizio 1 avrà 2 campi di testo e un bottone di inserimento giusto?

    toFixed non l ho mai usato, come potrei piu semplicemente sostituirlo?

    nell esercizio 2 quello che piu è opportuno è il primo modo alternativo che hai elencato..
    nel secondo invece xè metti la variabile Testo in fondo? nn va dichiarata prima ?
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  5. #5
    Originariamente inviato da palm84
    quindi l'esercizio 1 avrà 2 campi di testo e un bottone di inserimento giusto?
    presumo di si, non ci sono dettagli sull'interfaccia ... un campo di testo con scritto di separare i pesi con la virgola se più di uno ... per esempio, ma ripeto, troppi pochi dettagli


    Originariamente inviato da palm84
    toFixed non l ho mai usato, come potrei piu semplicemente sostituirlo?
    toFixed esiste da quando esiste il JavaScript ... praticamente, perchè sostituirlo ? Non ricordo alternative valide nell'oggetto Math, quindi puoi toglierlo ma la matematia del JS attuale è un pò incasinata ... nella versione 2 dovrebbero risolvere


    Originariamente inviato da palm84
    nell esercizio 2 quello che piu è opportuno è il primo modo alternativo che hai elencato..
    lo sapevo .. il prototype ... e perchè mai sarebbe il più oppurtuno quando è l'unico che non permette di avere anche metodi e/o parametri privati ?
    Più opportuno per chi e per quale ragione ?
    JS non è solo prototype ... le classi si instanziano sia con prototype che senza, un costruttore è un costruttore e prototype serve solo per estendere (non a caso devi scriverlo dopo aver già creato la funzione costruttore)

    Ho scritto una pillola a riguardo, se interessato dagli un'occhiata.

    Originariamente inviato da palm84
    nel secondo invece xè metti la variabile Testo in fondo? nn va dichiarata prima ?
    Dopo aver studiato ANSI C Strict ho cambiato modo di scrivere codice ... le funzioni si dichiarano prima di tutto, seconde solo alle costanti globali, se presenti, poi le variabili ... ogni funzione un solo return in fondo alla funzione, questa la mia prassi in JS, PHP, Python, C, C# e ActionScript ... non è un modo migliore o più performante, è il mio modo ordinato di scrivere codice.

    In JS se non hai eventi modali (alert, prompt, confirm) puoi scrivere tutto un pò dove ti pare, purchè sia rispettato lo scope ... o in linea con il procedurale.
    Di tanti modi di scrivere JS il mio non è sicuramente sbagliato, poichè JS è C like, ed io scrivo Standard ANSI C like
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    perdonami, io sono ancora all inizio.. quindi per me vale ancora la regola della variabile inizializzata prima

    mi serve l'esercizio il piu basilare possibile .. devo capirci prima di tutto, poi li costruisco!

    è piu opportuno perchè piu simile a come faccio gli esercizi di solito.. se prendo una strada che mi torna bene per leggere/rielaborare, uso sempre quella

    cmq il prototype che sarebbe, estensioni di JS? ancora non l ho imparato, capisci a me.. cercavo di contenermi con lo sfruttamento possibile delle conoscenze base... quindi di fare esercizi piu possibile leggibili anche ha chi ha poche conoscenze di JS..
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  7. #7
    ci sei sempre?
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  8. #8
    cmq altre soluzioni per lo scarto sculture? la tua prevede che te inserisci ogni singola statua, mentre a me serviva inserire solo il peso totale di sculture e da questo ottenere gli scarti... mentre dal tuo esempio mi pare di capire che inserendo una statua alla volta si trova poi gli scarti finali
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

  9. #9
    Math.round(totale.peso/totale.sculture) ... ma ribadisco il "tema" sia troppo generico
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    in effetti si ... l'esercizio chiedeva di inserire una scultura, una alla volta, e poi doveva man mano darti il peso totale degli scarti sottraendola dal blocco di 3 kg... sti professori del caiser
    quindi il tasto INS ha avuto

    onclick="scarti ( scarti.b.value)"

    poi un altro tasto che restituisse il totale, oltre ai 2 campi di testo gia citati


    cmq grazie, l'esercizio che ho scelto dai tuoi 3 esempi era perfetto.. argomento chiuso
    Vendo componenti x car audio: ampli,sub e sistemi dvd/divx/lcd in PM.
    my pc: AMD64 3200,512mbx2 DDR500, raptor74gb+ wd 200gbSATA, ali 422w

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.