JavaRush /Java Blog /Random-TK /CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3...
Masha
Dereje

CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar)

Toparda çap edildi
cs50 rus goşmaça materiallarynda 1-nji hepde wezipeleri

Birinji hepdäniň maksatlary

  • Esasy Linux buýruklary bilen tanyşyň
  • Esasy C sintaksisini öwreniň we birnäçe meseläni çözüň
  • Has aýdyň pikirlenip başlaň =)
IDE CS50
Işleri ýerine ýetirmek üçin CS50 bulutda IDE (Toplumlaýyn Ösüş gurşawy) hödürleýär. Ony ulanmak üçin edX platformasynda hasap açyň we asyl kurs üçin hasaba alyň . Ondan soň:
1. cs50.io-a giriň, sanawdan edX saýlaň, giriş we parolyňyzy giriziň, Ibermek düwmesine basyň . EdX hasaby maglumatlaryňyzy giriziň, ID.CS50.NET-e gaýdyp basyň . cs50.io 3. Biz garaşýarys: wirtual giňişligiňiz döredilýär. wirtual giňişlik cs50 4. oneerine ýetirildi! cs50 ide
Buýruk setiri we CS50 IDE işe girizmek
CS50 IDE penjiresiniň aşagynda, Terminal goýmasynda terminal penjire ýa-da buýruk setiri paneli bar. Bu ýerde setir buýruklaryny girizip bilersiňiz: penjire interfeýsi ýaly bir zady edip bilersiňiz, mysal üçin programmalary işe girizip, faýllary pozup we döredip, programma üpjünçiligini gurup bilersiňiz. Hiç haçan buýruk setiri bilen işlemedik bolsaňyz, bu usul kyn ýaly bolup görünýär: buýruklary ýatda saklamaly we nyşanlara we düwmelere basmagyň ýerine ýazmaly. Belli bir derejede bu dogry, soň penjire interfeýsi oýlanyp tapyldy. Şeýle-de bolsa, buýruk setiri ähli operasiýa ulgamlarynda bar we administratorlar ony gowy görýärler. Hemmesi, sebäbi käwagt onsuz ýaşap bolmaz. Terminaldaky IDE penjiresinde syrly bir setiri görersiňiz: ulanyjy ady: ~ / iş meýdany $ "ulanyjy adynyň" ýerine awtomatiki usulda döredilen at bolar (hasaba alyş maglumatlaryňyz esasynda). Terminal penjiresine basyň, update50 Enter ýazyň. Buýruk ulgamyň täzelenmegini soraýar. Terminalda gurnama işini beýan edýän setirleriň peýda boljakdygyny görersiňiz. Täzelenmäni doly görýänçäňiz CS50 IDE ýapmaň ! . Ondan soň, adyňyz ýazylan setir ýene peýda bolar.
IDE-de işlemek
Faýllaryňyzyň saklanjak bukjasyny döredeliň. CS50 IDE- iň ýokarky çep burçundaky work / iş meýdançasyna (kök bukjanyňyza) sag basyň , Täze bukjany saýlaň . Pset1 bukjasynyň adyny üýtgediň (adyny ýalňyş ýazan bolsaňyz, bukjanyňyza sag basyň we Adyny üýtgediň ). Soňra pset1 bukjasyna sag basyň we Täze Faýly saýlaň . Işlenmedik faýl peýda bolýar, geliň salam.txt . Salam.txt-a iki gezek basyň. CS50 IDE-de ýazyp boljak sag tarapda täze tab we meýdan görersiňiz. Muny ýerine ýetiren bolsaňyz, goýmadaky faýl adynyň öňünde peýda bolýan ýyldyzjyk (*) nyşanyna üns beriň - faýla üýtgeşmeler girizilen, ýöne ýatda saklanmadyk görkeziji. * Faýl> Saklamak ýa-da buýruk + S (Apple maşynlarynda) ýa-da Ctrl + S (HK-lerde) ulanyp faýly ýazdyryň . Teryldyzjyk ýok bolmaly. Faýlyň nirede bolmalydygyny barlap göreliň. Geliň, buýruk setirini ulanyp edeliň, öwrenişmegiň wagty geldi :). Öňküsi ýaly, terminaldaky işjeň setir şuňa meňzeýär: Iş meýdany - häzirki iş katalogy (iş gurşawynda açyk). Tilde (~) kök katalogyny görkezýär (iş meýdany şol ýerde). Terminaldaky iş meýdany CS50 IDE-iň ýokarky çep burçundaky ~ / iş meýdançasynyň nyşany bilen birmeňzeşdir. Amal edeliň. Terminalyň islendik ýerine basyň we buýruk setirini ýazyň we Enter basyň. Bu iki kiçi harp - "sanaw" üçin gysga - häzirki iş meýdançasynyň bukjasynyň içinde ýerleşýän faýllaryň we bukjalaryň sanawyny getirer. Beýleki zatlaryň arasynda döreden pset1-i görersiňiz ! Indi buýrugy ulanyp bukjamyzy açalyň. Has köp söz bilen ýazýarys : cd (katalogy üýtgetmek) buýrugy işjeň katalogy üýtgedýär, biziň ýagdaýymyzda işjeň setir üýtgedi Bu siziň katalogdadygyňyzy tassyklaýar (setir “Men iş ýeriniň içinde pset1-de” kök bukjasyndaky ~ ") bilen görkezilen bukja baglanyşyk, ýöne salam.txt-iň nirede bolmalydygyny tassyklaýar. Görnüşi Diňe cd buýrugyny ýazsaňyz, ýöne argument bermeseňiz (ýagny gitmeli bukjanyň ady), size gaýdyp berer deslapky kök katalogyna, şonuň üçin işjeň setirde aşakdaky suraty görersiňiz: pset1 bukjasyna dolanmak üçin aýlaň cs50 ide papkanyň adyny üýtgetmekcs50 ideCS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace we Enter basyň. Soňra cd pset1 ýene giriň. Şeýle hem bu iki buýrugy bir, has ygtybarly birine çalşyp bilersiňiz: cd workspace/pset1
Salam, C!
Ahyrsoňy bu pursat geldi! Programmirlemäge başlalyň. IDE-de pset1 bukjamyzyň içinde hello.c atly bir faýl dörediň (giňeltme zerur), ony täze goýmada açyň (muny öňki abzasdan nädip etmelidigiňizi ýadyňyzda saklaýarys). Möhüm! Harplar kiçi harp bilen bolmaly, Linux baş harp bilen ýazylýar. Salam.c we hello.c dürli faýllar. CS50 IDE penjiresiniň sag tarapynda aşakda görşüňiz ýaly tekst ýazyň. Hawa, göçürip bilersiňiz, ýöne ýazmak has peýdaly. Harplar dürli reňkler, sebäbi CS50 IDE sintaksis aýratynlygy bar. Has gowy okamak üçin tekst bloklaryny reňk bilen görkezýär. Reňkler faýlyň özünde saklanmaýar, diňe IDE-de görünýär. Eger olar bar bolsa, IDE C-ä düşünýär we faýl giňeltmesinde (* .c) C bolandygyny görkezdiňiz. Şol bir faýly hello.txt diýip atlandyran bolsaňyz, tekst bir reňkde bolardy. Everythinghli zady mysaldaky ýaly ýazandygyňyzy anyklaň, ýogsam ilkinji näsazlygy tutarsyňyz =). Againene-de ünsüňizi kiçi harplar bilen baş harplaryň arasyndaky tapawuda gönükdirýäris. \ N nyşan kursory indiki setire geçirýär we indiki girizilen tekst programmanyň çykyşy bilen ýapyşmaz. Aý hawa, nokatly nokady ýatdan çykarmaň (;). Bu programma jümleleri üçin möhüm bölüji; C olarsyz işlemek islemez. Faýl> Saklamak (ýa-da buýruk- ýa-da Ctrl-s) düwmesine basyň . Faýl adynyň öňündäki ýyldyz ýyldyzynyň ýok bolandygyna üns beriň? Hawa bolsa, üýtgetmeler saklandy. Koduňyzyň aşagyndaky terminal penjiresiniň islendik ýerine basyň we ~ / iş meýdançasy / pset1- iň içindedigine göz ýetiriň (ýok bolsaňyz, cd-e basyň we Enter basyň, soňra cd iş meýdançasy / pset1 we gaýtadan giriň). Işjeň setiriňiz şeýle bolmaly: hello.c faýlynyň nirede bolmalydygyna göz ýetireliň . Enter ýazyň we basyň. Salam.c-i hem görýärsiňizmi? Notok bolsa, birnäçe ädim yza gaýdyp, gerekli katalogda faýly dörediň. ... Indi dabaraly pursat gelýär: barmaklarymyzy kesýäris we ... ýazýarys: we barmaklarymyz bilen Enter düwmesini basýarys. Salam.c däl, takyk salam. Bu hereketden soň öňüňizde görýänleriňiziň hemmesi öňküsi ýaly görünýän ikinji işjeň setir bolsa, hemme zat işleýär! Çeşme kody maşyn ýa-da obýekt kody (ýagny 0s we 1s yzygiderliliginde) terjime edildi. Indi bu kod ýerine ýetirilip bilner (ýagny programma işledilip bilner!). Munuň üçin buýruk setirine Enter basyň. "" "Laryň arasynda goýlan teksti üýtgetmedik bolsaňyz, aşakda görersiňiz: Indi buýrugy ýazyp Enter düwmesini bassaňyz, hello.c we hello.txt bilen birlikde täze salam faýly görersiňiz. Ilkinji salamda, bu ýerine ýetirilip bilinjek faýl, ýagny programmany başladýan adyňyzdan soň ýyldyz belgisi bolmaly. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
Bugs?
“Make” buýrugyndan soň ýalňyşlyklary görseňiz, ilkinji düzediş wagty geldi! “Garaşylýan beýannama” ýaly ýazgylar, bir ýerde ýalňyşlyk goýandygyňyzy aňladýar. Aboveokardaky kody täzeden barlaň, ähli jikme-jikliklere gaty seresap boluň. Üns beriň! Roralňyşlyklaryň beýany iňlis dilinde berilýär. Düşünmedik bolsa, gözleg motoryny, Google Translate ulanyň ýa-da teswirlerde sorag beriň. Rorsalňyşlyklary düzedeniňizden soň, Faýl> Saklamak (ýa-da buýruk- ýa-da Ctrl-s) koduňyzy ýatda saklaň, terminal penjiresiniň içine ýene bir gezek basyň we ýazyň make hello (~ / iş meýdançasy / pset1-de bolanyňyza göz ýetiriň) ilki). Morealňyşlyklar ýok bolsa, buýrugy ýazyp programmany işlediň. ./hello Teoriýa boýunça, “çap etmegi” buýurýan printf operatorynyň dyrnak belliklerinde ýerleşdirilen gymmatly sözlemi görmeli. Terminal penjiresi gaty kiçi görünýän bolsa, salam.c-iň gapdalyndaky tegelek plýus (+) nyşanyna basyň.
Dogrylygyny barlamak
Check50 goýmasy CS50 IDE-de guruldy. Buýruk setirinden işleýär we käbir programmalaryň ýalňyşlyklary barlaýar. Entek ýok bolsaňyz, terminalda buýrugy işledip ~ / workspace / pset1 katalogyna giriň: cd ~/workspace/pset1 Indi işlediň, ls iň bolmanda hello.c faýly görersiňiz. Faýlyň adynyň şuňa meňzeýändigine göz ýetiriň, Salam.c ýa-da salam.C diýmäň. mv source destination Buýruk çeşmesini - häzirki faýlyň adyny, barjak ýerini - täze faýlyň adyny işledip, bir faýlyň adyny üýtgedip bilersiňiz . mv (iňlis dilinden göçürmekden) adyny üýtgetmek. Salam.c faýlyna tötänleýin at beren bolsaňyz, setiri ýazyň: mv Hello.c hello.c Faýlyň salam.c diýip atlandyrylandygyna göz ýetireniňizden soň, geliň, barlag50 barlag programmasyna jaň edeliň. 2015.fall.pset1.hello “salam dünýä” meselesiniň özboluşly kesgitleýjisidigini ýadyňyzdan çykarmaň. check50 2015.fall.pset1.hello salam.c Programma dogry ýerine ýetirilen bolsa, görersiňiz: CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 2 Greenaşyl ýylgyryşly ýüzler synagyň geçendigini aňladýar. Check50 çykyşynyň aşagyndaky URL-ni hem görüp bilersiňiz, ýöne bu diňe işgärler üçin (gyzyklanýan bolsaňyz barlaň!). check50 3 synagdan geçýär: hello.c faýlynyň bardygyny ýa-da ýokdugyny, salam.c düzýändigini ýa-da programmanyň "salam, dünýä \ n" diýilýän setir öndürýändigini ýa-da ýokdugyny. Gynanýan gyzyl şekilleri görseňiz, kemçilik bar diýmekdir. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down Bu ýerde check50 salam.c tapmady we gyzyl ýylgyryş ýa-da adyňyzda ýalňyşlyk goýberendigiňizi ýa-da faýly nädogry ýere ýükländigiňizi görkezýär. Sary “bitarap” şekiller synaglaryň işlemeýändigini aňladýar. Programma barlanmaly faýly tapmasa, nireden başlap bilerler? Ine, printf () funksiýasynyň çykarmaly tekstini üýtgedeniňizde açyljak başga bir wariant: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 salam, dünýä \ n setiriniň garaşylýandygyny, ýöne başga bir zadyň peýda bolandygyny habar berýär. check50 kursy tamamlamak üçin bal hasaplamaýar, ýöne tabşyrygyň netijesiniň garaşylýandan tapawutlydygyny barlaýar. Kursyň içindäki meseläniň dogrudygyny tassyklamazdan ozal muny barlamaga mümkinçilik berýär (muny soň nädip etmelidigiňizi aýdarys).
C esaslary: Dyrnak bilen deňeşdirme
Salam Dünýä we C:
CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 3 #include int main(void) { printf("hello, world\n"); }
  • CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 4Spritiň "sözlerini" Scratch-da gülkünç köpürjikde çap edýän funksiýany aňladýar, C-de edil şol bir zady edýän, diňe multfilm bolmasa, printf funksiýasy bar.
  • esasy - iňlis dilinde - “esasy”. Programma giriş nokady. Edil şonuň ýaly CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 5.
