JavaRush /Java Blog /Random-TK /Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji lek...
Masha
Dereje

Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji leksiýalar)

Toparda çap edildi
Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji leksiýalar) - 1Dostlar, seminaryň belliklerinden esasy teoretiki maglumatlary alyp bilersiňiz . Şol ýerde, C esaslaryndan başga-da, ýörite bulut IDE CS50-e nädip birikmelidigini aýdýar (bu işleri işletmek we barlamak üçin edilmeli) we esasy zerur Linux buýruklaryny we dil gurluşlaryny beýan edýär. Leksiýada hödürlenen materiallar we C hakda bellikler size ýeterlik bolmasa, başga çeşmelere ýüz tutuň. Mysal üçin, bu makalanyň ahyrynda sanalanlar. " Goşmaça materiallar " mowzugynda
  • Birinji hepdäniň maksatlary
  • IDE CS50
  • Buýruk setiri we iş paneli täzelenmesi
  • IDE-de işlemek
  • Salam, C!
  • Bugs?
  • Barlamak barlagy: 50 synag
  • C esaslary: Dyrnak bilen deňeşdirme
  • C-de esasy maglumatlaryň görnüşleri
  • Kitaphanalar C.
  • Salam C ýene-de: iň ýönekeý programmalaryň sintaksisiniň derňewi
  • C-de I / O hakda azajyk köp zat
Bu mowzukdaky materiallar:
  • Barlanylan maglumat ýazgysy: cs50.h kitaphanasynyň aýratyn funksiýalary
  • Wezipe 1. Suwuň sarp edilişini akylly hasaplamak
  • 2-nji wezipe. Mario biziň bilen!
  • 3-nji wezipe. Üýtgemegiň wagty
  • Koduňyzy nädip tassyklamaly we bellikleri almaly
  • Kod çeşmesi
  • goşmaça edebiýat

Barlanylan maglumat ýazgysy: cs50.h kitaphanasynyň aýratyn funksiýalary

Bu kursy has amatly etmek üçin ýörite CS50 kitaphanasyny taýýarladyk, esasanam ulanyjy tarapyndan girizilen maglumatlary gaýtadan işlemek üçin örän peýdaly funksiýalary bar.
  • GetString()ulanyjy tarapyndan girizilen setiri okaýar;

  • GetInt()ulanyjy tarapyndan girizilen setiri okaýar we bitewi san barlygyny barlaýar;

  • GetFloat()ulanyjy tarapyndan girizilen setiri okaýar we ýüzýän nokat belgisiniň bardygyny barlaýar;

  • GetLongLong()ulanyjynyň girizen setirini okaýar we uzyn hakyky belginiň bardygyny barlaýar.

Wezipe 1. Suwuň sarp edilişini akylly hasaplamak

Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji leksiýalar) - 2Mantykly: näçe uzak suwa düşseňiz, bu prosese şonça köp suw sarp edilýär. Geliň näçeräkdigini anyklalyň? Duşuňyz zordan açyk bolsa-da, minutda takmynan 6 litr suw akýar. Içmek üçin ýanyňyz bilen alyp gidýän 12 çüýşe suw. Adatça bir adam takmynan 10 minut suwa düşýär. Umuman, ýuwmak üçin 120 ýarym litr çüýşe gerek. Gaty köp! water.cÖzüňizde faýl dörediň ~/workspace/pset1. Programma, wagta baglylykda duş üçin näçe çüýşe suwuň ulanylýandygyny sanamaly. Ÿagny:
  1. Programma ulanyjydan duşda näçe minut sarp edendigini soraýar
  2. Ulanyjy polo positiveitel bitewi san girizýär
  3. Programma ulanyjy tarapyndan ulanylýan çüýşeleriň sanyny görkezýär.
username:~/workspace/pset1 $ ./water
minutes: 10
bottles: 120
Ityönekeýlik üçin, bu gezek ulanyjynyň minutlaryň sanyny elmydama dogry girizýändigini çaklaýarys, ýagny girizilen sanyň pozitiw we bitewi däldigini barlamaýarys. Soňra çekleri nädip ýazmalydygyny öwreneris, ýöne häzirlikçe bu ýeterlik. Programmanyň dogry işleýändigini barlamak üçin check50,terminalda aşakdaky setiri girizmeli:
check50 2015.fall.pset1.water water.c
Kurs işgärleri tarapyndan ýazylan programmanyň nähili işleýändigini görmek isleseňiz water, aşakdaky buýrugy ýerine ýetiriň:
~cs50/pset1/water

