- Variabili locali
- Parametri Formali
- Variabili Statiche
- Variabili Globali
- Variabili di Input
- Variabili Esterne
- Inizializzazione delle Variabili
- Visibilità Ambito(_*scope) e Durata delle Variabili(_*lifetime)
- Creazione ed Eliminazione di oggetti
Variabili
Dichiarazione delle variabili
Le variabili devono essere dichiarate prima di essere usate. Nomi unici vengono usati per identificare variabili. Per dichiarare una variabile, è necessario specificare il tipo ed il nome univoco. Dichiarazione di variabile non è un operatore.
Tipi semplici sono:
- char, short, int, long, uchar, ushort, uint, ulong – integers;
- color - numero intero che rappresenta il colore-RGB;
- datetime - la data e l'ora, un numero intero senza segno che contiene il numero di secondi dall'ora 0 del 1 gennaio 1970;
- bool - valori booleani true e false;
- double - numero in virgola mobile a doppia-precisione;
- float - numero in virgola mobile a precisione-singola;
- string - stringhe di caratteri.
Esempi:
string szInfoBox;
|
I tipi complessi o composti:
Le strutture sono tipi di dati composti, costruiti utilizzando altri tipi.
struct MyTime
|
Non è possibile dichiarare variabili del tipo di struttura fino a che non si dichiarara la struttura.
L' Array è la sequenza indicizzata di tipi di dato identici:
int a[50]; // Array uni-dimensionale di 50 interi.
|
Solo un numero intero può essere un indice di array. Non più di quattro dimensioni array sono ammesse. La numerazione degli elementi inizia con 0. L'ultimo elemento di una matrice uni-dimensionale ha il numero che è di 1 inferiore alla grandezza della matrice. Ciò significa che la chiamata per l'ultimo elemento di un array composto da 50 numeri interi apparirà come a[49]. La stessa cosa vale per array multidimensionali: Una dimensione è indicizzata da 0 fino alla grandezza della dimensione -1. L'ultimo elemento di un array bi-dimensionale dall'esempio apparirà come m[6] [49].
Array statici non possono essere rappresentati come timeseries, ad es. la funzione ArraySetAsSeries(), che definisce l'accesso ad elementi dell'array dalla fine all'inizio, non può essere applicata ad essi. Se si desidera fornire l'accesso ad un array così come nelle timeseries, utilizzare l'oggetto array dinamico.
Se vi è un tentativo di accesso di fuori del range dell'array, il sottosistema di esecuzione genererà un errore critico ed il programma verrà interrotto.
Metodi integrati per lavorare con gli array #
Le funzioni della sezione Funzioni con gli Array, così come i metodi integrati possono essere utilizzati per gestire gli array:
Metodo |
Analogo |
Descrizione |
---|---|---|
void array.Fill(const scalar value, const int start_pos=0, const int count=-1); |
Riempie l'array con il valore specificato |
|
void array.Free(); |
Rilascia il buffer dell'array dinamico e imposta la dimensione zero a 0 (zero) |
|
int array.Resize(const int range0_size, const int reserve); int array.Resize(const int range_sizes[], const int reserve); |
Imposta una nuova grandezza nella prima dimensione dell'array |
|
int array.Print(); |
Visualizza i valori di un array di tipo semplice nel journal |
|
int array.Size(const int range=-1); |
Restituisce il numero di elementi dell'intero array (range=-1) o della dimensione dell'array specificata |
|
bool array.IsDynamic(); |
Verifica se l'array è dinamico |
|
bool array.IsIndicatorBuffer(); |
|
Verifica se l'array è un buffer di un indicatore |
bool array.IsSeries(); |
Verifica se l'array è una timeseries |
|
bool array.AsSeries(); |
Controlla la direzione di indicizzazione dell'array |
|
bool array.AsSeries(const bool as_series); |
Imposta la direzione di indicizzazione nell'array |
|
int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt); |
Copia i valori dell'array in un altro array |
|
int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt); |
Restituisce il risultato del confronto di due array di tipo semplice o di strutture personalizzate |
|
int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt); |
Inserisce il numero specificato di elementi da un array sorgente a uno ricevente partendo da un indice specificato |
|
int array.Remove(const int start_pos, const int count); |
Rimuove il numero specificato di elementi dall'array partendo dall'indice specificato |
|
int array.Reverse(const int start_pos, const int count); |
Inverte il numero specificato di elementi nell'array partendo dall'indice specificato |
|
bool array.Swap(array& arr[]); |
Scambia il contenuto con un altro array dinamico dello stesso tipo |
|
void array.Sort(sort_function); |
Ordina gli array numerici in base alla prima dimensione |
|
int array.Search(scalar value, search_function); |
Restituisce l'indice del primo elemento individuato nella prima dimensione dell'array |
|
int array.Find((scalar value, search_function); |
|
Esegue una ricerca nell'array utilizzando la funzione passata e restituisce l'indice del primo elemento rilevato |
array array.Select(scalar value, search_function); |
|
Esegue una ricerca nell'array utilizzando la funzione passata e restituisce l'array con tutti gli elementi rilevati |
Specificatori di accesso
Specificatori di accesso definiscono come il compilatore può accedere a variabili, membri di strutture o classi.
Lo specificatore const dichiara una variabile come una costante, e non consente di modificare questa variabile durante l'esecuzione. E' consentita una singola inizializzazione di una variabile quando questa si dichiara.
Esempio:
int OnCalculate (const int rates_total, // size of the price[] array
|
Per accedere ai membri di strutture e classi utilizzare i seguenti qualificatori:
- public - consente l'accesso illimitato alla variabile o al metodo della classe
- protected - permette l'accesso da metodi di questa classe, come pure da metodi di classipubblicamente ereditate. Altro accesso è impossibile;
- private - consente l'accesso a variabili e metodi della classe solo da metodi della classe stessa.
- virtual - si applica solo ai metodi della classe (ma non ai metodi di strutture) e dice al compilatore che il metodo deve essere inserito nella tabella delle funzioni virtuali della classe.
Classi di memorizzazione
Ci sono tre classi di memorizzazione: static, input ed extern. Questi modificatori di una classe di memorizzazione indicano esplicitamente al compilatore che le variabili corrispondenti sono distribuite in un area di memoria pre-assegnata, che è chiamata il pool globale. Inoltre, questi modificatori indicano il trattamento speciale dei dati delle variabili. Se una variabile dichiarata a livello locale non è una static , la memoria per tale variabile viene assegnata automaticamente allo stack programma. La liberazione della memoria allocata per un array non-statico viene anche eseguita automaticamente quando si va oltre l'area di visibilità del blocco, in cui è dichiarato l'array.
Vedi anche
Tipi di dati, Incapsulamento ed estensibilità dei Tipi,Inizializzazione delle Variabili, Visibilità Campo di Applicazione e Durata delle Variabili, Creazione ed Eliminazione di Oggetti, Membri Statici di una Classe