Strutture Dati – Lo Stack

Ciao, oggi impareremo cosa è una struttura dati di tipo Stack, la sua implementazione con un Array in C, ed anche l’implementazione dinamica. Inoltre vedremo anche l’ambito di utilizzo.

Implementazione dello Stack usando gli Array

Uno Stack è una struttura dati che lavora sul principio LIFO (last in first out, ovvero l’ultimo ad entrare è il primo che esce).
Nel mondo informatico uno Stack può essere usato in molte applicazioni come ad esempio l’analisi della sintassi delle espressioni, nella gestione a run-time della memoria (usata nella Java virtual machine) e nell’intelligenza artificiale nella soluzione dei problemi tramite ricerca.

Operazioni sullo Stack

Push e pop sono le operazioni previste per l’inserimento e la rimozione di un elemento nello stack.

Codice per l’implementazione con Array

Di seguito il codice sorgente in C che mostra la struttura dati a Stack. Potete scaricarla e provarla sul vostro Pc.

Questo è l’header, salvatelo in un file chiamato “stack.h”

void push(int *s,int* top, int element);
int pop(int *s,int *top);
int full(int *top,const int size);
int empty(int *top);
void init(int *top);
Questa è l’implementazione dello stack, salvatela in un file chiamato “stack.c”

/*
initialize stack pointer
*/
void init(int *top)
{
*top = 0;
}

/*
push an element into stack
precondition: the stack is not full
*/
void push(int *s,int* top, int element)
{
s[(*top)++] = element;
}
/*
pop an element from stack
precondition: stack is not empty
*/
int pop(int *s,int *top)
{
return s[–(*top)];
}
/*
report stack is full nor not
return 1 if stack is full, otherwise return 0
*/
int full(int *top,const int size)
{
return *top == size ? 1 : 0;
}
/*
report a stack is empty or not
return 1 if the stack is empty, otherwise return 0
*/
int empty(int *top)
{
return *top == 0 ? 1 : 0;
}
Questo è il file di test, salvatelo come “teststack.c”

#include
#include
#include “stack.h”

#define size 3

void main()
{
int top,element;
int stack[size];

// initialize stack
init(&top);

// push elements into stack
while(!full(&top,size)){
element = rand();
printf(“push element %d into stack\n”,element);
push(stack,&top,element);
//press enter to push more
getchar();

}
printf(“stack is full\n”);

// pop elements from stack
while(!empty(&top)){
element = pop(stack,&top);
printf(“pop element %d from stack\n”,element);
//press enter to pop more
getchar();
}
printf(“stack is empty\n”);

getchar();
}

Implementazione Dinamica di uno Stack

Questa è un’altra versione di una struttura dati di tipo Stack. Con questa versione la dimensione dello Stack è dinamica e determinata a run-time.

Salvate il codice dell’header in un file chiamato “linkedstack.h”

int empty(struct node *s);
struct node* push(struct node *s,int data);
struct node* pop(struct node *s,int *data);
void init(struct node* s);
Salvate il codice della struttura dello stack dinamico nel file “linkedstack.c”

#include

struct node{
int data;
struct node* next;
};

void init(struct node* s){
s = NULL;
}

struct node* push(struct node* s,int data)
{
struct node* tmp = (struct node*)malloc(sizeof(struct node));
if(tmp == NULL){
// no memory available
exit(0);
}
tmp->data = data;
tmp->next = s;
s = tmp;
return s;
}
struct node* pop(struct node *s,int *element)
{
struct node* tmp = s;
*element = s->data;
s = s->next;
free(tmp);
return s;
}

int empty(struct node* s){
return s == NULL ? 1 : 0;
}
Ed infine il file per il test “testlinkedstack.c”

#include
#include

#include “linkedstack.h”

void main()
{
struct node* head = NULL;
int size,element,counter = 0;

/*
stack size is dynamic and
specified at runtime
*/
printf(“Enter stack size:”);
scanf(“%d”,&size);

printf(“Push elements to stack\n”);
init(head);
while(counter < size)
{
getchar();
element = rand();
printf(“push element %d into stack\n”,element);
head = push(head,element);
counter++;
}
printf(“Pop elements from stack\n”);
while(0 == empty(head))
{
head = pop(head,&element);
printf(“pop element %d from stack\n”,element);
getchar();
}

getchar();
}


Come Funzionano gli Altoparlanti

L’altoparlante può essere definito un trasduttore elettrico- acustico ( per trasduttore si intende genericamente qualsiasi dispositivo in grado di trasformare una forma di energia in un’altra); infatti esso provvede alla trasformazione dell’energia elettrica, disponibile all’uscita dell’amplificatore, in energia sonora.

Costruttivamente si compone di un cestello metallico rigido, che può avere forme diverse e che funziona da supporto per una membrana di materiale semirigido, chiamata cono. All’estremità del cono è fissata una bobina cilindrica, formata da poche spire di filo di rame, che prende il nome di bobina mobile ed i cui estremi fanno capo a due capicorda, fissati sul cestello ed isolati dallo stesso.

Quando la bobina mobile viene percorsa dalla corrente elettrica fornita da un amplificatore ( più avanti tratteremo il loro studio) si sposta avanti e indietro per effetto dell’azione reciproca fra il campo magnetico generato dalla corrente circolante nella bobina stessa ed il campo magnetico nel quale essa è immersa. La bobina è dunque alternativamente attratta e respinta dal magnete, al ritmo della frequenza della corrente e vibrando assialmente, fa muovere a sua volta il cono con il quale essa è solidale. Le vibrazioni del cono seguono quindi fedelmente l’andamento della corrente inviata nella bobina mobile e producono onde sonore ad essa corrispondenti.

