Maturità 2018: testo e sviluppo della prova d'esame

Ecco il testo: Testomaturità2018

1P. Primo problema

2P. Secondo Problema

1Q. Primo quesito

2Q. Secondo quesito

3Q. Terzo quesito

4Q. Quarto quesito

5Q. Quinto quesito

6Q. Sesto quesito

7Q. Settimo quesito

8Q. Ottavo quesito

9Q. Nono quesito

10Q. Decimo quesito

Pubblicato in Senza categoria | Lascia un commento

Linux: server per le reti e per il Web - caratteristiche hardware

Installare il pacchetto:

lshw

o tramite la parte grafica o linea comandi

Un esempio dell'esito del comando è il seguente:

Per conoscere solo la quantità di RAM digitare il comando

dmidecode -t 16

che avrà come output:

Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 4

 

le scritte in grassetto indicano la capacità della RAM e quanti slot.

 

 

Pubblicato in Senza categoria | Lascia un commento

C++ Ordinamento per inserimento - algoritmo completo

Ecco l'algoritmo completo.

Man mano che si inseriscono i valori valuta dove spostare il vettore e nel buco inserisce il valore immesso. Dove inserire il buco è valutato esattamente dal ciclo while.

Ecco il listato completo.

Provare a stampare l'intero programma mostrando a video ogni passo per capire nei dettagli cosa sta eseguendo.

Pubblicato in Senza categoria | Lascia un commento

C++ Ordinamento per inserimento - inserimento di un buco nel vettore

Adesso che ho imparato come spostare il vettore ho capito come posso inserire un buco al suo interno ossia spostare a partire da un certo punto in poi il mio vettore.

Ho modificato la funzione sposta inserendo esattamente a partire da dove deve spostare il vettore prima la funzione sposta era:

ossia j>=0

adesso al posto dello zero devo inserire la posizione da dove sposto il vettore ossia il listato diventa (notare he ho inserito un nuovo parametro nella funzione sposta):

 

 

 

 

Pubblicato in Senza categoria | Lascia un commento

C++ Ordinamento per inserimento - inserimento dinamico del vettore

Adesso dopo aver inserito in maniera statica il vettore, lascio all'utente inserire il gli elementi di un vettore e l'inserimento del primo elemento.

Ecco il listato del programma:

La funzione prototipo sposto rimane invariata. Ecco la comodità di usare una funzione, ho modificato il main ma non la funzione.

Pubblicato in Senza categoria | Lascia un commento

C++: ordinamento per inserimento - spostamento degli elementi di un vettore di un posto a destra

Prima di capire come funziona perfettamente un ordinamento per inserimento è necessario capire come si può spostare un intero vettore a destra di una posizione.

Ecco il listato del programma:

Il nucleo del programma è il seguente:

k mi indica esattamente la massima dimensione del vettore

Adesso DEVO partire sempre dalla coda per spostare i vettori

Ecco passo passo cosa fa il ciclo for:

inizialmente

j=2

v[3]=v[2]

j=1

v[2]=v[1]

j=0

v[1]=v[0]

adesso lo spazio occupato da v[0] è libero e nel listato inserisco un valore per evidenziare che ho spostato il vettore.

Ecco il listato dello stesso programma con una funzione prototipo che sposta il vettore partendo dalla coda:

Pubblicato in Senza categoria | Lascia un commento

C++: introduzione - ordinamento per inserimento

Roma - 2 giugno 2018 Festa della Repubblica

Questo ordinamento è chiamato in inglese (insert-sort). Si basa sul meccanismo naturale che si attiva quando si inseriscono nuovi elementi in un elenco già ordinato: per esempio, supponiamo di avere una libreria con una collezione di giornalini o fumetti aventi sulla costa il numero progressivo dell'album e di voler inserire nuovi volumi, oppure di giocare a carte, ricevere dal mazziere una carta alla volta e volerla collocare nella giusta posizione della "mano". In entrambi i casi possiamo individuare il medesimo algoritmo risolutivo.

Per ogni elemento dovremo quindi:

  • individuare la posizione che deve occupare rispetto a quelli già presenti;
  • predisporre un posto libero per poterlo inserire;
  • effettuare l'inserimento.

Ad esempio devo inserire i seguenti numeri:

20 33 17 8 13 40 2 37

inserisco il 20

poi inserisco il 33 che trova collocazione dopo il 20

in questo caso l'inserimento non ha richiesto alcuna operazione preventiva.

inserisco il 17, deve essere inserito prima di tutti gli altri, quindi è necessario effettuare lo spostamento a destra di una posizione di tutti gli elementi inseriti per creare un buco:

17 20 33

per il numero 8 si procede come il numero 17.

per il numero 13 è necessario predisporre uno spazio intermedio tra l'8 e il 17 e quindi effettuare l'inserimento.