2-nji wezipe. Mario biziň bilen!

Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji leksiýalar) - 3Dünýäniň iň meşhur suw geçirijisini bilýärsiňizmi? Nintendo-nyň kömegi bilen gyzyl gapakly toslama murtly we birneme çalaja ýigit birnäçe nesil oýunçy üçin gahryman boldy. Kim hakda gürleşýändigimizi bilmeseňiz, ine, 1985-nji ýyldaky nusgawy oýun bilen baglanyşyk : maňa ynanyň, henizem gowy we barlap görmeli! Şeýle hem, smartfonlar ýa-da awtonom emulýatorlar üçin nusgawy Super Mario görnüşini tapyp bilersiňiz. Umumy ösüş üçin bularyň hemmesi gerek, gynansak-da, entek wezipe däl;). We wezipe şu. Ilkinji Mario derejesiniň ahyrynda her oýunçy bu ýarym piramidany gördi: mario.cÖzüňizde faýl dörediň ~/workspace/pset1. Programmamyz, görýäniňize meňzeş, ýöne göni konsolda grafikasyz ýarym piramida çyzar: bloklaryň her biri hash nyşanyndan (#) ybarat bolar. Muny nädip etmelidigine düşünmedik bolsaňyzam, maňa ynanyň: bu aňsat. Meseläni has gyzykly etmek üçin, oňa ýarym piramidanyň beýikligini 0-dan 23-e çenli otrisatel bitewi bitewi san bilen kesgitlemek ukybyny goşalyň. Suratdaky piramidanyň beýikligi iň beýik ýerde hasaplanýar, 8.agny, 8-e deňdir. Ulanyjy belgini nädogry girizse, ondan ýene bir gezek etmegini haýyş etmeli. Soňra dörediň (printf piramidasyny ulanyp). Aşakdaky mysaldaky ýaly ýarym piramidanyň aşaky çep burçuny terminal penjiresiniň çep gyrasy bilen deňleşdirmäge üns beriň. Aşakdaky tekst, ulanyjynyň özüne girýän zadydyr.
username:~/workspace/pset1 $ ./mario

height: 8
       ##
      ###
     ####
    #####
   ######
  #######
 ########
#########
Iki sag sütüniň birmeňzeş beýikdigine üns beriň. Turbalary, bulutlary we Marionyň özi öndürmäge mynasyp däl =). Iň bolmanda bu mesele üçin. Ulanyjy nädogry maglumatlary girizen bolsa (bir san däl, ýa-da bir ýa-da 23-den uly belgini girizen bolsa), programma ondan aşakdaky mysalda bolşy ýaly, aşagyndaky tekstiň nirededigini täzeden girizmegini haýyş etmeli. ulanyjy klawiaturadan girdi. Girizilen setiri okamak üçin ulanyň GetInt. Nädogry giriş barlamaga kömek edip biler, ýöne hemme ýagdaýda däl.
username:~/workspace/pset1 $ ./mario
Height: -2
Height: -1
Height: foo
Retry: bar
Retry: 1
##
Programmany düzmek üçin terminala setiri giriziň:
make mario
ýa-da has aýdyň, ýöne has uzyn wersiýasy:
clang -o mario mario.c -lcs50
Ondan soň ýerine ýetirmek üçin programmany işlediň:
./mario
Programmanyň dogry işleýändigini barlamak isleseňiz, işlediň check50:
check50 2015.fall.pset1.mario mario.c
Mario kurs kömekçileriniň wersiýasy bilen oýnamak isleseňiz, aşakdaky setiri ýazyň:
~cs50/pset1/mario

3-nji wezipe. Üýtgemegiň wagty