Come qualsiasi componente elettrico ed elettronico, anche l’altoparlante è caratterizzato da alcune grandezze fondamentali, Potenza e Impedenza, che ne determinano l’impiego più idoneo in base a specifiche esigenze, come spiegato più nel dettaglio in questa guida sugli altoparlanti. La potenza nominale viene espressa in watt ed è in relazione alla massima potenza elettrica che può essere inviata in modo continuativo all’altoparlante.

L’impedenza deve essere adattata a quella dell’amplificatore che fornisce il segnale elettrico; essa è dovuta alle spire costituenti la bobina mobile e varia al variare della frequenza. Il valore dichiarato di impedenza, espresso in ohm, è riferito alle frequenze centrali della gamma acustica di 1000Hz o di 400Hz, i valori di impedenza più comuni sono compresi fra i 3 e 16 ohm.


Come Fare Screenshot sul Pc Senza Installare Programmi

In questa guida spiegheremo come fare uno screenshot su pc, utilizzando Microsoft Windows come sistema operativo. Lo screenshot, in pratica, è la fotografia istantanea dello schermo, dove viene immortalato ciò che stiamo facendo in quell’attimo sul pc.

Fare uno screenshot può diventare un’operazione utile per vari motivi, sia personali che professionali, soprattutto utilizzando parecchio internet. Per esempio, abbiamo la necessità di chiedere un aiuto tecnico particolare per qualche problema tecnico? Possiamo fotografare lo schermo per rendere chiara al nostro interlocutore la situazione da risolvere.

Vediamo, dunque, con precisione come fare uno screenshot su pc. Utilizzando Microsoft Windows come sistema operativo, abbiamo due modi possibili per catturare le immagini:

utilizzando semplicemente la tastiera ( metodo valido per tutte le versioni di Windows )
con un’applicazione nativa: Strumento di Cattura (disponibile da Windows Vista fino a Windows 8 ma non presente in XP )
Il primo metodo è semplicissimo e si basa sull’utilizzo del tasto STAMP o PRINT, presente in tutte le tastiere, in alto sulla destra. Una volta pigiato questo tasto, dovremo aprire Paint, applicazione di base per la grafica presente in tutte le versioni di Windows e qui incollare l’immagine. A questo punto, basterà salvarla dando un nome al file e voilà: il nostro screenshot sarà pronto. In quest’ultima fase, potremo scegliere che tipo di formato dare all’immagine: dal BMP al JPEG.

Il secondo metodo precedentemente elencato si basa sull’utilizzo di un software nativo, a partire da Windows Vista. Questo programma si chiama Strumento di cattura e lo possiamo trovare nel menu Accessori. Cliccando su Start, il bottone con il logo di Windows, dovremo poi entrare in Tutti i Programmi e successivamente in Accessori. Non ci resterà altro che selezionare la parte dello schermo da fotografare e poi salvarla nel formato che preferiremo.

Esistono anche dei programmi freeware appositi, tipo SnapCrab, per fare uno screenshot tuttavia vista la facilità e l’immediatezza dei due metodi precedentemente spiegati non crediamo sia il caso di installare altri software.


Come Ottimizzare Tutti i Database su Server MySQL

Sarà capitato di dover analizzare, riparare ed ottimizzare alcune tabelle di un database che si sta riempiendo troppo in fretta. Se l’operazione la si vuole realizzare a livello di server, esiste un comando pronto all’uso:
mysqlcheck -u root -p –auto-repair –check –optimize –all-databases

Basta lanciarlo, inserire la password, ed effettuerà le operazioni di manutenzione ed ottimizzazione in tutte le tabelle di tutti i database del server.


Come Attivare ADSL Tiscali

Hai scelto Tiscali per la tua ADSL. Perfetto.
Adesso ricordarti di fare 3 cose
-Verificare la copertura dell’ADSL Tiscali nella tua zona
-Prendere nota del Codice di Migrazione
-Tenere a portata di mano Carta d’Identità e Codice Fiscale
Per richiedere l’attivazione è possibile contattare l’assistenza clienti seguendo questa guida su come parlare con un operatore Tiscali.

Ho richiesto l’attivazione dell’ADSL Tiscali. E adesso cosa succede?
Entro un paio di giorni sarai contattato direttamente da Tiscali, tramite sms e email, per confermarti tutte le informazioni necessarie per accedere ai servizi che hai sottoscritto:
la tua nuova casella di posta elettronica Tiscali con relativa userID, password e PIN, e, se ha hai attivato una nuova linea, anche il tuo nuovo numero di telefono.
Successivamente riceverai via posta i documenti da firmare e rispedire a Tiscali: il Contratto e l’Informativa sulla Privacy.

E adesso? Quanto devo aspettare?
Tecnicamente l’attivazione dell’ADSL può richiedere anche due – tre settimane dalla richiesta. Se devi attivare una nuova linea telefonica sarai contattato da un Tecnico specializzato per l’appuntamento presso la tua abitazione. Se invece hai già una linea attiva non sarà necessario alcun intervento a casa tua, l’attivazione del servizio viene predisposta direttamente dalla Rete.
In qualsiasi momento potrai verificare lo stato della tua attivazione su My Tiscali, accedendo con le tue credenziali da PC o Smartphone. L’applicazione MyTiscali al momento e’ disponibile solo per Android. Se nell’offerta che hai sottoscritto è previsto anche il Modem Netbox Tiscali, ti sarà recapitato direttamente a casa tramite il corriere SDA.

Come sarò avvisato dell’avvenuta attivazione?
Se stai migrando a Tiscali da un altro operatore, riceverai un primo sms con la data prevista per il passaggio e un secondo sms a conferma dell’avvenuta attivazione. In caso di nuova attivazione, invece, sarai avvisato direttamente quando il servizio sarà attivo, tramite sms e email.