8 13 17 20 33

per il numero 40 non si richiede spostamenti perchè è il numero più grande.

8 13 17 20 33 40

il 2 richiede invece lo spostamento di tutti gli altri valori:

2 8 13 17 20 33 40.

Infine il 37 si posiziona prima del 40, ottenendo così il vettore ordinato:

2 8 13 17 20 33 37 40

ecco il riassunto di ciò che è avvenutoo

20

20 33

17 20 33

8 17 20 33

8 13 17 20 33 40

2 8 13 17 20 33 40

2 8 13 17 20 33 37 40

ecco l'algoritmo usato:

  • confrontare l'elemento da inserire con quello presente in ultima posizione
  • cominciare a spostare gli elementi verso destra finchè non si trova la posizione in cui inserire il nuovo elemento: in tal modo viene creato un buco che viene spostato da destra a sinistra fini a raggiunger la posizione corretta
  • inserire il nuovo elemento in quella posizione.
Pubblicato in Senza categoria | Lascia un commento

TPSIT - Programmazione di rete - Applicazioni client/server concorrenti

Nel progetto del paragrafo precedente per la gestione di una chat, il programma server gestisce soltanto una connessione per volta. Solo quando il client si scollega, il programma server si mette in attesa di nuove connessioni.

Usando i thread, il programma server può aprire più connessioni contemporaneamente e gestire contemporaneamente più programmi client.

Realizzare un’applicazione C/S in cui il programma server gestisce un elenco di numeri di telefono. Ogni programma client si collega al server, comunica il nome di una persona e ottiene come risposta il numero di telefono. Se il numero non esiste viene inviato dal server un messaggio di nome non trovato. Il programma server deve poter accettare contemporaneamente più connessioni e servire più programmi client.

La rubrica telefonica è memorizzata in un file di testo agenda.txt, che supponiamo già disponibile e che contiene per ogni riga un nome e un numero di telefono separati dal punto e virgola.

Mario;02672727
Bianca;068382928
Francesca;33877778899
Valerio;33911112222

Il programma server utilizza la classe Contatto:

Il ciclo principale del codice del programma server concorrente (o multiutente) è il seguente:

while (true) {
connessione = sSocket.accept();
new Utente(connessione);
}

Ogni volta che un nuovo client si collega, viene creato un oggetto di classe Utente. Questa classe implementa l’interfaccia Runnable ed è quindi in grado di generare un thread che viene eseguito in modo asincrono.

Il programma server può ricevere nuove connessioni mentre i thread si preoccupano di gestire le connessioni con i client, inviando e ricevendo i dati.

Il programma server completo è riportato di seguito.

La classe Utente, che fa parte del codice del programma server, implementa le seguenti operazioni:

• apre i flussi in uscita e in ingresso dalla socket;

• riceve il nome dal client;

• effettua una ricerca sequenziale sul file agenda.txt;

• invia al client il numero di telefono oppure un messaggio di non trovato;

• chiude la connessione.

Il programma client presenta il seguente listato:

Pubblicato in Senza categoria | Lascia un commento

TPSIT Test su server Linux/Windows

Rob Gonsalves

Verifica su server Linux e Windows

Bisogna indicare un testo
Bisogna indicare un testo
Bisogna riempire questo campo
Bisogna indicare una data

Pubblicato in Senza categoria | Lascia un commento

HTML: le liste

tributo a Renè Magritte

Le liste rappresentano un valido sistema per la rappresentazione di elenchi. Vengono usate soprattutto in abbinamento a immagini, spesso animate, oppure elenchi puntati usando caratteri di testo. Si possono dividere in due categorie:

  • elenchi puntati o ordinati in modo progressivo
  • elenchi puntati o non ordinati

Elenchi numerati

Un elenco numerato è delimitato dal tag di apertura <ol> che significa ordered List, ovvero lista ordinata, e dal tag </ol> di chiusura.

Ogni elemento della lista deve inoltre essere preceduto dal tag <li> (List Item).

Mediante l'attributo type si possono modificare gli stili dell'elenco.

Alfabeto maiuscola <ol type="A">
Alfabetica minuscola <ol type="a">
Con numeri romani maiuscoli <ol type="I">
Con numeri romani minuscoli <ol type="i">
Con numeri <ol type="1">

Elenchi puntati

Il tag che li identifica è <ul> (Unordered List, lista non ordinata e non numerata). La differenza principale è che gli elenchi indicizzati non sono legati da stretti rapporti di successione gerarchica.

Pallini pieni <ul type="disc">
Pallini vuoto <ul type="circle">
Quadratini pieni <ul type="square"

Esempi

elenco numerato:

<ol>

<li>Primo

<li> Secondo

<li> Terzo

</ol>

Pubblicato in Senza categoria | Lascia un commento