Cum se dezvoltă un program C simplu
Ultima revizuire: ianuarie 1999
(McCann)
Studenții par să aibă întotdeauna probleme să înțeleagă (sau poate doar să facă) ceea ce aștept de la ei atunci când atribuie un program. Cerințele sunt într-adevăr foarte simple; este în mare parte o chestiune de a-ți lăsa suficient timp pentru a face totul.

simplu

Pentru a vă ajuta să înțelegeți ce se așteaptă de la dvs., în acest document voi lua un eșantion simplu de programare și vă voi ghida prin pașii majori ai procesului de dezvoltare a programului.

(Dacă sunteți în căutarea detaliilor despre documentația programului, veți găsi unele aici, dar ar trebui să vizitați pagina mea Stil de programare, care conține colecția mea de documente de stil, inclusiv câteva pagini de stil de la alte persoane. Majoritatea este dezvoltată cu experiență programatori în minte. Acest document este destinat studenților care abia încep să învețe C.)


Pasul 1: începeți devreme
Programarea nu este o activitate care poate fi programată în mod fiabil pentru a dura o perioadă prestabilită de timp. Chiar și programele care par a fi realizabile în 2 ore vor dura adesea 4 sau 5 ore pentru a fi finalizate. Cel mai bun lucru pe care îl poți face pentru tine este să spui: „Nu am nicio idee cât va dura acest lucru; mai bine mă apuc imediat”.

Pasul 2: Citiți cu atenție fișa de atribuire
Fișele mele de atribuire a programării tind să fie foarte detaliate, dacă nu perfect organizate. Tot ceea ce aștept de la tine este dat acolo undeva, așa că citește-l cu atenție și evidențiază punctele cheie, astfel încât să nu treci cu vederea niciuna dintre ele.

De exemplu, să luăm în considerare acest exemplu de atribuire:

COMSC 1613 Programare I

Programul # 0: Calorii datorate grăsimilor

Data limită: Smarch 36th, 2028, la începutul orei

Trebuie să efectuați această atribuire pe sistemul AIX1.

Prezentare generală: Orice dietetician vă va spune că limitarea consumului zilnic de grăsimi să fie sub 30% din totalul caloriilor este o idee bună. Dar câte dintre caloriile din alimentele tale preferate sunt din grăsimi? Etichetele nutriționale vă vor spune câte grame de grăsime există într-o porție și câte calorii totale există în acea porție, dar trebuie să faceți singur restul calculelor.

După cum se întâmplă, un gram de grăsime are aproximativ 9 calorii. Prin urmare, dacă luați grame de grăsime într-o porție a unui anumit aliment, înmulțiți-o cu 9 și împărțiți-o cu numărul total de calorii din porție, veți obține fracțiunea caloriilor datorate grăsimilor. Pentru a obține rezultatul ca procent, trebuie doar să înmulțiți cu 100.

De exemplu, luați în considerare un produs care are 3 grame de grăsime și 170 de calorii pe porție. Există 27 de calorii datorate grăsimilor (3 * 9), iar 27/170 = 0,1588. Înmulțirea cu 100 oferă răspunsul final: 15,88 la sută din calorii se datorează grăsimilor.

Temă: scrieți un program C complet, bine documentat, care începe prin a cere utilizatorului să introducă grame de grăsime și calorii într-o porție de produs alimentar. Programul va calcula procentul caloriilor alimentelor datorate grăsimilor și va afișa informațiile introduse și procentajul sub forma unei propoziții în limba engleză completă.

Date: Rulați programul de două ori, o dată pentru fiecare set de date prezentat în tabelul următor:

Total calorii

Predare: la data scadenței, introduceți următoarele elemente: O imprimare a programului dvs. C documentat și o imprimare a rezultatului produs de programul dvs. când a fost rulat pe fiecare dintre seturile de date date mai sus. Asigurați-vă că vă scrieți numele în colțul din dreapta sus al imprimării; acest lucru vă va face mai ușor să vă revendicați programul atunci când vi-l returnez.

Pasul 3: Scrieți documentația externă
Am auzit deja zâmbetul („Scrieți comentarii acum? Deveniți serios!”) Dar sunt serios: ar trebui să vă scrieți documentația în timp ce scrieți programul, nu după aceea. În special, Documentația externă ar trebui să fie aproape completă înainte de a scrie chiar o linie de cod.

Îmi înmânez claselor mele de programare un document de o pagină care listează informațiile pe care mă aștept să le văd în programele dvs. În special, iată ce ar trebui să conțină documentația externă:

  1. Numele dvs., numele cursului, numele/numărul sarcinii, numele instructorului și data scadenței.
  2. Descrierea problemei pe care programul a fost scris să o rezolve.
  3. Abordare utilizată pentru a rezolva problema. Aceasta ar trebui să includă întotdeauna o scurtă descriere a principalilor algoritmi utilizați sau a numelor lor, dacă sunt algoritmi obișnuiți.
  4. Cerințele operaționale ale programului: ce sistem de limbă ați folosit, informații speciale de compilare, unde intrarea poate fi localizată pe disc etc.
  5. Funcțiile necesare ale sarcinii pe care nu le-ați putut include.
  6. Bugurile cunoscute ar trebui raportate și aici. Dacă o anumită caracteristică nu funcționează corect, este în interesul dumneavoastră să fiți cinstit și complet cu privire la neajunsurile programului dvs.
Pentru a vă ajuta, am creat un șablon pe care îl puteți importa în programul dvs., care conține o etichetă pentru fiecare secțiune pe care vreau să o văd. Tot ce trebuie să faceți este să completați spațiile libere; Nu pot să o fac mult mai ușoară decât atât. Pagina Blocare șabloane de comentarii cu exemple arată șablonul de documentație externă și îl puteți găsi pe AIX1 în fișier

mc/docs/external.c. Să aveți o copie pe AIX1 este plăcut, deoarece puteți utiliza comanda de importare a fișierelor editorului (: r în editorul vi, de exemplu) pentru ao introduce în program; importul șablonului poate economisi o mulțime de tastare.

Iată cum arată șablonul:

Rețineți că am inclus câteva comentarii scurte în fiecare secțiune, pentru a vă informa ce trebuie să adăugați. Deoarece ștergerea tuturor acestor comentarii este dificilă, am o versiune fără comentarii pe AIX1 numită ext.c pe care o puteți importa în schimb. Se află în același director ca external.c .

Ar trebui să puteți completa acest șablon, cu excepția ultimelor două secțiuni înainte de a scrie programul. Iată cum ar putea arăta pentru exemplul nostru de atribuire:

Vă rugăm să acordați atenție nivelului de detaliu; explicațiile sunt destul de detaliate. Mulți studenți încearcă să includă un minim de informații în documentația lor; asta nu e deloc bun. Documentația ar trebui să ajute cititorul să înțeleagă programul, nu să ridice mai multe întrebări decât răspunde. Acest exemplu arată o cantitate adecvată de informații. (Vă puteți gândi la câteva informații suplimentare pe care ați dori să le vedeți incluse?) Unii studenți cred că cititorul se poate referi doar la fișa de atribuire pentru a obține informațiile. Amintiți-vă două lucruri: În primul rând, documentația face parte din codul programului; fișa nu este. În al doilea rând, când primești un loc de muncă ca programator, șeful tău nu va merge în jur, oferindu-ți documente de repartiție. S-ar putea să vă obișnuiți să scrieți documentație bună și informativă acum.

Bineînțeles, programatorul va trebui să revizuiască documentația după finalizarea programului și să verifice dacă toate informațiile sunt corecte (și completează ultimele două secțiuni). Dar, dacă faceți o treabă bună de planificare a detaliilor programului în avans, nu va trebui să vă schimbați prea mult, dacă este ceva.

Pasul 4: Scrieți programul câte o piesă la un moment dat
Studenților le place să încerce să-și scrie programele dintr-o dată. Puteți scăpa de asta cu programe mici, dar pe măsură ce crește cantitatea de cod, solicitați dureri de cap dacă nu scrieți câte puțin și testați fiecare secțiune pe măsură ce o scrieți.

De exemplu, în programul nostru știm că trebuie să citim două date și să ieșim trei, cu unele calcule între ele. Uitați de calcule pentru moment și încercați doar să vă ocupați de intrare și ieșire. Programul dvs. ar putea arăta astfel: (Am lăsat documentația externă în interesul de a economisi spațiu.)

Da, este foarte spartan. Nu vă faceți griji, vom completa detaliile în timp util. Ideea este că putem compila și rula acest program așa cum este și suntem convinși că suntem capabili să citim și să scriem cu succes datele. Nu are prea mult sens să scriem calculele procentuale până nu știm că calculele vor avea valorile corecte pentru a lucra. Prin includerea unei declarații simple de ieșire, putem vedea că valorile sunt citite corect.

Dacă ar fi să compilați și să rulați acest program, iată ce ați vedea:

Evident, va trebui să facem aceste acțiuni de intrare și ieșire mult mai „ușor de utilizat” înainte de a termina.

Apoi, putem adăuga calculele:

Nu uitați să testați calculele pentru a vă asigura că acestea funcționează corect. Vă amintiți exemplul de calcul dat în fișa de atribuire? Este un caz de test bun:

În cele din urmă, veți fi adăugat toate funcționalitățile necesare programului dvs., veți fi testat cu atenție funcționarea acestuia și veți adăuga orice documentație rămasă. În acest moment, puteți alege să adăugați câteva „extras” care îmbunătățesc programul, dar nu au fost solicitate de atribuire. (Nu am niciodată probleme când faci mai mult decât necesită sarcina!) Iată cum ar putea arăta programul finalizat:

În acest program, am decis că ar fi bine dacă formularea de ieșire se potrivește cu valorile introduse de utilizator. Declarațiile IF-ELSE vor face ca cuvintele să se potrivească cu cantitatea; de exemplu, „1 gram” în loc de „1 gram”. Acest pas nu a fost necesar, dar face un program final mai șlefuit.

