[:it]C++ Ordinamento per inserimento – inserimento di un buco nel vettore[:]

[:it]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

[:it]C++ Ordinamento per inserimento – inserimento dinamico del vettore[:]

[:it]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

[:it]C++: ordinamento per inserimento – spostamento degli elementi di un vettore di un posto a destra[:]

[:it]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

[:it]C++: introduzione – ordinamento per inserimento[:]

[:it]

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

[:it]TPSIT – Programmazione di rete – Applicazioni client/server concorrenti [:]

[:it]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

[:it]TPSIT Test su server Linux/Windows[:]

[:it]

Rob Gonsalves

[WpProQuiz 59]

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: le liste[:]

[:it]

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

[:it]HTML: le immagini[:]

[:it]

Renè Magritte

Le immagini che possono essere inserite in una pagina web arricchiscono i contenuti integrando il testo.

I formati grafici che si possono inserire sono di tre tipi

  • GIF (Graphics Interchange Format)
  • JPEG o JPG (Joint Photographic Expert Group)
  • PNG (Portable Network Graphics)

Per inserire un’immagine si utiliza il tag <img>, iniziale di Image, che non possiede tag di chiusura, secondo questa sintassi:

<img src=”percorso/immagineDaInserire>

Si deve tenereì presente che i file delle immagini dovrebbero essere memorizzati all’interno di una cartella separata rispetto a dove risiede la pagina HTML. La struttura del sito deve prevedere una cartella principale che racchiude tutto il sito e almeno due cartelle, una per le pagine e un per le immagini.

Gli attributi del tag <img> permettono di variare alcune caratteristiche dell’immagine e aggiungere alcuni elementi molti utili. Ecco la sintassi completa:

<img src=”immagine” border=”SpessoreBordo” width=”Larghezza” heigh=”Lunghezza” align=”Allineamento” alt=”Frase Alternativa” lowsrc=”Immagine precaricata”>

L’attributo border permette di specificare un bordo attorno all’immagine di uno spessore espresso in pixel oppure in percentuale.

Gli attributi width e hight permettono di variare le dimensioni di base dell’immagine in larghezza e in percentuale.

esempio:

<img src=”Immagine” width=”120px” heigh=”80px” border=”0″>[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT – Windows: server per le reti e per il Web – Non consentire il ping[:]

[:it]Per creare una nuova regola, si deve fare clic su Nuova regola nel riquadro Azioni a destra, che avvia la creazione guidata.

 

Per creare una nuova regola, si deve fare clic su Nuova regola nel riquadro Azioni a destra, che avvia la creazione guidata. Prima di tutto occorre decidere che tipo di regola creare:

• può riguardare un Programma, per esempio abilitare l’accesso a Internet per un client di posta elettronica;

• può riguardare una Porta, per vietare o bloccare tutte le connessioni su una determinata porta; per esempio autorizzare tutte le connessioni sulla porta 80 (servizio HTTP);

• può essere Predefinita, alcune regole standard sono già presenti, per esempio le regole per far funzionare correttamente i server installati;

• può essere Personale, per creare una regola personalizzata.

Scegliendo l’ultima opzione (Regola personalizzata) e facendo clic sul pulsante Avanti, viene richiesto se la regola deve essere applicata a tutti i programmi o solamente ad alcuni: nel secondo caso occorre selezionare il programma eseguibile.

Se la regola deve valere per tutti i programmi, si deve selezionare le prima opzione e fare clic sul pulsante Avanti.

A questo punto occorre impostare il protocollo ICMPv4, scegliendo nella casella combinata Tipo di protocollo. In questo caso non è necessario specificare alcuna porta.

Nella finestra successiva si devono inserire gli indirizzi IP soggetti a questa regola. Selezionando l’opzione Qualsiasi indirizzo IP, la regola diventa generale; altrimenti occorre inserire sia un elenco di indirizzi IP locali che un elenco di indirizzi remoti.

Dopo aver fatto clic sul pulsante Avanti, viene mostrata la finestra Operazione, nella quale occorre specificare l’operazione da eseguire quando una connessione corrisponde alle condizioni specificate nella regola.

Nel nostro caso il pacchetto deve essere bloccato, per cui si deve selezionare l’ultima opzione Blocca la connessione.

Successivamente occorre decidere a quale profilo applicare la regola: profilo di Dominio, profilo Privato e profilo Pubblico. Si può confermare l’impostazione predefinita (tutti i profili) e fare clic sul pulsante Avanti.

Nell’ultima finestra viene richiesto il nome della regola e un’eventuale descrizione. Facendo clic su Fine, la regola viene creata.

Per verificare il funzionamento della regola, dalla linea comandi di un altro computer, occorre dare il comando ping, seguito dall’indirizzo dell’host su cui è attivo il firewall. L’esecuzione del comando produce la risposta Richiesta scaduta, che evidenzia l’impossibilità di effettuare la connessione.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT – Windows: server per le reti e per il Web -Firewall[:]

[:it]Come abbiamo già visto nell’inserto precedente su Linux, il firewall è uno strumento in grado di analizzare il traffico di rete e di gestirlo in base a regole predefinite. Il firewall può essere un programma software oppure un computer dedicato. Il firewall decide se bloccare o lasciare transitare i pacchetti della rete sulla base di una o più regole ben definite.

In Windows Server è presente un firewall software, che viene installato e avviato automaticamente. Il programma di gestione può essere aperto con la scelta Windows Firewall con sicurezza avanzata, dal pulsante Strumenti di amministrazione della schermata Start, oppure dal menu Strumenti di Server Manager.

Esso permette di creare regole personali e di monitorare la sicurezza generale del sistema.

 

La finestra del programma è suddivisa in tre zone: la zona di sinistra con l’elenco delle opzioni, la zona centrale con lo stato delle opzioni selezionate e la zona a destra con le azioni principali.

La videata di partenza presenta lo stato generale del firewall. In generale il firewall utilizza tre diversi profili (in inglese profile):

• Profilo di dominio attivo, riguarda le connessione all’interno del dominio del server.

• Profilo privato, riguarda le connessioni all’interno della rete privata.

• Profilo pubblico, riguarda le altre connessioni.

In generale esistono due metodologie per gestire le connessioni:

• bloccare tutte le connessioni fino a che si trova una regola che le permetta;

• permettere tutte le connessioni se non si trova una regola che le vieti.

Entrambe presentano sia aspetti positivi che negativi: in generale la prima politica è più sicura, in quanto una nuova connessione sconosciuta al firewall viene bloccata.

Questo tuttavia può presentare dei problemi perché, fino a quando le regole non sono state stabilite in maniera completa, un nuovo servizio non funziona in quanto sconosciuto al firewall.

Simmetricamente la seconda politica permette di far funzionare qualsiasi servizio da subito. In questo modo però si ha un livello minore di sicurezza, in quanto un servizio maligno e sconosciuto può essere autorizzato dal firewall.

In generale nella schermata principale vengono visualizzate le politiche per ogni profilo. Nell’esempio della figura precedente la politica di blocco viene applicata alle connessioni in entrata, mentre l’altra viene applicata alle regole di uscita: questa soluzione può essere considerata una buona via di equilibrio.

Riassumendo:

• le connessioni in entrata vengono bloccate a meno che esista una regola che le permetta; • le connessioni in uscita sono tutte permesse a meno che esista una regola che le vieti. Sulla base di queste impostazioni, si possono visualizzare, creare o modificare le regole facendo clic su Regole connessioni in entrata (in inglese inbound rules) e Regole connessioni in uscita (outbound rules) nel menu a sinistra. Per esempio, con un clic su Regole connessioni in entrata, vengono visualizzate le regole presenti nel firewall. Occorre sottolineare che il tipo di regola dipende dalla politica principale.

Nel caso delle connessioni in entrata la politica principale impone di bloccare, quindi la maggior parte delle regole viene creata per permettere le connessioni. Per le connessioni in uscita avviene il contrario. Per abilitare o disabilitare una regola, si deve selezionarla con un clic del tasto destro del mouse e scegliere poi l’opzione Abilita regola o Disabilita regola.

 [:]

Pubblicato in Senza categoria | Lascia un commento