[:it]Linux – Debian Stretch – Installazione ifconfig[:]

[:it]

Janek Yerka

Appena terminata l’installazione di Debian stretch potrebbe esserci l’esigenza di conoscere il nome delle schede di rete o l’eventuale configurazione di rete.

Il comando, normalmente è

ifconfig

ma dà la seguente risposta:

# ifconfig
-bash: ifconfig: command not found

 

esso è all’interno del pacchetto net-tools

E’ sufficiente dare il seguente comando:

apt-get install net-tools

ed il problema si risolve[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]GPOI – CPM – Prova di maturità Tema B – 2017/2018[:]

[:it]1. Dato il seguente grafo (CPM), che schematizza il flusso di quattro attività, fornire per ciascuna di esse la data d’inizio al più presto (ES- Early Start), la data di fine al più presto (EF – Early Finish), la data d’inizio al più tardi (LS – Late Start), la data di fine al più tardi (LF – Late Finish) e lo slittamento tra la data di fine al più tardi e la data di fine al più presto (TF- Total Float), evidenziando il percorso critico. Indicare sul grafo le date richieste ed evidenziare il percorso critico.

 

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]GPOI – CPM – Prova di maturità Tema A – 2017/2018[:]

[:it]

  1. Dato il seguente grafo (CPM), che schematizza il flusso di quattro attività, fornire per ciascuna di esse la data d’inizio al più presto (ES- Early Start), la data di fine al più presto (EF – Early Finish), la data d’inizio al più tardi (LS – Late Start), la data di fine al più tardi  (LF – Late Finish) e lo slittamento tra la data di fine al più tardi e la data di fine al più presto (TF- Total Float), evidenziando il percorso critico. Indicare sul grafo le date richieste ed evidenziare il percorso critico.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]GPOI – CPM – Esempio dato alla simulazione dell’esame di maturità 17/18 Tema A[:]

[:it]1. Dato il seguente grafo (CPM), che schematizza il flusso di quattro attività, fornire per ciascuna di esse la data d’inizio al più presto (ES), la data d’inizio al più tardi (EF), la data di fine al più presto (LS), la data di fine al più tardi (LF) e lo slittamento tra la data di fine al più tardi e la data di fine al più presto (TF), evidenziando il percorso critico. Indicare sul grafo le date richieste.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]GPOI – CPM – Esempio dato alla simulazione della prova dell’esame maturità 2017/18 Tema B[:]

[:it]1. Dato il seguente grafo, che schematizza il flusso di quattro attività, fornire per ciascuna di esse la data d’inizio al più presto (ES), la data d’inizio al più tardi (EF), la data di fine al più presto (LS), la data di fine al più tardi (LF) e lo slittamento tra la data di fine al più tardi e la data di fine al più presto (TF), evidenziando il percorso critico.

 

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]VE Informatica e Telecomunicazioni 2018/2019[:]

[:it]

Tintoretto, autoritratto, 1548 circa

  1. AD
  2. CN
  3. CS
  4. JH
  5. KH
  6. MH
  7. ML
  8. MP
  9. SB
  10. VD
  11. ZD
  12. ZM

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++ Verifica [:]

[:it]

pierre marcel

Il nome del programma dovrà essere:

CognomeNomeTemax.cpp

x assumerà il valore 1 o 2 a seconda del tema assegnato.

TEMA 1

Si deve calcolare l’importo della fattura telefonica.

Le tariffe sono le seguenti:

  • i primi 30 minuti si pagano  0.35€/min.
  • dai 30 ai 100 minuti si paga 0.25€/min
  • oltre i 100 minuti si pagano 0.15€/min.

Ad esempio se ho consumato 70 minuti, i primi 30 li pago 0.35€/min i rimanenti, ossia 40, li pago 0.25€/min.

L’unico dato che si richiede è i minuti.

TEMA 2

In un posteggio si deve calcolare l’importo.

Esso segue le seguente regole:

  • le prime tre ore si pagano 2.50€
  • dalla terza alla 6 ora si paga 1.50€
  • dalla 6 ora in poi si paga 1€ all’ora.

Ad esempio se rimango 5 ore, le prime tre ore le pago 2.50, le altre 2 le pago 1.50.