Garward CS50: 1-nji hepde tabşyryklar (3-nji we 4-nji leksiýalar) - 4Giňişliklerimizde muny görmedik, ýöne ABŞ-da suratda görkezilen şeýle oýunjak bar ýaly: silindrler dürli diametrli teňňeler (we denominasiýa) üçin niýetlenendir, bahar mehanizmi bilen goýberilýär we enjamyň özi çaga kassiriniň guşagyna dakylýar. Şeýle-de bolsa, kimdir biri kassiri uly hasap bilen tölese näme bolar? Üýtgetmek üçin teňňeleri sanamagyň nähili kynçylyk çekjekdigini göz öňüne getiriň. Berlen teňňeleriň sanyny azaltmak üçin “açgöz” algoritmleri ulanyp bilersiňiz. Milli ülňüler we tehnologiýa instituty (NIST) tarapyndan kesgitlenişi ýaly, gutarnykly çözgüt (şeýle ädimleriň jeminden alnan) hem optimal bolar öýdüp, meseläni çözmek üçin her ädimde iň amatly çözgüt tapýarlar. Bu näme many berýär? Geliň, kassiriň bir müşderä çalyşmak üçin 41 sent bergisi bar we 25, 10, 5 we 1 sent denominasiýalary üýtgetmek üçin guşagynda teňňe silindrleri bar diýip göz öňüne getireliň. “Açgöz” algoritmiň ýolbaşçylygyndaky kassir ilkinji ädiminde derrew maksimum bermek isleýär. Bu pursatda iň amatly ýa-da iň oňat çözgüt 25 pensiýa bermek bolar. 41-25 = 16. Tölemek üçin 16 pensiýa galdy. Elbetde, 25 pensiýa gaty köp, şonuň üçin 10-dan çykýar. 16-10 = 6. Indi şol bir prinsip boýunça 5 pensiýa berýäris, soň bolsa 1. Şeýlelik bilen, alyjy 25, 10 denominasiýalarda bary-ýogy dört teňňe alar. , 5 we 1 teňňe. Netijede, pul bermek üçin “açgöz” ädimme-ädim görkezmeler diňe bu ýagdaý üçin däl, eýsem ABŞ-nyň walýuta denominasiýalary üçin (we Europeanewropa Bileleşigi hem) amatlydyr. .Agny, kassiriň islendik denominasiýada ýeterlik teňňesi bar bolsa, algoritm iň oňat işlär, ýagny mümkin bolan ýagdaýlardan iň az mukdarda teňňäni çykarar. Onda, üýtgetmeli iň az teňňe näçe? Bu biziň üçünji wezipämiz. greedy.cKatalogyňyzda bir faýl dörediň ~/workspace/pset1. Berlen: 25, 10, 5, 1 sent pullardaky teňňeler Programma:
  1. Ulanyjydan näçe üýtgetmelidigini soraň
  2. Muny edip boljak iň az teňňäni hasaplaň
