Ciao e Benvenuto.
Stiamo iniziando una nuova sezione.
La nostra sezione si basa sulle funzioni.
Quindi parleremo di alcuni delle basi delle funzioni prima.
Una funzione è un elemento autonomo unità di codice del
programma progettato per svolgere un compito particolare, questa è una definizione di alto livello.
La funzione sarà fondamentalmente qualcosa che puoi invocare che ti aiuta
a ridurre la duplicazione del codice.
Ma quello che fa è lo è
autonomo all'interno del codice stesso e ha solo alcune attività che sta per realizzare.
Le regole di sintassi stanno per definire la struttura di
una funzione e come può essere utilizzata.
Quindi, a seconda di quale programmazione lingua utilizzata, le funzioni possono
essere definite in modo diverso.
Per c, parleremo sulle regole specifiche per c.
Supporta la maggior parte dei linguaggi di programmazione questo concetto di funzione, e ti
dirò i vantaggi e perché sono supportati.
Una funzione in c è la stessa di subroutine o procedure in
altri linguaggi di programmazione.
Quindi spesso li senti termini subroutine e procedure, la stessa cosa
di una funzione.
Unità autonoma che esegue un po 'di codice, che puoi chiamare.
Alcune funzioni causano un file azione da svolgere.
Quindi abbiamo familiarità con una coppia funziona fino a questo punto.
Abbiamo studiato il printf funzione che mostra l'output
sullo schermo che accetta un file azione, fa qualcosa per te.
E poi abbiamo anche guardato al risultato alla funzione scanf che
riceve l'input dalla tastiera.
Ancora una volta, esegue un'altra azione.
Altre funzioni però può effettivamente trovare solo un valore
da utilizzare per un programma.
Quindi, ad esempio, quando studiamo le corde e array di caratteri, esamineremo
le funzioni per string manipolazione e cambiamento delle cose.
C'è una funzione in particolare chiamato stir length e questo dirà a un
programmatore come è lunga una certa stringa.
Non esegue un'azione ti restituisce solo le informazioni.
Quindi le funzioni verranno eseguite attività a seconda dell'attività che cosa
devi svolgere nel tuo file programma,
o provocherà un'azione o modificherà un file programmare un valore o restituire un valore o fornire alcune
informazioni sullo stato.
Vantaggi delle funzioni.
Useremo le funzioni perché hanno un sacco di vantaggi.
Le funzioni consentono di strategia divide et impera.
Quindi, se dovessi scrivere e vai a scrivere un programma di medie
dimensioni o un programma di grandi dimensioni, lo farà essere davvero, davvero difficile da mantenere.
Sarà difficile da testare, eseguire il debug e trovare e correggere eventuali errori se si dispone di
un'unica funzione di grandi dimensioni.
Quindi abbattere e fare questo dividere la strategia di conquista
lo renderà molto più facile trova e correggi i bug nel tuo codice.
E puoi immaginare un singolo programma c tutto quello che avevo era la funzione principale e
c'erano 5000 linee in essa.
Non avremmo idea di come per attaccare quel problema.
È un'organizzazione davvero, davvero scarsa.
Non stai avendo alcuna coesione e ti stai semplicemente tuffando lì dentro per cercare
di risolvere un problema.
Quindi useremo le funzioni.
Dividere e conquistare significa fondamentalmente che le attività possono essere suddivise in diverse
attività secondarie indipendenti.
Riduce il complessivo complessità del codice.
Puoi creare funzioni separate per ogni attività secondaria, quindi puoi
persino creare più funzioni da dividere la sottoattività in sottoattività più piccole.
Ogni volta che crei questi file funzioni, riduce la complessità.
Il tuo obiettivo dovrebbe essere quando lo sei creando
queste funzioni e utilizzando il divide et impera la strategia è rendere
le tue funzioni il più coese possibile.
E ciò significa che è sicuro ogni funzione sta facendo solo un compito, non avere una funzione
da fare 5 compiti diversi o 10 compiti diversi.
Se scrivi una funzione che legge input dalla tastiera, fatelo
leggere input dalla tastiera, non farlo fargli controllare una stringa o visualizzare l'output
o qualcosa del genere.
Le funzioni devono essere piccole e devono essere molto coesi.
Ma il divide et impera la strategia è davvero bella
perché riduce quella complessità.
Invece di avere una funzione principale con 5000 righe di codice,
puoi avere molte, molte funzioni che stanno svolgendo compiti specifici
e puoi identificarli molto rapidamente.
Quindi le funzioni stanno andando ridurre la duplicazione del codice.
E quando riduci la duplicazione di codice, ti farà risparmiare tempo durante
la scrittura, i test e il debug di quel codice.
Inoltre si ridurrà la dimensione del codice sorgente.
E perché le funzioni si riducono duplicazione del codice
perché se hai un compito invece di farlo compito ancora e ancora e
ancora e scrivere lo stesso codice ancora e ancora e ancora, incapsuli
quell'attività in una funzione e tu semplicemente invoca la funzione e la funzione lo
farà per te ogni volta, tu non ci sono duplicazioni lì.
Se devi svolgere un determinato compito più volte
in un programma, è sufficiente scrivere un file funzionare una volta,
proprio come ho detto. Non ne hai bisogno scrivi quel codice più volte.
Quindi un programma può quindi utilizzare quella funzione quando necessario.
E puoi anche usare lo stesso funziona in diversi programmi, e questo è
ciò che costituisce una libreria.
Lo abbiamo fatto abbiamo utilizzato la
funzione printf, che proviene da libreria di output di input standard.
E questo è scritto solo una volta, e lo invochiamo ancora e ancora e ancora.
Se quella funzione non esistesse, lo avremmo dobbiamo
prendere l'implementazione di quella funzione e metterla nel nostro programma e continua a ripeterlo.
Quindi le funzioni possono risparmiare molto di tempo
e possono ridurre il tuo codice sorgente e tu puoi riutilizzarli più e più volte.
Quindi è anche un software tecnica di riutilizzo.
Aiuta anche con la leggibilità.
Quando modulizzi il tuo programma che è ciò che
stai facendo quando crei queste funzioni separate per eseguire compiti specifici, il programma
diventa molto meglio organizzato.
Come ho detto, se avessi un piatto principale routine, una funzione principale e
conteneva tonnellate di codice, lo farà essere molto più difficile da seguire
rispetto a una routine principale che chiama 5 funzioni e queste funzioni svolgono compiti specifici.
Quindi aiuta con l'organizzazione del programma.
Aiuta con la manutenzione del programma.
È molto più facile da leggere e più facile per modificare o correggere qualsiasi codice sorgente.
E ricorda, la manutenzione la fase è la fase più costosa del
ciclo di vita del software, questa è dove stai correggendo i
tuoi bug, il programma è stato rilasciato e dove stai aggiungendo nuove funzionalità.
Il meglio organizzato il tuo il programma è,
più facile sarà mantenerlo.
Quindi questa organizzazione, questa leggibilità, questo essere in grado di seguire cosa
sta succedendo in il tuo codice sorgente è molto importante
e le funzioni aiutano moltissimo.
L'approccio divide et impera consente inoltre di sviluppare
e testare parti del programma ed eseguito il debug in modo indipendente.
Quando esci nel reale world e inizi
a lavorare sul codice, lo noterai i programmi sono davvero, davvero grandi.
E ci sono molte persone lavorando su questi
programmi, centinaia forse anche migliaia.
Quando hai tutte queste persone che lavorano su un programma, è molto più facile
lavorare su quel programma se tu fai questo approccio dividere e conquistare se hai
piccoli compiti che le persone lo fanno ed è indipendente.
Non stai toccando lo stesso codice sorgente e puoi andare avanti e
implementare le attività molto più facilmente.
E quando lo fai e l'hai fatto più persone che lavorano su un
progetto, può ridurre lo sviluppo complessivo tempo che ancora una volta riduce i
costi di manutenzione, riduce i costi di sviluppo.
Le funzioni possono anche essere riutilizzate che ancora una volta ridurrà il tempo.
E di nuovo lo facciamo con il funzione printf, riutilizzala.
Ma tu quando scrivi il tuo utente funzioni definite, è possibile riutilizzarle più
e più volte nel programma.
Quindi il riutilizzo del software è un grande grande vantaggio delle funzioni.
Quando stai pensando su queste funzioni.
L'altra cosa bella del design il tuo programma sulle funzioni è che vuoi
pensarlo come una scatola nera.
Cosa significa quando tu quando tu pensala come una scatola nera, tutto ciò
a cui stai pensando è l'input alla funzione e all'output.
E quando ti concentri solo sul input nell'output, ti consente di guardare
il design nel suo insieme prima di iniziare a implementare.
E così le funzioni in generale lo faranno portarti in questo tipo di pensiero in
cui puoi concentrarti sul design.
E ho detto che il design è importante.
Il design è quando inizi a pianificare il tuo programma, come
lo organizzerai, come stai per scrivere il codice.
Ed è importante fare questa pianificazione prima ancora di iniziare l'implementazione che sta
scrivendo il codice.
E pensando alle funzioni e pensando solo a input
e output, puoi pensare a come il programma verrà organizzato e quali
funzioni è necessario creare.
Quindi non devi preoccuparti solo implementazione nei dettagli.
E questo è importante perché il la prima cosa
che vuoi fare prima di scrivere codice è solo pensare sul design, non vuoi
iniziare a pensare all'implementazione.
Un sacco di problemi che gli studenti hanno quando scrivono il codice per
la prima volta sono loro basta avviare l'implementazione.
Non pensano nemmeno al file problema, non
pensano come risolveranno il problema, iniziano solo a scrivere codice.
Mai un buon approccio.
Quando stai pensando di scrivere codice e funzioni, pensateli
solo come input e output della funzione e ti aiuterà con
il tuo design.
Quindi diamo un'occhiata ad alcuni esempi.
Abbiamo utilizzato funzioni integrate come come printf e scanf, come ho detto.
Quelli sono nello standard libreria di input output fornita dal
linguaggio di programmazione c.
Quindi abbiamo una certa familiarità con cosa una funzione è perché l'abbiamo usata, ma
non abbiamo passato la multa dettagli granulari su come si
definisce una funzione o su come si passa effettivamente dati a una funzione, niente del genere.
Ma con la funzione printf, dovresti aver
notato che richiede dati.
Puoi passare dati alla funzione.
I dati sono gli argomenti tra le parentesi che seguono
il nome della funzione.
Avremo un intero altra lezione su argomenti
e parametri per spiegarli meglio.
Ma ad alto livello lo capisci puoi passare dati a una funzione.
E capirlo guardando alla funzione printf.
Il primo argomento di printf la funzione che è il
dato a cui stiamo passando era una stringa letterale, era tutto quello che tutti
quei caratteri all'interno di virgolette doppie.
E poi abbiamo avuto anche argomenti quali potevano esserci 0 o molti c'erano argomenti variabili,
che erano una serie di variabili o espressioni i cui valori
dovevano essere visualizzati.
Quindi ricorda, se avessimo un formato specificatori nel primo
argomento in cui avremmo quindi le variabili questo negli argomenti successivi.
Quindi sei riuscito a passare dati alla funzione printf.
Avresti anche dovuto notare come te può ricevere informazioni da una
funzione, i dati possono essere restituiti.
Nella funzione scanf, uno degli argomenti era il modo in cui avresti
memorizzato i dati.
E quindi lo passeresti a variabile e quella variabile avrebbe un
valore qualunque l'utente ha digitato sulla tastiera.
Quindi è possibile pensarci come valore di ritorno in una funzione.
Quindi le funzioni sono molto preziose perché possono importarvi dati
e poi restituirli.
Quindi un esempio di codifica di una funzione e questa sarebbe solo una funzione
che invocheremo, ma questa è la funzione principale.
Abbiamo familiarità con il funzioni principali, il punto
di ingresso del programma.
Ma guarda com'è bello questo.
Stiamo chiamando le funzioni ordinamento e media della lista di lettura.
Abbiamo solo 3 righe di codice.
Dobbiamo andare a implementarli funzioni, ma rende il programma più organizzato perché
lo facciamo immediatamente sapere cosa sta facendo questo programma.
Questo programma leggerà un elenco, quindi ordinerà un
elenco, quindi procederà a mostra la media della lista e la
lista contiene i float.
Quindi è molto leggibile, sta andando essere molto facile da mantenere.
Se abbiamo bug nel file programma, sapremo immediatamente come trovare
o isolare quel bug.
Se il bug non viene smistato, noi può andare alla funzione di ordinamento.
Se il bug è nella media, possiamo andare alla funzione media, molto
facile per isolare gli errori.
Quindi, quando li implementiamo funzioni nella diapositiva precedente,
le stavamo solo chiamando.
Per implementare effettivamente le funzioni, devi scrivere il codice all'interno del
corpo della funzione.
Puoi utilizzare le funzioni che sono implementati dal linguaggio c come
printf o puoi creare le proprie funzioni definite dall'utente.
Non è necessario implementare il file printf o
qualsiasi funzione nella libreria, tu implementa solo le tue funzioni.
Quindi in questo esempio precedente con l'ordinamento della lista di lettura e la media,
dovremmo andare e lo faremmo devono implementare quella funzione.
Dovremmo fornire una funzione header, un corpo di funzione che in
realtà esegue la lettura di la lista, l'ordinamento
della lista e la media della lista.
Non abbiamo finito solo definendo funzioni, dobbiamo implementarle.
E quando si implementa il funzioni, si
desidera sempre utilizzare nomi di funzione descrittivi per chiarire cosa fa il programma
e come è organizzato.
Nell'esempio precedente, avevamo un file funzione denominata lista di lettura, abbastanza chiaro cosa sta
facendo, ordinamento del nome della funzione.
Non abbiamo chiamato la funzione x y o z.
Abbiamo descritto quella funzione.
È la stessa cosa quando stai descrivendo
o creando variabili, nomi significativi.
E anche se fai queste funzioni dove sono abbastanza generici
dove stanno effettivamente facendo qualcosa e stanno prendendo dati generici, potresti
effettivamente farlo riutilizzarli in altri programmi, proprio come
una funzione di libreria.
Ancora una volta, supportando il riutilizzo del software.
Quindi in queste prossime conferenze, parleremo di come possiamo
definire una funzione, il sintassi specifica, come possiamo invocare e chiamare
una funzione e come possiamo passare e restituire dati da loro.
Questo è ciò su cui ci concentreremo nelle prossime lezioni.
Volevo anche menzionarlo la nostra routine principale che abbiamo visto
più e più volte in ogni programma c, questa è una funzione.
La funzione principale è specialmente nome riconosciuto nel sistema
c, indica dove si trova il file programma deve iniziare l'esecuzione.
Tutti i programmi in c hanno sempre un file main.
La funzione principale può assumere dati quando si passa ad esso,
agli argomenti della riga di comando o ad esso non deve prendere dati.
Ha anche un optional dati che può restituire.
Noterai che usiamo funzioni principali che restituiscono 0.
Di solito, viene utilizzato quando tu desidera restituire codici di errore.
Ma abbiamo usato funzioni specifiche già e la funzione
più importante è quella funzione principale e anche questo aiuta a organizzare il codice.
Sappiamo sempre dove si trova il file il programma sta iniziando perché non
ci resta che trovare il main.
Questa è una descrizione di alto livello di funzioni tipo di identificare i
vantaggi delle funzioni e cos'è esattamente una funzione.
Adesso vogliamo parlare sull'implementazione.
Grazie.