L’unico dato che si richiede è il numero di ore in cui si rimane al parcheggio.

SCHEDA DI VALUTAZIONE

Descrittore Punteggio
sintassi corretta del linguaggio 4
intestazione del programma con il proprio nome e nome del programma corretto 0.5
algoritmo corretto 3
gestione dei tipi di dato corretto 0.5
esecuzione del programma 1.5
commenti 0.5

 

 

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Linux: aggiornamento repository da CD-ROM [:]

[:it]

Claude Monet

Con il comando

apt-cdrom add

aggiunge un cd/dvd alle fonti a cui è possibile prelevare i pacchetti

Se vi sono più Cd/DVD è possibile ripetere l’operazione per ciascuno di essi.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: liste concatente con puntatori[:]

[:it]

Giorgio De Chirico

DEFINIZIONE DI LISTA CONCATENATA

• Consideriamo una nuova modalità di memorizzare i dati in cui l’accesso non avviene più tramite un indice, che individua la posizione del dato nella struttura, ma tramite un indirizzo di memoria.

• Per costruire una sequenza di informazioni è necessario che ogni dato della struttura memorizzi l’indirizzo di memoria dell’elemento successivo.

• Si costruisce pertanto una struttura di dati collegata, chiamata lista concatenata.

Un elemento, o nodo, di una lista concatenata oltre all’informazione memorizza anche il riferimento dell’elemento successivo: per rappresentare il nodo, abbiamo bisogno di un record con due (o più) campi di tipo diverso:

dato: info

riferimento: succ

NODO

• Il nodo sarà composto da :

• l’informazione: un elemento di tipo base o un record o un array, …

• il riferimento sarà un riferimento ad un nodo: un riferimento ad un elemento dello stesso tipo del nodo.

DIFFERENZA RISPETTO UN ARRAY

• Le informazioni memorizzate non sono più necessariamente contigue in memoria, come nell’array

La lista concatenata non ha una dimensione stabilita a priori; dobbiamo però individuarne la fine, vale a dire un valore per il riferimento con il quale non si acceda ad alcun nodo.

• Tale valore nel C++ è NULL

 

Sintassi della definizione della lista:

Confronto molto sintetico tra utilizzo di un array o l’utilizzo di una list:

L’array richiede “spostamento” di dati (O(n)) nel caso di inserimento e cancellazione, che per la lista sono O(1);

  • possiede invece accesso diretto, che è O(1), mentre la lista accesso sequenziale, che è O(n).

Meglio:

per un’alta movimentazione di dati conviene usare una lista per un’accesso puntuale meglio un vettore.

INSERIMENTO DI UN ELEMENTO IN UNA LISTA

p=new tipolista inizializzo il nodo
p->info=1; inserisco 1 nel campo info del nodo
p->succ=inizio; metto a null il campo puntatore essendo il primo della lista e per adesso non punta a nessun altro nodo
inizio=p; il puntatore inizio punta al primo nodo
fine=p; il puntatore fine punta all’ultimo nodo che in questo caso è anche il primo, serve per inserire un nodo alla coda della lista

 

INSERIMENTO DI UN NUOVO ELEMENTO ALL’INIZIO DELLA LISTA

questa volta il puntatore non è null ma memorizzerà l’indirizzo di memoria del nodo che era in testa che era memorizzato nel puntatore inizio.

Meglio: il puntatore inizio è fondamentale per tenere sempre in memoria l’indirizzo del nodo di partenza della lista.

I nodi sono collegati tra loro solo dalla memorizzazione dell’area di memoria che potrebbe essere anche non contigua!

INSERIMENTO DI UN NUOVO ELEMENTO IN CODA

 

da notare che per poter inserire in coda ad una lista si deve aver definito precedentemente un puntatore che punta sempre alla coda della lista.

PRIMA CONCLUSIONE

Si crea ogni volta un oggetto formato da un binomio: il dato ed un contenitore per l’indirizzo di memoria. Quest’ultimo assumerà sempre il valore null se è l’ultimo nodo altrimenti l’indirizzo di memoria del nodo successivo.

