priorità degli operatori

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
proseguo qui la discussione iniziata con vale in
http://forum.mrwebmaster.it/javascript/30165-js-calcolo-area-aiuto-programmino.html#post112196
perchè si stava andando ot, ma ritengo che comunque sia una discussione interessante ed istruttiva.

parliamo dell priorità degli operatori (mi limito a quelli artimetici, ma il discorso è analogo per quelli di confronto)
da quello che so io in php, js e, salvo che non sia cambiato qualcosa dai tempi in cui li usavo, fortran, basic, C (non C++), pascal la priorità degli operatori aritmetici è sempre stata la seguente (in ordine di priorità da maggiore a minore)

1°: () parentesi
2°: * / % moltiplicazione, divisione, resto intero
3°: + - somma e sottrazione
4°: = assegnazione
(in alcuni linguaggi esisteva anche il ^, elevazione a potenza, che viene dopo le parentesi e prima di moltiplicazione divisione e resto)

per js (e valido anche per gli altri linguaggi citati) priorità degli operatori vedi:

http://books.google.it/books?id=wFJ...epage&q=javascript operators priority&f=false

quindi, indipendentemente dalla sequenza con cui scrivo l'operazione artimetica, esempio:

2+3*5 darà sempre 17
così come
3*5+2 sempre 17
questo perchè l'operatore * (ma potrebbe essere / o %) ha la precedenza sull'operatore + (ma potrebbe essere -)
l'unico modo per modificare l'ordine delle operazioni è introdurre un operatore che preceda es. il *, non è altro che la parentesi, quindi
(2+3)*5 darà sempre 25
come pure
5*(3+2) darà sempre 25
ultimo (non come importanza ma come precedenza) è = assegnazione
infatti
A = 2+3*5 assegnerà alla variabile A il valore 17, cioè vengono eseguiti gli operatori in ordine di precedenza, prima la moltriplicazione 3*5 il risultato sommato a 2 e il risultato finale assegnato ad A
(analoghi gli altri)

quello che confonde un po' vale è che forse si ricorda la notazione polacca inversa (NRP) utilizzata (oggi non so) una volta da alcune calcolatrici HP (non le più semplici) deve la sequenza diventava una pila e, al contrario es. della calcolatrici texas, per fare
2+3*5, se facevo (come a prima vista apparirebbe logico per la notazione normale)
2 [enter]
3 [enter]
+
5 [enter]
*
ottengo 25, per ottenere 17 avrei dovuto fare
3 [enter]
5 [enter]
*
2 [enter]
+
ottenendo 17
(per fortuna l' NRP è utilizzata solo da qualche sofisticato più unico che raro).
quindi concludendo: in qualsiasi operazione aritmetica (con int o float) indipendentemente dalla sua lunghezza o complessità
prima vengono eseguite le operazioni racchiuse tra parentesi e, al loro interno, prima le operazioni di moltiplicazione o divisione poi le somme o sottrazioni
poi fuori delle parentesi prima le moltiplicazioni e/o divisione poi le somme è/o le sottrazioni (non propio così, ma il concetto/risultato è questo)

spero di aver fatto un po' di chiarezza


dimenticavo
ho visto che in un punto hai scritto
5+6/3 = " + ((5+6)/3))

no
5+6/3 != " + ((5+6)/3))
 
Ultima modifica:

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

scusa a me sembra che stiamo dicendi le stesse cose.

priorità degli operatori aritmetici è sempre stata la seguente (in ordine di priorità da maggiore a minore)

1°: () parentesi
2°: * / % moltiplicazione, divisione, resto intero
3°: + - somma e sottrazione
4°: = assegnazione

Giusto.

per l'elevamento alla potenza si usa un metodo dell'oggetto Math non più ^

Math.pow(base,esponente) - Questo metodo visualizza il valore della base alla potenza dell'esponente.

Math.pow(2,3) Risultato 8

1) 2+3*5 darà sempre 17
così come
2) 3*5+2 sempre 17

1) va bene 3*5 = 15 + 2 Risultato 17
2) va bene 3*5 = 15 + 2 Risultato 17

prima esegue le moltiplizazioni o divisioni nell'ordine scritto o

A = 2+3*5 assegnerà alla variabile A il valore 17, cioè vengono eseguiti gli operatori in ordine di precedenza, prima la moltriplicazione 3*5 il risultato sommato a 2 e il risultato finale assegnato ad A
(analoghi gli altri)

