User Tools

Site Tools


appunti3s:array

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
appunti3s:array [2019/06/29 15:38] profproappunti3s:array [2020/06/08 22:19] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +Attenzione: questa pagina è stata ;;aggiornata;; , vedere  [[appunti3s:tipi_di_dato_strutturato_array]]
  
 +====== Array ======
 +Il tipo array è un'eredità del linguaggio C. 
 +Mentre un tipo come //int// è detto //tipo semplice//, in quanto può contenere un solo valore. Un tipo //array// invece è detto "tipo strutturato", perché composto da più elementi.
 +In italiano vengono chiamati anche vettori, ma non per questo devono essere confusi con il tipo //%%std::vector%%//.
 +  * Un array è una struttura che raggruppa tanti elementi, tutti di uno stesso tipo.
 +  * Per indicare la posizione di un elemento dell'array si può usare un indice int o char.
 +  * Se un vettore è di 9 elementi, l'indice va da 0 a 8
 +
 +<file cpp 51.cpp> 
 +// questo programma è stato scritto da Fabio
 +// crea un array, lo inizializza e lo visualizza
 +#include <iostream>
 +int main()
 +{
 +  int vettore[9]={7,7,7,7,7,7,5,3,1};
 +  for (int indice=0; indice<9; indice++)
 +    std::cout << vettore[indice] << ' ' ; //notare la sintassi delle parentesi quadrate
 +  std::cout << std::endl;
 +  return 0;
 +}
 +</file>
 +
 +I vettori sono utili quando devo gestire grandi quantità di dati dello stesso tipo. 
 +Si può accedere, leggere e modificare un singolo elemento del vettore usando l'indice, usando le parentesi quadrate.
 +
 +Grazie alla presenza dell'indice le operazioni sui vettori possono essere automatizzate, ad esempio, percorrendo l'array usando un'istruzione di iterazione come //for//
 +
 +<file cpp 52.cpp> 
 +// questo programma è stato scritto da Fabio
 +// crea un array, lo inizializza e ne visualizza la somma di tutti gli elementi
 +#include <iostream>
 +int main()
 +{
 +  int totale=0;
 +  int vettore[9]={7,7,7,7,7,7,5,3,1};
 +  for (int indice=0; indice<9; indice++) // l'indice si può dichiarare dentro il for (solo quando serve)
 +    totale = totale + vettore[indice] ; //notare la sintassi delle parentesi quadrate
 +  std::cout << totale << std::endl;
 +  return 0;
 +}
 +</file>
 +
 +Rivedere il precedente esempio, immaginando di dover visualizzare e sommare 90 valori interi invece di 9. Come potrebbe essere risolto un problema del genere senza l'uso dei vettori?
 +
 +  * Il numero degli elementi deve essere stabilito al momento della compilazione.
 +    * solo per le variabili globali si può stabilire anche run time.
 +  * Il linguaggio **non** effettua controlli sul superamento dei limiti di un array
 +
 +Le variabili strutturate di tipo //array// derivano dal linguaggio C e sono scomode da usare perché, ad esempio, non c'è nessun controllo del superamento della posizione dell'ultimo elemento. Quindi, nel C++, al loro posto, in generale, è consigliabile usare degli //oggetti// chiamati //%%std::%%[[appunti3s:vector]]//
 +
 +===== Array e puntatori a....=====
 +
 +Si vedrà presto il legame tra questi due argomenti (vedi [[appunti3s:gestione_della_memoria#puntatori_a_qualcosa]] all'interno dell'argomento principale [[appunti3s:gestione della memoria]] )
 +
 +=====Array come stringhe di parole=====
 +Come è ben noto, in C++ per memorizzare una parola si usa il tipo //%%std::string%%//
 +In C gli array erano utilizzati anche per contenere una sequenza di caratteri, ma la sequenza deve terminare con il valore //\0// (Zero, da non confondere con il valore numerico intero Zero o con il carattere ASCII '0').  
 +
 +Esiste una funzione che converte le variabili C++ %%std::string%% in array in stile C.
 +<code> 
 +std::string variabileString = "ciao";
 +char a1[50] = c_str(variabileString);
 +</code>
 +Esempio in cui viene usata proprio questa funzione: [[appunti3s:stream#file]]