JASON Hirschhorn: Selamat Datang CS50 bagian, setiap orang. Nama saya Jason Hirschhorn. Saya banyak TF Anda, tapi banyak orang diharapkan akan bergabung dengan kami online, siswa atau mahasiswa ekstensi mencoba untuk melihat melalui bagian jika mereka melewatkan bagian mereka bahwa seminggu atau hanya mengejar jika mereka ingin untuk meninjau beberapa materi. Jadi sesuai silabus, yang semuanya Anda telah membaca, benar? Saya melihat banyak kepala mengangguk. Bagian memberikan Anda kesempatan untuk mengeksplorasi kursus ini materi dalam lingkungan yang lebih intim, serta menyelam ke tangan-kegiatan. Jadi itulah dasarnya apa yang kita akan melakukan setiap minggu. Kita akan pergi melalui apa yang kita miliki bertekad untuk menjadi yang paling penting topik yang dibahas dalam kuliah, dan yang mungkin juga sangat berguna dan paling mungkin muncul pada set masalah dan kuis, dan Anda coding kehidupan di luar CS50. Jadi kita akan masuk ke topik tersebut, mendiskusikannya, pergi atas mereka, menjawab pertanyaan kalian miliki, dan maka kita akan melakukan banyak masalah praktek coding. Anda semua membawa laptop, yang fantastis. Ini adalah kelas ilmu komputer. Namun, banyak dari latihan yang kita lakukan, Anda tidak perlu laptop Anda untuk. Anda dapat melakukannya pada selembar kertas. Itulah cara Anda akan melakukannya pada kuis. Dan memang, itu adalah cara yang bagus untuk benar-benar tahu bahwa Anda bagaimana melakukan sesuatu jika Anda tidak memiliki Periksa 50 sampai mengandalkan atau Membuat mengandalkan, mengatakan Anda membuat kesalahan. Jadi Anda dipersilakan untuk kode pada alat atau run.cs50.net, yang alat lain yang memungkinkan Anda untuk kode online, tapi saya juga akan merekomendasikan, jika Anda belum mencobanya, menggunakan lembar kertas dan mencoba praktek ini masalah pada selembar kertas. Karena sekali lagi, itu pada akhirnya apa yang Anda akan diminta untuk lakukan pada kuis. Jadi mari kita mulai dengan kami agenda untuk hari ini. Kita akan membahas beberapa norma untuk bagian kita, maka kita akan menyelam ke dalam array, fungsi, dan baris perintah argumen, yang adalah apa yang kalian telah dibahas minggu terakhir dalam perkuliahan dan kemudian Senin, dan apa yang Anda akan menutupi lebih besok. Dan akhirnya, kita akan untuk berbicara tentang pset2. Jika saya bisa mendapatkan menunjukkan tangan jika Anda belum melihat masalah dua set spesifikasi. Kami akan mengatakan semua orang. Fantastis. Kita akan berbicara tentang masalah dalam set sedikit, tapi jika Anda membaca sejumlah masalah spesifikasi, itu semua yang perlu Anda lakukan. Jika Anda membaca bahwa sebelum Anda datang ke kelas dan bagian pada hari Selasa, Anda akan menjadi posisi yang bagus. Kita bisa pergi melalui sejumlah masalah, yang adalah apa yang akan kita lakukan di akhir. Kita akan pergi melalui logika, pastikan semua yang ada di halaman yang sama. Aku ingin kau dapat meninggalkan Selasa merasa sangat nyaman dengan apa yang Anda perlu lakukan untuk minggu ini masalah set, dan jika Anda tidak melakukannya, saya dengan senang hati akan tinggal setelah dan bekerja dengan Anda. Tapi itu adalah satu hal yang harus Anda lakukan tapi saya pikir akan benar-benar cerdas, hanya untuk membaca sejumlah masalah spesifikasi oleh kelas pada hari Selasa, yang kedengarannya seperti banyak dari kalian lakukan. Saya akan mulai dengan agenda masing-masing kelas sehingga Anda tahu di mana kita akan pergi. Ini juga berguna untuk orang-orang menonton online karena setiap bagian adalah kode warna, jadi jika Anda ingin datang kembali dan hanya menonton 10 menit lebih dari seluruh bagian 90 menit, Anda hanya bisa pergi ke bagian kode warna dan melihat bagian itu. Jadi saya sudah mencoba untuk istirahat mereka menjadi bagus modul yang akan memungkinkan Anda untuk - jika Anda ingin kembali dan meninjau, atau siswa lain yang hanya menonton bagian untuk meninjau - untuk menemukan hal tertentu yang mereka ingin memperhatikan dan mempelajari lebih lanjut tentang. Manis. Norma. Saya seorang pemimpin FOP di kampus. Saya tidak tahu apakah ada yang melakukan FOP. Apakah ada yang melakukan FOP? Satu orang melakukan FOP. Dua orang melakukan FOP. Keren. Jadi FOP adalah tahun Pertama Terbuka Program orientasi. Kami mengambil mahasiswa baru ke dalam hutan dan membuat pengalaman yang paling ajaib kehidupan mereka, benar? Ya. Suara tentang benar. Jadi saya hanya ingin memulai kami pertama Bagian dengan membahas beberapa norma untuk kelas dan hubungan kita karena saya pikir mereka sangat penting. Pertama dan terpenting, karena Anda yang yang bagian saya telah menerima dan telah dibahas dalam email, I love this. Ini adalah bagian favorit saya tahun ini. Aku begitu bersemangat. Aku sudah di sini selama berjam-jam hari ini. Saya belum meninggalkan gedung ini kecuali pergi makan karena aku mencintai CS50 bagian, saya cinta mengajar, saya suka bekerja dengan kalian. Salah satu prioritas tertinggi saya, jika tidak saya nomor satu prioritas, tidak hanya untuk kelas ini namun termasuk saya yang lain kelas dan ekstrakurikuler, adalah untuk mendukung kalian, dan membantu kalian, dan melakukan yang terbaik untuk memastikan bahwa Anda orang ini memiliki indah, menyenangkan, produktif, menarik, menarik pengalaman di kelas ini. Itulah yang aku berkomitmen untuk. Itulah mengapa saya suka melakukan hal ini. Itu adalah nomor satu hal saya, mendukung kalian. Jika Anda memiliki pertanyaan tentang kuliah, masalah set, bagian, hidup, bahkan jika Anda ingin berbicara tentang hidup, jangan ragu untuk menjangkau. Anda memiliki nomor ponsel saya, Anda memiliki email saya alamat, Anda memiliki GChat saya. Anda dapat menghubungi saya di salah satu atau semua mereka kapan saja, tapi mungkin tidak akan mendapatkan respon kapanpun. Aku mencoba dan mendapatkan kembali dalam waktu 24 jam. Sering kali akan berada dalam 20 menit atau 24 menit. Saya harus mengatakan bahwa untuk membuatnya sejajar. Tapi Anda akan mendapatkan respons cukup cepat. Jika Anda mengirimkan pesan saya satu jam sebelum Masalah set jatuh tempo, saya akan menenangkan Anda bawah dan melakukan latihan pernapasan dengan Anda, tetapi jika Anda belum mulai, Anda mungkin tidak akan selesai, dan Aku tidak bisa benar-benar membantu Anda di luar sana meskipun saya akan mencoba yang terbaik. Jadi saya akan melakukan segalanya Saya bisa untuk mendukung Anda. Silahkan untuk menjangkau apakah itu dalam bagian lagi, di Kantor Jam jika Anda melihat saya, atau bahkan di luar. Saya senang untuk mengatur waktu untuk bertemu dan bekerja melalui masalah dengan atau pergi ke material. Jadi itu adalah nomor satu, dukungan. Aku akan melakukan segala sesuatu yang saya dapat mendukung Anda. Nomor dua, pertemuan di tengah. Seperti aku ingin menjadi, aku tidak mahakuasa atau semua-kuat atau Mahatahu, jadi saya tidak tahu semua waktu jika apa yang saya lakukan semakin seberang, jika cara saya mengajar topik membantu Anda belajar, atau jika Anda bingung tentang suatu topik tetapi tidak mengangkat tangan Anda atau meminta saya atau mengirim saya email. Atau bahkan jika Anda, sekali lagi, bingung tentang sesuatu pada sejumlah masalah. Jika Anda tidak menjangkau saya, Saya tidak bisa tahu pasti. Aku akan melakukan yang terbaik untuk check-in pada kalian, pastikan semuanya berjalan dengan baik, cobalah untuk mengajarkan hal-hal dengan cara yang akan kondusif untuk sebagian besar gaya belajar Anda, tetapi jika ada yang bisa saya lakukan, biarkan aku tahu. Seperti itu, jika Anda ingin beberapa bantuan dengan sejumlah masalah, aku lebih dari senang untuk membantu Anda dengan sejumlah masalah. Kita akan melakukan banyak bahwa menjelang kedua setengah dari bagian ini. Tapi jika Anda belum membaca masalah set kembali dan belum menonton berjalan melalui dan belum menyaksikan celana pendek dan mengharapkan saya untuk mengajar Anda segala sesuatu yang telah direkam secara online atau yang dapat Anda temukan di CS50 penelitian, itu tidak benar-benar adil untuk saya atau rekan-rekan Anda yang lain. Jadi tolong, aku lebih dari senang untuk membantu Anda, tapi kalian harus bertemu saya dalam tengah. Kami memiliki ton sumber daya untuk Anda tersedia di CS50. Saya sebutkan beberapa dari mereka. Silakan mengambil keuntungan dari mereka. Jika Anda bingung, aku lebih dari senang untuk membantu Anda menjelaskan mereka dalam cara lain, tapi itu tidak adil jika siswa muncul pada jam-jam kantor, belum mulai apa-apa, dan itu Kamis malam dan mereka mengharapkan TF berjalan mereka melalui setiap satu hal untuk masalah ini ditetapkan karena pada siang hari berikutnya. Masuk akal? Sekali lagi, silakan menemui kami di tengah. Dan akhirnya, harapan yang tinggi. Aku akan menjadi penilaian siapapun yang berada di bagian saya, atau mencetak Anda set masalah. Anda belum pergi kembali masalah mengatur nol atau satu belum. Maaf tentang itu. Kami butuh beberapa waktu untuk akhirnya menyelesaikan bagian, dan sekarang kita bisa mulai grading. Aku akan membuat mereka kembali kepada Anda sesegera mungkin. Mereka adalah beberapa saya advisees luar sana. Aku akan membuat mereka kembali kepada Anda sesegera mungkin. Dan untuk masalah set kedua, kita akan berada di jadwal dan kami akan mulai mendapatkan mereka Anda cukup cepat setelah Anda menghidupkan mereka masuk Ketika Anda mendapatkan masalah Anda mengatur kembali, Anda akan mendapatkan skor, seperti yang Anda tahu dari membaca silabus - kebenaran, desain, ruang lingkup, dan gaya skor. Anda juga akan mendapatkan komentar. Komentar adalah lebih penting dibanding skor. Saya pikir aman untuk mengatakan bahwa. Skor berada hanya beberapa dari satu sampai lima. Sulit untuk membaca ke mereka. Sulit untuk memperbaiki dari mereka. Tapi komentar akan menunjukkan spesifik hal yang Anda lakukan dengan baik atau daerah Anda dapat meningkatkan dan memberikan beberapa ide-ide untuk masa depan atau alternatif cara melakukan sesuatu. Jadi tolong, tolong, tolong baca melalui komentar. Aku meletakkan banyak waktu dalam komentar tersebut. Silahkan baca melalui mereka dan tidak hanya gulir ke bawah ke bagian bawah PDF, mencari skor Anda, atau pergi online dan menemukan skor Anda, dan kemudian mengabaikan komentar. Itu bukan bagaimana Anda akan menjadi lebih baik. Itu bukan bagaimana Anda akan meningkatkan skor Anda pada akhirnya, hanya dengan melihat nilai. Silakan melihat komentar orang-orang. Dan sepanjang garis harapan yang tinggi, lagi, seperti saya katakan, Anda bisa mencetak gol dari satu sampai lima. Berpasangan, bertiga, dan merangkak adalah Sebagian besar nilai Anda akan mendapatkan. Ones dan balita keduanya benar-benar langka. Selalu ada hal-hal kita bisa berbuat lebih baik. Setiap kali saya kode program, ada selalu sesuatu yang saya bisa melakukannya lebih baik. Jadi daripada mengatakan Anda mendapatkan lima sepanjang waktu tentang segala sesuatu dan melakukan semuanya sempurna, saya tidak berpikir apapun dari kita benar-benar percaya bahwa kita - atau mudah-mudahan, kita tidak melakukan segalanya sempurna sepanjang waktu. Jadi jangan khawatir jika Anda tidak mendapatkan lima. Lima tidak peta ke A, empat tidak peta ke sebuah B, tiga tidak tidak peta ke C. Itu tidak bagaimana nilai bekerja. Seperti Daud mengatakan berkali-kali, di akhir semester semua skor dan masukan dari saya, TF Anda, datang bersama-sama dan menentukan nilai akhir untuk Anda. Tapi sekali lagi, itu bukan lima, A, empat, B, dan sebagainya. Jadi aku akan memiliki harapan yang tinggi untuk kalian. Aku akan berharap masalah yang baik set dan aku akan memberikan Anda umpan balik seperti itu. Dan itu tidak akan berarti Anda akan mendapatkan nilai yang lebih buruk. Anda dinilai dari segi kemajuan Anda dari minggu nol sampai akhir kursus itu. Dan akhirnya, dalam hal tinggi harapan di kelas, aku cinta ketika orang berpartisipasi. Saya memahami beberapa orang merasa lebih atau kurang nyaman berpartisipasi. Orang lain yang berpartisipasi bukan dengan mengangkat tangan mereka dan berbicara sepanjang waktu. Tapi kita di kelas ini akan menjadi melakukan banyak masalah kecil, banyak pertanyaan Mini, dan kemudian beberapa besar masalah coding. Jadi pasti bekerja latihan ini keluar ketika kita melakukannya pada komputer Anda atau selembar kertas. Tapi saya juga akan memberikan beberapa waktu sebelum ada yang pernah harus menjawab beberapa dari pertanyaan saya bertanya. Jadi karena saya akan memberi Anda waktu untuk berpikir tentang hal ini, karena kita akan melakukan hal-hal di mitra kadang-kadang, Saya akan mengharapkan orang untuk terlibat sedikit. Dan karena kurangnya istilah yang lebih baik, ada mungkin akan menelepon dingin, yang adalah di mana semua orang akan memiliki kesempatan untuk memikirkan jawabannya, dan kemudian Aku akan menelepon pada Anda, dan kemudian Anda akan mengatakan jawabannya. Jangan khawatir atau takut tentang hal itu. Aku telah melakukannya di masa lalu dan kami telah menemukan bahwa itu jauh lebih sukses, juga membaca penelitian pendidikan di atasnya untuk menentukan apakah atau tidak itu taktik yang baik. Hal ini sangat membantu, terutama jika Anda memberikan siswa waktu untuk berpikir tentang jawaban dan tidak membuat mereka hanya datang keluar dan mengatakan itu langsung dari kelelawar. Tapi jika Anda tidak merasa nyaman menjawab, aku juga cukup baik merasakan bahwa keluar, dan kita tidak akan menempatkan Anda di tempat, terutama pada kamera, meskipun tidak ada Anda berada di kamera sekarang. Jadi mereka adalah norma-norma yang saya miliki. Satu hal lagi sepanjang garis bertemu di tengah. Aku akan memberikan kalian banyak umpan balik. Tolong beri saya masukan juga. Ada sebuah situs web, sayat.me/cs50. Jadi umpan balik yang jujur. Jika Anda ingin memberikan selama bagian, Saya mendapatkan email setiap kali itu terjadi. Kita akan mengambil istirahat dalam sedikit, jadi saya akan melihat melalui umpan balik kemudian. Jika Anda pernah memiliki umpan balik, tolong beri kepada saya di sana. Jika Anda memberi saya umpan balik pada Q, itu indah, tapi itu panduan yang Anda lakukan di akhir. Tapi itu akan berada di akhir semester sehingga Aku tidak akan bisa mengambil semua itu umpan balik dan mengubahnya menjadi pengajaran kalian lebih baik. Jadi silahkan, jika Anda memiliki umpan balik, berikan padaku. Aku mencintai umpan balik. Kembali ke FOP, kita mendapatkan umpan balik sepanjang waktu. Anda dapat memberikan plus, hal-hal yang baik, delta, hal yang saya bisa memperbaiki. Anda bisa mengomentari pakaian saya. Itu tidak akan seperti membantu, tapi kau dipersilahkan untuk mengomentari apapun dan segalanya. Silakan, silakan beri saya masukan. Saya menghargai itu banyak dan berarti banyak bagi saya. Satu norma lagi, menyenangkan. Kita akan memiliki banyak menyenangkan. Mudah-mudahan dalam kursus ini, Anda akan memiliki banyak menyenangkan. Kami akan memiliki permen di bagian. Kami akan memiliki musik. Kami akan mudah-mudahan mengenal satu lain agak baik, jadi saya ingin ini menjadi menyenangkan, menarik pengalaman. Saya tahu beberapa dari Anda telah jatuh tertidur di kuliah Anda sebelumnya hari ini, jadi mudah-mudahan tidak akan menjadi kasus sekarang. Dan jika itu terjadi sekarang, hanya tidak mendengkur karena yang mungkin akan tertangkap kamera. Manis. Setiap pertanyaan, komentar, atau kritik sebelum saya melanjutkan tentang apa pun kita sudah bicarakan? Besar. Jadi kita akan pergi ke dalam array pertama. Ini adalah bagaimana Anda membuat sebuah array. Kami telah melihat ini sebelumnya. Anda memiliki tipe data, Anda memiliki nama, dan kemudian Anda memiliki ukuran. Di sini, saya membuat dua array. Yang pertama adalah sebuah array karakter, dan memiliki 26 ruang. Yang kedua adalah array skor, dan memiliki tiga ruang untuk tiga bilangan bulat. Ya? SISWA: Apakah semua slide ini tersedia di suatu tempat bagi kita? JASON Hirschhorn: Pertanyaan besar. Pertanyaannya adalah, apakah semua ini slide yang tersedia? Ya. Semua slide ini akan tersedia, dan di masa depan, saya akan mengirimkan email kepada Anda sebelum bagian. Tapi hari ini, karena ini adalah pertama minggu, kami memiliki terlambat. Jadi biasanya, Anda akan mendapatkan slide ini, tetapi mereka akan tersedia secara online dan Saya akan mengirimkan email kepada Anda tepat setelah kelas. Ada pertanyaan lain? Jadi sekali lagi, array kotak, karena kurangnya kata yang lebih baik, yang memegang beberapa elemen satu jenis data, dan mereka di samping satu sama lain dalam memori. Dan lagi, ini adalah bagaimana Anda bisa membuat dua jenis array. Jadi setelah Anda melakukan array dengan bahwa baris pertama - int skor, braket tiga, braket dekat - Anda ingin menginisialisasi itu. Anda ingin menempatkan beberapa nilai di sana. Dan ini adalah bagaimana Anda menaruh beberapa nilai dalam di sana, hanya memilih Indice dan menulis nomor. Mari kita menggambar ini di papan tulis. Dapatkah orang melihat? Semua orang bisa melihat. Manis. Sehingga akan menjadi saya array disebut Skor. Seperti yang Anda lihat, itu ukuran tiga. Ada tiga kotak di sana. Masing-masing bisa muat apa jenis tipe data? SISWA: Integer. JASON Hirschhorn: Sebuah integer dalam satu ini. Kami menulis int skor, dan kata pertama adalah tipe data yang akan pergi di kotak dalam array itu. Jadi saya bisa muat tiga. Mengapa saya harus nol sampai ada di papan? Mengapa ia mengatakan nilai nol sama dengan 1? Mengingatkan saya nama Anda. SISWA: Kurt. JASON Hirschhorn: Kurt. SISWA: Ya. JASON Hirschhorn: Mengapa? SISWA: Karena indeks pertama adalah nol, kita mulai menghitung dari nol. JASON Hirschhorn: Jadi kita mulai menghitung nol. Itu tepat. Ini adalah bagian yang membingungkan dan kemauan perjalanan Anda, terutama bila Anda mencoba untuk iterate melalui array, yang akan kita lakukan dalam sedikit. Kami mulai menghitung dari nol. Jadi jika saya ingin untuk merujuk pertama kotak, itu bukan satu kotak. Sayangnya, itu kotak nol. Yang kedua adalah kotak satu, dan dalam hal ini kasus, yang ketiga adalah kotak dua. Bagaimana dengan tiga kotak? Dimana tiga kotak? Atau jika saya ingin melakukan skor, braket tiga, braket dekat, apa itu? Jadi, Anda mengatakan karakter null. Setiap pikiran lain? Apa skor braket braket tiga? SISWA: Ini tidak benar-benar ada karena Anda hanya didefinisikan sebagai skor, braket tiga. JASON Hirschhorn: Jadi Anda katakan itu tidak benar-benar ada. Dalam beberapa kasus, ketika kita sedang berhadapan dengan string, umumnya kita akan menaruh null karakter di akhir. Kita akan mendapatkan bahwa dalam satu detik. Tapi dalam kasus ini, ada ada kotak ketiga di sini. Jadi kotak terakhir dalam array setiap adalah ukuran dikurangi 1. Jadi jika kita memiliki sebuah array berukuran n, yang kotak pertama berada pada nol, yang terakhir adalah pada n dikurangi 1. Dan dalam kasus ini, itu tidak ada. Ada sesuatu di sini di memori, tetapi itu bukan milik kita. Kami tidak memiliki itu. Kami tidak meminta untuk itu. Jadi jika kita mencoba untuk mengaksesnya, yang kita akan dilakukan di sedikit, kita mungkin akan mendapat kesulitan. Dalam kasus ini, aku menginisialisasi saya array dengan tiga variabel. Kami menempatkan satu di kotak nol, dua dalam kotak satu, dan tiga di dalam kotak dua. Apakah ada yang memiliki pertanyaan tentang inisialisasi array? Jadi kami pergi selama ini sekarang. Skor, braket tiga, braket dekat, yang tidak ada. Kami nol diindeks dalam ilmu komputer, jadi kita mulai menghitung dari nol. Kotak terakhir yang tersedia bagi kita, itu adalah kotak ketiga, tapi itu disebut kotak nomor dua. Di bawah, ini adalah alternatif cara menginisialisasi array. Jadi, bukannya menciptakan array pada satu line, mengisi kotak pertama, kemudian kotak kedua, maka kotak ketiga, Anda dapat melakukan semuanya dalam satu baris. Jadi dalam baris itu, kedua array. Hal ini menciptakan array yang sama persis seperti apa yang kita buat di sini, tapi hanya melakukannya dalam satu baris. Sekarang kita telah menciptakan array kita. Biasanya setelah Anda membuat sebuah array, Anda ingin melakukan sesuatu dengan itu, apakah yang mengisinya atau mendapatkan sesuatu dari itu dan mencetaknya pada layar. Dalam kasus ini, kita akan melewati kami skor array, yang kita diinisialisasi pada baris pertama di sini abu-abu. Dan kemudian pada baris kedua, kita mulai iterasi melalui array. Apakah ada yang memiliki pertanyaan tentang struktur untuk loop? Jadi ini adalah untuk loop. Kami memiliki kondisi awal kami, dan kemudian Kondisi terakhir kami, dan kemudian kami iterate, i, setiap loop. Dan di dalam kurung kurawal ini lingkaran, apa yang terjadi jika aku lari program ini? Bisa memberitahu saya apa yang akan kita dapatkan? [? Matu? ?] Matu: Mencetak semua nilai pada setiap baris. Ini akan mencetak masing-masing skor pada baris terpisah. JASON Hirschhorn: Apa sebenarnya apakah itu cetak? SISWA: Ini akan mencetak satu, kemudian dua, lalu tiga. JASON Hirschhorn: Tepat. Ini akan mencetak satu, kemudian dua, kemudian tiga, masing-masing pada baris terpisah, karena kita akan melalui array dan Anda akan melihat bahwa kedua, printf pernyataan, nilai i. Jadi pada babak pertama melalui kami untuk lingkaran, saya sama dengan nol, yang berarti kita mendapatkan nilai pada nilai nol - yang, jika kita kembali ke diagram kita, adalah satu - dan mengisi - oh, ia mengatakan c. Yang harus% d. Saya akan memperbaikinya dalam sedikit ketika Aku menyerahkan hal itu kepada kalian. Tapi kami menyajikan sebuah integer sehingga harus% d sini, bukan% c. Apa% c? SISWA: Karakter. JASON Hirschhorn: Karakter, tepatnya. Apa yang lain? Jika Anda tidak ingin melakukan% d untuk integer, apa lagi yang bisa Anda lakukan? SISWA: i. JASON Hirschhorn:% i, tepatnya. Jadi pertanyaan tentang iterasi melalui array? Jadi apa yang terjadi jika kita melakukan ini? Alih-alih melakukan i adalah kurang dari tiga, kita i kurang dari atau sama dengan tiga. Apa yang terjadi ketika kita menjalankan kode ini? Ya, Annie? SISWA: Mereka akan mencetak hal-hal aneh pada baris keempat. JASON Hirschhorn: Jadi kau bilang, itu akan mencetak hal-hal aneh di baris keempat? Apakah ada yang punya jawaban pertanyaannya? Jadi kemungkinan adalah bahwa ketika kita sampai ke - sehingga pada babak keempat melalui kami untuk lingkaran, seperti yang Anda pikir, Annie, itu akan menjadi nilai braket tiga, yang kita sudah tahu tidak ada, dan kami akan mencoba dan mengakses, mencetaknya keluar, gunakan beberapa cara. Jadi komputer mungkin akan marah pada kami. Kau tepat. Mungkin berhenti program sama sekali. Mungkin mencetak sesuatu benar-benar aneh. Anda tidak bisa mengatakan dengan pasti. Peluang itu mungkin akan marah pada Anda dan hanya berhenti segera. Tapi ini adalah kesalahan umum Anda akan memiliki di mana Anda hanya berhenti dengan satu di akhirnya, dan ini adalah bug yang akan wabah Anda sepanjang coding Anda. Salah satu cara saya ingin lakukan adalah hanya pada papan tulis, pergi melalui setiap iterasi dari loop di tangan atau di atas kertas untuk melihat apa yang terjadi, dan kemudian Anda umumnya menyadari, oh tunggu, aku tidak seharusnya telah pergi ke kurang dari atau sama dengan tiga. Aku harus berhenti di dua, yaitu apa yang terjadi jika kondisi Anda kurang dari tiga. Ada pertanyaan sejauh ini? Manis. Jadi, Anda semua memiliki komputer Anda terbuka. Kami akan memberikan 2-3 menit untuk menulis sebuah program yang membuat sebuah array dengan bilangan bulat satu melalui lima dan kemudian mencetak masing-masing bilangan bulat pada baris baru. Dan jika Anda memiliki pertanyaan, angkat tangan. Saya senang untuk datang. Seperti saya katakan, mari kita tiga menit untuk menulis ini. Apakah semua orang OK jika saya pergi ke jendela baru dan tutup ini? Saya minta maaf jika Anda belum punya kesempatan sampai akhir, tapi kami akan melakukannya bersama-sama sekarang. Jadi di layar, saya # include cs50.h, # include stdio.h. Dapatkah seseorang mengatakan padaku apa dua baris lakukan? Michael? SISWA: Mereka termasuk perpustakaan bahwa CS50 dibuat dan bahwa Steve memiliki disimpan untuk Anda gunakan untuk membuat hidup Anda lebih mudah. JASON Hirschhorn: Jadi Anda mengatakan mereka termasuk perpustakaan, yang CS50 dibuat, cs50.h, dan salah satu yang standar saja, datang dengan paket C, stdio.h. Apa maksudmu termasuk perpustakaan, meskipun? Dapatkah Anda menjadi sedikit lebih spesifik? SISWA: Itu membuat sehingga Anda dapat menggunakan kata-kata kode tertentu untuk memiliki berfungsi terjadi tanpa harus pergi dan membuat fungsi c sendiri. JASON Hirschhorn: Dapatkah Anda memberi contoh? SISWA: Seperti printf adalah salah satu yang dapat Anda gunakan. JASON Hirschhorn: printf. Jadi kau bilang printf adalah salah satu fungsi mana daripada harus printf menulis sendiri, printf termasuk benar-benar di stdio.h, sehingga Anda hanya dapat menggunakannya dan menganggap bahwa ia akan bekerja. Dalam stdio.h, jika Anda membuka file tersebut, apakah itu termasuk bagaimana printf karya, semua kode untuk printf? Mengapa Anda menggelengkan kepala? SISWA: Karena file header hanya termasuk deklarasi fungsi. JASON Hirschhorn: Tepat. Header file hanya mencakup deklarasi fungsi. Jadi pada dasarnya, ketika Anda mengkompilasi ini, hit Membuat Penghitungan, yang akan kita lakukan dalam kedua, compiler tahu bahwa jika Anda menggunakan printf, printf ada. Ini akan didefinisikan di tempat. Ini bukan masalah bagi Anda menggunakannya. Dan kemudian, itu akan mencakup satu dan nol yang benar-benar berisi printf itu implementasi dan menggabungkan mereka dengan kode Anda. Bagaimana Anda memastikan itu termasuk satu dan nol untuk, misalnya, mendapatkan tali? SISWA: Dapatkan string di cs50.h. JASON Hirschhorn: Benar. Jadi yang mengatakan mendapatkan string yang ada, deklarasi fungsi. Tapi kemudian satu dan nol, biner file itu benar-benar termasuk pelaksanaan get tali? Bagaimana Anda memastikan bahwa berjalan dengan program anda? SISWA: Pass linker di baris argumen perintah. JASON Hirschhorn: Pass linker dalam argumen baris perintah. Bagaimana Anda melakukannya? SISWA: Ini adalah l-baris dalam dentang yang JASON Hirschhorn: Tepat. Anda berkata-l CS50, kan? Itu termasuk satu dan nol. SISWA: Tapi apakah Membuat untuk Anda, kan? JASON Hirschhorn: Tepat. Membuat apakah itu untuk Anda, tetapi akhirnya, Anda tidak akan Membuat, atau Anda harus membuat Membuat sendiri, jadi itu hal yang baik untuk diingat. Jika Anda akan menggunakan salah satu dari perpustakaan lain, tidak hanya Anda miliki untuk menulis # include dan maka perpustakaan. Anda juga perlu link itu masuk Dan dua hal yang berbeda. -L CS50 berbeda dari # include cs50.h. Lalu kami memiliki int main batal keriting kawat gigi, dan sekarang kita akan kode dalam utama. Baris pertama saya miliki di sini adalah komentar yang mengatakan, membuat sebuah array dengan ints satu sampai lima. Apa kata yang tepat untuk menggambarkan apa yang saya miliki sekarang pada layar, hanya komentar di dalam utama? Apa yang kita sebut itu? SISWA: Pseudocode. JASON Hirschhorn: Pseudocode. Terima kasih, Jeffrey. Itu tepat. Pseudocode. Apakah kalian melihat pseudocode sebelumnya? Angkat tangan Anda jika Anda telah menggunakan pseudocode sebelum masalah menetapkan satu. Sekitar setengah dari Anda. Saya akan sangat menyarankan menggunakan pseudocode untuk memecah masalah menjadi lebih kecil, lebih mudah untuk menggigit potongan. Juga, jika Anda melakukan pseudocode, Anda memiliki komentar Anda sudah sebagian besar built in, sehingga Anda tidak perlu kembali dan mencoba untuk mencari tahu apa yang Anda lakukan. Jadi bisa seseorang memberi saya baris pertama ini untuk membuat sebuah array ints dengan satu melalui lima? Anda? MAHASISWA: Int dan kemudian Anda dapat memanggil apapun nomor, dan kemudian persegi braket lima. JASON Hirschhorn: Jadi int angka, persegi braket lima. SISWA: Sama, dan kemudian keriting kawat gigi. JASON Hirschhorn: Sama, kurung kurawal. SISWA: Satu, dua, tiga, empat. JASON Hirschhorn: Satu, dua, tiga, empat, lima. SISWA: Dan kemudian kurung kurawal dan kemudian koma. JASON Hirschhorn: Dan keriting kawat gigi, dan koma. Luar biasa. Mencetak setiap int pada baris baru. Dapatkah orang lain memberikan saya kode itu, please? [? Matu? ?] Silakan. MAHASISWA: Untuk ( JASON Hirschhorn: Untuk ( SISWA: Int i = 0 JASON Hirschhorn: Int i = 0 SISWA: Titik koma i kurang dari lima. JASON Hirschhorn: Titik koma, i kurang dari 5. SISWA: Titik koma, i + +. JASON Hirschhorn: Titik koma, i + +. SISWA: kurung Tertutup, kemudian buka brace. JASON Hirschhorn: kurung Tertutup dan dua kawat gigi. Di dalam kawat gigi? SISWA: Dan kemudian printf "% d / n" JASON Hirschhorn: Maaf, tunggu sebentar. Printf "% d / n, kutipan tertutup. SISWA: Dan kemudian kutipan tertutup, koma, hitung, braket i. JASON Hirschhorn: Comma, count, braket i. SISWA: Maaf, nomor braket i. JASON Hirschhorn: Bilangan, braket i. SISWA: Maaf. Dan kemudian ditutup kurung, koma. JASON Hirschhorn: Ditutup kurung, koma. Aku akan menyimpan itu. Kita akan membuat menghitung. Dan bagaimana saya menjalankan count? SISWA: Backslash. SISWA: Dot garis miring - JASON Hirschhorn:. / Menghitung, tepatnya. Terima kasih. . / Menghitung. Satu, dua, tiga, empat, lima di baris baru. Sepertinya itu bekerja. Ya, Noah? SISWA: Anda juga bisa melakukan kurang dari atau sama dengan empat, seperti saya kurang dari atau sama dengan empat? Apakah ada keuntungan untuk melakukan kurang dari lima, atau hanya dengan cara yang berbeda menulis itu? JASON Hirschhorn: Jadi pertanyaannya adalah Anda bisa dilakukan saya kurang dari atau sama dengan empat bukannya i adalah kurang dari lima. Apakah yang telah bekerja sama? SISWA: Seharusnya. JASON Hirschhorn: Ya. Itu benar-benar akan bekerja sama. Gaya, itu umumnya kurang dari, dan Anda akan melihat dalam satu detik ketika kita string, Anda dapat menggunakan sesuatu disebut strlen, yang telah Anda lihat sebelumnya, untuk mendapatkan panjang string. Dan Anda tidak dapat melakukan kurang dari atau sama strlen. Anda bisa melakukan kurang dari atau sama strlen minus satu. Jadi itu hanya lebih baik untuk melakukan kurang dari strlen. Ya? SISWA: Dan dalam sebenarnya kuis, lakukan kita harus memberikan komentar tentang kami kode juga? JASON Hirschhorn: Pertanyaan itu di kuis, apakah Anda harus menyediakan komentar? Jadi kita akan berbicara lebih banyak tentang kuis saat mereka datang, tetapi umumnya, baik Aturan praktis adalah setiap kali Anda menulis kode, memberikan komentar. Jika Anda mendapatkan kode yang salah tetapi komentar yang tepat, Anda mungkin akan mendapatkan beberapa kredit baik dari saya jika saya kadar Anda pada sejumlah masalah atau kuis. Jadi komentar selalu baik untuk memberikan. Manis. Hitung. Baik pekerjaan. Mari kita lanjutkan. Strings. Strings. Kami telah melihat ini sebelumnya di kuliah. Ini meniup pikiran saya ketika saya pertama kali mengetahui ini. Mungkin tidak meniup siapa pun pikiran di sini, tapi itu OK. String adalah array dari karakter, dan mereka akhirnya dengan, seperti yang Anda katakan sebelumnya, null terminator, yang adalah ini / 0 karakter. Jika kita akan menggambar string pada papan, kami akan menariknya ke sini. Jadi berapa lama string ini? Maaf. Berapa lama string ini? SISWA: [Tak terdengar]. JASON Hirschhorn: Empat? Mengapa empat? SISWA: Karena tempat kelima adalah untuk karakter null. JASON Hirschhorn: Jadi tempat kelima adalah untuk karakter null. Jadi jika saya menjalankan strlen pada ini, itu akan memberi saya empat. Benar. Dan array, meskipun, jika saya harus menginisialisasi array ini, berapa banyak ruang akan saya harus meminta? SISWA: Lima. JASON Hirschhorn: Lima. Aku harus meminta lima, tapi aku bisa hanya memasukkan empat karakter di sini karena saya harus menempatkan nol bahwa terminator di ujungnya. Jadi kita akan menulis dalam "ohai" dan menempatkan null terminator di di akhir. Kami akan mengatakan ini adalah sebuah string s sama ini. Apa s braket nol? s braket nol, Annie? SISWA: O. JASON Hirschhorn: O, tepatnya. s braket satu? s braket lima? s braket lima? SISWA: Tidak ada. JASON Hirschhorn: Tidak ada. Persis benar. Keren. Pertanyaan tentang pemahaman string sebagai array karakter? OK, kemudian. Salah satu program lebih untuk kalian. Menulis sebuah program yang meminta user untuk string kemudian mencetak masing-masing karakter pada baris baru. Jadi mari kita tiga menit untuk menulis program ini, dan kemudian kita akan kode itu sebagai sebuah kelompok. Maaf. Apakah Anda perlu untuk melihat ini? SISWA: No JASON Hirschhorn: OK. Mari kita mengambil satu menit lagi untuk kode ini, atau setidaknya memulai itu. Jadi, Anda bisa tetap bekerja, tapi aku akan mulai akan melalui itu. Jadi seperti sebelumnya, saya miliki di layar # Include cs50.h, # include stdio.h. int void main. Di dalam kurung kurawal utama, saya harus dua komentar, pseudocode. Salah satunya adalah meminta string dari pengguna. Yang kedua adalah mencetak masing-masing karakter pada baris baru. Jadi Anna, bisa Anda memberi saya tanyakan untuk string dari pengguna? SISWA: printf. JASON Hirschhorn: printf? SISWA: Ya. ( JASON Hirschhorn: ( SISWA: "beri aku string. JASON Hirschhorn: "memberikan saya str - oops - String. MAHASISWA: / n ") titik koma. JASON Hirschhorn: Akhir string, kurung tertutup, titik koma. SISWA: Ya. Dan kemudian baris berikutnya, tali s = mendapatkan tali. JASON Hirschhorn: String s = mendapatkan tali. SISWA: Ya. Dan kemudian () JASON Hirschhorn: () SISWA: Titik koma. JASON Hirschhorn: Titik koma. Fantastis. Jadi aku akan mendapatkan string dan Aku akan menyimpannya dalam apa? Apa variabel yang disebut yang Anda buat? SISWA: String s. JASON Hirschhorn: Variabel adalah disebut s. Ini tipe string. Tepat. Selanjutnya hal yang kita ingin adalah mencetak masing-masing karakter pada baris baru. Siapa yang bisa memberi saya kode itu? [Tak terdengar]? Dapatkah Anda berikan kepada saya? SISWA: Tentu. JASON Hirschhorn: Mari kita lakukan. Dan maaf. Saya tidak ingin mengulang apa yang Anda katakan karena Anda mendapatkan itu benar, tapi aku harus mengulanginya sehingga ketika mereka menuliskan ini, mereka bisa mendapatkan semua keluar teks pada transkripsi. Jadi Anda bisa terus berbicara. Sayangnya, saya harus mengatakannya atas Anda. Maafkan aku, tapi - SISWA: Itu baik-baik saja. Untuk int i = 0 JASON Hirschhorn: Untuk int i = 0 SISWA: Saya kurang dari - JASON Hirschhorn: Titik koma. SISWA: Sebelum ini, kita bisa meletakkan variabel sehingga Anda mendapatkan int panjang nama? JASON Hirschhorn: Oh, Anda tidak ingin menempatkan titik koma? OK. Jadi apa yang Anda ingin lakukan setelah nol? SISWA: Saya ingin mendapatkan panjang string s dan menetapkan bahwa untuk variabel? JASON Hirschhorn: OK, jadi bagaimana saya melakukannya? SISWA: Jadi anda melakukan int panjang = JASON Hirschhorn: Int panjang = SISWA: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - SISWA: Dari s. Kurung. JASON Hirschhorn: (s). SISWA: Dan kemudian saya pikir Anda harus menempatkan koma antara dua ints. JASON Hirschhorn: titik koma A setelah nol? SISWA: Ya. Kemudian meletakkan titik koma setelah itu, dan Anda katakan, saya kurang dari panjang. i kurang dari panjang, yang adalah variabel. SISWA: Dan kemudian koma. JASON Hirschhorn: Titik koma. SISWA: i + +. JASON Hirschhorn: i + +. Ada loop untuk kami. OK, di dalam untuk loop. SISWA: Dan kemudian melakukan printf. JASON Hirschhorn: printf. SISWA: Kurung. JASON Hirschhorn: kurung, tanda kutip. SISWA: Kurung, tanda kutip,% c / n. JASON Hirschhorn:% c, OK. MAHASISWA: / n. JASON Hirschhorn: / n. SISWA: kutipan Tertutup. JASON Hirschhorn: kutipan Tertutup. SISWA: koma. JASON Hirschhorn: Koma. SISWA: S. JASON Hirschhorn: S. SISWA: Bracket i. JASON Hirschhorn: Bracket i. SISWA: Dan kurung kemudian ditutup. JASON Hirschhorn: kurung tertutup. SISWA: Dan kemudian koma. JASON Hirschhorn: Titik koma. Fantastis. Jadi mari kita simpan ini. Membuat mengeja. Oh boy. Aku punya beberapa kesalahan. Pertama kesalahan pada baris 11, ia mengatakan, diharapkan berekspresi, dan itu memberi saya sebuah kesalahan yang kedua int, ada kesalahan. Ada beberapa error sekitar sana. Apakah ada yang tahu apa kesalahan itu? Kurt? SISWA: Saya pikir itu seharusnya menjadi koma dan tidak titik koma. JASON Hirschhorn: OK, koma bukan titik koma. Jadi itu semua kita harus memperbaiki? SISWA: No JASON Hirschhorn: Apa lagi kita harus memperbaiki? SISWA: Kita harus menyertakan string.h. JASON Hirschhorn: Sertakan string.h. Di mana saya harus termasuk itu? SISWA: Tempat yang sama Anda termasuk hal-hal lain, kan setelah termasuk stdio.h. JASON Hirschhorn: Mari kita lihat apakah ini berjalan pertama karena umumnya, saya suka untuk memperbaiki satu hal pertama, dan kemudian jalankan , dan kemudian melihat kesalahan kita. Jadi kita akan membersihkan terminal dengan kontrol n, mari kita lakukan membuat mantra. Jadi kesalahan lain pada baris 11. Diharapkan koma. Dan aku masih mendapatkan kesalahan pada baris ini. Jadi tidak memberi saya sebuah kesalahan mengatakan itu tidak mengerti apa strlen adalah, tetapi memberi saya kesalahan pada ini line, jadi apa lagi yang salah? Mark? Marcus. SISWA: Apakah Anda harus menghapus deklarasi int kedua? JASON Hirschhorn: Hapus int kedua. Mari kita coba ini. Sekarang jelas terminal. Membuat mengeja. Kesalahan. Implisit menyatakan perpustakaan Fungsi strlen. Jadi sekarang kita melihat kesalahan itu. Apa yang perlu kita termasuk? SISWA: string.h. JASON Hirschhorn: Sertakan string.h, kami akan melakukan # include string.h di atas layar. Mari kita simpan, membuat mantra. Sekarang dikompilasi. Jadi sekali lagi, hal-hal yang kita perlu ingat garis di 12 untuk loop kami ketika kita menyiapkannya, int i = 0, Panjang = strlen (s). Ini adalah strategi yang fantastis. Gaya ini besar, desain ini sangat bagus. Kita bisa pergi ke alasan tersebut kemudian, tetapi cara ini Anda hanya perlu menelepon strlen sekali bukan setiap satu kali Anda menjalankan lingkaran tersebut. Namun, Anda perlu menggunakan koma ada dan Anda tidak perlu int lagi. Jika Anda menyatakan baik yang variabel bersama-sama, Anda tidak perlu int lagi. Dan kemudian jika Anda akan menggunakan strlen, yang merupakan perpustakaan lain fungsi tidak termasuk dalam stdio.h atau cs50.h, membuat Pastikan Anda menyertakan string.h. Kurt? SISWA: Jadi jika Anda tidak perlu mengatakan apa jenis panjang adalah, apakah itu berarti itu menjadi int? Anda tidak bisa memiliki dua berbeda jenis sana? JASON Hirschhorn: Jadi Anda bisa memiliki dua jenis yang berbeda. Panjang adalah int sini, meskipun. Panjang adalah int karena koma dan kemudian hal yang sama. SISWA: Jadi mengasumsikan bahwa itu akan harus sama dengan yang pertama? JASON Hirschhorn: Tepat. Kami tidak akan melakukannya sekarang, tetapi Anda dapat mencakup dua variabel pada baris yang sama menggunakan satu jenis data. Jadi int x, y akan menciptakan dua variabel. Jadi int x, y, jika kita membuat itu, memberikan saya sebuah variabel x dan y tidak terpakai karena kami tidak menggunakannya. Sehingga menempatkan kekosongan sebelum hanya trik mewah jika Anda tidak menggunakan sesuatu, untuk menggunakannya. Tapi seperti yang Anda lihat, saya membuat x dan y pada baris yang sama dengan tanda koma. Ini menciptakan dua bilangan bulat di sana. Jadi ya, benar-benar mungkin untuk membuat dua hal pada baris yang sama dipisahkan dengan koma. Mari kita menyingkirkan orang-orang, meskipun. Jadi ada mantra. Terima kasih kepada kalian untuk coding untuk kita. Mari kita membuat satu kali lagi, menjalankannya. Beri aku string. [Tak terdengar], Anda melakukan sebagian besar. Apa string? SISWA: Hello. JASON Hirschhorn: Hello. H-E-L-L-O, masing-masing karakter dalam satu baris. Tampak hebat. Mari kita jalankan lagi. Selalu akan memeriksa untuk kasus sudut. Apa sudut kasus yang baik untuk cek? MAHASISWA: Sejumlah? JASON Hirschhorn: Sejumlah. Jadi aku akan dimasukkan ke dalam 1, dan ia akan mencetak 1. Ini tidak meminta surat, sehingga sepertinya kerja nomor. Baik sudut kasus untuk memeriksa. Apa sudut lain yang baik kasus untuk memeriksa? SISWA: Sebuah string kosong. JASON Hirschhorn: Hm? SISWA: Seperti string kosong. JASON Hirschhorn: string kosong. Jadi jangan dimasukkan ke dalam apa-apa. Dan apa yang akan dicetak? SISWA: Tidak ada. JASON Hirschhorn: Tidak ada. Sepertinya ia bekerja. Anda bisa mencoba sudut kasus lebih, tapi umumnya angka, data yang berbeda adalah besar untuk mencoba, juga ada. Tidak ada, nol, negatif selalu hal-hal besar untuk mencoba dan hal-hal yang harus tes, hal pasti kita akan menguji untuk Periksa dan 50 akan menguji. Pertanyaan tentang spell.c? OK, mari kita kembali. Aku punya program yang lebih untuk kalian untuk menulis. Ini disebut students.c. Ini adalah program yang meminta user untuk lima nama, kemudian secara acak memilih dan mencetak salah satu nama. Program ini sedikit lebih terlibat daripada dua terakhir kita menulis, jadi kenapa tidak kita mengambil lima menit untuk kode itu secara individual, dan kemudian kita akan kode itu sebagai sebuah kelompok. Program ini juga melibatkan beberapa hal Anda mungkin tidak terlihat sebelumnya, jadi jika Anda memiliki pertanyaan tentang, bagaimana Saya melakukan itu, angkat tangan Anda. Aku akan datang dan mengarahkan Anda ke arah yang benar. Tapi kami juga melakukan hal ini karena ini akan menjadi cara yang baik untuk memperkenalkan beberapa topik yang rumit. Sehingga bekerja, kan? SISWA: Ya. JASON Hirschhorn: Setiap kali Anda menghidupkan dalam masalah set, ada banyak cara untuk melakukan itu, tetapi beberapa lebih elegan daripada yang lain. Mari kita menyelam masuk # Include cs50.h. # Include stdio.h. void main int, kurung kurawal. Di dalam kurung kurawal, Aku punya dua komentar. Yang pertama adalah, meminta pengguna untuk lima nama. Yang kedua adalah, memilih secara acak dan mencetak salah satu nama. Jadi mari kita lakukan yang pertama, tanyakan pengguna untuk lima nama. Siapa yang meminta pengguna untuk lima nama dan dapat memberitahu saya bagaimana untuk melakukan itu? Hanya dua orang melakukan bagian pertama. Tiga orang melakukan bagian pertama. Empat, lima. Tom, bagaimana Anda melakukannya? SISWA: Anda akan mendeklarasikan string dan kemudian nama, braket lima. JASON Hirschhorn: String nama braket lima. Jadi apa yang baris ini lakukan, string name braket lima? SISWA: Anda akan mendeklarasikan sebuah array dari string. JASON Hirschhorn: Ini adalah sebuah array dari string. Berapa banyak string yang akan cocok di sini? SISWA: Lima. JASON Hirschhorn: Lima. Luar biasa. Kita akan menyebutnya Nama karena kita akan mendapatkan beberapa orang. OK, selanjutnya? SISWA: Dan kemudian Anda memiliki untuk loop - JASON Hirschhorn: Untuk lingkaran. SISWA: - untuk i = 0. JASON Hirschhorn: Untuk (int i = 0. SISWA: Titik koma. JASON Hirschhorn: Titik koma. SISWA: Saya kurang dari lima. JASON Hirschhorn: Saya kurang dari lima. SISWA: Titik koma. JASON Hirschhorn: Titik koma. SISWA: i + +. JASON Hirschhorn: i + +. SISWA: Dan kurung kemudian ditutup. JASON Hirschhorn: kurung Tertutup, dan kemudian beberapa kurung kurawal. Di dalam kurung kurawal? SISWA: Dan kemudian printf. JASON Hirschhorn: printf. SISWA: Buka kurung, nama% d. JASON Hirschhorn: Maaf? SISWA: Nama. JASON Hirschhorn: Nama. SISWA: Dan kemudian ruang, dan kemudian% d. JASON Hirschhorn: Nama, ruang,% d. SISWA: Dan kemudian / n, dan kemudian ditutup. JASON Hirschhorn: Nama Jadi, ruang, % D / n, kurung tertutup. SISWA: Koma, i + 1. Maafkan aku. Tertutup kutipan, dan kemudian koma, i +1. JASON Hirschhorn: Ditutup kutipan, koma, i +1. SISWA: Ya. Dan kemudian baris berikutnya - JASON Hirschhorn: i + 1. SISWA: Ya. Dan kemudian slide berikutnya adalah nama braket i. JASON Hirschhorn: baris berikutnya adalah nama braket i. SISWA: = mendapatkan tali. JASON Hirschhorn: = Dapatkan - modal G-E-T - String. Ups, maaf. SISWA: Buka, kurung tertutup dan kemudian - JASON Hirschhorn: Terbuka, ditutup paren. SISWA: Titik koma. JASON Hirschhorn: Titik koma. OK, jadi Anda menginisialisasi array string, nama, dan kemudian pergi melalui untuk loop, dan lima kali mencetak beberapa meminta kepada pengguna dan kemudian menyimpan lima senar. Apakah Ada yang punya penyesuaian ini? Tom, saya pikir semua orang setuju dengan Anda. Terlihat cukup baik. OK. Mengapa Anda melakukan i +1, meskipun? SISWA: Maksudku, tidak memiliki untuk menjadi, tetapi saya +1 sehingga itu satu nama untuk nama lima. Jika tidak, itu akan menjadi nama nol sampai empat nama. JASON Hirschhorn: Jadi kau i +1 karena jika tidak akan memiliki dicetak nol sampai empat karena itulah bagaimana komputer berpikir, tapi manusia tidak benar-benar membaca seperti itu. Itu hal lain Anda akan menemukan. Kadang-kadang ketika Anda mencetak sesuatu kepada pengguna, Anda akan ingin untuk membuat sedikit lebih cantik, dan melakukan i +1 dalam hal ini adalah cara untuk membuatnya lebih cantik. Saya juga melihat lima kali, nama string yang lima, saya adalah kurang dari lima. Aku tahu di mana Anda mendapat lima. Anda mendapatkannya dari saya mengatakan Anda lima nama. Tetapi jika kita ingin membuat kode yang sedikit lebih kuat, satu hal yang kita bisa lakukan adalah di sini, di luar int, kita bisa melakukan sesuatu seperti ini, # Define, dan kita bisa melakukan NAMA 5. Jadi pada dasarnya, di mana pun saya menulis modal N, A modal, modal M, ibukota E, modal S, string, itu akan menggantikan bahwa dengan 5 dalam kode. Atau mari kita sebut saja - kami akan sebut saja NOMOR. Jadi aku mendefinisikan semua topi NOMOR menjadi 5. Jadi sekarang mana pun saya memiliki nomor 5, saya bisa menggantinya dengan semua NOMOR caps. Dan sekarang, jika saya ingin mengubah nomor nama, semua harus saya lakukan adalah satu baris ini, line empat, di mana saya memiliki # Define nomor 5, mengubah ke 10, atau mengubah ke 4. Ketika kode Anda akan lebih lama, Anda tidak akan mengingat semua tempat yang Anda menempatkan berapa banyak nama yang Anda inginkan, dan agar Anda tidak melewatkan satu, ini adalah cara yang baik untuk melakukannya, untuk menemukan sesuatu bagian atas dan kemudian hanya menggunakan frase yang di mana-mana seluruh kode Anda. Marcus? SISWA: Apakah itu Gaya disukai dari mendefinisikan global yang n konstan? JASON Hirschhorn: Jadi adalah bahwa Gaya disukai daripada global mendefinisikan n konstan? Jadi kau mengatakan Anda bisa lakukan, int jumlah = 5? SISWA: Apakah mereka memiliki konsonan di C atau tidak? JASON Hirschhorn: Atau const - dalam sama. Jadi kau mengatakan hanya variabel global? SISWA: Ya. JASON Hirschhorn: Jadi Gaya, ada selalu yang benar menjawab, namun kedua lebih baik dari sekedar melempar ini acak nomor seluruh kode Anda. Kami menyebutnya nomor ajaib. Ketika saya melihat kode Anda atau ketika siapa pun yang membaca melalui itu, mereka tidak ingin hanya angka-angka acak yang tidak masuk akal. Bahkan nomor 26, yang umumnya jumlah huruf dalam alfabet, lebih baik untuk mendefinisikan ALPHABET bagian atas dan menyimpan nomor 26 dalam string tersebut, jika itu masuk akal. Atau di masalah menetapkan satu, daripada - lagi, kita tidak berbicara tentang ini di waktu, tetapi bukan hanya melemparkan di mana 25 atau 10, Anda dapat menyimpan nomor 25 sebagai TRIWULAN atau 10 sebagai DIME, dan yang membuat lebih mudah bagi siapa pun yang membaca kode Anda untuk memahami mengapa Anda memilih nomor tersebut. Dan juga untuk Anda, jika Anda pernah ingin memperbarui kode, itu membuat sedikit lebih kuat. Ya? SISWA: Apakah kode ini juga akan akan tersedia untuk kami setelah? JASON Hirschhorn: Semua kode ini bahwa kita telah menulis bersama-sama adalah akan dikirim ke email Anda orang dan tersedia. Ya. Jadi meminta pengguna untuk lima nama. Acak memilih dan mencetak salah satu nama. Siapa yang melakukan baris ini? Ini adalah baris paling sulit di sini. Maaf, Tom. Anda melakukan pekerjaan yang benar-benar baik, tapi ini adalah sedikit rumit. Marcus, pergi ke depan. SISWA: Yah pertama, Anda akan harus menyertakan stdlib.h dan time.h. JASON Hirschhorn: Jadi kau mengatakan di atas, termasuk dua perpustakaan lagi. Kau ingin aku untuk memasukkan S-T-D-L-I-B dot H, Perpustakaan Standar, dan apa yang satu lagi? SISWA: Time.h. JASON Hirschhorn: # include time.h. Jadi ini adalah dua perpustakaan lagi. Saya berasumsi sekarang kita akan menggunakan fungsi yang terkandung dalam dua, yang mengapa Anda perlu untuk memasukkan mereka? SISWA: Jadi, pertama-tama Anda akan ingin menulis srand. JASON Hirschhorn: srand. MAHASISWA: (waktu (0) JASON Hirschhorn: Maaf. Srand (waktu ( SISWA: 0. JASON Hirschhorn: 0. SISWA:)), titik koma. JASON Hirschhorn: paren lain tertutup? Koma. Aku akan hanya mengganti nol dengan NULL. Ini akan melakukan hal yang sama, tetapi umumnya, Anda akan melihat NULL, yang kita akan membicarakan ini baris dalam satu detik. SISWA: Gaya baik? JASON Hirschhorn: Umumnya, orang NULL benar, tapi hal yang sama. SISWA: Dan kemudian nama int. JASON Hirschhorn: Nama Int. SISWA: = JASON Hirschhorn: = SISWA: Rand. JASON Hirschhorn: Rand. SISWA: () JASON Hirschhorn: () SISWA: Nomor Modulo. JASON Hirschhorn: Apa modulo? Karakter? The persen karakter? SISWA: karakter Persen. Modulo NOMOR yang didefinisikan di atas. JASON Hirschhorn: Modulo NOMOR. SISWA: Dan kemudian koma. JASON Hirschhorn: Titik koma. SISWA: Dan kemudian baris baru, printf. JASON Hirschhorn: printf. MAHASISWA: ( JASON Hirschhorn: ( MAHASISWA: " JASON Hirschhorn: " SISWA:% s / n JASON Hirschhorn:% s / n MAHASISWA: " JASON Hirschhorn:% s / n " SISWA: koma, nama ruang. JASON Hirschhorn: Space - SISWA: Oh, saya kira, apa Apakah kita sebut di sini? JASON Hirschhorn: Kami menyebutnya nama. SISWA: Buka braket, nama. JASON Hirschhorn: Buka braket, nama. SISWA: Closed braket. JASON Hirschhorn: Closed braket. SISWA:) JASON Hirschhorn:) SISWA: Titik koma. JASON Hirschhorn: Titik koma. OK, mari kita simpan. Mari kita membuat kode ini. Mahasiswa. Mari kita menjalankan kode ini. Mahasiswa. Tidak / siswa.. . / Siswa. Satu nama. Kami akan mengatakan David. Sebutkan dua, RJ. Sebutkan tiga, Rob. Nama empat, Lucas. Sebutkan lima, Joseph. Dan kemudian ia akan mencetak Joseph lagi. Jadi biarkan aku menjalankan ini lagi. Biarkan aku melakukan nama yang sama. David, RJ, Rob, Lucas, Yusuf. Dan itu memberi saya David kali ini. Jadi saya melakukan hal yang sama, tapi itu memberi saya hal yang berbeda, dan itu karena, tentu saja, kami meminta untuk nama acak. Jadi saya pikir, didasarkan dari saya mengembara sekitar ruangan, bahwa kebanyakan orang mungkin punya pertama bagian kanan, menyiapkan array dan kemudian mendapatkan semua nama. Aku sedang berbicara tentang baris 10 sampai 16. Tapi baris 18 sampai 21 mungkin beberapa hal yang belum pernah melihat sebelumnya, jadi mari kita pergi melalui mereka. Baris ini, srand waktu NULL pada dasarnya - maaf, mari kita loncati baris, rand (). Yang memberikan nomor acak, integer acak. Dan jika anda menekan rand manusia, yang banyak yang Anda lakukan - M-A-N space R-A-N-D - di terminal seperti ini, M-A-N Ruang R-A-N-D, tekan Enter. Anda akan datang ke manual dan akan dapat membaca bahwa rand output perintah num semu byte acak setelah penyemaian nomor acak Generator sekali. Jadi itulah deskripsi. Itulah yang rand tidak, memberikan Anda nomor acak ketika Anda memanggil fungsi itu. Sayangnya, itu tidak benar-benar acak karena jika Anda hanya menelepon secara acak tanpa mendapatkan itu sebagian benih, beberapa titik awal, ia akan selalu memilih yang sama dan menggunakan rumus untuk menentukan yang berikutnya. Jadi jika Anda memanggil rand, itu akan hanya memberikan hal yang sama. Ini akan sangat diprediksi. Ini sebenarnya tidak akan acak. Jadi apa yang perlu kita lakukan, per Marcus petunjuk bagi saya, adalah rand benih dengan sesuatu yang lain, yang adalah apa yang fungsi srand tidak. Ini benih rand dengan sesuatu yang sedikit lebih acak dari hal yang sama, dan dia penyemaian dengan waktu NULL, yang adalah, hanya dengan konvensi, arus waktu dalam detik. Jadi Anda mengasumsikan bahwa setiap orang tidak akan menjalankan kode di tepat kedua yang sama, jadi aman bertaruh bahwa Waktu NULL akan menjadi berbeda setiap kali kode ini dijalankan. Aman bertaruh bahwa dengan demikian, srand akan rand benih dengan sesuatu yang berbeda setiap waktu tunggal. Jadi dengan konvensi, ketika kita melakukan ingin nomor acak, kita menulis baris ini, srand waktu NULL, untuk memberi kita banyak benih lebih acak, dan kemudian kita jalankan rand, yang memberi kami nomor acak. Ya? SISWA: Dapatkah Anda mengatakan apa Anda maksud dengan biji? JASON Hirschhorn: Benih seperti dalam - sehingga rand akan memilih beberapa nomor dan itu akan menggunakan beberapa rumus untuk sampai ke sana. Jadi itu akan memulai dengan sesuatu yang dan kemudian mengubahnya menjadi sesuatu yang didasarkan off formula itu. Jika Anda selalu memberikan hal yang sama, itu selalu akan mengubahnya menjadi hal yang sama. Sehingga hal pertama yang Anda berikan adalah benih. Jadi, Anda ingin memberikan sesuatu berbeda untuk memulai dengan, dan karena itu akan mengubahnya menjadi sesuatu yang berbeda. Dan akhirnya, baris 20, % ini disebut modulo, dan yang membingungkan. Itu sesuatu yang sedikit berbeda di sini bahwa Anda tidak benar-benar miliki dalam matematika kehidupan nyata. Tapi pada dasarnya, ketika Anda mengambil raksasa jumlah dan Anda membagi di C, apa terjadi pada sisanya? SISWA: Ini akan dipotong. JASON Hirschhorn: Ini akan dipotong. Jadi 20 dibagi 3 adalah apa? Apa artinya itu kembali ke Anda, 20 dibagi 3. Maaf, 10 dibagi dengan 3. Apa artinya itu kembali ke Anda? SISWA: [Tak terdengar]. JASON Hirschhorn: 10 dibagi 3 hanya kembali 3, tidak 3 sisa 1. Jadi apa 10 modulo 3 kembali hanya sisa, 1. Jadi jika Anda ingin tahu apa yang dibagi 10 oleh 3 sebenarnya, Anda akan melakukan 10 dibagi dengan 3, Anda akan mendapatkan 3 Anda, dan kemudian Anda akan melakukan 10 modulo 3, dan Anda akan mendapatkan 1. Jadi, Anda akan menyadari bahwa 10 dibagi oleh 3 adalah 3, sisa 1. Dan di baris ini, rand bisa sembarang bilangan bulat, pada dasarnya. Jadi Modulo mengatakan, membagi dengan nomor, yang dalam hal ini 5. Dan jika Anda pernah membagi dengan angka, bilangan bulat selalu harus kurang dari angka tersebut. Jadi jika Anda membaginya dengan nomor 5, sisanya selalu akan menjadi nol sampai empat. Itu hanya bagaimana matematika bekerja. Jadi sejumlah besar moduloed oleh kecil nomor akan selalu kembali sisa dan akan selalu kembali beberapa jumlah yang kurang dari jumlah yang Anda dibagi dengan. Apakah ada yang memiliki pertanyaan tentang modulo, karena akan datang sangat, sangat berguna, jadi saya ingin memastikan semua orang mengerti itu? Keren. Dan kita melihat bahwa program ini bekerja. OK, pindah. Jadi berikutnya, kita akan pergi ke fungsi, dan kami akan pergi melalui sisa barang-barang ini cukup cepat karena saya ingin mendapatkan argumen baris perintah. Jadi fungsi dasarnya, seperti yang Anda lihat, kotak hitam. Mereka mengambil hal-hal dalam disebut parameter, mereka melakukan sesuatu untuk mereka, baik mengubahnya atau membuat beberapa efek samping, dan akhirnya, mereka meludahi sesuatu, yang nilai kembali. Yang bisa memberi saya satu alasan mengapa kita akan menggunakan fungsi? Siapa saja? Salah satu alasan mengapa kita akan menggunakan fungsi? Siapa? Saya melihat dua tangan. Apa alasan yang baik? Marcus? SISWA: Jika Anda harus memanggil sama serangkaian kode beberapa kali. JASON Hirschhorn: OK, jika Anda membutuhkan untuk memanggil potongan yang sama kode beberapa kali. Jeff, apakah Anda memiliki alasan yang berbeda? SISWA: Hanya supaya Anda dapat kode kurang. JASON Hirschhorn: Anda dapat kode kurang. Benar. Jika Anda ingin melakukan sesuatu yang banyak - dalam kode sebelumnya, aku bisa memiliki ditulis mendapatkan tali lima kali, tetapi untuk loop membuatnya terlihat lebih bagus dan Anda harus menulis kode kurang. Fungsi adalah ide serupa. Jika saya ingin melakukan hal yang sama banyak, memindahkannya ke fungsi dan menyebutnya berfungsi setiap kali. Yang akan melakukan hal itu untuk Anda. Itulah alasan yang baik menggunakan fungsi. Jadi anatomi fungsi. Fungsi umumnya akan terlihat seperti ini. Ini akan mulai dengan jenis kembali, maka Anda akan mendapatkan nama. Ini akan membawa argumen, jika dikenal sebagai parameter, dan di dalam mereka kurung kurawal, Anda akan menulis kode Anda. Kami telah melihat satu fungsi banyak. Itu utama. Berikut adalah utama dilapiskan ke bahwa anatomi saya punya sebelumnya. Apa int di sini menandakan? Apa int artinya? Ketika saya menulis int main (void). SISWA: Kembali jenis? JASON Hirschhorn: Maaf? SISWA: Jenis kembali. JASON Hirschhorn: Int adalah kembali jenis, tepat. Main mengembalikan sebuah int. Apa utama? SISWA: Nama fungsi. JASON Hirschhorn: Main adalah nama fungsi. Persis benar. Dan tidak berlaku? Apa batal dalam tanda kurung? SISWA: Tidak perlu setiap nilai eksternal. JASON Hirschhorn: Jadi kekosongan - benar. Di dalam tanda kurung, kami menempatkan parameter atau argumen fungsi mengambil, apa yang terjadi dalam kotak hitam. Ketika Anda menulis batal, Anda katakan ini mengambil apa-apa masuk Void main Jadi int berarti utama yang tidak mengambil apa-apa masuk Di dalam kurung kurawal, kami memiliki beberapa kode, dan kemudian kita melihat pada akhir kembali nol. Apa kembali nol berarti? Yah, kita berbicara tentang jenis kembali. Main perlu mengembalikan int. Itulah yang baris ini tidak. Ini mengembalikan sebuah int, nol. Tentu saja, kita belum melihat bahwa banyak karena dalam pemrograman kita lakukan dengan mesin yang kita lakukan dan para penyusun kita gunakan saat ini, Anda tidak perlu garis itu. Main cukup khusus yang ia tahu ketika Anda mencapai akhir utama, hanya kembali nol jika semuanya berjalan dengan baik. Bahkan, jika sesuatu tidak berjalan dengan baik, utama akan sering kembali yang berbeda nomor menandakan sesuatu yang yang salah dengan program anda. Jadi secara umum ketika Anda melihat kode, Anda tidak menulis kembali nol, tapi itu baik untuk mengetahui bahwa itu yang terjadi di balik adegan karena setiap kali Anda menulis jenis lain dari fungsi, Anda akan perlu termasuk jalur kembali. Jika Anda mengatakan bahwa saya akan mengembalikan int, Anda harus menulis kembali sesuatu. Jika Anda mengatakan kekosongan di sini di awal, void void utama, untuk misalnya, maka itu tidak kembali apapun - kekosongan berarti apa-apa - sehingga Anda tidak membutuhkan jalur kembali. Tapi Anda pernah menulis sesuatu yang tidak membatalkan untuk jenis kembali, Anda perlu sebuah baris yang mengatakan kembali dan Anda perlu menempatkan sesuatu di sana yang sesuai jenis. Ada pertanyaan tentang hal itu? Manis. Lingkup. Ini adalah sesuatu yang kita sudah disinggung juga. Setiap variabel, seperti yang kita tahu, memiliki lingkup tertentu, dan itu pada dasarnya berbicara tentang di mana variabel mungkin atau mungkin tidak dirujuk. Dan saya ingin mengatakan apa yang terjadi dalam kurung kurawal tetap dalam kurung kurawal. Jadi misalnya, jika kita melihat kode ini, kita mendefinisikan variabel global luar utama, int a, di sini di bagian atas. Kami menelepon lain int di dalam utama. Kami memiliki beberapa kawat gigi lebih keriting, dan kita memanggil int lain. Kami memiliki tiga yang dalam kode. Ini bukan hal yang sama. Saya telah membuat tiga variabel yang berbeda. Kemudian di dalam batin ini keriting kawat gigi, saya katakan a = 4. Yang adalah bahwa berbicara tentang, pertama, yang kedua, atau yang ketiga? SISWA: Yang ketiga. JASON Hirschhorn: Ini berbicara tentang yang ketiga. Semua orang yang sebenarnya dapat berbicara tentang dalam hal ini khususnya Misalnya karena ruang lingkup mereka semua berjalan ke dalam kurung kurawal terdalam. Namun, ketika Anda memanggil hal-hal yang sama nama, ada sesuatu yang disebut bersembunyi. Jadi Anda hanya berurusan dengan atau memperbaiki atau menggunakan variabel terbaru, atau yang terdekat dengan Anda. Jadi dalam sini, sebuah ketiga ini adalah yang paling dekat ke baris tersebut, a = 4, sehingga mempengaruhi sepertiga. Dan baris terakhir, a = 2, yang adalah yang berbicara tentang, pertama, kedua, atau ketiga? SISWA: Kedua. JASON Hirschhorn: Ini berbicara tentang kedua. Tentu saja, ketiga paling dekat dengan dalam kode, tetapi ketiga tidak ada di luar mereka kurung kurawal. Setelah Anda mendapatkan itu tertutup keriting brace, itu seperti itu hilang, dasarnya. Jadi hanya dua yang tersisa adalah mereka Dua yang pertama, dan tentu saja, sekarang itu paling dekat dengan yang kedua. Jadi itu hal yang baik untuk ingat tentang ruang lingkup. Sebagai contoh, saya yakin Anda temui ini dalam melakukan loop sementara. Jika Anda menginisialisasi variabel di dalam do while dan kemudian Anda mencoba untuk mengaksesnya luar, Anda mungkin mendapat beberapa peringatan seperti, ini variabel tidak ada. Itu karena dari ide ruang lingkup, bahwa hal-hal hanya ada dalam kurung kurawal tersebut. Curly kawat gigi seperti pelukan raksasa yang Anda memberikan kode Anda, adalah hal lain cara untuk berpikir tentang hal itu. Jadi ini adalah fungsi lain, sesuatu yang untuk kalian untuk kode, hellofunction.c. Kita akan melewatkan itu untuk saat ini, tetapi ini adalah sesuatu yang saya mendorong Anda untuk berlatih sendiri. Menulis sebuah program di mana panggilan utama fungsi lain yang mencetak salam kepada pengguna. Ini dasarnya mengambil hello world dan abstrak yang menjadi printf fungsi lain. Tapi kami tidak akan melakukan itu sekarang karena kita tidak punya banyak waktu kiri seperti aku akan menyukai. Jadi deklarasi fungsi. Kami telah melihat ini sebelumnya juga. Jika Anda ingin menulis fungsi lain, Anda perlu membiarkan komputer tahu dan utama tahu bahwa itu ada. Jadi apa yang kita lakukan di atas utama, kita menulis jenis kembali, nama, dan parameter, dan kemudian di bawah utama, di sini, kita benar-benar menyalin baris yang dan kemudian menulis kode aktual. Jadi cara ini, jika Anda memanggil fungsi di utama di bagian atas, utamanya tahu bahwa halo ada, misalnya, jika saya untuk memanggil halo, dan kemudian terlihat pelaksanaannya di bawah. Apa yang terjadi jika saya tidak termasuk ini berbaris atas, membatalkan hello (void)? Jika saya tidak termasuk baris ini dan panggilan utama Halo, aku akan mendapatkan error. Aku akan mendapatkan error karena compiler tidak tahu bahwa hal ini ada. Hal ini mirip dengan mengapa kita jangan # include cs50.h. Apa dasarnya cs50.h lakukan adalah menempatkan mendapatkan tali di sana. Ini menempatkan mendapatkan int sana. Ini menempatkan semua fungsi yang prototipe sebelum utama sehingga ketika Anda menelepon mereka di main, main tahu bahwa hal-hal yang ada. Itulah yang file-file h. Lakukan. Dan jadi jika Anda akan membuat Anda sendiri fungsi, Anda harus memastikan Anda menempatkan prototipe yang di atas sana. Setiap pertanyaan tentang sejauh ini? Argumen baris perintah. Ini adalah apa yang akan kita selesaikan , dan kemudian mudah-mudahan kita akan memeras dalam beberapa pset. Saya tidak tahu apakah kita akan bisa memeras bahwa dalam karena waktu, tetapi dengan kalian yang ada di sini, dan jika Anda orang ingin mengatakan setelah sebentar, kami bisa pergi ke luar. Tapi kita akan menyelesaikan dengan argumen baris perintah selama 15 menit terakhir. Kami terjaga, Michael? Kau sudah bangun? Baik. Saya tidak tahu jika Anda tidur dengan mata tertutup. Ini akan menjadi sulit. Argumen baris perintah. Mereka adalah salah satu cara untuk menyampaikan informasi ke dalam program. Akhirnya, kita akan menemukan orang lain. Tapi pada dasarnya, kita akan berhenti menulis int main (void) jika kita ingin mengambil beberapa argumen baris perintah. Kita akan menulis hal ini disebut int main (int argc, String argv, tanda kurung. Yang membingungkan. Itu banyak surat yang tidak manusia Inggris, jadi kita akan membongkar mereka sekarang. Argc singkatan count argumen - dan sekali lagi, semua ini akan tersedia secara online - dan itulah jumlah argumen. Argv singkatan argumen vektor, dan mereka adalah argumen sendiri. Ini sebuah array dari string. Kami benar-benar telah melihat sebuah array string sebelum hari ini. Kami menciptakan salah satu di terakhir programnya kita kode. Jadi, inilah contoh. Aku menulis. / Ohai CS50 bagian pada baris perintah saya. Argc dalam hal ini sama dengan 3. Argv braket 0 adalah ohai, argv braket 1 adalah CS50, argv braket 2 adalah bagian. Sekali lagi, argc adalah jumlah argumen, dan untuk perjalanan Anda naik sedikit bit, kita selalu menghitung nama fungsi sebagai argumen pertama. Jadi dalam hal ini, ada tiga argumen, nama fungsi dan kemudian dua yang saya diketik masuk Selanjutnya, kita akan menyelamatkan mereka argumen diri dalam argv. Dan lagi, seperti yang kita lihat sebelumnya, kami melakukan ini dalam program terakhir kami kode. Anda dapat bergerak melalui array argv dan mendapatkan orang-string. Itu dasarnya apa yang kami lakukan di akhir program terakhir kami. Kami memilih nama acak dan kemudian pergi ke nama braket apapun dan dicetak out string yang terletak di sana. Di atas hanya satu array, karena string array sendiri, sebagai berbicara tentang, Anda dapat memiliki array array, yang dasarnya apa argv adalah. Salah satu cara Anda dapat berpikir tentang ini adalah baris dan kolom. Aku bisa menggambar itu sekarang. Jadi argv - itu tidak menghapus. Mari kita menggambar di bawah ohai. Jadi jika saya tulis dalam, ohai CS50 bagian, Aku akan memotong bagian untuk contoh ini. Tapi pada dasarnya, saya multi-dimensi array, ohai CS50, kita akan melakukan sekte. Jadi di sini, saya dapat mengakses - jika saya hanya memberikan argv satu nomor - ini salah. Apa yang salah dalam diagram ini? SISWA: Mulai dari nol. JASON Hirschhorn: Seharusnya mulai dengan nol. Saya mungkin harus juga memutar, tapi karena saya sudah ditarik pada, aku akan meninggalkannya di sana untuk saat ini. Tapi itu dimulai dengan nol. Itu benar. Maaf kalau ini kecil. Dapatkah kalian jenis lihat? Jadi jika saya melakukan argv 0, aku akan mendapatkan semua ohai. Jika saya melakukan argv 1, aku akan mendapatkan semua CS50. Jika saya melakukan argv 2, aku akan mendapatkan semua sekte. Tapi sekarang, seperti yang kita katakan, string adalah array itu sendiri. Jadi apa yang bisa saya lakukan adalah saya dapat memperlakukan ini sebagai array multi-dimensi, dan saya dapat melakukan sesuatu di sepanjang baris argv 0, 0, yang memberi saya hanya karakter 0. Argv 0, 1, yang memberi saya hanya h. Argv 1, 3, yang memberikan saya hanya 0 ini di sini di CS50. Jadi karena string sendiri adalah array, kita menempatkan bahwa dalam array lain. Kami sekarang memiliki array array, dan kita bisa indeks ke array yang pertama kami dan kemudian indeks ke array kedua kami. Dan seperti yang Anda harapkan, kita melakukan itu dengan hanya menempatkan dua - kita melakukan kurung hanya tepat di sebelah satu sama lain. Jadi, dalam contoh ini, argv 1 adalah CS50 dan argv 1, 2, seperti kami katakan, hanya 5. Apakah ada yang memiliki pertanyaan tentang array multi-dimensi? Kalian lakukan mengagumkan. Manis. Jadi kita memiliki program lain di sini, dan ini adalah hal terakhir kami akan lakukan sekarang. Jadi saya ingin Anda untuk menulis sebuah program yang mengambil nama lengkap pengguna, dua dan hanya dua argumen baris perintah, dan akhirnya, mencetak ucapan ke pengguna yang mencakup nama pertama mereka. Jadi kenapa tidak Anda mengambil tiga atau empat menit untuk melakukan hal ini, dan kemudian kami akan pergi di atasnya sebagai sebuah kelompok, dan maka kita akan membungkus? Dan lagi, di sini, ketika kita mengatakan mengambil nama lengkap pengguna per deskripsi masalah ini, seharusnya perintah argumen baris, tidak menggunakan mendapatkan tali. Ya, Marcus? SISWA: Jadi, ketika Anda mengatakan dua perintah argumen baris, adalah bahwa di samping . / run, atau - JASON Hirschhorn: Pertanyaan yang bagus. Do, termasuk. / Run, tiga argumen baris perintah. Atau termasuk / pribadi., Di kasus ini, karena itulah nama file ini. Jadi argc akan menjadi tiga. Tapi aku hanya menginginkan dua argumen diberikan kepada program. Aku harus menentukan itu. Aku akan membuat perubahan itu sebelum aku posting ini dan mengirimkannya ke kalian. SISWA: Bagaimana jika Anda memiliki nama tengah? JASON Hirschhorn: Jika Anda memiliki middle nama, Anda beruntung. Maafkan aku. Atau jika Anda hanya pergi dengan Shakira, Anda juga beruntung. Ya? SISWA: Jadi, ketika orang tidak memiliki cs50.h, mereka mendefinisikan argv sebagai char star argv? Atau apakah masih disebut tali argv? JASON Hirschhorn: Ya. Jadi kata, sekali lagi, kita menutupi atas apa sebenarnya terjadi di sana. Itu akan dibongkar mungkin pada hari Rabu, tapi segera. Ini seperti roda pelatihan. Karena pada dasarnya, itu hal yang sama. Jadi mari kita satu menit untuk Program ini, dan kemudian kami akan pergi ke sebagai sebuah kelompok, dan kemudian seperti saya katakan, membungkus. Dan saya pikir mereka masih permen ekstra, jadi kalian harus mudah-mudahan mengambil itu, atau silahkan mengambil itu. Maaf jika Anda masih menulis, tapi saya ingin menyelam dan kami bisa menyelesaikannya bersama-sama. Jadi saya telah ditulis dalam, # include cs50.h, # include stdio.h. int main (void), curly brace, keriting brace, dalam tiga baris pseudocode, mengambil nama lengkap pengguna, dua dan hanya dua baris perintah argumen, mencetak ucapan ke pengguna yang mencakup nama pertama mereka. Jadi yang pertama, mengambil nama lengkap pengguna. Siapa yang dapat membantu saya mengambil nama lengkap pengguna? Bagaimana saya melakukan bagian itu? Apakah kalian melakukan itu bagian pertama? Mengambil nama lengkap pengguna. Nah, untuk yang satu baris perintah argumen, apa yang harus saya tulis? Apa yang harus saya ubah fungsi saya deklarasi? SISWA: Anda tidak ingin itu menjadi batal lagi. JASON Hirschhorn: Tepat. Saya tidak ingin menjadi batal. Apa yang ingin saya itu harus? SISWA: argc Int. JASON Hirschhorn: Int argc. SISWA: String argv. JASON Hirschhorn: String argv. SISWA: Bracket, braket. JASON Hirschhorn: Bracket, braket. Itu tepat, dan itu sebenarnya bagaimana aku akan mendapatkan nama lengkap pengguna. Mereka akan menaruhnya di sana. Jadi satu yang dilakukan. Jadi sekarang saya ingin dua dan hanya dua argumen baris perintah. Jadi Noah, apa adalah salah satu cara saya bisa memeriksa jumlah perintah argumen baris saya miliki? SISWA: Anda melakukan jika pernyataan. JASON Hirschhorn: Jika pernyataan, tepatnya. Apa yang saya inginkan sebagai kondisi? SISWA: Jika argc lebih besar dari 3. JASON Hirschhorn: Jika argc lebih besar dari 3. Jika argc lebih besar dari 3, apa yang harus saya lakukan? SISWA: Kembali 1. JASON Hirschhorn: Kembali 1. Apakah yang memastikan aku punya dua dan hanya dua? SISWA: No Jika argc lebih besar dari 3 dan kurang dari 2. JASON Hirschhorn: Jika argc lebih besar dari 3 dan argc kurang dari 2. Apa salah satu cara saya bisa menulis ini hanya satu baris, atau tanpa menggunakan bahwa dan Operator Boolean? SISWA: Ini tidak sama dengan 2. JASON Hirschhorn: Jika argc tidak sama dengan 2. Tepat. Jadi jika argc tidak sama dengan 2, bahwa akan memberikan program ini, pribadi, ketika saya menjalankannya, dan yang akan memberikan saya berapa banyak baris perintah argumen? Berapa banyak saya akan memeriksa? Maaf. Biarkan saya reword itu. Jika argc = 2, berapa banyak hal melakukan pengguna menulis ke baris? SISWA: Satu. JASON Hirschhorn: Hanya satu. Jadi sebelumnya, Anda benar, Noah. Apa yang saya benar-benar perlu untuk diletakkan di sana? SISWA: Itu sama dengan 3. JASON Hirschhorn: Argc tidak sama 3. Saya ingin sama 3 karena saya ingin pribadi ditambah dua lainnya. Jadi jika argc tidak sama 3, mengembalikan 1. Mengapa Anda mengatakan kembali 1? SISWA: Karena berarti itu salah. JASON Hirschhorn: Itu berarti itu salah, dan apa yang akan dilakukan? SISWA: Re-meminta pengguna. JASON Hirschhorn: Ini akan berhenti program, sehingga akan harus menjalankan lagi, tapi kita tidak punya apa-apa in di sini untuk meminta mereka lagi. Aku tidak meminta untuk itu. Jadi itulah yang benar. Kembali 1 hanya berhenti program. Besar. Dan mencetak salam kepada pengguna yang meliputi nama pertama mereka. Bagaimana saya bisa melakukannya? Anna? SISWA: printf. JASON Hirschhorn: printf. MAHASISWA: (" JASON Hirschhorn: ( SISWA: "Halo JASON Hirschhorn: "Halo SISWA:% s JASON Hirschhorn:% s MAHASISWA: / n JASON Hirschhorn: / n MAHASISWA: ", JASON Hirschhorn: ", SISWA: Argv JASON Hirschhorn: Maaf? SISWA: Argv JASON Hirschhorn: Argv SISWA: Persegi kurung 1. JASON Hirschhorn: Persegi kurung? SISWA: 1. JASON Hirschhorn: 1. SISWA: Dan) titik koma. JASON Hirschhorn:) titik koma. Mari kita menjalankan ini. Buat pribadi. . / Pribadi. Itu hanya berhenti. Mengapa itu berhenti? SISWA: Anda tidak menempatkan setiap argumen. JASON Hirschhorn: Saya tidak menempatkan setiap argumen masuk Tampak hebat. Kalian dipaku itu. Jadi sekali lagi, Anda pergi ke argv dan Anda diperiksa di argc awal. Mereka adalah dua penting hal yang perlu diingat. Jadi kami terakhir dua menit sebelum kita pergi, kita tidak akan sampai ke pset dua, tapi seperti saya katakan, jika Anda ingin tinggal setelah selama 10 menit, saya akan ia senang untuk pergi atas dengan kalian logika untuk set ini masalah. Kami memiliki banyak untuk menutupi hari jadi saya tidak sampai ke mereka. Secara umum, saya ingin memasukkan bahwa di akhir. Jadi jika Anda ingin bertahan, bertahan selama 10 menit. Kami akan melakukan itu. Lalu, seperti yang saya sebutkan di awal, pset nol dan satu, kita akan mendapatkan bahwa umpan balik kembali kepada Anda sebagai sesegera mungkin. Tujuannya adalah untuk mendapatkan umpan balik pset satu, bagian komentar, sebelum pset dua jatuh tempo. Jadi, jika Anda membuat beberapa kesalahan atau Gaya, hal bisa lebih baik, Anda akan memiliki informasi itu sehingga Anda tidak akan melakukan hal yang sama di pset dua. Dan kemudian di masa depan, Anda akan mendapatkan semua umpan balik pset Anda dan komentar kembali sebelum berikutnya jatuh tempo. Akhirnya, jika saya bisa menempatkan di tempat lain plug untuk umpan balik. Ini adalah bagian pertama Anda. Itu adalah bagian pertama saya mengajar tahun ini. Pergi ke sana. Menulis hal, baik dan buruk, dan saya akan menggunakannya untuk membuat Bagian yang lebih baik waktu berikutnya. Dan terakhir, sekali lagi, jika Anda membutuhkan apa-apa, biarkan aku tahu. Aku lebih dari senang untuk membantu kalian. Jika Anda hanya ingin permen, saya akan memiliki permen tambahan. Saya senang untuk membawa kepada Anda. Ini akan menjadi kursus yang menakjubkan. Ini adalah salah satu, jika tidak favorit saya Tentu saja, saya telah mengambil sepanjang hidup saya, dan saya berharap ini akan menjadi yang indah untuk Anda. Jadi saya ingin melakukan segalanya dalam kekuasaan saya untuk membuat yang mengagumkan untuk Anda. Aku akan mengirimkan email jika Anda dalam bagian saya atau Nuh, dan akan mencoba dan jadwal dengan masing-masing kalian waktu untuk check-in di atas beberapa minggu berikutnya sehingga saya bisa mendapatkan rasa apa latar belakang CS Anda, dan juga akan membantu saya menyesuaikan ini bagian untuk lebih memenuhi kebutuhan Anda. Jadi itulah yang saya sudah mendapat berbaris. Sekali lagi, saya akan melihat Anda di luar jika Anda ingin berada di sana. Ini adalah minggu dua bagian. Terima kasih kalian begitu banyak.