JavaRush /Blog Jawa /Random-JV /Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4)
Masha
tingkat

Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4)

Diterbitake ing grup
Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4) - 1Kanca-kanca, sampeyan bisa ngumpulake informasi teoritis dhasar saka cathetan seminar . Ana, saliyane kanggo dhasar C, nerangake carane nyambung menyang maya khusus IDE CS50 (iki kudu rampung kanggo nglakokaké lan mriksa tugas), lan njlèntrèhaké printah Linux perlu dhasar lan struktur basa. Yen sampeyan ora nemokake cukup materi babagan C ing ceramah lan cathetan, goleki sumber liyane. Contone, sing kadhaptar ing mburi artikel iki. Ing topik " Bahan tambahan "
  • Gol minggu pisanan
  • IDE CS50
  • Update baris printah lan workbench
  • Makarya ing IDE
  • Salam, C!
  • bug?
  • Priksa validasi: mriksa50 test
  • Dasar C: Perbandingan karo Scratch
  • Jinis Data Dasar ing C
  • Pustaka C
  • Hello C maneh: analisis sintaks saka program paling prasaja
  • Luwih akeh babagan I/O ing C
Materi ing topik iki:
  • Entri data sing divalidasi: fungsi khusus perpustakaan cs50.h
  • Tugas 1. Pitungan pinter konsumsi banyu
  • Tugas 2. Mario karo kita!
  • Tugas 3. Wektu kanggo njaluk owah-owahan
  • Carane validasi kode lan entuk tandha
  • Sumber kode
  • sastra tambahan

Entri data sing divalidasi: fungsi khusus perpustakaan cs50.h

Kanggo nggawe kursus iki luwih trep, kita wis ngembangake perpustakaan khusus CS50, sing, utamane, nduweni fungsi sing migunani banget kanggo ngolah data sing dilebokake pangguna.
  • GetString()maca senar sing dilebokake pangguna;

  • GetInt()maca senar sing dilebokake pangguna lan mriksa manawa ana integer;

  • GetFloat()maca string sing dilebokake pangguna lan mriksa manawa ngemot nomer floating point;

  • GetLongLong()maca string sing dilebokake pangguna lan mriksa manawa ngemot nomer nyata sing dawa.

Tugas 1. Pitungan pinter konsumsi banyu

Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4) - 2Iku logis: suwene sampeyan adus, luwih akeh banyu sing digunakake kanggo proses iki. Ayo dipikirake pira? Sanajan pancuran sampeyan lagi wae mbukak, kira-kira 6 liter banyu mili metu saben menit. Lan iki 12 botol banyu sing sampeyan gawa kanggo ngombe. Biasane wong adus kira-kira menit 10. Secara total, kanggo ngumbah, sampeyan butuh 120 botol setengah liter. Cukup akeh! Nggawe file water.cing ~/workspace/pset1. Program kasebut kudu ngetung pirang-pirang botol banyu sing digunakake kanggo adus gumantung saka wektu. Iku:
  1. Program takon pangguna kanggo jumlah menit ngginakaken ing padusan
  2. Pangguna ngetik integer positif
  3. Program kasebut nampilake jumlah botol sing digunakake pangguna.
username:~/workspace/pset1 $ ./water
minutes: 10
bottles: 120
Kanggo kesederhanaan, wektu iki kita bakal nganggep manawa pangguna tansah ngetik nomer menit kanthi bener, yaiku, kita ora mriksa manawa nomer sing dilebokake iku positif lan integer. Mengko kita bakal sinau carane nulis cek, nanging saiki iki cukup. Kanggo mriksa manawa program kasebut mlaku kanthi bener, check50,sampeyan kudu ngetik baris ing ngisor iki ing terminal:
check50 2015.fall.pset1.water water.c
Lan yen sampeyan pengin ndeleng kepiye program watersing ditulis dening staf kursus, jalanake perintah ing ngisor iki:
~cs50/pset1/water

