Jump to content
PLC Forum


Rexsus18

Esempio base di Array

Recommended Posts

Rexsus18

Buonasera a tutti,

ho sentito parlare tantissimo di dati di tipo Array. Ma non riesco a trovare un esempio che mi faccia comprendere a pieno le sue potenzialità. A cosa servono questi tipi di dati? Riuscite a farmi un esempio concreto in base alla vostra esperienza?

Grazie

Edited by Rexsus18

Share this post


Link to post
Share on other sites

marchinoktm

Non so se ti può essere utile come spiegazione , ma io ho sempre insegnato cosi l'array .......

l'utilizzo di array (in qualsiasi linguaggio) è una metodologia di programmazione molto potente; ti permette di utilizzare strutture che possono contenere migliaia di dati e con la variazione di alcuni parametri, puoi fare confronti , controlli, scritture in modo dinamico e senza scrivere molto codice di programmazione .

 

Per capire ... immagina di avere una scarpiera con 5 ripiani , ed ogni ripiano può contenere fino a 5 paia di scarpe.... il tuo totale è di 25 paia si scarpe ; quindi in una DB dovrai scrivere 25 variabili ad esempio di natura INT, piu la variabile count (int).

Se dovessi controllare quanti scarpe sono ad esempio di colore rosso (per semplicità mettiamo il confronto 1 == rosso nel nostro esempio ), 

Quote

IF scarpa_1 = 1 THEN
    // Se il valore è uguale a 1 allora la scarpa è rossa 
    count := count + 1;
END_IF
........
IF scarpa_25 = 1 THEN
    // Se il valore è uguale a 1 allora la scarpa è rossa 
    count := count + 1;
END_IF

nel codice sopra riportato, dovrai inserire fino a 25 confronti e sapere che tutto il codice deve essere eseguito una sola volta , altrimenti la variabile count incrementa sempre .

 

Con gli array la dichiarazione deve essere fatta nel seguente modo 

  • scarpa [0..24 array of int] == partiamo da 0 fino a 24 quindi in totale sono 25  
  • inc variabili int la variabile indice che ti permette di controllare tutte le tue scarpe

il tuo codice si riduce cosi :

Quote

IF #inc <= 24 THEN  // fin tanto che l'inc è uguale o minore di 24 fa il controllo,quando è > di 24 non esegue piu l'if
    IF #scarpa[#inc]= 1 THEN // Se la scarpa è == 1 allora è di colore rosso 
        #count := #count + 1;
    END_IF;
    #inc := #inc + 1;
END_IF;

alla fine del codice appena scritto ,nella variabile  count avrai il totale di tutte le scarpe rosse presenti nella tua scarpiera. 

VANTAGGI :

  • Codice molto piu snello 
  • Se dovessi cambiare il confronto, lo cambi in un solo punto e non nei 25 confronti del primo esempio
  • Nei 80% dei casi con gli array utilizzi anche i cicli FOR per fare dei confronti o scritture molto più grandi 

SVANTAGGI 

  • Non sono semplici da capire ed è facile sbagliare gli indirizzi di memoria e quindi mandare in Stop la CPU 

 

Con gli array puoi utilizzare anche i multi array , che sono alla fine matrice ... esempio se nel nostro caso vogliamo sapere per ogni ripiano, quante paia di scarpe rosse ci sono allora avremmo dovuto scrivere 

  • scarpa [0..4,0..4 array of int] == il primo valore [0..4] sta indicare i ripiani da 1 a 5 ma partiamo da zero per semplicità, è il secondo valore [0..4]sta per il numero massimo di scarpe presenti nel nostro ripiano cioè 5.
  • count [0..4]array of int
  • inc variabili int la variabile indice che ti permette di controllare tutte le tue scarpe
Quote

IF #ripiano <= 4 THEN  // fin tanto che l'inc è uguale o minore di 4 fa il controllo
    IF #scarpa[#ripiano,#inc]= 1 THEN // Se la scarpa è == 1 allora è di colore rosso 
        #count[#ripiano] := #count[#ripiano] + 1;
    END_IF;
    IF #inc > 4 THEN // quando abbiamo controllato tutte le scarpe nel ripiano passiamo a quello successivo aumentando il ripiano
        // ed azzerando la varibile inc che mi permette di cominciare dalla prima scarpa del ripiano successivo 
        #inc := 0;
        #ripiano := #ripiano + 1;
    ELSE
        #inc := #inc + 1;
    END_IF;
END_IF;

alla fine del codice appena scritto ,nella variabile 

  • count[0]== avrai il valore delle scarpe rosse ripiano 1 
  • count[1]== avrai il valore delle scarpe rosse ripiano 2
  • count[2]== avrai il valore delle scarpe rosse ripiano 3 
  • count[3]== avrai il valore delle scarpe rosse ripiano 4 
  • count[4]== avrai il valore delle scarpe rosse ripiano 5 
Edited by marchinoktm

Share this post


Link to post
Share on other sites
Rexsus18

Perfetto!! Adesso è tutto molto più chiaro. Grazie mille del tempo e delle risposte!

Adesso ho capito 😄.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...