Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-10-2007, 10:37   #1
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
C-Cosa sono gli array multidimensionali???

Ciao a tutti!!!
Qulacuno mi può spiegare cosa sono gli array multidimensionali in C???
Dato che io non è che di programmazione sono proprio un esperto potreste fare una spiegazione abbastanza di base???
Grazie moltissimo.
Ciao.

P.S:di base, però solo per gli array multidimensionali, gli array so cosa sono.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 10:43   #2
anonimizzato
 
Messaggi: n/a
Non conosco C comunque un array multidimensionale in qualsiasi linguaggio di programmazione è semplicemente un array che al proprio interno contiene valori che possono a loro volta essere degli array.

Una sorta di array annidati.

es: PHP
Codice PHP:
<?php
$shop 
= array( array( Title => "rose"
                      
Price => 1.25,
                      
Number => 15 
                    
),
               array( 
Title => "daisy"
                      
Price => 0.75,
                      
Number => 25,
                    ),
               array( 
Title => "orchid"
                      
Price => 1.15,
                      
Number => 
                    
)
             );
?>
  Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 10:48   #3
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Ti ringrazio per la risposta.
Però nella guida di HTML.it che 'sto seguendo per imparare il C cera questa spiegazione e in più delle altre affermazioni che non sono sicuro di aver compreso:
Quote:
Originariamente inviato da HTML.it
Ovviamente la potenza degli array risiede anche nel fatto che si possono usare degli array multidimensionali. Come? in pratica ogni elemento contenuto da un array è a sua volta un array; in questo modo si possono rappresentare facilmente tabelle e matrici, o qualunque altra cosa che richieda un rappresentazione anche superiore, si pensi a programmi di grafica tridimensionale, dove un array cubico può essere usato per disegnare i punti all'interno dello spazio tridimensionale creato, o ad un array a quattro dimensioni, che può servire per registrare anche la variabile tempo.

Con gli array multidimensionali si possono rappresentare insomma cose che hanno più di una dimensione in maniera facile ed intuitiva. L'esempio sotto proposto usa un array bidimensionale per definire una matrice di N righe ed M colonne:

Quote:
Originariamente inviato da codice esempio
int matrix[n][m];
i cui elementi possono essere, ad esempio, stampati, utilizzando solo due cicli for, come mostrato qui sotto:
Quote:
Originariamente inviato da codice esempio
int n = 10;
int m = 12;
int matrix[n][m];
int i;
int j;

for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
printf("%d", matrix[i][j]);
}
printf("n");
}
Mi potreste spiegare il siginficato???
Il link della pagina è questo.
Grazie, ciao.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 10:55   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Sai già che un array è una lista di componenti. Un array di 10 interi è un elenco di 10 celle ognuna delle quali può contenere un numero intero. Ogni cella salvo la prima ha una cella precedente, ogni cella salvo l'ultima ha una cella successiva eccetera eccetera.

Un array multidimensionale è:

prima di tutto un array quindi è un elenco, una lista di celle che possono contenere dei valori. Da qui non si scappa.

Ogni cella di un array multidimensionale è a sua volta un array, cioè un elenco di celle. Questi secondi array hanno tutti quanti la stessa dimensione. Questa seconda dimensione, questa seconda quantità di componenti che puoi immagazzinare in questi array, è ciò che rende multi-dimensionale l'array. C'è una prima dimensione, il numero di celle dell'array, è c'è una seconda dimensione, il numero di celle di ogni array contenuto nelle celle del primo.

Così come accade per il primo array, anche i secondi array possono a loro volta contenere altri array. In questo caso le dimensioni saranno tre. La quantità di celle del primo array, la quantità di celle di ognuno degli array contenuti nelle celle del primo, la quantità di celle di ognuno degli array contenuti nelle celle dei secondi array, contenuti nelle celle del primo.

Si parla di array multidimensionale quando per ogni livello la dimensione degli array è identica e immutabile. Se la dimensione degli array appartenenti ad uno stesso livello può variare allora siamo di fronte ad un array di array. In C è possibile avere entrambi. La notazione:

int[5][4]

indica un array multidimensionale (in questo caso a 2 dimensioni): abbiamo un primo array di 5 componenti (prima dimensione) dove ognuno dei componenti è un array che può contenere 4 numeri interi (seconda dimensione). Lo stesso vale nel caso:

int[5][10][20]

Qui abbiamo un array di 5 componenti (prima dimensione) ciascuno dei quali è un array di 10 componenti (seconda dimensione) ciascuno dei quali è un array che può contenere 20 numeri interi (terza dimensione).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:04   #5
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Una spiegazione più dettagliata non poteva esserci.
Grazie mille.
By.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:15   #6
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
Ti ringrazio per la risposta.
Però nella guida di HTML.it che 'sto seguendo per imparare il C cera questa spiegazione e in più delle altre affermazioni che non sono sicuro di aver compreso:


Mi potreste spiegare il siginficato???
Il link della pagina è questo.
Grazie, ciao.
Un array multidimensionale, se bidimensionale come in questo caso dicesi matrice sinonimo di tabella è formato da un certo numero di righe ed un certo numero di colonne.

Nel tuo caso hai m righe ed n colonne quindi hai una tabella di 12 righe e 10 colonne come puoi vedere dalla dichiarazione delle variabili.

Si presuppone che tu usi una matrice per metterci qualcosa dentro (dati). Esattamente come faresti con una tapella in HTML o di EXCEL ogni elemento della tabella conterrà qualcosa, nel tuo caso conterrà VALORI INTERI, te lo dice la dichiarazione della matrice stessa tramite questa dichiarazione int matrix[n][m]; che sostanzialmente la puoi leggere come: "Crea un array bidimensionale (matrice) chiamato matrix di n righe ed m colonne che contiene valori interi (per l'int iniziale che come per le variabili ti stabilisce il TIPO DI DATO che quella struttura dovrà contenere...è una cosa molto importante sapere con che dati stai operando...questa matrice potrà contenere solo valori numerici interi).

Poi si presuppone che tale tabella venga popolata in qualche modo con dei valori (li puoi mettere a mano con una dichiarazione stile array, puoi farli mettere ad un programma in maniera random, etcetc) ma adesso non ti frega cosa ci sia dentro.

Nel programma vengono dichiarate anche due variabili intere i, j che vengono usate come indici per scorrere le righe e le colonne della tua tabella matrix.

Essa viene "esplorata" tramite le seguenti linee di codice:

Codice:
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
printf("%d", matrix[i][j]);
}
printf("n");
}
Cosa fanno queste linee di codice?
è molto semplice, devi scorrere riga per riga tutte le 12 colonne, per cui usi 2 cicli annidati:

Il ciclo più interno scorre le n righe, quello più esterno scorre le m colonne.
Che succede? sostanzialmente questo

Inizzi con l'esecuzione del ciclo più esterno:

stai posizionato sulla colonna 0, parte il secondo ciclo che come prima cosa stampa a video il valore contenuto nella prima riga prima colonna ovvero il valore contenuto in matrix[0][0] tramite questa operazione:
printf("%d", matrix[i][j]);
che dice di stampare il valore decimale contenuto nella matrice matrix nella posizione identificata dall'indice di riga i e dall'indicedi colonna j.
Poi il ciclo annidato più interno rinizia e l'indice j viene incrementato di 1 quindi stampa il valore intero contenuto in matrix[0][1], quindi rinizia e stampa matrix[0][2]

Questo ciclo interno si fermerà quando l'indice j sarà uguale ad n (detto in maniera rozza ma efficace quando le righe della prima colonna sono state tutte lette), allora rinizierà il ciclo esterno con i incrementato di 1 (quindi i=1) e riprenderà il ciclo interno come prima ma questa volta stampando tutte le righe della seconda colonna e così via finchè non ha stampato tutta la matrice a video.

In pratica questo programma scrive prima tutti i valori della prima colonna, poi della seconda colonna, poi della terza e così via fino alla fine della matrice.

Spero di non aver detto cazzate ma è aprecchio che non tocco C cmq dovrebbe esse giusto
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:27   #7
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Ringrazio anche te.
C'è da dire che sarebbe molto più semplice l'HTML per creare le tabelle!!!
Ti ringrazio ancora.
Ciao.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:38   #8
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
Ringrazio anche te.
C'è da dire che sarebbe molto più semplice l'HTML per creare le tabelle!!!
Ti ringrazio ancora.
Ciao.
questo non è ancora nulla :-P

Pensa che il C è già un linguaggio ad un livello piuttosto alto (oddio non altissimo...hai i puntatori, cazzi e mazzi e puoi operare direttamente sulla macchina però almeno hai modo di far vedere al linguaggio una array multidimensionale come una tabella).

In realtà quellla tua matrice la macchina non la vede assolutamente come ua tabella...la rappresenta come un unico array monodimensionale e se devi lavorare in assembler sono cazzi tuoi tener conto di quanto è lunga ogni singola porzione dell'array dhe definisce per esempio una riga =) hehehe c'è di peggio
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:45   #9
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
E pensare che avevo scelto il C per iniziare dato che si diceva che era il linguaggio di programmazione più facile!!!
Beh, ci credo anchio che in assembler sarà un casino (praticamente l'assembler è come il linguaggio macchina)!!!
Volevo farti una domanda forse un po' OT:secondo te qual è il linguaggio di programmazione più facile???
Grazie, ciao.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:50   #10
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
E pensare che avevo scelto il C per iniziare dato che si diceva che era il linguaggio di programmazione più facile!!!
Beh, ci credo anchio che in assembler sarà un casino (praticamente l'assembler è come il linguaggio macchina)!!!
Volevo farti una domanda forse un po' OT:secondo te qual è il linguaggio di programmazione più facile???
Grazie, ciao.
Non esiste come domanda...diciamo che un linguaggio devi vedere a cosa ti serve...C non è facile eprchè và abbastanza a basso livello...cioè usando i puntatori puoi operare anche con le singole regioni di memoria...
Diciamo che col C a meno che non sei un mostro non ci fai nulla...quindi se te lo impari lo impari a puro scopo didattico perchè lo si usa in ambienti molto specifici e tosti.
Se vuoi imparare un linguaggio che cmq nel bene o nel male ci fai subito qualcosina di potenzialmente utile imparati php.
Ma se lo stai studiando solo a scopo didattico per farti unac erta cultura di programmazione C va benissimo (non sperare di farci nulla per ora), poi passa ad altro
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 11:55   #11
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Aspetta.
Io il php lo conosco (non alla perfezzione ma il grosso lo so).
Però con il php puoi realizzarti sì anche software oltre a pagine web ma sei obbligato a utilizzare un browser per visualizzarli.
Per questo ho abbandonato i Web-Devolpment e sono passato a linguaggi di programmazione "seri".
Io non voglio fare certamente qualcosa con il C.
Una volta imparato il C voglio passare al C++ e infine al Java.
Secondo HTML.it il Java è il più dificoltoso tra i tre ma anche il migliore.
Ti ringrazio per il consiglio.
By.

P.S:i puntatori non so ancora cosa siano.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 12:01   #12
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
Aspetta.
Io il php lo conosco (non alla perfezzione ma il grosso lo so).
Però con il php puoi realizzarti sì anche software oltre a pagine web ma sei obbligato a utilizzare un browser per visualizzarli.
Per questo ho abbandonato i Web-Devolpment e sono passato a linguaggi di programmazione "seri".
Io non voglio fare certamente qualcosa con il C.
Una volta imparato il C voglio passare al C++ e infine al Java.
Secondo HTML.it il Java è il più dificoltoso tra i tre ma anche il migliore.
Ti ringrazio per il consiglio.
By.

P.S:i puntatori non so ancora cosa siano.

JAva lo stò studiando ora all'uni...più difficoltoso?
mmm allora se entri nell'ottica della programmazione ad oggetti certe cose che con il C sono delle pesantate diventano delle minchiate, per altre cose è un bordello.
Soo due tipi di difficoltà diverse...il C è pesante perchè essendo molto a basso livello se ti devi scrivere una lista o un albero ti IMPICHI perchè ogni struttura deve puntare alla struttura dopo, per scorrere liste e alberi ti scervelli con puntatori e non ti funziona mai nulla prima di ore ed ore di smanettamenti...con Java tutto ciò è molto più automatico e tranquillo per esempio
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 15:40   #13
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Scusa, ma io sono ancora al inizio della programmazione.
Non so nè che cosa intendi per liste e alberi nè cosa intendi per puntatori.
Comunque ti ringrazio per i suggerimenti che mi stai dando.
Ciao.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 15:41   #14
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
Scusa, ma io sono ancora al inizio della programmazione.
Non so nè che cosa intendi per liste e alberi nè cosa intendi per puntatori.
Comunque ti ringrazio per i suggerimenti che mi stai dando.
Ciao.
che manuale usi? quando arriverai a quegli argomenti capirai che intendo heheeh ;-)
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 15:42   #15
Malta
Junior Member
 
L'Avatar di Malta
 
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
Questo.
Per ora sono al capitolo 23.
Malta è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 15:46   #16
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
"Array Multi-dimensionale" , che parola .
Come disse il mio caro vecchio prof di informatica 1 all'epoca "è un nome un po' da guerra tecnologica ...."



Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
Finalmente rilevata la stella compagna d...
UBTech Walker S2: il robot umanoide cine...
Musk guarda ai più piccoli: in ar...
The Witcher 3 su RISC-V? Ora è po...
Il segreto per lavorare meglio? È...
Mini PC con 16GB RAM e 512GB SSD a poco ...
Radeon RX 9000: questa app gratuita cons...
Windows 11 supporterà la condivis...
Synology DS725+: connettività 2.5...
Microsoft vuole dire addio ai problemi d...
I giocatori si divertono a spendere di p...
Il monopattino che punta a battere il re...
Apple e crittografia, Londra verso la re...
Trump pubblica video con Obama arrestato...
A Vienna consegne postali completamente ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v