Bellik:GetFloatGiriş üçin CS50 kitaphanasyndan we printfçykyş üçin adaty I / O kitaphanasyndan bir funksiýa ulanarys . Mundan başga-da, programma girişiň dogrulygyny barlamaly. GetFloatUlanyjynyň nokat bilen bölünen dollara we sentlere bahasyny girizmegine rugsat bermegiňizi haýyş etdik . Mysal üçin, 9,75 dollar bergimiz bar bolsa, ulanyjy 9,75 girmeli, ýöne 9,75 dollar ýa-da 975 dollar däl. Ulanyjynyň manyly bir belgä girmegini üpjün etmeli. Ters däl diýeliň, funksiýanyň özi bu meselede GetFloatkömek etmez . Ulanyjy nädogry giriş girizse, ondan gaýtalamagyny we programmany diňe dogry maglumatlar bilen işlemegini haýyş etmeli. Floüzýän nokat sanlaryna mahsus bolan nätakyklyklardan ägä boluň. Mysal üçin, 0.01 gönüden-göni görkezilmeýär float. Formatlanan çykyşy, mysal üçin aşakdaky kody ulanyp, 50 onluk ýer bilen ulanyp görüň:
float f = 0.01;
printf("%.50f\n", f);
.Eri gelende aýtsak, hiç zady hasaplamazdan ozal, köp mukdarda ýalňyşlyklaryň we kynçylyklaryň öňüni almaga kömek etjek ähli mukdary sente öwürmek (we şol bir wagtyň özünde ony öwürmek) floatmantykly bolardy . intAwtomatiki kod analizatorymyz meseläňizi dogry barlap biljekdigine göz ýetirmek üçin, programmaňyzyň soňky setirinde teňňeleriň iň az mukdaryndan başga hiç hili maglumatyň ýokdugyna göz ýetiriň: ondan soň \ n nyşanly bitewi san (öwrenýänler) JavaRush bu ýerde näme hakda gürleşýändigimizi gowy bilýär =)). Aşakda programmaňyzyň netijesiniň nähili bolmalydygynyň mysaly.
username:~/workspace/pset1 $ ./greedy
O hai! How much change is owed?
0.41
4
Floüzýän nokat sanlarynyň häsiýetini göz öňünde tutup, nola ähmiýet bermän, şeýle san girizip bilersiňiz .41. Elbetde, nädogry maglumatlary doly girizmegiň mümkinçiligini barlamak isleýän ulanyjylar:
username:~/workspace/pset1 $ ./greedy
O hai! How much change is owed?
-0.41
How much change is owed?
-0.41
How much change is owed?
foo
Retry: 0.41
4
Bu talaplara we ýokarda gören mysalyňyza esaslanyp, koduňyzda haýsydyr bir aýlaw bolmaly. Programmany synap göreniňizde, aýlawyň durmaýandygyna göz ýetirseňiz, programmanyň ýerine ýetirilişini ctrl-c kombinasiýasy bilen kesip bilersiňiz (käwagt birnäçe gezek). Programmany nädip düzmelidigini we işlemelidigini eýýäm bilýärsiňiz. Programma üpjünçiliginiň dogry işleýändigini ýa-da ýokdugyny barlamak isleseňiz check50, terminala aşakdaky setiri giriziň:
check50 2015.fall.pset1.greedy greedy.c
Kurs kömekçileri tarapyndan döredilen bu programma bilen oýnamak isleseňiz, aşakdaky buýrugy ýazyň:
~cs50/pset1/greedy

Koduňyzy nädip tassyklamaly we bellikleri almaly

  1. 1-nji wariant

    Koduň dogrulygyny barlamak we gutarnykly baha almazlyk möhüm bolsa, buýrugy ulanyp barlap we düzedip bilersiňiz.

    check50 2015.fall.pset1.name name.c

    CS50 IDE terminal setirine girdiňizmi? nameiş faýlyňyzyň ady nirede .

  2. 2-nji wariant

    Bahalary almak isleseňiz (esasanam 50 barlag bilen deňdir, ýöne netijäni ýatda saklamak we iňlis dilinde käbir görnüşleri doldurmak bilen, şu ädimleri ýerine ýetiriň:

    • 2-nji ädim

      1. Goýmalar taýýar bolanda, CS50 IDE giriň.
      2. CS50 IDE-iň ýokarky çep burçunda, terminal penjiresinde däl-de, faýl brauzerinde hello.c faýlyňyza (pset1 katalogynda ýerleşýän) çep düwmä basyň ýa-da Göçürip basyň. Brauzeriň salam.c ýükländigini görmeli.
      3. Suw üçin gaýtalaň.
      4. Mario.c üçin gaýtalaň.
      5. Açgöz.c üçin gaýtala.
      6. Aýry goýmada ýa-da penjirede CS50 Submit -e giriň .
      7. Penjiräniň aşaky çep burçunda "Submit" -e basyň.
      8. Peýda bolan penjiredäki 1-nji mesele toplumynyň aşagynda “Täze iberiş ýüklemek” düwmesine basyň.
      9. Peýda bolan penjirede faýl goşmak ... düwmesine basyň. Açyk faýllar diýilýän penjire peýda bolmaly.
      10. Salam.c-iň göçürilen ýerine geçiň. Adatça, süklemeler bukjasynda ýa-da göçürip almak üçin size bellenen bukjada ýerleşýär. Salam.c-ni tapanyňyzdan soň, ony bellemek üçin bir gezek basyň, soňra Açyň.
      11. Faýl goşmak basyň ... ýene-de Açyk faýllar penjiresi ýene peýda bolar.
      12. Indi suw.c faýlyny edil şonuň ýaly tapyň. Oňa basyň, soňra Açyň (ýa-da "Aç") basyň.
      13. Indi mario.c tapyň. Şeýle hem basyň we açyň.
      14. Açgöz.c faýly bilen hemme zat birmeňzeş.
      15. CS50 serwerlerine faýllaryňyzy ýükläp başlamak üçin “Startüklemek” düwmesine basyň.
      16. Peýda bolan ekranda “Saýlanan faýl ýok” diýen penjire görersiňiz. Syçan kursoryňyzy ekranyň çep tarapyna geçirseňiz, göçüren faýllaryňyzyň sanawyny görersiňiz. Hersiniň mazmunyny tassyklamak üçin hersine basyň. (Beýleki düwmelere ýa-da nyşanlara basmagyň zerurlygy ýok). Faýly barlamak üçin ibermäge taýýardygyňyza ynanýan bolsaňyz, gutarandygyny hasaplaň! Koduňyzy täzeden barlamak ýa-da bir zady düzetmek isleseňiz, CS50 tabşyryň we bu ädimleri gaýtalaň. Islän wagtyňyz iberip bilersiňiz; Diňe iň soňky tabşyrylanlara baha berler.
  3. 2-nji ädim (baha bermek üçin hökmany däl, eger bu =))

    Indi https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x sahypasyna giriň , bu ýerde ýörite görnüşleri tapyp bilersiňiz. Olarda birnäçe teoretiki soraglara jogap bermeli, soňra bolsa "Submit" düwmesine basmaly.

