Tutti gli articoli di Francesco Rosati

California here we come

MD – DOS, come creare ed eliminare directory

Photo by Sora Shimazaki on Pexels.com

In questo articolo vi spiegheremo come creare ed eliminare una cartella (o directory) con l’utilizzo del MD – DOS.

Creare una Directory

Per creare una Directory bisogna utlizzare il comando MD, ovvero Make Directory (Crea Cartella).

Affianco ad MD inserisco il nome della mia directory.

Ad esempio:

MD cartella 

La cartella è stata creata e avrà il nome di “cartella”.

Ora vediamo come creare una cartella dentro una cartella.

Come si crea una sottocartella?

Prima di creare la nostra sottocartella dobbiamo entrare nella directory dove vogliamo inserirla. Bisogna quindi utilizzare il comando CD, ovvero Change Directory, che mi permette di entrare nella cartella dove voglio inserire la mia sottocartella. Scrivo quindi:

CD cartella

Ora, per creare altre cartelle, uso sempre il comando MD, ed il gioco è fatto!

Per tornare indietro ed uscire dalla cartella uso CD..

Eliminare una directory

Per rimuovere una directory utilizzo RD ovvero Remove Directory.

Facciamo un rapido esempio, riprendendo la cartella creata prima.

RD cartella

Ora, con questo comando possiamo eliminare solo cartelle vuote. Se abbiamo cartelle con file all’interno dobbiamo utilizzare una variazione del comando appena visto. Mettiamo caso che la cartella con un file che dobbiamo eliminare si chiama cartelladue. 

Scrivo:

RD cartelladue /S 

Successivamente alla richiesta:

cartelladue, Procedere con l'operazione (S/N)?

Rispondo con S se la voglio eliminare o con N se ho cambiato idea e voglio annullare l’eliminazione.

Spero che ora ti sia tutto chiaro, e che questo tipo di cose non ti facciano più paura. Per qualsiasi domanda scrivi un commento o contattaci a: programmazionepertutti@gmail.com @redazioneprogrammazionepertutti

Esercizi sulla Macchina di Turing

Ecco a voi alcuni esercizi sulla Macchina di Turing. Per qualsiasi domanda scriveteci a programmazionepertutti@gmail.com o qui sotto nei commenti.

Somma 300

Parto posizionandolo sulle unità:

(0,[0..9],0,[0..9],>)

(0,-,U,-,<)

Vado sulle decine:

(U,[0..9],D,[0..9],<)

Centinaia

(D,[0..9],C,[0..9],<)

Inizio con le somme

(C,[0..6],INDIETRO,[3456789],<)

(C,[789],RIPORTO,[012],<)

Gestisco lo stato RIPORTO:

(RIPORTO,[0..8],INDIETRO,[1..9],<)

(RIPORTO,9,RIPORTO,0,<)

(RIPORTO,-,FINE,1,-)

Gestisco lo stato INDIETRO:

(INDIETRO,[0..9],INDIETRO,[0..9],<)

(INDIETRO,-,FINE,-,>)

Descrizioni stati:

0= Stato iniziale 

U=Testina posizionata in corrispondenza delle unità

D=Testina posizionata in corrispondenza delle decine

C=Testina posizionata in corrispondenza delle centinaia

RIPORTO=La MDT doveva piazzare un riporto

INDIETRO= La macchina riposiziona la testina in corrispondenza della cifra più significativa

FINE= Stato Finale

Sottraggo 400

Parte iniziale:

(0,[0..9],0,[0..9],>)

(0,-,U,-,<)

Vado sulle decine:

(U,[0..9],D,[0..9],<)

Centinaia:

(D,[0..9],C,[0..9],<)

Inizio con le sottrazioni:

(C,[4..9],INDIETRO,[0..5],<)

(C,[0..3],PRESTITO,[6..9],<)

Gestisco lo stato PRESTITO:

(PRESTITO,[1..9],INDIETRO,[0..8],<)

(PRESTITO,0,PRESTITO,9,<)

Gestisco lo stato INDIETRO:

(INDIETRO,[0..9],INDIETRO,[0..9],<)

(INDIETRO,-,FINE,-,>)

Leggenda:

0=Stato iniziale 

U=Testina posizionata in corrispondenza delle unità

D=Testina posizionata in corrispondenza delle decine

C=Testina posizionata in corrispondenza delle centinaia

INDIETRO= La macchina riposiziona la testina in corrispondenza della cifra più significativa

PRESTITO=La macchina di Turing deve ottenere un prestito di una unità

FINE= Stato Finale

Somma 47

Parte iniziale:

(0,[0..9],0,[0..9],>)

(0,-,U,-,<)

Gestisco lo stato U:

(U,[0..2],DS,[7..9],<)

(U,[3..9],DR,[0..6],<)

Gestisco lo stato DS:

(DS,[0..5],INDIETRO,[4..9],<)

(DS,[6..9],RIPORTO,[0..3],<)

Gestisco lo stato DR:

(DR,[0..4],INDIETRO,[5..9],<)

(DR,[5..9],RIPORTO,[0..4],<)

Gestisco lo stato RIPORTO:

(RIPORTO,[0..8].INDIETRO,[1..9],<)

(RIPORTO,9,RIPORTO,0,<)

(RIPORTO,-,FINE,1,-)

Gestisco lo stato INDIETRO:

(INDIETRO,[0..9],INDIETRO,[0..9],<)

(INDIETRO,-,FINE,-,>)

Sottrai 48

Parte iniziale:

(0,[0..9],0,[0..9],>)

(0,-,U,-,<)

Gestisco lo stato U:

(U,[89],DS,[01],<)

(U,[0..7],DP,[2..9],<)

Gestisco lo stato DS:

(DS,[4..9],INDIETRO,[0..5],<)

(DS,[0..3],PRESTITO,[6..9],<)

Gestisco lo stato DP:

(DP,[5..9],INDIETRO,[0..4],<)

(DP,[0..4],PRESTITO,[5..9],<)

Gestisco lo stato PRESTITO:

(PRESTITO,[1..9],INDIETRO,[0..8],<)

(PRESTITO,0,PRESTITO,9,<)

Gestisco lo stato INDIETRO:

(INDIETRO,[0..9],INDIETRO,[0..9],<)

(INDIETRO,-,FINE,-,>)

C++ – Calcolo età e data di nascita con funzioni

Hai difficoltà a fare esercizi con le funzioni? Nessun problema! Oggi ti mostrerò un semplice esercizio che ti aiuterà a capire meglio l’argomento.

Il testo è il seguente:

Crea un programma che calcoli l’anno di nascita sapendo l’età e l’età sapendo l’anno di nascita. Tenere presente l’anno attuale.

Dovremo quindi creare un menù di scelta dove l’utente sceglierà se eseguire il calcolo dell’anno di nascità o dell’età.

Letta la consegna, iniziamo a svolgere l’esercizio:


int eta(int x) {
	
	return 2022-x;
	
}

Come prima cosa, scrivo una delle due funzioni che mi servono per far funzionare il programma. A mia scelta, ho scritto la funzione eta. Questa ci permette di trovare l’età sapendo l’anno di nascita.

Il calcolo che svolgerò sarà 2022-x

x rappresenta l’anno inserito dall’utente in input. Sottraendo i due valori si ottiene l’età.

int annodinascita(int y) {
	
	return 2022-y;
	
}

Successivamente scrivo la seconda funzione. La funzione annodinascita serve a calcolare,appunto, l’anno di nascita sapendo l’età.

Il calcolo che svolgerò sarà 2022-y.

y rappresenta l’età inserita dall’utente in input. Sottraendo i due valori si ottiene l’anno di nascita.

int main () {
	
	int s, et, an;
	
	cout<<"---COSA VUOI TROVARE?---"<<endl;
	cout<<"1) Eta' sapendo l'anno di nascita"<<endl;
	cout<<"2) Anno di nascita sapendo l'eta'"<<endl;
	cin>>s;

Iniziamo ora a scrivere la funzione principale, il main. Per prima cosa inizializzo le variabili.

s rappresenta la scelta che farà l’utente nel menù che dovremo creare. et rappresnta l’eta e an l’anno di nascità

Dopo aver inizializzato, creo il menù di scelta che verrà utilizzato dall’utente. Scrivo in output le opzioni descrivendole e in input la variabile s.

Ora, ho due modi per scrivere la parte dove il programma calcolerà ciò che vogliamo sapere. O utilizzo lo Switch Case, o utilizzo l’if. In questo caso, io ho scelto lo Switch Case. Alla fine dell’articolo lascerò il programma completo, potrete trovare in esso le due opzioni eseguibili. Sia il pezzo di codice con l’if che quello con lo Switch.

switch (s) {
		
case 1:    cout<<"Inserisci l'anno di nascita: "<<endl;
           cin>>an;
	   cout<<"L'eta' e' uguale a "<<eta(an)<<endl;
break;
		
case 2:    cout<<"Inserisci l'eta': "<<endl;
	   cin>>et;
	  cout<<"L'anno di nascita' e' il  <<annodinascita(et)<<endl;

break;
	}  

Se l’utente dovesse scegliere 1, il programma chiederà di inserire l’anno di nascita in input. Verrà svolta la funzione eta, e il risultato uscirà in output.

Al contrario, se dovesse scegliere 2, il programma chiederà in input l’età. Successivamente svolgerà la funzione annodinascita che verrà stampata in output.

Il programma ora si può considerare concluso. Visto? Non era così difficile! Ma se hai ancora difficoltà non esitare a scrivere un commento o a contattarci via mail a redazioneprogrammazionepertutti@gmail.com

Programma completo – versione Switch Case:

#include <iostream>
using namespace std;

int eta(int x) {
	
	return 2021-x;
	
}

int annodinascita(int y) {
	
	return 2021-y;
	
}

int main () {
	
	int s, et, an;
	
	cout<<"---COSA VUOI TROVARE?---"<<endl;
	cout<<"1) Eta' sapendo l'anno di nascita"<<endl;
	cout<<"2) Anno di nascita sapendo l'eta'"<<endl;
	cin>>s;

switch (s) {
		
case 1:    cout<<"Inserisci l'anno di nascita: "<<endl;
           cin>>an;
	   cout<<"L'eta' e' uguale a "<<eta(an)<<endl;
break;
		
case 2:    cout<<"Inserisci l'eta': "<<endl;
	   cin>>et;
	  cout<<"L'anno di nascita' e' il  <<annodinascita(et)<<endl;

break;
	}  

}

Programma completo – versione If:

#include <iostream>
using namespace std;

int eta(int x) {
	
	return 2021-x;
	
}

int annodinascita(int y) {
	
	return 2021-y;
	
}

int main () {
	
	int s, et, an;
	
	cout<<"---COSA VUOI TROVARE?---"<<endl;
	cout<<"1) Eta' sapendo l'anno di nascita"<<endl;
	cout<<"2) Anno di nascita sapendo l'eta'"<<endl;
	cin>>s;

if (s==1) {
		
		cout<<"Inserisci l'anno di nascita: "<<endl;
		cin>>an;
		cout<<"L'eta' e' uguale a "<<eta(an)<<endl;
	}
	else {
		
		cout<<"Inserisci l'eta': "<<endl;
		cin>>et;
		cout<<"L'anno di nascita' e' il "<<annodinascita(et)<<endl;
	} 
}

Maggiore o minore di 100 su Python

Photo by Christina Morillo on Pexels.com

Stai creando un programma in Python per vedere se un numero dato in input è maggiore o minore di 100, ma non funziona e non riesci a capire cosa stai sbagliando. Nessun problema! Svolgerò l’esercizio passaggio per passaggio.

Per prima cosa dobbiamo inserire la linea di codice che ci permetterà di immettere un numero in input. Cioè:

n= int (input ("Inserisci un numero: "))

n sarà uguale al valore che l’utente inserirà. Come puoi notare, ho riscritto la linea di input chiusa in delle parentesi scrivendo int fuori da esse. Quell’int ci permette di trasformare il nostro input in un valore di tipo intero. Se non l’avessi messo, sarebbe comparso durante la compilazione un errore.

Ora non ci resta che inserire l’if:

if n>=100:
    print ("Il numero è maggiore o uguale a 100")
else:
    print ("Il numero è minore di 100") 

Se n sarà maggiore o uguale a cento il programma darà in output “Il numero è maggiore o uguale a 100”

Se n sarà minore di cento il programma darà in output “Il numero è minore di 100”

Ricordatevi sempre di mettere i due punti alla fine della condizione e all’else.

Di seguito il programma completo:

n= int (input ("Inserisci un numero: "))
if n>=100:
    print ("Il numero è maggiore o uguale a 100")
else:
    print ("Il numero è minore di 100") 

Spero che ora ti sia tutto chiaro, e che questo tipo di cose non ti facciano più paura. Per qualsiasi domanda scrivi un commento o contattaci a: programmazionepertutti@gmail.com @redazioneprogrammazionepertutti

La funzione Se – Excel

La funzione SE è una delle più semplici ed intuitive di Excel. Essa è formata da una condizione che, o se sarà falsa o se sarà vera, darà diversi risultati. Analizziamo la sua sintassi:

SE(test; se_vero; se_falso).

Quando la andremo ad inserire su Excel ci comparira così. Ma cosa significano quelle parole nelle parentesi tonde?

test è la condizione. Può essere o un valore o un espressione e sarà o vera o falsa.

se_vero sarà il valore in output, che verrà scritto nella cella, se la condizione risulterà vera

se_falso sarà il valore in output, che verrà scritto nella cella, se la condizione risulterà falsa

Vediamo un rapido esempio: =SE(A10>2;”Maggiore di due”;”Non è maggiore di due”)

In questo caso se A10 sarà maggiore di due nella cella verrà scritto “Maggiore di due”, al contrario invece se sarà minore scriverà “Non è maggiore di due”.

Se voglio invece lasciare la cella vuota mi basterà scrivere “” cioè stringa nulla.

Se Nidificato

Il se nidificato invece è un pò più complicato del precedente. Funziona allo stesso modo con la stessa formula ma al suo interno contiene più nidificazioni della funzione.

Vediamo un rapido esempio:

=SE(A10<2;”Piccolo”;SE(A10>2;”Grande”;SE(A10=2;”Esatto”;””)))

In questo caso, data la nidificazione, abbiamo tre test. Se A1O è minore di due allora darà come risultato “Piccolo”. Se la condizione risulterà falsa, invece, ci sarà un altro test da parte del programma che vedrà se il risultato è maggiore di due. Se sarà vero, scriverà nella cella “Grande”. Se invece il risultato risulterà ancora un altra volta falso, occorrerà fare un ulteriore verifica con un altro test per controllare se è A10 è uguale a due. Se sarà vero scrivera “Esatto” o al contrario, se sarà falso, lascerà la cella vuota (cosa che non succederà se inseriamo numeri).

N.B: Ricorda di chiudere tutte le parentesi alla fine della scrittura di un se nidificato. In caso di errore Excel ti avvertirà.

Spero che ora ti sia tutto chiaro, e che questo tipo di cose non ti facciano più paura. Per qualsiasi domanda scrivi un commento o contattaci a: programmazionepertutti@gmail.com @redazioneprogrammazionepertutti

Scambio variabili in C++

Hai iniziato a programmare in C++, ma non sai come effettuare uno scambio tra variabili. Niente paura! Te lo spieghiamo noi.

Come scambiare due variabili

Anche se può sembrare semplice, alcuni programmatori alle prime armi trovano difficoltà nel creare questo tipo di scambio. Il mio consiglio è di provarlo a fare da solo senza copiare ed incollare ciò che scriverò di seguito.

Prima di tutto dobbiamo dare un nome alle nostre variabili. Per pura e piacevole comodità, le chiamerò x e y. Ad esse va aggiunta un altra variabile “temporale”, ovvero temp. Ci permetterà di dare in prestito un valore quando ne avremo bisogno. Inizializziamo quindi le tre:

	float x, y, temp;

Vi ricordo che mettendo float possiamo usare anche i numeri con la virgola, il che renderà tutto più semplice in fase di programmazione.

Dopo aver inizializzato le nostre variabili, dobbiamo assegnargli un valore. In questo esempio, sarà l’utente che utilizzerà il programma ad inserire dei valori. In un altro caso, potrebbe essere già il programma a darveli. Detto questo, diciamo all’utente di inserire un valore ad x e uno a y:

	cout<<"Inserisci x  ";
	cin>>x;
	cout<<"Inserisci y  ";
	cin>>y;

Ora che abbiamo il valore di x e il valore di y, non ci resta altro che svolgere il problema che ci siamo posti all’inizio. Ovvero scambiare le due variabili. Quindi x avrà il valore di y e y il valore di x.

In questo esempio il valore di x sarà 1 mentre quello di y sarà 2.

Le righe da scrivere sono 3. Per farvi capire meglio vi spiegherò tutto passaggio per passaggio. In questo momento x=1, y=2, temp=0.

temp=x;

Il primo passaggio da fare, come vedete qui sopra, è scrivere temp=x. In questo modo temp, che valeva zero, ora avrà un valore uguale a x, cioè 1. La nostra variabile temporanea d’appoggio farà nel programma il “lavoro sporco”.

Ora quindi x=1, y=2, temp=1.

x=y;

Nel secondo passaggio scriviamo che x è uguale a y. Quindi se prima x aveva un valore pari a 1, ora ha un valore di 2, cioè quello dell’altra variabile. Fatto questo, y rimarrà col valore da noi assegnato e non subirà cambiamenti.

Ora quindi x=2, y=2, temp=1:

y=temp;

Nel terzo ed ultimo passaggio del nostro problema, y sarà uguale a temp. Quindi se prima y aveva un valore pari a 2 ora avrà un valore uguale a 1, cioè quello della variabile d’appoggio. Così facendo y avrà il valore che precedentemente aveva x e viceversa.

Nel passaggio finale x=2, y=1, temp=1.

N.B.= La variabile temp nel passaggio finale rimarrà con il valore della prima variabile da noi assegnata. Questo non ci causa problemi in quanto temp nelle finalità di questo algoritmo è solo una variabile d’appoggio. Ha fatto il lavoro sporco, e già questo basta.

Bene, ora possiamo stampare sullo schermo le nostre variabili con i valori invertiti.

cout<<"Scambio effettuato!  ";
	cout<<"x = "<<x;
	cout<<"  y = "<<y;

In questo modo il programma darà in output i due valori da noi scambiati.

Di seguito, il programma completo:

#include <iostream>
using namespace std;
int main () {
	float x, y, temp;
	cout<<"inserisci x  ";
	cin>>x;
	cout<<"Inserisci y  ";
	cin>>y;
	temp=x;
	x=y;
	y=temp;
	
	cout<<"Scambio effettuato!  ";
	cout<<"x = "<<x;
	cout<<"  y = "<<y;
}

Spero che ora ti sia tutto chiaro, e che questo tipo di cose non ti facciano più paura. Per qualsiasi domanda scrivi un commento o contattaci a: programmazionepertutti@gmail.com @redazioneprogrammazionepertutti