Sono isole separate che si collegano solo mediante degli indirizzi.

LETTURA DELLA LISTA

come si nota copio il puntatore che punta sempre al primo elemento (ha l’indirizzo di memoria del primo elemento) e poi per scorrerla copio sempre il contenuto dei singoli nodi.

Ecco il listato completo

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++ i puntatori[:]

[:it]

Yerka

Il C e C++ molto i puntatori. Perche’?

  • e’ l’unico modo per esprimere alcune operazioni;
  • produce codici sorgenti compatti ed efficienti;
  • rappresenta uno strumento molto efficace.

Il C utilizza molto i puntatori in maniera esplicita con:

  • vettori;
  • strutture;
  • funzioni.

Un puntatore e’ un tipo di dato, una variabile che contiene l’indirizzo
in memoria di un’altra variabile. Si possono avere puntatori a qualsiasi tipo
di variabile.
La dichiarazione di un puntatore include il tipo dell’oggetto a cui il
puntatore punta.
In C ogni variabile ha due tipi di valori: una locazione e un valore
contenuto in quella locazione.

L’ operatore & (operatore unario, o monadico) fornisce l’indirizzo di una
variabile.
L’ operatore * (operatore indiretto, o non referenziato) da’ il contenuto
dell’oggetto a cui punta un puntatore.

Per dichiarare un puntatore ad una variabile, l’istruzione e’:

int *pointer;

Nota: e’ obbligatorio associare un puntatore ad un tipo particolare; per
esempio, non e’ possibile assegnare l’indirizzo di uno short int ad un
long int.

Consideriamo gli effetti del seguente codice:

int *pointer;  /* dichiara pointer come un puntatore a int */
int x=1,y=2;

(1) pointer= &x;   /* assegna a pointer l’indirizzo di x */
(2) y=*pointer;    /* assegna a y il contenuto di pointer */
(3)   x=pointer      /* assegna ad x l’indirizzo contenuto in pointer */
(4) *pointer=3;    /* assegna al contenuto di pointer il valore 3 */

Vale la pena considerare cosa succede al “livello macchina” in memoria per
capire completamente come funzionano i puntatori.
Supponiamo che la variabile x si trovi nella locazione di memoria 100, y nella
200 e pointer nella 1000 (ricordiamo che pointer e’ una variabile a tutti gli
effetti, e cosi’ il suo valore necessita di essere memorizzato da qualche
parte; e’ la caratteristica del valore dei puntatori che risulta nuova).

L’istruzione (1) fa si che pointer punti alla locazione di memoria 100
(quella di x).
La (2) fa si che y assuma valore 1 (il valore di x).
La (3) fa si che x assuma valore 100 (cioe’ il valore di pointer).
La (4) fa si che il valore del contenuto di pointer sia 3 (quindi x=3).

Notate che le assegnazioni x=1 e y=2 ovviamente caricano questi valori nelle
variabili; pointer e’ dichiarato come puntatore ad un intero e vi e’
assegnato l’indirizzo di x (&x), cosi’ pointer verra’ caricato con il valore
100.

Ecco un primo esempio di suo utilizzo:

@include<iostream>

using namespace std;
int main()
{
int *i;
int x;
x=10;
i=&x;
cout<<“valore della memoria “<<i<<endl;
cout<<“valore di x “<<x<<endl;
// il valore a cui punta il puntatore
cout<<“valore a cui punta il puntatore “<<*i<<endl;
// cambio il valore di x tramite il suo puntatore
*i=23;
cout<<“nuovo valore di x “<<x<<endl;
// vettore e puntatore
int v[3];
int *pv;
//lettura de vettore
for (int k=0;k<3;k++)
{
cout<<“Inserisci elemento “<<k<<” del vettore”<<endl;
cin>>v[k];
}
//stampa del vettore
cout<<“ecco il vettore “<<endl;
for (int k=0;k<3;k++)
{
cout<<v[k]<<endl;
}
pv = v;
cout<<“stamap indirizzi di memoria del vettore”<<endl;
for(int k=0;k<3;k++)
{
cout<<pv+k<<endl;
}
return 0;
}

 [:]

Pubblicato in Senza categoria | Lascia un commento