Tükeniksiz aýlaw
CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 6 C-e terjime edilende: while (true) { printf("hello, world\n"); } (dogry) şol bir zady edýär: aýlaw dogry (şol bir wagtyň özünde) bahasy dogry (Boolean aňlatmasy “dogry” ýa-da “bir”). Bu aýlaw tükeniksiz işlär.
Ekranda 10 gezek sözlemi görkezýän aýlaw
Scratch CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i hasaplaýjy üýtgeýjidir, onuň bahasy i ++ artdyryjy operator tarapyndan üýtgedilýär we aýlawyň her gezek gaýtalanmagynda 1 köpelýär. Ilki bilen, belleme operatory = ulanyp, 0 bahasy berilýär. Üns beriň! Java-da bolşy ýaly, C deňliginde ==, belleme operatory = bilen görkezilýär. .Agny, a = 5 a üýtgeýjä 5 baha berilendigini, we (a = = 5) Boulogne aňlatmasyny aňladýar (eger a 5 deň bolsa, aňlatma dogry, deň däl bolsa, ýalan) . 9-a çenli “ulalanymda” aýlaw durar. Hasaplamak aňsat, aýlaw 10 gezek ýerine ýetiriler. Şeýlelik bilen, belli bir gezek bir zady gaýtalamaly bolsaňyz, C-de aýlaw üçin kesgitleýärsiňiz (int i = 0; i <10; i ++). Başga bir mysal: CS50 leksiýalary üçin goşmaça materiallar: 1-nji hepde (3-nji we 4-nji leksiýalar) - 8 We C-e terjime edilen şol bir zat: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • hasaplaýjy dükanlaryň bahasy C we Scratch. C-de derek int counter = 0 goýýarys Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • Üýtgeýjiniň görnüşini aýdyňlaşdyrmak üçin int diýip belleýäris: i bitewi san (iňlis dilinden, tutuşlygyna).
  • Dördünji setirde printf-de ulanýan% i, ýer eýesini hasaplaýjy üýtgeýjiniň gymmaty bilen çalyşmagy aýdyşymyz ýaly, onluk bitewi san çap etmegi aýdýan ýer eýesi.
Boolean aňlatmalary
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 Edil şonuň ýaly (x < y) ((x < y) && (y < z))
Şertler
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 We “bok” ekwiwalenti: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 Ilkinji düşnüksiz söz düzümi näme? Bu barada has soňrak, "Kitaphanalar" bölüminde. #include
Şertli jümleler
Bu ýigitler haýsydyr bir şertiň (logiki aňlatma, diňe “hawa” ýa-da “ýok” bilen jogap berip boljak soragyň) dogrudygyny ýa-da ýokdugyny barlaýarlar, eger şeýle bolsa, bu şert bilen baglanyşykly käbir hereketleri edýärler. Durmuşdan mysal: ýagyş ýagsa (ýagyş ýagýar öýdýän) we daşarda bolsam (ýagyş ýaganda daşarda), saýawanymy açýaryn. if (condition) { //исполнить, если meaning истинно } Has çylşyrymly wariant: şert ýerine ýetirilen halatynda çäre görüň, ýok bolsa başga bir çäre görüň. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } Mysal: 18 ýaşdan uly bolsaňyz, girişi tassyklaň. Az bolsa, tassyklanmaz. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
Saýlaw operatory
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } Mysal: n = 50 bolsa, "CS50 kompýuter bilimine giriş" çap ediň, n = 51 bolsa, "CS51 kompýuter bilimine giriş" çap ediň, ýogsam "Bagyşlaň, men bu synp bilen tanyş däl!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
Sikller
şol bir wagtyň özünde: ýagdaýy barlaýar, soňra şert ýerine ýetirilende ýerine ýetirilýär while (condition) { // выполнять, пока истина } / şol bir wagtyň özünde ýagdaýy ilkinji gezek barlamazdan ýerine ýetirýär, soň bolsa diňe barlaýar. Trueagdaý dogry bolsa, şert ýalňyşýança hereketi gaýtalaýar. do { ) // выполнять, пока истина } while (condition); Aýlaw üçin belli bir gezek hereketi gaýtalaýar. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 Aýlawlar biri-biriniň içinde ýerleşdirilip bilner. Bu ýagdaýda daşarky aýlawyň her ädiminde içki aýlaw doly ýerine ýetiriler. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
C-de esasy maglumatlaryň görnüşleri
основные типы данных в C
Kitaphanalar C.
C programmasynyň birinji setiriniň nämäni aňladýandygyna eýýäm göz ýetiren bolsaňyz gerek: Onuň roly näme we onsuz edip bolarmy? # Goşmak setiri gaty möhüm bir zat edýär: programmaňyza eýýäm ýazylan kod kitaphanalaryny öz içine alýar. Birikdirilen kitaphananyň ady burç ýaýlary (<>) bilen gurşalan we giňeltmesi (.h) bar. Kitaphanalar bolmadyk bolsa, islendik, hatda iň esasy hereket hem her gezek gaýtalanyp beýan edilmelidi. Baglanan kitaphanamyz#include giriş / çykyş funksiýalaryny öz içine alýar. Bu, printf () funksiýasyny ekrana çap etmek üçin ulanmaga mümkinçilik berýän zat. .Agny, # goşma setirini ýazmadyk bolsak , ýöne printf () funksiýasyny programmanyň içinde goýdy; işletjek bolanymyzda ýalňyşlyk alardyk! Sebäbi bu kitaphana bolmasa düzüji printf () nämedigini bilenok. Adaty kitaphanalar bar, olar diliň söz düzümini düzýärler. Printf () funksiýasy kompýuterde gurlanok, ýöne adaty C kitaphanasyna girýär. Someagny, käbir programmist muny öň ýazyp, kitaphana girizipdi. Indi beýlekiler tekeri täzeden dikeltmän ulanyp bilerler. Düzediji oňa “düşünmek” üçin birikýäris . CS50 prosesinde ulanylýan beýleki standart kitaphanalar bar. Mysal üçin, setirler bilen amallary beýan edýän setirleriň kitaphanasy (uzynlygy, goşma we ş.m. kesgitleýär). Beýleki meşhur programmirleme dilleri bilen deňeşdirilende, adaty C kitaphanalarynyň sany gaty az. Selföne öz-özünden ýazylan, köplenç has ýokary ýöriteleşdirilen kitaphanalar bar. Hawa, kitaphana ýörite CS50 okuwçylary üçin döredildi. Möhüm bellik etmegiň wagty geldi: programmalary ýazmakdan we öz koduňyzy ulanyp meseleleri çözmekden başga-da, gowy işläp düzüjiniň başga bir möhüm ussatlygy bar: eýýäm ýazylan gurallary bilmek we olary ulanmak ukyby (beýleki adamlaryň kitaphanalary) “tekeri” täzeden dikeltmek üçin wagt ýitirmezlik. Şeýlelik bilen, adaty bir ýaly görünýän ýadaw ýa-da çylşyrymly meseläni çözmek isleýän bolsaňyz, özüňize “çözgüdi başga biri ýazdymy?” Diýen soragy bermegi öwreniň. Munuň şeýle bolmagy ähtimal, bu funksiýany bar bolan kitaphanada tapyp bilersiňiz. Tehniki nukdaýnazardan seredilende, kitaphana baglanyşyk ulanyp, obýekt faýllarynyň ýygyndysyny birleşdirip öndürilen ikili faýl. Obýekt faýllary, programmalary düzeniňizde alýan giňeltme (* .o) faýllardyr.
C kitaphanalarynyň gurluşy
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION