Follow me on Twitter RSS FEED

Calcolatrice in C#

Posted in By Joker 0 commenti

Da qualche giorno mi stò dedicando alprogetto di una calcolatrice in C#.

Per adesso mi sono fermatopiù sulla grafica che sul codice, ma ci stò ragionando sopra.
 
Ho guardato su you tube per vedere se trovavo qualche suggerimento interessante su come impostare il codice e ho trovato questo interessante video, non è niente di speciale, ma per chi è agli inizi come me tornerà sicuramente utile.


Esercizio sull'ereditarietà in C++

Posted in By Joker 0 commenti

Nota: Definizioni tratte dal sito http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/31Eredita.html

Esistono tre specificatori:
private: (default) indica che tutti i membri seguenti sono privati, e non possono essere ereditati;
public: indica che tutti i membri seguenti sono pubblici, e possono essere ereditati;
protected: indica che tutti i membri seguenti sono protetti, nel senso che sono privati, ma possono essere ereditati;
L'accessibilità dei membri ereditati da una classe base dipende anche dallo "specificatore di accesso alla classe base", che deve essere indicato come nel seguente esempio:

          class Figlio : spec.di accesso Padre  {  ........  } ;
 
dove spec.di accesso può essere: private (default), protected o public (notare l'assenza dei due punti). Ogni membro ereditato avrà l'accesso più "restrittivo" fra il proprio originario e quello indicato dallo specificatore di accesso alla classe base, come è chiarito dalla seguente tabella http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/31Eredita.html:




Quindi un membro ereditato è pubblico solo se è public nella classe base e l'accesso della classe derivata alla classe base è public.
Se una classe derivata è a sua volta genitrice di una nuova classe, in quest'ultima l'accesso ai membri ereditati è governato dalle stesse regole, che vengono però applicate esclusivamente ai membri della classe "intermedia", indipendentemente da come questi erano nella classe base. In altre parole, ogni classe "vede" la sua diretta genitrice, e non si preoccupa degli altri eventuali "ascendenti".
Normalmente l'accesso alla classe base è public. In alcune circostanze, tuttavia, si può volere che i suoi membri pubblici e protetti, ereditati nella classe derivata, siano accessibili unicamente da funzioni membro e friend della classe derivata stessa: in questo caso, occorre che lo specificatore di accesso alla classe base sia private; analogamente, se si vuole che i membri pubblici e protetti di una classe base siano accessibili unicamente da funzioni membro e friend della classe derivata e di altre eventuali classi derivate da questa,  occorre che lo specificatore di accesso alla classe base sia protected
Esercizio
Creo una sopraclasse di nome Padre e tre sottoclassi di nome Figlio, ognuna di queste sottoclassi però erediterà in modo diverso i membri e gli attributi della classe Padre.   


#include <cstdlib>
#include <iostream>


using namespace std;


class Padre {
public:
int a,b;
int Addizione(){return a+b;};
};


class FiglioPubblico:public Padre {
public:
int Addizione(){return a+b;};
int Sottrazione(){return a-b;};


};


class FiglioPrivato:private Padre {
public:
int Addizione(){return a+b;};
int Sottrazione(){return a-b;};


};


class FiglioProtetto:protected Padre {
public:
int Addizione(){return a+b;};
int Sottrazione(){return a-b;};


};


int main(int argc, char *argv[])
{
FiglioPubblico pubb;
FiglioPrivato priv;
FiglioProtetto prot;


cout<<"Pubblico"<<endl;
cout<<"Inserire a: ";
cin>>pubb.a;
cout<<"Inserire b: ";
cin>>pubb.b;


cout<<"Addizione = "<<pubb.Addizione()<<endl;
cout<<"Sottrazione = "<<pubb.Sottrazione()<<endl;


/*cout<<"Privato"<<endl;
cout<<"Inserire a: ";
cin>>priv.a;
cout<<"Inserire b: ";
cin>>priv.b;


cout<<"Addizione = "<<priv.Addizione()<<endl;
cout<<"Sottrazione = "<<priv.Sottrazione()<<endl;*/


/*cout<<"Protetto"<<endl;
cout<<"Inserire a: ";
cin>>prot.a;
cout<<"Inserire b: ";
cin>>prot.b;


cout<<"Addizione = "<<prot.Addizione()<<endl;
cout<<"Sottrazione = "<<prot.Sottrazione()<<endl;*/




system("PAUSE");
return EXIT_SUCCESS;
}


Ecco il risultato del primo test:
Nel primo test utilizzo lo specificatore public per ereditare dal Padre i suoi membri a e b e il metodo Addizione( ).
Ecco cosa mi compare sullo schermo:
 
Ecco il risultato del secondo test:
Nel secondo test utilizzo lo specificatore private per ereditare dal Padre i suoi membri a e b e il metodo Addizione( ).
Ecco cosa mi compare sullo schermo:



Ecco il risultato del terzo test:
Nel terzo test utilizzo lo specificatore protected per ereditare dal Padre i suoi membri a e b e il metodo Addizione( ).
Ecco cosa mi compare sullo schermo:

L'ereditarietà in C++

Posted in By Joker 0 commenti

L'ereditarietà è la capacità di riutilizzare le componenti (membri e attributi) della classe base in quella derivata.
                                      es. class Figlio : Padre  {  ........  } ;

L'esempio indica che la classe derivata Figlio possiede, oltre ai menbri elencati nella propria definizione, anche quelli ereditati dalla classe base Padre.

La classe che è stata derivata da un'altra usando l'ereditarietà è detta sottoclasse mentre la classe genitrice è detta sopraclasse

La nuova classe si differenzia dalla sopraclasse in due modi:
per estensione, quando la sottoclasse aggiunge nuovi attributi e/o metodi che si sommano a quelli ereditati;
per ridefinizione, quando la sottoclasse ridefinisce i metodi ereditati.

Esistono due tipi di ereditarietà: singola e multipla.
L'ereditarietà singola si verifica quando una sottoclasse deriva da un'unica sopraclasse.


L'ereditarietà multipla si verifica quando da una sottoclasse derivano due o più sopraclassi.


Si tratta di un vero e proprio riciclo del codice, poichè quanto già scritto e collaudato è incapsulato nella sopraclasse (classe Padre) e viene inglobata nella nuova classe che si va a creare (classe Figlio) .

Per approfondimenti vi rimando al sito cnr che vi fornirà un quadro più completo sull'argomento:
http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/31Eredita.html

Le videolezioni di Camuso sul C#

Posted in By Joker 1 commenti

Strutture avanzate di dati - L'albero

Posted in By Joker 0 commenti

L’ albero è un grafo orientato in cui da ogni nodo possono discendere più figli ma tale che ogni nodo, ad eccezione della radice, abbia un solo padre.



Gli elementi di un albero si chiamano nodi, mentre con ramo si indica un cammino composto da più nodi connessi. Un nodo posto al termine di un ramo è chiamato foglia, mentre il nodo da cui partono i rami è detto radice.

L’albero è considerato un grafo connesso privo di circuiti perché essendo privo di circuiti, garantisce che, partendo dalla radice, si possa raggiungere qualsiasi foglia senza rischiare di finire in un circolo dal quale non si possa uscire.

Nota: Per circuiti si intende un percorso chiuso che permette, partendo da un elemento, di tornare sul medesimo elemento senza ripercorrere lo stesso tratto due volte.

Un albero, a differenza di altre strutture dati quali array, lista, coda, ecc., ha le seguenti caratteristiche:
• Struttura non lineare
• Struttura ricorsiva
• Struttura complessa

Il nodo da cui discende un altro nodo è detto padre. I nodi discendenti da un nodo padre sono detti figli.
Il rapporto padre-figlio dei nodi dell'albero vale per ogni nodo ad eccezione:
• della radice (ha solo figli e non ha padre)
• delle foglie (hanno solo il padre ma non hanno figli)
Una foglia, come già espresso sopra, è un nodo terminale, ovvero un nodo senza figli. Tutti i figli di uno stesso nodo si chiamano fratelli.

Un tipo particolare di albero è l'albero binario.



Un albero binario è caratterizzato dal fatto che da ogni nodo partono al massimo due rami distinti chiamati sottoalbero sinistro e sottoalbero destro.




Per visitare un albero (cioè visitarne tutti i nodi) esistono tre modi:
PREORDINE (Preorder) o ordine anticipato: R - S - D
POSTORDINE (Postorder) o ordine posticipato o polacco: S - D - R
INORDINE (Inorder) o ordine simmetrico: S - R - D

Dove R sta per la radice, D sta per sottoalbero destro della radice e S sta invece per sottoalbero sinistro della radice.

Il numero massimo di nodi toccati per arrivare ad una foglia prende il nome di profondità dell’albero: nel caso illustrato a destra la profondità è 4.
Si dice anche che l’albero ha quattro livelli, dove per livello si intende l’insieme dei dati che distano un uguale numero di nodi dalla radice.




In generale, se p è la profondità, N il numero massimo di nodi e F il numero massimo di foglie:
N=2P-1 F=2(p-1)
Esempio:
N=26-1 N=64

Un albero avente la profondità strettamente necessaria a contenere i nodi che lo costituiscono si dice bilanciato: ad esempio un albero profondo 6 con 40 nodi è bilanciato, in quanto una profondità inferiore (5) consente di inserire solo 31 nodi e non 40. Viceversa un albero profondo 5 con 14 nodi non è bilanciato,in quanto 14 nodi potrebbero stare in un albero meno profondo.

LA DICHIARAZIONE

Partiamo dal caso più semplice: gli alberi binari. Gli alberi binari possono essere implementati mediante record (strutture, in c) di tre campi: R (il valore del nodo, chiamato R in quanto radice del sotto albero che genera), *D (puntatore al figlio destro e quindi al sotto albero destro generato) e *S (puntatore al figlio sinistro).
Gli alberi non binari invece possono essere implementati, fra i vari modi, mediante record di due campi: la radice (o valore del nodo) e il campo che punta alla lista (o al vettore) dei figli.

Vediamo ora come si dichiara una struttura albero in C.

struct nodo {
// Albero di numeri interi
int DATO;
// Puntatore al sottoalbero destro
struct nodo *DX;
// Puntatore al sottoalbero sinistro
struct nodo *SX;
} NODO;

Questo è il record di tre campi di cui abbiamo parlato all'inizio: DATO, che precedentemente abbiamo chiamato R, *DX e *SX. Per chi non lo ricordasse DATO è la variabile che contiene il valore del nodo.
Ricordo inoltre che il C/C++ è case sensitive e che quindi "NODO" è diverso da "nodo".

Una volta dichiarata la struttura del generico nodo dell'albero, dobbiamo ora dichiarare una variabile che punti a tale struttura.
Tale variabile la chiameremo tree (in inglese tree = albero):

typedef struct nodo* tree;

Questo significa che stiamo definendo un nuovo tipo di dato (typedef) di nome tree che è un puntatore a variabile di tipo nodo.

Esercizio Semplice puntatore

Posted in By Joker 0 commenti

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a=7; //Dichiarazione variabile intera con inizializzazione
int *p = 0; //Dichiarazione puntatore ad intero
p = new int; //Allocazione di memoria per l'intero
p=&a;

cout<<*p<<"n"; //Stampa il valore contenuto nella variabile puntata
cout<<p<<"n"; //Stampa il contenuto del puntatore, cioè l'indirizzo della variabile puntata
cout<<&p<<"n"; //Stampa l'indirizzo del puntatore

cout<<a<<"n"; //Stampa il contenuto del variabile a
cout<<&a<<"n"; //Stampa l'indirizzo della variabile a

delete p; // rilascia l'area di memoria

system("PAUSE");
return EXIT_SUCCESS;
}