Giusto, utilizzato per non dover riscrivere (se utilizzato o richiesto più di una volta e per aggiungerla a eventuali altri calcoli) per non dover riscrivere 2+3*5 tutte le volte, = è un'operatore di assegnazione.

A = 2+3*5
document.write(A) e mi stampa 17

parseFloat per i numeri con decimali parseInt per gli interi.

2 [enter]
3 [enter]
+
5 [enter]
*
ottengo 25

Come scrivere su una calcolatrice 2+3 = 5 * 5 = 25

3 [enter]
5 [enter]
*
2 [enter]
+
ottenendo 17

Come scrivere su una calcolatrice 5*3 = 15 * 2 = 17

I tipi di numeri utilizzati anche per conversioni

Decimale
Esadecimale
Binario
Ottale

Booleano
Long
Char
Byte
double

ES: decimale 125 = esadecimale 7D conversione in base 16

document.write("Decimale 125: Risultato in Esadeciomale Base 16 = " + (125).toString(16)) // Risultato 7d

Numeri Decimali: numeri compresi da 0 e 9 (set , (0-9)), es: 0, 1, 125, 2500 ecc..
Numeri Esadecimali: numeri compresi tra 0 e 9 (set) Lettere A B C D E F (A=10, B=11, C=12 D=13, E=14, F=15).
Numeri Binari: numeri compresi tra 0 e 1 es: 1111101
Numeri Ottali: numeri compresi tra 0 e 7

il risultato della conversione di un N° decimale del corrispettivo esadecimale, Binario e ottale di 125

Decimale 125
Esadecimale 7D
Binario 1111101
Ottale 175

In risposta a:

dimenticavo
ho visto che in un punto hai scritto
5+6/3 = " + ((5+6)/3))

no
5+6/3 != " + ((5+6)/3))

hai ragione ho fatto copia e incolla delle stringhe ma modificato la formula.


Codice:
<script type="text/javascript">
document.write("1+2*3 = " + (1+2*3)) // = 7
document.write("<br>")
document.write("5+6/3 = " + (5+6/3)) // = 7
document.write("<br>")
document.write("4-7%3 = " + (4-7%3)) // = 3
document.write("<br>")
document.write("6^2 = " + Math.pow(6,2)) // = 36
document.write("<br>")
document.write("2+3*5 = " + ((3+2)*5)) // = 25
document.write("<br>")
document.write("Decimale 125: Risultato in Esadecimale Base (16) = " + (125).toString(16)) // = 7d
</script>

comunque sono tutti errati (gli scritti in stringa, per far vedere quale operazione veniva eseguita e quale è il risultato finale).

Codice:
<script type="text/javascript">
document.write("(1+2)*3 = " + ((1+2)*3)) // = 9
document.write("<br>")
document.write("(5+6)/3 = " + ((5+6)/3)) // = 3.6666666666666665
document.write("<br>")
document.write("4-(7%3) = " + (4-(7%3))) // = 3
</script>

Buona conversazione e esempi, saluti Valeria.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Una svista anche per Vale ogni tanto

Come scrivere su una calcolatrice 5*3 = 15 * 2 = 17

Come scrivere su una calcolatrice 5*3 = 15 + 2 = 17

:fonzie:
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
questa discussione dovrebbe andare in "raccolta script per forumisti" nella sezione javascript ...secondo me, voi che ne dite?

Ciao Max,

una discussione da mettere in rilievo e nella sezione apposita, anche se mancano ancora molte info, es: tutti i metodi e le proprietà dell'oggetto Math per eseguire operazioni matematiche, che sono 23, la conversione del tipo di dati ecc..

Valeria.
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Si però dovresti impostarlo un po meglio

Utilizzare i tag code poi usare i colori evitare la confusione.

Comunque ormai che è qui. Magari si riscrive da capo in modo più ordinato.
A domani.

by max
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no secondo me non va in una sez di linguaggio specifica perchè è una discussione a carattere generale, anche se viene citato js la priorità degli operatori è valida per php, asp..... e, penso, molti altri (anche excell segue tale priorità =A1+B1*C1 prima * poi +).
forse, ampliata agli altri operatori e sistemata, andrebbe in sez programmazione
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
In più sezioni

guardando gli script di valeria subito mi è venuto in mente javascript,
visto che abbiamo una bella discussione piena di script molto utili a questa comunity.
Mettendo varie istruzioni di altri linguaggi tutti in una discussione si farebbe confusione.
Bisogna distiguere i vari linguaggi.

