[Bermain muzik] DOUG LLOYD: Hi, jadi mari kita bercakap tentang operator di C. Jadi, kita telah pun melihat satu, sebenarnya, sama dengan pengendali tugasan. Ia membolehkan kami untuk hanya meletakkan nilai ke dalam pembolehubah. Itulah tugasan operator, tanda sama tunggal. Untuk memanipulasi dan kerja dengan nilai-nilai dan pembolehubah dalam C, kita ada beberapa pengusaha di tangan kita yang boleh kita gunakan. Mari kita lihat pada beberapa yang biasa bermula dengan pengendali aritmetik. Seperti yang anda jangkakan, kita boleh melakukan cantik operasi matematik asas dalam C. Kita boleh menambah, menolak, mendarab, dan nombor jurang menggunakan campur, tolak, bintang, dan mengurangkan masing-masing. Berikut adalah beberapa baris kod di mana kita berbuat demikian. Jadi, kita mempunyai int x sama y tambah 1. Mari kita andaikan bahawa di suatu tempat sehingga di atas garis ini kod kami telah berkata int y sama 10. Apakah nilai x selepas saya melaksanakan baris ini pertama kod? Adakah anda mengatakan 11? Anda akan betul. Kenapa begitu? Nah, y adalah 10. Sesetengah int saya katakan x sama 10 tambah 1. 10 tambah 1 adalah 11. Jadi, nilai 11 mendapat disimpan dalam pembolehubah x. Tidak terlalu buruk, bukan? Bagaimana pula dengan baris ini seterusnya kod? x sama x kali 5. Well, sebelum kita dilaksanakan baris ini kod, x adalah 11. Jadi, apakah nilai x selepas baris kod ini? Mengambil kedua. Jadi, x sama x kali 5. x adalah 11. Jadi, x sama 11 kali 5. Atau 55. Jadi, jika anda berkata 55, anda akan menjadi betul. Kini, ia mungkin agak mengelirukan, tetapi dengan cara tugasan yang bekerja di C adalah nilai yang di sebelah kanan mendapat ditetapkan kepada nilai di sebelah kiri. Jadi, pertama kita menilai x kali 5. Jadi, 11 darab 5 ialah 55. Dan kemudian kita menyimpan nilai itu dalam x. 11 yang berada di sana sebelum kini ditulis ganti. Jadi nilai x kini 55. Mudah-mudahan itu agak mudah. Ada satu lagi pengendali bahawa anda telah mungkin tidak semestinya mendengar dipanggil ini, tetapi anda telah pasti bekerja dengan pada masa lalu jika anda ingat hari anda panjang bahagian dalam perjalanan pulang pada sekolah rendah. Ia dipanggil pengendali modulus. Apa modulus adalah ia memberikan anda bakinya apabila anda membahagikan dua nombor bersama-sama. Jadi, jika saya katakan 13 dibahagikan dengan 4, apa yang selebihnya? Dan nilai yang akan dikira oleh pengendali modulus. Jadi, saya mempunyai baris kod di sini, int m sama dengan 13 mod 4. Dan saya katakan di sini dalam komen nilai yang m adalah sekarang 1. Mengapa saya berkata demikian? Nah, melakukan pembahagian masa panjang di dalam anda kepala, jika anda menanggung dengan saya untuk kali kedua. Jadi, saya telah 4 dibahagikan dengan 13. 4 kepada 13 tiga kali dengan baki 1. Jadi, pada dasarnya, semua pengendali modulus tidak adalah ia memberitahu anda apabila anda jurang, anda akan mendapat bakinya. Anda mungkin berfikir bahawa sebenarnya bukan satu perkara yang sangat berguna, tetapi anda akan terkejut, sebenarnya, oleh kekerapan modulus yang pengendali boleh datang dengan mudah. Ada beberapa masalah yang kami akan melakukan CS50 yang berurusan dengannya. Ia juga baik untuk berbuat perkara seperti nombor rawak. Jadi, sebagai contoh jika anda telah pernah mendengar penjana nombor rawak, yang akan memberi anda nombor dari 0 hingga beberapa besar. Tetapi mungkin anda hanya benar-benar memerlukan nombor dari 0 hingga 20. Jika anda menggunakan operator modulus pada bilangan gergasi yang mendapat dihasilkan oleh penjana nombor rawak, anda akan mengambil apa sahaja nilai yang besar itu, dibahagikan dengan 20, dan bakinya. Selebihnya hanya boleh menjadi nilai dari 0 hingga 19. Jadi, anda menggunakan operator modulus untuk mengambil besar ini dan meraut ia ke dalam sesuatu sedikit lebih bermakna. Saya agak pasti anda berada dapat menggunakan kedua-dua mereka pada satu ketika pada masa hadapan dalam CS50. Jadi, C juga memberikan kita cara yang untuk memohon aritmetik yang pengendali untuk pembolehubah tunggal dengan cara yang lebih trengkas sedikit. Jadi, dalam slaid sebelumnya, kita lihat x sama x kali 5. Yang bekerja. x kali 5 kemudian akan disimpan kembali dalam x. Ada cara yang lebih pendek untuk melakukannya, pemikiran, dan ia adalah masa sintaks x sama 5. Ia adalah perkara yang sama seperti yang berkata x sama x kali 5. Ia hanya sedikit cara yang lebih pendek untuk melakukannya. Dan apabila anda melihat beberapa kod pengedaran atau anda melihat beberapa contoh kod yang melakukan perkara-perkara seperti ini, hanya menjadi biasa dengan apa sintaks yang bermakna. Anda tentu tidak mempunyai untuk menggunakannya, tetapi jika anda lakukan, ia mungkin membuat kod anda kelihatan penipu sedikit. Dan ketahuilah bahawa anda juga boleh menggunakan mana-mana pengusaha yang berbeza kami telah pun dilihat sebelum ini bukannya masa. Anda boleh mengatakan x campur sama dengan 5, tolak sama dengan 5, masa, membahagi, dan arena. Semua kerja mereka. Ada juga sesuatu yang begitu biasa di C bahawa kami telah membuat keputusan untuk mendapatkan hasil yang lebih jauh lagi. Menokok pembolehubah oleh 1 atau decrementing pembolehubah oleh 1 adalah satu thing-- biasa terutamanya apabila kita bercakap mengenai gelung sedikit kemudian pada-- bahawa kami telah membuat keputusan dan bukannya mengatakan sesuatu seperti x campur sama dengan 1, atau x sama x campur 1, kami telah turut pendek diserahkan itu untuk x plus plus. Jadi, x sama x campur 1, x campur sama dengan 1, dan x plus plus semua melakukan perkara yang sama. Mereka semua kenaikan x oleh 1. Tetapi itu menokok dan decrementing oleh 1 begitu umum yang kita ada tambah tambah dan tolak tolak yang membolehkan kita untuk trengkas yang lebih jauh lagi. Jadi, mari kita beralih gear untuk kedua dan bercakap tentang ungkapan Boolean. Semua yang juga sejenis jatuh ke dalam kategori keseluruhan pengendali. Tetapi ungkapan Boolean, tidak seperti pengendali aritmetik, digunakan untuk membandingkan nilai-nilai. Jadi, sekali lagi, semua ungkapan Boolean dalam C menilai kepada salah satu daripada dua nilai yang mungkin, ingat. Betul atau salah. Itulah satu-satunya dua nilai yang Pembolehubah Boolean boleh mengambil. Kita boleh menggunakan keputusan satu ungkapan Boolean dalam banyak cara dalam pengaturcaraan. Malah, anda melakukan ini cukup banyak. Sebagai contoh, kita mungkin membuat keputusan, baik, jika beberapa keadaan benar, mungkin saya akan mengambil ini cawangan ke bawah kod saya. A bersyarat, jadi untuk bercakap. Kita akan belajar tentang orang-orang tidak lama lagi juga. Atau mungkin, selagi ini adalah benar, saya mahu untuk terus melakukan ini berulang-ulang. A gelung. Dalam kedua-dua kes, tahu bahawa kita menggunakan ungkapan Boolean, yang benar atau salah, untuk memutuskan sama ada atau tidak untuk mengambil jalan yang tertentu. Kadang-kadang apabila kita bekerja dengan ungkapan Boolean, kami akan menggunakan pembolehubah jenis Bool. Anda mungkin telah mengisytiharkan yang Bool ditaip berubah-ubah, dan anda akan gunakan dalam anda Ungkapan Boolean. Tetapi anda tidak sentiasa perlu lakukan. Ternyata, dalam C, setiap bukan 0- nilai adalah sama sebagai berkata benar. Jika anda telah mengisytiharkan ubah jenis Boolean, dan diberikan ia nilai sebenar, itu yang sama seperti mengisytiharkan integer dan memberikan ia nilai 1, 2, 3, atau benar-benar apa-apa nilai apa selain daripada 0. Kerana dalam C, setiap-0 bukan nilai adalah benar. 0, di sisi lain, adalah palsu. Ini mungkin datang dalam berguna di kemudian hari untuk mengetahui, tetapi hanya sesuatu yang perlu diingat. Kita tidak sentiasa perlu menggunakan Pembolehubah jenis Boolean apabila kita bekerja dengan ungkapan Boolean. Terdapat dua jenis utama Boolean ungkapan bahawa kita akan bekerja dengan. Operator logik dan pengendali hubungan. Bahasa terdapat tidak terlalu penting. Ia benar-benar betapa saya perkumpulan mereka. Dan anda akan pasti, saya fikir, dengan cepat sedar apa yang pengendali hubungan adalah, berdasarkan apa yang mereka apabila kita bercakap tentang mereka dalam satu saat. Tetapi jangan bimbang tentang semestinya menghafal operator logik jangka atau pengendali hubungan. Saya hanya menggunakannya untuk kumpulan mereka dengan cara yang logik. Jadi, mari kita lihat pada tiga pengendali logik bahawa kita akan melihat cukup sedikit dalam pengaturcaraan dalam CS50 dan dalam pengaturcaraan amnya. Logik AND adalah benar, jika dan hanya jika kedua-dua operan adalah benar. Jika tidak palsu. Di mana maksudnya? Jadi, mari kita mengatakan bahawa saya di menunjukkan kod saya di mana saya mempunyai dua pembolehubah, x dan y. Dan saya mahu membuat keputusan sama ada untuk melakukan sesuatu dalam kod saya berdasarkan jika x adalah benar dan y adalah benar. Saya hanya mahu berbuat demikian, jika kedua-dua mereka adalah benar, jika tidak, saya tidak mahu turun ke bawah yang jalan kerana ia tidak akan membantu saya. Apa yang saya boleh katakan ialah jika x & & y. Yang akan menjadi logik Boolean ungkapan membandingkan x dan y dan mengambil jalan yang tertentu berdasarkan apa nilai-nilai mereka berada. Jadi, jika x adalah benar dan y adalah benar berdasarkan jadual kebenaran ini di sini, barulah kami akan pergi ke jalan itu. Jika x, & & y. Ia hanya true-- dan hanya benar jika x adalah benar dan y adalah benar. Jika salah satu adalah palsu, seperti yang kita lihat jadual kebenaran, maka kedua-dua x dan y tidak benar. Dan sebagainya, x & & y adalah palsu. Logik OR adalah benar jika dan hanya jika sekurang-kurangnya salah satu operan adalah benar. Jika tidak palsu. Jadi logik DAN diperlukan kedua-dua x dan y adalah benar. Logik ATAU memerlukan x adalah benar atau y adalah benar atau dengan kedua-dua x dan y adalah benar. Jadi, sekali lagi, kita jenis mencari diri kita dalam keadaan yang di mana kita akan kod kami, dan kami mencapai garpu di jalan raya. Dan kita mahu pergi ke bawah jalan tertentu jika x adalah benar atau y adalah benar, tetapi tidak semestinya jika kedua-dua adalah benar. Tetapi mungkin jika kedua-dua adalah benar. Jadi, jika x adalah benar dan y ialah benar, kita akan pergi ke jalan itu. x adalah benar. Salah seorang daripada mereka adalah benar, bukan? Jika x adalah benar dan y adalah benar. Jika x adalah benar, dan y adalah palsu, salah seorang daripada mereka masih benar. Jadi, x atau y masih benar. Jika x adalah palsu, dan y adalah benar, salah seorang daripada mereka masih benar, bukan? y benar, dalam kes ini. Jadi, memang benar bahawa x atau y benar. Hanya jika x adalah palsu dan y adalah palsu kita tidak pergi ke jalan itu, kerana tidak x atau y benar. Sekarang, jika anda sedang mencari pada skrin sekarang dan tertanya-tanya apa yang simbol adalah untuk logik OR, ia dipanggil bar menegak. Dan jika anda melihat papan kekunci anda selama satu minit, kerana saya lakukan sekarang, ia biasanya hanya di atas Masukkan utama, kebanyakan papan kekunci, pada kekunci yang sama dengan garis sendeng terbalik itu. Ia juga biasanya betul bersebelahan dengan tanda kurung siku. Jadi, ia mungkin menjadi kunci yang anda tidak ditaip sangat banyak pada masa lalu. Tetapi, jika anda pernah melakukan perbandingan logik, kerana kami akan melakukan banyak dalam perjalanan, ia akan menjadi berguna kepada mencari kunci itu dan menggunakannya. Jadi, ia biasanya pada kekunci yang sama sebagai garis sendeng terbalik di atas Enter. Pengendali logik akhir adalah TIDAK. Dan TIDAK cukup mudah. Ia Terbalikkan nilai operan itu. Jika x adalah benar, maka janganlah kamu x adalah palsu. Jika x adalah palsu, maka bukan x benar. Kadang-kadang anda akan mendengar simbol ini disebut sebagai bang atau seru atau tidak. Ia cukup banyak semua perkara yang sama. Sekiranya anda mendengar bahawa lisan dan anda tidak pasti apa yang bermakna, ia hanya seru mata, tetapi kadang-kadang ia dipanggil beberapa perkara yang berbeza. Baiklah, jadi yang mengambil mengambil berat operator logik. Jadi, mari kita bercakap tentang pengendali hubungan. Sekali lagi, jika anda biasa dengan ini aritmetik kembali di sekolah gred, anda mungkin biasa dengan cara ini kerja sudah. Ini berkelakuan sama seperti yang anda harapkan. Jadi kurang daripada ia benar, dalam hal ini Sebagai contoh, jika x kurang daripada y. Jadi, jika x ialah 4 dan y ialah 6, x kurang daripada y. Itu betul. Kurang daripada atau sama dengan berfungsi dengan sama. Jika x 4, dan y adalah 4, maka x kurang daripada atau sama dengan y. Lebih besar daripada. x lebih besar daripada y. Dan lebih besar daripada atau sama dengan, x adalah lebih besar daripada atau sama dengan y. Jika ia benar, maka anda akan lulus ungkapan itu, dan anda akan turun bahawa jalan di jalan raya. Jika anda mempunyai jika x lebih besar daripada y, dan x, sebenarnya, lebih besar dari y, anda akan melakukan apa sahaja yang tertakluk kepada syarat itu. Perhatikan bahawa kita tidak mempunyai aksara tunggal untuk kurang daripada atau sama dengan, seperti yang anda mungkin biasa dengan dari buku teks matematik. Jadi, kita mempunyai kurang daripada simbol, diikuti oleh tanda sama. Itulah bagaimana kita mewakili kurang daripada atau sama dengan. Begitu juga, kita berbuat demikian untuk lebih besar daripada atau sama dengan. Akhir dua hubungan pengendali yang penting sedang menguji untuk kesaksamaan dan ketidaksamaan. Jadi, jika x sama sama dengan y, adalah benar jika x dan y nilai adalah sama. Jika x 10, dan y adalah 10, maka x sama sama dengan y benar. Jika x 10 dan y ialah 11, x sama sama dengan y tidak benar. Kita juga boleh menguji ketidaksamaan menggunakan tanda seru atau bang atau TIDAK, lagi. Jika x tidak sama dengan y, jika itulah ujian yang kami gunakan di sini, kita akan menjadi baik untuk pergi. Jadi, jika x tidak sama dengan y, kami akan pergi ke jalan itu. Benar-benar berhati-hati di sini. Ia adalah satu mistake-- benar-benar biasa dan satu saya pasti membuat cukup banyak apabila Saya telah mendapat started-- sengaja kesilapan pengendali tugasan, setaraf tunggal, bagi pengendali kesaksamaan perbandingan, setaraf berganda. Ia akan membawa kepada beberapa pelik tingkah laku dalam kod anda, dan biasanya pengkompil akan memberi amaran kepada anda tentang apabila anda cuba dan menyusun kod anda, tetapi kadang-kadang anda mungkin boleh untuk menyelinap oleh. Ia tidak semestinya satu perkara yang baik yang anda menyelinap oleh, walaupun. Hanya supaya jika yang anda lakukan ujian ketidaksamaan, jika anda memeriksa sama ada dua pembolehubah yang berbeza mempunyai nilai yang sama di dalam mereka, pastikan untuk menggunakan sama sama, dan sama rata tidak tunggal. Dan cara program anda akan mempunyai tingkah laku yang anda berniat. Saya Doug Lloyd dan ini adalah CS50.