bloghissimo

Aggregatore

Ti piace il blog? condividilo!

Calendario

February 2012
M T W T F S S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        
<< < > >>

Sondaggio chiuso..

Ragazzi lo tolgo solo ora che ho rincominciato a scrivere
naturalmente il sondaggio è chiuso e la pagina con i torrent
è raggiungibile al seguente indirizzo: http://lolunix.altervista.org/down.html
è sempre in costante aggiornamento se volete potete consigliarmi un film :)

Il forum!

Nuovo forum dedicato all'ionformatica
mi raccomando aiutate a farlo crescere.

informatica in generale..

Monday 16 january 2012 1 16 /01 /Gen /2012 16:17

Bene continuiamo il discorso degli operatori con gli ultimi 2 punti in scaletta che ci mancavano ovvero:

 

6)operatori per la manipolazione dei bit

7)operatori di assegnamento ed espressioni

 

6)

Il C prevede sei operatori per la manipolazione dei bit, applicabili solo a operandi interi, ovvero quelli ti tipo char,short,int e long con o senza segno.

 

Essi sono:

 

1) & AND logico bit per bit

2) | OR logico bit per bit

3) ^ OR logico esclusiovo bit per bit

4) << scorrimento verso sinistra

5) >> scorrimento verso destra

6) ~ completamento a uno (unitario)

 

vediamo degli esempi:

/* FONTE DA WIKIPEDIA */

Gli operatori OR e AND hanno lo stesso funzionamento degli operatori logici, la differenza è che questi operano sui bit.

È stato aggiunto l'operatore XOR (OR esclusivo), che restituisce vero se solo 1 operando è vero. Funziona così:a b c=a^b
0 0 0
0 1 1
1 0 1
1 1 0


Esempi

OR
int a=147;
int b=97;
int c=a|b; //OR
printf("c è uguale a %d", c);

Il risultato sarà: c è uguale a 243, perché:128 64 32 16 8 4 2 1
1 0 0 1 0 0 1 1
0 1 1 0 0 0 0 1

1 1 1 1 0 0 1 1


AND
int a=147;
int b=97;
int c=a&b; //AND
printf("c è uguale a %d", c);

Il risultato sarà: c è uguale a 1, perché:128 64 32 16 8 4 2 1
1 0 0 1 0 0 1 1
0 1 1 0 0 0 0 1

0 0 0 0 0 0 0 1


XOR
int a=147;
int b=97;
int c=a^b; //XOR
printf("c è uguale a %d", c);

Il risultato sarà: c è uguale a 242, perché:128 64 32 16 8 4 2 1
1 0 0 1 0 0 1 1
0 1 1 0 0 0 0 1

1 1 1 1 0 0 1 0

 

Scorrimenti:

Gli operatori di scorrimento a destra e a sinistra fanno scorrere i bit della variabile specificata come primo operando verso destra o verso sinistra per il numero di volte specificato dal secondo operando. I bit fuoriusciti non rientreranno dall'altra estremità, ma andranno persi.

Il complemento a uno, invece, ha un funzionamento molto semplice. Esso inverte i bit, ovvero trasforma gli 1 in 0 e gli 0 in 1.

Esempi

Scorrimento a sinistra
int a=42;
int c=a<<1; //Scorrimento a sinistra
printf("c è uguale a %d", c);

Il risultato sarà: c è uguale a 84, perché:128 64 32 16 8 4 2 1
0 0 1 0 1 0 1 0

0 1 0 1 0 1 0 0


Scorrimento a destra
int a=42;
int c=a>>1; //Scorrimento a destra
printf("c è uguale a %d", c);

Il risultato sarà: c è uguale a 21, perché:128 64 32 16 8 4 2 1
0 0 1 0 1 0 1 0

0 0 0 1 0 1 0 1


Complemento a uno
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
unsigned char i=10;
unsigned char j =~i;
printf("%u", j);
}

Il risultato sarà 245, perché:128 64 32 16 8 4 2 1
0 0 0 0 1 0 1 0

1 1 1 1 0 1 0 1

/* FINE PARTE PRESA DA WIKIPEDIA */

 

Ora vediamo una funzione che strae n bit di y a partire dalla posizione x

 

/*estraibits */

unsigned estraibits (unsigned y, int x,int n)

{

return (y >> (x+1-n)) &  ~( ~ 0 <<n);

}