Iată ce va vedea utilizatorul când îl va rula:

Pasul 5: Pregătiți-vă imprimarea „Mână în”
Odată ce v-ați convins că programul dvs. face ceea ce trebuie și îndeplinește toate cerințele, trebuie să creați o imprimare a programului și a rezultatului pentru a-mi transmite la data scadenței.

Pentru a tipări ieșirea programului, trebuie să îl salvați într-un fișier cumva. Modul recomandat de a face acest lucru este să vă bazați pe utilitarul de script UNIX. Când scriptul este activ, tot ceea ce apare pe ecran este capturat într-un fișier. Deci, ideea este să porniți scriptul, să rulați programul de câte ori este necesar și apoi să opriți scriptul. Pentru acest program, iată cum va funcționa întregul proces:

În mod clar, comanda de oprire a scriptului este comanda de ieșire. Textul care a apărut pe ecran între aceste două comenzi este salvat în contul dvs. într-un fișier numit dactilografiat. După cum ați văzut, programul a fost rulat de două ori, o dată pentru fiecare set de date furnizate în fișa de atribuire.

Pentru a imprima fișierele pe imprimanta din camera terminalului principal (MCS 126), utilizați comanda lpr (da, prima literă este un „L” cu litere mici), astfel:

Prin listarea celor două fișiere împreună, așa cum se arată, UNIX le va imprima consecutiv pe imprimantă (adică, imprimarea nimănui altcineva nu va fi între ele).

Vă rugăm să lăsați tipărirea așa cum este, cu paginile conectate într-o manieră pliată de ventilator și pagina antetului în partea de sus. Pentru a vă facilita găsirea programului în grămadă atunci când îl întorc la curs, vă rugăm să scrieți numele dvs. în colțul din dreapta sus al imprimării.

Pasul 6: Verificați-vă din nou munca
Nu pot începe să vă spun cât de frustrant este pentru mine să trebuiască să scot puncte sau chiar să cer ca un student să trimită din nou un program, doar pentru că studentul nu și-a luat timp să verifice dacă programul lor este cu adevărat complet. Când credeți că ați terminat, încercați să parcurgeți această mică listă de verificare și să vedeți dacă ați terminat cu adevărat:

  1. Am recitit fișa de atribuire pentru a mă asigura că am găsit toate cerințele?
  2. Programul meu îndeplinește toate cerințele?
  3. Documentația mea este completă? (Am terminat documentația externă? Numele variabilelor mele sunt semnificative? Declarațiile variabilelor sunt documentate? Am folosit spațiul alb în mod eficient? Dacă am inclus funcții definite de utilizator, am inclus un comentariu de bloc intern pentru fiecare?)
  4. Mi-am rulat programul pe toate datele de test furnizate?
  5. Am verificat manual rezultatele pentru a mă asigura că logica programului este corectă?
  6. Am tipărit tot ce am nevoie pentru a preda?
Dacă totul arată bine, atunci sunteți gata să îl predați. În primele 5 minute de curs la data scadenței, plasați tipărirea (și discul, dacă trimiteți o versiune pentru PC în loc de o versiune AIX1) pe recepția din clasă.

Pasul 7: Revendicați programul acum gradat
Mă străduiesc din răsputeri să vă calific programele și să vă revin la următoarea ședință de curs după data scadenței. (Deoarece aveți un timp limitat pentru a retrimite programe incomplete, vreau să aveți acces la comentariile mele cât mai curând posibil.) Unii studenți nu par să le pese dacă își revendică sau nu programele; asta e treaba lor, dar vă recomand cu adevărat să vă recuperați programele de la mine, doar pentru a verifica dacă nu trebuie să remediați nimic.

Pasul 8: Finalizați și retrimiteți programul (numai dacă este necesar!)
Dacă vreau să vă remediați programul și să îl retrimiteți, veți ști pentru că (a) scorul dvs. este de 50 sau mai puțin și (b) Am scris pe acesta „Completați și retrimiteți”. Vă voi cere să retrimiteți un program care prezintă erori și/sau omisiuni semnificative sau un număr mare de mici probleme. De cele mai multe ori, studenții știu prea bine că programul lor nu funcționează și nu au nevoie ca eu să le spun. Dar nu pot presupune.

Dacă lucrați la o nouă trimitere, vă rugăm să fiți conștient de faptul că puteți trece în continuare la biroul meu pentru a primi ajutor la reînaintare. Când remediați totul și sunteți gata să retrimiteți programul, creați o nouă imprimare a programului și a rezultatului acestuia și transformați-l împreună cu programul clasificat original. Vreau să le văd pe amândouă, astfel încât să văd ce schimbări ați făcut. Dacă nu le predați pe amândouă, nu voi califica retrimiterea!

Doriți să aflați mai multe despre un stil bun de programare? Vă rugăm să vizitați pagina de documente privind stilul de programare pentru indicatori pentru documente suplimentare despre stilul de programare.