..... e, penso, molti altri (anche excell segue tale priorità =A1+B1*C1 prima * poi +).
Excel si scrive con una sola l.

Ciao Signor Gattino

au revoir
by max :fonzie:
 
Discussioni simili
Autore Titolo Forum Risposte Data
Elena Lazzarini [Magento] Prezzo variabile in base alla priorità di spedizione Magento 0
A [PHP] Priorità annunci nel listato PHP 7
X Invio mail: come si legge/ottiene la priorità? PHP 1
D priorità bottoni con invio HTML e CSS 1
G Perché il mio sito su Google news fa vedere le immagini degli articoli la mia foto profilo? WordPress 1
A media degli elementi estratti da una query MySQL 0
P Errore nell'indirizzo degli elementi HTML e CSS 2
Shyson Mettere categorie nelle anteprime degli articoli PHP 1
MarcoGrazia foreign key cancellazione degli alberi figli di un nodo mancante MySQL 0
Max 1 Importante Sostieni Fondazione Banca degli Occhi, dona il tuo 5x1000 Altri Annunci 2
G Fare uno sfondo con il prato e degli alberi Photoshop 0
V [CSS] Uso degli id HTML e CSS 2
Max 1 Grave episodio alla Fondazione Banca degli Occhi di Mestre Discussioni Varie 7
filograndipad2 Da dove arrivano i parametri degli event handler? Sviluppo app per Android 1
filograndipad2 Esempi chiari e completi sul funzionamento degli eventi in Java Java 1
felino [WordPress] File di log degli errori WordPress 6
S [Javascript] [HTML] problema nella stampa degli elementi della pagina Javascript 3
N Affidabilità degli e-commerce Leggi, Normative e Fisco 0
S Codice degli Headings SEO e Posizionamento 5
M Dimensioni diverse degli input text tra Firefox per Linux e Windows HTML e CSS 3
L Il titolo degli articoli e tag è diverso da quello impostato da me WordPress 6
A Spostare Degli Oggetti in Più PictureBox in VB 6 Presentati al Forum 0
Marco_88 Verificare la selezione degli elementi dom jQuery 2
A come eliminare i suggerimenti della barra degli indirizzi su google chrome? Windows e Software 3
felino [Virtuemart 1.1.9] Gestione ordini: export ordini attuali e reset degli stessi Joomla 0
felino Visualizzare degli input dinamicamente dentro un div jQuery 1
filippino Rating stato d'animo degli utenti a fine post WordPress 1
braccobaldo Cooperativa degli sviluppatori Leggi, Normative e Fisco 0
andry79fi PLUGIN (o script) per Pagina Facebook con INTERVENTI degli utenti WordPress 0
felino [JS] Passare un array ed effettuare la somma degli elementi Javascript 2
felino Ordinamento dinamico degli elementi visualizzati PHP 6
L elenco anagrafe degli utenti PHP 5
Z Cambiare colore alla finestra degli avvisi CMS (Content Management System) 1
M Cambiare le impostazioni di visualizzazione degli strumenti cs 4 Photoshop 1
S Nascondere nome pagina web dalla barra degli indirizzi HTML e CSS 2
V Invio E-Mail con la notifica degli ordini effettuati PHP 2
zighy memorizzazione degli elementi PHP 22
minatore Gestione degli apostrofi in php PHP 3
S wall typo fb o twitter ok ---- ma non vede i post degli amici PHP 1
F Memorizzazione degli Acquisti fatti sul SitoWeb da parte di diversi utenti Database 1
Frank10 utenti windows 7 e permessi degli account [era: E' possibile creare due Users che:] Windows e Software 2
C Cross-browser, problemi con la gestione degli eventi da tastiera Javascript 0
R YouMood: il social network degli stati d'animo Presenta il tuo Sito 0
L icone degli strumenti di disegno Webdesign e Grafica 1
O Filemaker 10 Advanced - barra degli strumenti Database 0
R Impedire l'accesso a una pagina dalla barra degli indirizzi PHP 27
P Gestione degli errori di un form PHP 1
N insegreto.it , tutti i segreti degli italiani Presenta il tuo Sito 9
S come fare la somma degli articoli del carrello PHP 6
A compaiono e scompaiono icone barra degli strumenti Sicurezza e Virus 2

Discussioni simili