Bună ziua și bun venit începem o nouă secțiune.
Secțiunea noastră se bazează pe funcții, astfel încât vom vorbi despre unele dintre funcțiile de bază pentru noi.
O funcție este o unitate autonomă de cod de program concepută pentru a îndeplini o anumită sarcină.
Aceasta este o funcție de definire la nivel înalt va fi în esență ceva ce puteți invoca, care
vă ajută să reduceți codul aplicației.
Dar ceea ce face este că este autonom în interiorul codului însuși și
are doar câteva sarcini pe care le va realiza.
Regulile sintaxei urmează să definească structura unei funcții și cum poate fi utilizată.
Așadar, în funcție de limbajul de programare pe care îl folosiți, funcțiile pot fi definite diferit.
Pentru C vom vorbi despre reguli specifice pentru C cele mai multe limbaje de programare susțin acest concept
al unei funcții.
Și vă voi spune avantajele și de ce suportă o funcție în C este același lucru cu o procedură
subrutină sau proceduri și alte limbi de programare.
De multe ori auziți aceste subrutine și proceduri.
Același lucru este o unitate funcțională autonomă care execută un anumit cod pe care îl puteți numi câteva funcții pentru
a provoca o acțiune.
Așa că suntem familiarizați cu câteva funcții până la acest punct.
Am studiat funcția de tipărire care afișează ieșirea pe ecranul dvs. și acțiunea face ceva
pentru dvs.
Apoi am analizat și funcția de scanare care are nevoie de intrare de la tastatură.
Din nou, un fel de altă acțiune.
Alte funcții pot găsi doar o valoare pentru un program de utilizat.
De exemplu, studiem șirurile și matricele de caractere.
Vom analiza funcțiile de manipulare și de a schimba lucrurile.
Există o funcție în special numită lungime str și care va spune unui programator cât timp este
un anumit șir.
Nu efectuează o acțiune care vă oferă doar informații.
Deci, funcțiile vor face sarcini în funcție de sarcină în ceea ce aveți nevoie pentru a realiza în
programul dumneavoastră.
Se va produce o acțiune sau se va modifica o valoare a programului sau se va întoarce o valoare
sau se vor indica avantajele anumitor funcții ale informațiilor de stare.
Vom folosi funcții pentru că am o mulțime de avantaje.
Funcțiile permit strategia de divizare și cucerire.
Deci, dacă doriți să scrieți și să mergeți și să scrieți un program de dimensiuni medii sau un program
mare, va fi cu adevărat greu de întreținut.
E greu de testat.
Va fi greu să testați depanarea și să găsiți și să remediați eventualele erori.
Dacă aveți o singură funcție mare, astfel încât descompunerea și realizarea acestei strategii de împărțire și cucerire va
face mult mai ușor să găsiți și să remediați problemele din codul dvs.
Adică îți poți imagina un singur program C.
Tot ce aveam era funcția principală și erau 5000 de linii în ea.
N-am avea idee cum să atacăm această problemă.
Este într-adevăr o organizație foarte slabă, nu ești.
Nu aveți nici o coeziune și doar o scufundare chiar acolo, ca și cum ați încerca să
încercați să rezolvați problema, așa că vom folosi funcții.
Împărțirea și cucerirea practic înseamnă că sarcina poate fi împărțită în mai multe sub-sarcini independente.
Reduce complexitatea generală a codului.
Puteți crea funcții separate pentru fiecare subtasc și apoi puteți crea chiar mai multe funcții pentru a împărți subtascul
în submăsuri mai mici de fiecare dată când creați aceste funcții suplimentare.
Reduce complexitatea.
Obiectivul dvs. în obiectivul dvs. ar trebui să fie atunci când creați aceste funcții și utilizarea strategiei de
divizare și cucerire este de a vă face funcțiile coerente cu putință.
Ce înseamnă asta este să vă asigurați că fiecare funcție face ceva foarte foarte doar o singură sarcină.
Nu aveți o funcție care să facă cinci sarcini diferite sau 10 sarcini diferite.
Dacă scrieți o funcție care citește intrarea de pe tastatură, citiți de la tastatură.
Nu aveți o verificare a unui șir sau a unei ieșiri de afișare sau ceva similar.
Funcțiile trebuie să fie mici și trebuie să fie foarte coerente.
Dar strategia de divizare și cucerire este foarte plăcută deoarece reduce această complexitate în loc să aibă o funcție
principală cu 5000 de linii de cod.
Puteți avea multe funcții care fac anumite sarcini și le puteți identifica foarte repede.
Funcțiile vor reduce astfel duplicarea codului.
Se va termina atunci când reduceți aplicația de cod, pe care o veți economisi atunci
când scrieți testarea și depanarea acelui cod.
De asemenea, va merge la Riddhi să reducă dimensiunea codului sursă.
Și de ce funcțiile reduc dublarea codului.
Deoarece dacă ai o sarcină în loc să faci acea sarcină mereu și repetată și
scriind același cod de peste și peste din nou, încapsulezi acea sarcină într-o funcție și invocă doar funcția
și funcția o va face pentru fiecare dată .
Nu aveți nicio dublare acolo.
Dacă trebuie să faceți o anumită sarcină de mai multe ori într-un program, trebuie doar să scrieți o funcție
corespunzătoare o dată.
Asa cum am mentionat, nu este nevoie sa scrieti acel cod de mai multe ori, astfel incat un
program poate sa foloseasca acel focus ori de cate ori este necesar si puteti folosi aceeasi functie in diferite programe.
Și asta constituie o bibliotecă.
Am făcut asta.
Am folosit funcția Pernelle, care este din biblioteca standard de ieșire de intrare și care este scrisă doar o singură
dată și o invocăm din nou și din nou.
Dacă această funcție nu ar fi existat, ar trebui să luăm implementarea acestei funcții și să o păstrăm și să o
punem în programul nostru și să continuăm să o repetăm.
Deci, funcțiile pot economisi o mulțime de timp și pot reduce codul sursă.
Și le poți reutiliza din nou și din nou.
Deci este și o tehnică de reutilizare a software-ului.
De asemenea, ajută la lizibilitatea atunci când vă modulați programul, ceea ce faceți atunci când
creați funcții separate pentru a efectua sarcini specifice.
Programul devine mult mai bine organizat.
Asa cum am spus daca aveai o functie principala de rutina principala si avea tone de cod
in ea va fi mult mai greu de urmarit decat o rutina principala care cheama fi functii si acele functii fac sarcini specifice.
Deci, o casă cu program de organizare ajută la programare este mult mai ușor de citit mai ușor să
schimbați sau să reparați orice cod sursă.
Și rețineți că faza de întreținere este cea mai scumpă etapă a ciclului de viață al software-ului.
Aici rezolvi bug-urile.
Programul a fost lansat și adăugăm noi caracteristici pentru a organiza mai bine programul dvs. este cu atât mai
ușor va fi menținerea acestuia.
Deci această organizație această lizibilitate este capabilă să urmărească ceea ce se întâmplă în codul dvs.
sursă foarte important și funcțiile ajută la o tonă.
Abordarea de divizare și de cucerire permite, de asemenea, ca anumite părți ale programului să fie
dezvoltate testate și depanate depanctate independent.
Când ieșiți acolo în lume și începeți să lucrați la cod, veți observa că
programele sunt într-adevăr foarte mari și mulți oameni lucrează la aceste programe de sute sau chiar de mii.
Când aveți toți acești oameni care lucrează la un program, este mult mai ușor să lucrați la acel program.
Dacă dacă faceți acest lucru împărțiți și cuceriți abordarea dacă aveți mici sarcini pe care oamenii le fac și este independent, nu
atingeți același cod sursă și puteți merge mai departe și implementa sarcini mult mai ușor.
Iar când faci acest lucru și aveți mai mulți oameni care lucrează la un proiect,
acesta poate reduce timpul de dezvoltare generală, ceea ce reduce din nou
costurile de întreținere, reduce costurile de dezvoltare, se pot utiliza și funcțiile care din nou vor reduce din când în când ceea ce facem cu reutilizarea imprimării
.
Dar când vă scrieți propriile funcții definite de utilizator, le puteți reutiliza din nou și din nou în
program.
Deci, fiecare utilizare este un mare avantaj al funcțiilor atunci când vă gândiți la aceste funcții.
Celălalt lucru frumos despre proiectarea programului în jurul funcțiilor este că vrei să te gândești la el ca pe o
cutie neagră.
Ce inseamna atunci cand te gandesti la asta ca la o cutie neagra, tot ce te
gandesti este intrarea in functie si iesire.
Iar atunci când vă concentrați doar pe intrare și pe ieșire, vă permite să vă uitați la design ca un întreg
înainte de a începe implementarea și astfel funcțiile în general vă vor primi în acest tip de gândire în care vă
puteți concentra asupra designului.
Și am menționat designul este un design important este atunci când începeți să vă
planificați programul cum veți organiza cum veți scrie codul.
Și este important să faceți această planificare înainte să începeți chiar implementarea care
scrie codul și gândindu-vă la funcții și gândindu-vă doar la intrări și ieșiri, vă puteți
gândi cum va fi organizat programul și ce funcții trebuie să creați.
Deci, nu trebuie să vă faceți griji cu privire la punerea în aplicare doar în detalii.
Și acest lucru este important deoarece primul lucru pe care doriți să-l faceți înainte de a scrie
codul este doar să vă gândiți la designul pe care nu doriți să începeți să vă gândiți să implementați o mulțime de probleme
pe care studenții le au atunci când scriu cod pentru prima dată, punerea în aplicare.
Nici măcar nu se gândesc la problemă.
Nu cred că vor rezolva problema.
Începe să scrie coduri.
Niciodată o abordare bună.
Când vă gândiți să scrieți coduri și funcții, gândiți-vă la acestea doar ca intrări și
ieșiri ale funcției și vă va ajuta să vă proiectați.
Deci, să ne uităm la câteva exemple.
Am folosit funcții construite precum imprimarea scanerului de fonturi.
Așa cum am menționat, acestea sunt biblioteca standard de ieșire de intrare furnizată de limbajul de programare C.
Așadar, suntem familiarizați într-o anumită măsură cu ce funcție este pentru că am folosit-o, dar nu
am trecut prin detalii detaliate despre modul în care definiți o funcție sau cum ați transferat datele într-o funcție.
Nimic de genul asta.
Dar cu funcția de imprimare ar trebui să fi observat că nu ia date.
Puteți transmite date către funcție.
Datele sunt argumentele între paranteze care urmează numele funcției.
Vom avea un altul lauder pe argumente și parametri pentru a le explica mai mult.
Dar, la un nivel înalt, înțelegeți că puteți transmite date unei funcții și înțelegeți că, uitându-ne la funcția de
tipărire, primul argument al funcției de tipărire, care este datele pe care le transmitem, a
fost un literal șir.
Totul a fost acele personaje din interiorul citatelor duble.
Și apoi am avut și argumente care ar fi putut fi zero sau multe argumente variabile care erau o
serie de variabile sau expresii ale căror valori urmau să fie afișate.
Așadar, amintiți-vă dacă am avea specificații de format în primul argument pe care am avea
apoi variabilele din argumentele următoare.
Deci ați fost capabili să transmiteți date către funcția de imprimare.
De asemenea, ar fi trebuit să observați cum puteți primi informații înapoi de la o funcție.
Datele pot fi returnate la afinarea de scanare unul dintre argumente a fost modul în care aveați de gând
să stocați datele.
Așa că ați trece o variabilă și această variabilă ar putea avea acum o valoare indiferent de
utilizatorul tastat în tastatură.
Deci, acest lucru se poate cam subțire gândit ca o valoare de returnare a funcției.
Deci, funcțiile sunt foarte valoroase deoarece pot lua datele în ele și apoi pot să returneze datele
din ele, deci un exemplu de codificare a unei funcții și aceasta ar fi doar o funcție pe care o vom invoca.
Dar aceasta este funcția principală pe care o cunoaștem cu punctul de intrare al funcției principale a programului.
Dar uită-te la cât de frumos este că suntem apelând funcții lectură listele saur și medie.
Avem doar trei linii de cod.
Trebuie să mergem și să implementăm aceste funcții.
Dar face programul mai organizat pentru că știm imediat ce face acest program.
Acest program va citi o listă.
E un fel de listă.
Se va afișa media listei, iar lista conține flotoare.
Deci este foarte ușor de citit.
Va fi foarte ușor să ne menținem dacă avem bug-uri în program și vom ști imediat cum să
găsim sau să izolăm acel bug dacă bug-ul este în sortare.
Putem merge la funcția sursă.
Dacă bug-ul se află în mediul în care se află, putem merge la funcția medie.
Foarte ușor pentru a izola erorile.
Așa că, atunci când implementăm aceste funcții în diapozitivul anterior, le chemăm doar să le pună
în practică funcțiile.
Trebuie să scrieți codul în interiorul corpului funcției.
Puteți utiliza fie funcții care sunt implementate de limbajul C, cum ar fi Pranav, fie puteți
crea propriile funcții definite de utilizator.
Nu trebuie să implementați funcțiile de tipărire sau oricare dintre funcțiile unei biblioteci pe care o implementați
numai pe propriile funcții.
Deci, în acest exemplu precedent, cu cel mai reale mijloc din mediu, ar trebui să mergem și ar trebui
să implementăm această funcție.
Trebuie să furnizăm un antet al funcției un corp de funcții care face de fapt
citirea listei de sortare a listei și de mediere a listei atunci când nu am terminat doar prin definirea funcțiilor pe care
trebuie să le implementăm.
Iar atunci când implementați funcțiile pe care doriți să le utilizați întotdeauna, folosiți numele funcțiilor descriptive pentru a clarifica ceea
ce face programul și modul în care este organizat.
În exemplul precedent am avut o listă de nume de funcții.
Destul de clar ce face.
Numele funcțiilor sau nu am denumit funcția X Y sau Z.
Descriim această funcție.
Este același lucru când descrieți sau creați variabile cu nume semnificative.
Și, de asemenea, dacă faceți aceste funcții acolo unde sunt destul de generice acolo unde fac
de fapt ceva și dacă iau date generice, veți reuși să le reutilizați în alte programe, la fel ca
o funcție de bibliotecă.
Sprijinirea din nou a reutilizării software-ului.
Așadar, în aceste cursuri viitoare vom vorbi despre modul în care putem defini o funcție, sintaxa specifică, modul în care putem
invoca și apela o funcție și modul în care putem transmite și returna datele de la ele.
De-a lungul viitoarelor prelegeri am vrut să menționăm că principala noastră rutină pe care am
văzut-o din nou în fiecare program C este o funcție.
Dreapta.
Funcția principală este, în special, numele recunoscut în sistemul C.
Aceasta indică locul în care trebuie să înceapă execuția programului.
Toate programele C au întotdeauna o funcție principală, funcția principală poate lua date când treci la ele argumentele liniei de
comandă.
Sau nu trebuie să ia date.
De asemenea, are date opționale pe care le poate reveni.
Veți observa că folosim funcțiile principale care revin 0.
De obicei, acest lucru este folosit atunci când doriți să returnați codurile de eroare, dar am folosit funcții specifice sunt deja
cele mai importante.
Care este acea funcție principală.
Și asta ne ajută din nou să organizăm codul pe care îl știm mereu
de unde începe programul, deoarece trebuie să găsim principala a fost o descriere la nivel înalt a funcțiilor de identificare a
avantajelor funcțiilor și a exact a unei funcții.
Acum vrem să vorbim despre implementare.
Mulțumesc.