start     Articole     Despre mine    

Prima lectie de C

Uau, in sfarsit! Stiu ca astepti de ceva vreme sa fac si lectii de programare “serioasa”. Si probabil te intrebi de ce abia acum? Nu e C miezul in materie de limbaje de programare? (Ba cam da, dupa cum ziceam si aici: Care e cel mai tare limbaj de programare.) Atunci de ce atata energie risipita pentru a face tutoriale intr-un Javascript “de copii mici”, te intrebi? (Despre seria de lectii “Cum sa inveti programare in 8 zile” e vorba, desigur.)

Fiindca…

 

Dar deja am explicat asta in articolul “Vreau sa invat programare; cum sa fac?“, nu?

…Fiindca eu consider ca invatarea programarii trebuie facuta ca jucatul unui joc. Un joc in care pornesti de la nivelul zero si joci cate un nivel pe rand. Si abia dupa ce treci de un nivel il poti juca pe urmatorul.

 

Iar primul “nivel” (adica “nivelul zero”) in materie de programare e cel in care inveti bazele. La acest nivel “jucatorul” are 3 obiective (sau “misiuni”):

  1. intarirea si sporirea motivatiei/fascinatiei pentru programare (<– fara ea, vei ceda pe parcurs)
  2. deprinderea notiunilor fundamentale: program, instructiune, variabila, decizie, repetitie, vector, functie (<– ele vor deveni “armele” tale de “joc”)
  3. si deprinderea abilitatilor esentiale: secventializare, interschimbare valori, parcurgere, modularizare (adica “skilss”-urile de care vei avea nevoie in “lupta”)

O prima versiune a acestui nivel o poti gasi in tutorialul asta (care a ajutat deja multi oameni sa-si dea startul in programare). Iar o versiune completa (care include si informatiile suplimentare prezentate in cadrul cursului “Primii pasi in programare“) va fi disponibila in curand in cartea “Abecedar de programare — De la zero barat la bun de programat“.

 

Invatarea limbajului C este cel de-al doilea “nivel” pe care trebuie sa-l “joci” ca sa ajungi programator “serios”. Motivatia, armele si abilitatile dobandite in primul nivel iti vor fi esentiale pentru a putea “razbi” in C. Daca pe un incepator total contactul direct cu limbajul C l-ar coplesi sau l-ar pune pe fuga, pentru tine nu va fi nimic de speriat, ci doar noi notiuni si abilitati de deprins. Mai exact, vei invata:

1. Ce e compilatorul de C, ce e un fisier sursa si cum le poti folosi utilizand un mediu de dezvoltare integrat. (Code::Blocks)

2. Care este structura generala a unui program C si de ce e nitel complicata. (#include, main)

3. Cum arata variabilele in C si ce sunt tipurile de date. (int, char, float, long, double)

4. Cum introduci si cum scoti date intr-un/dintr-un program C folosind tastatura si ecranul. (scanf, printf)

5. Cum iei decizii in limbajul C. (if, switch)

6. Cum faci repetari in C. (while, do, for)

7. Cum lucrezi cu vectori si matrici de oricate dimensiuni in C.

8. Ce sunt pointerii in C, cum lucrezi cu ei si care e legatura lor cu vectorii.

9. Ce sunt functiile in C, ce fel de parametri pot primi si care e diferenta dintre variabilele globale si cele locale.

10. Cum lucrezi cu siruri de caractere in limbajul C. (char*, string.h)

11. Cum aloci memoria dinamic in C si de ce nu poti folosi intotdeauna alocarea statica.

12. Cum grupezi variabilele in structuri C.

13. Cum citesti si cum scrii fisiere folosind limbajul C.

14. Cum implementezi structurile de date fundamentale in C. (stiva, coada, lista, arbore)

15. Cum gestionezi programele mari si cum compilezi cod sursa C distribuit in mai multe fisiere.

16. Ce inseamna robustetea, reutilizabilitatea si extensibilitatea si cum le poti implementa folosind limbajul C.

17. De ce trebuie sa inveti programare orientata pe obiecte, de ce C++ e un C mai bun si de ce, totusi, limbajul C nu va “muri” prea curand?

 

(Urmatorul “nivel” in “jocul” invatarii programarii ar fi apoi, asadar, invatarea programarii orientate pe obiecte. Poti face asta si trecand direct la limbajul Java (sau la un alt limbaj care suporta aceasta paradigma de programare), dar parerea mea e ca drumul cel mai natural si usor (pe termen lung, zic) catre Java trece prin C++.)

 

Deci gata! The end. 🙂 Asta a fost prima ta lectie de C.

Probabil ca te asteptai la mai mult. Poate ca iti doreai sa-ti “murdaresti mainile” “mesterind” la niste cod sursa in C.

Dar nu. E suficient pentru aceasta lectie daca ai vazut “poza de ansamblu” si nu te-ai lasat intimidat de ea.

Un pic, insa, trebuie sa te fi “speriat”. Daca nu te-ai speriat deloc, atunci ori trebuie sa treci mai intai de “nivelul zero” (despre care am vorbit la inceputul articolului), ori e cazul sa iei o mica pauza si sa recitesti lista de mai sus cu mai multa atentie. 🙂

 

Sunt destui care “mor” inca de la primul “nivel”. 🙂 Daca ai ajuns pana aici deja meriti felicitari. Asa ca te felicit si iti urez mult spor in continuare!

Spune-mi, te rog, esti la prima experienta cu C-ul? Sau ai mai avut vreo tentativa (si daca da, cum a fost)? Lasa-mi un comentariu mai jos.

 

Alatura-te celor peste 3333 de oameni din armata noastra de creiere cu muschi si vei primi testul care iti va spune daca ai sau nu minte de programator:

(nu trimit spam; te tin la curent cu noutatile)

 

 

Cu drag,

Florin





19 comments
adrianemanuel007
adrianemanuel007

As dori si eu niste cursuri sau carti despre cum sa invat C++ de la 0. La scoala nu prea explica bine profesorul si pe internet nu am gasit ceva promitator. Pe igotopia am invatat cate ceva despre Java, dar nu as mai vrea sa astept pana este gata si materialul cu c++ . Daca este cineva binevoitor imi poate trimite orice crede ca ma poate ajuta pe adrianemanuel00@yahoo.com  

ferdinand73
ferdinand73

Ceau!Sunt foarte incantat de ideea ta!Sunt incepator absolut in programare dar sunt fascinat de calculatoare asa ca mi-am zis ca merita sa incerc☺

Maria0808
Maria0808

Buna.Unde gasesc celelalte lectii de C?

Maria0808
Maria0808

Vei continua sa mai faci si alte lectii?Si daca da, imi poti spune in cat timp le vei posta?

Florin Birleanu
Florin Birleanu moderator

@Maria0808 Da, intentionez sa mai fac si alte lectii (caci am mai primit astfel de cereri). Dar din pacate nu pot sa estimez cand imi voi gasi timp sa lucrez si la acest proiect. Oricum, ramai pe faza! :-)

Maria0808
Maria0808

Bine.Multumesc.Mult spor :-)

Florin Birleanu
Florin Birleanu moderator

@alozius212 Poza asta ar merge mai bine la lectia despre pointeri, nu? (dar ai dreptate ca este vorba despre pointerii din C aici) :-)

AncaDitiu
AncaDitiu

Nu este prima experienta, de ani de zile ma lupt cu el, ce-i drept, niciodata nu l-am inteles dar nici n-am avut un "plan de lupta". Una peste alta, mi se pare imposibil de inteles de unul singur, si destul de greu daca explica cineva, accesibil daca este explicat foarte bine.

Dan Ionescu
Dan Ionescu

Finally. Dupa ce am cautat si gasit o gramada de carti  pe internet despre C toate in engleza bineinteles, m-am oprit la C Primer Plus de Stephen Prata. Cartea are 1067 de pagini are si exercitii cu rezolvari, sunt la capitolul 4 Siruri de caractere si formate de I/O. Merge cam greu caci trebuie sa-mi traduc din engleza in romana si apoi sa-mi traduc din romana in romana ... termenii si expresiile pe care nu totdeauna reusesc sa le potrivesc ca sa le inteleg. Deci o asemenea initiativa e beton si abia astept postarile tale. Sper sa nu fii zgarcit cu frecventa postarii lor. Si daca ai vreo carte in romana de recomandat ... just do it.


Toate bune !

Dan

cos_take
cos_take

Eu am sarit peste limbajul C si asta dintr-o intamplare .

Acum  vreo 10 ani gasit la o librarie cartea

C++. Ghid pentru incepatori - B. O. am cumparat-o si de atunci a inceput nebunia.

Tin minte ca am gasit un cod sursa simplu  scris in C si am reusit sa il modific in C++ ,asta a fost singurul contact cu limbajul C.

Sper sa nu imi fie prea grea trecerea de la C++ la C.

Felicitari Florine pentru aceasta initiativa minunata!

cos_take
cos_take

@EdyBoboc @cos_take Din pacate nu o mai am , nici macar in format electronic. Dar daca te intereseza limbajul C++, am alte carti in format PDF in limba romana pentru incepatori.

Dotachin
Dotachin

@cos_take Salut,as dori eu cartile daca se poate.Le poti trimite pe zedd0801@yahoo.com   Multumesc!

Dangmir8
Dangmir8

@Dotachin @cos_take Cine vrea sa invete C in mod INTERACTIV sa inceapa cu programarea unui MICROCONTROLLER PIC: sa aprinda/stinga un LED, sa trimita niste caractere la un modem GSM cu comenzi AT adica sa faca o telecomanda prin SMS, etc. 




Dangmir8
Dangmir8

@Dotachin @cos_take Apoi sa treaca la C++ creind o interfata care sa comunice prin portul serial cu microcontrollerul sau cu modemul GSM