[Bermain muzik] JASON Hirschhorn: OK, semua orang. Selamat datang ke Bahagian. Ini adalah CS50, sangat kami seksyen super pertama. Seperti yang anda semua tahu, minggu depan bahagian tetap akan bermula, tetapi minggu ini kita semua bersama-sama. Terdapat diri saya sendiri. Nama saya Jason. Saya adalah seorang pensyarah dalam bidang Sains Komputer. Kami mempunyai Andi, siapa kepala TA CS50. Dan Scaz, Profesor Brian Scassellati, dia seorang profesor dalam bidang Sains Komputer. Kami adalah kepala-kepala CS50 di Yale. Anda sentiasa boleh e-mel kami heads@cs50.yale.edu. Kami akan berada di kuliah. Kami akan berada di waktu pejabat. Jika ada apa-apa yang pernah kita boleh lakukan untuk anda, apa sahaja yang anda perlukan, berasa bebas untuk menghubungi kami. Jadi apa yang kita akan lakukan hari ini? Atau sebelum itu, apa yang datang minggu ini? Jadi waktu pejabat adalah Isnin, Selasa, Rabu dan Khamis, jam 8:00 hingga 11:00. Ada jadual di laman web. Bahagian, seperti yang saya sebutkan, bermula minggu depan. Dan anda akan mengetahui minggu ini apa kalanya seksyen anda, apa hari ini, dan yang TA anda. Set Masalah 1 adalah kerana pada hari Khamis pada tengah hari, Jumaat pada tengah hari dengan hari yang lewat. Ya, anda mempunyai sembilan hari lewat. Dan terdapat sembilan set masalah. Dan hanya boleh menggunakan satu sehari lewat setiap set masalah. Ya, pada hakikatnya, semua masalah set adalah disebabkan Jumaat di tengah hari. Itu sahaja. Semua yang butiran adalah pada sukatan pelajaran. Setiap hari Jumaat, kami mempunyai makan tengah hari. Kami suka untuk membuat ini besar tentu merasa sedikit lebih kecil. Jadi, anda dialu-alukan untuk RSVP. Makan tengah hari percuma dengan rakan-rakan rakan-rakan dan kakitangan. cs50.yale.edu/rsvp. Semua perkara-perkara yang Saya mempunyai pada skrin, dan banyak lagi, anda boleh mencari cs50.yale.edu atau cs50.harvard.edu, jika anda pergi ke Harvard dan menonton dalam talian ini. Juga di laman-laman web, terdapat satu tan sumber untuk anda. Setiap kuliah bukan sahaja mempunyai video kuliah, tetapi juga menyatakan. Seseorang akan menonton kuliah dan mengambil nota untuk anda. Jadi anda hanya boleh membayar perhatian semasa kuliah, atau anda boleh menggunakan nota mereka / kami nota untuk menambah nota anda sendiri. Terdapat slaid dalam talian. Sumber itu code-- segala-galanya Daud pergi ke atas dalam kuliah, atau Scaz pergi lebih kuliah, yang Kod sumber boleh didapati dalam talian juga, kerana seperti saya, yang disebut video. Bahagian, begitu juga, semua akan difilemkan. Semua orang-orang slaid akan disediakan. Semua kod yang akan disediakan untuk anda. Terdapat seluar pendek di laman web di mana Kakitangan CS50 menghabiskan lima hingga 10 minit melalui topik untuk anda. Sebahagian daripada mereka yang anda telah pun dihadapi dalam set masalah. Waktu pejabat, seperti yang saya nyatakan, Isnin melalui Khamis, 8:00 hingga 11:00. CS50 Kajian adalah sumber yang hebat. Terdapat masalah amalan, slaid sampel, pepijat dikenali bahawa pelajar suka untuk menjalankan ke dalam, untuk dasarnya setiap kita topik akan meliputi dalam kursus ini. Dan akhirnya, pada slaid ini sekurang-kurangnya, Reference50 yang memberi anda maklumat pada semua fungsi C anda boleh pernah mungkin berharap untuk digunakan dan banyak, banyak lagi. Sekali lagi, yang dot dot dot di bahagian bawah skrin adalah untuk menunjukkan bahawa ada juga lebih banyak sumber di kedua-dua laman web: cs50.yale.edu, cs50.harvard.edu. Jadi, apa yang kita lakukan hari ini? Well, pertama saya akan memberi anda melihat sumber. Sudah lakukan yang itu. Lihatlah kepada kami. Sekarang, kita akan pergi ke jenis data dan pengendali dalam C. Kemudian Andi akan datang di sini dan pergi ke perpustakaan di C, Printf (), fungsi yang anda sudah biasa atau cepat akan menjadi sangat biasa. Dan anda juga akan pergi ke atas conditional dan gelung. Dan kemudian akhirnya, Scaz akan pergi ke ID CS50. Jika anda belum merpati di sudah dalam Set Masalah 1, serta bagaimana untuk menggunakan terminal dan berguna arahan dan kemudian memberikan beberapa demo dan amalan pengekodan ID CS50. Sebelum saya melompat masuk ke ini kandungan di sebelah ini, adakah sesiapa mempunyai apa-apa soalan setakat ini? Yang besar. OKAY. Menukar gear. [PERUBAHAN GEAR] Itu adalah saya beralih gear dalam kereta manual. Jadi jenis data dalam C, anda tidak boleh hanya mempunyai x berubah-ubah dan ia berada di baris 10, integer, mungkin nombor 1, pada baris 20, nombor perpuluhan 10.5, dan kemudian pasangan baris kemudian tali, Saya suka CS50. Dalam C, pembolehubah hanya boleh satu perkara, dan satu perkara sahaja. Dan supaya anda perlu memberikan mereka jenis. Dan di atas kapal ini, kita mempunyai senarai jenis. Terdapat aksara, yang berdiri untuk watak. Jadi, itu satu huruf A, B, C, D. Itu juga boleh menjadi ruang, atau yang juga boleh menjadi watak talian baru. Terdapat bilangan bulat, yang hanya nombor, keseluruhan numbers-- atau integer rather-- tetapi tiada perpuluhan. Untuk perpuluhan, kami mempunyai nombor titik terapung. Nombor titik terapung adalah nombor dengan perpuluhan. Maka ada Roh meronta-ronta, yang integer dasarnya lebih lama. Anda akan melihat bahawa yang lama adalah 8 manakala int ialah 4. Saya akan mendapat itu dalam satu saat. Ini kerana longs boleh menyimpan walaupun lebih integer daripada int boleh menyimpan. Double adalah apungan panjang. Dan akhirnya, kami mempunyai tali, yang merupakan jenis yang bahawa anda mungkin telah digunakan sebelum ini. Jika anda termasuk hashtag # includeCS50.h dalam fail sumber anda, maka anda boleh menggunakan jenis tali. Ia tidak benar-benar dibina ke C. Terdapat beberapa jenis yang lain. Tetapi ini adalah orang-orang yang utama dengan yang akan anda gunakan dan hadapi. C sebagai, sekali lagi saya nyatakan, setiap variable-- ia hanya boleh satu jenis dan satu jenis sahaja. Ini kerana C adalah statik bahasa bertaip, yang bertentangan ke bahasa dinamik ditaip di mana jika anda membuat pembolehubah anda boleh mengubah apa yang disimpan dalam ia seperti yang anda pergi dalam program anda. Di sini di sebelah kanan sampingan, saya mempunyai saiz yang berbeza ini jenis data dalam bait. Jadi watak adalah 1 bait. Itulah 8 bit. Dan ini bermakna kerana 8 bit ada lapan 0 dan 1s. Kami melihat orang-orang demo dalam yang pertama minggu dengan yang mentol binari. Dengan 8 bit atau 1 bait, kita boleh mewakili nombor dari 0 hingga 255. Betul. Jika semua 8 bit 0 itulah 0. Jika bit pertama adalah 1, itu jumlah satu, dan sebagainya, semua jalan sehingga 255. Dan itulah sebabnya untuk watak-watak yang anda boleh mempunyai dasarnya sehingga 255 daripada mereka, tetapi itu perkara untuk meliputi semua watak-watak kita perlu menggunakan. Untuk integer, anda boleh mempunyai 0 dan maka anda mempunyai 2 hingga 32 tolak 1. Mereka adalah bagaimana banyak pilihan anda ada untuk integer. Untuk yang lama, anda mempunyai 0 2 hingga 64 tolak 1. Jadi, anda mempunyai banyak, banyak, lebih banyak pilihan untuk Roh meronta-ronta. Strings, itu adalah satu tanda tanya kerana itu adalah satu cliffhanger untuk masa lain. Yeah. Saya boleh memberitahu semua orang yang di tepi tempat duduk mereka, seperti apa itu tanda tanya? Ia cliffhanger. Kami akhirnya akan meliputi saiz tali dan bercakap lebih lanjut mengenai tali. Kerana tali sebenarnya salah satu roda latihan kita memakai pada yang demikian tentu pada permulaan dan kemudian mengambil kira kemudian pada, kerana tali dalam C sebenarnya petunjuk kepada barisan watak. Tetapi sekali lagi, itu adalah satu Cliffhanger untuk masa lain. Sebelum saya meneruskan sebarang pertanyaan, komen, kebimbangan mengenai slaid ini? OKAY. Saya perlu menjadi Penerang hebat. Juga apabila anda pengaturcaraan, anda akan menggunakan operator ini. Tanda-tanda benar-benar mudah yang boleh melakukan mudah operasi, yang mana anda mungkin sudah sangat biasa. Sebagai contoh, di sebelah kanan sebelah, kita lihat tambah. Untuk menambah, anda hanya melakukan tanda Plus. Dan supaya anda mungkin mempunyai dua pembolehubah x dan y. Anda boleh melakukan x + y dalam kod anda. Mungkin anda mahu supaya- mengatakan anda mempunyai nombor 7 dan 3, Anda ingin simpan yang dalam sejumlah pembolehubah dipanggil. Anda boleh melakukan int untuk jenis, ruang Kesimpulannya, nama pembolehubah, = 7 + 3; Apa yang akan bahawa kedai dalam jumlah? Sesiapa sahaja? Jika saya mempunyai dalam jumlah = 7 + 3. Apa yang akan disimpan di dalam jumlah? Anda hanya boleh menjerit keluar. PENONTON: 10. JASON Hirschhorn: 10! Itu betul-betul betul. Bagaimana pula dalam jumlah = 7 - 3, Saya hanya menggunakan bahawa tanda sengkang. Apa yang akan disimpan? PENONTON: 4. JASON Hirschhorn: 4. Sum mungkin nama yang salah untuk berubah-ubah itu, tetapi 4 akan disimpan. Untuk membiak dalam C, gunakan sedikit Watak Star, anda tidak menggunakan x. Untuk membahagikan, gunakan Hadapan Tidak Slash simbol bahagian ini. Dan untuk modulo, menggunakan simbol Peratus. Jadi katakan saya mahu melihat int z = 7% 3, apa yang akan disimpan di dalam z? Jadi, yang pada asasnya bertanya apakah modulo lakukan? Adakah sesiapa tahu apa modulo tidak? Yeah. y 4. SPEAKER 1: Ia bakinya. JASON Hirschhorn: Ia adalah baki apabila anda membahagi. Jadi 7 dibahagikan dengan 3 adalah 2 baki 1. Jadi 1 akan disimpan. Anda melakukan penolakan, tetapi itulah bagaimana ia berfungsi. Itulah yang pengendali modulo tidak. Ia mengambil sebilangan membahagikan oleh nombor lain dan pulangan kepada anda bakinya. Jadi sekali lagi, 7% 3 memberikan anda 1, kerana 7 dibahagikan dengan 3 adalah 2 baki 1, dan mengembalikan bakinya. Bagaimana pula mari kita kembali ke atas satu langkah itu tanda bahagi. Jika saya 7 / dibahagikan dengan 3 tidak sesiapa tahu apa yang akan kembali? SPEAKER 2: 2. JASON Hirschhorn: Mengapa 2 dan tidak 2,333? SPEAKER 2: Saya rasa ia memotong kira selepas seluruh nombor. JASON Hirschhorn: Jadi yang betul-betul betul. Dalam C, jika anda melakukan pembahagian dua integer 7 dibahagikan dengan 3, ia mendapat jawapan yang dalam kes ini 2,3333 selama-lamanya dan ia mendapati bahawa titik perpuluhan dan pancungan segala-galanya di luar selepas perpuluhan dan ia hanya mengembalikan anda 2. Jadi jika saya 8 dibahagikan dengan 3. Yang sebenarnya, kita tahu bahawa untuk kembali 2,666, tetapi ia pancungan semua yang turun di perpuluhan, truncates itu semua, dan hanya kembali kepada anda 2. Jadi 6 dibahagikan dengan 3, 7 dibahagikan dengan 3, 8 dibahagikan dengan 3, semua akan kembali kepada anda 2. Kawan atau musuh, atau meraba-raba, bagaimana saya benar-benar boleh mendapatkan jawapan penuh jika saya mahu perpuluhan itu? Yeah. Teruskan. SPEAKER 3: Gunakan apungan? JASON Hirschhorn: Apa yang kamu maksudkan? SPEAKER 3 oleh karena kamu berkata apungan adalah untuk nombor [didengar] JASON Hirschhorn: Betul. Jadi, yang betul-betul betul. 7 adalah bilangan bulat. Tetapi jika saya mahu menghidupkan yang kepada beberapa titik terapung, Saya perlu menyimpan yang sebagai 7.0 kerana komputer adalah benar-benar stupid-- kita melihat bahawa dengan PB dan J example-- ia hanya akan melakukan perkara apa yang anda beritahu. Jadi, jika anda menulis 7, fikir itu integer. Jika anda menulis 7.0, walaupun kita tahu perkara-perkara yang setara, ia merawat yang seperti terapung nombor titik. Jadi, jika anda lakukan 7,0 dibahagikan dengan 3, atau dibahagikan dengan 3.0, ia akan berkata, OK, sekarang kita sedang berurusan dengan pelampung. Aku akan kembali kepada anda 2.333333 selama-lamanya. Tetapi tidak benar-benar selama-lamanya, kerana kerana kita juga melihat di kuliah, nombor-nombor titik terapung tidak betul-betul tepat. Jadi jika anda mahu perpuluhan itu, atau sebahagian daripada perpuluhan itu, maka anda perlu use-- salah seorang daripada mereka telah menjadi nombor titik terapung dan komputer perlu memahami bahawa ini adalah satu titik terapung anda menguruskan, tidak integer. Mana-mana soalan di atas meja yang di sebelah kanan, setakat ini? Atau sebelah tangan kiri anda, anda kiri, sebelah kiri anda. Yeah. SPEAKER 4: Betul. Sebab sama suka tetap integer, anda akan write-- akan anda perlu menulis terapung? JASON Hirschhorn: Yeah demikian. Nah, jika anda ingin membuat pembolehubah itulah apungan, anda perlu berkata apungan z sama sesuatu. SPEAKER 4: OK. JASON Hirschhorn: Tetapi jika saya mahu melakukan 7 dibahagikan dengan 3 dan mendapat perpuluhan itu, Saya akan melakukan apungan z = 7.0 / 3.0; dan yang memberi aku tempat yang terapung nombor. SPEAKER 4: OK. JASON Hirschhorn: Jika saya lakukan sesuatu seperti int z = 7/3, yang memberi aku integer, kerana mereka adalah semua integer. Adakah ini masuk akal? SPEAKER 4: Ya. JASON Hirschhorn: OK. Yang besar. Sebarang pertanyaan lain mengenai jadual yang? Betul ke? Saya sangat teruja. OKAY. Jadi beberapa perkara yang anda akan menggunakan, sering kali dalam keadaan atau gelung, adalah jenis operators-- jenis ungkapan Boolean. Dan seperti yang kita belajar, == adalah apa yang anda gunakan untuk memeriksa jika dua perkara yang sama. Jadi di sini saya memeriksa jika x == y, mari kita lagi menganggap bahawa x adalah 7 dan y ialah 3. Jadi, jika saya menulis 7 == 3, apa yang akan kembali kepada saya? Adakah itu benar atau salah? PENONTON: Palsu. JASON Hirschhorn: OK. Saya rasa seperti semua orang boleh mendapatkan satu ini. Jadi semua orang, apa yang akan yang kembali? PENONTON: Palsu. JASON Hirschhorn: Palsu. Yang besar. 7 tidak sama 3. Jadi 7 == 3 akan kembali palsu. Anda mempunyai tanda tidak sama, jadi jika saya diperiksa 7! = 3, apa yang akan yang kembali? PENONTON: Benar. JASON Hirschhorn: Benar. Sangat baik. Somebody sangat tegas dalam belakang dan menghargai bahawa. Kemudian anda mempunyai kurang daripada operator, kurang daripada atau sama dengan operator, lebih besar daripada pengendali, lebih besar daripada atau sama dengan operator. Jadi satu lagi kewarasan cek. Jika saya mempunyai 7 adalah lebih besar daripada atau sama dengan 3. Apa yang akan kembali? PENONTON: Benar. JASON Hirschhorn: Benar. Ya. Bahawa bilik belakang, tepi belakang dari bilik, yang hebat. Anda boleh menggabungkan kedua- Ungkapan jika anda suka, dan juga, dengan logik DAN yang && Atau logik OR yang || ||. Dan sekarang anda boleh menguji dua perkara together-- Adakah itu lucu? Mengapa yang lucu? Jadi, jika saya mahu, saya boleh katakan adalah 7 lebih besar daripada 3 DAN 2 adalah kurang daripada 4? Nah, jika 7 adalah lebih besar daripada 3, yang benar. 2 adalah kurang daripada 4, itu benar. Jadi semua ini akan kembali benar. Jika saya diuji 7 adalah lebih besar daripada 3 dan- Saya hanya memilih nombor rawak sini-- 4 adalah kurang daripada 2, baik, itu palsu. Jadi benar dan make palsu palsu. Dan anda boleh pergi pada dan anda menggabungkan sebagai banyak keadaan bersama-sama seperti yang anda suka. Adakah sesiapa mempunyai sebarang pertanyaan, komen, kebimbangan setakat ini? Dan saya melihat ada di antara kamu mengambil gambar saya dalam skrin, yang saya menghargai. Mudah-mudahan, ia tidak Snapchat. Mudah-mudahan, ia adalah untuk nota anda. Tetapi semua ini akan boleh didapati dalam talian. Jadi, anda tidak perlu mengambil gambar ini. Seperti yang saya nyatakan, segala-galanya boleh didapati dalam talian untuk anda. OKAY. Saya kira-kira untuk mendapatkan pentas telah hampir tiba, begitu juga sesiapa mahu berkata apa-apa sebelum itu berlaku? Soalan? [Interposing SUARA] JASON Hirschhorn: Oh, berhenti. Anda lelaki yang terlalu baik. OKAY. Saya akan menandakan keluar. Jom. ANDI PENG: Kami akan lakukan perubahan mic janggal sekarang. JASON Hirschhorn: Saya akan mengambil ini di luar. ANDI PENG: Menghargai sokongan, guys. Bolehkah anda mendengar saya? Adakah itu baik? Perfect. Indah. Biar saya tuck yang masuk. OKAY. Jadi, saya hendak dilakukan seperti gergasi maklumat membuang pada anda semua sekarang. Dan tidak ada kebimbangan apa pun jika anda tidak mengikuti setiap baris sedikit daripada apa yang Saya akan menunjukkan kepada anda. Sebagai Jason berkata, segala-galanya adalah dalam talian. Hanya kita akan cuba untuk memperkenalkan semua orang untuk konsep-konsep dalam beberapa siri kuliah ini. Jadi hanya mengikuti bersama-sama. Jangan bimbang jika anda tidak memahami segala-galanya; Walau bagaimanapun, jika pada bila-bila anda rasa yang hilang, meningkatkan anda tangan, kita akan berhenti, tidak ada kebimbangan. Sejuk. Jadi saya fikir sesuatu yang David mempunyai sudah jenis yang disebut dalam kuliah dan Jason telah sejenis dirujuk untuk hari ini adalah apa perpustakaan adalah. Jadi dalam pengaturcaraan, kita ada perkara-perkara ini dipanggil perpustakaan. Di mana, pada dasarnya, semua mereka hanya satu set fungsi, iaitu pada dasarnya hanya kod itu telah ditulis oleh orang lain yang kita semua boleh penggunaan dalam program kami. Jadi bagaimana yang normal kerja perpustakaan, bukan? Anda memasuki pintu perpustakaan. Anda mempunyai semua ini buku anda boleh menarik keluar dan anda boleh mengakses maklumat dalam buku tersebut. Perkara yang sama dalam pengaturcaraan. Anda mempunyai perpustakaan yang telah pun telah ditulis oleh orang lain. Dan cara yang anda boleh, sebagai pengaturcara atau seorang pelajar, boleh mendapat akses kepada perpustakaan yang adalah melalui hashtag # include. Sebagai contoh, dalam C kita mempunyai tiga C-- paling biasa digunakan tiga C standard libraries-- perpustakaan input / output, perpustakaan tali, dan perpustakaan matematik. Jadi dalam pertama anda pasangan set masalah, mereka akan menjadi tiga bahawa anda terutamanya menggunakan. Jadi seperti Daud sudah dijelaskan dalam kuliah, Saya standard / O, atau input perpustakaan standard / output tidak tepat itu. Ia membolehkan anda, kod anda, untuk input apa-apa dari pengguna dan output yang ke skrin, pada dasarnya mencetaknya ke skrin. Dan sebagainya bila-bila masa anda menggunakan mana-mana fungsi, contohnya fungsi printf () yang kita akan pergi ke slaid seterusnya, pastikan untuk memasukkan standard I / O perpustakaan atau lain anda tidak akan dapat menggunakan fungsi printf (). Kerana anda, kerana pengaturcara pernah benar-benar menulis fungsi itu, anda hanya menggunakan seseorang kod lain dalam kod anda sendiri. Adakah ini semua orang masuk akal? Sejuk. Dan kemudian kita dasarnya mendapatkan ke perpustakaan string.h dan math.h yang perpustakaan, h hanya melambangkan perpustakaan, perpustakaan lain yang anda akan akhirnya akan menggunakan dalam kod anda. Walau bagaimanapun, bagi tujuan perpustakaan ini, kami juga ada-- daripada class-- ini kami juga mempunyai apa yang dipanggil perpustakaan CS50, cs50.h, di mana kita, untuk semakan anda telah mencipta banyak fungsi yang penting dan berguna. Supaya programmer anda sebagai boleh piggyback off apa yang kita sudah ditulis supaya ini fungsi ini disediakan untuk anda untuk kegunaan anda. Saya akan meliputi beberapa fungsi biasa digunakan, tetapi tahu bahawa ini adalah semua talian googleable. Jangan ragu, tarik ke atas perpustakaan CS50 dan maka anda mempunyai segala fungsi yang ada. Yeah. SPEAKER 5: Oleh itu, jika anda tidak menggunakan perisian yang yang diberikan kepada kami oleh kelas, adakah itu bermakna kita akan mempunyai untuk memuat turun dan mencari header ini memfailkan diri kita dan memberitahu komputer di mana ia? ANDI PENG: Soalan yang hebat. Tepat sekali. Jadi ia seperti jika anda tidak hadir secara fizikal di sebuah perpustakaan, tidak ada cara untuk anda untuk benar-benar pergi dan mengaksesnya. Jadi perkara yang sama dengan pengaturcaraan dalam C, anda perlu memastikan bahawa anda menggunakan kami perkakas kerana perpustakaan sudah dimasukkan ke dalamnya. Dan kemudian apabila anda hashtag #include, perpustakaan di sana. Yeah. Soalan yang baik. Semua orang yang baik? Sejuk. Baiklah. Jadi, kita akan untuk memukul, pada dasarnya, apa yang Fungsi pertama yang kita sebagai pengaturcara adalah akan menggunakan dalam kod kami. Ini dipanggil fungsi printf (). Jadi, printf () fungsi, seperti yang saya telah telah berkata dalam slaid yang lalu, termasuk dalam standard I / O, input standard / output, perpustakaan. Jadi pastikan apa sahaja yang anda using-- oh, saya merebut laser pointer-- apabila anda menggunakan fungsi printf (), anda perlu termasuk standard I / O perpustakaan atau yang lain, apabila anda menyusun, anda akan mendapat ralat kerana komputer akan menjadi seperti, oh saya tidak tahu di mana printf () adalah, anda tidak memberitahu saya di mana printf () adalah. Well printf () termasuk dalam Saya standard / O, jadi apabila anda menggunakan printf (), pastikan anda mempunyai yang talian atas kod anda. Jadi, sebagai contoh, printf () di sini adalah fungsi. Semua ia adalah mencetak sesuatu dalam kurungan kepada pengguna. Adakah sesiapa ingin mengambil tikaman apa baris ini kod kanan di sini akan mencetak? Oleh itu, jawapan yang pada skrin. Sesiapa sahaja? VERDI: Bahagian bawah. ANDI PENG: Verdi, mengapa tidak anda pergi hadapan dan berkata keseluruhan kenyataan itu? VERDI: Hello, nama saya Andi, dan saya berumur 20 tahun. ANDI PENG: Ah, indah. Jadi dalam baris ini kita akan mencetak, Hello, nama saya adalah Andi, dan saya berumur 20 tahun, yang adalah sebenarnya satu kenyataan yang benar. Sintaksis. Jadi beberapa isu sintaksis yang anda semua ingin memastikan anda tahu. Sebut harga. Tanda petik memberitahu komputer bahawa segala-galanya di dalam akan dicetak. Segala-galanya di dalam tin hanya menjadi betul-betul bagaimana anda taip, kecuali biasanya pada akhirnya, kita akan ingin memasukkan yang hash-- oh sorry-- a n sengkang. Jadi dash n. Adakah sesiapa yang mahu mengambil tekaan apa yang tidak kepada kod kami? Yeah. SPEAKER 6: meletakkan ia pada baris baru. ANDI PENG: Tepat sekali. Jadi semua ini tidak adalah membenarkan apa sahaja yang berlaku selepas ini, selepas kenyataan ini, untuk dicetak kepada barisan baru. Supaya apabila anda menulis anda kod anda tidak secara rawak mempunyai perkara-perkara tacked ke akhir yang anda tidak mahu. Semua yang mendapat kemas dicetak satu baris dan kemudian kita bermula pada baris berikut. Adakah sesiapa ingat apa yang koma bertitik tidak apabila kita pengekodan? Yeah. SPEAKER 7: Penyata. ANDI PENG: Maaf? SPEAKER 7: Adakah ia berakhir kenyataan itu? ANDI PENG: Ya. Jadi, dalam C, atau apa-apa pengaturcaraan bahasa, koma bertitik menandakan akhir garis pengaturcaraan. Jadi, sebagai contoh, dalam bahasa Inggeris kita gunakan tempoh berkata, oh ini adalah akhir ayat. Dalam pengaturcaraan, perkara yang sama, kita mempunyai koma bertitik untuk menandakan akhir baris. Sering kali, apabila anda bermula untuk program, anda akan menyedari bahawa anda lupa untuk menambah koma bernoktah dan kemudian anda cuba untuk menjalankan anda kod dan ia tidak berfungsi. Dan anda seperti, Ah, saya tidak tahu mengapa, ia perlu bekerja. Kemungkinan anda mungkin terlupa yang koma bertitik atau pendakap atau sesuatu di suatu tempat. Jadi, yang penting untuk diingati. Sejuk. Baiklah, mengangkat tangan, bagaimana ramai orang di sini yang pernah diambil AP Sains Komputer atau diprogramkan di Jawa sebelum ini, yang pernah? OKAY. Indah. Itu tidak akan diguna pakai itu, tetapi di Jawa, anda mempunyai sesuatu yang dipanggil System.out.println yang tidak wujud dalam C. Jadi, dalam C, setiap kali anda ingin menambah dalam pembolehubah ke dalam apa sahaja yang anda mahu mencetak, ada sintaks tertentu kita akan gunakan. Yang dipanggil placeholding-- dasarnya kita menambah ruang letak di tempat daripada integer atau pembolehubah yang kita ingin cetak. Jadi seperti yang anda semua boleh lihat kita telah menyertakan tandukan perpustakaan baru memfailkan sini. Perpustakaan CS50. Dan yang terkandung dalam perpustakaan CS50 adalah fungsi yang sama kita akan menggunakan dalam perjalanan kami dipanggil GetInt (). Ada sesiapa mahu mengambil tikaman di apa GetInt () mungkin boleh lakukan. PENONTON: [didengar] ANDI PENG: Maaf. Tidak boleh mendengar anda. Maddie, sesiapa. Maddie: Oh, ia meminta anda integer. ANDI PENG: Tepat sekali. Jadi fungsi ini, satu lagi fungsi yang sudah telah ditulis oleh orang lain yang kita boleh memanggil sekarang. Semua itu adalah mendorong anda, pengguna, untuk memasukkan apa sahaja yang anda mahu sebagai kod sedang berjalan dan ia menyimpan whatever-- dalam kes ini kami GetInt () - ing, jadi ini bermakna kami mendapatkan bilangan bulat. Dan kita akan menyimpan bahawa dalam integer lain yang kita baru sahaja dibuat dipanggil umur. Yang masuk akal untuk semua orang? Sejuk. Jadi sekarang kita telah simpan integer ini, yang kami telah diminta daripada pengguna, dalam pembolehubah ini, kami telah dijadikan dari jenis int dipanggil umur, kita boleh teruskan dan tempat bahawa dalam printf kami () fungsi. Jadi sintaks yang biasanya untuk printf () adalah yang mana sahaja dalam fizikal sebenar anda talian yang anda mahu termasuk integer itu, anda lakukan simbol yang di sana, simbol peratus, dengan jenis pembolehubah yang anda inginkan. Jadi, dalam usia kes ini adalah integer. Jadi, anda akan untuk memasukkan % i kerana ia adalah bilangan bulat. Dan kemudian selepas anda pernyataan, anda akan untuk melakukan koma dan menamakan pembolehubah. Jadi di sini, kita akan mencetak keluar, Hello, nama saya adalah Andi, dan saya berumur tahun kosong. Hashta-- atau, sorry--, umur dengan apa sahaja yang saya input. Jadi jika saya input 20 untuk GetInt saya () di sini, ia akan mencetak perkara yang sama. Tetapi, jika saya mahu input sesuatu lain, seperti mungkin 40 atau 45, maka anda akan melihat yang mencerminkan sewajarnya dalam kod. Jadi ini adalah satu contoh sesuatu di mana ia mencetak keluar dan kelihatan anda seolah-olah ia adalah perkara yang sama, tetapi di bawah bonet komputer ada sebenarnya perkara yang sangat berbeza berlaku. Sejuk. Baiklah. Jadi apa jika kita mahu beberapa pembolehubah? Cukup mudah. Benda yang sama. Kami juga mempunyai fungsi baru di sini dipanggil GetString (), juga termasuk dalam perpustakaan CS50, bahawa semua yang dilakukan adalah meminta pengguna untuk rentetan, iaitu hanya satu set aksara, jadi seperti hukuman atau seperti nama. Jadi dalam kes ini, kita akan mempunyai dua ruang letak% s untuk rentetan dan% i untuk integer. Dan kami akan mengikuti dengan kedua-dua pembolehubah kita mahu dimasukkan, dalam perintah itu bahawa mereka muncul dalam ayat. Jadi, sebagai contoh, nama saya kosong, saya mahu nama di sana, jadi saya akan mempunyai nama yang pertama. Dan kemudian selepas itu, saya ingin umur, mahu mempunyai umur kedua. Dan jadi jika saya mahu input, Hello, Andi nama saya, dan saya berumur 20 tahun. Jika saya diinput Andi dan 20, Perkara yang tepat sama akan mencetak; Walau bagaimanapun, sekarang kita telah mendapat dua disimpan pembolehubah nama serta int. Yeah. SPEAKER 8: Adakah ia dapat berjalan jika anda dihidupkan menamakan dan umur pada akhir itu? ANDI PENG: Ya. Itulah soalan yang benar-benar baik. Jadi cerita panjang pendek, tidak. Oleh kerana nama dan age-- apa jenis pembolehubah adalah nama? SPEAKER 8: String. ANDI PENG: Dan apa jenis pembolehubah umur? SPEAKER 8: Integer. ANDI PENG: Jadi di sini kita mempunyai pemegang tempat yang untuk tali dan integer, bukan? Jadi jika anda adalah untuk menukar ini, komputer tidak akan tahu. Ia akan menyemak tali, dan jika anda cuba untuk memberikan int, ia akan menjadi seperti tunggu saya keliru, anda memberitahu saya saya perlu mengumpukkan memori untuk int. Dan di sini, apabila ia menjangka integer dan anda memberikan nama dan rentetan sebaliknya, ia juga akan menjadi sangat mengelirukan, ia tidak akan berjalan dengan cara yang anda memerlukannya. Jadi di sini, menamakan dan sintaks adalah sangat penting untuk menjalankan kod. Semua orang yang baik? Yeah. Maddie. Maddie: Di sini, saya tahu kita telah melihat contoh-contoh di dalam kelas, di mana mereka meminta Berapa umur anda, apakah nama anda. Di sini, yang akan ia doesn't-- jika kita menjalankan kod ini, ia tidak akan meminta untuk itu? Tetapi anda akan sama input dua nombor dan kemudian ia akan berjalan seperti itu? ANDI PENG: Ya, betul-betul. Jadi, jika anda mahu untuk ia paparan, sila masukkan umur anda, anda hanya boleh menambah fungsi printf () yang mengatakan, Sila masukkan umur anda, di atasnya. Itu satu soalan yang baik. Yeah. SPEAKER 9: Jadi, sudah akan termasuk dalam GetInt () [didengar]. ANDI PENG: Tidak, ia sebenarnya tidak. Jadi semua ini tidak adalah hanya meminta skrin kosong kepada pengguna untuk input sesuatu. Jika anda mahu, jika anda mahu untuk mencetak sesuatu yang memberitahu pengguna seperti, sila berikan saya umur anda, maka anda perlu printf () yang diri sendiri. Oleh kerana semua orang menggunakan ini fungsi untuk perkara yang berbeza, anda boleh menyimpan umur, anda boleh menyimpan alamat, anda boleh menyimpan nombor telefon. Dan supaya ia benar-benar sehingga kegunaan individu lelaki anda untuk apa yang anda mahu ia katakan. Yeah. SPEAKER 10: Jadi, hanya untuk menjelaskan, di mana adakah anda input nama dan umur supaya ia muncul di tempat% s? ANDI PENG: Seperti pada pengguna? SPEAKER 10: Ya, seperti bagaimana saya membuat kitab itu di mana saya meletakkan Andi, dan di mana saya meletakkan 20? ANDI PENG: Ya. Jadi jika anda adalah untuk benar-benar menjalankan kod ini, Saya tidak benar-benar menjalankan kod, ini adalah hanya di sini sekarang. Jika saya menjalankan kod, saya akan menyusun kod, membuat fail, menjalankan kod, dan kemudian ada akan hanya menjadi dua ruang bagi saya untuk input itu. Yeah. Kalian akan melihat apabila anda bermain main dengan kod ini sendiri. Baiklah kita akan bergerak ke dalam seksyen seterusnya apa kita akan meliputi hari ini. Kami akan pergi ke atas apa kenyataan bersyarat berada. Jadi, jika anda semua masih ingat dan ingat dari kuliah, kenyataan bersyarat, semua mereka adalah adalah satu set arahan untuk komputer dalam yang jika keadaan tertentu adalah benar, anda melaksanakan kod di di dalam keadaan itu. Jadi pada dasarnya Scratch-- tema besar dari hari ini adalah bahawa anda semua sudah semua dilihat logik di sebalik segala-galanya bahawa kita meliputi. Dan semua yang kita lakukan adalah menterjemahkan sesuatu itu adalah sangat intuitif dalam Awal, dan keras pengekodan ke dalam sintaks kita akan menggunakan untuk kelas yang C. Jadi secara logiknya, semua blok ini adalah ialah sekeping kod di sana. Yeah. OKAY. Kami juga masuk ke dalam lagi jika ... kenyataan yang hanya lapisan ditambah kerumitan kepada jika kenyataan itu mana komputer mengambil melihat ini dan melihat, jika keadaan ini benar, adakah apa sahaja yang di dalam kedua-dua kurungan, else-- supaya jenis seperti lalai jika ia tidak memenuhi condition-- yang melakukan ini. Ia seperti garpu di jalan raya. Jika ia hujan di luar, saya meletakkan pada jaket hujan, apa-apa lagi lagi yang saya tidak memakai jaket hujan. Adakah logik yang masuk akal untuk semua orang? Sejuk. Baiklah. Jadi seperti contoh yang keras ini yang kita akan lihat dalam C jika saya mahu mencipta pembolehubah dipanggil jam kerja rumah. Dan jika waktu kerja rumah adalah kurang daripada lima, saya berkata Kehidupan adalah besar. Ianya indah. Bagaimanapun, berkata perjuangan tersebut real-- iaitu apa yang kita semua pada hari Isnin ini petang sehingga Sains Hill, mungkin melakukan hak sekarang-- PENONTON: [LAUGHING] ANDI PENG: Mereka cara kita akan, terima kasih untuk itu. Cara kita akan Hardcode ini dalam C adalah jika- mari kita andaikan kita sudah mempunyai pembolehubah jenis int dipanggil jam kerja rumah di sini. Jika waktu kerja rumah adalah kurang daripada lima printf (), Life hebat. Ingat menyimpan / n kerana anda mahu barisan baru selepas. Cetak yang lain, perjuangan ini adalah benar. Adakah semua orang memahami bagaimana Saya beralih dari blok ini ke dalam blok ini kod? Sejuk. Baiklah. Oleh sebab itu kita akan lihat pada pelbagai kenyataan Jika sama sekali. Jadi mari kita mengambil alih Tujuan program ini adalah kita meminta pengguna untuk gred. Kami segera menggunakan GetInt () yang gred, dan mereka input nilai, dan anda mahu untuk dipaparkan jenis gred yang mereka ada. Jadi jika saya untuk mereka bentuk program, saya bermakna biasanya dalam semua mata kita, 90-100 adalah A, 80-90 ialah B, dan sebagainya dan sebagainya. Apa yang salah dengan ini sekeping kod bahawa ia bukan melakukan apa yang saya mahu ia lakukan. Yeah. SPEAKER 11: Mereka mempunyai had yang lebih rendah, tetapi mereka tidak mempunyai had atas. ANDI PENG: Tepat sekali. Adakah semua orang mendengar apa yang dia katakan? Terdapat akan menjadi atas had, tetapi tiada had yang lebih rendah. Maaf, cara lain di sekeliling, had yang lebih rendah, tiada had atas. Jadi yang ingin anda mengambil tikaman di berkata apa yang akan dicetak di atas ini skrin jika saya menjalankan kod ini. SPEAKER 11: Ralat? ANDI PENG: Ralat? Tekaan besar, tidak berapa betul. Adakah sesiapa mempunyai tikaman yang lain? Ya, Harun. AARON: Jika anda masukkan ke dalam sesuatu yang lebih besar daripada 90, ia akan menunjukkan semua gred anda dapat. Ia akan menunjukkan kepada anda mendapat A, anda mendapat B, anda mendapat C. ANDI PENG: Ya. Itu betul-betul betul. Jadi, yang akan menjadi indah. Walau bagaimanapun, mereka saling eksklusif, saya fikir. Jika saya berjalan ini sekeping kod. Kemudian mari kita hanya mengatakan, saya diinput gred 95. Jadi 95 kini disimpan di dalam yang int dipanggil gred. Dan sebagainya C adalah bahasa yang yang berjalan sehingga atas ke bawah, supaya ia akan sentiasa melarikan diri hingga ke bawah. Jadi ia akan datang ke sini, dibaca jika gred adalah lebih besar daripada atau sama dengan 90, printf () anda mendapat A. Great, saya mempunyai 95, itu lebih besar daripada 90. Ia akan mencetak, Saya mendapat A. Ia akan untuk mengambil lihat ini jika, ia akan berkata, dengan baik 95 adalah juga lebih besar daripada 80, ia akan mencetak anda juga mendapat Got a tanda B seru, dan sebagainya dan sebagainya sebagainya. Jadi seperti yang kita semua dapat lihat, ini adalah bug yang sama yang mungkin berlaku apabila kita menulis kod untuk melihat keluar untuk. Sesiapa sahaja, apa-apa soalan mengenai mengapa yang sedang berlaku? Yang besar. OKAY. Jadi bagaimana kita menetapkan ini, adalah jelas persoalan seterusnya logik. Nah, kita mempunyai ini indah perkara yang dipanggil jika pun jika lain jika kenyataan yang lain. Jadi, anda boleh lihat, jika anda mahu untuk menukar masalah itu, anda mahu membuat setiap satu daripada keadaan saling eksklusif, anda akan menambah lagi ... jika kenyataan. Dan ini daripada course-- memikirkan mereka sebagai tangga, atau seperti anak tangga pada ladder-- anda boleh menambah seberapa banyak ini kerana anda mahu seberapa banyak syarat yang anda mahu. Jadi di sini, jika saya diinput gred menjadi 95. Jika gred adalah lebih besar daripada 95, printf (), saya mendapat A. Besar. Ia akan melihat lagi ... jika dan ia akan tahu, Oh tidak, Saya telah pun dilaksanakan yang pertama lagi. Saya know-- atau jika- pertama yang saya tahu bahawa Saya tidak perlu melihat mana-mana kerana salah seorang daripada mereka telah pun benar. Jadi ia akan bermula dari atas ke bawah. Sebaik sahaja yang pertama adalah benar, maka ia akan melangkau ke atas semua yang lain daripada ... IFS lain. Adakah ini masuk akal? Jadi, dengan cara ini, anda perlu peringkat semakan dan sebaik sahaja salah seorang daripada mereka adalah palsu, lain juga, mereka tidak akan turut memeriksa. Sejuk. Baiklah. Jadi ini adalah satu contoh yang lain semacam kenyataan bersyarat kita lihat kurang kerap, tetapi kita akan melihat mereka dan menggunakannya. Dan mereka sering lebih berkesan bagi kes-kes tertentu. Oleh itu, kita mempunyai apa yang dipanggil kenyataan suis. Jadi sebelum kita meliputi apa yang lagi satu pernyataan, jika ... kenyataan yang lain. Di sini, kita mempunyai apa yang dipanggil kenyataan suis. Oleh itu, apabila kita menggunakan suis kenyataan adalah kunci? Jadi, dalam satu kenyataan suis, anda biasanya, biasanya, sebenarnya anda hanya boleh integer input untuk anda pembolehubah yang anda memeriksa. Jadi, jika saya mahu untuk memeriksa untuk melihat jika number-- tertentu contohnya gred, jika saya mendapat 90. Saya mahu ia melihat jika itu A, B, atau C. saya boleh mempunyai kes di sini. Walau bagaimanapun, mana-mana yang mempunyai malar lain. Jadi, dalam hal ini, kenyataan suis hanya boleh menyemak kesamaan bagi dua nombor. Ia tidak memeriksa apa-apa lagi. Jadi, itu sesuatu yang sangat berhati-hati apabila anda menggunakan ini. Jadi di sini, jika saya mahu untuk memeriksa untuk melihat jika gred saya 90 adalah sama dengan 90 atau 80 atau 70 atau 60, dan kemudian cetak gred yang sama, Saya akan dapat menulis bahawa dalam satu kenyataan suis. Jadi ia akan datang ke sini, cek adalah integer ini sama dengan malar ini? Jika tidak, ia akan skip. Adakah ia sama dengan yang berterusan dua, dan sebagainya dan sebagainya, sehingga anda memukul lalai, jika seorang pun daripada mereka adalah sama. Sebaik sahaja salah seorang daripada mereka bakal menjadi sama, ia akan melakukan ini baris kod dan rehat. Maksudnya ia akan melanda yang berlari, memecahkan, dan hanya benar-benar skip ke bahagian bawah kod. Dalam erti kata bahawa jenis jadi fungsi seperti jika lain jika lain jika kenyataan. Jadi di sini adalah konkrit contoh untuk anda semua. Jadi mari kita andaikan bahawa saya mahu mencipta pembolehubah yang dipanggil tahun diasaskan. Dan saya ingin meminta pengguna untuk input tahun yang sekolah mereka ditubuhkan. Jadi saya boleh membuat kenyataan suis di sini. Dan mari kita hanya mengatakan, saya input 1636. Kod ini di sini akan melihat suis tahun ditubuhkan yang bersamaan 1.636. Ia akan melihat kes 1636, oh mereka adalah sama, printf () Sekiranya tidak anda menjadi di sekolah ke utara? Kerana kita menganggap mereka tidak pergi di sini jika mereka pergi ke Harvard, memecahkan dan melangkau ke akhir. Jika saya input 1701, yang Saya menganggap kita semua akan input, ia akan melangkau kes ini, datang turun ke kes dua iaitu 1701, dan cetak Selamat datang ke Yale! Break, melangkau ke akhir. Yang lain anda mungkin mengambil kursus ini dalam talian di mana case-- menggerunkan dialu-alukan untuk Yale-- ia akan pergi ke cetak lalai, Hello Internet! Dan pecah. Yeah. SPEAKER 12: Bolehkah anda menggunakan lagi bukan lalai di sana? ANDI PENG: Tidak, kerana cara bahawa fungsi ini keseluruhan suis dibina, sintaks anda perlu menggunakan kes kes lalai. Ia seperti jika lain jika, ini salah ia kes kes lalai. Yeah. SPEAKER 13: Anda mungkin sudah berkata demikian, tetapi boleh anda mempunyai lebih daripada dua kes? ANDI PENG: Ya, anda boleh mempunyai banyak kes-kes yang anda mahu. Anggaplah ia sebagai hanya suka tak terhingga menambah pada. SPEAKER 14: Jika anda dihidupkan 1701 dengan 1636, itu tidak benar-benar membuat hak perbezaan? Ia hanya akan memeriksa untuk itu. ANDI PENG: Itu satu soalan yang benar-benar baik. Dan kita akan menyentuh ini kemudian, tetapi hanya tahu bahawa suis kenyataan ini infinitely-- ia lebih cekap daripada ia dan jika lain jika kerana ia beroperasi menggunakan berlainan jenis fungsi yang membolehkan anda, pada dasarnya, hanya melompat terus ke Sekiranya anda perlu berada di. Yeah. SPEAKER 14: Cool. Terima kasih. ANDI PENG: Ya SPEAKER 14: Dan anda tidak boleh melakukan kes-kes seperti dan lebih besar daripada. ANDI PENG: No. Jadi, itulah apa yang mengehadkan tentang kenyataan suis adalah bahawa anda mempunyai untuk mempunyai pemalar sahaja, hanya bilangan bulat. Yeah. OKAY. Jadi ini adalah sesuatu yang anda seorang lelaki akan menghadapi kurang kerap daripada, tetapi saya hanya mahu memperkenalkannya dalam kes. Kami ada di sini apa yang dipanggil pengendali pertigaan. Di mana pada dasarnya, ia hanya seperti seorang jika kenyataan yang dikumpulkan ke dalam satu baris. Di sini, saya akan pergi ke baris seterusnya, yang halaman seterusnya, kerana lebih mudah untuk melihat. Oleh itu, kita semua telah melihat hak ini? Ini adalah agak mudah untuk diikuti. Jika saya mahu membuat pembolehubah yang dipanggil rentetan bernama s, jika sebilangan Saya memberikan kurang daripada 100, saya ingin gunakan rendah untuk tali, lagi yang saya mahu memberi yang tinggi. Ini di sini adalah melakukan perkara yang sama mereka lapan baris kod lakukan. Jadi di sini saya ingin membuat rentetan berubah-ubah. Dan ini adalah keadaan yang Saya memeriksa, jika nombor adalah kurang daripada 100, maka anda memberikan nilai rendah, lagi yang memberikan nilai yang tinggi. Ini slaid akan berada dalam talian, tidak ada kebimbangan jika anda semua tidak mendapat ini ke bawah. Ini adalah cara yang lebih mudah, yang lebih cara yang berkesan kod bertulis. OKAY. Jadi sekarang kita akan masukkan apa, bagi kebanyakan orang seperti seorang yang sangat, sangat mengelirukan Perkara yang perlu difikirkan pada mulanya. Bahagian gelung. Jadi hari ini, kita akan bercakap kira-kira tiga jenis gelung. Kita akan mulakan dengan seketika gelung, kemudian bercakap tentang do manakala gelung, dan kemudian bercakap tentang untuk gelung. Jadi pada dasarnya, untuk lebih pelajar visual di luar sana, kita ada, pada dasarnya, grafik yang gambaran apa gelung sementara tidak. Jadi dalam pengaturcaraan, anda akan bermula dan masukkan gelung pada titik tertentu. Anda menyemak syarat. Dan jika keadaan ini benar, anda melaksanakan kod di dalam. Dan anda kembali sekitar dan anda menyemak. Jika ia masih benar anda terus berjalan kod ini di sekeliling dan sekitar dalam gelung. Walau bagaimanapun, yang kedua keadaan menjadi palsu, anda akan memecahkan dan menamatkan gelung. Dan ini pada dasarnya adalah sintaks anda akan digunakan. Walaupun keadaan tertentu adalah benar melakukan ini, jika ia tidak benar, anda akan melangkau ke akhir dan bergerak ke hadapan dengan program anda. OKAY. Adakah sesiapa yang mempunyai contoh kepada apa yang mungkin berpotensi berlaku jika saya cuba untuk menjalankan ini sekeping kod? Dengan cara ini, SAJ-- itulah Scaz, Andi, Jason-- kami akan menandatangani e-mel kami, Cinta, SAJ. Itulah kita. OKAY. Sesiapa yang mempunyai contoh, atau mempunyai idea mengenai apa ini akan mencetak? Jenis soalan helah. Jadi di sini, ingat syarat kita memeriksa Sedangkan benar. Oleh itu, sambil ini adalah benar, ia proses penerbitan, saya suka SAJ! Adakah terdapat mana-mana tempat di mana kita akan menukar ini kepada apa-apa sebaliknya? Tidak, bukan? Jadi di sini, kami mempunyai dihadapi apa yang mungkin akan mengganggu banyak program anda, gelung tak terhingga. Anda akan mendapati bahawa jika anda menjalankan ini sekeping kod, ia hanya akan menyimpan percetakan, saya suka SAJ! Walaupun kami menghargai sokongan, kita tidak mahu komputer anda crash kerana anda menjaga percetakan Saya suka SAJ! Oleh itu, sila, sila, mengelakkan gelung tak terhingga kerana ia tidak akan untuk menilai kepada palsu dan anda tidak akan untuk meninggalkan gelung. Dan anda akan disedut dalam selama-lamanya. Sejuk. OKAY. Jenis kedua gelung kita akan bercakap tentang hari ini adalah do manakala gelung, lakukan semasa gelung. Dan ia dipanggil do manakala gelung kerana anda mempunyai tugasan dan seketika. Jadi ini adalah agak serupa dengan seketika gelung, tetapi sedikit berbeza. Di sini, anda akan lakukan apa sahaja yang di dalam ini manakala keadaan tertentu adalah benar. Jadi jika saya C dan komputer saya berlari ke ini sekeping kod, Saya lihat di bahagian atas. Saya pergi ke C, saya katakan melakukan perkara ini. Dan kemudian saya memeriksa, selama ini adalah benar, saya perlu mengulanginya. Tetapi selama ini adalah palsu, maka saya bergerak ke hadapan dan saya tidak pernah kembali ke gelung itu lagi. Bolehkah sesiapa mengambil menikam apa perbezaan antara gelung ini dan satu kita yang hanya kelihatan di adalah praktikal. Yeah. SPEAKER 15: Keadaan ini datang selepas bukannya sebelum ini? ANDI PENG: Tepat sekali. Lalu beliau berkata keadaan datang selepas itu, bukan sebelumnya. Akhirnya, perbezaan antara ini dan gelung sementara adalah bahawa anda hanya akan melakukan apa sahaja yang di dalam ini tanpa mengira sama ada atau tidak keadaan anda benar, dan kemudian memeriksa keadaan. Jadi dalam kes ini, anda always-- dengan cara ini, anda sentiasa memastikan apa sahaja yang di dalam berjalan sekurang-kurangnya sekali sebelum memeriksa untuk melihat jika anda mahu untuk menjalankan lagi. Dan di sini adalah satu contoh bila kita akan menggunakannya. Jadi, sebagai contoh, jika saya mahu mempunyai pembolehubah jenis int bernama umur, dan saya mahu meminta pengguna untuk umur mereka, Saya akan melakukan printf () Apakah umur awak? umur = GetInt (), yang adalah mendorong pengguna. Dan sesetengah orang akan benar-benar menjengkelkan. Dan anda tidak mahu bug dalam anda program seseorang memasukkan seperti, oh saya negatif berumur 4 tahun atau apa sahaja. Di mana jika mereka berbuat demikian, ini menilai kepada benar, yang bermaksud bahawa saya akan perlu menyimpan kembali dan melakukan ini. Jadi ini akan menjaga semula mendorong pengguna untuk memberikan anda seperti yang sebenar nombor umur dan ia akan terus pergi ke belakang dan membuat semula sehingga mereka memberi anda usia yang sebenar lebih besar daripada satu, atau tidak sifar. Maka tanda-tanda, tanda-tanda. Ini akan menjadi sangat, sangat berguna untuk salah satu daripada masalah Serangga anda. Yeah. SPEAKER 16: Alamak, maaf. ANDI PENG: Ya. SPEAKER 16: Adakah di sana, tidak menjadi asshole, but-- ANDI PENG: Tidak perlu risau. SPEAKER 16: --are terdapat peraturan yang berbeza di sini, atau adakah anda hanya lupa untuk meletakkan sebut harga? ANDI PENG: Oh Yeah. Maaf, itu sama sekali tidak baik saya. Itu adalah pasti sepatutnya sebut harga. Tangkapan yang baik. Yang akan tidak berjalan. OKAY. Jadi jenis terakhir gelung kita akan bercakap kira-kira dan, akhirnya, jenis yang paling kompleks adalah untuk gelung. Jangan bimbang jika anda tidak tahu apa yang bermakna. Ia agak mengelirukan pada mulanya. Kami akan pergi ke satu contoh. Semua yang berlaku dalam untuk gelung adalah bahawa anda mempunyai tiga kenyataan yang anda akan masukkan. Jadi untuk satu perkara yang tertentu, anda berada akan memulakan pembolehubah. Anda akan menambah syarat untuk yang gelung ini akan terus berjalan. Dan kemudian, pada akhir gelung, anda akan mengemaskinikannya. Anda boleh mengemas kini pembolehubah yang anda mahu untuk mengesan. Oleh itu, kita biasanya menggunakan untuk gelung apabila kita ingin menjalankan gelung untuk jumlah tertentu kali dan kami sudah tahu, Oh Saya hendak gelung ini untuk melaksanakan seperti 10 kali, maka anda do-- saya akan pergi ke atas contoh pada halaman seterusnya. Jadi di sini sebagai contoh, di Awal, jika anda mahu sesuatu untuk mengulangi 10 kali, semua yang anda katakan adalah, ulangi 10 kali saya suka SAJ! yang merupakan lebih diterima tanda sokongan untuk kita daripada gelung tak terhingga. Di sini, bagaimana yang anda lakukan peralihan kepada C dan menulis iaitu untuk int-- saya akan membuat atau mengisytiharkan pembolehubah jenis int dinamakan i. Saya akan memulakan kepada 0, jadi i = 0; dan ini akan menjadi keadaan saya. Jadi saya adalah kurang daripada 10. Dan kemudian pada end-- pernyataan terakhir anda berada akan mempunyai adalah kemas kini apa yang berlaku kepada saya berubah-ubah pada akhir untuk anda gelung. Jadi ia adalah jenis mengelirukan, kerana bahagian yang berlainan di baris ini yang berlaku di berbeza jenis gelung. Tetapi saya akan pergi ke satu contoh pseudokod itu dan mungkin menjelaskan ini hanya sedikit lebih baik. Jadi di sini. Itulah gelung kita hanya melihat. Pada dasarnya dalam kod pseudo, apa yang berlaku dalam program ini, adalah pertama saya mewujudkan i, Memulakan kepada 0. Saya memeriksa untuk melihat jika i adalah kurang daripada 10, di mana kali pertama ia adalah kerana 0 adalah kurang daripada 10. Oleh itu gelung akan berjalan. Dan kemudian saya akan mencetak baris ini. Dan kemudian pada akhir baris ini, betul-betul di sini, saya akan melakukan kenaikan i, i ++, segala cara yang menokok ia demi satu. Jadi saya kini 1. Kerana ia pernah 0, jika saya kenaikan itu, kini ia 1. Dan kemudian saya akan kembali ke permulaan gelung dan saya memeriksa keadaan. Adalah keadaan yang masih benar? Ya, 1 masih kurang daripada 10. Jadi ia akan mencetak ini lagi, pergi dan kemudian kenaikan i, dan memeriksa syarat secara berterusan, secara berterusan, sehingga anda akhirnya mendapatkan ke titik di mana i adalah 10. Anda akan mencetak ini 10 kali dan kemudian saya akan sama dengan 10. Anda akan memeriksa keadaan. Adalah 10 kurang daripada 10? Tidak, itu adalah palsu. Oleh itu, gelung ini tidak akan untuk menjalankan, ia akan memecahkan, dan anda akan meneruskan dengan kod anda. Jadi seperti yang anda semua boleh lihat, ini adalah contoh yang benar-benar hebat gelung yang anda boleh program dalam bahawa berjalan untuk jumlah yang ditetapkan masa. Setiap orang jelas? Yeah. SPEAKER 17: Bagaimana pula dengan kenaikan dengan pesat, ia pengekodan yang berbeza? ANDI PENG: Anda can-- kami akan pergi lebih ini dalam slaid seterusnya. Soalan yang baik. Adakah anyone-- sebelum saya bergerak pada-- sesiapa pun keliru, kerana ini adalah satu konsep yang benar-benar sukar. Jangan bimbang, jika you're-- OK. Sejuk. Baiklah. Hanya slaid umum. Ini gelung sementara melakukan yang Perkara yang tepat sama bagi gelung adalah. Ia hanya ditulis berbeza. Kalian boleh membaca dengan teliti slaid mengikut keselesaan anda di kemudian hari. Tetapi hanya tahu bahawa ada beberapa cara menulis perkara yang sama berlaku dengan gelung yang berbeza. OKAY. Jadi, kita dalam persoalan apa jika kita mempunyai gelung di dalam gelung. Kami mendapat ke dalam sebenar Barangan jenis penubuhannya di sini. Apabila anda mahu melakukan perkara-perkara pelbagai kali di dalam perkara-perkara lain yang melakukan perkara-perkara beberapa kali, anda mahu apa yang dipanggil bersarang untuk gelung. Bagi anda yang pertama kali melihat ini dan menjadi sangat keliru, semua yang kita lakukan di sini adalah perlu untuk gelung di mana kita mempunyai pembolehubah baris. Tetapi di dalam itu, kami juga mempunyai satu lagi untuk gelung turus berubah dipanggil. Dan saya sangat menyarankan anda semua yang keliru untuk pertama menyimpan track-- menarik ini keluar, menarik ini keluar. Jangan cuba untuk sebab hanya melaluinya, menarik keluar. Dalam kepala anda, di bahagian ini kertas, atau apa sahaja, berturut-turut menulis, mengesan apa baris adalah sama dengan. Tulis lajur, menjejaki apa lajur adalah sama dengan. Dan menjejaki apa yang mencetak dengan setiap lelaran. Setiap lelaran gelung ini, tiap-tiap lelaran gelung yang lebih besar, hanya menyimpan berikut logik. Dan saya jamin anda, anda akan suka apa yang anda lihat, kerana ia juga sangat digunakan untuk set masalah anda. Sejuk. Baiklah. Jadi perkara yang paling penting yang anda semua mungkin semua berfikir tentang sekarang, adalah Set Masalah anda 1s, yang disebabkan Khamis / Jumaat. Dalam program water.c anda, tanda-tanda anda akan mempunyai untuk meminta pengguna untuk input. Dalam program mario.c anda anda akan mempunyai menggunakan bersarang untuk gelung, yang untuk gelung bahagian dalam untuk gelung, untuk mencetak satu blok piramid, pada dasarnya seperti apa yang Mario mempunyai untuk melompat melalui. Dan kemudian di dalam greedy-- atau anda mungkin Membuat Perubahan, sesiapa di antara kamu seorang lelaki pernah mendengar tentang bahawa- anda akan perlu berhati- berhati-hati pertama mata yang terapung. Ingat perpuluhan terapung dan bilangan bulat tidak adalah perkara yang sama. Mengesan mana yang mana. Dan anda akan menggunakan kenyataan bersyarat, juga. Baiklah, perkara yang lepas. Saya telah mendapat beberapa minit. Style. Jadi ini adalah sesuatu yang tidak sebenarnya kesan kecekapan, atau berjalan sebenar kod anda. Walau bagaimanapun, ia kesan kita sebagai penggred anda, kerana pembaca anda. Ia kesan diri sendiri, jika anda berada cuba untuk mencari masalah. Ia kesan pembacaan kod anda. Jadi gaya, seperti apabila anda cuba untuk gaya esei untuk Bahasa Inggeris, jika anda tidak mempunyai perenggan, anda mempunyai semua jenis daripada bercampur bersama-sama dalam satu baris, ia menjadikan ia benar-benar sukar untuk sesiapa untuk membaca esei anda, walaupun mata anda adalah secara logik bunyi. Perkara yang sama dalam pengaturcaraan. Anda boleh mempunyai teruk kabur kod yang Scaz akan meliputi, dan ia masih boleh berlari dan fungsi. Tetapi bagi kami, kerana TA indah anda, yang akan dapat membaca dan menilai psets anda, bukan itu sangat bagus. Oleh itu, sila, demi antara kita dan diri anda, apabila anda cuba untuk menetapkan masalah dalam kod anda, dan anda cuba untuk membaca kod anda sendiri, membuat Pastikan anda mengikuti beberapa konvensyen yang kita akan pergi ke atas. Jadi pertama. Beri pembolehubah anda nama-nama yang bermakna. Jika anda ingin menyimpan integer dipanggil umur, sila sebut sahaja umur. Jangan sebut sahaja ketinggian. Apabila anda cuba untuk menyimpan usia yang tinggi, ia membuat segala-galanya sangat mengelirukan bagi kami. Kami tidak suka keliru. Anda tidak suka akan keliru. Tiada siapa yang suka keliru. Jika anda pergi untuk membuat sesuatu, nama itu sesuatu yang bermakna. Walau bagaimanapun, dalam untuk gelung, tunggal pembolehubah watak biasanya halus. Dan dalam untuk gelung, jika anda mahu hanya i, dan j, k, jangan ragu untuk hanya berbuat demikian. Pengawalan yang konsisten. Jadi apa maksudnya? Ini bermakna secara teknikal, secara teori, anda boleh memulakan dan mewujudkan beberapa pembolehubah pada baris yang sama. Jadi, sebagai contoh, saya boleh membuat integer dipanggil scaz_age, dan integer dipanggil andi_age = 20, dan integer dipanggil jason_age pada baris yang sama. Dan saya juga boleh menetapkan hanya satu daripada mereka dan tidak yang lain untuk nilai-nilai. Kami meminta anda sila tidak berbuat demikian. Kerana di sini anda pada dasarnya dicipta tiga pembolehubah, tetapi hanya salah seorang daripada mereka sebenarnya mempunyai nilai. Dan kemudian apabila kami cuba untuk membaca kod anda, atau jika anda cuba untuk menetapkan masalah dalam kod anda, ia amat mengelirukan untuk diikuti. Jadi hanya untuk pembacaan anda, sebagai pembacaan kami, jangan berbuat demikian. Pendakap kerinting konsisten. Sesetengah orang suka untuk meletakkan mereka pendakap kerinting di tempat-tempat yang berbeza. Ia tidak benar-benar perkara itu. Hanya pastikan anda konsisten dalam anda Kod sendiri di mana anda suka untuk meletakkan mereka. Jarak konsisten. Jika anda meletakkan ruang selepas untuk gelung, sentiasa berbuat demikian. Jangan hanya suka jenis melakukannya pada beberapa tempat, tidak melakukannya pada orang lain. Hanya konsisten. Kedua, jika sesiapa ingin untuk membaca dengan teliti CS50 Style Guide, kami secara rasmi mempunyai panduan gaya yang memberitahu anda semua konvensyen ini, dan banyak lagi. Ia dalam talian. Ia seperti cs50.net/style atau sesuatu seperti itu. Anda boleh google ia. Konsistensi adalah kunci. Jadi jangan bimbang apa yang orang lain lakukan, pastikan bahawa anda konsisten dalam kod anda sendiri. Sesiapa yang mempunyai sebarang soalan tentang itu? Yeah. SPEAKER 18: Jadi perkara yang betul yang perlu dilakukan dengan pengawalan hanya mempunyai mereka semua dalam yang berasingan talian, adalah bahawa apa yang anda katakan? ANDI PENG: Jadi saya jarang telah ini berlaku. Tetapi jika anda mahu, jika anda mahu menjadi seperti menjimatkan ruang dalam kod anda, atau apa sahaja, anda boleh melakukan ini. Kami meminta anda hanya tidak memulakan satu perkara dan tidak yang lain. Jadi, jika anda mahu melakukan int scaz_age, int andi_age, int jason_age, itulah denda. Hanya tidak memulakan satu dan tidak yang lain sahaja. Soalan? Baiklah. Saya akan lulus daripada mikrofon, dan penunjuk laser, dan baton kepada Scaz pada ketika ini. Ini adalah janggal. Ini dia. BRIAN SCASSELLATI: Terima kasih. Bagaimana itu untuk bunyi? Bunyi yang baik? . Sangat baik. OKAY. Jadi, hi semua orang. Saya akan cuba untuk bekerja melalui contoh yang praktikal dengan anda. Dan kita akan menggunakan ini CS50 persekitaran pembangunan, apa yang dipanggil Persekitaran Pembangunan Bersepadu. Dan anda telah melihat ini ditunjukkan dalam kuliah. Dan dalam Set Masalah 1, anda akan ada kesempatan bagi untuk menggunakannya, dan bermain-main dengan , dan membiasakan diri dengannya, kerana kita akan menggunakannya melalui seluruh semester. Jadi dalam IDE ini, anda mempunyai apa yang kelihatan seperti pelayar fail sangat tradisional lebih di satu pihak. Anda telah mendapat bahagian yang sehingga atas di mana anda akan untuk melihat kod sumber anda, anda Cfile, kod yang anda menulis. Dan turun bawah, anda akan mempunyai tetingkap terminal yang anda akan menggunakan untuk kedua-dua menyusun program anda dan untuk menjalankan atau melaksanakan program anda. OKAY. Jadi hanya untuk memberi kita sedikit asas, dalam tetingkap terminal, anda akan menjadi menggunakan satu set arahan yang perintah standard di seluruh sebahagian besar daripada Unix atau Linux sistem. Dan jadi jika anda pernah menggunakan apa-apa bentuk Unix, Ubuntu, atau mana-mana perisa lain, ini akan kelihatan biasa. Jika anda tidak mempunyai, jangan bimbang. Ada apa-apa yang rumit mengenai mereka. Mereka hanya menggunakan yang berbeza sintaksis, penamaan yang berbeza konvensyen daripada apa yang anda lihat sebelum ini. Jadi untuk senaraikan fail dalam direktori tertentu, mereka akan menggunakan arahan dipanggil ls, atau senarai. Jika anda ingin melihat segala-galanya dengan semua butiran, anda akan menggunakan arahan hujah baris dengan ls -l. Dan yang akan menunjukkan kepada anda semua dengan lebih terperinci, termasuk keizinan untuk fail. Untuk menukar direktori, anda akan menggunakan arahan cd. Dan anda akan dapat untuk menukar direktori kedua-dua untuk pergi ke direktori rumah anda. Itu hanya cd semua oleh sendiri, cd dengan dua titik mengembalikan kamu sehingga satu tahap ke direktori anda yang terdahulu. Dan anda juga boleh cd kepada subdirektori dengan menaip cd dan nama subdirektori itu. Anda juga boleh membuat direktori baru. Dan kita akan berjalan melalui ini dalam masa satu minit. Tetapi hanya untuk meletakkan segala-galanya pada skrin. Supaya anda boleh melihat mereka. Anda juga akan mempunyai keupayaan untuk memanipulasi fail terus daripada baris arahan. Anda akan dapat untuk menyalin mereka, untuk memindahkan mereka, atau untuk menghapuskan mereka, iaitu, berkesan, untuk memadamnya. IDE CS50 memberikan anda penuh kuasa hujah baris arahan. Dan ini bermakna anda juga boleh melakukan perkara-perkara yang sangat berbahaya. OKAY. Sebagai contoh, anda boleh mengeluarkan, atau yang padam, fail tanpa meminta untuk pengesahan. Dan anda juga boleh mengeluarkan recursively-- itulah r melontarkan yang flag-- keseluruhan yang subdirektori dan semua kandungannya. OKAY. Mereka yang disenaraikan dalam merah kerana anda harus berfikir "Bahaya" setiap kali anda melihat perkara-perkara. OKAY. Baiklah. Kini akhirnya, perkara-perkara yang akan menjadi benar-benar berharga kepada anda, adalah terdapat beberapa helah yang baik tahu seperti yang anda sedang memandu arah melalui tingkap terminal ini. Pertama, anda boleh mengosongkan skrin pada bila-bila masa dengan hanya menaip jelas. Dan anda akan melihat saya berbuat demikian agak kerap. Anda juga boleh hanya memaparkan teks fail dengan menaip lebih dan kemudian nama fail. Kemudian, anda akan dapat untuk memilih kembali semula dan sebagainya dengan yang hanya dengan bar ruang dan anak panah kunci. Jika anda mempunyai, seperti yang kita lakukan pada hari ini dalam kuliah, satu program yang sedang berjalan secara berterusan dalam gelung tak terhingga, anda boleh menghentikan program yang layanannya dengan menaip dalam kawalan, yang menekan Control-C. Dan anda mungkin perlu lakukan ini beberapa kali. Komputer mendapat jauh lebih awal daripada anda. Dan kadang-kadang anda perlu memberikan beberapa kali percubaan sebelum ia benar-benar akan keluar. Anda juga akan dapat menyusun melalui perintah bahawa anda hanya ditaip menggunakan kekunci up, kekunci anak panah, dan kemudian kekunci anak panah ke bawah. Dan apa yang paling berguna adalah sebaliknya menaip nama-nama fail panjang, anda akan dapat untuk menggunakan Tab untuk Autolengkap untuk melengkapkan beberapa suruhan. Sekarang kita akan menunjukkan semua orang-orang dalam hanya satu saat. Jadi, jika anda tidak ingat mereka, jangan bimbang. Ini adalah perkara-perkara yang anda akan mengambil dan menggunakan seperti yang kita pergi bersama-sama. OKAY. Jadi dalam C-- tidak seperti di Scratch-- C adalah bahasa yang disusun. Ini bermakna kita akan mengambil sumber file-- itu teks yang anda menulis, arahan yang anda menulis, printf () Penyata, gelung, segala-galanya else-- dan kita akan untuk mengambil fail itu dan menyerahkan ia di luar untuk program yang dikenali sebagai pengkompil. Pengkompil akan mengambil bahawa teks yang telah anda tulis dan menterjemahkannya ke dalam arahan binari bahawa komputer anda adalah sebenarnya akan digunakan. Yang dinamakan objek atau fail boleh laku. Jika anda melihat fail ini, anda akan untuk melihat kod yang anda tulis. Jika anda melihat fail ini, anda akan untuk melihat urutan aksara rawak yang tidak masuk akal sekalipun. Ini kerana ini adalah binari. Ia bukan untuk anda untuk membaca. Walau bagaimanapun, bila-bila masa anda mahu menjalankan sesuatu, apa yang anda akan yang akan berjalan adalah fail objek ini. Oleh itu, apabila kita bekerja dengan ini fail, kami akan menulis fail dalam C. Kami kemudian akan menyusun, dengan menggunakan arahan seperti make yang akan sembah dilafaz pengkompil untuk bahasa C. Dan yang akan menghasilkan objek fail, seperti keluar, atau dalam kes ini, nama, fail saya, bahawa saya telah dimasukkan ke dalam. Baiklah. Jadi mari kita sebenarnya cuba ini. Jadi saya datang dengan contoh apa yang saya mahu mencuba. Dan salah satu daripada perkara-perkara yang mempesonakan saya adalah animasi. Oleh itu, kita akan cuba untuk melakukan sedikit animasi dengan hanya menggunakan aksara ASCII. Watak kita boleh mencetak dengan mudah sekarang. Jadi di sini adalah percubaan saya yang terbaik mewujudkan untuk anda animasi bunny berjalan melalui rumput tinggi. Itu dia. OKAY. Jadi dia tidak berjalan lagi, tetapi dia berdiri di rumput tinggi. Sekarang jika saya animator, di sekolah lama versi animasi, apa yang saya akan lakukan adalah saya akan menghasilkan gambar arnab ini dalam rumput. Dan kemudian saya akan menghasilkan picture-- lain lain apa yang mereka namakan cell-- yang telah arnab hanya sedikit bergerak. Dan kemudian yang ketiga yang mempunyai bunny bergerak yang lebih jauh. Dan saya akan menghasilkan keseluruhan yang urutan sel-sel ini. Beberapa di mana arnab berakhir ke sebelah tangan kiri. Dan kemudian bergerak perlahan-lahan, satu demi satu ke arah tengah-tengah. Dan kemudian dari tengah ke kanan. Dan jika saya itu, benar-benar bernasib baik, saya boleh meletakkan bersama-sama dan saya boleh bernyawa mereka. Dan ada bunny saya berjalan melalui rumput. Itulah PowerPoint besar saya menipu untuk hari tersebut. OKAY. Jadi ini adalah sebagai baik kerana mendapat. OKAY. Jadi, di sini sekali lagi, di sini adalah kami bunny berjalan melalui rumput. SPEAKER 19: Lagi. BRIAN SCASSELLATI: Satu lebih banyak masa, baiklah. Ada bunny anda. OKAY. Jadi hari ini apa yang kita akan lakukan ialah kita akan cuba untuk mengautomasikan proses menghasilkan sel-sel ini. Kami tidak akan cukup mendapatkan ke titik dapat untuk meletakkan mereka semua bersama-sama. Tetapi, kita akan cuba untuk mengautomasikan proses penjanaan urutan ini. Dan ini adalah lebih daripada apa yang animasi hari ini adalah seperti. Iaitu, anda tidak melakukan perkara yang semestinya dengan melukis segala-galanya dengan tangan. Kami menggunakan komputer untuk mengautomasikan bahagian proses itu. OKAY. Jadi biarlah saya beralih Masuk untuk IDE CS50 kami. Dan saya ciptakan untuk us-- dan membiarkan saya mengezum masuk sini bit-- sedikit saya telah dicipta untuk kita titik permulaan. Setiap kali kami meminta anda untuk duduk dan menulis sekeping kod, apa yang kita benar-benar meminta anda untuk melakukan adalah kita meminta untuk menyelesaikan masalah. Dan cara yang anda perlu berfikir tentang melakukan yang adalah dengan memulakan dengan beberapa bahagian mudah untuk penyelesaian itu. Dan kemudian membina dari bahagian itu. Dan itulah apa yang kita akan lakukan hari ini. Jadi, daripada cuba sekaligus ke menulis keseluruhan tandan kod yang yang akan menghasilkan orang-orang 10 sel animasi, kita akan mula sebaliknya dengan satu bahagian yang berfungsi. Dan kemudian kita akan membina sebuah sedikit sekitar yang dan lebih sedikit dan lebih sedikit. Sekarang perkara yang baik tentang menyelesaikan masalah seperti ini ialah ia akan membolehkan anda untuk memulakan sentiasa dengan sesuatu yang anda tahu kerja-kerja dan memperkenalkan satu perubahan secara beransur-ansur. Dan itulah cara yang baik untuk belajar bagaimana untuk kod, kerana setiap kali anda membuat perubahan, anda lihat apa kesan ia mempunyai. OKAY. Jadi di sini adalah titik permulaan kita. OKAY. Jadi pada awal fail saya, Saya telah hash #included stdio.h. Itulah supaya saya boleh mendapatkan printf () fungsi untuk bekerja. Saya kemudian saya mempunyai fungsi utama saya. Dan ini masih kelihatan sedikit sukar difahami atau kabur kepada sebahagian dari kamu. Tak apa. Apa yang mengatakan adalah bahawa fungsi utama mengambil cara tidak arguments-- tidak sah apa-apa dalam C. Dan ia pulangan dengan konvensyen integer. Main sentiasa kembali integer, biasanya kod mengatakan perkara-perkara berjalan dengan baik atau tidak berjalan dengan baik. OKAY. Tetapi utama perlu mempunyai yang Borang untuk kita sekarang. Saya kemudian dimasukkan ke dalam tiga baris kod. Dan bersama-sama dengan setiap baris kod, saya telah meletakkan komen. Sekarang salah satu perkara-perkara yang kita akan menegaskan bahawa yang anda lakukan, dan ia adalah apa-apa yang penting amalan pengaturcaraan, adalah untuk sentiasa komen kod anda. Sentiasa menulis dalam Komen sesuatu bahasa inggeris yang anda fikir Kod yang sepatutnya dilakukan. Dengan cara itu, kemudian apabila anda kembali ke , anda boleh melihat dan anda boleh berkata, oh, saya masih ingat apa yang saya cuba lakukan dengan ini. Atau apabila TA duduk dengan anda untuk cuba untuk membantu anda pada waktu pejabat, mereka boleh melihat ini dan pergi, saya melihat apa yang anda cuba lakukan, tetapi sebaliknya ini adalah apa yang benar-benar berlaku. OKAY. Jadi saya telah mendapat tiga bahagian untuk kod saya, Saya akan pertama sekali cetak beberapa titik pada permulaan. Saya kemudian akan mencetak saya bunny amat mewah. Dan kemudian beberapa sedikit titik pada akhir. Inilah tiga kenyataan cetak perlu kelihatan biasa kepada anda pada ketika ini. Semua yang saya lakukan dalam setiap daripada mereka adalah saya mencetak jujukan aksara. Tidak ada pembolehubah yang terlibat. Semuanya hanya rata. OKAY. Jadi, jika saya turun ke bawah sekarang untuk terminal-- saya mari kita lihat jika saya boleh mendapatkan kembali ini out-- dan saya akan menaip jelas lagi. SPEAKER 20: Adakah kita menggunakan palang dua kali untuk komen? BRIAN SCASSELLATI: Bolehkah menggunakan ya double--. Ada pelbagai cara untuk meninggalkan komen dalam C. Satu cara adalah dengan menggunakan tanda palang berganda. Yang lain adalah dengan menggunakan tanda palang dan bintang dan kemudian tutup dengan bintang dan slash. Baiklah. Pertama sekali, saya akan mula menavigasi di sekitar sini. Jadi, jika saya pergi ke direktori rumah saya, Saya telah mengubah direktori di sana, Saya akan melihat dan melihat apa yang di dalam direktori itu, ls, sila senaraikan. Saya akan melihat bahawa saya telah mendapat dua subdirektori. Mari kita membuat ini sedikit lebih besar di sini supaya kita semua dapat melihatnya. Saya dapat melihat bahawa saya telah mendapat dua subdirektori. Saya akan menukar direktori untuk pergi ke dalam ruang kerja. Dan saya akan hanya menaip sebahagian daripadanya, dan kemudian hanya tekan Tab. Dan ia akan menyelesaikan yang lain untuk saya. Mewah. Saya akan melihat dan dilihat di ruang kerja. Dan sekarang, saya bekerja pada SuperSection yang bahawa kita mengajar sekarang. Jadi saya akan pergi ke dalam direktori. Dan akhirnya, melihat dan melihat. Dan saya telah mendapat bahawa fail bunny.c. Baiklah jadi biarlah saya jelas sekali lagi. Dan saya akan sekarang-- lagi Saya masih tinggal di dalam direktori yang dan ia memberitahu saya Saya dalam bahawa direktori SuperSection. Saya akan pergi ke depan dan membuat bunny program saya. Dan perintah itu, membuat bunny, manakala membunyikan sedikit ganjil, juga menyembah pengkompil dilafaz itu. Dan ia dihasilkan untuk saya satu output yang yang funny-- laku fail boleh laku yang dikenali sebagai bunny. OKAY. Saya boleh kemudian, dan ini kedengaran lebih teruk lagi, melaksanakan bunny. OKAY. Dan mari kita lihat apa yang dilakukan. OKAY. Itulah sedikit apa yang saya jangkakan. Saya ada gambar arnab saya di sana, tetapi saya jenis mahu ia dengan sendirinya. Apa yang saya terlepas? SPEAKER 21: Slash l atau mengurangkan n. BRIAN SCASSELLATI: Slash n. OKAY. Oleh itu, marilah kita kembali di sini. Dan saya akan keluar dari itu. Dan saya akan kembali ke dalam satu ini. Dan mari kita lihat sekarang daripada fungsi utama saya di sini. Jadi apa yang perlu saya lakukan? Saya mahu menjadi garis. Jadi saya akan dimasukkan ke dalam komen. Saya akan dimasukkan ke dalam printf (). Dan apa yang saya perlu dimasukkan ke dalam? / n. OKAY. Apa yang saya perlu mengakhirinya dengan? Koma bertitik. Baiklah. Kini, salah satu yang benar-benar perkara-perkara penting adalah memastikan setiap kali anda membuat perubahan dalam kod anda, bahawa anda menyimpannya. Jika anda belum menyimpan kod anda, anda akan perasan sehingga bintang kecil di sana. Dan bintang yang mengatakan bahawa anda belum menyimpan kod ini. Jika saya menyusun sekarang, ia bukan akan mencerminkan mana-mana perubahan, kerana pengkompil melihat fail itulah pada cakera, bukan fail itu dibuka dalam editor anda. Baiklah. Jadi mari kita menyimpannya dan kemudian kami akan pergi betul-betul di bawah ini, kembali keluar. Turun ke terminal saya. Dan mari kita membersihkan ruang lagi. Dan kita boleh pergi ke hadapan dan satu lagi semasa membuat program bunny kami. Dan melaksanakan bunny. Yang tidak bekerja sama ada. Slash salah. Jadi, jika anda melihat apa yang saya dapat, saya meletakkan / n di sana, tetapi saya mempunyai tanda palang yang salah. Semua yang komputer anda Adakah adalah sangat jelas. OKAY? Satu kesilapan kecil tanda baca, dan tiba-tiba anda tidak mendapat apa yang anda mahu. Baiklah. Jadi mari kita zum keluar lagi. Kami akan kembali. Juga membuat pembaikan yang sangat cepat. Kami akan meletakkan palang yang betul. Kami akan menyimpannya. Kami akan zum masuk. Untuk sebab-sebab tertentu, itu bukan menjadi gembira, tetapi mari kita pergi ke depan dan kami akan kembali ke terminal itu di sini. Membersihkannya. Kami akan zum masuk. Dan sekali lagi, kami akan membuat bunny. Dan kini cukup yakin, ia berfungsi. Hooray. OKAY. Jadi mari kita cuba untuk membuat ini sedikit lebih umum. Mari kita lihat jika bukan hanya mencetak satu frame tertentu, mari kita lihat jika kita boleh membuat ini supaya kita boleh mendapatkan semua 10 mereka bingkai animasi yang kita mahu mempunyai. Jadi sekali lagi, mari kita ini satu langkah pada satu masa. Mari kita pertama umum, tidak supaya saya melakukan semua bingkai, tetapi begitu saya lakukan mana-mana satu kerangka yang saya mungkin mahu. Jadi apa bezanya antara bingkai? Adalah arnab yang sama? PENONTON: Ya. BRIAN SCASSELLATI: Ya. Apa perbezaannya? PENONTON: Jawatan. BRIAN SCASSELLATI: Kedudukannya, betul? Dan bagaimana saya mengawal kedudukannya? Berapa banyak titik Saya meletakkan pada permulaan dan berapa banyak titik Saya meletakkan pada akhir. Jadi saya mempunyai lima di bermula dan lima pada akhir. Mari kita menggantikan lima dengan untuk gelung. OKAY. Dan saya akan membuat untuk gelung sekarang yang akan berkata, Saya akan mencetak beberapa nombor titik pada permulaan. Saya akan menggunakan pembolehubah. Katakan, bagaimana pula saya sebagai kaunter dalam gelung saya. Dan saya akan mengisytiharkan ia sehingga atas. Dan kemudian dalam gelung Saya perlu melakukan tiga perkara. Perkara pertama yang perlu saya lakukan adalah saya perlu memulakan i. Apakah yang perlu saya memulakan ia mula menjadi? 0. OKAY. Kemudian saya perlu berkata, apa yang syarat penamatan itu? Bilakah saya perlu berhenti? Well berapa banyak titik-titik yang anda ingin mencetak pada satu ini? PENONTON: Lima. BRIAN SCASSELLATI: Lima lagi? Bagaimana pula mari kita buat sesuatu yang berbeza, kita lakukan lima. Mari kita menunjukkan bahawa ia adalah berbeza. SPEAKER 22: Dua. BRIAN SCASSELLATI: Dua. OKAY. Jadi, jika saya mahu dua titik, apa yang perlu saya meletakkan di sini? PENONTON: Tiga. BRIAN SCASSELLATI: Tiga. OKAY. Berapa kali ialah akan melalui? Itu akan melalui tiga kali, 0, 1, dan 2, kanan? Baiklah, mari kita kembali kepada dua. Sekarang kita akan mendapat dua titik. Dan apa yang saya mahu lakukan setiap kali saya pergi melalui gelung? Apa yang perlu berubah setiap kali saya melalui? SPEAKER 23: Tambah titik. BRIAN SCASSELLATI: Saya perlu menyimpan berterusan. Saya akan menambah titik. Saya akan mencetak titik, setiap kali melalui gelung. Tetapi bagaimana saya mengesan bagaimana banyak kali saya telah melalui gelung? Saya menggunakan i, yang berubah-ubah, kaunter itu. Jadi setiap kali melalui, saya akan untuk kenaikan kaunter demi satu. Sekarang, itu yang sama untuk saya sebagai berkata i = i + 1. Tak apa. Saya boleh melakukannya bahawa- saya suka trengkas, jadi saya akan berkata i ++. OKAY. Mari kita buat perkara yang sama turun di sini di bahagian bawah. Hanya saya jenis lakukan yang itu. Saya akan membiarkan anda semua melakukan satu ini sepenuhnya. Baiklah. Jadi apa yang perlu saya tulis di sini? Berikut saya untuk gelung. Saya akan melakukan printf () dan saya akan untuk membuat ia begitu bahawa saya hanya mencetak satu titik di bahagian bawah itu. Apakah yang perlu saya menulis di dalam ini untuk gelung sekarang? Well, pertama sekali apa pemboleh ubah yang perlu saya gunakan? SPEAKER 24: j. BRIAN SCASSELLATI: Saya boleh menggunakan j. Bolehkah saya menggunakan salah satu yang sama? Bolehkah i lagi? Yeah. Itu OK, kerana Is yang saya gunakan di sini, Saya tidak memerlukannya lagi apabila Saya turun ke hal ini. Jadi apa yang perlu saya memulakan i ke? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Apakah yang perlu saya menyemak? Berapa banyak titik-titik yang saya perlukan sekarang pada akhirnya jika saya telah mendapat dua titik awal? Saya memerlukan lapan pada akhirnya, jadi apa Saya perlu menyemak, saya kurang than-- PENONTON: Tujuh, lapan, sembilan. BRIAN SCASSELLATI: Aku mendengar tujuh. Saya mendengar lapan. Dan aku mendengar sembilan. OKAY. Oleh itu, kita semua dalam hak ball-- Jason berkata 10. OKAY. Jika saya memerlukan dua titik untuk yang pertama, berapa banyak melakukan Saya-- dan saya memerlukan lapan titik untuk lepas one-- saya meletakkan dua sehingga atas, apa yang perlu saya meletakkan di bawah? PENONTON: Lapan. BRIAN SCASSELLATI: Lapan. Kerana yang akan mengira sifar melalui tujuh. Dan itu lapan kali melalui gelung. OKAY. Dan apa yang saya perlu lakukan pada akhir? PENONTON: i ++. BRIAN SCASSELLATI: i ++. Baiklah. Jadi yang yang kelihatan cukup baik di sana. Mari kita cuba dan mari kita lihat apa yang dilakukan. OKAY. Jadi, kita akan untuk menyimpannya. Nice dan disimpan. Kami akan zum keluar. Kami akan cuba di sini di terminal. Kami akan zum masuk. Maaf. Kami akan, sekali lagi, membuat program bunny kami. Dan pergi ke depan dan melaksanakan bunny. Dan ada ia. Jadi ada bunny kami. Di mana ia mempunyai dua titik pada permulaan dan lapan titik keluar pada akhir. Semua orang masih dengan saya? OKAY. Oleh itu, kita dibina atas. Kami membina satu bunny, satu frame tertentu. Sekarang kita telah dapat umum bahawa untuk membina lebih, pelbagai jenis bingkai. Sekarang mari kita pergi ke depan, dan mempunyai ia menghasilkan bukan hanya satu bingkai, tetapi mari kita menjana 10 bingkai, di mana kita perlahan-lahan membuat kelinci menggerakkan semua jalan di seluruh lapangan. Baiklah. Mari kita kembali. Dan kami akan cuba sekarang. Jadi, apa yang saya benar-benar perlu untuk menukar di sini? Apa yang saya perlu berubah? SPEAKER 26: Anda terlebih dahulu perlu menukar bilangan maksimum titik pada permulaan. Kerana jika kita lakukan 10 titik, ia akan perlu sehingga skala. BRIAN SCASSELLATI: Ya. Jadi sekarang saya ada jenis terdawai keras untuk sentiasa melakukan dua titik pada permulaan dan sentiasa melakukan lapan titik pada akhir. Saya mahu membina gelung lain, bukan? Kerana saya tidak mahu membina hanya satu bunny picture, Saya mahu membina 10 gambar bunny. Jadi saya perlu membina gelung lain, dan seperti yang saya pergi melalui gelung itu, Saya ingin menukar berapa banyak titik saya mencetak pada permulaan dan berapa banyak titik saya mencetak pada akhirnya, berdasarkan yang memutar gelung Saya berada di dalam. Baiklah. Jadi mari kita mendapatkan kaunter lain. Seseorang yang j sebelum ini berkata, jadi kita akan membuat satu lagi j. Dan sekarang, kita akan membina satu lagi untuk gelung. Apa yang berlaku di dalam gelung itu? Barangan ini telah pergi dalam gelung, bukan? Adakah arnab mempunyai untuk masuk ke dalam gelung? Adakah saya memerlukan bunny di setiap orang-orang 10 bingkai? PENONTON: Uh-huh. BRIAN SCASSELLATI: Ya. Saya mahu bunny dalam setiap daripada 10 bingkai, bukan? Bagaimana pula dengan titik di Akhirnya, perlu saya itu? OKAY. Jadi saya akan mengengsot semua daripada mereka. Saya akan menyerlahkan semua ini, dan saya akan melanda Tab. Dan itu akan menolak mereka di seluruh sedikit, supaya ia mudah bagi saya untuk melihat apa yang ada di dalam gelung. Dan kemudian saya akan mengakhirinya. Katakan. OKAY? Sekarang, dalam gelung ini yang Saya building-- whoops, membuat yang supaya anda boleh see-- Saya ada kaunter saya j. Saya akan memulakan ini pada 0. Berapa kali saya mahu melalui gelung ini? PENONTON: 10 kali. BRIAN SCASSELLATI: 10 kali. Jadi apa jumlah yang perlu saya meletakkan di sini? PENONTON: 9, 10. BRIAN SCASSELLATI: 9, 10, seseorang mendapat untuk mengatakan 11, bukan? Saya mahu dua titik sebelum dan meletakkan i kurang dari 2. Saya mahu lapan titik, Saya meletakkan i kurang daripada 8. Sekarang saya mahu pergi melalui 10 kali, jadi saya meletakkan j kurang than-- PENONTON: 10. BRIAN SCASSELLATI: 10. Di sana kami pergi. Dan apa yang saya lakukan pada akhir untuk j? ++, Kenaikan itu. OKAY. Sekarang, di sini bahagian yang sukar, apa yang akan berlaku sekarang jika saya lakukan ini? Adakah saya akan mencetak 10 bingkai? SPEAKER 27: Saya rasa mereka semua akan sama. BRIAN SCASSELLATI: Mereka akan semua sama, bukan? Kerana kesemua mereka masih akan untuk meletakkan dua titik pada permulaan. Tetapi saya tidak mahu mereka semua mempunyai dua titik permulaan. Berapa banyak titik saya mahu pada mulanya? PENONTON: Menukar. BRIAN SCASSELLATI: Saya mahu ia berubah, bukan? Jadi, apa yang saya ada di sini yang mengubah setiap kali gelung akan melalui? PENONTON: Bilangan titik, j. BRIAN SCASSELLATI: j, bilangan titik. Jadi saya boleh menukar ini menjadi j. Kali pertama melalui gelung, apa yang yang akan menjadi? Apa yang saya menetapkan j untuk pada mulanya? PENONTON: 0. BRIAN SCASSELLATI: Jadi berapa banyak kali saya akan melakukan ini? 0. Kali kedua melalui gelung, j akan menjadi 1 kerana saya kenaikan itu. Berapa banyak titik-titik yang saya akan mencetak? 1. Kali ketiga melalui gelung, berapa banyak titik-titik yang saya akan mencetak? PENONTON: Tiga. BRIAN SCASSELLATI: j akan menjadi 3. Berapa banyak titik-titik yang saya akan mencetak? Oh, maaf, j akan menjadi 2. Berapa banyak titik-titik yang saya akan mencetak? PENONTON: 2. BRIAN SCASSELLATI: 2. OK, jadi saya akan menjaga menokok bahawa seperti yang kita pergi bersama-sama. Bagaimana pula turun di bawah? Apa yang berlaku di sini? Saya tidak mahu 8 sentiasa pada akhir lagi? SPEAKER 28: 10. BRIAN SCASSELLATI: Saya mahu 10 titik? Saya mahu ia berubah, juga. Jadi bagaimana saya mahu ia berubah? PENONTON: [didengar]. BRIAN SCASSELLATI: Sebenarnya, jika saya mempunyai lima titik pada permulaan, berapa banyak dot yang saya dapat pada akhir? PENONTON: Lima. BRIAN SCASSELLATI: Sekiranya ada enam titik pada permulaan, berapa banyak yang saya dapat pada akhir? PENONTON: Empat. BRIAN SCASSELLATI: Jika saya mendapat tujuh titik pada permulaan, berapa banyak yang saya dapat pada akhir? PENONTON: Tiga. BRIAN SCASSELLATI: Jika saya telah mendapat j titik pada permulaan, berapa banyak yang saya dapat pada akhir? 10-j. OKAY. Jadi mari kita cuba yang keluar. Jadi, saya akan menyimpan program bunny kami. Sekali lagi kita akan zum keluar. Kami akan turun ke terminal kami. Kami akan membersihkan ia. Dan zum masuk. Kami akan membuat program bunny kami, sekali lagi. Dan kami akan melaksanakannya. Uh-oh. Berpegang, mari kita zum keluar. Adakah saya mendapat 10 bingkai? Nah, berapa banyak Bunnies saya melihat di sana? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Saya mendapat 10 bingkai. Adakah mereka semua yang sama? PENONTON: Ya. No. BRIAN SCASSELLATI: No. Itu satu pertama, bunny jauh di sebelah kiri. Dan di sini, arnab adalah jauh di SPEAKER 29: Betul. BRIAN SCASSELLATI: Jadi, apa yang saya lupa yang perlu dilakukan? SPEAKER 30: Mulakan barisan baru. BRIAN SCASSELLATI: Saya terlupa untuk memulakan baris baru, sekali lagi. Kesilapan sama saya dibuat sebelum ini. Baiklah, mari kita pergi menetapkan bahawa. Sekarang, saya masih ada kod di sana untuk membuat baris baru. Mengapa tidak ia berfungsi? SPEAKER 31: Ia bukan dalam gelung. BRIAN SCASSELLATI: Oh, ia bukan di dalam gelung. Betul. Ia duduk di luar di sini. Dan untuk gelung adalah segala-galanya yang di dalam teks itu. Jadi, saya akan bergerak ini di dalam untuk gelung. Dan saya akan Tab di hadapannya untuk menunjukkan bahawa ia di tempat yang betul. Dan sekarang, kami akan menyimpannya lagi. Kami akan zum keluar. Kami akan beralih kepada terminal kami. Mengezum masuk. Kami akan membentuk semula program bunny kami. Oleh sebab itu, sekarang kita telah mendapat 10 bingkai kami. [Bertepuk tangan] BRIAN SCASSELLATI: OK. So. Berikut adalah kami bersarang untuk gelung. Kami dapat menghasilkan dalam gelung dalaman berapa banyak titik-titik yang saya mahu untuk mencetak di awal, di akhir. Dan gelung luar kawalan berapa banyak bingkai saya telah membina. Kami bermula dengan si manja kernel masalah ini, dan kami dibina daripada dari sudut itu. Baiklah. Mari kita buat satu lagi langkah. Anda bersedia? Ada satu perkara di sini di mana kami sebenarnya jenis mendapat lebih kompleks daripada yang kita perlukan. Mari kita lihat. Jadi, dalam program bunny kami, jika saya zum di sini, Saya benar-benar melakukan beberapa yang sama Perkara yang berulang-ulang kali. Apa yang saya lakukan itu adalah semacam perkara yang sama berulang dua kali? SPEAKER 32: Cetak titik-titik. BRIAN SCASSELLATI: Ya Saya mencetak mereka titik dua kali. Benar-benar, saya harus mempunyai komen ini di sini. Saya mencetak beberapa titik di bermula, betul-betul di sini. Dan kemudian saya mencetak beberapa titik pada akhir. Dan saya jenis perkara yang sama. Apa yang kita akan mula bekerja di dalam beberapa minggu akan datang adalah dapat mengambil orang-orang blok kod yang kita gunakan berulang-ulang kali, dan melalui proses yang dipanggil pengambilan, kita akan menarik mereka keluar dan menulis mereka sekali supaya kita boleh kemudian menggunakan semula mereka berulang-ulang kali. Jadi mari kita cuba itu. Bersedia? Kami akan mengambil blok ini kod. Dan saya akan mengambil ia keluar dari sana. Dan saya akan define-- ke bawah di bahagian bawah, Saya akan menulis fungsi baru. Ia tidak akan kembali apa-apa. Dan saya akan memanggilnya printDots. Ia akan mengambil satu hujah, integer yang kata howManyDots saya perlu mencetak. Dan sekarang bukannya mencetak j titik, saya akan mencetak memberitahu howManyDots saya perlu mencetak. Dan ada satu masalah kecil di sini. Sesiapa tahu apa itu? Apa yang perlu saya yang disenaraikan di sini yang tidak ditakrifkan? PENONTON: [didengar] BRIAN SCASSELLATI: Nah bagaimana banyak titik ditakrifkan sehingga di sini, tetapi saya menggunakan pembolehubah i. Jadi, saya akan mengambil pembolehubah yang i dan saya akan untuk menentukan ia turun di sini sebaliknya. Oleh sebab itu ia akan stay-- oops, tidak perlu lagi huruf besar pada somehow-- Saya akan terus i turun di sini. Oleh sebab itu di sini adalah fungsi kecil saya atau sub-rutin, dan ia berkata, berapa banyak titik-titik yang saya akan mencetak? Dan ia akan pergi melalui gelung ini dan mencetak mereka berulang-ulang kali. Saya kemudian boleh mengubah suai program saya di sini. Dan apa yang saya panggil fungsi itu? printDots. Jadi saya akan memanggil printDots. Berapa banyak titik-titik yang saya mahu untuk mencetak kali pertama sebelum arnab? PENONTON: j. BRIAN SCASSELLATI: j. Berapa banyak titik-titik yang saya mahu untuk mencetak pada akhirnya, selepas arnab? 10-j. Dan ada satu perkara yang saya hilang. Seperti yang anda lihat dalam kuliah hari ini, kita akan mengisytiharkan printDots sehingga atas untuk memberi prototaip. OKAY. Jadi apa yang saya lakukan adalah saya telah cuba untuk mengasingkan bahagian semula kod bahawa saya telah melakukan berulang-ulang kali. Dan saya telah cuba untuk menariknya keluar supaya semua itu terkandung dalam satu tempat. Dengan cara itu, jika saya mempunyai kesilapan di suatu tempat, Saya hanya perlu menetapkan dalam satu tempat. Baiklah. Jadi mari kita menyimpannya. Dan mari kita pastikan ia berfungsi. Oleh itu, marilah kita pergi. Kami akan pergi lagi ke terminal kami. Kami akan zum masuk. Kami akan membuat proses bunny. Oh. Dan ia memberikan saya amaran. Apa yang ia memberitahu saya? Baik dalam mana-mana kali, anda sentiasa mahu untuk tatal ke atas untuk error-- yang pertama sekarang pada satu ini, saya hanya mendapat satu. Ia memberitahu saya dalam bunny.c, pada baris 8, kolum 9, ada masalah. Ia berkata, anda telah diisytiharkan ini pembolehubah i dan anda tidak menggunakannya. Sekarang biasanya, itu bukan kesilapan yang paling teruk. Itulah sesuatu yang mudah untuk menetapkan. Dan sebenarnya, kita boleh kembali masuk. Kami boleh kembali ke bunny. Dan dalam kes ini, apa yang kita hanya perlu menghilangkan i, kerana kita tidak menggunakan i dalam utama lagi. Kami hanya menggunakannya dalam sub-rutin kami. Jadi mari kita simpan itu. Kami akan kembali. Dan zum masuk. Kami akan sekali lagi membuat bunny. Dan ada lagi 10 kerangka kami. OKAY. Bila-bila masa anda diberi yang procedure-- Yeah. SPEAKER 33: Saya a-- saya keliru. Bolehkah anda kembali kepada kod? BRIAN SCASSELLATI: Ya. SPEAKER 33: Jadi, apabila anda menulis prototaip anda, hujah anda kalaulah bernama dipanggil howMany? Tetapi, below-- BRIAN SCASSELLATI: Oh yeah. SPEAKER 33: --called mereka sesuatu berbeza, saya tidak faham. BRIAN SCASSELLATI: Mengapa mereka berbeza. Jadi, itu satu soalan yang besar. Jadi persoalannya adalah, sehingga di sini, saya telah menulis howMany, dan ke bawah di bawah, saya telah menulis howManyDots. Ini kerana dalam prototaip anda, ia sebenarnya tidak memberi perhatian kepada nama-nama yang anda meletakkan dalam. Apa yang benar-benar mengambil berat tentang adalah bahawa ia adalah bilangan bulat. Ia mahu tahu borang daripada apa yang anda meletakkan dalam. Sekarang stylistically-- oops-- apa yang saya perlu lakukan, ini yang saya suka membuat perlawanan ini. OKAY. Kerana yang akan memastikan ia lebih mudah bagi saya untuk diingati. Tetapi itu adalah kesilapan saya Yeah. SPEAKER 34: Dan demikian bagi prototaip untuk bekerja, hanya menulis talian itu, menulis prototaip, membolehkan fungsi yang datang tepat di bawah untuk pergi ke akhirnya dan mendapatkan semula apa yang bermakna? BRIAN SCASSELLATI: Apa yang dimaksudkan adalah apabila pengkompil akan melalui, ia pergi dari bahagian atas kod anda ke bawah. Dan apa prototaip ini adalah, adalah ia pada dasarnya janji. Ia berkata, ada akan menjadi fungsi yang ditetapkan di suatu tempat. Ia akan menjadi dipanggil printDots. Dan ia akan mengambil satu hujah yang akan menjadi integer dan ia akan kembali apa-apa, jenis tidak sah. OKAY. Saya berjanji kepada anda ia akan menjadi ditakrifkan di suatu tempat di jalan. Tetapi bila-bila masa yang anda lihat itu, seperti yang anda turun mengalir di dalam saya Fungsi utama, saya mahu anda untuk merawat bahawa sebagai fungsi yang mengambil masa satu input integer. Dan setelah pengkompil terbenam melalui ini, ia melihat janji itu. Dan apabila ia mendapat turun, menyimpan pergi, terus pergi, ia mendapati kali pertama printDots disebutkan. Dan ia berkata, Oh, anda memberikan saya j ini. j adalah integer. Baik anda berjanji saya yang akan integer dan itu betul. Tak apa. Dan kemudian akhirnya, turun di bahagian paling bawah, sebelum saya sampai ke akhir saya fail, saya membuat baik pada janji saya dan saya menentukan ia. OKAY? SPEAKER 35: Jadi, ia saves-- yang program akan menjimatkan ruang kosong bahawa ia kembali dan mengisi pada akhir? BRIAN SCASSELLATI: Ia bukan mengenai peruntukan memori. Ini sebenarnya hanya kira-kira apa jenis yang anda menjangka untuk melihat. Sekiranya perkara ini mempunyai satu hujah, atau lima hujah? Harus mempunyai bilangan bulat menjadi diberikan kepadanya, atau tali? Itu sahaja yang ia melihat lakukan adalah untuk memeriksa, yang anda memberi saya jenis kanan hujah. OKAY? Baiklah. Biar saya meninggalkan anda dengan satu bit yang lain untuk melihat. Seni ASCII tidak model yang besar animasi seperti hari ini. Tetapi sesetengah orang sudah tentu mengambil perkara-perkara dan mereka menolak ke keterlaluan mereka. Ini adalah sama seperti Daud, menunjukkan dalam kuliah, sekeping kod bahawa anda perlu dalam apa jua keadaan cuba untuk membuat salinan diri kamu sendiri. Oleh kerana ia adalah sesuatu yang buruk segi gaya. Malah, ia direka untuk menjadi sukar yang mungkin untuk membaca. OKAY. Jadi, untuk melakukan sekali lagi, mari kita zum di sini. Saya akan pergi sekarang, direktori perubahan. Saya akan naik satu tahap, kembali ke ruang kerja saya. Saya kemudian akan menukar direktori ke dalam ini direktori lain yang saya telah buat. Dan ini adalah Antarabangsa Dikelirukan C Programming Contest. Cara dikelirukan keras yang mungkin difahami. Oleh itu, sila, jangan takut jika anda melihat penggunaan pada ini dan pergi, saya tidak dapat membaca bahawa. Itulah gunanya ia. OKAY? Tetapi, kita mempunyai ini program yang indah yang saya akan melihat dengan hanya menaip lagi. Dan mari kita lihat jika saya boleh zum keluar hanya sedikit, jadi anda boleh melihatnya Dan ini adalah program ini. Ia dinamakan endo.c. Dan ia kelihatan seperti baldi ini dengan jenis huruf F-L-U-I-D di dalamnya. Ini sebenarnya program. Ia ditulis dalam yang paling kabur cara bahawa penulis mungkin boleh menulisnya. Tetapi ia adalah sebahagian kecil indah yang menjana model dinamik bendalir. Dan dengan itu kita akan memberi bahawa model input yang kelihatan seperti ini, satu staired set bekas dengan cecair tertentu, beberapa cecair, sehingga di bahagian atas. Dan kita akan mempunyai ia mensimulasikan apa yang berlaku kepadanya. Jadi saya akan memanggil fungsi itu, endo. Dan saya akan memberikan yang fail input yang saya telah. Dan ada lambang kami seni ASCII. A simulator dinamik cecair penuh berjalan dalam hanya beberapa baris kod. Sekarang apa yang sebenarnya benar-benar menakjubkan tentang program kecil ini ialah saya mahu berhenti sekarang, jadi saya akan menggunakan apa arahan? PENONTON: Control-C. BRIAN SCASSELLATI: Control-C. OKAY. Jadi saya akan menggunakan Kawalan-C. C Yang akan menghentikannya. Saya akan membersihkan lagi. Dan sekarang saya akan ingat kepada program, melaksanakan program ini, menggunakan dirinya sebagai input. Dan kita akan melihat dinamik bendalir simulasi ia mencair. OKAY. Sila jangan biarkan program yang menjadi perkara yang mengelirukan anda. Ia hanya supaya kita boleh berakhir pada sesuatu yang sejuk dan menarik. OKAY. Selamat mencuba dengan set masalah anda. Kami akan gembira untuk menjawab soalan selepas kelas. Terima kasih banyak, guys.