Vai al contenuto
PLC Forum


Esempio base di Array


Rexsus18

Messaggi consigliati

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

Modificato: da Rexsus18
Link al commento
Condividi su altri siti


Dire 'Dati di tipo array non è corretto' ... semmai userai dire : array di un determinato tipo di dati / strutture / array.

Comunque per non fare tante parole : Cosa sono gli array (in C ma il concetto è lo stesso anche per gli altri linguaggi di programmazione)

Modificato: da max.riservo
Link al commento
Condividi su altri siti

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 
Modificato: da marchinoktm
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...