- 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
- 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
Mantykly: 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:
- Programma ulanyjydan duşda näçe minut sarp edendigini soraýar
- Ulanyjy polo positiveitel bitewi san girizýär
- 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!
Dü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
Giň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.c
Katalogyňyzda bir faýl dörediň ~/workspace/pset1
. Berlen: 25, 10, 5, 1 sent pullardaky teňňeler Programma:
- Ulanyjydan näçe üýtgetmelidigini soraň
- Muny edip boljak iň az teňňäni hasaplaň
GetFloat
Giriş üçin CS50 kitaphanasyndan we printf
çykyş üçin adaty I / O kitaphanasyndan bir funksiýa ulanarys . Mundan başga-da, programma girişiň dogrulygyny barlamaly. GetFloat
Ulanyjynyň 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 GetFloat
kö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) float
mantykly bolardy . int
Awtomatiki 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-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?
name
iş faýlyňyzyň ady nirede . -
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
- Goýmalar taýýar bolanda, CS50 IDE giriň.
- 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.
- Suw üçin gaýtalaň.
- Mario.c üçin gaýtalaň.
- Açgöz.c üçin gaýtala.
- Aýry goýmada ýa-da penjirede CS50 Submit -e giriň .
- Penjiräniň aşaky çep burçunda "Submit" -e basyň.
- Peýda bolan penjiredäki 1-nji mesele toplumynyň aşagynda “Täze iberiş ýüklemek” düwmesine basyň.
- Peýda bolan penjirede faýl goşmak ... düwmesine basyň. Açyk faýllar diýilýän penjire peýda bolmaly.
- 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ň.
- Faýl goşmak basyň ... ýene-de Açyk faýllar penjiresi ýene peýda bolar.
- Indi suw.c faýlyny edil şonuň ýaly tapyň. Oňa basyň, soňra Açyň (ýa-da "Aç") basyň.
- Indi mario.c tapyň. Şeýle hem basyň we açyň.
- Açgöz.c faýly bilen hemme zat birmeňzeş.
- CS50 serwerlerine faýllaryňyzy ýükläp başlamak üçin “Startüklemek” düwmesine basyň.
- 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.
-
-
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.
- 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).
Kod çeşmesi:
-
Üçünji leksiýa
-
Dördünji leksiýa
GO TO FULL VERSION