Questa funzione restituisce n bit consecutivi di n a partire dalla posizione x allineando il risultato a destra. E' un modo per fare un esempio degli operatori.

7) le espressioni in generale

Detta in breve le espressioni servono per verificare delle condizioni più o meno complesse, oppure per eseguire calcoli matematici.

Facciamo un esempio di espressione:

in matematica la scriveremo cosi:

x = x * (y + 1)

in C si potrebbe scrivere anche cosi volendo:

x *= y+ 1

e cosi via, ma vediamo un utilizzo concreto delle espressioni con la funzione contabit che conta i bit pari a 1 di y:

int contabit (unsigned y)

{

int b;

for (b = 0; y != 0; x >>= 1)

if (x & 01)

b++;

return b;

}

 

un altro tipo di espressione che sicuramente avrete visto in molti listati è questa:

while((x = getchar()) != EOF)

questa espressione cattura l'input fino a quando la variabile x non è piena.

C'è da parlare anche  delle espressioni condizionali che pongono una condizione con le istruzioni if-else eccone un esempio:

if ( a > b)

z = a;

else

z = b;

 

come vedete il concetto è davvero semplice se a è maggiore di b prende la decisione che z è uguale ad a oppure z è uguale a b :).

 

Bene finisce qui la guida agli operatori del C :) quindi il 3 capitolo, durante la settimana pubblicherò la tabella degli operatori e le precedenza che loro hanno. (Prendetala come una appendice :))

Di lolunix - Pubblicato in : informatica in generale.. - Community : La musica che gira intorno
Scrivi un commento - Vedi 0 commenti
Monday 9 january 2012 1 09 /01 /Gen /2012 13:37

Dopo le vacazne natalizie che mi sono concesso torno a stilare la guida in C che avevo cominciato :), parlando degli operatori. A che servono inanzi tutto? servono per poter confrontare, per vedere se una variabile è diversa da un altra, cosi da prednere decisioni oppure per esguire calcoli, quindi sono molto importanti per ogni linguaggio di programmazione ed il C non è escluso, in questa guida base del C parleremo degli operatori base ovviamente dandone solo una infarinatura. Dato l'importanza dell'argomento ho deciso di spezzare l'articolo in 2 parti.. :)

 

Quanti tipi di operatori ci sono?:

 

1)operatori aritmetci

2)operatori relazionali

3)operatori logici

4)operatori di incremento

5)operatori di decremento

6)operatori per la manipolazione dei bit

7)operatori di assegnamento ed espressioni

 

 ora analizziamo gli operatori:

1)  OPERATORI ARITMETICI:

sono quelli che ci consentono di eseguire calcoli matematici ed essi sono +,-,*,/,%.

prendiamo ad esempio:

x % a

 

dà per risultato il resto della divisione, può dare zero se ad esempio a divide x esattamente.

 

Un esempio pratico di programmazione:

proviamo a vedere quando un anno è bisestile o meno con questo spezzono di codice:

 

if (( anno % 4 == 0 && anno % 100 != 0 ) || anno % 400 == 0)

{

printf("%d questo anno e' bisestile\n", anno);

} else {

printf("%d questo anno non e' bisestile\n", anno);

}

 

un anno è bisestile quando lo si può dividere per 4 ma non per 100, salvo gli anno divisibili per 400 che sono anche essi bisestili, ed ecco da cosa nasce questo codice..:)

 

alcune note:

1)l'operatore % non può essere applicato a valori float o double ma solo gli interi.

2)gli operatori binari + e - hanno lo stesso grado di precedenza, inferiore a quello di *,/,%.

3)gli operatori aritmetici si raggruppano da sinistra a destra.

 

2-3) OPERATORI RELAZIONALI E LOGICI:

Gli operatori di relazione sono >, >=, <, <=  questi operatori hanno tutti uguale precedenza ma sono appena più bassi degli operatori di uguaglianza o disuguaglianza come ==, !=.

 

Per capire questi operatori logici proviamo a vedere uno spezzone di coidce che immette valori in un vettore solo se in esso c'è spazio:

for(i=0; i<limite-1 && (c=getchar()) != EOF && x != '\n'; ++i){

s[i] = x;

}

rileggendo in alto abbiamo incontrato a nostra insaputa degli operatori logici che sono &&  || e !

 La valutazione di tali operatori si interrompe non appena l'espressione diventa vera o falsa.

Proviamo ora a vedere 2 esempi concreti:

convertire una stringa di cifre nel suo corrispondente numerico con la funzione convert:

/* funzione che converte s in un intero */

int convert(char s[])

{

int i,n;

 

n = 0;

for (i = 0, s[i]  >= '0' && s[i] <= '9'; i++){

n = 10 * n + (s[i] - '0');

 

return n;

}

con l'espressione s[i] - '0'  si ha il valore numerico del carattere contenuto in s[i] perché i valori di '0','1' e cosi via formano una successione crescente di interi consecutivi.

ora vediamo un altro esempio di conversione da un tipo char ad un tipo int ad esempio, prendiamo ad esempio la funzione trasforma che serva a portare un carattere in minuscola nel set di carattere ASCII. Se il carattere non è una lettera maiuscola lo lascia stare.

 

/* converte c in minuscola solo per tabelle ASCII */

 

int trasforma (int c)

{

if (c >= 'A' && c <= '>')

return c + 'a' - 'A';

else

return c;

}

(ALTRI ESEMPI VERRANNO PRESENTATI NELLA 2 PARTE)

 

4-5) OPERATORI DI INCREMENTO E DECREMENTO

Gli operatori di incremento e decremento sono rispettivamente ++ e --  esse si dividono in post o pre incremento un esempio di post incremento può essere

x = n++;

 

o di pre incremento invece può essere scritto cosi:

 

x = ++n;

 

rispettivamente il primo caso l'incremento avviene dopo l'impiego del valore nel secondo caso prima dell'impiego del valore, restituendo valori diversi infatti nel primo caso assumendo che il valore di n sia 4 il valore di x sarà 4 nel secondo ivece sarà 5.

 

Proviamo a vedere la funziona elimina che elimina appunto tutte le lettere c da una stringa ad esempio s:

 

void elimina (char s[], int c)

{

int i,j

 

for ( i = j = 0; s[i] != '\0'; i++)

if (s[i] != c)

s[j++] = s[i];

s[j] = '\0';

}

 

Bene i punti 5 e 6 ne parleremo nella 2 parte :) spero che questa sia stata di vostro gradimento! :)

Di lolunix - Pubblicato in : informatica in generale.. - Community : La musica che gira intorno
Scrivi un commento - Vedi 0 commenti
Monday 19 december 2011 1 19 /12 /Dic /2011 20:29

Bene bene, conoscete tutti twoo o badoo, no? i siti web di incontri, molto amati dai teen ager, una volta iscritti, avete delle funzionalità gratuite, poi però per funzionalità aggiutive si deve pagare, per esempio per avere crediti, o per attivare dei fantomatici superpoteri, bhé esiste un alternativa gratuita, completamente gratuita, si chiama jointhepuzzle, segnalatomi anche da miky in un commento, ve lo posto, prendetelo come un feedback del sito web:

 

"Eh, lo so, ormai è pieno di imbrogli... ti illudono dell'iscrizione gratuita e poi ti fanno pagare per ogni minima funzione del sito quindi è una presa in giro. Twoo in particolare è assurdo, nonostante io abbia fatto l'abbonamento attivando l'account diamond continua a mettermi delle limitazioni, posso contattare solo 10 persone al giorno e non ho tutte le funzioni disponibili (riflettori ecc.) che senso ha? Volevo solo fare qualche nuova conoscenza, mica andare in bancarotta per poter dire "ciao" a qualcuno Vabbè, comunque ne ho girati tanti di siti di amicizia, un tempo Badoo era carino ora ci trovi solo gente squallida... attualmente l'unico sito che conosco che è veramente gratis e serio è Join The Puzzle  http://www.jointhepuzzle.com non mi hanno fatto mai pagare nulla e oltre a tutto non ho trovato profili falsi, pervertiti e roba simile... forse è così perché ci sono dei moderatori... non so, comunque che io sappia non ce ne sono altre di chat dove poter parlare in pace, soprattutto tra quelle più pubblicizzate."

 

Aggiungerei oltre al fatto che badoo e twoo si fanno pagare per servizi aggiuntivi, Baddo sta diventando sempre più un sito "scam" nel senso, che ti invia della e-mail facendoti credere che qualcuno vorrebbe chattare con te e ti ha contattato, mentre in realtà non è cosi.

 

che dire diffidate da twoo e badoo e vi invito a provare http://www.jointhepuzzle.com la chat è gratuita, c'è la possibilità di mantenere un diario, delle proprie attività, di quello che si fa,dei propri pensieri ecc.. c'è la possibilità di inviare messaggi privati, in modo completamente gratuito, e molti altri servizi tutti gratis. :) eccovi uno screen del sito web:

http://lolunix.altervista.org/puzzle.png

Di lolunix - Pubblicato in : informatica in generale.. - Community : La musica che gira intorno
Scrivi un commento - Vedi 1 commenti
Sunday 18 december 2011 7 18 /12 /Dic /2011 18:37

La prima cosa da dire sul C è che è un linguaggio di programmazione compilato questo vuol dire che, una volta scritto il file sorgente occorre che questo venga passato al compilatore C, volendo si può decidere anche il nome del file di output, quindi usando gcc faremo cosi:

 

gcc -o nome_programma_uscita file1.c

 

volendo si possono aggiungere altri file in C contemporaneamente in questo modo:

 

gcc -o file_eseguibile file1.c file2.c file3.c....

 

quindi vi ricordo gli strumenti per programmare in C già citati nell'articolo precedente:

 

  • Un editor di testo
  • Un compilatore
  • Un linker

o un ide come geany :).

 

Un programma scritto in C ha una sua struttura particolare.

I file sorgente, ossia i file che
contengono il codice C per il compilatore, hanno estensione .c.

 I file header (conestensione .h), che sono i file che contengono i prototipi per le funzioni e le variabili globali usate nelprogramma.

 

Tali funzioni vengono poi implementate nei file sorgenti (quelli con estensione .c).
Per usare funzioni di qualsiasi tipo in un programma C, è necessario richiamare il file
header che contiene le funzioni che si vogliono usare tramite la direttiva #include.

 

Bene ma cosa fa un compilatore?

 

1)esegue le direttive al preprocessore ad esempio #include,#define ecc..

2) traduce il codice C contenuto nei files sorgenti in linguaggio macchina creando un file oggetto

3) l'operazione di linking che genera il file eseguibile.

 

Oltre ai linguaggi compilati sono presenti anche i linguaggi interpretati, vuol dire che devo ricorrere ad un programma interprete che mi traduce il sorgente in codice macchina.

 

Infine abbiamo il java che è una via di mezzo infatti col programma in java devo:

 

1) compilare il sorgente, con javac o con un ide

2) mi da un file .class che è vicino al linguaggio macchina

3)eseguo il mio programma con l'interprete

 

Quindi il java è davvero portatile :).

 

I due tipi di linguaggi hanno pregi e difetti, quelli compilati per esempio ci possono impiegare più tempo, per generare il programma vero e proprio, invece con quelli interpretati vedo il risultato o eventuali errori in tempo reale.

 

Bene passiamo al primo programma prima di fare ciò sappiate che è buona educazione commentare il proprio codice lo si può fare in questo modo:

/* esempio di commento C */

 

bene ora scriviamo questo codice:

 

#include <stdio.h>
int main() {

printf("ciao mondo! hello world!"\n");
return 0;
}

con un editor a caso..va bene anche gedit..:)

 

in seguito dobbiamo compilarlo con geany la procedura è semplice con i pulsanti in alto..:) come vedete nella foto:

 http://lolunix.altervista.org/gblog.png

oppure da terminale prima lanciando il comando per compilare e poi il comando per eseguire :) in questo modo:

 1)gcc -o ciaomondo.o hello.c

2) ./ciaomondo.o

ed ecco anche in questo caso lo screen:

http://lolunix.altervista.org/ciaoterminale.png

 tutti e due i metodi sono uguali il risulato è lo stesso come vedete :).

La prima vera e propria linea di codice è #include <stdio.h>: come ho accennato nel paragraf
precedente, questa è una direttiva al preprocessore, ovvero un'istruzione che dice al calcolatore che nel
programma che segue si useranno le funzioni definite nel file stdio.h (i file header dovreste trovarli
nella cartella include del vostro compilatore). Il file stdio.h contiene le funzioni principali per lo
standard Input/Output, ossia le funzioni che permettono, ad esempio, di scrivere messaggi in modalità
testo, di leggere valori dalla tastiera, di manipolare files e buffer... se non includessimo questa
istruzione non potremmo usare la funzione printf() più avanti. Il file stdio.h è il file che useremo
maggiormente nel corso di questo tutorial.
A questo punto inizia il programma vero e proprio: viene eseguito tutto ciò che si trova all'interno della
funzione main() (la funzione principale di ogni programma), che inizia con { e finisce con }. Nel
paragrafo dedicato alle funzioni vedremo meglio come funziona il main (scusate per il gioco di parole).
Intanto anticipo che quell'int situato prima del main() dice al chiamante (in questo caso il sistema
operativo stesso) che la funzione main() ritorna un numero intero (e questo spiega la riga return 0).
A questo punto chiamiamo la funzione printf(), definita nel file stdio.h. Questa funzione stampa un
messaggio sullo standard output (la console sul monitor). Ovviamente, il messaggio è racchiuso fra
parentesi tonde e i doppi apici "". La sequenza \n è una escape sequence, che dice al compilatore di
andare a capo dopo aver scritto ciò che è contenuto nella printf() (\n sta per "new-line"). Ecco le
principali sequenze di escape usate nel C:

\n Va a capo (new line)
\t Va avanti di una tabulazione (tasto TAB)
\b Va indietro di un carattere (tasto BACKSPACE)
\a Fa emettere un BEEP allo speaker interno (ALARM)
\" Stampa i doppi apici ""
\' Stampa un apice singolo


Nota: tutte le istruzioni del C finiscono con un punto e virgola ;
L'istruzione return 0, come ho già detto prima, dice al programma di ritornare il valore 0 (intero) al
sistema operativo e uscire.

Bene con questo si conclude la 2 lezione :)

 

riferimenti: guida di blacklight, scuola

Di lolunix - Pubblicato in : informatica in generale.. - Community : La musica che gira intorno
Scrivi un commento - Vedi 0 commenti
Sunday 11 december 2011 7 11 /12 /Dic /2011 10:40

Il linguaggio C creato nel laboratori della  AT&T Bell quando il software cominciava ad evolversi e c'era una forte richiesta da Dennis Ritchie che colgo l'occasione di salutare dato che è venuto a mancare più o meno un mese fa, ma nessuno ne ha mai parlato della sua morte come si dovrebbe, no perché lui è stato l'ideatore del C che per le prima volte era strettamente legato ai sistemi operativi UNIX, tant'è che dopo la creazione del C, anche UNIX fu scritto con questo linguaggio, di conseguenza anche molti kernel (vedere ad esempio il kernel Linux scritto in C).

 

Il C non è stato un linguaggio creato da università,istituti o altro per programmatori, ma ha la particolarità di essere stato creato da dei programmatori, quindi questo lo rende il linguaggio dei programmatori, è un linguaggio che si presta a moltissimi usi, infatti ha molte librerie, Il C infatti, a differenza degli altri linguaggi di
programmazione, ha davvero pochissime keyword (parole riservate), ma una vastissima gamma di
funzioni che spaziano dalle funzioni per l'I/O standard alle funzioni matematiche, dalla manipolazione
dei file alla gestione della memoria, dagli strumenti per la creazione di interfacce grafiche (GUI) alla
manipolazione delle regex: queste funzioni sono ormai parte integrante del linguaggio. Inoltre,
chiunque può aggiungere nuove funzioni a quelle che corredano il C, e questo è un altro elemento che
rende il C tanto flessibile e potente.

 

Inoltre è uno dei pochi linguaggi ad alto livello che mette a disposizione delle funzioni per la gestione
della memoria e dei processi, o anche per la gestione di porte e periferiche di I/O (operazioni
notoriamente di basso livello).

 

La naturale evoluzione del C è stato il C++, creato nel 1982, esso è un linguaggio di programmazione ad oggetti, ma che non tratteremo, dato che non stimo molto come linguaggio, ed in fondo con il C si può fare anche della programmazione ad oggetti usando dei piccoli stratagemmi con le strutture.

 

Per conludere questa introduzione vediamo cosa serve per programmare in C in ordine serve questo:

  1. Un editor di testo
  2. Un compilatore
  3. Un linker

Oppure un ambiente integrato, il più famoso in ambienti UNIX è gcc, se volete qualcosa di grafico vi consiglio geany :).

 

La prossima volta vedremo la stesura di un piccolo programma ed alcuni concetti base :).

Di lolunix - Pubblicato in : informatica in generale..
Scrivi un commento - Vedi 0 commenti

codice sorgente

Aggregatore Online

Testo Libero

Presentazione

Crea un Blog

Crea un blog gratis su over-blog.com - Contatti - C.G.U. - Remunerazione in diritti d'autore - Segnala abusi - Articoli più commentati