{"id":342,"date":"2024-10-21T11:51:51","date_gmt":"2024-10-21T09:51:51","guid":{"rendered":"https:\/\/www.vr-m.it\/sito\/?p=342"},"modified":"2024-10-21T12:00:10","modified_gmt":"2024-10-21T10:00:10","slug":"operatori-ed-espressioni","status":"publish","type":"post","link":"https:\/\/www.vr-m.it\/sito\/2024\/10\/21\/operatori-ed-espressioni\/","title":{"rendered":"Operatori ed espressioni"},"content":{"rendered":"<p><em><strong>Lezione n.4: Node-RED<\/strong><\/em><\/p>\n<p>Un&#8217;<strong>espressione<\/strong> \u00e8 una combinazione di valori, variabili ed operatori che rappresentano un nuovo valore. Ad esempio, possiamo realizzare una nuova programmazione con Node-RED che ci consente di sommare due numeri provenienti da un blocco inject in ingresso.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-343\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma.png\" alt=\"\" width=\"696\" height=\"131\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma.png 696w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma-300x56.png 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Il blocco inject lo personalizziamo affinch\u00e9 inserisca nel <a href=\"https:\/\/www.vr-m.it\/sito\/2024\/10\/16\/267\/\">flusso<\/a> due msg, uno lo chiameremo <span style=\"color: #00ff00;\"><strong>msg.num_1<\/strong><\/span> ed un secondo lo chiameremo <strong><span style=\"color: #ff00ff;\">msg.num_2<\/span><\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-344\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/inject.png\" alt=\"\" width=\"1055\" height=\"460\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/inject.png 1055w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/inject-300x131.png 300w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/inject-1024x446.png 1024w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/inject-768x335.png 768w\" sizes=\"(max-width: 1055px) 100vw, 1055px\" \/><\/p>\n<p>A questo punto andremo a scrivere il codice presente nel blocco funzione denominato &#8220;SOMMA&#8221;<\/p>\n<div>\n<div><span style=\"color: #999999;\">1.<\/span> <span style=\"color: #0000ff;\">var<\/span> num_1;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #008000;\">\/\/dichiarazione variabile<\/span><\/div>\n<div><span style=\"color: #999999;\">2.<\/span> <span style=\"color: #0000ff;\">var<\/span> num_2;\u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #008000;\">\/\/dichiarazione variabile<\/span><\/div>\n<div><span style=\"color: #999999;\">3<\/span>. <span style=\"color: #0000ff;\">var<\/span> somma;\u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #008000;\">\/\/dichiarazione variabile<\/span><\/div>\n<div><span style=\"color: #999999;\">4.<\/span> num_1 = msg.num_1;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #008000;\">\/\/intercettiamo il msg.num_1 dal flusso e lo salviamo nella variabile num_1<\/span><\/div>\n<div><span style=\"color: #999999;\">5.<\/span> num_2 = msg.num_2;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #008000;\">\/\/intercettiamo il msg.num_2 dal flusso e lo salviamo nella variabile num_2<\/span><\/div>\n<div><span style=\"color: #999999;\">6.<\/span> somma = num_1 + num_2; <span style=\"color: #008000;\">\/\/assegniamo alla variabile somma un valore che \u00e8 dato dalla somma delle variabili num_1 e num_2<\/span><\/div>\n<div><span style=\"color: #999999;\">7.<\/span> msg.payload = somma;\u00a0 \u00a0 \u00a0 \u00a0\u00a0 <span style=\"color: #008000;\">\/\/assegniamo quindi al flusso in uscita la variabile somma, in modo che venga visualizzata nel debug<\/span><\/div>\n<div><span style=\"color: #999999;\">8.<\/span> <span style=\"color: #0000ff;\">return<\/span> msg;<\/div>\n<\/div>\n<div><\/div>\n<div>\n<div>Sostanzialmente come si vede nella programmazione su stante sono state inizialmente dichiarate le tre <strong><span style=\"color: #ce4289;\">variabili<\/span><\/strong>, successivamente \u00e8 stato individuato il messaggio proveniente dal flusso ed assegnato alle relative variabili interne alla funzione. Arrivati a questo punto \u00e8 stata utilizzata una nuova formattazione che ancora non avevamo studiato. Come \u00e8 intuitivo \u00e8 stato utilizzato un operatore <strong><span style=\"color: #ff0000;\">&#8220;+&#8221;<\/span><\/strong> per sommare due variabili contenenti dei numeri. Analizziamo quindi attentamente l&#8217;istruzione 6:<\/div>\n<div><img decoding=\"async\" class=\"alignnone size-full wp-image-345\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/num.png\" alt=\"\" width=\"1089\" height=\"203\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/num.png 1089w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/num-300x56.png 300w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/num-1024x191.png 1024w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/num-768x143.png 768w\" sizes=\"(max-width: 1089px) 100vw, 1089px\" \/><\/div>\n<div>In colore <strong><span style=\"color: #ce4289;\">viola<\/span><\/strong> abbiamo delle semplici <strong><span style=\"color: #ce4289;\">variabili<\/span><\/strong> precedentemente dichiarate, mentre con il <strong><span style=\"color: #2cd551;\">verde<\/span><\/strong> abbiamo un operatore <strong><span style=\"color: #2cd551;\">=<\/span><\/strong> che ci \u00e8 servito per assegnare un valore alla variabile <strong><span style=\"color: #ce4289;\">somma<\/span><\/strong>, in fine abbiamo con il rosso un<strong><span style=\"color: #ff0000;\"> operatore aritmetico +<\/span><\/strong> che ha permesso di sommare aritmeticamente la variabile<strong><span style=\"color: #ce4289;\"> num_1<\/span><\/strong> con la variabile <strong><span style=\"color: #ce4289;\">num_2.<\/span><\/strong><\/div>\n<\/div>\n<div><\/div>\n<div>In tale formattazione abbiamo quindi individuato gli <strong><span style=\"color: #2cd551;\">operatori di assegnamento<\/span><\/strong> gi\u00e0 precedentemente visti nella lezione <a href=\"https:\/\/www.vr-m.it\/sito\/2024\/10\/17\/le-variabili\/\">Le Variabili<\/a> e i nuovi <strong><span style=\"color: #ff0000;\">operatori aritmetici<\/span><\/strong>. Come vedremo gli operatori utilizzabili nella programmazione sono diversi:<\/div>\n<div><\/div>\n<div>\n<div><a href=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/3_operatori.pdf\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-346 size-full\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori.png\" alt=\"\" width=\"1611\" height=\"730\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori.png 1611w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori-300x136.png 300w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori-1024x464.png 1024w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori-768x348.png 768w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/operatori-1536x696.png 1536w\" sizes=\"(max-width: 1611px) 100vw, 1611px\" \/><\/a><\/div>\n<div><a href=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/3_operatori.pdf\">Scarica la mappa in PDF<\/a><\/div>\n<\/div>\n<div><\/div>\n<div>Ritornando quindi alla programmazione Node-RED viene inserito in fine la solita paletta di debug<\/div>\n<div><\/div>\n<div><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-343\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma.png\" alt=\"\" width=\"696\" height=\"131\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma.png 696w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/prog_somma-300x56.png 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/div>\n<div><\/div>\n<div>Cliccando sulla paletta inject abbiamo in uscita sul debug il messaggio &#8220;18&#8221; che corrisponde alla somma di num_1 e num_2<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-348\" src=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/debug.png\" alt=\"\" width=\"1032\" height=\"489\" srcset=\"https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/debug.png 1032w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/debug-300x142.png 300w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/debug-1024x485.png 1024w, https:\/\/www.vr-m.it\/sito\/wp-content\/uploads\/2024\/10\/debug-768x364.png 768w\" sizes=\"(max-width: 1032px) 100vw, 1032px\" \/><\/div>\n<div><\/div>\n<div>Ovviamente il risultato di questo sistema \u00e8 una costante, in quanto num_1 e num_2 non variano, ci\u00f2 significa che tale programmazione non ha nessuna utilit\u00e0. Stiamo imparando a gestire i dati con delle costanti, successivamente andremmo ad introdurre dei metodi di input che sfrutteranno l&#8217;interfaccia grafica, i quali ci daranno la possibilit\u00e0 di interagire con la nostra programmazione col fine di inserire dei valori variabili in ingresso.<\/div>\n<div><\/div>\n<div>Per prendere ancora confidenza con la programmazione utilizziamo un codice pi\u00f9 complesso:<\/div>\n<div>\n<div>\n<div><\/div>\n<div><span style=\"color: #999999;\">1.<\/span> var num_1;<\/div>\n<div><span style=\"color: #999999;\">2.<\/span> var num_2;<\/div>\n<div><span style=\"color: #999999;\">3.<\/span> var somma;<\/div>\n<div><span style=\"color: #999999;\">4.<\/span> var moltiplicazione;<\/div>\n<div><span style=\"color: #999999;\">5.<\/span> var divisione;<\/div>\n<div><span style=\"color: #999999;\">6.<\/span> num_1 = msg.num_1;<\/div>\n<div><span style=\"color: #999999;\">7.<\/span> num_2 = msg.num_2;<\/div>\n<div><span style=\"color: #999999;\">8.<\/span> somma = num_1 + num_2;<\/div>\n<div><span style=\"color: #999999;\">9.<\/span> moltiplicazione = \u00a0num_1 * num_2;<\/div>\n<div><span style=\"color: #999999;\">10.<\/span> msg.payload = <span style=\"color: #993300;\">&#8220;la somma \u00e8 uguale a: &#8220;<\/span> <span style=\"color: #0000ff;\"><strong>+<\/strong><\/span> <strong><span style=\"color: #ce4289;\">somma<\/span><\/strong> <strong><span style=\"color: #0000ff;\">+<\/span><\/strong> <span style=\"color: #993300;\">&#8221; | la moltiplicazione \u00e8 uguale a: &#8220;<\/span> <span style=\"color: #0000ff;\"><strong>+<\/strong><\/span> <strong><span style=\"color: #ce4289;\">moltiplicazione<\/span><\/strong>;<\/div>\n<div><span style=\"color: #999999;\">11.<\/span> return msg;<\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<div>La programmazione \u00e8 simile alla precedente ma varia nell&#8217;istruzione numero dieci, in quanto vediamo una formattazione pi\u00f9 complessa, approfondiamola:<\/div>\n<div><\/div>\n<div style=\"text-align: center;\">msg.payload = <span style=\"color: #993300;\">&#8220;la somma \u00e8 uguale a: &#8220;<\/span> <span style=\"color: #0000ff;\"><strong>+<\/strong><\/span> <strong><span style=\"color: #ce4289;\">somma<\/span><\/strong> <strong><span style=\"color: #0000ff;\">+<\/span><\/strong> <span style=\"color: #993300;\">&#8221; | la moltiplicazione \u00e8 uguale a: &#8220;<\/span> <span style=\"color: #0000ff;\"><strong>+<\/strong><\/span> <strong><span style=\"color: #ce4289;\">moltiplicazione<\/span><\/strong>;<\/div>\n<div><\/div>\n<div><strong><span style=\"color: #ce4289;\">somma <\/span><\/strong>e <strong><span style=\"color: #ce4289;\">moltiplicazione <\/span><\/strong>sono delle variabili<\/div>\n<div><span style=\"color: #993300;\">&#8220;la somma \u00e8 uguale a: &#8220;<\/span> e <span style=\"color: #993300;\">&#8221; | la moltiplicazione \u00e8 uguale a: &#8221; <\/span>sono delle stringhe di testo<\/div>\n<div><span style=\"color: #0000ff;\"><strong>+\u00a0<\/strong><\/span>\u00e8 un opereatore di concatenazione<\/div>\n<div><\/div>\n<div>Quindi l&#8217;output in uscita nel mio debug sar\u00e0: &#8220;la somma \u00e8 uguale a: 18 | la moltiplicazione \u00e8 uguale a: 80&#8221;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lezione n.4: Node-RED Un&#8217;espressione \u00e8 una combinazione di valori, variabili ed operatori che rappresentano un nuovo valore. Ad esempio, possiamo realizzare una nuova programmazione con Node-RED che ci consente di sommare due numeri provenienti da un blocco inject in ingresso. Il blocco inject lo personalizziamo affinch\u00e9 inserisca nel flusso due msg, uno lo chiameremo msg.num_1 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.vr-m.it\/sito\/2024\/10\/21\/operatori-ed-espressioni\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Operatori ed espressioni&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":349,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,18],"tags":[19],"class_list":["post-342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatica","category-sistemi","tag-node-red"],"_links":{"self":[{"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/posts\/342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/comments?post=342"}],"version-history":[{"count":3,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/posts\/342\/revisions"}],"predecessor-version":[{"id":357,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/posts\/342\/revisions\/357"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/media\/349"}],"wp:attachment":[{"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/media?parent=342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/categories?post=342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vr-m.it\/sito\/wp-json\/wp\/v2\/tags?post=342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}