Funzioni di sovrapposizione

Posted in By Joker 0 commenti

A differenza dal C, il C++ consente l'esistenza di più funzioni con lo stesso nome, che sono chiamate: "funzioni sovrapposte" dette anche “funzioni di overload”. Il compilatore distingue una funzione dall'altra in base alla lista degli argomenti: due funzioni con overload devono differire per il numero e/o per il tipo dei loro argomenti.

Es. funz( ); funz(int a);

verranno chiamate con lo stesso nome funz, ma sono in realtà due funzioni diverse, in quanto non ha nessun argomento mentre la seconda ha un argomento int.

Non sono ammesse funzioni con overload che differiscano solo per il tipo del valore di ritorno ; né sono ammesse funzioni che differiscano solo per argomenti di default.

Es. void funz(int); e int funz(int);

non sono accettate, in quanto generano ambiguità: infatti, in una chiamata tipo funz(n), il programma non saprebbe se trasferirsi alla prima oppure alla seconda funzione (non dimentichiamo che il valore di ritorno può non essere utilizzato).

Es. funz(int); e funz(int, double=0.0);

non sono accettate, in quanto generano ambiguità: infatti, in una chiamata tipo funz(n), il programma non saprebbe se trasferirsi alla prima funzione (che ha un solo argomento), oppure alla seconda (che ha due argomenti, ma il secondo può essere omesso per default).
La tecnica dell'overload é molto usata in C++, perché permette di programmare in modo semplice ed efficiente: funzioni che eseguono operazioni concettualmente simili possono essere chiamate con lo stesso nome, anche se lavorano su dati diversi.

La programmazione ad oggetti

Posted in By Joker 2 commenti

La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è uno stile fondamentale di programmazione, che prevede di raggruppare in un'unica entità, detta classe, sia le strutture dati che le procedure che operano su di esse, creando per l'appunto un oggetto.
Come nel mondo reale la realizzazione di un oggetto avviene in più fasi, lo stesso è nella programmazione ad oggetti.

Fase di costruzione di un oggetto:



Progetto
Nel mondo della programmazione ad oggetti (OOP) il progetto altro non è che la classe, cioè un’entità logica, non occupa spazio in memoria, che definisce variabili, funzioni e altri oggetti che possono essere pubblici, privati o protetti.

Costruttori
La vita di un oggetto classe ha inizio nel momento in cui viene creato, ossia viene allocato spazio nella memoria per contenere i dati dell’oggetto.

A questo punto sorge spontaneo la domanda:
“Ma da chi viene creato?”
“Dal costruttore.”


Il costruttore è una funzione il cui nome è il nome della classe: il costruttore viene chiamato automaticamente quando viene creato un oggetto appartenente alla stessa classe.

Sintassi:
nome_classe ( );

Oggetto

“L’oggetto è un’istanza della classe”.

L’oggetto è un’entità fisica, che occupa spazio in memoria, realizzata dalla classe (progetto) che combina elementi dati, funzioni e altri oggetti.
Questi elementi, detti anche modificatori, possono essere pubblici, privati e protetti.
Gli elementi pubblici costituiscono l’interfaccia cioè l’insieme delle variabili e funzioni a nostra disposizione per interagire con l’oggetto.
Gli elementi privati costituiscono tutta quella parte di codice a cui noi non abbiamo accesso perché il loro stato garantisce il corretto funzionamento dell’oggetto, “una sorta di protezione per impedire all’utente di combinare danni”.

Distruttore
Il distruttore è l’opposto del costruttore cioè quando termina il tempo di vita di un oggetto questo viene eliminato dal distruttore, per liberare la memoria occupata dai campi dati dell’oggetto.
Il distruttore è anch’essa una funzione che ha lo stesso nome della classe ma è preceduto dal simbolo ‘~’ (tilde).

Sintassi:
~ nome_classe ( );


Come si dichiara un oggetto in C++:

class tipo {
public:
tipo var1;
tipo var2;
tipo var3;
funzione membro 1;
funzione membro 2;

protected:
tipo var4;
tipo var5;
tipo var6;
funzione membro 3;
funzione membro 4;

private:
tipo var7;
tipo var8;
tipo var9;
funzione membro 5;
funzione membro 6;
} oggetto;

Esempio pratico:

class Rettangolo {
public:
//attributi
float base , altezza;
//metodi
float Area ( ) {
return base*altezza;
}; // Fine Area
} Figura1; // Fine classe

In questo esempio la classe Rettangolo si compone di due attributi di tipo reale e di un metodo che restituisce un numero reale ottenuto moltiplicando i due attributi.

figura1.base = 12 ;
figura1.altezza = 8 ;
cout << “L’area del rettangolo è “ <<figura1.Area ( ) << endl ;

Con questo esempio potete notare che è l’oggetto ad essere utilizzato tramite l’annotazione puntata e non il progetto. Quindi il progetto è un modello,un idea, un prototipo che ci serve per la dichiarazione degli attributi e dei metodi. Mentre l’oggetto, che è fisico, reale, ha un corpo, è colui che andremo ad utilizzare per svolgere determinate azioni.

Java

Posted in By Joker 1 commenti

Java è un linguaggio di programmazione orientato agli oggetti realizzato dalla Sun Microsystems, indipendente dalla piattaforma, modellato a partire dai linguaggi C e C++ di cui mantiene molte caratteristiche.


L’indipendenza dalla piattaforma è ottenuta grazie all'uso di uno strato software chiamato Java Virtual Machine (JVM) che traduce le istruzioni dei codici binari indipendenti dalla piattaforma, generati dal compilatore Java, in istruzioni eseguibili dalla macchina locale.

Java ha quindi unito i vantaggi di un linguaggio compilato a quelli di uno interpretato. Il sorgente Java viene infatti compilato in un codice intermedio tra il linguaggio macchina e il codice sorgente: il bytecode. Il file scritto in Bytecode sarà effettivamente il programma Java e ogni istruzione scritta in Bytecode viene interpretata dalla JVM a runtime.

Ad oggi esistono svariate implementazioni di JVM per le più diffuse piattaforme (Windows, Linux, Unix, Mac, OS/2, ecc.); inoltre una Java Virtual Machine è implementata anche nei vari Browser (come Firefox e Explorer) per poter eseguire particolari programmi Java presenti in rete, le cosiddette applet.

La natura di linguaggio a oggetti di Java consente di sviluppare applicazioni utilizzando oggetti concettuali piuttosto che procedure e funzioni.

Spiegazione tratta da:WikiBooks

Aritmetica e codifica ASCII

Posted in By Joker 0 commenti

Il codice binario
Il codice binario è su un sistema di numerazione composto da due soli numeri 0 e 1 (gli stati del bit).
Il computer basa il proprio funzionamento sul codice binario per un motivo molto semplice: gli elaboratori sono costituiti da un insieme di circuiti elettronici che conoscono solo due possibili stati: acceso (c'è corrente) o spento (non c'è corrente).
Mediante combinazioni di vari bit è possibile rappresentare, in una maniera comprensibile anche per il computer, l'insieme di lettere, numeri e simboli normalmente utilizzati.
Per soddisfare tutte le esigenze di rappresentazione si è scelto di utilizzare 8 bit per l'identificazione di un carattere in modo da disporre di 2^8 = 256 configurazioni.
Per esempio la lettera A può essere rappresentata come 00000001, la lettera B come 00000010, la lettera C come 00000100, e così via, fino a codificare tutti i possibili caratteri.
Un gruppo di 8 bit, cioè la rappresentazione binaria di un carattere, prende il nome di byte.

Il codice ASCII
Per fare in modo che computer diversi tra loro attribuiscano ad ogni combinazione lo stesso significato, è stato generalmente adottato il codice ASCII (American Standard Information Interchange).

Come si è visto ogni carattere occupa uno spazio di memoria pari ad un byte, cioè 8 bit.
L'unità di misura è quindi il byte (B), mentre i suoi multipli sono:

il Kilobyte (KB = 2^10 = 1024 byte)
il Megabyte (MB = 2^20 = 1024*1024 byte)
il Gigabyte (GB = 2^30 = 1024*1024*1024 byte)
il Terabyte (TB = 2^40 = 1024*1024*1024*1024 byte)

Il codice Esadecimale
Vengono spesso citati, nell’informatica, i numeri esadecimali.
Per comodità i programmatori usano rappresentare sia i numeri decimali (con 10 cifre) che i numeri binari (con due cifre) con numeri esadecimali.
Questi hanno sedici cifre: le dieci cifre da 0 a 9 e quindi le sei lettere da A a F.
Lo 0 esadecimale equivale al valore decimale 0, mentre la F esadecimale equivale al valore decimale 15.
L’avere inventato una rappresentazione dei numeri usando 16 cifre, rende i numeri più compatti.
Così il numero decimale 100, rappresentato dal binario 1100100, in esadecimale è 64.

RAM (Random Access Memory)

Posted in By Joker 0 commenti

La RAM è una memoria ad accesso casuale, cioè le informazioni del sistema vengono lette o scritte senza dover rispettare un determinato ordine sequenziale, ma è anche una memoria di tipo volatile, cioè viene spento il computer, la ram perde tutto il suo contenuto.
La RAM viene utilizzata direttamente dalla CPU per caricare le istruzioni da eseguire e i dati da elaborare quando non vi sono presenti nella cache interna del processore.
Ci sono due principali tipologie di RAM, la SRAM, la DRAM e la SDRAM.

SRAM (Static Random Access Memory)
Nelle SRAM, ovvero RAM statica, ogni cella è costituita da un latch realizzato da due porte logiche.
Consentono di mantenere le informazioni per un tempo infinito, sono molto veloci, consumano poco e quindi dissipano poco calore. La necessità di usare molti componenti, però, le rende molto costose e difficili da impacchettare.
Sono solitamente usate per le memorie cache, dove sono necessarie elevate velocità in abbinamento a ridotti consumi.

               (Definizione tratta da Wikipedia)

DRAM (Dynamic Random Access Memory)
La DRAM, ovvero RAM dinamica, è costituita, a livello concettuale, da un transistor che separa un condensatore, il quale mantiene l'informazione, dai fili di dati. A livello pratico non viene usato un vero condensatore ma si sfruttano le proprietà elettrico/capacitive dei semiconduttori. È così possibile usare un solo componente per ogni cella di memoria, con costi molto ridotti e la possibilità di aumentare notevolmente la densità di memoria.
A causa del non perfetto isolamento il condensatore si scarica, quindi dopo un breve lasso di tempo il suo contenuto diventa inaffidabile. Si rende necessario perciò ricaricarlo, l'operazione è detta di "refreshing", provvedendo ad eseguire un'operazione di lettura fittizia e riscrittura entro il tempo massimo in cui il contenuto può essere considerato ancora valido. Queste operazioni sono eseguite da un circuito interno alle memorie stesse. Oltre a comportare un certo dispendio di energia rendono più lenta la memoria in quanto, mentre si sta eseguendo il rinfresco, non è possibile accedervi.

               (Definizione tratta da Wikipedia)

DRAM (Dynamic Random Access Memory)
Le DRAM sono asincrone, ovvero l'accesso in scrittura ed in lettura è comandato direttamente dai segnali in ingresso al contrario delle memorie sincrone in cui il passaggio da uno stato all'altro è sincronizzato ad un segnale di clock.
Sono generalmente usate per la memoria principale del sistema perché consentono di ottenere un grande capienza e sono economiche.

               (Definizione tratta da Wikipedia)

SDRAM (Synchronous Dynamic Static Random Access Memory)
La SDRAM, ovvero DRAM sincrone, si differenzia dalla DRAM normale per il fatto che l'accesso è sincrono, ovvero governato dal clock.
È un tipo di RAM utilizzata per la memoria principale dei personal di tipo Pentium e successivi. Un segnale di clock temporizza e sincronizza le operazioni di scambio di dati, con il processore, raggiungendo una velocità maggiore.

               (Definizione tratta da Wikipedia)

Memoria centrale

Posted in By Joker 1 commenti

Una memoria può essere considerata come una sequenza finita di celle in cui ogni cella contiene una sequenza finita di bit. Normalmente i bit sono gestiti a gruppi di otto, detti byte. Pertanto lo spazio fisico della memoria può essere immaginato come una sequenza di locazioni, ognuna contenente un byte. Ogni locazione è individuata da un preciso indirizzo normalmente indicato da un numero intero positivo.
La memoria centrale è una memoria veloce direttamente utilizzabile dalla CPU per eseguire le operazioni. I costi di produzione della memoria centrale sono superiori rispetto a quelli della memoria secondaria ed infine i dispositivi impiegati per la memoria centrale non permettono di conservare i dati memorizzati a computer spento.
La memoria centrale si divide in memoria ad accesso casuale detta RAM (Random Access Memory) e memoria di sola lettura detta ROM (Read Only Memory).

CPU (Central Processing Unit)

Posted in By Joker 0 commenti

È il microprocessore di un computer, cioè l’unità di elaborazione centrale (il cosiddetto cervello del computer) è l’unità che controlla e sovrintende a tutte le funzioni della macchina.
La CPU è composta da un’unità che svolge operazioni aritmetiche (addizione, sottrazione, moltiplicazione e divisione) e operazioni logiche (AND, OR e XOR) chiamata ALU (Arithmetic/Logic Unit), da un’unità di controllo e temporizzazione chiamata CTU (Control/Timing Unit) e dai registri, piccole celle di memoria che contengono i dati da utilizzare nelle operazioni matematico/logiche o di controllo.

Aritmetica dei calcolatori e architettura

Posted in By Joker 0 commenti

Architettura di un computer
Il computer è un sistema, cioè un oggetto costituito da componenti che interagiscono, cooperando, al fine di ottenere un certo comportamento.

Studiare l’architettura di un sistema vuol dire:
1. individuare ciascun componente del sistema;
2. comprendere lo scopo di ciascun componente;
3. comprendere come i vari componenti interagiscono tra loro.
Il tutto ricordando però che ognuno di questi componenti è a sua volta un sistema e che quindi la decomposizione di un sistema in componenti può essere gerarchica.

Ecco un esempio:


Macchina di Von Neumann
Von Neumann è stato il progettista (dal 1945 al 1950) del primo calcolatore in cui i programmi potevano essere memorizzati anziché codificati mediante cavi e interruttori.

La macchina di Von Neumann si basa su cinque componenti fondamentali:
1. L’unità centrale di elaborazione detta CPU(Centrla Processing Unit);
2. Memoria centrale composta, a sua volta, dalla RAM e dalla ROM;
3. Cache;
4. Interfacce di ingresso(INPUT) e uscita(OUTPUT);
5. Bus.

Concetto di informatica

Posted in By Joker 0 commenti

Cosa è l’Informatica?
L’Informatica è la scienza della rappresentazione,
dell’organizzazione e del trattamento (automatico) dell’ informazione.

Elaborare un’informazione comporta la conoscenza del concetto stesso di informazione, conoscere i metodi e gli strumenti per la sua rappresentazione e la sua trasformazione ed infine la struttura e il funzionamento dello strumento (il computer) per l’elaborazione dell’informazione.

La soluzione automatica dei problemi comporta la conoscenza descrittiva del problema, la conoscenza di una soluzione corretta ed efficiente detto l’algoritmo ed infine le regole per automatizzare il processo risolutivo cioè il programma.

Il computer è lo strumento principale per l’elaborazione automatica dell’informazione.
Esso è composto da due diverse tipologie di componenti:
Hardware, parte fisica di un computer formata da componenti elettrici ed elettromeccanici;
Software, parte non fisica, virtuale di un computer, fatta di
programmi per l’uso dell’hardware e per la soluzione di problemi.

Definizione di Algoritmo

Posted in By Joker 0 commenti

L’algoritmo è un procedimento risolutivo di un problema composto da un insieme di regole che permettono di ottenere i risultati del problema partendo dai dati a disposizione.
Un insieme di regole è da considerarsi algoritmo quando: è un insieme ben ordinato di operazioni non ambigue e calcolabili che producono un risultato e termina in una quantità finita di tempo.

I fogli di stile (CSS)

Posted in By Joker 0 commenti

Definizione:
I Cascading Style Sheets detti CSS (Fogli di stile) compongono un linguaggio per la definizione del layout, cioè si occupano di tutta la parte estetica di un documento HTML, ad esempio il font, i colori, i margini, le immagini di sfondo,ecc...
Usare i fogli di stile (CSS) comporta quindi il controllo del layout di molti documenti contemporaneamente attraverso un unico foglio di stile e un controllo più preciso del layout.

Sintassi:
selettore { proprietà : valore }

Nota:
Il selettore è il riferimento al tag html a cui viene applicata la proprietà;

Ecco un esempio:
body {background-color: #808080;}

Come applicare i CSS ad un documento HTML:

Ci sono tre modi con cui puoi applicare i CSS ad un documento HTML.

  1. Metodo In-Line

  2. Metodo Interno

  3. Metodo Esterno

Hosting

Posted in By Joker 0 commenti

Definizione:
Hosting è un servizio, che colloca su uno spazio web (fornito da un server web), le pagine di un sito web rendendolo cosí accessibile dalla rete Internet.
Questo spazio web o server web è connesso ad internet in modo da poter accedere alle pagine del sito attraverso il browser, con identificazione dei contenuti tramite dominio ed indirizzo IP.

In internet troverete due tipologie di hosting:

  1. hosting gratuito;

  2. hosting a pagamento.



Il servizio di Hosting Gratuito ti permette di avere spazio e sito web a costo zero.
Il servizio offre:

  1. un sottodominio di terzo livello come ad esempio: nomedeltuosito.netsons.org o nomedeltuosito.altervista.org;

  2. Uno spazio web tra i 150MB e 500MB;

  3. Un account email;

  4. Un account FTP (File Transfer Protoco) cioè un protocollo per la trasmissione di dati tra host basato su TCP;

  5. Un Database MySQL

  6. Supporto PHP

  7. Backup Settimanale cioè salvataggio su server di backup dei tuoi dati


Questo servizio, come ho detto prima, è a costo zero ma all'interno del vostro sito verranno introdotti dei banner pubblicitari per coprire le spese di gestione come server, connettività, corrente, ecc...

Il servizio di Hosting a pagamento invece richiede un pagamento annuale offrendo, in base alla somma pagata:

  1. Un dominio di primo livello, ad esempio nomedeltuosito.it;

  2. Uno spazio web che può variare tra 1GB e 100GB(in base alla somma pagata);

  3. Più account email;

  4. Più account FTP (File Transfer Protoco) cioè un protocollo per la trasmissione di dati tra host basato su TCP;

  5. Più Database MySQL o illimitati Database MySQL;

  6. Supporto PHP, Perl e Ruby che sono linguaggi di programmazione web;

  7. Filtri antivirus e antispam;

  8. Vari ulteriori servizi come ad esempio i servizi di gestione delle immagini come Hotlink che blocca il furto delle tue immagini da altri siti;

  9. Backup Settimanale cioè salvataggio su server di backup dei tuoi dati.



Ecco un elenco di Hosting gratuiti:

  1. Netsons.org

  2. Hellospace.net("a mio parere il migliore")

  3. Altervista.org

  4. Ilbello.com

  5. Virtuale.org

  6. WTCsites.com



Ecco un elenco di Hosting a pagamento:

  1. Aruba.it

  2. Netsons.org

  3. NetWeb.it

  4. Serverplan.com

  5. Tophost.it

  6. WebHosting.it

  7. Joomla.it

  8. DominioWeb.org

  9. Ormag.net

I server Web

Posted in By Joker 0 commenti

Cosa sono i server web?
Il server web è un processo, in esecuzione su un computer, che fornisce su richiesta del browser una pagina web(spesso scritta in HTML).
Le informazioni inviate dal server web viaggiano in rete trasportate dal protocollo HTTP. L'insieme di server web dà vita al World Wide Web, uno dei servizi più utilizzati di Internet.

Ecco un elenco dei server web più diffusi:

  1. Apache HTTP Server

  2. Internet Information Services(IIS)

  3. HTTP File Server



Nota:Questa spiegazione è tratta, in parte, da Wikipedia.
Per avare una spiegazione più dettagliata consiglio di visitare questo link Server Web - Wikipedia

Guida HTML

Posted in By Joker 0 commenti

Ho pensato di suddividere la mia guida in categorie per ...

Teoria di base;

  1. Layout di una pagina HTML;

  2. Lo sfondo;

  3. Il testo;

  4. I fogli di stile(CSS);




Questo è il link a HTML.net
Design by: WPYAG
Blogger Template by Anshul | Funny Pictures.