JASON Hirschhorn: Selamat datang ke CS50 seksyen ini, semua orang. Nama saya Jason Hirschhorn. Saya banyak TFS anda, tetapi banyak orang diharapkan akan menyertai kami online pelajar, lanjutan atau pelajar cuba untuk melihat melalui seksyen jika mereka terlepas seksyen mereka bahawa minggu atau hanya mengejar jika mereka mahu mengkaji beberapa material. Jadi sebagai satu sukatan pelajaran, yang semua anda telah membaca, betul? Saya lihat banyak mengangguk kepala. Seksyen menyediakan anda dengan peluang-peluang untuk meneroka kursus ini bahan dalam persekitaran yang lebih intim, serta terjun ke dalam hands-on aktiviti. Jadi pada dasarnya apa yang kita akan melakukan setiap minggu. Kami akan pergi melalui apa yang kita ada berazam untuk menjadi yang paling penting topik yang dibincangkan dalam kuliah, dan orang-orang mungkin juga yang paling berguna dan kemungkinan besar datang pada set masalah dan dalam kuiz, dan dalam kod anda kehidupan di luar CS50. Jadi, kita akan pergi ke topik, membincangkan mereka, pergi ke atas mereka, menjawab apa-apa soalan yang anda lelaki itu mempunyai, dan maka kita akan melakukan banyak masalah amalan dalam pengkodan. Anda semua membawa komputer riba, yang hebat. Ini adalah kelas sains komputer. Walau bagaimanapun, banyak latihan yang kita lakukan, anda tidak perlu untuk komputer riba anda. Anda boleh melakukannya di atas sehelai kertas. Itulah bagaimana anda akan melakukannya pada kuiz. Dan sesungguhnya, itu adalah satu cara yang baik untuk benar-benar tahu bahawa anda bagaimana untuk melakukan sesuatu jika anda tidak mempunyai Semak 50 bergantung pada atau Buat bergantung kepada, memberitahu anda membuat sebarang kesilapan. Jadi, anda dialu-alukan untuk kod pada perkakas atau run.cs50.net, yang merupakan satu lagi alat yang membolehkan anda untuk kod talian, tetapi saya juga ingin mengesyorkan, jika anda tidak mencuba, dengan menggunakan kunci kertas dan cuba amalan ini masalah pada sehelai kertas. Kerana sekali lagi, itu akhirnya apa yang anda akan menjadi diminta untuk lakukan pada kuiz. Jadi mari kita mulakan dengan kami agenda untuk hari ini. Kami akan pergi ke beberapa norma seksyen kita, maka kita akan menyelam ke array, fungsi, dan baris arahan hujah-hujah, yang adalah apa yang anda guys telah dilindungi ini minggu lalu dalam syarahan dan kemudian hari Isnin, dan apa yang anda akan meliputi lebih hari esok. Dan akhirnya, kita akan bercakap tentang pset2. Jika saya boleh mendapatkan tanda tangan jika anda tidak melihat masalah set dua spesifikasi. Kami akan mengatakan semua orang. Hebat. Kami akan bercakap mengenai set masalah dalam sedikit, tetapi jika anda membaca set masalah spesifikasi, itu semua yang anda perlu lakukan. Jika anda membaca bahawa sebelum anda datang ke kelas dan bahagian pada hari Selasa, anda akan menjadi kedudukan yang baik. Kita boleh pergi melalui set masalah, yang adalah apa yang kita akan lakukan pada akhir. Kami akan pergi melalui logik, pastikan semua orang yang di halaman yang sama. Saya mahu anda dapat meninggalkan Selasa berasa sangat selesa dengan apa yang anda perlu lakukan untuk masalah set minggu ini, dan jika anda tidak berbuat demikian, saya akan gembira tinggal selepas dan bekerja dengan anda. Tetapi itu adalah satu perkara yang anda perlu lakukan tetapi saya fikir akan benar-benar pintar, hanya untuk membaca set masalah spesifikasi oleh kelas pada hari Selasa, yang ia kedengaran seperti banyak kamu lakukan. Saya akan bermula dengan agenda setiap kelas supaya anda tahu di mana kita nak pergi. Ini juga berguna untuk orang menonton talian kerana setiap bahagian adalah kod warna, jadi jika anda mahu datang belakang dan hanya menonton 10 minit lebih daripada seksyen 90 minit keseluruhan, anda hanya boleh pergi ke bahagian warna berkod dan melihat bahagian itu. Jadi, saya telah cuba untuk memecahkan mereka ke dalam baik modul yang akan membolehkan anda untuk - jika anda mahu untuk kembali dan mengkaji semula, atau pelajar-pelajar lain yang hanya menonton seksyen untuk mengkaji semula - mencari perkara tertentu mereka mahu memberi perhatian kepada dan belajar lebih lanjut mengenai. Manis. Norma. Saya seorang pemimpin kuliah di kampus. Saya tidak tahu jika sesiapa melakukan kuliah. Adakah sesiapa melakukan kuliah? Satu orang tidak kuliah. Dua orang melakukan kuliah. Awesome. Jadi kuliah adalah tahun pertama Luaran Program orientasi. Kami mengambil mahasiswa ke dalam hutan dan membuat pengalaman yang paling ajaib kehidupan mereka, betul? Yeah. Bunyi mengenai hak. Jadi saya hanya mahu untuk memulakan kita yang pertama seksyen dengan membincangkan beberapa norma-norma bagi kelas dan hubungan kita kerana saya fikir mereka sangat penting. Pertama sekali, seperti orang-orang di antara kamu yang adalah seksyen saya telah menerima dan telah dibincangkan dalam yang e-mel, saya suka ini. Ini adalah sebahagian kegemaran saya tahun ini. Saya begitu teruja. Saya telah berada di sini selama beberapa jam hari ini. Saya tidak meninggalkan bangunan ini kecuali untuk pergi makan kerana saya suka CS50 seksyen, saya suka mengajar, saya suka bekerja dengan anda semua. Salah satu keutamaan saya, jika tidak saya keutamaan nombor satu, bukan sahaja untuk kelas ini tetapi termasuk saya yang lain kelas dan extracurriculars, adalah untuk menyokong anda semua, dan membantu anda lelaki, dan melakukan yang terbaik untuk memastikan bahawa anda lelaki itu mempunyai yang indah, menyeronokkan, produktif, menarik, menarik pengalaman dalam kelas ini. Itulah apa yang saya komited untuk. Itulah sebabnya saya suka untuk melakukan ini. Itu adalah nombor saya satu perkara, sokongan anda semua. Jika anda mempunyai sebarang soalan mengenai kuliah, set masalah, seksyen, hidup, walaupun jika anda mahu bercakap tentang kehidupan, sila berasa bebas untuk mencapai keluar. Anda mempunyai nombor telefon bimbit saya, anda mempunyai e-mel saya alamat, anda mempunyai GChat saya. Anda boleh hubungi saya di mana-mana atau semua mereka bila-bila masa, tetapi mungkin tidak akan mendapat jawapan apabila. Saya cuba dan kembali dalam tempoh 24 jam. Sering kali ia akan berada dalam 20 minit atau 24 minit. Saya sepatutnya berkata bahawa untuk membuat ia selari. Tetapi anda akan mendapat jawapan agak cepat. Jika anda teks saya satu jam sebelum set masalah adalah kerana, saya akan menenangkan anda ke bawah dan melakukan senaman pernafasan yang mendalam dengan anda, tetapi jika anda tidak bermula, anda mungkin tidak akan selesai, dan Saya tidak boleh benar-benar membantu anda di luar sana walaupun saya akan cuba yang terbaik. Jadi saya akan melakukan segala-galanya Saya boleh untuk menyokong anda. Sila berasa bebas untuk mendekati sama ada ia dalam seksyen lagi, pada Waktu Pejabat jika anda lihat saya, atau walaupun di luar. Saya gembira untuk menubuhkan masa untuk memenuhi dan kerja-kerja melalui masalah dengan atau pergi ke atas material. Jadi yang nombor satu, sokongan. Saya akan melakukan semua yang saya boleh untuk menyokong anda. Nombor dua, mesyuarat di tengah-tengah. Seberapa banyak yang saya ingin menjadi, saya tidak berkuasa atau yang berkuasa atau semua-mengetahui, jadi saya tidak tahu semua masa jika apa yang saya lakukan adalah untuk mendapatkan seluruh, jika cara yang saya mengajar topik membantu anda belajar, atau jika anda keliru mengenai topik tetapi tidak mengangkat tangan anda atau bertanya kepada saya atau menghantar saya e-mel. Atau jika anda, sekali lagi, keliru tentang sesuatu pada set masalah. Jika anda tidak sampai kepada saya, Saya tidak dapat tahu bahawa pasti. Saya akan melakukan yang terbaik untuk mendaftar masuk pada anda semua, pastikan semuanya berjalan dengan baik, cuba untuk mengajar perkara-perkara dengan cara yang yang akan menjadi sesuai untuk kebanyakan gaya pembelajaran anda, tetapi jika ada apa-apa yang boleh saya lakukan, beritahu saya. Bersama-sama orang-orang garisan, jika anda mahu bantuan dengan set masalah, saya lebih daripada gembira untuk membantu anda dengan set masalah. Kami akan melakukan banyak ke arah yang kedua separuh daripada bahagian ini. Tetapi jika anda tidak membaca masalah menetapkan menyokong dan tidak menonton berjalan melalui dan tidak melihat seluar pendek dan mengharapkan saya untuk mengajar anda semua yang telah dirakam online atau anda boleh dapati di CS50 kajian, yang tidak benar-benar adil kepada saya atau kepada rakan-rakan anda yang lain. Oleh itu, sila, saya lebih daripada gembira untuk membantu anda, tetapi anda semua dapat bertemu saya dalam tengah-tengah. Kami mempunyai banyak sumber untuk anda boleh didapati di CS50. Saya sebutkan sebahagian daripada mereka. Sila mengambil kesempatan daripada mereka. Jika anda keliru, saya lebih daripada gembira untuk membantu anda menerangkan kepada mereka dalam cara yang lain, tetapi ia tidak adil jika pelajar muncul pada waktu pejabat, belum bermula apa-apa, dan ia Malam Khamis dan mereka menjangkakan TF untuk berjalan mereka melalui setiap satu perkara bagi masalah yang ditetapkan oleh pada tengah hari keesokan harinya. Masuk akal? Sekali lagi, sila berjumpa dengan kami di tengah-tengah. Dan akhirnya, harapan yang tinggi. Saya akan menjadi orang penggredan siapa dalam seksyen saya, atau menjaringkan anda set masalah. Anda belum pulang masalah ditetapkan sifar atau satu lagi. Kami minta maaf tentang itu. Kami mengambil masa seketika untuk akhirnya menyelesaikan bahagian, dan kini kita boleh mula penggredan. Saya akan mendapatkan mereka kembali kepada anda secepat mungkin. Mereka adalah sebahagian daripada saya advisees di luar sana. Saya akan mendapatkan mereka kembali kepada anda secepat mungkin. Dan untuk masalah set dua, kami akan berada di jadual dan kami akan mula mendapat mereka kepada anda agak cepat selepas anda menghidupkan mereka masuk Apabila anda mendapat masalah yang ditetapkan kembali, anda akan mendapat markah, seperti yang anda tahu daripada membaca sukatan pelajaran - ketepatan, reka bentuk, skop, dan gaya markah. Anda juga akan mendapatkan komen. Komen-komen adalah lebih penting daripada markah. Saya fikir ia adalah selamat untuk mengatakan bahawa. Markah hanya sebilangan dari satu hingga lima. Adalah sukar untuk membaca kepada mereka. Adalah sukar untuk meningkat daripada mereka. Tetapi komen akan menunjukkan tertentu perkara yang anda lakukan dengan baik atau kawasan anda boleh meningkatkan dan memberikan anda beberapa idea untuk masa depan atau alternatif cara-cara melakukan sesuatu. Oleh itu, sila, sila, sila baca melalui komen. Saya meletakkan banyak masa ke orang komen. Sila baca melalui mereka dan tidak hanya tatal ke bawah ke bahagian bawah PDF, mencari skor anda, atau pergi ke dalam talian dan mencari skor anda, dan kemudian mengabaikan komen-komen. Itu bukan bagaimana anda akan menjadi lebih baik. Itu bukan bagaimana anda akan meningkatkan skor anda akhirnya, hanya dengan melihat markah. Sila melihat orang-orang komen. Dan bersama-sama barisan harapan yang tinggi, sekali lagi, seperti yang saya kata, anda boleh menjaringkan gol dari satu sampai lima. Berdua-dua, bertiga, dan merangkak adalah Sebahagian besar daripada skor anda akan mendapat. Orang-orang dan lima kedua-duanya benar-benar jarang berlaku. Selalu ada perkara-perkara kita boleh melakukan yang lebih baik. Setiap kali saya kod program, terdapat sentiasa sesuatu yang saya boleh buat lebih baik. Jadi, daripada mengatakan anda mendapat lima sepanjang masa atas segala-galanya dan tidak segala-galanya sempurna, saya tidak fikir mana-mana kita benar-benar percaya bahawa kita - atau mudah-mudahan, kita tidak melakukan segala-galanya sempurna setiap masa. Jadi jangan bimbang jika anda tidak mendapat lima. A lima tidak merancang ke A, empat tidak merancang ke B, tiga tidak tidak peta ke C. Itu bukan bagaimana skor bekerja. Seperti Daud telah berkata banyak kali, pada akhir semester semua skor anda dan input dari saya, TF anda, datang bersama-sama dan menentukan gred akhir untuk anda. Tetapi sekali lagi, ia bukan lima, A, empat, B, dan sebagainya. Jadi saya akan mempunyai harapan yang tinggi untuk anda semua. Saya akan mengharapkan masalah yang baik set dan saya akan memberi maklum balas seperti itu. Dan ia tidak akan bermakna anda akan mendapat gred yang lebih buruk. Anda digredkan dari segi kemajuan anda dari minggu sifar ke akhir kursus ini. Dan akhirnya, dari segi tinggi jangkaan di dalam kelas, saya suka apabila orang mengambil bahagian. Saya faham sesetengah orang merasa lebih atau kurang selesa mengambil bahagian. Orang lain yang mengambil bahagian bukan dengan mengangkat tangan mereka dan bercakap sepanjang masa. Tetapi kita di dalam kelas ini akan menjadi melakukan banyak masalah kecil, banyak soalan mini, dan kemudian beberapa besar kod masalah. Jadi pasti bekerja senaman ini keluar apabila kita melakukan mereka di dalam komputer anda atau pada sehelai kertas. Tetapi saya juga akan memberikan sedikit masa sebelum sesiapa yang pernah mempunyai untuk menjawab beberapa soalan-soalan yang saya bertanya. Jadi kerana saya akan memberikan anda sedikit masa untuk berfikir tentang hal itu, kerana kita akan melakukan perkara-perkara dalam rakan-rakan kadang-kadang, Saya akan mengharapkan semua orang untuk terlibat agak. Dan kerana kekurangan istilah yang lebih baik, terdapat mungkin akan memanggil sejuk, yang adalah di mana semua orang akan mempunyai peluang yang untuk berfikir tentang jawapan, dan kemudian Saya akan memanggil anda, dan kemudian anda akan mengatakan jawapannya. Jangan bimbang atau takut tentang itu. Saya telah melakukannya pada masa lalu dan kita dapati bahawa ia adalah lebih berjaya, juga membaca penyelidikan pendidikan padanya untuk menentukan sama ada atau tidak ia adalah satu taktik yang baik. Ia adalah sangat membantu, terutamanya jika anda memberi pelajar masa untuk berfikir tentang jawapan dan tidak membuat mereka hanya datang keluar dan berkata ia hak off kelawar. Tetapi jika anda tidak berasa selesa menjawab, saya juga cukup baik merasakan bahawa keluar, dan kami tidak akan meletakkan anda di tempat, terutamanya pada kamera, walaupun tiada anda berada di kamera sekarang. Jadi mereka adalah norma saya. Satu perkara yang lebih sepanjang garis mesyuarat di tengah-tengah. Saya akan memberikan anda semua banyak maklum balas. Sila memberi saya maklum balas juga. Ada laman web, sayat.me/cs50. Jadi ia adalah satu maklum balas yang jujur. Jika anda mahu memberikan dalam seksyen, Saya mendapat e-mel apabila ia berlaku. Kami akan berehat dalam sedikit, jadi saya akan melihat melalui maklum balas kemudian. Jika anda mempunyai sebarang maklum balas, sila berikan kepada saya di sana. Jika anda memberi saya maklum balas mengenai Q, itu indah, tetapi itulah panduan yang anda lakukan pada akhir. Tetapi itu akan berada di akhir semester jadi Saya tidak akan dapat mengambil apa-apa yang maklum balas dan mengubahnya menjadi pengajaran anda lelaki yang lebih baik. Oleh itu, sila, jika anda mempunyai apa-apa maklum balas, memberikan kepada saya. Saya suka maklum balas. Kembali ke kuliah, kita akan mendapat maklum balas sepanjang masa. Anda boleh memberi saya plus, perkara yang baik, delta, perkara-perkara yang boleh saya memperbaiki. Anda boleh memberi komen pada pakaian saya. Itu tidak akan menjadi berguna, tetapi anda dialu-alukan untuk memberi komen di mana-mana dan segala-galanya. Sila, sila memberi saya maklum balas. Saya menghargai ia banyak dan ia bermakna banyak kepada saya. Satu kebiasaan lanjut, menyeronokkan. Kami akan mempunyai banyak keseronokan. Mudah-mudahan dalam kursus ini, anda akan mempunyai banyak keseronokan. Kami akan mempunyai gula-gula di bahagian. Kami akan mempunyai muzik. Kami akan diharapkan mendapat tahu satu lain agak baik, jadi saya ingin ini menjadi yang menyeronokkan, pengalaman yang menarik. Saya tahu sebahagian dari kamu telah meninggal kuliah anda mempunyai awal hari ini, jadi diharapkan yang tidak akan berlaku sekarang. Dan jika ia berlaku sekarang, hanya tidak berdengkur kerana mungkin ditangkap pada kamera. Manis. Sebarang pertanyaan, komen, atau kebimbangan sebelum saya bergerak pada kira-kira apa-apa yang kita telah bercakap tentang? Besar. Jadi kita akan pergi ke dalam barisan pertama. Ini adalah bagaimana anda membuat array. Kami telah melihat ini sebelum ini. Anda mempunyai jenis data, anda mempunyai nama, dan kemudian anda perlu saiz. Di sini, saya membuat dua tatasusunan. Yang pertama adalah pelbagai watak-watak, dan ia mempunyai 26 ruang. Yang kedua adalah pelbagai skor, dan ia mempunyai tiga ruang untuk tiga integer. Ya? PELAJAR: Adakah semua ini slaid ada tempat untuk kita? JASON Hirschhorn: Soalan Besar. Persoalannya ialah, adakah semua slaid ini boleh didapati? Ya. Semua ini slaid akan disediakan, dan pada masa depan, saya akan e-mel mereka untuk anda sebelum bahagian. Tetapi hari ini, kerana ini adalah yang pertama minggu, kami mempunyai satu permulaan yang lewat. Jadi biasanya, anda akan mendapat slaid ini, tetapi mereka akan didapati dalam talian dan Saya akan email kepada anda sejurus selepas kelas. Mana-mana soalan-soalan lain? Jadi sekali lagi, barisan kotak-kotak, kerana kekurangan satu perkataan yang lebih baik, yang memegang pelbagai unsur-unsur satu jenis data, dan mereka sebelah satu sama lain dalam ingatan. Dan sekali lagi, ini adalah bagaimana anda boleh membuat dua jenis tatasusunan. Jadi, selepas anda telah membuat pelbagai anda dengan yang baris pertama - skor int, kurungan tiga, kurungan rapat - anda ingin memulakan ia. Anda ingin meletakkan beberapa nilai di sana. Dan ini adalah bagaimana anda meletakkan beberapa nilai-nilai dalam di sana, hanya memilih indice dan menulis nombor. Mari menarik ini di atas kapal. Semua orang boleh lihat? Semua orang boleh melihat. Manis. Supaya akan menjadi saya pelbagai dipanggil Markah. Seperti yang anda lihat, ia adalah saiz tiga. Terdapat tiga tempat di sana. Masing-masing boleh memuatkan apa jenis jenis data? PELAJAR: Integer. JASON Hirschhorn: integer Satu dalam satu ini. Kami menulis skor int, dan perkataan yang pertama adalah jenis data yang akan pergi di tempat dalam barisan itu. Jadi saya boleh memuatkan tiga. Mengapa saya mempunyai sifar sehingga terdapat di atas kapal? Mengapa ia mengatakan sifar skor bersamaan 1? Mengingatkan saya kepada nama anda. PELAJAR: Kurt. JASON Hirschhorn: Kurt. PELAJAR: Ya. JASON Hirschhorn: Kenapa? PELAJAR: Kerana indeks pertama adalah sifar, kita mula mengira pada sifar. JASON Hirschhorn: Jadi kita mula mengira pada sifar. Itulah yang betul. Ini adalah bahagian yang mengelirukan dan perjalanan kehendak anda sehingga, terutamanya apabila anda cuba untuk melelar melalui array, yang kita akan lakukan dalam sedikit. Kita mula mengira pada sifar. Jadi jika saya ingin merujuk kepada yang pertama kotak, ia bukan satu kotak. Malangnya, ia adalah kotak sifar. Yang kedua adalah kotak satu, dan dalam hal ini kes, yang ketiga ialah kotak dua. Bagaimana pula dengan kotak tiga? Dimana kotak tiga? Atau jika saya mahu lakukan skor, kurungan tiga, kurungan rapat, apa itu? Jadi anda berkata watak null. Mana-mana pemikiran lain? Apakah golongan skor tiga kurungan? PELAJAR: Ia tidak benar-benar wujud kerana anda hanya ditakrifkan sebagai skor, kurungan tiga. JASON Hirschhorn: Jadi kamu berkata ia tidak benar-benar wujud. Dalam beberapa kes, apabila kita berurusan dengan tali, biasanya kita akan meletakkan batal yang watak di akhir. Kita akan sampai ke dalam kedua. Tetapi dalam kes ini, terdapat ada kotak ketiga di sini. Jadi kotak yang terakhir dalam mana-mana pelbagai saiz tolak 1. Jadi, jika kita mempunyai pelbagai n saiz, kotak pertama adalah pada sifar, yang terakhir adalah di n tolak 1. Dan dalam kes ini, ia tidak wujud. Ada sesuatu di sini memori, tetapi ia bukan milik kita. Kami tidak ia sendiri. Kami tidak meminta untuk itu. Jadi, jika kita cuba untuk mengakses ia, yang kita akan lakukan dalam sedikit, kita mungkin akan masuk ke dalam masalah. Dalam kes ini, saya Memulakan saya pelbagai dengan tiga pembolehubah. Kami meletakkan satu di dalam kotak kosong, dua di dalam kotak satu, dan tiga di dalam kotak dua. Adakah sesiapa mempunyai apa-apa soalan kira-kira Memulakan array? Jadi kami pergi ke ini tadi. Markah, kurungan tiga, kurungan rapat, yang tidak wujud. Kami sifar diindeks dalam bidang sains komputer, jadi kita mula mengira pada sifar. Kotak terakhir yang ada kepada kami, ia adalah kotak ketiga, tetapi ia dipanggil kotak nombor dua. Down di bawah, ini adalah alternatif cara Memulakan tatasusunan. Jadi, daripada mewujudkan pelbagai pada satu line, mengisi kotak yang pertama, kemudian kotak kedua, maka kotak ketiga, anda boleh melakukannya semua dalam satu baris. Jadi dalam talian itu, kedua-dua tatasusunan. Ini mewujudkan pelbagai yang sama seperti apa yang kita dicipta di sini, tetapi ia hanya tidak dalam satu baris. Sekarang kita telah mencipta pelbagai kami. Biasanya apabila anda mewujudkan pelbagai, anda mahu melakukan sesuatu dengan itu, sama ada itu isi atau mendapatkan sesuatu daripada ia dan mencetak mereka keluar di skrin. Dalam kes ini, kita akan melalui kami skor array, yang kita dimulakan pada baris pertama di sini di kelabu. Dan kemudian pada baris kedua, kita mula iterating melalui array. Adakah sesiapa mempunyai sebarang soalan mengenai struktur untuk gelung? Jadi ini adalah untuk gelung. Kami mempunyai keadaan awal, dan kemudian keadaan akhir kita, dan kemudian kita melelar, i, setiap gelung. Dan dalam pendakap kerinting di ini untuk gelung, apa yang berlaku jika saya menjalankan program ini? Bolehkah sesiapa beritahu saya apa yang kita akan dapat? [? Matu? ?] Matu: Cetak semua markah pada setiap baris. Ia akan mencetak setiap skor pada baris yang berasingan. JASON Hirschhorn: Apa sebenarnya ia akan mencetak? PELAJAR: Ia akan mencetak satu, kemudian dua, kemudian tiga. JASON Hirschhorn: Tepat sekali. Ia akan mencetak satu, kemudian dua, maka tiga, masing-masing pada baris yang berasingan, kerana kita akan melalui pelbagai dan anda akan melihat bahawa kedua, printf pernyataan, skor i. Jadi pada pusingan pertama melalui kami untuk gelung, i sama dengan sifar, yang bererti kita mendapat nilai pada nilai sifar - yang, jika kita kembali kepada Rajah kami, adalah satu - dan mengisi - oh, ia mengatakan c. Yang harus% d. Saya akan menetapkan bahawa dalam sedikit apabila Tangan yang saya kepada anda semua. Tetapi kita menyampaikan integer supaya ia harus% d di sini, tidak% c. Apakah% c untuk? PELAJAR: Watak. JASON Hirschhorn: Watak, betul-betul. Apa yang lain? Jika anda tidak mahu lakukan% d bagi integer, apa lagi yang boleh anda lakukan? PELAJAR: i. JASON Hirschhorn:% i, betul-betul. Jadi apa-apa soalan mengenai iterating melalui pelbagai? Jadi apa yang berlaku jika kita melakukan ini? Daripada melakukan i adalah kurang daripada tiga, kita i adalah kurang daripada atau sama dengan tiga. Apa yang berlaku apabila kita menjalankan kod ini? Ya, Annie? PELAJAR: Mereka akan mencetak barangan pelik pada baris keempat. JASON Hirschhorn: Jadi anda berkata, ia akan mencetak keluar barangan pelik pada line keempat? Adakah sesiapa mempunyai jawapan kepada soalan itu? Oleh itu, kemungkinan adalah bahawa apabila kita sampai ke - sebagainya pusingan keempat melalui untuk kami gelung, seperti yang anda sangka, Annie, ia akan menjadi skor kurungan tiga, yang kita sudah digambarkan tidak wujud, dan kami akan cuba dan mengakses itu, mencetak keluar, gunakan beberapa cara. Jadi komputer akan mungkin marah pada kita. Anda betul-betul betul. Ia mungkin berhenti program ini sama sekali. Ia mungkin mencetak sesuatu benar-benar pelik. Anda tidak boleh mengatakan dengan pasti. Kemungkinan ia mungkin akan marah pada anda dan hanya berhenti segera. Tetapi ini adalah satu kesilapan yang sama anda akan mempunyai di mana anda hanya dikeluarkan oleh satu pada Akhirnya, dan ini adalah bug yang akan tulah anda sepanjang kod anda. Salah satu cara yang saya suka lakukan adalah hanya pada papan putih, melalui setiap lelaran gelung di tangan atau di atas kertas untuk melihat apa yang berlaku, dan kemudian anda umumnya sedar, oh tunggu, saya tidak perlu telah pergi ke kurang daripada atau sama dengan tiga. Saya sepatutnya berhenti di dua, iaitu apa yang berlaku jika keadaan anda adalah kurang daripada tiga. Sebarang pertanyaan setakat ini? Manis. Jadi, anda semua mempunyai komputer anda terbuka. Kami akan memberi anda 2-3 minit untuk menulis program yang mencipta array dengan satu integer melalui lima dan kemudian mencetak keluar setiap integer pada garis baru. Dan jika anda mempunyai sebarang pertanyaan, mengangkat tangan anda. Saya gembira untuk datang oleh. Seperti saya katakan, mari kita mengambil masa tiga minit untuk menulis ini. Adakah semua orang OK jika saya pergi ke tetingkap baru dan menutup ini? Saya minta maaf jika anda tidak mempunyai peluang hingga ke akhir, tetapi kami akan melakukannya bersama-sama sekarang. Jadi di skrin, saya telah # include cs50.h, # termasuk stdio.h. Bolehkah seseorang beritahu saya apa kedua-dua garis lakukan? Michael? PELAJAR: Mereka termasuk perpustakaan CS50 yang dibuat dan bahawa Steve mempunyai disimpan untuk anda gunakan untuk menjadikan kehidupan anda lebih mudah. JASON Hirschhorn: Jadi anda kata mereka termasuk perpustakaan, salah satu yang CS50 dibuat, cs50.h, dan salah satu yang hanya standard, dilengkapi dengan pakej C, stdio.h. Apa yang kamu maksudkan termasuk perpustakaan, walaupun? Bolehkah anda menjadi sedikit lebih spesifik? PELAJAR: Ia menjadikan ia supaya anda boleh menggunakan perkataan kod tertentu mempunyai berfungsi berlaku tanpa perlu pergi dan membuat fungsi c sendiri. JASON Hirschhorn: Bolehkah anda beri saya contoh? PELAJAR: Seperti printf adalah salah satu anda boleh gunakan. JASON Hirschhorn: printf. Jadi anda berkata printf adalah salah satu fungsi di mana bukannya untuk menulis printf sendiri, printf adalah dimasukkan sebenarnya stdio.h, jadi anda hanya boleh menggunakannya dan menganggap bahawa ia akan berfungsi. Dalam stdio.h, jika anda membuka fail itu, ia akan termasuk bagaimana printf kerja-kerja, semua kod untuk printf? Mengapa anda menggelengkan kepala anda? PELAJAR: Kerana fail pengepala hanya termasuk akuan fungsi. JASON Hirschhorn: Tepat betul. Fail header hanya termasuk pengisytiharan fungsi. Jadi, pada asasnya, apabila anda mengumpul ini, memukul Buat Count, yang kita akan lakukan dalam kedua, pengkompil tahu bahawa jika anda menggunakan printf, printf wujud. Ia akan ditakrifkan tempat. Ia bukan satu masalah untuk anda menggunakannya. Dan kemudian, ia akan termasuk orang-orang dan sifar yang benar-benar mengandungi printf pelaksanaan dan menggabungkan mereka dengan kod anda. Bagaimana anda memastikan ia termasuk orang-orang dan sifar untuk, katakan, dapatkan tali? PELAJAR: Dapatkan tali dalam cs50.h. JASON Hirschhorn: Betul. Jadi yang mengatakan mendapatkan rentetan wujud, pengisytiharan fungsi. Tetapi orang-orang dan sifar, binari fail yang sebenarnya termasuk pelaksanaan tali get? Bagaimana anda memastikan bahawa pergi dengan program anda? PELAJAR: Pas pemaut dalam garis hujah perintah. JASON Hirschhorn: Lulus pemaut dalam hujah baris arahan. Bagaimana anda berbuat demikian? PELAJAR: Ia-l garis di dilafaz yang JASON Hirschhorn: Tepat betul. Anda berkata-l cs50, bukan? Ini termasuk orang-orang yang dan sifar. PELAJAR: Buat Tetapi tidak untuk anda, bukan? JASON Hirschhorn: Tepat sekali. Buat adakah itu untuk anda, tetapi akhirnya, anda tidak akan Buat, atau anda akan mempunyai untuk membuat Buat sendiri, maka itulah perkara yang baik untuk diingati. Jika anda akan menggunakan salah satu daripada perpustakaan lain, bukan sahaja yang anda perlu untuk menulis # termasuk dan maka perpustakaan. Anda juga perlu untuk menghubungkan ia masuk Dan kedua-dua perkara yang berbeza. -L cs50 adalah berbeza daripada # include cs50.h. Kemudian kita mempunyai int sah utama kerinting pendakap, dan sekarang kita akan kod dalam utama. Barisan pertama saya ada di sini adalah komen yang mengatakan, mencipta array dengan Ints satu melalui lima. Apakah perkataan yang baik untuk menggambarkan apa yang saya ada sekarang pada skrin, hanya komen dalam utama? Apa yang kita panggil yang? PELAJAR: pseudokod. JASON Hirschhorn: pseudokod. Terima kasih, Jeffrey. Yang betul-betul betul. Kod pseudo. Adakah anda lelaki dilihat pseudokod sebelum ini? Mengangkat tangan anda jika anda telah digunakan pseudokod sebelum masalah menetapkan satu. Kira-kira separuh daripada anda. Saya sangat akan mengesyorkan menggunakan pseudokod untuk memecahkan masalah kepada yang lebih kecil, lebih mudah untuk menggigit keping. Juga, jika anda lakukan pseudokod, anda mempunyai komen anda sudah sebahagian besarnya terbina dalam, jadi anda tidak perlu kembali dan cuba untuk memikirkan apa yang anda lakukan. Jadi seseorang boleh memberi saya baris pertama ini untuk mewujudkan pelbagai dengan Ints satu melalui lima? Anda? PELAJAR: Int dan kemudian anda boleh menghubungi apa nombor, dan kemudian persegi kurungan lima. JASON Hirschhorn: Nombor Jadi int, kurungan persegi lima. PELAJAR: Sama, dan maka pendakap kerinting. JASON Hirschhorn: Sama, pendakap kerinting. PELAJAR: Satu, dua, tiga, empat. JASON Hirschhorn: Satu, dua, tiga, empat, lima. PELAJAR: Dan kemudian pendakap kerinting dan kemudian koma bertitik. JASON Hirschhorn: Dan kerinting penyokong dan koma. Excellent. Cetak setiap int pada baris baru. Bolehkah orang lain memberi kod yang saya, please? [? Matu? ?] Teruskan. PELAJAR: Untuk ( JASON Hirschhorn: Untuk ( PELAJAR: Int i = 0 JASON Hirschhorn: Int i = 0 PELAJAR: Koma bertitik i kurang daripada lima. JASON Hirschhorn: Koma bertitik, i kurang daripada 5. PELAJAR: Koma bertitik, i + +. JASON Hirschhorn: Koma bertitik, i + +. PELAJAR: kurungan tertutup, kemudian bersedia terbuka. JASON Hirschhorn: kurungan tertutup dan dua penyokong gigi. Di dalam penyokong gigi? PELAJAR: Dan kemudian printf "% d / n" JASON Hirschhorn: Maaf, memegang. Printf "% d / n, quote tertutup. PELAJAR: Dan kemudian quote tertutup, koma, mengira, golongan i. JASON Hirschhorn: Comma, mengira, golongan i. PELAJAR: Maaf, nombor kurungan i. JASON Hirschhorn: Nombor, golongan i. PELAJAR: Maaf. Dan kemudian ditutup kurungan, koma bertitik. JASON Hirschhorn: Tutup kurungan, koma bertitik. Saya akan menyimpan itu. Kami akan membuat kiraan. Dan bagaimana saya menjalankan kiraan? PELAJAR: garis sendeng terbalik. PELAJAR: Dot italik - JASON Hirschhorn:. / Mengira, betul-betul. Terima kasih. . / Mengira. Satu, dua, tiga, empat, lima di baris baru. Kelihatan seperti ia bekerja. Ya, Nuh? PELAJAR: Anda juga boleh melakukan kurang daripada atau sama dengan empat, seperti i adalah kurang daripada atau sama dengan empat? Adakah terdapat apa-apa kelebihan untuk melakukan kurang daripada lima, atau hanya cara yang berbeza menulis? JASON Hirschhorn: Jadi persoalannya ialah anda boleh buat i adalah kurang daripada atau sama dengan empat daripada i adalah kurang daripada lima. Adakah yang telah bekerja sama? PELAJAR: Ia sepatutnya. JASON Hirschhorn: Ya. Ia benar-benar akan bekerja yang sama. Stylistically, ia biasanya kurang daripada, dan anda akan melihat dalam kedua apabila kita tali, anda boleh menggunakan sesuatu dipanggil strlen, yang anda lihat sebelum ini, untuk mendapatkan panjang tali. Dan anda tidak boleh berbuat kurang daripada atau sama strlen. Anda boleh melakukan kurang daripada atau sama strlen tolak satu. Jadi ia hanya bagus untuk melakukan kurang daripada strlen. Ya? PELAJAR: Dan dalam sebenar kuiz, melakukan kita perlu memberi komen pada kami kod juga? JASON Hirschhorn: Soalan ini telah dalam kuiz, adakah anda perlu memberi komen? Jadi kita akan bercakap lebih lanjut mengenai kuiz apabila mereka datang, tetapi secara umumnya, yang baik kemestian adalah apabila anda menulis kod, memberi komen. Jika anda mendapat kod yang salah tetapi mengulas betul, anda mungkin akan mendapat beberapa kredit kedua-duanya dari saya jika saya penggredan anda pada set masalah atau kuiz. Jadi komen sentiasa baik untuk menyediakan. Manis. Mengira. Kerja yang cemerlang. Mari kita bergerak ke atas. Tali. Tali. Kami telah melihat sebelum ini dalam kuliah. Ini meniup fikiran saya apabila saya pertama mendapati ini. Ia mungkin tidak meniup sesiapa fikiran di sini, tetapi itulah OK. Rentetan adalah barisan watak-watak, dan mereka berakhir dengan, seperti yang anda katakan tadi, terminator yang batal, yang adalah watak / 0 ini. Jika kita akan menarik tali pada lembaga, kami akan menarik ia di sini. Jadi berapa lama adalah rentetan ini? Maaf. Berapa lama tali ini? PELAJAR: [didengar]. JASON Hirschhorn: Empat? Mengapa ia empat? PELAJAR: Kerana tempat kelima adalah untuk watak null. JASON Hirschhorn: Jadi tempat kelima adalah untuk watak null. Jadi jika saya berjalan di strlen ini, ia akan memberi saya empat. Betul. Dan mudah, walaupun, jika saya memulakan pelbagai ini, berapa banyak ruang saya perlu meminta? PELAJAR: Five. JASON Hirschhorn: Lima. Saya akan mempunyai untuk meminta lima, tetapi saya boleh hanya meletakkan empat watak di sini kerana saya perlu meletakkan nol bahawa terminator pada akhir. Jadi, kita akan menulis dalam "ohai" dan meletakkan null dalam pada akhir. Kami akan mengatakan ini adalah rentetan s sama ini. Apakah s kurungan sifar? s kurungan sifar, Annie? PELAJAR: O. JASON Hirschhorn: O, betul-betul. s kurungan satu? s kurungan lima? s kurungan lima? PELAJAR: Adakah tidak wujud. JASON Hirschhorn: Adakah tidak wujud. Tepat betul. Sejuk. Mana-mana soalan mengenai pemahaman tali sebagai barisan watak-watak? OK, kemudian. Salah satu program yang lebih untuk anda semua. Tulis satu program yang meminta pengguna untuk tali kemudian mencetak keluar setiap watak pada baris baru. Jadi mari kita mengambil masa tiga minit untuk menulis program ini, dan kemudian kita akan kod itu sebagai satu kumpulan. Maaf. Adakah anda perlu melihat ini? PELAJAR: No JASON Hirschhorn: OK. Mari kita mengambil satu minit lebih kepada kod ini, atau sekurang-kurangnya bermula di atasnya. Jadi, anda boleh terus bekerja, tetapi saya akan untuk memulakan akan melaluinya. Jadi seperti sebelum ini, saya mempunyai pada skrin # Include cs50.h, # termasuk stdio.h. int sah utama. Di dalam pendakap utama yang kerinting, saya mempunyai dua komen, kod pseudo. Satu adalah meminta rentetan daripada pengguna. Yang kedua ialah mencetak setiap watak pada baris baru. Jadi Anna, anda boleh memberi saya tanya untuk rentetan dari pengguna? PELAJAR: printf. JASON Hirschhorn: printf? PELAJAR: Ya. ( JASON Hirschhorn: ( PELAJAR: "memberi saya rentetan. JASON Hirschhorn: "memberi saya str - oops - tali. PELAJAR: / n ") dengan koma bertitik. JASON Hirschhorn: Akhir tali, kurungan tertutup, koma bertitik. PELAJAR: Ya. Dan kemudian garis depan, tali s = mendapatkan tali. JASON Hirschhorn: String s = mendapatkan tali. PELAJAR: Ya. Dan kemudian () JASON Hirschhorn: () PELAJAR: Koma bertitik. JASON Hirschhorn: Koma bertitik. Hebat. Jadi, saya akan mendapat tali dan Saya akan simpan dalam apa? Apa yang berubah-ubah yang dipanggil yang anda buat? PELAJAR: String s. JASON Hirschhorn: ubah ini adalah dipanggil s. Ia adalah rentetan jenis. Tepat sekali. Perkara seterusnya yang kita mahu adalah mencetak setiap watak pada baris baru. Siapa yang boleh memberi saya kod itu? [Didengar] Bolehkah anda berikan kepada saya? PELAJAR: Pasti. JASON Hirschhorn: Mari kita melakukannya. Dan maaf. Saya tidak suka untuk mengulangi apa yang kamu katakan kerana anda mendapat dengan betul, tetapi saya perlu mengulangi supaya apabila mereka menyalin ini, mereka boleh mendapatkan semua keluar teks pada transkripsi. Jadi, anda hanya boleh terus bercakap. Malangnya, saya mempunyai untuk mengatakan ia ke atas kamu. Saya minta maaf, tetapi - PELAJAR: Itu denda. Untuk int i = 0 JASON Hirschhorn: Untuk int i = 0 PELAJAR: Saya kurang daripada - JASON Hirschhorn: Koma bertitik. PELAJAR: Sebelum ini, kita boleh meletakkan berubah-ubah supaya anda mendapat nama int panjang? JASON Hirschhorn: Oh, anda tidak perlu mahu meletakkan koma? OK. Jadi, apa yang anda mahu lakukan selepas sifar? PELAJAR: Saya ingin mendapatkan panjang rentetan s dan menetapkan bahawa untuk pembolehubah? JASON Hirschhorn: OK, jadi bagaimana saya melakukannya? PELAJAR: Jadi anda lakukan panjang int = JASON Hirschhorn: Int panjang = PELAJAR: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - PELAJAR: Daripada s. Kurungan. JASON Hirschhorn: (s). PELAJAR: Dan kemudian saya fikir anda perlu meletakkan koma antara kedua-dua Ints. JASON Hirschhorn: koma bertitik A selepas sifar? PELAJAR: Ya. Kemudian letakkan koma bertitik selepas itu, dan anda katakan, saya kurang daripada panjang. i kurang daripada panjang, yang berubah-ubah itu. PELAJAR: Dan kemudian koma bertitik. JASON Hirschhorn: Koma bertitik. PELAJAR: i + +. JASON Hirschhorn: i + +. Terdapat gelung untuk kita. OK, di dalam untuk gelung. PELAJAR: Dan kemudian melakukan printf. JASON Hirschhorn: printf. PELAJAR: Kurungan. JASON Hirschhorn: kurung, sebut harga. PELAJAR: kurung, sebut harga,% c / n. JASON Hirschhorn:% c, OK. PELAJAR: / n. JASON Hirschhorn: / n. PELAJAR: petikan tertutup. JASON Hirschhorn: petikan tertutup. PELAJAR: Comma. JASON Hirschhorn: Comma. PELAJAR: S. JASON Hirschhorn: S. PELAJAR: Kurungan i. JASON Hirschhorn: Kurungan i. PELAJAR: Dan kurungan kemudian ditutup. JASON Hirschhorn: kurungan tertutup. PELAJAR: Dan kemudian koma bertitik. JASON Hirschhorn: Koma bertitik. Hebat. Jadi mari kita simpan ini. Buat mengeja. Oh boy. Saya telah mendapat beberapa kesilapan. Kesilapan pertama pada baris 11, ia berkata, dijangka bersuara, dan ia memberi saya kesilapan yang kedua int, ada kesilapan. Terdapat beberapa kesilapan di sana. Adakah sesiapa tahu apa kesilapan yang? Kurt? PELAJAR: Saya rasa ia sepatutnya menjadi koma dan tidak koma bernoktah. JASON Hirschhorn: OK, koma bukannya koma bernoktah. Begitu juga dengan apa yang kita perlu menetapkan? PELAJAR: No JASON Hirschhorn: Apa lagi kita perlu untuk menetapkan? PELAJAR: Kita perlu termasuk string.h. JASON Hirschhorn: Termasuk string.h. Di manakah saya perlu termasuk itu? PELAJAR: Tempat yang sama anda termasuk barangan lain, hak selepas termasuk stdio.h. JASON Hirschhorn: Mari kita lihat jika ini berjalan pertama kerana secara amnya, saya suka untuk menetapkan satu perkara yang pertama, dan kemudian berjalan , dan kemudian melihat kesilapan-kesilapan kita. Jadi, kita akan untuk membersihkan terminal dengan kawalan n, mari kita jangan membuat ejaan. Jadi satu lagi kesilapan dalam talian 11. Dijangka koma bertitik. Dan saya masih mendapat kesilapan pada baris ini. Jadi ia tidak memberi saya ralat berkata ia tidak memahami apa strlen adalah, tetapi ia memberi saya ralat pada ini line, jadi apa lagi yang salah? Tandakan? Marcus. PELAJAR: Adakah anda perlu membuang pengisytiharan int kedua? JASON Hirschhorn: Buang yang int kedua. Mari kita cuba ini. Sekarang jelas terminal. Buat mengeja. Kesilapan. Tersirat mengisytiharkan perpustakaan fungsi strlen. Jadi sekarang kita lihat kesilapan itu. Apa yang kita perlu termasuk? PELAJAR: String.h. JASON Hirschhorn: Termasuk string.h, kita akan lakukan # include string.h di bahagian atas skrin. Mari kita menyimpan, membuat mengeja. Sekarang disusun. Jadi sekali lagi, perkara-perkara yang kita perlu ingat line 12 dalam gelung untuk kita apabila kita menetapkan ia sehingga, int i = 0, panjang = strlen (s). Ini adalah satu strategi yang hebat. Gaya ini adalah besar, reka bentuk ini adalah besar. Kita boleh pergi kepada mereka sebab-sebab yang kemudian, tetapi cara ini, anda hanya perlu untuk memanggil strlen sekali dan bukan setiap satu kali anda berjalan melalui gelung. Walau bagaimanapun, anda perlu menggunakan koma terdapat dan anda tidak perlu int lagi. Jika anda sedang mengisytiharkan kedua-dua mereka pembolehubah bersama-sama, anda tidak perlu int lagi. Dan kemudian jika anda mahu menggunakan strlen, perpustakaan yang lain berfungsi tidak termasuk dalam stdio.h atau cs50.h, membuat pastikan anda termasuk string.h. Kurt? PELAJAR: Jadi kemudian jika anda tidak perlu mengatakan apa yang panjang jenis adalah, adakah bermakna ia telah menjadi int an? Anda tidak boleh mempunyai dua yang berbeza jenis di sana? JASON Hirschhorn: Jadi, anda boleh mempunyai dua jenis yang berbeza. Panjang adalah int di sini, walaupun. Panjang adalah int an kerana ia adalah koma dan kemudian perkara yang sama. PELAJAR: Jadi ia mengandaikan bahawa ia akan untuk menjadi sama dengan yang pertama? JASON Hirschhorn: Tepat sekali. Kami tidak akan melakukan ini sekarang, tetapi anda boleh termasuk dua pembolehubah di line sama menggunakan satu jenis data. Jadi int x, y akan mewujudkan dua pembolehubah. Jadi int x, y, jika kita membuat itu, ia memberi saya x digunakan berubah-ubah dan y kerana kita tidak menggunakannya. Jadi meletakkan sah sebelum sahaja helah mewah jika anda tidak menggunakan sesuatu, untuk menggunakannya. Tetapi seperti yang anda lihat, saya buat x dan y pada baris yang sama dengan koma. Ia mewujudkan dua integer di sana. Jadi ya, benar-benar mungkin untuk membuat dua perkara pada baris yang sama dipisahkan oleh koma. Mari kita menyingkirkan mereka, walaupun. Jadi ada ejaan. Terima kasih lelaki untuk pengekodan untuk kita. Mari kita membuat satu lagi masa, jalankan. Berikan saya rentetan. [Didengar], anda pula sebahagian daripadanya. Apakah tali? PELAJAR: Hello. JASON Hirschhorn: Hello. H-E-L-L-O, setiap watak dalam satu baris. Kelihatan hebat. Mari kita berjalan lagi. Sentiasa akan menyemak bagi kes-kes sudut. Apakah yang dimaksudkan dengan kes sudut yang baik untuk mendaftar? PELAJAR: bilangan A? JASON Hirschhorn: Nombor Satu. Jadi saya akan dimasukkan ke dalam 1, dan ia mencetak keluar 1. Ia tidak meminta surat, supaya ia seolah-olah seperti nombor kerja. Kes sudut yang baik untuk memeriksa. Apa lagi sudut yang baik kes untuk memeriksa? PELAJAR: Rentetan kosong. JASON Hirschhorn: Hm? PELAJAR: Seperti rentetan kosong. JASON Hirschhorn: string kosong. Jadi mari kita tidak dimasukkan ke dalam apa-apa. Dan apa yang akan dicetak? PELAJAR: Tiada apa-apa. JASON Hirschhorn: Tiada apa-apa. Seolah-olah seperti ia berfungsi. Anda boleh cuba kes sudut lebih, tetapi biasanya nombor, data yang berbeza besar untuk mencuba, serta apa-apa. Tiada apa-apa, sifar, negatif sentiasa perkara-perkara yang baik untuk mencuba dan perkara yang anda perlu ujian, perkara-perkara yang sudah tentu kita akan menguji untuk dan Semak 50 akan menguji. Mana-mana soalan mengenai spell.c? OK, mari kita kembali semula. Saya mempunyai satu lagi program untuk anda semua untuk menulis. Ia dipanggil students.c. Ini adalah program yang meminta pengguna untuk lima nama, maka secara rawak memilih dan mencetak salah satu daripada nama-nama. Program ini adalah lebih sedikit terlibat daripada dua lepas kita menulis, jadi mengapa kita tidak mengambil masa lima minit untuk kod secara individu, dan kemudian kami akan kod ia sebagai satu kumpulan. Program ini juga melibatkan beberapa perkara anda mungkin tidak dilihat sebelum ini, jadi jika anda mempunyai soalan tentang, bagaimana Saya berbuat demikian, mengangkat tangan anda. Saya akan datang dan menunjukkan anda ke arah yang betul. Tetapi kita juga lakukan kerana ini akan menjadi satu cara yang baik untuk memperkenalkan beberapa topik yang sukar. Jadi ia berfungsi, bukan? PELAJAR: Ya. JASON Hirschhorn: Apabila anda menghidupkan dalam set masalah, ada banyak cara untuk melakukan , tetapi ada yang lebih elegan daripada yang lain. Mari kita menyelam masuk # Include cs50.h. # Include stdio.h. int sah utama, pendakap kerinting. Di dalam pendakap kerinting, Saya mempunyai dua komen. Yang pertama adalah, minta pengguna selama lima nama. Yang kedua ialah, secara rawak memilih dan mencetak salah satu daripada nama-nama. Jadi mari kita buat yang pertama, minta pengguna untuk lima nama. Yang telah meminta pengguna untuk lima nama dan boleh beritahu saya bagaimana untuk berbuat demikian? Hanya dua orang melakukan bahagian pertama. Tiga orang melakukan bahagian pertama. Empat, lima. Tom, bagaimana anda melakukannya? PELAJAR: Anda akan mengisytiharkan tali dan kemudian nama, kurungan lima. JASON Hirschhorn: String menamakan kurungan lima. Jadi, apakah ini selaras lakukan, Nama tali kurungan lima? PELAJAR: Anda akan mengisytiharkan pelbagai tali. JASON Hirschhorn: Ini adalah pelbagai tali. Berapa banyak tali akan untuk menyesuaikan diri di sini? PELAJAR: Five. JASON Hirschhorn: Lima. Excellent. Kami akan memanggilnya Nama kerana kita akan mendapatkan yang berganda. OK, seterusnya? PELAJAR: Dan kemudian anda mempunyai untuk gelung - JASON Hirschhorn: Untuk gelung. PELAJAR: - untuk i = 0. JASON Hirschhorn: Untuk (int i = 0. PELAJAR: Koma bertitik. JASON Hirschhorn: Koma bertitik. PELAJAR: Saya kurang daripada lima. JASON Hirschhorn: Saya kurang daripada lima. PELAJAR: Koma bertitik. JASON Hirschhorn: Koma bertitik. PELAJAR: i + +. JASON Hirschhorn: i + +. PELAJAR: Dan kurungan kemudian ditutup. JASON Hirschhorn: kurungan tertutup, dan kemudian beberapa pendakap kerinting. Di dalam pendakap kerinting? PELAJAR: Dan kemudian printf. JASON Hirschhorn: printf. PELAJAR: kurungan Terbuka, nama% d. JASON Hirschhorn: Maaf? PELAJAR: Nama. JASON Hirschhorn: Nama. PELAJAR: Dan kemudian ruang, dan kemudian% d. JASON Hirschhorn: Nama, ruang,% d. PELAJAR: Dan kemudian / n, dan kemudian ditutup. JASON Hirschhorn: Nama Jadi, ruang, % D / n, kurungan tertutup. PELAJAR: Comma, i + 1. Saya minta maaf. Quote tertutup, dan kemudian koma, i +1. JASON Hirschhorn: Tutup quote, koma, i +1. PELAJAR: Ya. Dan kemudian barisan depan - JASON Hirschhorn: i + 1. PELAJAR: Ya. Dan kemudian slaid seterusnya adalah nama-nama golongan i. JASON Hirschhorn: line Seterusnya adalah nama-nama golongan i. PELAJAR: = mendapatkan tali. JASON Hirschhorn: = Get - modal G-E-T - tali. Oops, maaf. PELAJAR: Terbuka, kurungan tertutup dan kemudian - JASON Hirschhorn: Buka, ditutup paren. PELAJAR: Koma bertitik. JASON Hirschhorn: Koma bertitik. OK, jadi anda memulakan array tali, nama-nama, dan kemudian pergi melalui untuk gelung, dan lima kali mencetak beberapa segera kepada pengguna dan kemudian menyimpan lima tali. Adakah sesiapa mempunyai apa-apa pelarasan ini? Tom, saya fikir semua orang bersetuju dengan anda. Kelihatan cukup baik. OK. Kenapa awak buat i +1, walaupun? PELAJAR: Maksud saya, tidak mempunyai menjadi, tetapi i +1 supaya ia nama seseorang untuk menamakan lima. Jika tidak, ia akan menjadi nama sifar untuk menamakan empat. JASON Hirschhorn: Jadi anda lakukan i +1 kerana jika tidak, ia akan dicetak sifar melalui empat kerana itulah bagaimana komputer berfikir, tetapi manusia tidak benar-benar membaca seperti itu. Itu adalah perkara yang lain anda akan hadapi. Kadang-kadang apabila anda mencetak sesuatu kepada pengguna, anda akan ingin untuk menjadikan ia satu sedikit lebih cantik, dan melakukan i +1 dalam kes ini adalah cara untuk menjadikan ia lebih cantik. Saya juga melihat dua kali lima, nama tali ialah lima, i adalah kurang daripada lima. Saya tahu di mana anda mendapat lima. Anda mendapat ia daripada saya memberitahu anda lima nama. Tetapi jika kita mahu membuat kod yang sedikit lebih kukuh, satu perkara yang kita boleh lakukan adalah di sini, di luar int, kita boleh melakukan sesuatu seperti ini, # Menentukan, dan kita boleh melakukannya NAMA 5. Jadi, pada asasnya, mana-mana saya menulis modal N, ibu A, M modal, modal E, modal S, tali itu, ia akan menggantikan dengan 5 dalam kod. Atau mari kita hanya memanggilnya - kita akan hanya memanggilnya NUMBER. Jadi saya menentukan semua topi NUMBER menjadi 5. Jadi sekarang di mana-mana saya mempunyai nombor 5, saya boleh menggantikannya dengan semua NUMBER topi. Dan kini, jika saya ingin menukar nombor nama, semua saya perlu lakukan adalah garis yang satu ini, garis empat, di mana saya mempunyai # Menentukan nombor 5, perubahan yang ke 10, atau menukar yang ke 4. Apabila kod anda mendapat lebih panjang, anda tidak akan ingat semua tempat yang anda meletakkan berapa banyak nama yang anda mahu, dan supaya anda tidak terlepas satu, ini adalah cara yang baik untuk melakukannya, untuk mencari sesuatu top up dan kemudian hanya menggunakan frasa yang di mana-mana di seluruh kod anda. Marcus? PELAJAR: Apakah yang stylistically pilihan daripada global menentukan n berterusan? JASON Hirschhorn: Jadi adalah bahawa stylistically diutamakan daripada global menentukan n berterusan? Jadi anda mengatakan anda boleh lakukan, int bilangan = 5? PELAJAR: Adakah mereka mempunyai konsonan dalam C atau tidak? JASON Hirschhorn: Atau malar - dalam yang sama. Jadi anda mengatakan hanya berubah-ubah global? PELAJAR: Ya. JASON Hirschhorn: Jadi stylistically, tidak ada semestinya betul menjawab, tetapi kedua-dua mereka adalah lebih baik daripada hanya membuang ini rawak nombor di seluruh kod anda. Kami menyeru mereka nombor sihir. Apabila saya melihat kod anda atau apabila sesiapa yang membaca, mereka tidak mahu hanya nombor-nombor rawak yang tidak masuk akal. Malah, bilangan 26, yang secara amnya adalah bilangan huruf dalam abjad, ia adalah lebih baik untuk menentukan abjad top up dan menyimpan nombor 26 dalam rentetan itu, jika yang masuk akal. Atau menetapkan satu masalah, dan bukannya - sekali lagi, kita tidak bercakap tentang perkara ini pada masa itu, tetapi sebaliknya hanya membuang dalam mana-mana 25 atau 10, anda boleh menyimpan nombor 25 sebagai SUKU atau 10 sebagai DIME, dan yang menjadikan ia lebih mudah bagi sesiapa yang membaca kod anda untuk faham mengapa anda memilih nombor itu. Dan juga untuk anda, jika anda pernah mahu mengemaskini kod anda, ia membuatkan ia agak lebih mantap. Ya? PELAJAR: Adakah kod ini juga akan boleh didapati untuk kita selepas? JASON Hirschhorn: Semua kod ini bahawa kita telah menulis bersama- akan dihantar ke email anda lelaki dan boleh didapati. Ya. Jadi meminta pengguna untuk lima nama. Secara rawak memilih dan mencetak salah satu daripada nama-nama. Yang melakukan baris ini? Ini adalah garis trickiest sini. Maaf, Tom. Anda melakukan kerja yang benar-benar baik, tetapi ini adalah sedikit lebih sukar. Marcus, teruskan. PELAJAR: Baik pertama, anda akan perlu termasuk stdlib.h dan time.h. JASON Hirschhorn: Jadi yang anda katakan pada atas, termasuk dua lagi perpustakaan. Anda mahu saya termasuk S-T-D-L-I-B titik H, Perpustakaan Standard, dan apa adalah salah satu yang lain? PELAJAR: Time.h. JASON Hirschhorn: # include time.h. Jadi ini adalah dua lagi perpustakaan. Saya menganggap sekarang kita akan menggunakan fungsi yang terkandung di dalam dua, itulah sebabnya anda perlu termasuk mereka? PELAJAR: Jadi itu, pertama anda akan mahu menulis srand. JASON Hirschhorn: Srand. PELAJAR: (masa (0) JASON Hirschhorn: Maaf. Srand (masa ( PELAJAR: 0. JASON Hirschhorn: 0. PELAJAR:)), koma bertitik. JASON Hirschhorn: Satu lagi paren ditutup? Koma bertitik. Saya akan hanya menggantikan sifar anda dengan NULL. Ia akan lakukan perkara yang sama, tetapi umumnya, anda akan melihat NULL, yang kita akan bercakap tentang ini baris dalam kedua. PELAJAR: stylistically lebih baik? JASON Hirschhorn: Secara umumnya, orang-orang NULL betul, tetapi perkara yang sama. PELAJAR: Dan kemudian nama int. JASON Hirschhorn: Nama Int. PELAJAR: = JASON Hirschhorn: = PELAJAR: Rand. JASON Hirschhorn: Rand. PELAJAR: () JASON Hirschhorn: () PELAJAR: bilangan Modulo. JASON Hirschhorn: Apakah modulo? Watak ini? Watak peratus? PELAJAR: watak Peratus. NUMBER Modulo yang anda ditakrifkan top up. JASON Hirschhorn: BILANGAN Modulo. PELAJAR: Dan kemudian koma bertitik. JASON Hirschhorn: Koma bertitik. PELAJAR: Dan kemudian barisan baru, printf. JASON Hirschhorn: printf. PELAJAR: ( JASON Hirschhorn: ( PELAJAR: " JASON Hirschhorn: " PELAJAR:% s / n JASON Hirschhorn:% s / n PELAJAR: " JASON Hirschhorn:% s / n " PELAJAR: Comma, nama ruang. JASON Hirschhorn: Space - PELAJAR: Oh, saya rasa, apa yang adakah kita panggil ia di sini? JASON Hirschhorn: Kami memanggilnya nama. PELAJAR: kurungan Terbuka, nama. JASON Hirschhorn: kurungan Terbuka, nama. PELAJAR: kurungan tertutup. JASON Hirschhorn: kurungan tertutup. PELAJAR:) JASON Hirschhorn:) PELAJAR: Koma bertitik. JASON Hirschhorn: Koma bertitik. OK, mari kita menyimpan. Mari kita membuat kod ini. Pelajar. Mari kita menjalankan kod ini. Pelajar. Bukan pelajar. /. . / Pelajar. Nama satu. Kami akan mengatakan Daud. Nama dua, RJ. Nama tiga, Rob. Nama empat, Lucas. Nama lima, Yusuf. Dan kemudian ia mencetak Joseph lagi. Jadi biarlah saya berjalan ini lagi. Biar saya buat nama yang sama. David, RJ, Rob, Lucas, Yusuf. Dan ia memberikan saya David masa ini. Jadi saya telah melakukan perkara yang sama, tetapi ia memberikan saya satu perkara yang berbeza, dan itu kerana, sudah tentu, kita meminta nama rawak. Jadi saya fikir, berdasarkan kira saya mengembara sekitar bilik, bahawa kebanyakan orang mungkin mendapat hak bahagian pertama, menubuhkan pelbagai itu dan kemudian mendapat semua nama-nama. Saya bercakap tentang garis 10 melalui 16. Tetapi garisan 18 melalui 21 mungkin beberapa perkara yang anda tidak pernah melihat sebelum ini, jadi mari kita pergi melalui mereka. Baris ini, srand masa NULL asasnya - maaf, mari kita melangkau ke garis, rand (). Yang memberikan anda beberapa rawak, integer rawak. Dan jika anda memukul rand manusia, yang banyak anda lakukan - M-A-N ruang R-A-N-D - di terminal seperti ini, M-A-N ruang R-A-N-D, tekan Enter. Anda akan datang kepada pengguna dan akan dapat membaca bahawa rand output arahan num pseudo bytes rawak selepas pembenihan nombor rawak generator sekali. Itulah huraian. Itulah apa yang rand tidak, memberikan anda beberapa rawak apabila anda memanggil fungsi itu. Malangnya, ia tidak benar-benar rawak kerana jika anda hanya memanggil rawak tanpa ia beberapa benih, beberapa titik permulaan, ia akan sentiasa memilih salah satu yang sama dan ia menggunakan formula untuk menentukan yang akan datang. Jadi, jika anda memanggil rand, ia akan hanya memberikan anda perkara yang sama. Ia akan menjadi sangat diramalkan. Ia sebenarnya tidak akan secara rawak. Jadi apa yang perlu kita lakukan, setiap itu Marcus arahan kepada saya, adalah rand benih dengan sesuatu yang lain, apa yang fungsi srand tidak. Ia benih rand dengan sesuatu yang sedikit lebih rawak daripada perkara yang sama, dan dia kekuatan dengan NULL masa, yang adalah, hanya dengan konvensyen, semasa masa dalam saat. Jadi anda menganggap bahawa semua orang bukan akan menjalankan kod pada tepat kedua yang sama, maka ia adalah pertaruhan selamat yang NULL masa akan berbeza setiap kali kod ini dijalankan. Pertaruhan selamat bahawa dengan itu, srand benih akan rand dengan sesuatu yang berbeza setiap masa tunggal. Jadi dengan konvensyen, apabila kita mahu nombor rawak, kita menulis baris ini, srand masa NULL, untuk memberi kita banyak benih lebih rawak, dan kemudian kita berjalan rand, yang memberikan kita beberapa rawak. Ya? PELAJAR: Bolehkah anda mengatakan apa yang anda maksudkan dengan benih? JASON Hirschhorn: Seed seperti dalam - jadi rand akan memilih nombor beberapa dan ia akan menggunakan beberapa formula untuk sampai ke sana. Jadi ia akan bermula dengan sesuatu dan kemudian bertukar menjadi sesuatu yang berdasarkan kira formula itu. Jika anda sentiasa memberikan perkara yang sama, ia sentiasa akan berubah ke dalam perkara yang sama. Jadi perkara pertama yang anda memberikan adalah benih. Jadi, anda mahu memberikan sesuatu lain untuk memulakan dengan, dan oleh itu akan bertukar menjadi sesuatu yang berbeza. Dan akhirnya, line 20, % ini dipanggil modulo, dan yang mengelirukan. Itu sesuatu yang sedikit yang berbeza di sini bahawa anda tidak benar-benar mempunyai dalam matematik kehidupan sebenar. Tetapi pada dasarnya, apabila anda mengambil gergasi bilangan dan anda membahagikan dalam C, apa yang berlaku kepada selebihnya? PELAJAR: Ia mendapat dipenggal. JASON Hirschhorn: Ia mendapat dipenggal. Jadi 20 dibahagikan dengan 3 adalah apa? Apakah yang kembali ke anda, 20 dibahagikan dengan 3. Maaf, 10 dibahagikan dengan 3. Apa yang kembali kepada anda? PELAJAR: [didengar]. JASON Hirschhorn: 10 dibahagikan dengan 3 hanya pulangan 3, tidak 3 baki 1. Jadi apa 10 modulo 3 mengembalikan hanya baki, 1. Jadi, jika anda ingin tahu apa 10 dibahagikan sebanyak 3 sebenarnya adalah, anda akan buat 10 dibahagikan dengan 3, anda akan mendapat 3 anda, dan kemudian anda akan buat 10 modulo 3, dan anda akan mendapat 1. Jadi, anda akan menyedari bahawa 10 dibahagikan sebanyak 3 adalah 3, bakinya 1. Dan di dalam bidang ini, boleh rand mana-mana integer, pada asasnya. Jadi modulo mengatakan, dibahagikan dengan nombor, yang dalam kes ini 5. Dan jika anda pernah membahagi dengan nombor, yang integer sentiasa mempunyai kurang daripada nombor tersebut. Jadi jika anda membahagikan oleh nombor 5, selebihnya adalah sentiasa akan menjadi sifar melalui empat. Itu hanya bagaimana matematik kerja-kerja keluar. Jadi sebilangan besar moduloed oleh yang lebih kecil nombor akan sentiasa kembali baki dan akan sentiasa kembali beberapa nombor yang kurang daripada bilangan yang anda dibahagikan dengan. Adakah sesiapa mempunyai sebarang soalan mengenai modulo, kerana ia akan datang dalam sangat, sangat berguna, jadi saya ingin memastikan semua orang memahami perkara ini? Sejuk. Dan kita melihat bahawa program ini bekerja. OK, bergerak ke atas. Jadi akan datang, kami akan pergi ke fungsi, dan kami akan pergi melalui seluruh barangan ini cukup cepat kerana saya mahu ke line hujah perintah. Jadi fungsi asasnya, seperti yang anda lihat, kotak hitam. Mereka mengambil perkara-perkara dalam dipanggil parameter, mereka melakukan sesuatu untuk mereka, sama ada menukar mereka atau mewujudkan beberapa kesan sampingan, dan akhirnya, mereka meludah sesuatu yang keluar, yang merupakan nilai pulangan. Bolehkah sesiapa memberi saya satu sebab Sebab itu kita akan menggunakan fungsi? Sesiapa sahaja? Salah satu sebab mengapa kita akan menggunakan fungsi-fungsi? Sesiapa sahaja? Saya melihat dua tangan. Apakah sebab-sebab yang baik? Marcus? PELAJAR: Jika anda mempunyai untuk memanggil sama sebahagian kod beberapa kali. JASON Hirschhorn: OK, jika anda perlu untuk memanggil sebahagian yang sama kod beberapa kali. Jeff, adakah anda mempunyai sebab yang berbeza? PELAJAR: Hanya supaya anda boleh kod kurang. JASON Hirschhorn: Anda boleh kod kurang. Betul. Jika anda mahu melakukan sesuatu yang banyak - dalam kod sebelum ini, saya boleh mempunyai ditulis mendapatkan rentetan lima kali, tetapi untuk gelung menjadikan ia kelihatan lebih bagus dan anda perlu menulis kod kurang. Fungsi adalah idea yang sama. Jika saya mahu melakukan perkara yang sama banyak, bergerak ke fungsi dan panggilan yang berfungsi setiap kali. Yang akan melakukan perkara itu untuk anda. Itulah alasan yang baik menggunakan fungsi. Jadi anatomi fungsi. Fungsi akan secara amnya kelihatan seperti ini. Ia akan bermula dengan jenis penyata, maka anda akan mendapat nama. Ia akan mengambil hujah-hujah, jika tidak dikenali sebagai parameter, dan dalam mereka pendakap kerinting, anda akan menulis kod anda. Kami telah melihat satu fungsi banyak. Itulah utama. Berikut adalah utama ditekankan ke anatomi yang saya sebelum ini. Apakah int di sini menandakan? Apakah int maksudkan? Apabila saya menulis int utama (tidak sah). PELAJAR: Jenis Kembali? JASON Hirschhorn: Maaf? PELAJAR: Jenis balasan. JASON Hirschhorn: Int adalah kembali jenis, betul-betul betul. Main kembali int an. Apa yang utama? PELAJAR: Nama Fungsi. JASON Hirschhorn: Main adalah nama fungsi. Tepat betul. Dan tidak sah? Apa yang tidak sah di dalam kurungan? PELAJAR: Ia tidak mengambil apa-apa nilai luar. JASON Hirschhorn: sah Jadi - betul. Di dalam kurungan, kita meletakkan parameter atau hujah-hujah yang fungsi yang diperlukan, apa yang berlaku di dalam kotak hitam. Apabila anda menulis tidak sah, anda katakan ini mengambil apa-apa masuk Jadi tidak sah int utama bermakna yang utama tidak mengambil apa-apa masuk Di dalam pendakap kerinting, kita mempunyai beberapa kod, dan kemudian kita lihat pada akhir kembali sifar. Apakah pulangan sifar bermakna? Nah, kita bercakap tentang jenis pulangan. Utama keperluan untuk kembali int an. Itulah apa baris ini tidak. Ia mengembalikan int, sifar. Sudah tentu, kita tidak pernah melihat bahawa banyak kerana dalam program yang kita lakukan dengan mesin yang kita lakukan dan penyusun yang kita gunakan hari ini, anda tidak perlu garis itu. Utama adalah khas yang cukup bahawa ia tahu apabila anda sampai ke akhir utama, hanya kembali sifar jika semuanya berjalan dengan baik. Malah, jika sesuatu tidak pergi dengan baik, utama sering akan kembali yang berbeza nombor menandakan sesuatu yang pergi salah dengan program anda. Jadi secara umumnya apabila anda melihat kod, anda tidak menulis pulangan sifar, tetapi ia adalah baik untuk mengetahui bahawa ia berlaku di belakang adegan kerana apabila anda menulis satu lagi jenis fungsi, anda akan perlu termasuk talian kembali. Jika anda berkata saya akan kembali int, anda perlu menulis kembali sesuatu. Jika anda mengatakan tidak sah di sini pada permulaan, tidak sah tidak sah utama, bagi Sebagai contoh, maka ia tidak kembali apa-apa - tidak sah bermaksud apa-apa - jadi anda tidak perlu bahawa talian kembali. Tetapi anda pernah menulis sesuatu yang tidak membatalkan untuk jenis pulangan, anda perlu garis yang mengatakan pulangan dan anda perlu meletakkan sesuatu di sana yang sepadan dengan jenis. Mana-mana soalan mengenai itu? Manis. Skop. Ini adalah sesuatu yang kita telah menyentuh juga. Setiap berubah-ubah, seperti yang kita tahu, mempunyai skop tertentu, dan yang pada asasnya bercakap tentang di mana pembolehubah boleh atau tidak boleh dirujuk. Dan saya suka untuk mengatakan apa yang berlaku dalam pendakap kerinting kekal dalam pendakap kerinting. Sebagai contoh, jika kita lihat pada kod ini, kita menentukan ubah global luar utama, int a, di sini di atas. Kami memanggil lagi int di dalam utama. Kami mempunyai beberapa pendakap lebih kerinting, dan kami memanggil lain yang int. Kami mempunyai tiga yang dalam kod. Ini bukan perkara yang sama. Saya telah membuat tiga pembolehubah yang berbeza. Kemudian di dalam ini kerinting dalaman pendakap, saya katakan a = 4. Yang adalah bahawa bercakap tentang, pertama satu, yang kedua, atau yang ketiga? PELAJAR: Yang ketiga. JASON Hirschhorn: Ia bercakap kira-kira satu ketiga. Semua orang-orang yang sebenarnya boleh bercakap tentang dalam khusus ini contohnya kerana skop mereka semua berjalan ke dalam pendakap kerinting terdalam. Walau bagaimanapun, apabila anda memanggil perkara yang sama nama, ada sesuatu yang dipanggil bersembunyi. Jadi, anda hanya berurusan dengan atau menetapkan atau menggunakan ubah yang paling baru-baru ini, atau salah satu paling rapat dengan anda. Jadi di sini, ketiga ini adalah yang paling dekat kepada barisan itu, a = 4, jadi ia memberi kesan kepada satu pertiga. Dan garis terakhir, a = 2, yang merupakan bahawa bercakap tentang, yang pertama, kedua, atau ketiga? PELAJAR: Kedua. JASON Hirschhorn: Ia bercakap kira-kira satu kedua. Sudah tentu, yang ketiga adalah yang paling dekat dengan dalam kod, tetapi ketiga tidak wujud di luar mereka pendakap kerinting. Sebaik sahaja anda sampai ke tertutup kerinting bersedia, ia seperti ia pergi, asasnya. Jadi hanya dua anda telah meninggalkan orang-orang dua yang pertama, dan sudah tentu, kini ia paling dekat dengan yang kedua. Jadi itu adalah satu perkara yang baik untuk ingat tentang skop. Sebagai contoh, saya pasti anda telah dihadapi ini di lakukan semasa gelung. Jika anda memulakan di dalam pembolehubah yang tidak manakala gelung dan kemudian anda cuba untuk mengakses di luar, anda mungkin mendapat beberapa amaran seperti ini berubah-ubah tidak wujud. Ini kerana idea skop, bahawa perkara yang hanya wujud di dalam orang-orang pendakap kerinting. Pendakap kerinting seperti pelukan gergasi yang anda memberikan kepada kod anda, adalah satu lagi cara untuk berfikir mengenainya. Jadi ini adalah fungsi yang lain, sesuatu untuk anda semua untuk kod, hellofunction.c. Kami akan skip bahawa buat masa ini, tetapi ini adalah sesuatu yang saya menggalakkan anda untuk berlatih sendiri. Tulis satu program di mana panggilan utama satu lagi fungsi yang mencetak keluar ucapan kepada pengguna. Ia pada asasnya mengambil dunia hello dan pengabstrakan yang printf ke fungsi yang lain. Tetapi kita tidak akan berbuat baik yang kini kerana kita tidak mempunyai masa yang banyak ditinggalkan kerana saya akan suka. Jadi akuan fungsi. Kami telah melihat sebelum ini juga. Jika anda mahu menulis fungsi yang lain, anda perlu membiarkan komputer tahu dan utama tahu bahawa ia wujud. Jadi apa yang kita lakukan adalah atas utama, kita menulis jenis pulangan, nama, dan parameter, dan kemudian ke bawah utama, turun di sini, kita sebenarnya menyalin garis yang dan kemudian menulis kod sebenar. Jadi cara ini, jika anda memanggil fungsi di utama di bahagian atas, utama tahu bahawa hello wujud, sebagai contoh, jika saya untuk memanggil hello, dan kemudian ia kelihatan pelaksanaan ke bawah. Apakah yang akan berlaku jika saya tidak memasukkan ini beratur atas, membatalkan hello (tidak sah)? Jika saya tidak mempunyai garis ini dan panggilan utama hello, saya akan mendapat ralat. Saya akan mendapat ralat kerana pengkompil tidak tahu bahawa perkara ini wujud. Ini adalah sama dengan mengapa kita jangan # include cs50.h. Apa asasnya cs50.h melakukan meletakkan mendapatkan tali di sana. Ia meletakkan int mendapatkan di sana. Ia meletakkan semua fungsi mereka prototaip sebelum utama supaya apabila anda memanggil mereka dalam utama, utama tahu bahawa perkara-perkara ini wujud. Itulah apa yang mereka. H fail dilakukan. Dan jadi jika anda akan membuat anda sendiri fungsi, anda perlu memastikan anda meletakkan prototaip yang di sana. Sebarang pertanyaan mengenai perkara ini setakat ini? Line hujah perintah. Ini adalah apa yang kita akan menyelesaikan , dan kemudian mudah-mudahan kita akan memerah dalam beberapa pset. Saya tidak tahu jika kita akan dapat memerah yang dalam kerana masa, tetapi dengan anda semua yang berada di sini, dan jika anda lelaki ingin berkata selepas untuk sedikit, kita boleh pergi ke di luar. Tetapi kita akan selesai dengan hujah baris arahan selama 15 minit terakhir. Kami sedar, Michael? Anda sedar? Baik. Saya tidak tahu jika anda tidur dengan mata tertutup. Ia akan menjadi sukar. Line hujah perintah. Mereka adalah salah satu cara untuk memberikan maklumat ke dalam program. Akhirnya, kita akan menemui orang lain. Tetapi pada dasarnya, kita akan berhenti menulis int utama (tidak sah) jika kita mahu mengambil beberapa hujah baris arahan. Kami akan menulis perkara ini dipanggil int main (int argc, rentetan argv, kurungan. Yang mengelirukan. Itu banyak huruf yang tidak berada dalam manusia Bahasa Inggeris, jadi kita akan membongkar mereka sekarang. Argc bermaksud kiraan hujah - dan sekali lagi, semua ini akan boleh didapati dalam talian - dan itulah bilangan hujah. Argv bermaksud vektor hujah, dan mereka adalah hujah-hujah mereka. Ia adalah pelbagai tali. Kami telah benar-benar melihat array rentetan sebelum hari ini. Kami telah mencipta satu di lepas Program kita dikodkan. Jadi di sini adalah satu contoh. Saya menulis. / Ohai cs50 seksyen pada baris arahan saya. Argc dalam kes ini bersamaan 3. Argv kurungan 0 adalah ohai, argv kurungan 1 adalah cs50, argv kurungan 2 adalah bahagian. Sekali lagi, argc adalah bilangan hujah, dan perjalanan anda sehingga sedikit bit, kita sentiasa mengira nama berfungsi sebagai hujah yang pertama. Jadi dalam kes ini, terdapat tiga hujah-hujah, nama fungsi dan kemudian kedua-dua yang saya ditaip masuk Seterusnya, kita akan menyelamatkan orang-orang hujah-hujah mereka dalam argv. Dan sekali lagi, seperti yang kita lihat sebelum ini, kami tidak ini dalam program yang kita dikodkan. Anda boleh bergerak melalui pelbagai argv dan mendapatkan orang-tali. Itulah asasnya apa yang kita lakukan pada akhir program terakhir kami. Kami memilih nama rawak dan kemudian pergi ke nama kurungan apa sahaja dan dicetak daripada rentetan terletak di sana. Di atas hanya array satu, kerana tali sendiri adalah array, sebagai bercakap tentang, anda boleh mempunyai array array, yang merupakan asasnya apa argv adalah. Salah satu cara yang anda boleh berfikir tentang ini adalah baris dan lajur. Saya boleh menarik hak yang sekarang. Jadi argv - itu tidak memadam. Mari menarik di bawah ohai. Jadi jika saya menulis di dalam, ohai seksyen cs50, Saya akan menyingkatkan bahagian untuk contoh ini. Tetapi pada dasarnya, pelbagai dimensi saya pelbagai, ohai cs50, kita akan melakukan mazhab. Jadi di sini, saya boleh mengakses - jika saya hanya memberi argv nombor satu - ini adalah salah. Apa salahnya dalam rajah ini? PELAJAR: Mula pada sifar. JASON Hirschhorn: Ia perlu bermula dengan sifar. Saya mungkin perlu juga berputar, tetapi kerana saya sudah tertarik pada, saya akan meninggalkan ia di sana buat masa ini. Tetapi ia bermula pada sifar. Itulah yang betul. Saya minta maaf jika ini adalah kecil. Bolehkah anda semua jenis melihat? Jadi, jika saya lakukan argv 0, saya akan mendapatkan semua ohai. Jika saya argv 1, saya akan mendapat semua cs50. Jika saya argv 2, saya akan mendapatkan semua mazhab. Tetapi sekarang, seperti yang kita kata, tali adalah barisan sendiri. Jadi apa yang boleh saya lakukan adalah saya boleh merawat ini sebagai array pelbagai dimensi, dan saya boleh melakukan sesuatu sepanjang garis argv 0, 0, yang memberikan saya hanya watak 0. Argv 0, 1, yang memberikan saya hanya h. Argv 1, 3, yang memberikan saya hanya 0 ini turun di sini di cs50. Jadi kerana rentetan diri adalah tatasusunan, kita meletakkan bahawa dalam pelbagai lain. Kami kini mempunyai pelbagai array, dan kami boleh ke dalam pelbagai indeks pertama kami dan maka indeks ke pelbagai kedua kami. Dan seperti yang anda jangkakan, kita berbuat demikian dengan hanya meletakkan kedua-dua - kita melakukan kurungan hanya betul-betul bersebelahan antara satu sama lain. Jadi, dalam contoh ini, argv 1 adalah cs50 dan argv 1, 2, seperti yang kita berkata, hanya 5. Adakah sesiapa mempunyai sebarang soalan mengenai array pelbagai dimensi? Kalian melakukan yang menggerunkan. Manis. Jadi kita mempunyai satu lagi program di sini, dan ini adalah perkara yang terakhir kami akan lakukan sekarang. Jadi saya mahu anda untuk menulis program yang mengambil nama penuh pengguna, dua dan hanya dua hujah baris arahan, dan akhirnya, mencetak ucapan kepada pengguna yang termasuk nama pertama mereka. Jadi mengapa tidak anda mengambil tiga atau empat minit untuk melakukan ini, dan kemudian kami akan pergi ke atasnya sebagai satu kumpulan, dan maka kita akan mengakhiri? Dan sekali lagi, di sini, apabila kita katakan mengambil nama penuh pengguna setiap keterangan masalah ini, ia perlu arahan hujah line, tidak menggunakan mendapatkan tali. Ya, Marcus? PELAJAR: Oleh itu, apabila anda berkata dua perintah hujah line, adalah bahawa di samping . yang / berjalan, atau - JASON Hirschhorn: Soalan yang baik. Do, termasuk. / Run, tiga line hujah perintah. Atau termasuk. / Peribadi, dalam kes ini, kerana itulah nama fail ini. Jadi argc akan menjadi tiga. Tetapi saya mahu hanya dua hujah diberikan kepada program ini. Saya perlu menyatakan bahawa. Saya akan membuat perubahan yang sebelum saya hantar ini dan menghantar mereka kepada kamu. PELAJAR: Bagaimana jika anda mempunyai nama tengah? JASON Hirschhorn: Jika anda mempunyai pertengahan yang nama, anda daripada nasib. Saya minta maaf. Atau jika anda hanya pergi dengan Shakira, anda juga daripada nasib. Ya? PELAJAR: Oleh itu, apabila orang tidak mempunyai cs50.h, adakah mereka menentukan argv sebagai char bintang argv? Atau adakah ia masih dipanggil rentetan argv? JASON Hirschhorn: Ya. Jadi tali, sekali lagi, kita topeng atas apa sebenarnya yang sedang berlaku di sana. Itu akan terpadat mungkin pada hari Rabu, tetapi tidak lama lagi. Ia seperti roda latihan. Kerana pada dasarnya, ia adalah perkara yang sama. Jadi mari kita mengambil satu minit lagi untuk program ini, dan kemudian kita akan pergi ke ia sebagai satu kumpulan, dan kemudian seperti saya katakan, mengakhiri. Dan saya fikir mereka masih gula-gula tambahan, supaya kamu mudah-mudahan harus mengambil itu, atau sila ambil itu. Maaf jika anda masih menulis, tetapi saya mahu menyelam dalam dan kami boleh menyelesaikannya bersama-sama. Jadi saya telah menulis di dalam, # include cs50.h, # termasuk stdio.h. int main (tidak sah), kerinting bersedia, kerinting bersedia, di dalam tiga barisan pseudokod, mengambil nama penuh pengguna, dua dan hanya dua baris arahan hujah, mencetak ucapan kepada pengguna yang termasuk nama pertama mereka. Jadi yang pertama, mengambil nama penuh pengguna. Siapa yang boleh membantu saya mengambil nama penuh pengguna ini? Bagaimana saya melakukan bahagian itu? Adakah anda lelaki melakukan bahagian pertama? Ambil nama penuh pengguna. Nah, untuk satu baris arahan hujah, apa yang perlu saya menulis? Apakah yang perlu saya menukar tentang akuan fungsi saya? PELAJAR: Anda tidak mahu ia menjadi tidak sah lagi. JASON Hirschhorn: Tepat sekali. Saya tidak mahu ia menjadi tidak sah. Apa yang saya mahu ia? PELAJAR: argc Int. JASON Hirschhorn: Int argc. PELAJAR: argv String. JASON Hirschhorn: Rentetan argv. PELAJAR: Bracket, kurungan. JASON Hirschhorn: Bracket, kurungan. Itulah yang betul, dan itulah sebenarnya bagaimana saya akan mendapatkan nama penuh pengguna. Mereka akan meletakkan ia di sana. Jadi salah satu yang dilakukan. Jadi sekarang saya mahu dua dan hanya dua line hujah perintah. Jadi Nuh, apa yang merupakan salah satu cara saya boleh semak nombor perintah hujah talian saya? PELAJAR: Anda melakukan sesuatu jika kenyataan. JASON Hirschhorn: Jika pernyataan, tepat. Apa yang saya mahu sebagai keadaan? PELAJAR: Jika argc lebih besar daripada 3. JASON Hirschhorn: Jika argc adalah lebih besar daripada 3. Jika argc lebih daripada 3, apa yang saya lakukan? PELAJAR: Pulang Balik 1. JASON Hirschhorn: Kembali 1. Yang akan memastikan saya mempunyai dua dan hanya dua? PELAJAR: No Jika argc adalah lebih besar daripada 3 dan kurang daripada 2. JASON Hirschhorn: Jika argc adalah lebih besar daripada 3 dan argc adalah kurang daripada 2. Apa yang salah satu cara yang boleh saya menulis ini dalam hanya satu baris, atau tanpa menggunakan bahawa dan operator Boolean? PELAJAR: Ia tidak sama dengan 2. JASON Hirschhorn: Jika argc tidak sama dengan 2. Tepat sekali. Jadi jika argc tidak sama dengan 2, yang akan memberi saya program ini, peribadi, apabila saya berjalan, dan yang akan memberi saya berapa ramai baris arahan hujah? Berapa banyak saya akan memeriksa? Maaf. Biar saya reword itu. Jika argc = 2, berapa banyak perkara tidak pengguna menulis ke baris? PELAJAR: Satu. JASON Hirschhorn: Hanya satu. Jadi sebelum ini, anda adalah betul, Nuh. Apa yang saya benar-benar perlu untuk meletakkan di sana? PELAJAR: Yang sama 3. JASON Hirschhorn: Argc tidak sama 3. Saya mahu sama 3 kerana saya mahu peribadi serta dua yang lain. Jadi jika argc tidak 3 sama, kembali 1. Mengapa kamu katakan kembali 1? PELAJAR: Kerana itu bermakna ia salah. JASON Hirschhorn: Ini bermakna ia salah, dan apa yang yang akan lakukan? PELAJAR: Re-segera pengguna. JASON Hirschhorn: Ia akan berhenti program ini, maka ia akan perlu menjalankan sekali lagi, tetapi kita tidak mempunyai apa-apa di sini untuk meminta mereka lagi. Saya tidak meminta untuk itu. Jadi itulah yang betul. Kembali 1 hanya berhenti program ini. Besar. Dan mencetak ucapan kepada pengguna yang termasuk nama pertama mereka. Bagaimana saya boleh berbuat demikian? Anna? PELAJAR: printf. JASON Hirschhorn: printf. PELAJAR: (" JASON Hirschhorn: ( PELAJAR: "hello JASON Hirschhorn: "hello PELAJAR:% s JASON Hirschhorn:% s PELAJAR: / n JASON Hirschhorn: / n PELAJAR: ", JASON Hirschhorn: ", PELAJAR: Argv JASON Hirschhorn: Maaf? PELAJAR: Argv JASON Hirschhorn: Argv PELAJAR: Square kurungan 1. JASON Hirschhorn: kurungan Square? PELAJAR: 1. JASON Hirschhorn: 1. PELAJAR: Dan) dengan koma bertitik. JASON Hirschhorn:) dengan koma bertitik. Marilah kita menjalankan ini. Buat peribadi. . / Peribadi. Ia hanya berhenti. Mengapa ia berhenti? PELAJAR: Anda tidak meletakkan apa-apa hujah. JASON Hirschhorn: Saya tidak meletakkan apa-apa hujah masuk Kelihatan hebat. Kalian dipaku ia. Jadi sekali lagi, anda pergi ke argv dan anda diperiksa pada argc permulaan. Inilah dua penting perkara yang perlu diingat. Jadi dalam terakhir kami dua minit sebelum kita meninggalkan, kita tidak akan dapat pset dua, tetapi seperti saya katakan, jika anda mahu kekal selepas selama 10 minit, saya akan gembira untuk dia pergi lebih dengan anda semua logik bagi set masalah. Kami mempunyai banyak untuk menampung hari ini jadi saya tidak sampai kepada mereka. Secara umumnya, saya suka termasuk bahawa pada akhir. Jadi, jika anda mahu melekat di sekeliling, melekat di sekeliling selama 10 minit. Kami akan berbuat demikian. Kemudian, seperti yang saya nyatakan di awal, pset sifar dan satu, kita akan mendapat yang maklum balas kembali kepada anda secepat mungkin. Matlamatnya adalah untuk mendapatkan pset satu maklum balas, bahagian komen, sebelum pset dua adalah disebabkan. Jadi, jika anda membuat beberapa kesilapan atau stylistically, perkara-perkara yang lebih baik, anda akan mempunyai maklumat yang begitu anda tidak akan melakukan perkara yang sama dalam pset dua. Dan kemudian pada masa akan datang, anda akan mendapat semua maklum balas pset anda dan komen kembali sebelum yang seterusnya adalah disebabkan. Akhir sekali, jika saya boleh dimasukkan ke dalam satu lagi plug maklum balas. Ini adalah bahagian pertama anda. Ia adalah bahagian pertama saya pengajaran tahun ini. Pergi ke sana. Tulis barangan, baik dan buruk, dan saya akan menggunakannya untuk membuat seksyen yang lebih baik pada masa akan datang. Dan terakhir, sekali lagi, jika anda perlu apa-apa, beritahu saya. Saya lebih daripada gembira untuk membantu anda semua. Jika anda hanya mahu gula-gula, saya akan mempunyai gula-gula tambahan. Saya gembira untuk membawa kepada anda. Ini akan menjadi satu kursus yang menakjubkan. Ini adalah salah satu, jika tidak kegemaran saya Sudah tentu, saya telah mengambil di seluruh hidup saya, dan saya berharap ia akan menjadi yang menarik untuk anda. Jadi saya mahu melakukan segala-galanya dalam kuasa saya untuk menjadikannya yang hebat untuk anda. Saya akan menghantar e-mel jika anda dalam seksyen saya atau Nuh, dan akan cuba dan jadual dengan setiap anda semua masa untuk mendaftar masuk ke atas beberapa minggu akan datang, jadi saya boleh mendapatkan rasa apa latar belakang CS anda, dan ia juga akan membantu saya menyesuaikan ini bahagian-bahagian yang lebih baik sesuai dengan keperluan anda. Jadi itulah yang saya telah mendapat berbaris. Sekali lagi, saya akan melihat anda di luar jika anda mahu berada di sana. Ini adalah dua minggu bahagian. Terima kasih guys begitu banyak.