benvenuti nel sito di cyber to kill tutto cio e di esclusivo materiale informatico....

CYBER HACKING TO RISE IL SYTO DELL'HACKING BUONA NAVIGAZZIONE DALLO STAFF...

MENU

HACKING

LINGUAGGI

ASSEMBLY

VIRUS BATCH

MS-DOS

NETBIOS

TELNET

DOWLOAD

FORUM

SOLUZIONI

SICUREZZA

COMPILATORI

LINUX

PASCAL

TC/IP

CRACKER

NETSTAT -NA

ANTIVIRUS

I.A

STORIA
GUIDA A UN LINGUAGGIO FONDAMENTALE


C

iniziamo questa guida all c un programma davvero immportante per un programmatore se non lo sapete immparatelo subito ragazzi è davveo immportante e molto bello,basta soltanto un po di immpegno non è immpossibile come avvolte si pensa che il linguaggio c o c++ siano difficili da immparare,non è proprio cosi,oviamente ci vuole un po di immpegno ma sono convinto che quando una cosa piace non è poi cosi difficile.
STRUTTURAZIONE DI UN PROGRAMMA IN C
in informatica, un linguaggio di programmazione come il c si dicono linguaggi formali, cioe' dotato di una sintassi ben definita per scrivere programmi per calcolatori, in una forma più vicina al linguaggio umano scritto: l'alternativa sarebbe scrivere direttamente le istruzioni nel codice macchina del particolare processore. un compito improponibile per programmi meno che semplicissimi.il C e un linguaggio ad alto livello,con approcci con il linguaggio macchina, o Assemlbly.





TABELLA DELLE FUNZIONI




auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed static struct switch
typedef union unsignedvoid volatile
while


Operatori aritmetici
Operatore Funzione
= assegnamento
+ somma
- sottrazione
* moltiplicazione
/ divisione
% modulo


Tipi di dati scalari
Nome Parola chiave Descrizione
char si tipo carattere
int si tipo intero
float si tipo virgola mobile
double si tipo virgola mobile





guida al linguaggio
c
la guida la inizziamo subito cosi tutto il necessario:
a)variabili
b)cicli
c)puntatori
d)printf
e)scanf
f)else (istruzzioni, espressioni).
f1)if
h)editor di testo (compilatori)
i)#define1)preprocessore (macro)
2)#include "stdio.h" (inclusione)
4)mani()
5)int

questa e una parte dell'occorente necessarrio ora iniziamo con un semplice programma in c (hello word)ciao mondo;

#include "stdio.h"
int main()
{
 printf("hello word.\d");
return 0;
}

analizziamo il programma.#include stdio.h,e la parte inizziale del programma c inclusione da il comando a compilatore di eseguire il programma. main().ecco questo e il trampolino di lancio dell'intero programma il nocciolo principale la parte piu essenziale le parentesi tonde ()e a saguire la perentesi graffa e ci parte il corpo del l'iterro programma apertura e chiusura alla fine.printf,invece l'inizio di una stringa (hello word)messaggio,a riguardo il preogramma.{}le parentesi graffe come in precednza sono l'inizioe il termine del programma.return 0; il programma e terminato con sucesso.
e fino qui ci siamo.
ora passiamo alle variabili.facciamo conto che dobbiamo calcolare l0area di un rettangolo,che cosa faccia? quale è il proccedimento?.
noi di certo pensiamo BASE X ALTEZZA. nel C allo0ra facciamo

/* calcolo sra del rettangolo */
#include stdio.h

main()
{

int base;
int altezza;
aint area;

base = 3;
altezza = 7;
area = base *altezza;

printf("%d\n", area);
}

dopo main() e le parentesi graffe aperte sono presenti le dichiarazioni delle variabili intere necessarie.la parola chiave int specifica l'identificazione che la segue.VARIABILE NUMERICA,DI TIPO INTERO.allora base * altezza e area sono VARIABILI DI QUESO TIPO.
il nome di una variabile la identifica, il suo tipone definisce l'insieme e la dimensione.delle operazzioni che si possso scvolgere su di essa,alcune versioni del C riservano agli int, uno spazio di 4 byte, il che permette di la vora su interi da -21474883648 a +2147483647.altre versioni riservano 2 byte. BASE/ALTEZZA/AREA =21 visualizza il 21 tra i doppi apici, il simbolo percentuale e % specificha che il carattere che lo segue il formato, di stampo sulla della variabile area:d(decimale).invece \n provoca, come abbiamo gia visto,un salto di linea nuovo dopo la visualizzazzione....
ora proseguiremmo nel aprofondire un p varie tecniche di programmazione, questo è solamente u piccolo assaggio al C.

Come abbiamo precedentemente accennato un programma C inizia sempre la sua esecuzione (run) dalla funzione main(), e da questa possono essere chiamate altre funzioni, che a loro volta ne possono chiamare altre ancora, e così via. Questa struttura viene definita nesting. Nei moderni compilatori il limite di nesting, ovvero quante chiamate nidificate si possono effettuate, è piuttosto elevato e dipende spesso anche dall’architettura del sistema operativo. È comunque buona norma non eccedere nel nesting al fine di non rendere troppo difficoltoso il controllo concettuale del programma. Se è vero che l’esecuzione di un programma inizia da main(), il lavoro del compilatore inizia generalmente con alcune direttive ed istruzioni che precedono la funzione main(); di tali direttive e di tali eventuali istruzioni parleremo approfonditamente in seguito, trattando del preprocessore, delle variabili e dei prototipi delle funzioni nei rispettivi capitoli. Per il momento vediamo, senza scendere in queste problematiche, un programma di esempio con una semplice struttura di nesting a tre livelli:

Livello 1 - Inizio da main

Livello 2 - fun01()

Livello 3 - fun02() Fine nesting

Livello 1 - Fine programma

Ora descriveremo le singole istruzioni riferendoci ai numeri riportati nei commenti al codice. È questo uno stile di commenti abbastanza elegante che consente di descrivere diffusamente il codice sorgente senza disperdere la compattezza delle istruzioni:

001 Direttiva al preprocessore che determina l’inclusione del file stdio.h in questo punto del codice. Questo file contiene le dichiarazioni delle funzioni ANSI della libreria standard di input/output, necessarie al compilatore per predisporre i riferimenti alle funzioni contenute in questa libreria e messe a disposizione dal compilatore stesso.
002 Dichiarazione delle funzioni fun01() e fun02() il cui codice ancora non è conosciuto dal compilatore. Le dichiarazioni in questa posizione nel programma consentono di inserire il codice delle funzioni a valle della funzione main(). Una tecnica alternativa consiste nel non dichiarare le funzioni inserendone direttamente il codice ponendo la funzione main() al termine del programma. Il metodo di non dichiarazione delle funzioni è inapplicabile nei casi in cui le chiamate alle funzioni non seguano un percorso di nesting lineare, ed è, a nostro parere, generalmente sconsigliabile anche se sintatticamente corretto.
003 Inizio della funzione main(). È in questo punto che inizia l’esecuzione del programma.
004 Chiamata alla funzione di libreria standard, che effettua la stampa sul dispositivo di standard output della stringa di caratteri contenuta tra i doppi apici.
005 Chiamata alla funzione di secondo livello fun01(). A questo punto l’esecuzione salta al passo 008.
008 Inizio della funzione fun01().
009 Display del messaggio con modalità simile al passo 004.
010 Chiamata alla funzione di terzo livello fun02(). A questo punto l’esecuzione salta al passo 012.
012 Inizio della funzione fun02().
013 Display del messaggio con modalità simile al passo 004.
014 Termine della funzione fun02() e salto al passo 011.
011 Termine della funzione fun01() e salto al passo 006.
006 Display del messaggio con modalità simile al passo 004.
007 Termine della funzione main() ed uscita dal programma. Con questo semplice esempio abbiamo visto come sia possibile suddividere efficacemente le azioni in diversi moduli e questo determina l’individuazione di un paradigma fondamentale per la programmazione funzionale e strutturata.
Possiamo infatti affermare che, in linea di principio, funzioni diverse devono fare cose diverse e cose diverse devono essere fatte da funzioni diverse. Consentendoci ora una breve digressione su considerazioni di carattere stilistico e di estetica del codice potremmo affermare che i compiti della funzione main() debbano, a rigore, essere solo quelli di: 1. inizializzare il programma, ricevendo eventuali argomenti dal sistema operativo; 2. attivare una funzione pilota per l’intero programma; 3. terminare il programma trasmettendo un eventuale messaggio sullo stato di terminazione al sistema operativo. In questo modo, consentiamo alla funzione main() di svolgere unicamente il compito che le è proprio.



fonti di istruzzioni

questa e una terza parte della guida al C che vi sto scrivendo.linteresse per me e che voi potete capir bene quello che vi scrivo eche potete, non soltanto leggere ma anche provare.
Controlli di flusso Iniziamo la trattazione delle istruzioni in C con quelle istruzioni che effettuano in modo elementare il controllo del flusso di un programma. Tali istruzioni sono l'istruzione null, in pratica l'assenza di istruzione e le istruzioni goto e label ovvero il salto incondizionato.
L'istruzione null Questa istruzione è costituita sintatticamente dal solo punto e virgola ; e viene usata in quei casi dove la grammatica del linguaggio richiede una istruzione, ma la logica del programma non richiede alcuna azione. Tipicamente viene usata nelle operazioni di ciclo (loop) come per esempio la realizzazione di sezioni di programma con un numero indefinito di cicli. Vedremo in particolare questi casi trattando delle istruzioni di ciclo.
Le istruzioni goto e label L'istruzione goto viene usata per trasferire l'esecuzione del programma incondizionatamente ad un punto identificato da una label. Queste istruzioni possono essere usate per creare cicli infiniti o in associazione con espressioni condizionali, ma in genere non sono considerate soluzioni eleganti, è consigliabile ottenere gli stessi effetti con le istruzioni for o while.
A titolo d'esempio della sintassi vediamo un semplice programma che determina una iterazione indefinita richiedendo ad ogni ciclo l'input di un carattere e restituendo il numero dell'iterazione, l'input del carattere Z determina la fine del programma.001 Label 'inizio'.
002 Funzione della libreria di standard input che legge una stringa e la memorizza nell'array 'b'.
003 Assegnazione alla variabile 'ch' del primo elemento dell'array 'b', incremento del contatore di ciclo 'i' ed outuput dei valori delle variabili.
004 Istruzione condizionale if, else che, nel caso di ch = Z, esegue l'istruzione goto fine altrimenti esegue goto inizio, vedremo più dettagliatamente le istruzioni condizionali.
005 Label fine.



Le istruzioni condizionali consentono di eseguire istruzioni semplici o composte, blocchi di istruzioni, se il test eseguito è vero (valore nonzero). Vi sono due istruzioni condizionali: if, else, switch. Istruzione if else La forma generale di questa istruzione è la seguente:
if(espressione condizionale)
{
prima istruzione o blocco istruzioni
}
else
{
seconda istruzione o blocco istruzioni
}
Se l'espressione condizionale viene risolta in un valore nonzero (true) verrà eseguita la prima istruzione o blocco istruzioni, se l'espressione condizionale viene risolta in un valore zero (false) verrà eseguita la seconda istruzione o blocco istruzioni. È possibile omettere la clausola else dell'istruzione quando non è richiesta alcuna azione nella condizione "false".
Le parentesi graffe possono essere omesse se il blocco istruzioni che racchiudono è costituito da una singola istruzione.
Vediamo ora un esempio con le varie forme di questa istruzione condizionale. L'esempio richiede un numero intero in input e segnala se è pari o dispari, nel caso sia pari, segnala inoltre se è inferiore a 30, nel caso sia dispari, segnala se è superiore a 10.001 Abbiamo utilizzato una funzione di libreria, la 'atoi' che converte il valore ASCII del carattere in input nel suo corrispondente numerico, in questo caso abbiamo inoltre nidificato le due funzioni, viene per prima eseguita la 'gets' ed il suo valore di ritorno passato alla 'atoi', quindi il valore ritornato da quest'ultima viene assegnato alla variabile 'n'.
002 Questa istruzione if valuta n modulo 2, quindi se il risultato dell'espressione e` nonzero (numero dispari), la condizione e` vera e quindi viene eseguito il rispettivo blocco istruzioni.
003 Questa condizione if contenuta nel blocco istruzioni valuta se 'n' sia superiore a 10, notiamo l'assenza delle parentesi graffe: in questo caso viene eseguita solo la prima istruzione che segue che unicamente per motivo di leggibilità del codice è stata inserita sulla stessa riga.
004 Istruzione else relativa alla istruzione 'if' 002, viene eseguita solo se n modulo 2 da come risultato zero (false).
005 Questa istruzione controlla che 'n' sia nonzero per l'esecuzione del blocco istruzioni.
006 Simile alla 003 ma con condizione di 'n' superiore a 30.
007 Istruzione else relativa alla 005 che viene eseguita solo nel caso di 'n' uguale a zero (false).
4.2.2 Istruzione switch L'altra istruzione condizionale è istruzione switch che esegue una o più serie di casi basandosi sulla valutazione di una espressione. Il valore risolto di questa espressione deve essere di tipo int, normalmente viene effettuata in modo automatico la conversione di tipo.
La forma generale di questa istruzione è:
switch(espressione)
{ case costante : istruzioni...
.............................
default: istruzioni...
}
Le parole chiave case e default sono label che vengono raggiunte in base alla valutazione dell'espressione.
Le case possono essere in numero arbitrario mentre la default deve essere unica. Il flusso inizia alla case il cui valore della costante è uguale al valore risolto dell'espressione di switch e prosegue fino ad incontrare una esplicita istruzione di interruzione determinata dalla parola chiave break. Quando nessun valore case è uguale al valore dell'espressione viene raggiunta la label default.
Vediamo un programma di esempio per l'istruzione switch:
Analizzando la sintassi dell'istruzione switch vediamo che l'espressione è costituita, in questo caso dalla variabile intera giorno ricevuta in input. Il blocco dello switch è costituito da 7 case con valori da 1 a 7 e un default. Quando la variabile giorno assume valori da 1 a 7 vengono raggiunte le rispettive label case, nel solo caso del valore 6, avendo omesso l'istruzione break in case 6 il flusso prosegue anche per case 7.

Nel caso il valore di giorno sia inferiore a 1 o superiore a 7 viene raggiunta la default. L'istruzione giorno++ (post-incremento) nella printf() di case 6 serve ad avere in output il valore 7 nella case successiva.



il preprocessore
siamo al termine di quetsa guida alk C voglio conclure la guida con quretsa parte del preprocessore e le macro funzioni come sono e come sono in loro sitemi di programmazione.
Abbiamo visto, a proposito della struttura fondamentale del programma C e negli esempi precedenti, alcune istruzioni che generalmente precedono la funzione main( ) e sono chiamate direttive al preprocessore. Vediamone ora piu` in dettaglio le caratteristiche
Le direttive al preprocessore sono linee del codice sorgente che consentono al compilatore di alterare il suo normale funzionamento. Tali direttive pur non essendo formalmente definite nel linguaggio C, e variando, seppur in modo non sostanziale, nei diversi compilatori, sono di uso pressoché generale.
Tratteremo di seguito solo quelle comuni alla maggior parte dei compilatori tralasciando quelle presenti solo in alcuni specifici prodotti. In molte implementazioni del C il preprocessore è un programma separato dal compilatore, mentre in altre è solamente una prima fase del processo di compilazione.

Le tre categorie di direttive di cui tratteremo sono:

1)direttive di inclusione.
2)definizioni e macroistruzioni
3)direttive condizionali

direttive di inclusioni.
Le direttive di inclusione sono certamente le più comunemente usate, infatti vengono utilizzate per includere i file con le definizioni delle funzioni di libreria, le definizioni delle macroistruzioni e dei simboli necessari per la corretta compilazione dei programmi.
La forma sintattica di questa direttiva è quella che abbiamo più volte incontrato nei precedenti esempi:
#include (file)
dove per file si intende un qualsiasi file presente nelle directory di include definite con le opzioni del compilatore. Alcuni dei file piu comunemente usati sono:
stdio.h
stdlib.h
string.h
math.h
time.h
Questi file contengono le definizioni dei tipi di dati ed i prototipi delle funzioni utilizzati rispettivamente per le operazione di I/O standard, funzioni di conversione e gestione dinamica della memoria, funzioni di trattamento delle stringhe, funzioni matematiche, funzioni lettura dell'orologio di sistema.
Una forma alternativa è la seguente:
#include "miofile"
In questo caso il file deve trovarsi nella directory corrente. Questa forma è usata per l'inclusione di porzioni di codice inerenti al programma. È possibile nidificare le direttive #include, infatti un file incluso può a sua volta contenere tale direttiva. Il livello di nidificazione è tuttavia dipendente dallo specifico preprocessore e dall'architettura del sistema.



Ricarica Gratis Cellulare Suonerie