Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
variabilediprova[] —> qui non so cosa fai, perché le quadre vanno dopo il tipo (int[], string[] e non dopo il nome)
E così via
int variabilediprova;
Tu le prenoti
Hotel Array
Ora, in C# troverai tanti "tipi" oltre a quelli del C (char, int, short)
Troverai:
Ora, con i tipi del C le dichiarazioni avvengono nel modo in cui ti avevo spiegato qui sopra
Con tutti gli altri tipi che troverai nel C#(inclusi gli array, tipi int[], ecc.)
Costruttori
Proprietà
Metodi
I costruttori cosa sono? Sono le configurazioni che puoi dare, ovvero sono i parametri che puoi mettere nelle parentesi ogni volta
Ad esempio, magari c'è una classe che accetta due tipi di situazione
Seconda situazione, le dai come parametri: un array, il numero di elementi dell'array da leggere, e l'elemento nell'array da cui partire
(Ad esempio, le dici leggi 5 elementi a partire dal decimo elemento, o cose così)
Sono due situazioni, configurazioni, che a seconda delle esigenze puoi dare alla classe
ReadArray(arraydiprova, 2, 20); Qui dai tre parametri. Dai l'array, dici che deve partire dal secondo elemento dell'array, dici che deve leggere 20 elementi
Parlo di leggere, ma potrebbe essere scrivere. Questo è un array, potrebbe essere un file, e così via
FileMode è quello che ti fa impostare FileMode.Open, FileMode.Create, per dire se il file lo vuoi aprire o creare
FileAccess.Read, FileAccess.Write
Se accettasse un char
E così via
Il costruttore ti dice:
Ora, Proprietà
Le proprietà sono cose legate, nel caso di FileStream, al file (flusso) che FileStream apre
Position, ad esempio, ti dà la posizione dello stream, ovvero il punto in cui sei arrivato a leggere/scrivere
Se hai letto i primi 100 byte, Position ti darà l'indirizzo del 101esimo byte
Ora, come si usano?
Scriviamo, ad esempio
FileStream è la classe
fileprova.Proprietà
In questo caso
fileprova.Name
Quindi
Tutto qui
Ad esempio, se volessi scrivere un nuovo FileStream, per aprire lo stesso file
Potresti fare:
Ad esempio
Poi Position ti darà altro, ad esempio. Le proprietà sono informazioni (proprietà, appunto) che le classi ti danno e che riguardano i file per filestream, altre cose
per altre classi
Ora che stai imparando anche la sintassi, potrai ad esempio navigare quel sito di prima
I metodi
In ogni situazione accetta un certo numero di parametri, di un certo tipo, in un certo ordine
Come i Costruttori
Facciamo un esempio con Read
Ha tre parametri
Tutto qui
nome variabile.Metodo(parametri);
Ad esempio
fileprova.Read(arraydiprova, 0, 100);
In termini di sintassi
Una delle ultime cose che resta da capire è cosa sono questi metodi
int Media()
Ad esempio
Il main, ad esempio
int main()
programma
E così via
void proceduraprova()
Una procedura puoi considerarla alla stregua di una funzione di tipo void
Un altro punto che devi comprendere è che le funzioni accettano parametri, in generale
Qui, ad esempio, dai come parametri alla funzione due valori di tipo int
a = 20;
b = 30;
Ora, qual è la logica che sta dietro questi parametri? A cosa servono?
Se io scrivo
int main()
int a = 24;
int Media()
{
int b = a;
Media NON VEDE a Perché è in un altro blocco E quindi dà errore, in questo caso particolare
In generale, le variabili sono visibili SOLO ALL'INTERNO DEI BLOCCHI in cui sono dichiarate. Scrivo in maiuscolo perché è un concetto chiave
Vanno CHIAMATE
In questo modo, il programma SALTA a quella funzione, la svolge, e torna da dove era stata chiamata
int main()
chiamata;
int Media()
...
}
int main
int a = 100;
Cosa ho fatto?
Parametri
Infatti è durante la chiamata che si assegnano i parametri che vuoi passare alla funzione (a non sarebbe visibile, altrimenti)
Si passano parametri mettendoli tra le parentesi, separati da virgole, scrivendo il loro nome(a) SENZA il tipo, a differenza di quello che avviene all'inizio della
funzione
1. A ogni classe sarà associato un tipo dello stesso nome, dove per tipo si intendono cose come char, int, ecc. Quindi ad esempio alla classe FileStream è
associato il tipo FileStream
2. Ogni classe si "usa" istanziando un oggetto, ovvero dichiarando una variabile (che sarà di tipo FileStream, StreamWriter, e così via per tutte le classi)
Dove tipo è il tipo della variabile (uguale a quello della classe). nome è il nome arbitrario che tu assegni a questa variabile, new è fisso, classe è appunto il nome
della classe
Dove i caratteri singoli NON SONO stringhe con un solo carattere, attenzione
"Ora, prima di passare al prossimo mini-esercizio, una breve spiegazione su FileMode e FileAccess" stavo per scrivere😂
FileMode e FileAccess sono un nuovo piccolo elemento. Come ti dice anche la pagina, sono ***costanti***
Dopo il punto specificano appunto delle costanti, che sono in pratica delle indicazioni
Tu non dovrai usare le costanti, bensì i nomi accanto (che sono pseudonimi)
Gli array
Queste classi, inoltre, hanno il nome del tipo di elementi che contiene l'array(int, ad esempio) più parentesi quadre
Come le altre classi, anche se ripeto, NON sono classi, gli array restituiscono tipi appositi. Il tipo string[], il tipo char[], ecc.
Poi devi ripetere il tipo (string, int, ecc.) e aprire le parentesi quadre
Niente di più
Tra il tipo dell'array, string[], e il tipo dei singoli elementi contenuti nell'array, string
Un array di stringhe è un oggetto di tipo string[]
prova[1] il secondo
Ma dopo Ad esempio
Nella dichiarazione, string[] prova = new string[5], 5 è la lunghezza, cioè il numero di elementi che assegni all'array
Ora, i tipi
Dal flag
Il flag è il segno
01011000
Ogni 0 o 1 è un bit
I signed cosa fanno? Prendo l'ultimo bit e lo usano per rappresentare il segno
0 —-> +
1 —-> -
Pura convenzione
Un unsigned non potrà rappresentare numeri negativi, quindi scegli tu in base alle circostanze
Poi per il resto, quando hai numeri solo positivi, puoi scegliere
Byte[] Quando questo metodo finisce, esso contiene l'array di byte specificato, con i byte tra offset e (offset + count - 1) rimpiazzati dai byte letti dalla
sorgente corrente
Int32[] Nel secondo parametro decidiamo dove puntare l'array, ovvero se metto 2, partirà dal secondo byte dell'array, ad esempio
Se offset è 2
E count è 5
2, 3, 4, 5 e 6
Eh, esatto
Qui offset è 2
count è 5
offset + count - 1 = 6
E così via
O anche aperto
Quindi, ricapitolando
Questi byte letti dovranno essere messi da qualche parte, se vogliamo usarli o conservarli
Li leggerai così
uno
Esatto
nessuno
Esatto
Baldr 36, [20.10.19 21:56]
Ma ovviamente è arbitrario
Dove per proprietà intendo il componente delle classi, insieme a costruttori e metodi
Ma io te ne insegnerò due
Filter e Multiselect
La sintassi è questa
La descrizione a piacere è quella che metti tu, appunto. Ad esempio, nel mini-tool che ho fatto per gli rbin, avevo messo "KH3D archive"
Si usa generalmente per le estensioni, ma può essere usata in qualsiasi modo sfruttando caratteri come *
*.txt significa che prima del punto può esserci qualsiasi cosa
Potresti raccogliere tutto senza utilizzarle, perché fra parentesi puoi mettere più condizioni, separandole con una virgola (*.bin, *txt)
Audio-Video Interleave(*avi)
Ad esempio
Si tratta di un valore di tipo bool, cioè assume soltanto i valori true o false
openfile.Multiselect = true;
Si tratta di ShowDialog
nomevariabile.ShowDialog(parametri);
DialogResult
Abbiamo parlato della differenza tra funzioni di tipo void, e funzioni di qualsiasi altro tipo
Abbiamo detto che una funzione di tipo void può essere chiamata da sola, mentre una di qualsiasi altro tipo dev'essere posta uguale a qualcosa
int a = 100;
Le abbiamo usate come void, perché non le abbiamo poste uguali a nessun valore
In questo caso, ShowDialog ritorna un oggetto di tipo DialogResult, che è una costante
Possiamo sapere cosa ha premuto l'utente (Ok o Cancel) grazie al fatto che ShowDialog ritorna DialogResult in quel modo
E sapendo bene come ci si comporta quando si gestisce una funzione/metodo come non void
openfile.ShowDialog();
if (openfile.ShowDialog() == DialogResult.OK)
codice
if (openfile.ShowDialog() == DialogResult.OK)
{
codice
Si valutano i membri