Tugas 2. Mario karo kita!

Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4) - 3Apa sampeyan ngerti tukang ledeng paling misuwur ing donya? Kanthi bantuan saka Nintendo, wong mustachioed fiksi lan rada plump ing tutup abang wis dadi pahlawan kanggo sawetara generasi tukang game. Yen sampeyan ora ngerti sing kita ngomong bab, punika link kanggo klasik 1985 game : dipercaya kula, iku isih apik lan worth mriksa metu! Sampeyan uga bisa nemokake versi Super Mario klasik kanggo smartphone utawa emulator offline. We kudu kabeh iki kanggo pembangunan umum, iki, sayangé, durung tugas;). Lan tugas iki. Ing pungkasan tingkat Mario pisanan, saben pemain weruh setengah piramida iki: Nggawe file mario.cing Panjenengan ~/workspace/pset1. Program kita bakal nggambar setengah piramida sing padha karo sing sampeyan deleng, nanging langsung ing konsol, tanpa grafis: saben blok bakal kalebu lambang hash (#). Sanajan sampeyan durung ngerti carane nindakake, percayaa: gampang. Kanggo nggawe masalah luwih menarik, ayo nambahake kemampuan kanggo nyetel dhuwur setengah piramida kanthi nggunakake integer non-negatif saka 0 nganti 23. Dhuwur piramida ing gambar dianggep paling dhuwur, iku, witjaksono kanggo 8. Yen pangguna salah ngetik nomer, sampeyan kudu takon marang apa maneh sapisan. Banjur generate (nggunakake printf piramida). Ati-ati kanggo nyelarasake pojok kiwa ngisor setengah piramida karo pojok kiwa jendhela terminal, kaya ing conto ing ngisor iki. Teks sing digaris ngisor yaiku apa sing dilebokake pangguna.
username:~/workspace/pset1 $ ./mario

height: 8
       ##
      ###
     ####
    #####
   ######
  #######
 ########
#########
Elinga yen rong kolom paling tengen dhuwure padha. Iku ora worth ngasilaken pipo, mega lan Mario dhewe durung =). Paling ora kanggo tugas iki. Yen pangguna salah ngetik data (nglebokake dudu nomer, utawa ngetik nomer sing kurang saka siji utawa luwih saka 23), program kasebut kudu njaluk dheweke ngetik data maneh, kaya ing conto ing ngisor iki, ing ngendi teks sing digaris ngisor yaiku apa pangguna ngetik saka keyboard. Kanggo maca string sing dilebokake, gunakake GetInt. Bisa mbantu mriksa input sing salah, nanging ora ing kabeh kasus.
username:~/workspace/pset1 $ ./mario
Height: -2
Height: -1
Height: foo
Retry: bar
Retry: 1
##
Kanggo ngumpulake program, ketik baris ing terminal:
make mario
utawa versi sing luwih transparan nanging luwih dawa:
clang -o mario mario.c -lcs50
Sawisé iku, mbukak program kanggo eksekusi:
./mario
Yen sampeyan pengin mriksa manawa program kasebut mlaku kanthi bener, bukak check50:
check50 2015.fall.pset1.mario mario.c
Lan yen sampeyan pengin muter karo versi asisten kursus mario, ketik baris ing ngisor iki:
~cs50/pset1/mario

Tugas 3. Wektu kanggo njaluk owah-owahan

Harvard CS50: Tugas Minggu 1 (Kuliah 3 lan 4) - 4Ing garis lintang kita, kita durung weruh iki, nanging ing Amerika Serikat, misale jek ana dolanan kaya ngono, ditampilake ing foto: silinder dirancang kanggo dhuwit recehan kanthi diameter sing beda (lan denominasi), dibebasake kanthi mekanisme spring. , lan unit dhewe bisa ditempelake ing sabuk kasir anak. Nanging, apa sing kedadeyan yen ana sing mbayar kasir kanthi tagihan gedhe? Mbayangno carane akeh alangan bakal count dhuwit recehan kanggo owah-owahan. Kanggo nyilikake jumlah dhuwit recehan ditanggepi, sampeyan bisa nggunakake supaya disebut-algoritma "rakus". Dheweke, kaya sing ditegesake dening Institut Standar lan Teknologi Nasional (NIST), mesthi nemokake solusi sing paling optimal ing saben langkah kanggo ngrampungake masalah, kanthi nganggep yen solusi pungkasan (dipikolehi saka totalitas langkah kasebut) uga bakal optimal. Iki artine apa? Ayo mbayangno sing kasir utang customer 41 sen ing owah-owahan, lan wis silinder dhuwit recehan ing sabuk kanggo owah-owahan ing denominations 25, 10, 5 lan 1 sen. A kasir dipandu dening algoritma "rakus" bakal langsung arep menehi metu maksimum ing langkah banget pisanan. Ing titik iki, solusi sing paling optimal utawa paling apik yaiku menehi 25 pence. 41-25 = 16. 16 pence isih kanggo mbayar metu. Temenan, 25 pence kakehan, supaya ninggalake 10. 16-10 = 6. Saiki kita menehi 5 pence nggunakake prinsip sing padha, lan banjur 1. Mangkono, sing tuku mung bakal nampa papat dhuwit recehan ing denominasi 25, 10, 5 lan 1 pend. Pranyata yen instruksi langkah-langkah "rakus" kanggo ngetokake dhuwit optimal ora mung kanggo kasus iki, nanging uga kanggo denominasi mata uang AS (lan Uni Eropa uga). Yaiku, yen kasir duwe dhuwit recehan sing cukup saka denominasi apa wae, algoritma kasebut bakal paling apik, yaiku, bakal ngetokake jumlah dhuwit minimal saka kabeh kasus sing bisa ditindakake. Dadi, apa jumlah dhuwit minimal sing kudu kita ganti? Iki tugas katelu kita. Gawe file greedy.cing direktori sampeyan ~/workspace/pset1. Diwenehi: dhuwit recehan ing denominasi 25, 10, 5, 1 sen Program kudu:
  1. Takon pangguna carane akeh owah-owahan kanggo menehi metu
  2. Etung jumlah minimal dhuwit recehan sing sampeyan bisa nindakake iki