Teryldyzjyklar bilen baglanyşykly soraglar zerurdyr:
  • Bolýar, munuň gelýänini gören bolmaly! Diňe birnäçe sözlemde kitaphana näme? * (Kitaphananyň nämedigini gysgaça düşündiriň)
  • Diňe birnäçe sözlemde, #include <cs50.h> haýsydyr bir programmanyň üstünde ýazsaň nähili rol oýnaýar? * (käbir programmalaryň ýokarsynda görünýän # goşmak <cs50.h> setiriniň roly näme?)
  • Mesele toplumy 0: dyrnaşmak üçin näçe sagat sarp etdiňiz?
  • 1-nji mesele toplumyna näçe sagat sarp etdiňiz?
  • CS50x hakda şu wagta çenli näme pikir edýärsiňiz? * (Häzirki wagtda CS50 baradaky pikiriňiz, halamaýan ýa-da halamaýan warianty saýlaň)
  • Http://www.facebook.com/groups/cs50 salgysynda CS50s Facebook Topary arkaly synpdaşlaryňyzdan ýa-da işgärleriňizden kömek soradyňyzmy? * (beýleki talyplardan ýa-da kömekçilerden facebook toparynda kömek soradyňyzmy)
  • Http://www.reddit.com/r/cs50 * salgysynda CS50s Subreddit arkaly synpdaşlaryňyzdan ýa-da işgärleriňizden kömek soradyňyzmy (Subreddit arkaly beýleki talyplardan ýa-da kömekçilerden kömek soradyňyzmy)
  • @ Cs50 ýa-da # cs50 ulanyp, Twitter arkaly synpdaşlaryňyzdan ýa-da işgärleriňizden kömek soradyňyzmy? * (Twitterde @ cs50 ýa-da # cs50 ulanyp, beýleki talyplardan ýa-da TA-dan kömek soradyňyzmy).
Dostlar, soraglaryňyz bar bolsa, şu gollanmanyň aşagyndaky teswirlere ýazyň. Maglumat çakylygyny almak üçin JavaRush 5 derejesine ýetmedik bolsaňyz, muny etmegiňizi maslahat berýäris. Mugt, gyzykly we gaty kyn däl.

Kod çeşmesi:

  1. Üçünji leksiýa

    http://cdn.cs50.net/2015/fall/lectures/1/w/src1w.zip

  2. Dördünji leksiýa

    http://cdn.cs50.net/2015/fall/lectures/1/f/src1f.zip

    http://cdn.cs50.net/2015/fall/lectures/1/f/src1f/

goşmaça edebiýat

http://cpp.com . Dar tegeleklerde K&R hökmünde giňden tanalýar. Terjime iň täze neşir däl. Ilkinji üç bölümi okaň. Size zerurlykdan azajyk köp material bolar, ýöne meseleleri çözmek üçin ýeterlik bolar. https://computer.howstuffworks.com/c.htm CS50 awtorlary tarapyndan maslahat berilýän çeşme. Iňlisçe. Sahypa 1-7, 9 we 10.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION