Kufanya kazi katika lugha C. Lugha ya programu C (C). Hatua kuu za maendeleo

kozi ya vitendo

Ni nini?

Wakati mmoja (1991-1992), kuchagua lugha Si Kama lugha kuu ya programu kwa madarasa ya hisabati, mwandishi alikabiliwa na shida ya ukosefu wa vitabu vya kawaida ambavyo vinaweza kupendekezwa kwa watoto wa shule. Hii ilimlazimu kuandika maelezo yake ya mihadhara, ambayo yanaweza kuitwa "Kozi ya vitendo ya programu katika Si» - ilijumuisha habari ambayo mwandishi alihitaji sana katika mazoezi. Uzoefu wa miaka mingi wa kufundisha umeonyesha kuwa noti zinahitajika sana na hutumiwa sana na watoto wa shule na wahitimu.

Mazingira ya ukuzaji ni ganda la bure na la wazi la Dev-C++ ambalo linajumuisha mkusanyaji wa GCC.

Mwandishi atashukuru kwa maoni na ukosoaji wa kujenga kuhusu maudhui na muundo wa nyenzo hizi. Ukiona kosa au una mapendekezo, maoni, malalamiko, maombi au taarifa, andika.

Mkataba wa leseni

  1. 1) uchapishaji wa nyenzo kwa namna yoyote, ikiwa ni pamoja na kutuma nyenzo kwenye tovuti nyingine;
  2. 2) usambazaji wa nyenzo zisizo kamili au zilizobadilishwa;
  3. 3) kuingizwa kwa vifaa katika makusanyo kwenye vyombo vya habari yoyote;
  4. 4) kupata faida za kibiashara kutokana na uuzaji au matumizi mengine ya nyenzo.

Kupakua nyenzo kunamaanisha kuwa unakubali masharti ya makubaliano haya ya leseni.

Pakua

Muhtasari unasambazwa kwa uhuru katika umbizo PDF. Inahitaji Acrobat Reader isiyolipishwa ili kutazama. Muhtasari wa kozi umegawanywa katika sehemu 4:

  1. Utangulizi wa programu katika C (860 KB) 29.03.2014
    Kusoma miundo ya msingi ya lugha na mbinu za kuandika programu.
  2. Hifadhi na usindikaji wa data (792 KB) 21.11.2013
    Lugha C: safu, matrices, miundo, masharti ya tabia, miundo, kujirudia.
  3. Ukuzaji wa programu katika lugha ya C (937 KB) 01.03.2014
    Mbinu za usanifu wa programu, upangaji wa muundo, algorithms kamili, njia za nambari, modeli.
  4. Miundo ya data inayobadilika katika lugha ya C (KB 666) 11.06.2009
    Orodha, safu, miti, grafu.

Mawasilisho

Walimu na wanafunzi wanaweza kufaidika na mawasilisho kulingana na muhtasari huu. Wanaweza kupakuliwa kwenye ukurasa wa Mawasilisho.

Mbinu

Lengo kuu ni kuwafahamisha wanafunzi miundo msingi ya lugha Si: matanzi, kauli za masharti, taratibu. Utafiti wa sehemu zinazohusiana na michoro na uhuishaji umefanikiwa sana.

Kufanya kazi na graphics kupitia kivinjari, unaweza kutumia huduma ya mtandaoni ya Anton Denikin.

darasa la 8

Programu inajumuisha sehemu zifuatazo (sehemu ya muhtasari imeonyeshwa kwenye mabano): Mkusanyiko (II), Kufanya kazi na Faili (II), Mifuatano ya Tabia (II), Vipengee vinavyozunguka (III), Uundaji (III). Kipaumbele hasa hulipwa kwa utafiti wa algorithms kwa kufanya kazi na safu, ikiwa ni pamoja na utafutaji, upangaji, nk. Dhana ya ufanisi wa njia za hesabu imetolewa.

daraja la 9

Lengo kuu ni kusoma mbinu za maendeleo ya programu katika lugha Si. Wanafunzi hukamilisha kazi ya mtu binafsi, wakati ambao hujifunza kuunda grafu kwenye skrini, kufahamiana na mabadiliko ya mifumo ya kuratibu, njia za kusoma za kutatua hesabu, kufahamiana na njia za nambari, na kujifunza kuunda programu kwa usahihi (Sehemu ya 1-2 ya Sehemu). III). Moja ya kazi ni kujitolea kwa matumizi Njia ya Monte Carlo kuhesabu eneo la takwimu ngumu. Kutoka kwa sehemu mpya pia tunasoma Matrices (II), Mpangilio wa Kamba za Tabia (II). dhana ni kuletwa viashiria na shughuli rahisi zaidi nazo zinasomwa.

Daraja la 10

Kujifunza lugha Si hufikia kiwango kikubwa zaidi. Mada kuu - Usimamizi wa Kumbukumbu (II), Urejeshaji (II), Miundo (II). Imepangwa kusoma Pascal kama lugha ya pili ya programu. Kuanzia wakati huu na kuendelea, algorithms katika madarasa ya kinadharia huandikwa kwa lugha mbili.

Daraja la 11

Sio sifa za lugha ambazo husomwa kama algorithms. Sehemu kuu - Mbinu za nambari (III), Uundaji (III), Miundo ya data Inayobadilika (IV).

C lugha ya programu iliyotengenezwa na Dennis Ritchie mwanzoni mwa miaka ya 1970 ili kuunda mfumo wa uendeshaji wa UNIX. C inabakia kuwa lugha inayotumiwa sana kwa programu ya mfumo wa kuandika, na C pia hutumiwa kwa kuandika maombi. Kupanga programu kwa Kompyuta.

Upekee

Lugha ya programu C ina sifa kuu zifuatazo:

  • Kuzingatia dhana ya utaratibu wa programu, kwa urahisi wa programu katika mtindo uliopangwa, ni pamoja na kujifunza vizuri. C.
  • Ufikiaji wa kiwango cha maunzi kupitia matumizi ya viashiria kuteua maeneo ya kumbukumbu.
  • Vigezo kila mara hupitishwa kwa chaguo za kukokotoa kwa thamani, si kwa marejeleo.
  • Upeo wa viambatisho vya kileksika (lakini hauauni kufungwa au utendaji uliofafanuliwa ndani ya vitendaji vingine.)
  • Seti ya kawaida ya programu za maktaba ambazo hutoa vipengele ambavyo ni muhimu lakini sio lazima kabisa.
  • Matumizi ya kichakataji cha awali cha lugha, kichakataji C, kwa kazi kama vile kufafanua makro na kujumuisha faili nyingi za msimbo wa chanzo.
  • Utendaji wa "O" kwa waendeshaji wote

Utendaji wa lugha ya programu C umehakikishwa na ANS/ISO C99 C89/90 na kanuni ambazo hutaja wazi wakati mkusanyaji (au mazingira) anapotoa uchunguzi. Kupanga kwa dummies. Hati pia zinaonyesha ni tabia gani inayoweza kutarajiwa kutoka kwa msimbo ulioandikwa katika lugha ya programu ya C ambayo inalingana na kiwango.
Kwa mfano, kanuni ifuatayo, kulingana na kiwango, hutoa tabia isiyojulikana.

#include #include int main (batili) ( char *s = "Hujambo Ulimwengu!\\n"; strcpy (s, s+1); /* labda mtayarishaji alitaka kuondoa herufi ya kwanza kutoka kwa safu S = S + 1, */ kurudi 0;)

Kumbuka: Mtindo wa kuingiza katika msimbo wa programu hutofautiana kulingana na mapendekezo ya watengeneza programu. Tazama mtindo wa ujongezaji kwa maelezo zaidi katika sehemu ya misingi ya programu.
"Tabia Isiyobainishwa" inamaanisha kuwa kama matokeo programu inaweza kufanya chochote, ikiwa ni pamoja na kufanya kazi kama programu ilivyokusudia, au kutoa makosa mabaya kila wakati inapoendeshwa, au kusababisha mvurugo mmoja tu kila wakati kipindi cha arobaini na mbili cha programu kinapotokea, au kusababisha kuacha kufanya kazi kompyuta inapowashwa upya, n.k., ad infinitum.
Wakusanyaji wengine hawazingatii viwango vyovyote katika hali yao ya msingi, ambayo husababisha programu nyingi kuandikwa ambazo zitajumuisha tu na toleo fulani la mkusanyaji na kwenye jukwaa fulani (Windows, Linux au Mac).
Programu yoyote iliyoandikwa katika lugha ya kawaida ya utayarishaji C pekee itaundwa bila kubadilika kwenye jukwaa lolote ambalo lina utekelezaji ufaao wa kikusanya C.
Ingawa C kwa kawaida huitwa lugha ya kiwango cha juu, ni lugha ya "kiwango cha juu" tu ikilinganishwa na lugha ya mkusanyiko, lakini ni kiwango cha chini sana kuliko lugha nyingine nyingi za programu. Lakini tofauti na wengi, inatoa programu uwezo wa kudhibiti kabisa yaliyomo kwenye kumbukumbu ya kompyuta. C haitoi zana za kukagua mipaka ya safu au mkusanyiko wa taka otomatiki.
Mwongozo wa usimamizi wa kumbukumbu humpa kitengeneza programu uhuru zaidi wa kurekebisha utendakazi wa programu, ambayo ni muhimu hasa kwa programu kama vile viendeshaji vya kifaa. Hata hivyo, pia hurahisisha kuunda msimbo kimakosa na hitilafu zinazotokana na utendakazi mbovu wa kumbukumbu kama vile kufurika kwa bafa. Zana kadhaa zimeundwa ili kusaidia watayarishaji programu kuepuka hitilafu hizi, ikiwa ni pamoja na maktaba za kutekeleza ukaguzi wa mipaka ya safu na ukusanyaji wa taka, na maktaba za ukaguzi wa msimbo wa chanzo. Utumiaji wa makusudi wa programu zilizoandikwa kwa C kutoka mwanzo na zilizo na utaratibu wa kufurika kwa bafa ni kawaida sana katika virusi vingi vya kompyuta na ni maarufu sana kati ya wadukuzi wanaotengeneza minyoo ya kompyuta.
Baadhi ya mapungufu yaliyotambuliwa ya C yalizingatiwa na kuzingatiwa katika lugha mpya za programu inayotokana na C. Lugha ya programu ya Cyclone ina vipengele vya kulinda dhidi ya shughuli za kumbukumbu zenye makosa. C++ na Lengo C hutoa miundo iliyoundwa ili kuwezesha upangaji unaolenga kitu. Java na C# zimeongeza miundo ya programu inayolenga kitu pamoja na viwango vya juu vya uondoaji kama vile usimamizi wa kumbukumbu otomatiki.

Hadithi
Maendeleo ya awali ya C yalitokea kati ya 1969 na 1973 (kulingana na Ritchie, kipindi cha misukosuko zaidi mnamo 1972). Iliitwa "C" kwa sababu vipengele vingi vilitokana na lugha iliyotangulia iitwayo B, ambayo yenyewe iliitwa Bon baada ya mke wa Bonnie Ken Thompson.
Kufikia 1973, lugha ya programu ya C ilikuwa na nguvu ya kutosha kwamba kernel nyingi kutoka kwa mfumo wa uendeshaji wa Unix ziliandikwa upya. C Kwa kulinganisha, mfumo wa uendeshaji wa Multics unatekelezwa katika lugha ya A, Tripos OS (inayotekelezwa katika lugha ya BCPL. Mnamo 1978, Ritchie na Brian Kernighan walichapisha "Lugha ya Programu ya C" (kinachojulikana kama "karatasi nyeupe", au K&R. ) kwa miaka mingi , kitabu hiki kilitumika kama maelezo ya lugha, na hata leo, toleo hili ni maarufu sana kama mwongozo na kitabu cha kiada.
C ilijulikana sana nje ya Bell Labs kutoka miaka ya 1980, na kwa muda ilikuwa lugha kuu katika mifumo na programu za kompyuta ndogo. Bado ndiyo lugha inayotumika sana ya utayarishaji wa mfumo, na ni mojawapo ya lugha zinazotumika sana katika kompyuta kwa ajili ya elimu ya sayansi.
Mwishoni mwa miaka ya 1980, Bjarne Stroustrup na wengine katika Bell Labs walifanya kazi ya kuongeza miundo yenye mwelekeo wa kitu kwa C. Lugha waliyotengeneza pamoja na mkusanyaji wa kwanza wa Cfront iliitwa C++ (ambayo inaepuka swali la nini mrithi wa "B" " na "C" lazima iwe "D" au "P"). Hivi sasa, C++ ndiyo lugha inayotumiwa mara nyingi kwa matumizi ya kibiashara kwenye mfumo wa uendeshaji wa Microsoft Windows, ingawa C inabaki kuwa maarufu sana katika ulimwengu wa Unix.

Matoleo C

K&R C (Kernighan na Ritchie C)
C imebadilika mfululizo tangu kuanzishwa kwake katika Bell Labs. Mnamo 1978, toleo la kwanza la Lugha ya Kiprogramu ya Kernighan na Ritchie lilichapishwa. Ilianzisha huduma zifuatazo kwa matoleo yaliyopo ya C:

  • aina ya data ya muundo
  • aina ya data ndefu
  • aina ya data isiyo na saini
  • Opereta =+ ilibadilishwa kuwa += , na kadhalika (kwani =+ opereta aliendelea kusababisha makosa ya uchanganuzi wa kileksika katika C).

Kwa miaka kadhaa, toleo la kwanza la "Lugha ya Kupanga C" lilitumiwa sana kama uainishaji wa lugha ya ukweli. Toleo la C lililofafanuliwa katika kitabu hiki kwa ujumla linajulikana kama "K&R C" (Toleo la Pili linashughulikia kiwango cha ANSI C, kilichofafanuliwa hapa chini.)
K&R C mara nyingi huchukuliwa kuwa sehemu ya msingi ya lugha inayohitajika kwa mkusanyaji wa C. Kwa kuwa si vikusanyaji vyote vinavyotumika sasa vimesasishwa ili kusaidia kikamilifu ANSI C kwa ujumla, na msimbo wa K&R C ulioandikwa vyema pia ni sahihi kutoka. mtazamo wa ANSI. C. Kwa hivyo, K&R C inachukuliwa kuwa kiashiria cha chini kabisa cha kawaida ambacho watayarishaji programu wanapaswa kuzingatia ili kufikia uwezo wa kubebeka. Kwa mfano, toleo la bootstrap la mkusanyaji wa GCC, xgcc, limeandikwa katika K&R C. Hii ni kwa sababu majukwaa mengi yanayotumika na GCC hayakuwa na kikusanyaji sahihi cha ANSI C GCC, kwa hivyo ni utekelezaji mmoja tu wa msingi wa K&R C ulioandikwa .
Hata hivyo, ANSI C sasa inaungwa mkono na takriban watunzi wote wanaotumika sana. Msimbo mwingi wa C sasa umeandikwa kuanzia mwanzo tu ili kufaidika na vipengele vya lugha ambavyo vinapita zaidi ya upeo wa vipimo asili vya K&R.

ANSI C na ISO C
Mnamo 1989, C iliwekwa rasmi sanifu na ANSI katika ANSI X3.159-1989 "Lugha ya Kupanga C". Mojawapo ya malengo ya ANSI C ilikuwa kuunda K&R C iliyoboreshwa. Hata hivyo, kamati ya viwango pia ilijumuisha vipengele kadhaa vipya vilivyoanzisha ubunifu mwingi kuliko ulivyokuwa kawaida katika upangaji programu wakati wa kusanifisha lugha.
Baadhi ya vipengele vipya viliongezwa "isivyo rasmi" kwa lugha baada ya kuchapishwa kwa K&R, lakini kabla ya kuanza kwa mchakato wa ANSI C. Hizi ni pamoja na:

  • kazi tupu
  • kazi zinazorudisha muundo au aina za data za muungano
  • utupu * aina ya data
  • const qualifier kufanya kitu kusomeka pekee
  • panga majina ya uwanja katika nafasi tofauti ya majina kwa kila aina ya muundo
  • mgao wa kumbukumbu kwa aina za data za muundo
  • maktaba ya stdio na kazi zingine za maktaba za kawaida zilipatikana katika utekelezwaji mwingi (tayari ilikuwepo, angalau utekelezaji mmoja wakati wa uundaji wa K&R C, lakini haikuwa kiwango, na kwa hivyo haikuandikwa kwenye kitabu )
  • stddef.h faili ya kichwa na idadi ya faili zingine za vichwa vya kawaida.

Vitendaji kadhaa viliongezwa kwa C wakati wa mchakato wa kusanifisha ANSI, haswa mifano ya utendakazi (iliyokopwa kutoka C++). ANSI C pia ilianzisha seti ya kawaida ya vipengele vya maktaba.
Lugha ya programu C kulingana na kiwango cha ANSI, iliyo na marekebisho madogo, ilipitishwa kama kiwango cha ISO chini ya ISO 9899. Toleo la kwanza la ISO la waraka huu lilichapishwa mwaka wa 1990 (ISO 9899:1990).

C 99
Kufuatia mchakato wa usanifishaji wa ANSI, vipimo vya lugha C vimesalia bila kubadilika kwa muda fulani, huku C++ imeendelea kubadilika. (Kwa kweli, Marekebisho ya 1 ya Udhibiti yaliunda toleo jipya la lugha ya C mnamo 1995, lakini toleo hili halitambuliki mara chache.) Hata hivyo, viwango vilirekebishwa mwishoni mwa miaka ya 1990, na kusababisha kuundwa kwa ISO 9899:1999, ambayo ilichapishwa. mwaka 1999. Kiwango hiki kinajulikana kama "C99". Ilipitishwa kama kiwango cha ANSI mnamo Machi 2000.
Vipengele vipya vilivyoongezwa katika C99 ni pamoja na:

  • kazi zilizojengwa ndani
  • ikitoa kizuizi kwenye eneo la tamko tofauti (kama ilivyo kwa C++)
  • Kwa kuongezea aina kadhaa mpya za data, pamoja na int ya muda mrefu (kupunguza shida zinazohusiana na ubadilishaji kutoka kwa vichakataji 32-bit hadi 64-bit vinavyokuja juu ya programu nyingi za zamani, ambazo zilitabiri kutokamilika kwa usanifu wa x86), data ya wazi ya Boolean. aina, na aina inayowakilisha nambari changamano
  • safu za urefu tofauti
  • Usaidizi rasmi wa maoni yanayoanza na "/ /" kama katika C++ (ambayo watunzi wengi wa C89 tayari wameauni kama kiendelezi kisicho cha ANSI)
  • kazi kadhaa mpya za maktaba, pamoja na snprintf
  • faili kadhaa za vichwa vipya, pamoja na stdint.h

Nia ya kusaidia vipengele vipya vya C99 imechanganywa. Ingawa GCC na wakusanyaji kadhaa wa kibiashara wanaunga mkono vipengele vingi vipya vya C99, watunzi waliotengenezwa na Microsoft na Borland hawafanyi hivyo, na kampuni hizo mbili hazionekani kuwa na nia ya kuongeza usaidizi kama huo.

Mpango "Halo, Ulimwengu!" kwa lugha ya C
Matokeo rahisi yafuatayo ya programu "Hujambo, Ulimwengu" kwa pato la kawaida (kawaida skrini, lakini inaweza kuwa faili au kifaa kingine cha maunzi). Mabadiliko haya ya mpango yalionekana kwanza kwenye K&R.

#pamoja na int main(utupu) ( printf("Hujambo, Ulimwengu!\\n"); //comment return 0; /* toa maoni kwenye mistari kadhaa */ )

Kwa kawaida, maandishi ambayo si programu, lakini hutumika kama kidokezo kwa mtayarishaji programu, huandikwa kama maoni. // mstari mmoja au /* mistari mingi*/

Anatomy ya Programu ya C
Programu ya C ina vipengele na vigezo. C hufanya kazi kama subroutines na kazi za Fortran au taratibu na kazi za Pascal. Upekee wa kazi kuu ni kwamba programu huanza utekelezaji na kazi kuu. Hii ina maana kwamba kila programu C lazima iwe na kazi kuu.
Kazi kuu kwa kawaida huita vitendaji vingine vinavyosaidia kufanya kazi yake, kama vile printf katika mfano hapo juu. Msanidi programu anaweza kuandika baadhi ya kazi hizi, na wengine wanaweza kuitwa kutoka kwa maktaba. Katika mfano hapo juu, kurudi 0 kunatoa thamani ya kurudi kwa kazi kuu. Hii inaonyesha utekelezaji mzuri wa programu ya kupiga ganda la programu.
Chaguo za kukokotoa za C huwa na aina ya kurejesha, jina, orodha ya vigezo (au utupu katika mabano ikiwa hakuna), na chombo cha utendaji. Sintaksia ya utendaji kazi wa mwili ni sawa na opereta kiwanja.

Miundo ya udhibiti

Waendeshaji wa Kiwanja
Waendeshaji kiwanja katika C ni wa fomu
{ }
na hutumika kama kiini cha chaguo za kukokotoa na mahali ambapo vitendo vingi vinatarajiwa katika block moja.

Opereta wa tamko
Andika taarifa
;
ni usemi wa tamko hilo. Ikiwa hakuna usemi, basi kauli kama hiyo inaitwa taarifa tupu.

Opereta ya uteuzi
C ina aina tatu za taarifa ya uteuzi: aina mbili ikiwa na kauli ya kubadili.
Aina mbili za kama,
kama()
{
}
au
kama()
{
}
mwingine
{
}
Katika tamko la if, ikiwa usemi katika mabano si nzero au kweli, basi udhibiti hupita kwenye taarifa inayofuata if . Ikiwa kuna lingine katika kifungu, basi udhibiti utapitishwa kwa seti inayofuata ya vitendo baada ya nyingine ikiwa usemi kwenye mabano ni batili au si kweli.
Taarifa ya udhibiti wa kubadili - katika kesi hii, ni muhimu kuorodhesha maadili kadhaa ambayo kutofautiana ambayo hutumiwa kama uteuzi wa uteuzi inaweza kuchukua, ambayo lazima iwe na aina kamili. Kwa kila thamani ya chaguo tofauti, vitendo kadhaa vinaweza kufanywa ambavyo vimechaguliwa. Kila tawi la kitendo linaweza kuwekewa lebo ya kipochi, ambayo inaonekana kama kisanduku cha nenomsingi ikifuatwa na usemi usiobadilika na kisha koloni (:). Hakuna maadili yanayohusishwa na vibadilishi vinavyoweza kuwa na thamani sawa. Kunaweza pia kuwa na angalau lebo moja chaguo-msingi inayohusishwa na swith; udhibiti huhamishiwa kwenye lebo chaguo-msingi ikiwa hakuna thamani yoyote kati ya hizo zinazolingana na tofauti ya uteuzi, ambayo iko kwenye mabano baada ya kubadili . Katika mfano hapa chini, ikiwa kuna mechi kati ya kutofautisha kwa uteuzi na ya mara kwa mara, basi seti ya vitendo kufuatia koloni itatekelezwa.

Badili () (kesi: printf(); break; kesi: printf(); break; default:)

Marudio (mizunguko)
C ina aina tatu za waendeshaji kitanzi:

Fanya ( ) huku (); wakati () ( ) kwa (; ;) ( )

Katika taarifa za wakati na kufanya, mwili hutekelezwa mara kwa mara mradi tu thamani ya usemi inasalia kuwa isiyo na maana au kweli. Kwa muda, hali hiyo inaangaliwa kila wakati kabla ya utekelezaji kuanza; kwa kufanya, hali inaangaliwa baada ya mwili wa kitanzi kutekelezwa.
Ikiwa misemo yote mitatu iko kwenye tamko

Kwa (e1; e2; e3) s;

basi hii ni sawa na

E1; wakati (e2) (s; e3;)

Maneno yoyote kati ya matatu katika taarifa ya kitanzi yanaweza kuachwa. Kutokuwepo kwa usemi wa pili hufanya jaribio la hali ya wakati lisiwe batili kila wakati, na kuunda kitanzi kisicho na kikomo.

Waendeshaji wa Rukia
Opereta wa kuruka bila masharti. Kuna aina nne za kauli za kuruka katika C: goto, endelea, vunja, na rudisha.
Taarifa ya goto inaonekana kama hii:
enda kwa<метка>;
Ni lazima kitambulisho kielekeze kwenye lebo iliyo katika chaguo za kukokotoa za sasa. Udhibiti huhamishiwa kwa operator aliyewekwa alama.
Taarifa ya kuendelea inaweza tu kuonekana ndani ya kurudiwa kwa kitanzi na kulazimisha hatua zilizosalia kurukwa katika eneo la sasa na kuendelea hadi hatua inayofuata ya kitanzi. Hiyo ni, katika kila kauli

Wakati (maneno) ( /* ... */ endelea; ) fanya ( /* ... */ endelea ; ) huku ( usemi); kwa (hiari-expr; optexp2; optexp3) ( /* ... */ endelea ; )

Taarifa ya mapumziko inatumika kutoka kwa, wakati, fanya, au kubadili kitanzi. Udhibiti huhamishiwa kwa opereta kufuatia ile ambayo kitendo kilikatizwa.
Chaguo za kukokotoa hurudi kwenye eneo ambalo thamani iliitwa kwa kutumia taarifa ya kurejesha. Kurudi kunafuatwa na usemi ambao thamani yake inarudishwa mahali ilipoitwa. Ikiwa fomula ya kukokotoa haina taarifa ya kurejesha, basi ni sawa na kurejesha bila usemi. Kwa hali yoyote, thamani ya kurudi haijafafanuliwa.
Agizo la Maombi ya Opereta katika C89

  • () ->. + + - (CAST) waendeshaji Postfix
  • + + - * & ~! + - UkubwaWa waendeshaji wasio wa kawaida
  • * /% Viendeshaji Vizidishi
  • + - Waendeshaji nyongeza
  • << >> Waendeshaji Shift
  • < <= >>= Waendeshaji uhusiano
  • =! == Waendeshaji usawa
  • & Bitwise na
  • ^ Bitwise XOR
  • | Bitwise ikijumuisha, au
  • & & Mantiki na
  • | | Mantiki au
  • ?: Mwendeshaji wa masharti
  • = += -= *= /= %= <<= >>=
  • & = | = ^ Waendeshaji mgawo =
  • , Opereta wa koma

Tamko la Data
Aina za data za msingi
Maadili katika Na faili za kichwa hufafanua safu za aina kuu za data. Masafa ya aina mbili za kuelea, mbili na ndefu kwa ujumla hutajwa katika kiwango cha IEEE 754.

Safu
Ikiwa tofauti inatangazwa kwa kutumia mabano ya mraba () pamoja na dalili, basi safu inachukuliwa kutangazwa. Kamba ni safu za wahusika. Zinaisha na herufi tupu (iliyowakilishwa katika C kama "\0", herufi isiyofaa).
Mifano:
int myvector;
char mystring ;
float mymatrix = (2.0 , 10.0, 20.0, 123.0, 1.0, 1.0)
char leksikoni; /* mistari 10000, ambayo kila moja inaweza kuwa na upeo wa herufi 300. */
ndani a;
Mfano wa mwisho huunda safu ya safu, lakini inaweza kutibiwa kama safu nyingi kwa madhumuni mengi. Ili kufikia maadili 12 ya int ya safu "a", unaweza kutumia simu ifuatayo:

a a a a
a a a a
a a a a

Vibandiko
Ikiwa kutofautiana kunatanguliwa na nyota (*) katika tamko lake, basi inakuwa pointer.
Mifano:
int *pi; /* kielekezi kwa nambari kamili */
int *api; /* safu ya viashiria vya aina kamili */
char **argv; kielekezi kwa kielekezi kwa char */

Thamani katika anwani imehifadhiwa katika kutofautiana kwa pointer na inaweza kupatikana katika programu kwa kupiga kutofautiana kwa pointer na asterisk. Kwa mfano, ikiwa taarifa ya kwanza katika mfano hapo juu, *pi ni int . Hii inaitwa "dereferencing" pointer.
Opereta mwingine, & (ampersand), aitwaye kiendesha-anuani, hurejesha anwani ya kigezo, safu au chaguo za kukokotoa. Kwa hivyo, kwa kuzingatia hapo juu
int i, *pi; /* tangaza nambari kamili na kielekezi kwa nambari kamili */
pi =

I na *pi zinaweza kutumika kwa kubadilishana (angalau hadi pi iwekwe kwa kitu kingine).

Kamba
Kufanya kazi na masharti huna haja ya kuingiza maktaba, kwa sababu katika maktaba ya kawaida C, chaguo za kukokotoa tayari zipo ili kuchakata mifuatano na vizuizi vya data kana kwamba ni safu za char.

Kazi muhimu zaidi za kamba:

  • strcat(dest, source) - inaongeza chanzo cha kamba hadi mwisho wa mwisho wa kamba
  • strchr(s, c) - hupata zamu ya kwanza ya mhusika c kuwa kamba s na kurudisha pointer kwake au kielekezi tupu ikiwa c haipatikani.
  • strcmp (a, b) - inalinganisha masharti na b (mpangilio wa lexical); hurejesha hasi ikiwa b ni kidogo, 0 ikiwa ni sawa, chanya ikiwa kubwa zaidi.
  • strcpy(dest, source) - kunakili chanzo cha kamba kwenye dest ya kamba
  • strlen(st) - inarudisha urefu wa kamba st
  • strncat (dest, source, n) - huongeza upeo wa wahusika n kutoka kwa kamba ya chanzo hadi mwisho wa kamba ya dest; herufi baada ya herufi batili hazijanakiliwa.
  • strncmp (a, b, n) - inalinganisha upeo wa herufi n kutoka kwa kamba na b (utaratibu wa lexical); hurejesha hasi ikiwa b ni kidogo, 0 ikiwa ni sawa, chanya ikiwa kubwa zaidi.
  • strncpy(dest, source, n) - inakili upeo wa herufi n kutoka kwa kamba chanzo hadi kamba ya mwisho
  • strrchr(s, c) - hupata mfano wa mwisho wa mhusika c kwenye kamba s na kurudisha kielekezi kwake au kielekezi tupu ikiwa c haipatikani.

Kazi zisizo muhimu sana za kamba:

  • strcoll(s1, s2) - linganisha kamba mbili kulingana na eneo la mlolongo ulioamriwa
  • strcspn(s1, s2) - inarudisha faharisi ya herufi ya kwanza katika s1 , ambayo inalingana na herufi yoyote katika s2
  • strerror(err) - inarudisha kamba na ujumbe wa makosa unaoendana na msimbo katika makosa
  • strpbrk(s1, s2) - inarudisha kielekezi kwa herufi ya kwanza katika s1 inayolingana na herufi yoyote katika s2, au kielekezi kisichopatikana ikiwa hakipatikani.
  • strspn(s1, s2) - inarudisha faharisi ya herufi ya kwanza katika s1 inayolingana na asiye mhusika katika s2
  • strstr(st, subst) - hurejesha kielekezi kwa tukio la kwanza la safu ndogo katika st, au kielekezi kisicho na maana ikiwa hakuna kamba ndogo kama hiyo.
  • strtok(s1, s2) - inarudisha pointer kwa ishara katika s1 iliyotenganishwa na herufi katika s2.
  • strxfrm(s1, s2, n) - inabadilisha s2 hadi s1 kwa kutumia sheria za eneo

Faili I/O Katika lugha ya programu C, ingizo na pato hukamilishwa kupitia kikundi cha vitendaji katika maktaba ya kawaida. Katika ANSI/ISO C, kazi hizo ambazo zimefafanuliwa ndani kichwa.
Mitiririko mitatu ya kawaida ya I/O
ingizo la kawaida la stdin
pato la kawaida la stdout
stderr kosa la kawaida

Mitiririko hii hufunguliwa na kufungwa kiotomatiki na wakati wa utekelezaji; haihitaji kufunguliwa wazi.
Mfano ufuatao unaonyesha jinsi mpango wa kawaida wa kuchuja barua umeundwa:

//Faili za kichwa, kwa mfano, #include

Kupitisha hoja kwa mstari wa amri
Vigezo vilivyowasilishwa kwenye mstari wa amri hupitishwa kwa programu C na vigezo viwili vilivyofafanuliwa - idadi ya hoja za mstari wa amri huhifadhiwa katika kutofautiana kwa argc, na hoja za kibinafsi zimehifadhiwa kama safu za tabia katika safu ya pointer argv. Kwa hiyo uzindua programu kutoka kwa mstari wa amri katika fomu
Myprog p1 p2 p3
itatoa matokeo sawa na (kumbuka: hakuna hakikisho kwamba safu mlalo za mtu binafsi zinaambatana):
Vigezo vya mtu binafsi vinaweza kufikiwa kwa kutumia argv , argv , au argv .

C maktaba
Vipengele vingi vya lugha ya C hutolewa na maktaba ya kawaida ya C. Utekelezaji "uliopangishwa" hutoa maktaba zote za C. (Utekelezaji mwingi unapangishwa, lakini zingine hazikusudiwa kutumiwa na mfumo wa uendeshaji). Ufikiaji wa maktaba unafikiwa, miongoni mwa mambo mengine, kwa vichwa vya kawaida kupitia #include preprocessor maagizo. Tazama maktaba za kawaida za ANSI C, GCC (Mkusanyaji wa GNU C).

Mafunzo haya ni ya kila mtu, iwe wewe ni mgeni katika upangaji programu au una uzoefu wa kina wa upangaji programu katika lugha zingine! Nyenzo hii ni ya wale wanaotaka kujifunza lugha za C/C++ kutoka kwa misingi yake hadi miundo ngumu zaidi.

C ++ ni lugha ya programu, ujuzi wa lugha hii ya programu itawawezesha kudhibiti kompyuta yako kwa kiwango cha juu. Kwa kweli, utaweza kuifanya kompyuta kufanya chochote unachotaka. Tovuti yetu itakusaidia kujua lugha ya programu ya C++.

Ufungaji /IDE

Jambo la kwanza kabisa unapaswa kufanya kabla ya kuanza kujifunza C++ ni kuhakikisha kuwa una IDE - mazingira jumuishi ya maendeleo (programu ambayo utapanga). Ikiwa huna IDE, basi hapa kwenda. Mara tu unapoamua juu ya uchaguzi wa IDE, usakinishe na ufanyie mazoezi ya kuunda miradi rahisi.

Utangulizi wa C++

Lugha ya C++ ni seti ya amri zinazoiambia kompyuta nini cha kufanya. Seti hii ya amri kawaida huitwa msimbo wa chanzo au msimbo tu. Amri ni ama "kazi" au "maneno muhimu". Maneno muhimu (maneno yaliyohifadhiwa ya C/C++) ndio vijenzi vya msingi vya lugha. Kazi ni vizuizi changamani vya ujenzi kwa sababu zimeandikwa kulingana na vitendaji rahisi zaidi - utaona hili katika programu yetu ya kwanza, ambayo imeonyeshwa hapa chini. Muundo huu wa utendaji unafanana na yaliyomo kwenye kitabu. Maudhui yanaweza kuonyesha sura za kitabu, kila sura kwenye kitabu inaweza kuwa na maudhui yake yenye aya, kila aya inaweza kuwa na vifungu vyake. Ingawa C++ hutoa kazi nyingi za kawaida na maneno yaliyohifadhiwa ambayo unaweza kutumia, bado kuna haja ya kuandika vitendaji vyako mwenyewe.

Je, inaanza katika sehemu gani ya programu? Kila programu katika C ++ ina kazi moja, inaitwa kazi kuu au kuu, utekelezaji wa programu huanza na kazi hii. Kutoka kwa kazi kuu, unaweza pia kupiga simu kazi nyingine yoyote, iwe ni zile tulizoandika au, kama ilivyoelezwa hapo awali, iliyotolewa na mkusanyaji.

Kwa hivyo unafikiaje Vipengele hivi vya Kawaida? Ili kufikia vipengele vya kawaida vinavyokuja na mkusanyaji, unahitaji kujumuisha faili ya kichwa kwa kutumia maagizo ya kichakataji awali - #include . Kwa nini hii inafaa? Wacha tuangalie mfano wa programu ya kufanya kazi:

#pamoja na << "Моя первая программа на С++\n"; cin.get(); }

Wacha tuchunguze kwa undani vipengele vya programu. #include ni maagizo ya "preprocessor" ambayo humwambia mkusanyaji kuweka msimbo kutoka kwa faili ya kichwa cha iostream kwenye programu yetu kabla ya kuunda inayoweza kutekelezwa. Kwa kuunganisha faili ya kichwa kwenye programu, unapata ufikiaji wa vitendaji vingi tofauti ambavyo unaweza kutumia katika programu yako. Kwa mfano, mwendeshaji wa cout anahitaji iostream . Line kutumia namespace std; humwambia mkusanyaji kutumia kikundi cha kazi ambazo ni sehemu ya maktaba ya kawaida ya std. Laini hii pia inaruhusu programu kutumia waendeshaji kama vile cout . Nusu koloni ni sehemu ya sintaksia ya C++. Inamwambia mkusanyaji kuwa huu ndio mwisho wa amri. Utaona baada ya muda mfupi kwamba semicolons hutumiwa kusitisha amri nyingi katika C++.

Mstari unaofuata muhimu wa programu ni int main(). Mstari huu humwambia mkusanyaji kwamba kuna chaguo la kukokotoa linaloitwa kuu na kwamba chaguo la kukokotoa hurejesha nambari kamili. Viunga vilivyopinda ( na ) vinaashiria mwanzo (na mwisho) wa chaguo la kukokotoa. Braces curly pia hutumiwa katika vitalu vingine vya kanuni, lakini daima zinaonyesha jambo moja - mwanzo na mwisho wa kuzuia, kwa mtiririko huo.

Katika C ++, kitu cha cout kinatumika kuonyesha maandishi (yaliyotamkwa "C out"). Anatumia ishara<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Amri inayofuata ni cin.get() . Hii ni simu nyingine ya chaguo la kukokotoa ambayo inasoma data kutoka kwa mtiririko wa data ya ingizo na kusubiri kitufe cha ENTER kibonyezwe. Amri hii huzuia kidirisha cha kiweko kufungwa hadi kitufe cha ENTER kibonyezwe. Hii inakupa muda wa kuona matokeo ya programu.

Baada ya kufikia mwisho wa kazi kuu (brace ya kufunga ya curly), programu yetu itarudisha thamani 0 kwenye mfumo wa uendeshaji. Thamani hii ya kurejesha ni muhimu kwa sababu kwa kuichanganua, Mfumo wa Uendeshaji unaweza kuhukumu ikiwa programu yetu imekamilika kwa mafanikio au la. Thamani ya kurudi ya 0 inamaanisha kufaulu na inarejeshwa kiotomatiki (lakini kwa aina ya data ya int tu; vitendaji vingine vinakuhitaji urudishe thamani mwenyewe), lakini ikiwa tungetaka kurudisha kitu kingine, kama vile 1, tungelazimika kuifanya. kwa mikono.

#pamoja na kutumia nafasi ya majina std; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Ili kuunganisha nyenzo, chapa msimbo wa programu kwenye IDE yako na uiendeshe. Mara tu programu ikiendesha na umeona matokeo, jaribu kidogo na taarifa ya cout. Hii itakusaidia kuzoea lugha.

Hakikisha kutoa maoni kwenye programu zako!

Ongeza maoni kwa nambari yako ili kuifanya iwe wazi zaidi sio kwako tu bali pia kwa wengine. Mkusanyaji hupuuza maoni wakati wa kutekeleza nambari, hukuruhusu kutumia idadi yoyote ya maoni kuelezea nambari halisi. Ili kuunda maoni, tumia au // , ambayo humwambia mkusanyaji kuwa mstari uliobaki ni maoni, au /* na kisha */ . Unapojifunza kupanga, ni muhimu kuweza kutoa maoni kwenye sehemu za msimbo ili kuona jinsi matokeo ya programu yanabadilika. Unaweza kusoma kwa undani kuhusu mbinu ya kutoa maoni.

Nini cha kufanya na aina hizi zote za vigezo?

Wakati mwingine inaweza kuwa ya kutatanisha kuwa na aina nyingi tofauti wakati baadhi ya aina tofauti zinaonekana kuwa zisizo na maana. Ni muhimu sana kutumia aina sahihi ya kutofautisha, kwani vigeu vingine vinahitaji kumbukumbu zaidi kuliko vingine. Zaidi ya hayo, kutokana na jinsi zinavyohifadhiwa kwenye kumbukumbu, nambari za pointi zinazoelea, aina za data za kuelea na mbili ni "sio sahihi" na hazipaswi kutumiwa wakati thamani kamili ya nambari inahitaji kuhifadhiwa.

Kutangaza Vigeu katika C++

Ili kutangaza tofauti, tumia aina ya sintaksia<имя>; . Hapa kuna mifano ya matamko tofauti:

Nambari ya Int; tabia ya char; kuelea num_float;

Inaruhusiwa kutangaza vigezo kadhaa vya aina moja kwenye mstari mmoja; kwa kufanya hivyo, kila mmoja wao lazima atenganishwe na koma.

Int x, y, z, d;

Ikiwa umeangalia kwa karibu, unaweza kuwa umeona kwamba tamko la kutofautiana daima linafuatiwa na semicolon. Unaweza kujifunza zaidi kuhusu mkataba "juu ya kutaja vigezo".

Makosa ya kawaida wakati wa kutangaza vigezo katika C++

Ukijaribu kutumia kigezo ambacho hakijatangazwa, programu yako haitajumuisha na utapokea ujumbe wa makosa. Katika C++, maneno yote ya lugha, vitendaji vyote, na anuwai zote ni nyeti kwa kesi.

Kutumia Vigezo

Kwa hiyo sasa unajua jinsi ya kutangaza kutofautiana. Hapa kuna mpango wa mfano unaoonyesha matumizi ya kutofautisha:

#pamoja na kutumia nafasi ya majina std; int main() ( int number; cout<< "Введите число: "; cin >> nambari; cin.puuza(); koti<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Hebu tuangalie mpango huu na tuchunguze kanuni zake, mstari kwa mstari. Neno kuu int linaonyesha kuwa nambari ni nambari kamili. cin >> kitendakazi husoma thamani katika nambari , mtumiaji lazima abonyeze ingiza baada ya nambari iliyoingizwa. cin.ignore() ni chaguo la kukokotoa ambalo husoma herufi na kuipuuza. Tumepanga ingizo letu kwenye programu; baada ya kuingiza nambari, tunabonyeza kitufe cha ENTER, ishara ambayo pia hupitishwa kwa mkondo wa kuingiza. Hatuitaji, kwa hivyo tunaitupa. Kumbuka kwamba kigezo kilitangazwa kama aina kamili, ikiwa mtumiaji atajaribu kuingiza nambari ya desimali, itapunguzwa (yaani, sehemu ya desimali ya nambari hiyo itapuuzwa). Jaribu kuingiza nambari ya decimal au mlolongo wa wahusika, unapoendesha programu ya mfano, jibu litategemea thamani ya pembejeo.

Kumbuka kwamba wakati wa kuchapisha kutoka kwa kutofautiana, nukuu hazitumiwi. Kutokuwepo kwa nukuu humwambia mkusanyaji kuwa kuna tofauti, na kwa hivyo kwamba programu inapaswa kuangalia thamani ya kutofautisha ili kuchukua nafasi ya jina la kutofautisha na thamani yake wakati wa utekelezaji. Taarifa nyingi za mabadiliko kwenye mstari huo huo zinakubalika kikamilifu na matokeo yatafanywa kwa mpangilio sawa. Unapaswa kutenganisha maandishi ya kamba (kamba zilizoambatanishwa katika nukuu) na vigeu, ukitoa kila opereta wake wa zamu<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Kubadilisha na kulinganisha maadili

Bila shaka, bila kujali ni aina gani ya data unayotumia, vigezo havivutii sana bila uwezo wa kubadilisha thamani yao. Ifuatayo inaonyesha baadhi ya waendeshaji kutumika kwa kushirikiana na vigezo:

  • *kuzidisha,
  • - kutoa,
  • + nyongeza,
  • / mgawanyiko,
  • = kazi,
  • == usawa,
  • > zaidi
  • < меньше.
  • != zisizo sawa
  • >= kubwa kuliko au sawa na
  • <= меньше или равно

Waendeshaji wanaofanya kazi za hisabati lazima watumike upande wa kulia wa ishara ya mgawo ili kugawa matokeo kwa kutofautisha upande wa kushoto.

Hapa kuna baadhi ya mifano:

A = 4 * 6; // tumia maoni ya mstari na semicolon, a ni sawa na 24 a = a + 5; // sawa na jumla ya thamani ya asili na tano a == 5 // haigawi tano, huangalia ikiwa ni sawa na 5 au la.

Mara nyingi utatumia == katika ujenzi kama vile taarifa za masharti na vitanzi.

A< 5 // Проверка, a менее пяти? a >5 // Angalia, ni zaidi ya tano? a == 5 // Kuangalia, ni sawa na tano? a != 5 // Angalia, si sawa na tano? a >= 5 // Angalia ikiwa a ni kubwa kuliko au ni sawa na tano? a<= 5 // Проверка, a меньше или равно пяти?

Mifano hii haionyeshi matumizi ya ishara za kulinganisha kwa uwazi, lakini tunapoanza kusoma waendeshaji wa uteuzi, utaelewa kwa nini hii ni muhimu.

Lugha ya programu C (inayotamkwa "C") inaweza kuelezewa kuwa ya ulimwengu wote, ya kiuchumi, na seti kamili ya waendeshaji, na mtiririko wa udhibiti wa kisasa. Lugha hii haiwezi kuitwa "lugha kubwa", wala haidai kuwa "lugha ya kiwango cha juu"; haikuundwa kwa kazi yoyote maalum; badala yake, walijaribu kuifanya iwe bora iwezekanavyo kwa matumizi yoyote. . Mchanganyiko huu wa kuvutia wa mawazo uliowekwa katika lugha ya programu ya C umefanya iwe rahisi sana na yenye ufanisi zaidi kwa matatizo mbalimbali kuliko lugha zingine, labda hata za juu zaidi.

Uunganisho kati ya "C" na UNIX OS ni karibu sana, kwani lugha hii iliendelezwa pamoja na "UNIX" na programu nyingi za mfumo huu zimeandikwa ndani yake. Wakati huo huo, C wakati mwingine huitwa lugha kwa sababu inaaminika kuwa ni rahisi kuunda mifumo ya uendeshaji kwa msaada wake; kwa kweli, programu za usindikaji wa database na michezo zinaweza kuandikwa ndani yake kwa mafanikio sawa.

C ni lugha ya kiwango cha chini cha programu, lakini haupaswi kufikiria kuwa hii ni mbaya; kwa kweli, inafanya kazi tu na vitu sawa ambavyo kompyuta yoyote hufanya kazi nayo kila wakati, ikiwa na alama, anwani na nambari. Katika kesi hii, vitu vyote vimeunganishwa, ikilinganishwa au kupunguzwa kwa kutumia shughuli za kawaida za kimantiki na za hesabu zinazojulikana kwa kompyuta.

Ingawa vitendaji vya kufanya kazi na vitu vyenye mchanganyiko vinakuwa kawaida katika ulimwengu wa usimbaji na vimejengwa katika lugha zote za kisasa za programu, C, tofauti na zingine, haiwezi kufanya kazi na vitu kama vile kamba, orodha, safu au seti. Haina mlinganisho wa shughuli za PL/1 kwenye mifuatano na safu nzima.

C hufanya kazi na kumbukumbu kwa kutumia rundo na ufafanuzi wa takwimu; C haina uwezo mwingine wa usimamizi wa kumbukumbu; hutapata "lundo" au "mkusanyiko wa takataka" ndani yake, kama Pascal au Algol 68 wanaweza kufanya.

Na hata mifumo ya msingi zaidi, pembejeo/pato, hazijatolewa na lugha ya C; hautapata waendeshaji wa Soma na Andika ndani yake; pia hakuna vitendaji vilivyojumuishwa vya kufanya kazi na mfumo wa faili. Shughuli hizo za kiwango cha juu hutolewa kwa kutumia maktaba ya programu-jalizi.

Pia, lugha ya programu ya C itakataa kufanya kazi ikiwa unahitaji multiprogramming, maingiliano, shughuli za sambamba, nk. Ina uwezo kwa ajili ya kazi rahisi na mfululizo, kipengele chake: mizunguko, hundi, kambi na subroutines.

Wengine wanaweza kushangazwa na ubahili kama huo wa pesa zinazotolewa kwa waandaaji wa programu ("kwa nini ni lazima niite simu kila wakati ninahitaji kulinganisha kamba kadhaa!"), lakini kwa upande mwingine, ni shukrani kwa uokoaji kama huo. katika fedha ambazo programu zilizoandikwa kwa C hupata faida halisi ya kasi.

Kwa upande mwingine, idadi ndogo ya waendeshaji hupunguza muda unaohitajika kuwakariri, na utahitaji tu kurasa chache ili kuzifunika zote. Na kama inavyoonyesha mazoezi, mkusanyaji na "C" ni chombo cha kuunganishwa ambacho ni rahisi kuandika. Ikiwa unatumia zana za kisasa, mkusanyaji wa kompyuta mpya kabisa atakuwa tayari katika miezi michache tu, licha ya ukweli kwamba 80% ya kanuni zake zitakuwa sawa na kanuni za matoleo ya awali. Kutokana na kipengele hiki, lugha ya programu ya C inachukuliwa kuwa ya simu ya mkononi sana. Na ufanisi wake ni kwamba haina maana kuandika programu zozote ambazo ni muhimu kwa utendaji katika mkusanyiko, kama ilivyokuwa hapo awali. Mfano bora wa hii ni UNIX OS yenyewe, ambayo 90% imeandikwa ndani na kwa C, karibu kabisa iliyoundwa na watengenezaji programu wengi katika lugha hii nzuri, ambayo kwa sasa inachukuliwa kuwa lugha ya kwanza ya programu ulimwenguni.