Camuso Dot It
accelera il tuo apprendimento
HOME Esercizi Videolezioni
Videoesercizi Links

Esercizi
C# - Files di testo

Ti interessano anche i file binari? Clic qui
Oppure file di testo usati insieme a file binari? Clic qui

23-02-09

 

Salva TextBox

SoluzioneProgetto

NB: per questo esercizio esiste la soluzione guidata video: clic qui.

Livello difficoltà: medio (tipo verifica) - ambiente Windows. Si vuole realizzare una semplice interfaccia per salvare / leggere il contenuto di una casella di testo *multilinea* (basta impostare la corrispondente proprietà) su un file di testo; sotto la casella di testo dovranno essere presenti 3 bottoni: il primo per salvare il contenuto della casella (nome del file scelto con un oggetto openFileDialog; se il file esiste già deve essere chiesta conferma), il secondo bottone per rileggere da file il contenuto precedentemente salvato (nome del file scelto con un oggetto openFileDialog), il terzo bottone per *aggiungere* il testo scritto nella casella ad un file (nome del file scelto con un oggetto openFileDialog).

 

23-02-09

 

Ricerca Tag Obsoleti

SoluzioneProgetto

NB: per questo esercizio esiste la soluzione guidata video: clic qui.

Livello difficoltà: medio (tipo verifica) - ambiente Windows. Con le nuove specifiche XHTML alcuni tag non sono più in uso (obsoleti). Si vuole realizzare una applicazione Windows che consenta di evidenziare (e salvare in un altro file) le righe di una pagina web che contengono almeno uno di questi tag. Le righe evidenziate dovranno anche essere visualizzate in un listBox. L’utente potrà scegliere con due bottoni che richiamano il selettore di file di windows il file da analizzare e quello in cui salvare le righe selezionate. L'elenco dei tag da considerare obsoleti devono essere automaticamente letti alla partenza da un file chiamato TagObsoleti.txt.

 

09-02-09

 

Musei

 

 

 

SoluzioneProgetto

Livello difficoltà: medio (tipo verifica) - ambiente console. Definire una classe C# per descrivere un museo; nello stato interno mettere il numero dei visitatori dell’anno precedente, il nome di un personaggio a cui è dedicato il museo ed un vettore di 365 interi in cui giorno per giorno vengono memorizzati quanti visitatori sono entrati al museo (meglio se vengono usate liste in tutto il programma al posto di vettori).

Un primo costruttore riceve tutti i dati meno il vettore; un secondo costruttore riceve anche un vettore di interi i cui valori devono essere copiati in quello interno a partire da una certa posizione anch’essa specificata come parametro. Aggiungere il metodo Registra che salva in un file di testo *tutto* lo stato interno (meglio se si effettua un controllo di esistenza di un vecchio file; in caso affermativo il contenuto deve essere aggiunto a quello vecchio).

Aggiungere (il metodo Carica che ricostruisce lo stato interno leggendolo da disco (nel caso abbiate gestito il controllo di prima con aggiunta in coda usare il primo blocco di informazioni trovato nel file di testo). Infine il metodo AggiungiSettimana che riceve un numero di giorno da 1 a 365 da cui partire ed accoda in fondo al file ‘settimane.txt’ i dati di una settimana.

Nel 'main' provate la classe.

 

29-01-09

 

File Manager

 

 

 

SoluzioneProgetto

vello difficoltà: avanzato - ambiente console.

Si vuole realizzare una utility per la gestione dei file di testo. A questo scopo definire una classe File Manager che sarà in grado di gestire un elenco di files e compiere su di essi alcune operazioni di base (numerazione, copia, confronto).

La classe usa una lista di stringhe per memorizzare i riferimenti ai file (ogni stringa corrisponde ad un file). Nota: l’esercizio può essere svolto (ed è quasi identico) usando solo i vettori.

Una lista è un oggetto .NET assai comodo che si definisce così con C#:

 

List<tipo> nomeLista = new List<tipo>();

per le stringhe diventa quindi:

List<string> nomeLista = new List<string>();

Una lista parte vuota e non occupa memoria inutilmente (come invece accade per un vettore); si possono poi aggiungere tutti gli elementi che si vogliono: nomeLista.Add(“stringa”); per accedere ad un elemento precedentemente inserito: string s = nomeLista [posizione], quindi con la stessa facilità di un vettore; per sapere quanti sono gli elementi in un certo istante: nomeLista.Count;


La classe ha due costruttori:

  1. Senza parametri; si limita a creare la lista vuota
  2. Con un vettore di stringhe come parametro: crea in partenza una lista con le stringhe del vettore

La classe rende poi disponibile alcuni metodi:

  • Aggiungi(string file): aggiunge un nuovo riferimento di file alla lista.
  • Numera(int posizione, string fileDestinazione): considera il file alla posizione indicata nella lista e con questo crea da zero un file (file Destinazione) contenente le stesse righe del primo ma numerate in modo progressivo.
  • Confronta(int posizione1, int posizione2, string destinazione): immaginando per semplicità che i file a posizione1 e posizione2 abbiano lo stesso numero di righe viene creato un file destinazione contenente le righe uguali a parità di posizione nel file; ad esempio se la settima e la quindicesima riga dei due file sono uguali  allora il file destinazione conterrà proprio questa riga (una volta sola).
  • Duplica(int posizione, string file): crea una copia del file alla posizione indicata nella lista; file è il riferimento del file da creare; il metodo restituisce true se ha avuto successo, false se l'esistenza di un vecchio file ha impedito l'operazione.

 

 

26-01-09

 

Leggi e somma

 

 

 

SoluzioneProgetto

(senza classi; livello difficoltà: facile) Usando il blocco note inserire alcuni numeri interi in un file di testo (uno per riga); consiglio: create il file nella cartella ‘bin\debug’ del progetto per non essere costretti ad indicare percorsi con gli stream. Leggere il contenuto del file e visualizzare la somma dei numeri compresi tra 10 e 50 ma  saltando i primi N numeri (N letto da tastiera).

La somma deve essere aggiunta sul file come  ultima riga.

NOTA: ogni volta che farete ripartire il programma dopo la prima volta ricordatevi di togliere la riga aggiunta in fondo al file con la somma altrimenti le somme successive non riguarderanno solo i numeri originali ma anche le somme calcolate ad ogni lancio di programma!

Variante (senza soluzione): progetta una classe con alcuni metodi che svolgono le stesse operazioni.

 

TomboleMatte

 

 

 

SoluzioneProgetto

Livello difficoltà: difficile. La tombola matta è una variante del gioco della tombola in cui i numeri (con valori da 1 a 90) possono ripetersi (ma quelli da estrarre in una partita sono sempre 90).

Poniamoci come obiettivo implementare (parzialmente) una classe ‘TombolaMatta’ in grado di creare e gestire in un file di testo i 90 numeri di una partita. Poiché la classe dovrà essere utilizzata per sviluppare giochi in un ambiente con pochissima RAM non devono essere usate strutture dati come vettori o liste in RAM ma gestire ogni operazione usando file di testo.

Requisiti funzionali

L’utente di un oggetto di classe TombolaMatta dovrà poter:

  1. specificare al momento della creazione il file contenente i 90 numeri da generare a caso per quella partita; per default (nome del file non specificato) deve essere usato ‘numeri.txt’; a discrezione dell’utente della classe potrà essere specificato anche il nome del file per memorizzare i numeri già estratti (per default usare il file ‘estratti.txt’); nel caso l’utente indichi un solo nome di file considerarlo come il nome del file dei numeri generati
  2. comandare l’estrazione di un nuovo numero (in pratica verrà scelto il prossimo non usato dal file di testo che contiene tutti e 90 i numeri); il numero estratto deve essere aggiunto sul file dei numeri già estratti;
  3. comandare la ripresa di una vecchia partita

In ogni momento dovrà essere possibile ‘interrogare’ la classe per sapere:

  1. l’elenco dei numeri già usciti
  2. quante volte è già uscito un certo numero
  3. i numeri non ancora usciti

 

Altri
Esercizi

 

 

 

 

1) (senza classi; livello difficoltà: facile) Leggere da tastiera una serie di frasi e registrarle su un file di testo (ogni frase occuperà una riga del file). L’inserimento termina quando viene digitato ‘FINE’;  Rileggere il file di testo e dire quante frasi contiene. Aggiungere in fondo al file 100 righe di 50  asterischi. SOLUZIONE

2) (senza classi; livello difficoltà: facile) Crea un file 'tombola.txt' e riempilo con 200 numeri interi estratti casualmente tra 1 e 90 (sono quindi ammessi doppioni), un numero per riga; dopo aver chiuso il file si vuole poi aggiungere un ultimo numero che corrisponde al valore medio dei numeri estratti. SOLUZIONE

3) (senza classi; livello difficoltà: facile) Crea un file di testo di 10000 numeri interi casuali; rileggilo e determina il numero di volte che è presente il numero 7 (probabilità bassa!). SOLUZIONE

 

 

N o v i t à


Tutte le videolezioni sono ora su youtube (per ricevere notifiche di nuove videolezioni ISCRIVITI al mio canale) VAI su youtube


Mappa di tutte le playlist clic qui