[Powered by Google Translate] Le funzioni sono le sezioni di codice utilizzati all'interno di un più ampio programma per eseguire un compito particolare. Essi sono noti anche come procedure, subroutine, e sottoprogrammi, dal momento che in realtà sono solo mini programmi nell'ambito di programmi. Anche se si potrebbe non aver notato, che sicuramente hanno usato le funzioni già se avete già programmato in C. Quando si scrive roba sullo schermo, utilizzando printf, si sta usando una funzione chiamata printf. Allo stesso modo, GetInt e GetString sono funzioni che CS50 fornisce per voi. Come programmatori, usiamo funzioni per una serie di ragioni. Avendo funzioni per eseguire le operazioni più comuni come scrivere sullo schermo e chiedere conferma all'utente per l'ingresso ci consente di risparmiare tempo durante la programmazione. Non è necessario scrivere il codice per fare quelle stesse cose dato che sono già fatto per noi. Non è nemmeno necessario per noi per capire esattamente come queste funzioni lavorano internamente. Invece, dobbiamo solo sapere come utilizzare o li chiamano nei nostri programmi. E 'anche utile scrivere funzioni in programmi più grandi anche se non avete intenzione di avere altri li usano, solo per dividere il compito più grande a mano. In questo modo, dare una struttura al codice proprio come ci si strutturare un saggio, e con progetti molto grandi, è consentire alle persone più per lavorare su parti diverse contemporaneamente dal momento che è chiaro dove il lavoro di una persona finisce e comincia quella di un altro. Funzioni operano tipicamente su 1 o più ingressi, noti come argomenti o parametri, trasformare gli input in un valore di uscita che viene poi restituito. Tuttavia, è anche possibile avere funzioni che non utilizzano alcun argomento di input e non restituiscono un output. Ok, basta con la roba soffice. Diamo uno sguardo ad alcune funzioni reali in C. Qui abbiamo una funzione chiamata piazza che, ci crediate o no, calcola il quadrato dell'ingresso. Facciamo sezionare la sintassi di esso. La prima parola che vedete nella funzione, int, specifica il tipo di ritorno della funzione, cioè, il tipo C di uscita della funzione. Questa funzione produrrà un valore di tipo int. La parola successiva che vedete è il nome della funzione, la piazza in questo caso. Naming funzioni adeguatamente è particolarmente importante dal momento che è probabilmente la documentazione più visibile di ciò che la funzione fa. Potrebbe essere bello il nome di questa funzione shazam o Booyah, ma che non ci dice nulla di quello che fa la funzione. In seguito il nome della funzione sono gli ingressi per la funzione, gli argomenti. Essi sono elencati all'interno di un insieme di parentesi sia con il loro tipo e un nome da usare per loro all'interno del corpo della funzione. Piazza richiede solo 1 argomento, l'int alla piazza, che ho deciso di dare il nome di x. Questo termina la dichiarazione di funzione o prototipo. Le parentesi graffe che circondano il resto della funzione indicano l'inizio e la fine del corpo della funzione, la definizione della funzione stessa. Square è una funzione abbastanza semplice. E 'ottenuto solo 1 linea, dal momento che tutto quello che dobbiamo fare è moltiplicare x per sé. Il ritorno parola specifica il valore di uscita ed innesca la fine della funzione. Per utilizzare la funzione di piazza, abbiamo bisogno di alimentare gli ingressi appropriati e quindi catturare l'output. Qui, si vede un paio di modi per farlo. Siamo in grado di passare in un int crudo, come il 6, o siamo in grado di passare in una variabile come un. Si noti che ogni volta che chiamiamo quadrato, catturiamo l'output in una variabile e quindi stamparlo. Tuttavia, non è necessario memorizzare il valore restituito in una variabile e quindi stampare. Potremmo inviare direttamente a printf come facciamo quando ci piazza 10, ma questo non significa che non si ha accesso al valore di ritorno di quadro 10 altrove nel codice. Vediamo un altro esempio semplice. Questa volta, ci sommare 2 galleggianti insieme in modo che possiamo vedere ciò che una funzione è simile quando è ottenuto 2 ingressi invece di solo 1. Come si può vedere, non è molto diverso. Tutto quello che facciamo è aggiungere nell'argomento 2 °, un galleggiante di nome b, per l'elenco di argomenti utilizzando una virgola per separare dal primo argomento, un galleggiare. Così, la nostra piazza e le funzioni di somma sono abbastanza facili da capire perché sono equivalenti alle funzioni che hai visto prima in classe di matematica. Ora, diamo un'occhiata a una funzione che è leggermente diverso. Invece di restituire un valore, si modifica uno stato. Questo è noto come avente un effetto collaterale. In questo programma, la funzione printf_fudd_style ha un tipo di ritorno che non abbiamo visto prima, vuoto. Void è usato per dire che una funzione non restituisce nulla. Non ci sono variabili di tipo void, quindi se si tenta di restituire qualcosa da una funzione come printf_fudd_style, il compilatore urlare contro di voi. All'interno printf_fudd_style, vediamo che, mentre la funzione esegue ancora un compito, vale a dire, il passaggio tutto R per Ws, il punto della funzione è quella di modificare la stringa e quindi stamparlo sullo schermo, modificare lo stato del programma invece di restituire un risultato. Con questa funzione è molto simile utilizzando il nostro quadrato e funzioni di somma, tranne che non memorizzare il risultato in una variabile o di farlo passare a un'altra funzione poiché non vi è alcun risultato di parlare. Così, quando compilare ed eseguire il nostro programma di Elmer Fudd, si vede che "Tu rascally coniglio!" si trasforma il diritto di "Tu wascally Wabbit!" Infine, c'è la funzione 1 più la pena di discutere dal momento che hai iniziato ad usare in ogni programma C che abbia mai scritto, principale. Principale è una funzione molto simile a qualsiasi altra. Ha un tipo di ritorno, un nome, un elenco di argomenti, e un corpo. Il tipo di ritorno di principale è sempre un int, e questo int viene utilizzato per comunicare lo stato del programma quando finisce. Ha fatto funzionare correttamente, o è finita in anticipo a causa di un errore? Tornando a zero indica un grande successo, e restituire qualsiasi valore diverso da zero indica un errore. A seconda del tipo di programma che si sta scrivendo, ritornando diversi codici di errori diversi può essere utile per le persone che utilizzano il programma di seguito. Argomenti di rete sono un po 'più complicato. La lista degli argomenti può essere vuoto, che indichiamo scrivendo vuoto tra le parentesi, o la lista può avere 2 argomenti: un int e un array di char * s. Questi vengono utilizzati quando il programma intende utilizzare argomenti passati sulla riga di comando quando il programma viene richiamato. L'argomento viene in genere chiamato int argc, ed è uguale alla lunghezza della matrice char *, noto come argv. ARGV contiene gli argomenti della riga di comando passati nel programma. In un altro breve, parleremo di come utilizzare queste variabili in modo più dettagliato. Per ora, si può sentire libero di dichiarare principale in entrambi i casi. Io di solito scegliere di scrivere fuori la via più breve, senza alcun argomento, quando possibile. Ora che sapete come scrivere funzioni, sei sulla buona strada per lo sviluppo di grandi e programmi più complessi. Il mio nome è Nate Hardison. Questo è CS50.