Cathetan:Kita bakal nggunakake fungsi GetFloatsaka perpustakaan CS50 kanggo input lan printfsaka aku standar / perpustakaan O kanggo output. Kajaba iku, program kudu mriksa bener saka input. We takon sampeyan nggunakake GetFloat, kanggo ngidini pangguna ngetik nilai ing dolar lan sen dipisahake dening titik. Contone, yen kita duwe utang $ 9,75, pangguna kudu ngetik 9,75, nanging ora $ 9,75 utawa 975. Sampeyan kudu mesthekake yen pangguna ngetik nomer sing cocog. GetFloatAyo ngomong non-negatif; fungsi kasebut ora bakal mbantu . Yen pangguna nggawe input sing salah, sampeyan kudu njaluk dheweke mbaleni lan mbukak program mung kanthi data sing bener. Ati-ati karo ora akurat sing ana ing nomer floating point. Contone, 0,01 ora bisa dituduhake langsung minangka float. Coba gunakake output sing diformat, contone kanthi 50 panggonan desimal, nggunakake kode ing ngisor iki:
float f = 0.01;
printf("%.50f\n", f);
Miturut cara, sadurunge ngetang apa-apa, iku bakal logis kanggo ngowahi kabeh jumlah menyang sen (lan ing wektu sing padha ngowahi saka floatkanggo int), kang bakal bantuan kanggo supaya akèh kasalahan lan kangelan. Kanggo mesthekake yen analisa kode otomatis bisa mriksa masalah sampeyan kanthi bener, priksa manawa baris pungkasan output program sampeyan ora ngemot informasi liyane kajaba jumlah dhuwit minimal: integer kanthi \n sawise iku (sing sinau JavaRush ngerti apa sing kita omongake ing kene =)). Ing ngisor iki minangka conto kaya apa asil program sampeyan.
username:~/workspace/pset1 $ ./greedy
O hai! How much change is owed?
0.41
4
Diwenehi sifat nomer ngambang titik, sampeyan bisa nglirwakake nul lan ketik nomer kuwi ing wangun .41. Mesthine, pangguna sing pengin mriksa program kanggo kemungkinan ngetik data sing salah kanthi lengkap kudu ndeleng kaya:
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
Adhedhasar syarat kasebut lan conto sing sampeyan deleng ing ndhuwur, kode sampeyan mesthine ngemot sawetara jinis loop. Yen, nalika nyoba aplikasi, sampeyan ngerti yen loop ora mandheg, sampeyan bisa ngganggu eksekusi program kanthi kombinasi ctrl-c (kadhangkala kaping pirang-pirang). Sampeyan wis ngerti carane ngumpulake lan mbukak program. Yen sampeyan pengin mriksa apa program sampeyan bisa digunakake kanthi bener, nggunakake sarana check50, ketik baris ing ngisor iki ing terminal:
check50 2015.fall.pset1.greedy greedy.c
Lan yen sampeyan pengin muter program iki digawe dening asisten kursus, tulis printah ing ngisor iki:
~cs50/pset1/greedy

Carane validasi kode lan entuk tandha

  1. Pilihan 1

    Yen penting kanggo sampeyan mriksa bener kode, lan ora kanggo njaluk bahan final, sampeyan bisa mriksa lan mbenerake nggunakake printah.

    check50 2015.fall.pset1.name name.c

    mlebu ing baris terminal CS50 IDE? ngendi namejeneng file tugas sampeyan.

  2. Pilihan 2

    Yen sampeyan pengin entuk biji (utamane padha karo mriksa50, nanging kanthi ngelingi asil lan ngisi sawetara formulir ing basa Inggris, banjur tindakake langkah iki:

    • Langkah 1 saka 2

      1. Nalika aplikasi wis siyap, mlebu menyang CS50 IDE.
      2. Ing pojok kiwa ndhuwur CS50 IDE, ing browser file, dudu jendhela terminal, klik kiwa utawa klik-tengen ing file hello.c (sing ana ing direktori pset1) banjur klik Download. Sampeyan kudu nemokake yen browser wis dimuat hello.c.
      3. Baleni kanggo banyu.c.
      4. Baleni kanggo mario.c.
      5. Baleni kanggo srakah.c.
      6. Ing tab utawa jendhela sing kapisah, mlebu menyang CS50 Kirim .
      7. Klik Kirim ing pojok kiwa ngisor jendhela.
      8. Ing Masalah Set 1 ing jendhela sing katon, klik Unggah Kiriman Anyar.
      9. Ing jendhela sing katon, klik Tambah file…. Jendhela sing diarani Open Files kudu katon.
      10. Navigasi menyang lokasi sing diundhuh hello.c. Biasane dumunung ing folder Downloads utawa ing folder sing ditugasake kanggo sampeyan minangka standar kanggo download. Sawise sampeyan nemokake hello.c, klik sapisan kanggo menehi tandha, banjur klik Bukak.
      11. Klik Tambah file... maneh lan jendhela Open Files bakal katon maneh.
      12. Saiki golek file water.c kanthi cara sing padha. Klik ing, banjur klik Bukak (utawa "Bukak").
      13. Saiki golek mario.c. Lan uga klik lan mbukak kanthi cara sing padha.
      14. Kabeh padha karo file greedy.c.
      15. Klik Mulai upload kanggo miwiti ngunggah file menyang server CS50.
      16. Ing layar sing katon, sampeyan bakal weruh jendhela kanthi label Ora Ana File sing Dipilih. Yen sampeyan mindhah kursor mouse menyang sisih kiwa layar, sampeyan bakal weruh dhaptar file sing wis diundhuh. Klik ing saben kanggo konfirmasi isi saben. (Ora perlu ngeklik tombol utawa lambang liyane). Yen sampeyan yakin wis siyap ngirim file kanggo verifikasi, nimbang sing wis rampung! Yen sampeyan pengin mriksa kode maneh dhewe utawa ndandani apa wae, bali menyang CS50 Kirim lan baleni langkah iki. Sampeyan bisa ngirim maneh minangka kakehan sing pengin; Mung kiriman paling anyar sing bakal dievaluasi.
  3. Langkah 2 saka 2 (ora dibutuhake kanggo evaluasi, yen iku =))

    Saiki pindhah menyang https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x ing ngendi sampeyan bakal nemokake formulir khusus. Ing wong-wong mau sampeyan kudu mangsuli sawetara pitakonan teoretis, banjur klik Kirim ing ngisor iki.

Pitakonan kanthi tanda bintang dibutuhake:
  • Oke, mesthine wis weruh iki teka! Ing mung sawetara ukara, apa perpustakaan? * (Jelasake kanthi ringkes apa iku perpustakaan)
  • Ing sawetara ukara, peran apa #include <cs50.h> nalika sampeyan nulis ing ndhuwur sawetara program? *(Apa peran baris #include <cs50.h> sing katon ing ndhuwur sawetara program?)
  • Kira-kira pirang jam sampeyan bakal ngentekake Masalah Set 0: Scratch?
  • Kira-kira pirang jam sampeyan bakal ngentekake Masalah Set 1: C?
  • Apa pendapat sampeyan babagan CS50x nganti saiki? *(Pendapat sampeyan babagan CS50 saiki, pilih opsi kaya utawa ora seneng)
  • Apa sampeyan njaluk bantuan saka kanca sakelas utawa staf liwat CS50s Facebook Group ing http://www.facebook.com/groups/cs50? *(wis njaluk tulung marang siswa utawa asisten liyane ing grup facebook)
  • Apa sampeyan njaluk tulung marang kanca sekelas utawa staf liwat CS50s Subreddit ing http://www.reddit.com/r/cs50 *(Apa sampeyan njaluk tulung marang siswa utawa asisten liyane liwat Subreddit)
  • Apa sampeyan wis njaluk bantuan saka kanca sekelas utawa staf liwat Twitter nggunakake @cs50 utawa #cs50? *(Apa sampeyan njaluk bantuan marang siswa utawa TA liyane ing Twitter nggunakake @cs50 utawa #cs50).
Kanca-kanca, yen sampeyan duwe pitakon, tulisake ing komentar ing pandhuan iki. Yen sampeyan durung tekan JavaRush level 5 kanggo nampa undhangan kanggo info, disaranake sampeyan nglakoni. Iku gratis, menarik lan ora angel banget.

Sumber kode:

  1. Kuliah telu

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

  2. Kuliah papat

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

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

sastra tambahan

http://cpp.com.ru/kr_cbook - versi Rusia saka buku klasik ing C saka penulis basa - Brian Kernighan lan Dennis Ritchie. Dikenal ing bunderan sempit minangka K&R. Nanging terjemahan kasebut dudu edisi paling anyar. Waca telung bab pisanan. Bakal ana luwih akeh materi tinimbang sing sampeyan butuhake, nanging cukup kanggo ngatasi masalah. https://computer.howstuffworks.com/c.htm punika sumber dianjurake dening penulis CS50. Ing basa Inggris. kaca 1-7, 9 lan 10.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION