Archivi categoria: Tech

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

Macchine virtuali ed Emulatori

Cosa é una macchina virtuale

Iniziamo col dire che una macchina virtuale in informatica rappresenta un sistema operativo (SO) differente oppure lo stesso (per capirci un altro computer) ospitato nel nostro computer sia Mac che Windows.

Vantaggi e svantaggi del SO in una macchina virtuale

I Vantaggi

  • É più sicuro in caso di malware
  • É l’ideale a chi serve velocità nel passare da un SO ad un altro
  • Meno costoso rispetto ad un nuovo computer

Gli svantaggi

  • É molto dispendioso in termini di risorse
  • Molte volte la macchina virtuale sarà scattosa e lenta per la memoria in costante utilizzo
  • L’impossibilità di emulare software scritti per processori di una differente architettura

Spero che questo breve articolo sulle macchine virtuali (virtual-machine VM) vi sia piaciuto. Io vi do appuntamento al prossimo articolo sempre qui su programmazionepertutti!.