[Powered by Google Translate] DAVID J. Malan: Baiklah, ini adalah CS50 dan ini adalah
akhir Minggu 1, sehingga kartu studi dalam dan jumlah total
teman sekelas yang Anda miliki tahun ini adalah 745.
Dan kami sangat senang untuk memiliki begitu banyak dari Anda dalam kursus
semester ini, tapi meskipun tentu saja ini begitu besar,
menyadari bahwa itu adalah hal-hal seperti makan siang Jumat, seperti
Kantor jam, 15 orang bagian, dan sebagainya yang
benar-benar dimaksudkan untuk menciptakan lebih intim
lingkungan.
Jadi meskipun kita dapat berkumpul sekali atau dua kali seminggu, di sini di
Sanders, tahu bahwa banyak pengalaman Anda dalam kursus ini
akan sangat menjadi tangan-on di samping teman sekelas Anda
dan staf pengajar.
>> Jadi di sini kita pergi, Jatuh 2012.
Jadi ingat bahwa terakhir kali kita berakhir pada catatan
ketidaktepatan, berbicara tentang representasi dari angka.
Dan kita melihat salah satu kegagalan yang terjadi, dalam
dunia nyata, ketika datang ke kesalahpahaman
bagaimana komputer bekerja.
Nah, hari ini kita akan kembali lagi salah satu ide
serta melanjutkan diskusi kami dari klien CS50
dan C dan apa artinya benar-benar untuk program.
Tapi pertama-tama, hanya beberapa pengumuman angin puyuh.
>> Bagian mulai hari Minggu ini, dan minggu pertama selalu
sedikit awal yang cepat, karena kita baru saja di
bentuk bagian Anda.
Kami sedang melakukan hal yang sama, sekarang, dengan rekan-rekan mengajar, sekarang
bahwa mereka tahu jadwal mereka, jadi kami bertujuan, dengan
Sabtu pagi, untuk menindaklanjuti dengan Anda dengan bagian Anda
tugas dan TF.
Sadarilah bahwa mereka akan memulai hari berikutnya, Minggu
atau Senin atau Selasa.
Dan kemudian kita akan mengakomodasi perubahan bagian yang muncul
pada hari-hari yang akan datang.
Jam kantor, sementara itu, adalah, sekali lagi, malam ini, 8 PM untuk 11, di
Annenberg, serta besok malam.
Meskipun set masalah umumnya jatuh tempo pada hari Kamis
pada siang hari, menyadari bahwa Anda memiliki hingga lima hari untuk menghabiskan akhir,
maka ketersediaan jam kerja pada hari Kamis jika
Anda uang tunai di salah satu dari hari-hari akhir dan, dengan demikian, kirimkan
sesuatu pada hari Jumat.
Izinkan saya menyarankan bahwa Scratch adalah salah satu lebih menyenangkan, antara
lebih rendah set masalah utama.
Dan aku akan menggantung ke hari-hari akhir, strategis, hanya
untuk kemudian di semester ketika hidup mulai mendapatkan di jalan
dengan ujian tengah semester dan kelas-kelas lainnya.
Soal Set 1, sementara itu, akan diposting pada kursus ini
website ini Jumat, karena akan berada di jalan kursus ini
melalui video, yang akan difilmkan di 2:30 malam pada hari Jumat
dan kemudian diposting online pada hari berikutnya.
>> Jadi kita berakhir pada hari Senin.
Saya ingin - sebenarnya, salah satu mencatat di sini.
Karena kelas - karena Sanders tidak tepat meminjamkan
sendiri untuk Q & santai kembali A dan sebagainya sangat baik, kami
akan mencoba sesuatu yang sedikit tahun baru ini, dimana
jika Anda tidak nyaman mengangkat tangan Anda atau Anda hanya
suka tidak mengangkat tangan Anda di sebuah ruangan seperti ini,
kita akan memiliki beberapa rekan-rekan mengajar dan CA
mengawaki cs50.net/discuss selama kuliah.
Jadi jika Anda memiliki pertanyaan karena saya benar-benar
jelas tentang sesuatu atau Anda penasaran tentang beberapa
topik, coba posting di sana.
Tag dengan label Kuliah, dan kami akan melakukan yang terbaik
hari ini dan minggu depan - kami mencoba ini - ke lapangan itu
baik secara elektronik, online, atau jika rasanya kita harus
benar-benar alamat itu secara massal, salah satu rekan pengajaran atau
CA akan mengangkat tangan mereka dan meminta
anonim atas nama Anda.
Jadi kita akan memberikan ini mencoba dan melihat seberapa baik ini bekerja.
Tapi, dengan segala cara, terus mengangkat tangan seperti yang Anda inginkan.
>> Jadi terakhir kali kami mengungkapkan bahwa 10% atau sepersepuluh tidak, dalam
Bahkan, 0,1, seperti Anda diajarkan bertahun-tahun yang lalu.
Ini pada kenyataannya, nilai seperti ini.
Tapi itu tidak sepenuhnya benar, kan?
Kami hanya memiliki kendala ini di komputer dimana, jika Anda
hanya memiliki jumlah terbatas memori, RAM, atau lebih
bit khusus, baik, hanya ada sejumlah terbatas
hal yang dapat mewakili.
Sebagai contoh, jika kita memiliki angka nol, dan kami ingin
mewakili dalam biner, menggunakan delapan bit, di mana sedikit,
lagi, adalah nol atau satu, kita mungkin
mewakili sebagai 00000000.
Dan itu perlu sedikit verbose.
Sama seperti dalam sistem desimal di dunia nyata,
pada umumnya, jika Anda ingin menulis nomor 123, kita
manusia mungkin tidak menulis 00000123 meskipun,
fungsional, itu jumlah yang sama persis.
Kami hanya drop nol terkemuka, sehingga untuk berbicara.
>> Dalam biner, kita bisa melakukan hal yang sama.
Biner dan nol, nol dan biner hanya nol.
Anda hanya perlu satu bit.
Tapi sekali lagi, unit paling umum dari ukuran di dunia
komputasi adalah byte, delapan bit.
Hanya karena satu bit, cukup berguna.
Delapan bit, tidak terlalu berguna, tapi setidaknya itu lebih
berguna daripada satu unit ukuran.
Jadi dengan delapan bit, kita biasanya akan mewakili biner.
Jadi di sini kita memiliki angka nol, satu, dua, dan kemudian, seperti yang
Nate lakukan di video kami Rabu lalu, kita dapat melanjutkan
menghitung sampai tujuh, delapan.
Dan kemudian jika kita menggunakan bit lebih dan lebih, kita
dapat menghitung sampai tak terhingga.
Tetapi jika Anda hanya memiliki jumlah terbatas bit-bit, seperti
kasus dalam sistem komputer, atau bahkan rudal
sistem, baik, memang Anda hanya memiliki
terbatas jumlah presisi.
Jadi jika Anda ingin untuk mewakili nomor seperti 0.1, baik,
komputer harus memilih.
Dan jika hanya memiliki jumlah terbatas angka itu bisa
mewakili, maka dapat datang dekat dengan 0,1 untuk Anda, tapi tidak bisa
selalu memberikan persis nilai yang Anda inginkan.
Dan ini hanya salah satu tantangan dari komputer,
bawah kap mesin, untungnya.
>> Ketika kita bergerak lebih jauh dalam semester, ini tingkat yang lebih rendah
rincian menjadi jauh lebih menarik, tapi pasti
penerapan ide ini dapat memiliki beberapa dunia yang sangat nyata
konsekuensi.
Salah satunya adalah menyenangkan sedikit.
Berapa banyak dari Anda telah melihat film Space Office menakjubkan?
Jika Anda belum, itu tidak resmi Anda
PR selama seminggu.
Namun dalam Office Space, rekan-rekan dalam film yang mengambil
keuntungan justru ide ini, tetapi mereka benar-benar mencuri
itu dari film lain yang mungkin Anda miliki
dilihat, bahkan bertahun-tahun sebelumnya.
Jadi izinkan saya memberi Anda beberapa detik dari trailer ini dari
film ini luar biasa dan ini sangat banyak
akademis yang relevan.
>> [Bermain film]
Sebenarnya saya sedang dipromosikan.
Saya bisa memprogram virus yang akan merobek bahwa
menempatkan off waktu besar.
Nah, bagaimana cara kerjanya?
Setiap kali ada transaksi bank di mana bunga
dihitung, ada ribuan per hari, komputer berakhir
dengan pecahan sen.
Tapi aku tidak akan melakukan sesuatu yang ilegal.
Illegal? Samir, ini adalah Amerika.
Anda harus bersumpah kepada Tuhan.
Jika tidak ada yang tahu tentang hal ini tetapi kita, baik-baik saja? Tidak ada anggota keluarga, tidak ada
pacar, tidak ada.
[Tak terdengar].
Jangan khawatir, man, saya tidak akan memberitahu siapa pun baik.
[FILM ENDS]
>> Baiklah, jadi mungkin saya menemukan film ini lebih baik daripada kebanyakan
orang di sini, tetapi dalam hal apapun, virus yang mereka
mencoba untuk membuat -
dan di film, kapan mereka akan menyebut sesuatu virus,
itu umumnya tidak benar-benar virus.
Ini hanya sebuah program yang seseorang menulis untuk melakukan sesuatu.
Dan dalam hal ini, orang-orang mencoba untuk menulis sebuah program
yang mengambil keuntungan dari perusahaan mereka yang disebut itu Innotech
sistem komputasi, dimana komputer, juga, bahkan ketika
datang ke uang, tidak bisa serta merta
mewakili uang tepatnya.
Jadi meskipun Anda mungkin memiliki $ 0.10 di rekening bank Anda,
0,10, dengan baik, komputer mungkin benar-benar berpikir bahwa Anda memiliki
ini banyak sen di rekening bank Anda.
Dan jadi apa orang-orang yang bercita-cita untuk melakukan - dan mereka
mencuri ide, ternyata dari Superman III, di mana
Richard Pryor melakukan hal yang sama - mereka pada dasarnya
menulis program yang bercita-cita untuk mengambil semua trailing
angka, semua, kecil kecil, pecahan kecil
uang, dan menyedot mereka off sehingga manusia hanya
berpikir, oh, itu hanya $ 0,10 sana, tapi semua orang
nomor membuntuti akhirnya bertambah.
Jadi ide bagus dan itu menjadi bumerang meriah dalam
khususnya film.
>> Tapi di dunia nyata, juga, ada jauh lebih memprihatinkan
implikasi dari hal-hal ini.
Dan salah satu alasan untuk menyelam ke dalam bidang komputer
ilmu adalah, sekali lagi, penerapannya tidak dengan
ilmu teknik saja, tetapi hanya untuk
bidang lainnya juga.
Jadi ini adalah melihat lebih ringan pada apa yang bisa salah, tetapi
itu juga cukup membuka mata, saya pikir, ketika datang ke
memahami persis bagaimana mana-mana teknologi seperti
komputer dan pemrograman atau hari ini,
dalam bentuk software.
Jadi ini klip berikutnya hanya sekitar enam menit, terus
di mana kami tinggalkan terakhir kali, namun memungkinkan kita untuk melihat sedikit
lebih mendalam di salah satu seperti masalah ini.
Biarkan saya melompat ke tempat kami tinggalkan,
yang ada di sini.
Dan kami memiliki dua bagian dari dua, selama sekitar enam menit di sini.
>> [MAIN FILM]
Terganggu teknologi roket modern.
Pada tahun 1991, dengan dimulainya Perang Teluk pertama, Patriot
rudal mengalami serupa
Nomor konversi masalah.
Dan sebagai hasilnya, 20 orang, 20 tentara Amerika, tewas
dan sekitar 100 lainnya luka-luka, ketika Patriot, yang seharusnya
untuk melindungi terhadap Scud masuk,
gagal menembakkan rudal.
>> Ketika Irak menginvasi Kuwait dan Amerika meluncurkan sebuah Desert
Badai di awal 1991, baterai rudal Patriot adalah
dikerahkan untuk melindungi Arab Saudi dan Israel dari Irak
Rudal Scud serangan.
Patriot adalah AS jarak menengah permukaan-ke-udara sistem,
diproduksi oleh perusahaan Raytheon.
Ukuran interceptor Patriot sendiri, ini tentang
sekitar 20 meter panjang dan beratnya sekitar 2.000 pound.
Dan itu membawa hulu ledak sekitar - saya pikir itu sekitar
150 pound.
Dan hulu ledak itu sendiri adalah ledak tinggi yang memiliki
fragmen sekitarnya.
Casing dari hulu ledak dirancang untuk bertindak seperti gotri.
Rudal itu dilakukan empat per kontainer dan
diangkut oleh semi trailer.
>> The Patriot anti-rudal sistem kembali setidaknya ke
20 tahun sekarang.
Ini pada awalnya dirancang sebagai rudal pertahanan udara untuk
menembak jatuh pesawat musuh, dalam Perang Teluk pertama.
Ketika perang itu datang, Angkatan Darat ingin menggunakannya untuk menembak
bawah Scud, bukan pesawat terbang.
Angkatan Udara Irak tidak begitu banyak masalah, namun Angkatan Darat
khawatir tentang Scud.
Dan sehingga mereka mencoba untuk meng-upgrade Patriot.
Mencegat rudal musuh bepergian di MACH 5 akan
akan cukup menantang.
Tapi ketika Patriot itu bergegas ke dalam layanan, Angkatan Darat
tidak menyadari suatu modifikasi Irak yang membuat mereka
Scud hampir mustahil untuk memukul.
>> Apa yang terjadi adalah rudal Scud yang
datang tidak stabil.
Mereka bergoyang-goyang.
Alasan untuk ini adalah Irak, dalam rangka untuk mendapatkan 600
kilometer keluar dari rudal jarak 300 kilometer, mengambil
berat keluar dari hulu ledak depan dan
membuat hulu ledak ringan.
Jadi sekarang Patriot berusaha untuk datang di Scud, dan sebagian besar
waktu, mayoritas waktu, itu akan
hanya terbang oleh Scud.
Setelah operator Patriot sistem menyadari Patriot
merindukan target, mereka meledakkan hulu ledak Patriot.
Untuk menghindari korban yang besar, hal itu diperbolehkan
jatuh ke tanah.
Itulah apa yang kebanyakan orang melihat, seperti bola api besar di langit,
dan disalahpahami sebagai penyadapan hulu ledak Scud.
>> Meskipun, di langit malam, Patriots tampaknya
Scud berhasil dihancurkan, di Dhahran, tidak mungkin ada
kesalahan tentang kinerjanya.
Di sana, sistem radar Patriot kehilangan jejak dari sebuah
masuk Scud dan tidak pernah diluncurkan karena
untuk cacat software.
Itu adalah Israel yang pertama kali menemukan bahwa semakin lama
sistem itu pada, semakin besar perbedaan waktu menjadi,
karena jam tertanam di komputer sistem.
Sekitar dua minggu sebelum tragedi di Dhahran, yang
Israel dilaporkan ke Departemen Pertahanan bahwa
Sistem kehilangan waktu.
Setelah sekitar delapan jam berjalan, mereka melihat bahwa
Sistem itu menjadi terasa kurang akurat.
Departemen Pertahanan menanggapi dengan mengatakan semua
baterai Patriot untuk tidak meninggalkan sistem
untuk waktu yang lama.
Mereka tidak pernah mengatakan apa lama adalah - 8 jam, 10
jam, 1.000 jam.
Tak ada yang tahu.
>> Baterai Patriot ditempatkan di barak di Dhahran
dan jam cacat internal telah di lebih dari 100 jam
malam tanggal 25 Februari.
Ini dilacak waktu dengan akurasi sekitar sepersepuluh detik.
Sekarang sepersepuluh dari kedua adalah nomor menarik karena
tidak dapat dinyatakan dalam biner, tepatnya, yang berarti
itu tidak dapat dinyatakan tepat dalam setiap
komputer digital modern.
Sulit untuk percaya.
Tetapi menggunakan ini sebagai contoh.
>> Mari kita mengambil nomor yang ketiga.
Satu ketiga tidak dapat dinyatakan dalam desimal, tepatnya.
Sepertiga adalah 0,333 berlangsung tak terhingga.
Tidak ada cara untuk melakukan itu dengan akurasi mutlak dalam desimal.
Itu persis jenis masalah yang sama yang terjadi di
Patriot.
Semakin lama sistem berlari, kesalahan yang buruk menjadi waktu.
Setelah 100 jam operasi, kesalahan dalam waktu hanya
sekitar sepertiga detik.
Tapi dalam hal menargetkan rudal bepergian di MACH 5,
itu mengakibatkan kesalahan pelacakan lebih dari 600 meter.
Ini akan menjadi kesalahan fatal bagi tentara di Dhahran.
>> Apa yang terjadi adalah peluncuran Scud terdeteksi oleh peringatan dini
satelit dan mereka tahu bahwa Scud itu datang mereka
umum arah.
Mereka tidak tahu di mana itu berasal.
Itu sekarang sampai dengan komponen radar Patriot
sistem, membela Dhahran, untuk mencari dan melacak
masuk musuh rudal.
Radar itu sangat cerdas.
Anda benar-benar akan melacak posisi Scud dan kemudian
memprediksi di mana mungkin akan menjadi waktu berikutnya
radar mengirimkan pulsa keluar.
Yang disebut gerbang jangkauan.
Kemudian, setelah Patriot memutuskan cukup waktu telah berlalu pergi
kembali dan memeriksa lokasi ini selanjutnya terdeteksi
objek, itu akan kembali.
Jadi ketika kembali ke tempat yang salah, kemudian tidak melihat
keberatan, dan memutuskan bahwa ada tidak ada objek.
Itu adalah deteksi palsu dan tetes trek.
>> The Scud masuk menghilang dari layar radar.
Dan beberapa detik kemudian, ia menabrak barak. The Scud
menewaskan 28 dan yang terakhir dipecat selama
Perang Teluk pertama.
Tragisnya, perangkat lunak diperbarui tiba di Dhahran
hari berikutnya.
Dan kelemahan perangkat lunak telah diperbaiki, menutup satu bab dalam
sejarah bermasalah dari rudal Patriot.
PATRIOT sebenarnya singkatan dari "Pelacakan Array bertahap
Mencegat target. "
>> Semua, yang tepat sehingga hasil yang jauh lebih menyedihkan dari tidak cukup
memahami dunia ini.
Dan takeaway, benar-benar, dari film ini adalah bahwa solusi
ada itu reboot sistem rudal pertahanan Anda
setiap sekali dalam beberapa saat.
Dan begitu lagi, salah satu tujuan dari program ini, tentu
pada skala yang lebih sederhana daripada aplikasi ini, adalah untuk
semua orang benar-benar open mata untuk persis bagaimana Anda pergi tentang
membuat mesin melakukan apa yang Anda ingin mereka lakukan dan bagaimana Anda pergi
melakukan itu dengan benar, sementara sepanjang jalan melakukannya
dengan baik, elegan, dan sebagainya.
Dan sehingga hari ini, mari selami sedikit lebih dari ini, namun
sehingga kita tidak pergi terlalu cepat, terutama bagi mereka yang kurang
nyaman, tetapi juga agar kita dapat mempertahankan kepentingan
mereka lebih nyaman, mari kita mulai dengan cepat sedikit
dari rekap dari beberapa ide.
Dan lagi, meminta pergi, baik secara langsung atau online, jika Anda memiliki
pertanyaan sehingga kita bisa membuat semua orang pada halaman yang sama.
>> Jadi Appliance CS50, langkah cepat kembali, adalah
apa, dengan kata-kata Anda sendiri?
Tidak masalah jika Anda tidak tahu apa kata-kata mungkin belum.
[Tak terdengar]
Oke, jadi antarmuka universal untuk -
bahwa kita semua bisa berbagi.
Tentu saja.
Jadi kita bisa, misalnya, memberitahu Anda untuk pergi ke beberapa
situs, men-download software ini untuk Mac OS.
Mendownload software ini untuk Windows, mengkonfigurasi di
cara ini dan itu.
Tetapi kenyataannya adalah maka kita mengalami teknis yang tak terhitung
mendukung isu-isu.
Dan juga hari ini, banyak dari apa yang sedang dilakukan sisi server,
dalam dunia komputasi, terutama ketika datang ke
pengembangan web dan aplikasi berbasis web, sebenarnya
cukup sering dilakukan pada komputer Unix atau Linux, sebagai lawan
Mac atau PC Windows.
>> Jadi antara upsides, kemudian, menggunakan hal ini disebut
CS50 Appliance adalah kita semua akan memiliki lingkungan yang sama.
Jadi semua orang pada halaman yang sama tidak peduli hardware apa yang Anda
datang ke kampus dengan tetapi juga akan berkecimpung persis
lingkungan yang sama yang Anda akan menggunakan arah
semester akhir juga untuk pengembangan web, serta dalam
masa depan untuk aplikasi dunia nyata daripadanya.
Jadi lebih konkret, Appliance CS50 adalah sepotong gratis
perangkat lunak yang memungkinkan Anda untuk menjalankan sistem operasi lain,
Linux, dalam hal ini, di komputer Anda sendiri, pada sebuah window.
Sekarang Anda tidak bisa hanya men-download alat.
Anda membutuhkan sebuah program yang dapat digunakan untuk memutar atau menjalankan alat.
Dan itu bagian dari perangkat lunak umumnya dikenal sebagai
hypervisor.
Hypervisors datang dalam bentuk produk seperti VMware,
Virtual Box, Parallels.
Segala macam perusahaan membuat perangkat lunak, baik bebas dan
komersial, sama.
Apa yang Anda akan melihat dalam Soal Set 1 adalah petunjuk tentang cara
mendapatkan perangkat lunak bebas yang dapat digunakan untuk
menjalankan Appliance CS50.
Dan sekali Anda melakukannya, Anda akan memiliki, di jendela pada Mac atau PC,
lingkungan desktop yang terlihat cukup seperti ini, di mana
memiliki hal-menu seperti Start di
bawah kiri pojok.
Memiliki folder Home, atau direktori Home, di kiri atas
ada, tempat sampah, dan sebagainya.
Jadi kita akan menggoda selain rincian yang diperlukan seperti yang kita pergi.
>> Tapi sekarang mari kita mulai menyelam ke C.
Jadi C adalah bahasa pemrograman ini, memiliki semangat yang sama
Scratch, tetapi jauh lebih sedikit grafis, namun ironisnya, jauh
lebih kuat setelah Anda mendapatkan cerdas dengan itu.
Jadi dalam C, kita menulis program dengan menulis kode sumber, yang
ini sintaks bahasa Inggris-seperti, mirip dengan kaus kaki
demonstrasi yang kami lakukan terakhir kali yang memungkinkan Anda untuk
mengekspresikan diri cukup tepat, jika
arcanely, ke komputer.
>> Jadi, apa jenis perangkat lunak produk Anda benar-benar perlu
untuk menulis program dalam bahasa seperti C, berdasarkan kami
percakapan pada hari Senin?
[Tak terdengar]
OK, Anda hanya memerlukan editor teks.
Anda tidak perlu software khusus
per se untuk menulis program.
Anda hanya perlu sebuah editor teks seperti Notepad, pada Windows,
TextEdit pada Mac, atau sesuatu yang disebut gedit, dalam dunia
Linux, yang akan kita gunakan di sini.
Dan itu saja, untuk menulis program.
>> Tapi tulisan ini hanya setengah dari persamaan.
Anda kemudian perlu untuk menjalankannya.
Tetapi dalam rangka untuk menjalankan program -
Anda tidak dapat menjalankan kode sumber.
Anda malah harus melakukan apa yang harus terlebih dahulu?
Ya.
DAVID J. Malan: Anda perlu
kompilasi.
Dan, orang lain, kompilasi kode sumber berarti -
[Tak terdengar]
DAVID J. Malan: Tepat.
Menerjemahkan ke angka satu dan nol.
Karena kita semua, hari ini, memiliki komputer yang memiliki CPU,
hampir semua yang dibuat oleh sebuah perusahaan bernama Intel, dan
Intel Inside, berarti ada ini di dalam otak Anda
komputer, yang dikenal sebagai CPU.
Dan salah satu hal yang otak yang dilakukan adalah, ia tahu
bagaimana memahami pola nol dan satu.
Ia tahu apa yang pola bit mewakili Selain itu, apa yang
Pola merupakan subtractions, apa pola
bit mewakili mencetak, dan menciptakan suara yang dapat didengar.
>> Jadi singkatnya, CPU, ditambah dengan sistem operasi,
yang merupakan bagian dari perangkat lunak yang berjalan di atas CPU,
sehingga untuk berbicara.
Bersama-sama, dua potong tahu cara menjalankan program yang
kita manusia menulis.
>> Jadi jika saya pergi ke Appliance CS50 sini, saya perlu membuka
sebuah editor teks dan saya dapat mengakses
dalam beberapa cara.
Saya dapat pergi ke Menu, Pemrograman,
dan kemudian aku dapat memilih -
nope, tidak menu.
Aku bisa pergi ke Aksesoris / gedit sini untuk membuka
editor teks kecilku.
Atau lebih sederhana, saya dapat mengklik ikon kecil ini di bagian bawah
tangan kiri pojok.
Dan sekarang aku mendapatkan lingkungan ini di sini.
Hal ini cukup mengingatkan editor teks sederhana, dengan hanya
satu atau dua perbedaan.
Di bagian atas, di mana kursor berkedip sekarang, ini adalah di mana
Saya bisa mulai menulis kode saya.
Di bawah ini hal ini disebut jendela terminal.
Dan apa hal-hal yang dapat saya lakukan dalam hal ini
disebut jendela terminal?
[Tak terdengar]
>> Oke, jadi saya akan menjalankan perintah.
Dan beberapa perintah kami berlari pada hari Senin adalah sedikit
samar pada awalnya, tetapi ls untuk daftar, cd untuk direktori perubahan,
rm, untuk menghapus.
Jadi semacam cara lama-sekolah navigasi Anda
komputer, dengan hanya menggunakan keyboard Anda dan perintah tekstual,
dan tidak, pada umumnya, menggunakan mouse.
Tapi kita akan lihat, tak lama, ini benar-benar memberikan kita
sedikit lebih kekuasaan dan presisi yang lebih sedikit yang dapat digunakan untuk
mengekspresikan diri.
Dan kemudian di sini di sebelah kiri, kita hanya akan melihat,
saat kita mulai menulis perangkat lunak, ringkasan kecil dari
program yang kami telah menulis di sebelah kiri atas.
Tapi kita akan melihat bahwa lagi sebelum lama.
>> Jadi mari kita lakukan sesuatu yang cukup sederhana di sini.
Ijinkan saya pergi ke depan dan pergi ke File, Save, dan aku hanya
akan klik pada jharvard sini, ke arah kiri, dan
jharvard adalah, sekali lagi, nama untuk folder rumah saya, saya
file pribadi, saya, sekarang sedang John Harvard, karena semua dari Anda
akan segera John Harvard di lingkungan ini.
Dia punya direktori Home, My Documents, dan sebagainya,
bahwa saya ingin menyimpan, sekarang, file ini masuk
Jadi aku akan menyebutnya hello.c. Lalu aku akan pergi
depan dan klik Save, dan sekarang apa yang saya miliki di sini adalah tab
disebut hello.c, sehingga mirip dengan yang lain jenis editor.
>> Jadi sekarang biarkan aku pergi ke depan dan mulai menulis sebuah program.
int main (void).
Dan kemudian aku lakukan terakhir kali, printf, untuk cetak diformat,
("Hello, world!"
);.
Hampir selesai.
Tapi aku kehilangan beberapa detail.
Apa yang hilang dari program ini bahwa saya benar-benar perlu untuk
untuk benar-benar mengkompilasi?
Ya.
[Tak terdengar]?
>> DAVID J. Malan: Ya, jadi saya perlu menyertakan standar
I / O perpustakaan.
Jadi ini perlu pergi di atas utama, jadi aku hanya akan
membuat beberapa ruang untuk itu ada.
Dan aku akan melakukan # include.
Dan perhatikan tanda kurung siku ada.
Dan sebagai samping, gedit adalah pengguna kecil yang ramah, jika
kadang-kadang agak membingungkan, dalam hal ini mencoba untuk membantu Anda
mata memperhatikan apa yang berbaris dengan apa.
Jadi fakta bahwa kursor saya tepat di sebelah ini miring
braket, perhatikan bagaimana hal itu menyoroti miring lainnya
braket ditambah satu ini.
Dan itu hanya untuk menarik perhatian saya pada kenyataan bahwa saya
memiliki simetri.
Dan simetri dalam pemrograman umumnya merupakan hal yang baik.
Demikian pula, jika saya memindahkan kursor ke akhir, perhatikan bagaimana
kurung kurawal berbaris untuk menunjukkan bahwa, ya, saya memiliki satu terbuka
dan yang tertutup, sehingga untuk berbicara.
>> Baiklah, dan saya bisa melakukan satu hal lainnya.
Ini tidak benar-benar diperlukan, tetapi praktik yang baik, untuk mengatakan
return 0.
Dan 0 kembali melakukan apa bagi kita di sini?
Atau menandakan apa?
[Tak terdengar]
DAVID J. Malan: Tapi tidak ada yang salah.
Dan terus terang sulit untuk banyak untuk pergi salah dalam
memprogram pendek ini.
Jadi aku hanya menjadi super eksplisit bahwa semuanya baik-baik.
Aku, manusia, ketika saya menjalankan program ini, mungkin akan pernah
melihat bahwa 0.
Umumnya, angka-angka yang sedang kembali dari main
hanya membesarkan kepala mereka ke manusia saat
sesuatu yang tidak beres.
Dan Anda mendapatkan pop up sedikit kesalahan sistem mengatakan, satu,
dua, tiga, atau apa pun nomor adalah bahwa
itu benar-benar kembali.
Jadi apa pun yang salah dengan ini?
[Tak terdengar]
>> DAVID J. Malan: Jadi ini tidak begitu banyak kesalahan fungsional
tapi satu estetika.
Saya mungkin harus dimasukkan ke dalam karakter newline ada di
akhir string ini sehingga kita benar-benar memindahkan kursor ke
baris berikutnya, dan program hanya terlihat sedikit lebih cantik.
>> Jadi sekarang biarkan aku pergi ke jendela terminal saya
dan zoom kembali masuk
Dan hal ini di sini, ini disebut prompt.
Ini hanya mengingatkan saya siapa saya, jharvard @ alat, di mana
alat adalah nama komputer saya pada.
Dalam kurung ini tilde, simbol coretan, yang
mewakili apa?
HADIRIN: direktori Home.
DAVID J. Malan: direktori Home.
Jadi itu hanya notasi singkat untuk mengatakan Anda berada di
Anda pribadi folder dimana semua file Anda pergi secara default.
Jadi sekarang, di sini, saya bisa mengetik ls untuk daftar.
Dan satu-satunya hal yang saya lihat di sini pada saat ini adalah hello.c.
Dan itu bagus karena saya hanya menulis ini.
>> Jadi biarkan aku pergi ke depan dan memang membuat halo.
Dan perhatikan aku tidak mengetik membuat hello.c.
Sebaliknya, aku hanya mengetik nama dasar file, halo.
Dan membuat, seperti yang kita lihat pada hari Senin, hanya akan menyimpulkan bahwa saya ingin
c file..
Jadi sekarang aku mengetik membuat halo.
Sekarang saya melihat perintah ini cukup panjang dan akan terus
melihat ini lagi dan lagi.
Tapi harus jelas, dentang, kata yang baru saja muncul,
itulah compiler yang sebenarnya.
Buatlah hanya utilitas membangun.
Ini hanya sebuah program lebih user friendly yang menyelamatkan saya, dalam
jangka panjang, karena harus mengetikkan sangat membosankan panjang
perintah seperti itu.
Jadi Anda bisa menjalankan dentang manual.
Anda bisa mengetik semua itu secara manual.
Hanya mendapat sangat membosankan.
Dan sehingga membuat hanyalah sebuah program yang menyederhanakan hidup kita dan
menjalankan perintah yang lebih kompleks bagi kita.
>> Baiklah, jadi sekarang apa file yang harus saya miliki
dalam direktori saya saat ini?
Tidak hanya hello.c, tetapi juga halo.
Jadi jika saya ingin menjalankan halo, ingat bahwa saya katakan dot slash,
mana berarti dot masuk ke folder saat ini, di mana pun Anda
, dan kemudian menjalankan program yang disebut halo, dan memang, sekarang,
Saya memiliki dunia halo.
Baiklah, pertanyaan pada alur kerja atau sintaks
apa yang baru saja kita lakukan?
>> Baiklah, jadi mari kita mengambil hal-hal takik lagi.
Jadi ini underwhelming untuk hanya menulis sebuah program yang hanya
pernah mengatakan Halo, dunia.
Jadi kita mengubahnya, Senin, mengatakan, halo, David.
Ini sedikit lebih pribadi, tetapi hanya sebagai keras dikodekan sebagai
pertama versi.
Jadi tidak semua yang menarik.
Tapi ada ada, di C, fungsi tentu selain
cetak, fungsi yang memungkinkan Anda mendapatkan input pengguna.
Dan cara kita melakukan ini, hari yang lain, adalah sebagai berikut.
Sebelum saya benar-benar mencetak sesuatu, saya pertama kali
sesuatu dari pengguna.
Jadi biarkan aku melakukan ini lagi.
>> String s, di mana s hanya sebuah nama sewenang-wenang, di sini, untuk
string, sama GetString.
Jadi apa yang GetString?
Ini jelas mendapat string, berdasarkan namanya.
Tapi apa yang terjadi, lebih teknis?
Ini fungsi.
Jadi itu adalah fungsi yang tidak datang dengan C per se.
CS50 staf menulis ini.
Dan sehingga untuk menggunakan ini, Anda tidak bisa hanya termasuk stdio.h,
Anda juga perlu untuk memasukkan apa?
Ya.
Jadi cs50.h, yang hanya file kami menulis beberapa tahun yang lalu.
Kami memasangnya di alat untuk Anda bersama
semua file standar.
Dan sehingga dalam beberapa minggu pertama kelas, kita akan menggunakan
ini hanya untuk menyederhanakan proses melakukan sangat dasar
hal-hal seperti input pengguna mendapatkan.
Karena seperti yang kita akan lihat dalam beberapa minggu, mendapatkan input pengguna dalam
bahasa seperti C sebenarnya mengejutkan kompleks,
terutama karena Anda tidak tahu sebelumnya, biasanya, bagaimana
banyak barang pengguna akan mengetik masuk
Dan ketika Anda tidak tahu berapa banyak data yang diharapkan, Anda tidak
tahu berapa banyak memori untuk mengalokasikan.
Dan jika Anda benar-benar memiliki seorang pengguna yang berlawanan yang mencoba
untuk kembali ke sistem Anda, crash komputer Anda, baik,
umumnya metode pertama serangan adalah, seperti yang saya lakukan pada
Senin, ketik urutan panjang seluruh karakter acak,
tekan Enter, dan melihat apa yang istirahat.
Karena pada umumnya, jika istirahat program, yang mengisyaratkan
lubang keamanan, berpotensi.
Ini tentu mengisyaratkan Anda, programmer, setelah membuat
kesalahan, tetapi lebih berbahaya, Anda mungkin telah membuat
yang berhubungan dengan keamanan kesalahan, dan umumnya kita akan melihat bahwa
itulah bagaimana mesin terganggu sampai hari ini, baik
dalam dunia web dan program di
baris perintah, seperti ini.
>> Baiklah.
Jadi string s sama GetString.
Jadi lebih konkret sekarang, apa line 6 lakukan di sini?
Jadi fungsi di sebelah kanan mendapatkan string,
Dibutuhkan berapa banyak argumen?
Oke.
Jadi tidak ada.
Sebuah kewarasan sedikit memeriksa.
Argumen, sekali lagi, hanya sebuah masukan ke fungsi untuk mengubah
yang standar perilaku dalam beberapa cara.
Tapi dalam kasus ini, saya tidak ingin mengubah
perilaku GetString.
Saya hanya ingin mendapatkan string.
Jadi saya menaruh apa-apa di kurung, dan kemudian aku meletakkan
koma demarking akhir baris kode.
Sekarang, tanda sama dengan tidak berarti sama, per se.
Ini berarti tugas, yang berarti menempatkan apapun mendapat
outputted di bagian dalam kanan apa pun yang di sebelah kiri.
>> Jadi di sebelah kiri, kita mengatakan bahwa kita telah mendeklarasikan
string disebut s.
Dan lebih khusus, kami telah mengalokasikan memori dalam
yang kita akan menempatkan bit yang mewakili urutan
karakter.
Tapi untuk saat ini, kami telah mengalokasikan
atau menyatakan string.
Baiklah.
Jadi sekarang setelah saya sudah melakukan ini, saya ingin pasang di nilai
s, bukan nilai Daud.
Jadi ini salah mengapa?
Jadi ini hanya harfiah s hard-coded.
Ini untuk mengatakan "Halo, s," yang tidak apa yang saya inginkan.
Jadi saya bisa melakukan ini.
Tanda persen adalah placeholder, tapi sekarang aku perlu
masuk ke mencetak argumen kedua.
Ingat bahwa argumen untuk fungsi yang dipisahkan oleh
koma, jadi koma berikutnya di sini saya menempatkan setelah surat s.
Dan dalam konteks ini sekarang, s adalah variabel, dan printf,
setelah menerima dua input -
string di sebelah kiri dan nama variabel di sebelah kanan -
itu akan pasang yang terakhir ke mantan bagi kita, dan
hanya mencetak string yang indah bagus berisi
apa pun yang kita diketik masuk
>> Jadi mari kita coba ini.
Akan pergi ke depan dan zoom out, kembali
ke jendela terminal saya.
Zoom in di bagian bawah sini.
Ketik kembali membuat halo.
Dentang tampaknya telah menjalankan kembali.
Aku akan mengetik / hello, Enter..
Tidak ada yang tampaknya terjadi, tapi itu pada prompt
bahwa saya bisa mengetik sesuatu seperti Nate, Enter, dan sekarang kami memiliki
Halo, Nate.
Dan saya bisa melakukannya lagi dengan Rob, dan sebagainya.
Jadi mudah-mudahan sekarang program ini berperilaku seperti yang saya inginkan.
>> Sekarang, tidak semua pengguna yang ramah.
Aku tidak tahu apa yang diharapkan dari saya.
Jadi kita pasti bisa membersihkan ini sedikit.
Biarkan aku pergi kembali ke sini, dan bukan hanya menyelam dalam dan
meminta pengguna untuk string, biar eksplisit memberitahu
pengguna apa yang saya harapkan.
Jadi printf ("Masukkan string:"
);
Jadi tidak ada variabel di sini.
Tidak ada tanda-tanda persen.
Hanya kalimat bahasa Inggris yang sederhana.
Sekarang saya pergi ke bawah sini dan jalankan kembali program saya.
Tapi tidak ada yang tampaknya telah berubah.
Kenapa?
Saya harus mengkompilasi ulang itu.
Jadi mudah untuk membuat kesalahan.
Tapi Anda harus tidak hanya menyimpan file tetapi
mengkompilasi ulang program tersebut.
Dan jadi jika saya kembali menjalankan make halo, sekarang dentang berjalan.
Sekarang saya dapat menjalankan / hello.. Dan sekarang saya melihat "Masukkan string:".
Oke.
Sekarang sedikit lebih user-friendly.
Nate, Enter, halo, Nate.
>> Nah, mari kita coba ini lagi dan mulai berpikir
tentang kasus sudut.
Jadi seperti di Scratch, Anda didorong atau sedang
didorong dalam spesifikasi untuk jenis berpikir tentang apa yang bisa
salah jika Anda tidak mengantisipasi semua pengguna mungkin dilakukan.
Bugs, oleh karena itu, mungkin terjadi.
Jadi memasukkan string -
apa kasus sudut sini?
Apa skenario yang saya, programmer, mungkin tidak memiliki
diantisipasi?
Ya.
Oke.
Jadi bagaimana jika saya mengetik di sejumlah seperti ini?
Baiklah.
Jadi itu masih bekerja.
Gramatically tidak masuk akal.
Tapi setidaknya program ini bekerja.
>> Apa kasus lain sudut?
Sesuatu yang saya tidak mengharapkan.
Ya?
Oke.
Jadi kita bisa melakukan sesuatu seperti nomor benar-benar besar.
Jadi mari kita lakukan ini di sini.
Biarkan aku tampilannya keluar untuk kedua, biarkan aku sorot.
Tidak bisa copy dan paste di sini.
Baiklah.
Jadi saya tidak bisa copy dan paste di jendela terminal, sehingga kita akan
hanya mensimulasikan itu.
Biarkan saya zoom out, akan membungkus.
Aku tidak akan melakukan hal ini terlalu lama, karena tidak akan
benar-benar istirahat dalam program ini.
Tapi itu bisa.
Enter.
Tapi itu tidak.
Baiklah.
Tapi itu kasus sudut asli.
Dan satu-satunya alasan yang berperilaku dengan benar, sehingga untuk
berbicara, karena GetString fungsi CS50 sebenarnya
dirancang di bawah kap mesin, seperti yang kita akan lihat dalam beberapa minggu,
untuk secara otomatis mengalokasikan RAM lebih dan lebih, lebih dan lebih
memori dari sistem operasi, ketika menyadari, wow,
Anda benar-benar mengetikkan sesuatu yang cukup panjang.
Sekarang, ini adalah sedikit dari sebuah kebohongan putih.
Jika kita benar-benar berhenti cukup lama dan saya mengetikkan
sesuatu seperti 5 miliar karakter di keyboard
sini, atau benar-benar memukul copy-paste cukup sedikit, kita sangat mungkin
dapat menyebabkan program untuk kecelakaan.
Hanya sedikit lebih keras untuk mensimulasikan bahwa dengan terbatas
jumlah waktu.
>> Apa kasus lain sudut kita bisa mencoba?
Ya?
Ya.
Jadi mengapa kita tidak menjawab apa-apa?
Jadi kita benar-benar harus mengambil beberapa tindakan, karena jika
program akan duduk di sana berkedip sepanjang hari.
Tapi jika aku hanya tekan Enter -
OK, sekarang, masih terlihat salah.
Tidak crash, tapi mungkin sekarang ada kesempatan untuk
mulai menerapkan program yang lebih ketat
yang benar-benar memeriksa.
Dan jika string, kalimat, kata yang saya
mengetik memiliki panjang 0, baik, mungkin aku harus berteriak di
pengguna, atau memberitahu dia untuk memasukkan string lagi, sehingga
kita benar-benar mendapatkan apa yang tampak seperti perilaku yang benar dan tidak
hanya lengkap pengawasan di bagian saya.
>> Pertanyaan di belakang?
Desimal angka.
Jadi kita bisa mencoba itu juga.
1,10000005.
Sepertinya itu akan hanya bekerja benar-benar baik-baik saja.
Dan yang benar-benar diharapkan.
Meskipun kita mungkin telah mengetik angka di sana, atau
jumlah yang lebih besar sebelumnya, menyadari bahwa ketika kita mengetik pengguna
masukan dan kita menggunakan fungsi GetString, tidak
peduli jika apa yang aku mengetik terlihat seperti nomor.
Ingat bahwa menurut ASCII, segala sesuatu pada
Keyboard memiliki nilai numerik yang dapat dipetakan ke
karakter, char.
Jadi dalam hal ini, meskipun saya mungkin mengetikkan angka, yang
komputer akan memikirkan hal itu, sehingga untuk berbicara, sebagai string -
sesuatu yang tampak seperti angka, tetapi
tidak benar-benar nomor.
Tapi itu sebenarnya segue yang sempurna, karena sekarang kita bisa
sebenarnya transisi ke program menulis bahwa
menggunakan jenis data lainnya.
>> Jadi selain menggunakan karakter, atau lebih tepatnya, selain menggunakan string,
menyadari bahwa kita memiliki tipe data lain dalam C maupun di
bahasa lainnya.
Sebuah char, seperti namanya, hanya satu karakter.
Sebuah float adalah nilai floating point, dan itu hanya mewah yang
cara untuk mengatakan sejumlah nyata - sesuatu yang memiliki desimal
titik di dalamnya dengan beberapa nomor ke kiri dan / atau kanan.
Int adalah bilangan bulat, yang hanya nomor seperti 123.
Dan sekarang lebih menarik hal-hal seperti ganda.
Apa yang kita katakan ganda adalah terakhir kali?
Ini 64, benar.
Jadi sementara biasanya pelampung adalah 32-bit -
jadi selama ini di memori, menggunakan 32 angka satu dan nol untuk
mewakili nilai-nilai - ganda secara harfiah dua kali lipat, yang
berarti bahwa Anda dapat mewakili angka yang lebih besar, atau
Anda dapat mewakili angka lebih tepat.
Sehingga Anda dapat memiliki nomor lebih setelah titik desimal, namun
sebagai sesama mengatakan dalam video, bahkan sesuatu yang sederhana
konseptual seperti 1/3 tidak dapat diwakili tepat oleh
komputer, karena pada akhirnya Anda kehabisan bit, dan
Oleh karena itu Anda hanya dapat melakukan .33333333 kali begitu banyak, di
titik mana Anda hanya harus mengatakan aku keluar dari representasi
ruang, saya harus sebut saja sehari dan mewakili
agak imprecisely seperti itu.
Dan lama -
Nama bodoh, tapi itu karena ada tipe data yang dikenal sebagai
panjang di C yang kebetulan sering 32 bit, seperti sebuah
int adalah 32 bit, tetapi lama adalah
umumnya 64 bit.
Jadi itu hanya berarti Anda dapat mewakili besar
angka dari ini.
>> Baiklah.
Jadi jika kita benar-benar ingin memulai mewakili sesuatu, kita
mungkin membutuhkan lebih banyak jenis canggih, dan
itu sebabnya kita memiliki string.
Jadi di perpustakaan CS50, bahwa file bernama cs50.h, kami sudah
sebenarnya menyatakan tipe data, sehingga untuk berbicara, yang disebut string,
tapi string tidak benar-benar ada.
Ini, sekali lagi, salah satu lapisan kita akan mengupas
kembali dalam satu atau dua minggu dan membuangnya, dan benar-benar
melihat di bawah kap mesin apa string sebenarnya, dan
bagaimana hal itu diwakili.
Kami juga akan melihat nilai Boolean.
>> Jadi apa bool dalam konteks Scratch?
Memang benar atau salah.
Jadi itu hanya nilai yang benar atau salah, on atau off, atau 1
0, namun Anda ingin melihat dunia.
Jadi dalam C, berkat perpustakaan CS50, yang pada gilirannya
termasuk perpustakaan lain di bawah tenda, kita memiliki
akses ke tipe data yang disebut bool, yang akan
harfiah memungkinkan kita untuk menetapkan nilai-nilai benar atau palsu
hal dalam sebuah program.
>> Jadi mari kita lanjutkan di sini dan menulis sebuah program kecil yang
melakukan sesuatu yang melibatkan angka bukan.
Jadi biarkan aku kembali ke Appliance CS50, biarkan aku pergi ke depan dan
membuat file baru di sini disebut -
mari kita hanya mengatakan sesuatu yang sederhana, seperti math.c.
Baiklah.
Dan sekarang naik ke atas program saya, saya
akan melakukan yang biasa -
# Include, sehingga saya dapat menggunakan
printf, int main (void) -
kita akan kembali ke, pada akhirnya, apa artinya int
di sini, apa yang berlaku di sini berarti, tapi untuk saat ini, hanya tahu bahwa
Anda harus mulai program seperti ini.
Sekarang aku akan pergi ke depan dan mengatakan sesuatu yang sedikit
berbeda - printf ("Beri aku nomor:"
);.
Lalu aku akan melakukan int n = GetInt, karena
ternyata keluar GetInt adalah fungsi lain di perpustakaan CS50
selain GetString.
Dan sekarang aku akan melakukan sesuatu yang bodoh, seperti "terima kasih
untuk d%, "untuk desimal integer, dan maka n koma, dan
kemudian kembali 0.
Jadi sekali lagi, kembali 0 tidak ada hubungannya dengan jumlah aku
meminta pengguna untuk.
Hanya menandakan pada akhir bahwa semua, mungkin, baik.
>> Jadi biarkan aku pergi ke jendela terminal saya di sini.
Biarkan saya mengetikkan make matematika, masukkan.
Dan sesuatu yang salah.
Membuat matematika tidak bekerja.
Berikut pertama dari pesan kesalahan kami.
Kenapa?
Sedikit samar, tapi -
Ya.
Jadi cs50.h.
Jadi sekali lagi, terutama sejak dini, Anda akan menulis pertama Anda
program untuk pset 1 di bagian dalam jam kerja, dan
terus terang, itu akan menjadi luar biasa kadang-kadang apa hal-hal
sebenarnya mengatakan.
Tapi Anda akan menyadari sangat cepat mereka mulai jatuh
ke dalam ember dimana satu ini berarti bahwa Anda telah meninggalkan dari salah satu
dari # termasuk di bagian atas file.
Dan dentang, compiler, menginformasikan Anda tentang hal ini dengan
mengatakan deklarasi, bukan fancifully, implisit
GetInt fungsi tidak valid.
>> Baiklah.
Jadi apa artinya?
Ini hanya berarti Anda telah secara implisit menyatakan GetInt di
arti bahwa Anda tidak secara eksplisit menyatakan itu.
Secara eksplisit mendeklarasikan int, Anda harus mengajari
Clang bahwa itu ada.
Dan solusi yang sangat sederhana untuk itu adalah untuk mengajar dengan
termasuk file ini lainnya, cs50.h, di
bagian atas file Anda.
Karena secara harfiah, apa yang # include apakah itu memberitahu dentang
cukup banyak untuk pergi mencari file bernama cs50.h, copy,
tempel otomatis ke bagian atas program saya untuk saya,
dan kemudian mengubah kode sumber untuk angka satu dan nol.
Tapi itu jelas akan sangat membosankan jika kita manusia memiliki
untuk pergi menyalin dan menyisipkan file-file besar sepanjang waktu,
jadi # include hanya melakukan semua itu secara otomatis tanpa
mengeruhkan kode saya dengan perpustakaan orang lain.
Dan perpustakaan hanyalah file yang berisi fungsi dan
hal lain yang orang lain telah menulis, bahwa kita
memanfaatkan untuk kepentingan kita sendiri.
>> Baiklah.
Mari kita coba lagi.
Membuat matematika.
Enter.
Baik.
Sehingga tampaknya telah bekerja.
Jadi biarkan aku sekarang menjalankan matematika,. / Matematika.
Masukkan memberi saya nomor, 123.
Terima kasih atas 123.
Sekarang mari kita coba kasus lain sudut.
Sebuah string adalah cukup murah hati, karena
string dapat berupa apa saja.
Dapat terlihat seperti angka, terlihat seperti
karakter, seperti kata-kata.
Tapi int adalah int.
Jadi sekarang kalau aku pengguna sulit, dan itu mengatakan "Beri aku
nomor, "bagaimana jika saya mencoba untuk melakukan sesuatu seperti 0,1?
Nah, itu angka, dan itu konsisten dengan
tata bahasa saya digunakan di sini, tapi di balik kap mesin, saya dari
Tentu saja menggunakan GetInt fungsi.
>> Jadi mari kita lihat apa yang terjadi.
Masukkan, coba lagi.
Baiklah.
Biarkan aku menjadi sulit dan hanya tekan Enter lagi.
Masukkan, Enter.
Jadi sekarang tampaknya GetInt yang sedikit lebih
kuat daripada GetString.
Kami, staf, dilaksanakan sedemikian rupa sehingga jika kita perhatikan
Anda tidak memberi kita sebuah int - dan int adalah angka desimal
mengandung nol, yang, berpasangan, bertiga, merangkak, balita, berenam,
tujuh, delapan, atau sembilan.
Dan itu saja.
Tidak desimal poin, tidak ada karakter, tidak ada tanda baca.
Tampaknya kita harus bekerja sama.
Jadi biarkan aku mencoba empat, lima, enam, dan yang membuat saya melalui.
Jadi benar-benar, untuk menjadi anal sini, saya mungkin harus mengatakan "Beri aku
integer "dalam rangka untuk menyampaikan kepada pengguna
persis apa yang saya inginkan.
>> Sekarang mari kita pikirkan bawah tenda.
Kita tidak akan melihat bagaimana cs50.h diimplementasikan saat ini,
perpustakaan itu.
Tapi jika terus mengatakan coba lagi, coba lagi, coba lagi, apa pemrograman
membangun saya mungkin menggunakan di bawah tenda untuk
menerapkan itu?
Jadi hanya lingkaran, kan?
Salah satu ide sederhana yang kita lihat di Scratch.
The Selamanya membangun, Ulangi membangun.
Agaknya, dalam program ini, di bawah kap, bahkan
meskipun itu ditulis dalam C dan tidak awal, itu melakukan
sesuatu yang disebut setara dengan selamanya jika pengguna belum
diketik dalam integer, katakanlah coba lagi, coba lagi, coba lagi, coba lagi, sehingga
akhirnya ketika kita mendapatkan integer, maka Anda
keluar dari lingkaran itu.
>> Jadi fungsi lain apa yang bisa kita gunakan di sini di perpustakaan CS50 ini?
Nah, jenis yang jelas, setidaknya berdasarkan pada
tipe data yang kita ketahui sekarang ada.
Kami menerapkan GetString, GetInt, tetapi di seluruh
minggu pertama istilah, Anda juga dapat menggunakan GetFloat dan
GetDouble dan GetLongLong untuk mendapatkan tepat
tipe data yang Anda inginkan.
Karena detil kunci di sini adalah bahwa tidak seperti beberapa bahasa,
seperti Python dan Ruby, di mana Anda tidak perlu harus
mendeklarasikan tipe data dari variabel -
Anda tidak perlu memberitahu komputer apa jenis barang
Anda akan dimasukkan ke dalam variabel -
di C, Anda harus pernah begitu tepat.
Jadi jika Anda ingin sebuah variabel yang disebut n, sepotong penyimpanan
bahwa dalam kasus ini terjadi menjadi 32 bit dengan konvensi, Anda
harus memberitahu komputer bahwa bit
akan menyimpan nomor -
bukan karakter, bukan string, bukan pelampung.
Dan ini membahas masalah kita secara efektif
berlari ke pekan lalu.
Jika kita menggunakan angka nol dan angka yang mewakili tidak hanya
nomor tapi As dan B dan C, bagaimana di dunia adalah
komputer akan tahu bahwa pola bit sebenarnya
menunjukkan jumlah 65, sebagai lawan mewakili
huruf A, yang kebetulan, menurut
ASCII, ingat, itu setara dengan 65?
>> Jadi jenis data yang memberikan konteks untuk komputer, sehingga
bahwa ia tahu jika bit harus ditafsirkan sebagai
int atau sebagai string.
Ada pertanyaan, kemudian, pada ini?
Ya?
DAVID J. Malan: Pertanyaan yang bagus.
Jika kita mengambil stdio.h, kita menyimpan file -
biarkan aku pergi ke jendela terminal dan jalankan make matematika, zoom
dan masukkan -
sekarang saya mendapatkan error yang berbeda, karena aku implisit
menyatakan apa yang berfungsi sekarang?
Printf.
Jadi sekarang aku telah membuat masalah baru, yang solusinya adalah
dasarnya sama.
Saya perlu menempatkan kembali itu.
HADIRIN: [Tak terdengar]
DAVID J. Malan: Oh.
Jadi jika saya mengambil -
Oke, yeah.
Jadi jika saya menghapus inklusi I / O standar perpustakaan up
di sini, dan kemudian Anda katakan jika saya menyingkirkan printf, mendapatkan
menyingkirkan printf?
Ya.
Ini harus bekerja, karena aku tidak lagi menggunakan - whoops.
Apakah aku hanya berbaring?
Oh, oke.
Ini tidak akan bekerja karena kesalahan baru kita hanya diperkenalkan.
Dan yang satu ini sedikit lebih jelas.
>> Apa masalahnya?
Terpakai variabel n.
Jadi kesalahan ini adalah hasil dari kami telah dikonfigurasi
alat untuk menjadi sangat bertele-tele, untuk benar-benar berteriak
Anda untuk setiap kesalahan yang mungkin, bahkan jika itu jenis
kesalahan non-fatal seperti ini - itu benar-benar seperti besar
menangani bahwa saya dialokasikan int, menempatkan nomor di dalamnya, dan kemudian
hanya melakukan apa-apa dengan itu?
Jadi secara fungsional, tidak.
Itu tidak akan merusak program.
Hanya saja agak bodoh, kan?
Tidak ada nilai untuk memiliki meminta nomor tersebut, disimpan
dalam variabel, jika Anda tidak akan melakukan apa-apa
dengan itu, apakah mencetaknya atau menyimpannya.
Jadi dalam hal ini, dentang yang mengakui sebanyak, dan
itu mengatakan n variabel yang tidak terpakai.
>> Jadi kita bisa memperbaiki hal ini jika kita benar-benar ingin.
Tapi sekali lagi, ini bukan pemrograman yang baik sekarang.
Jadi aku hanya bisa melakukan ini -
turun di sini, biarkan aku membersihkan layar, membuat matematika.
Yang bekerja.
Sekarang saya bisa menjalankan program matematika saya, mengambil input -
baik, itu buruk.
Membawa masukan, dan itu adalah semua hal ini, dalam kasus ini.
>> Jadi sebenarnya, mari kita coba satu kasus sudut lain yang kita
tidak memikirkan sebelumnya.
Dalam kasus ini - di sini, mari kita kembali ke salah satu yang adalah
sedikit lebih user-friendly.
Biarkan aku pergi kembali ke sini dan jalankan make matematika lagi.
Whoops, apa yang saya lakukan salah?
Harus memutar kembali lebih lanjut.
Oke.
Sekarang kita kembali pada keadaan semula, di mana semua
Mudah-mudahan dengan baik.
Dan sekarang jika saya menjalankan matematika, 123 tampaknya bekerja.
Tapi ini tidak benar-benar bukti yang efektif, hanya mengatakan
oke, yang bekerja.
789, yang bekerja.
Waktu untuk menyerahkan.
Karena ada kasus sudut lain di sini.
Sebuah string tidak benar-benar memberi kita banyak kesulitan dengan mengetikkan
Seluruh banyak karakter.
Tapi bagaimana kalau saya ketik ini?
Menekan nomor 1 jauh, banyak di sini -
baik-baik saja, itu semakin sedikit membosankan, jadi saya akan
berhenti di sini, dan aku akan tekan Enter.
>> Apa yang baru saja terjadi?
Jadi ini sebenarnya dapat dijelaskan.
Jadi waktu yang diperlukan sebagai biner?
Sebuah pikiran yang baik, tapi tidak, itu bukan fakta bahwa itu membawanya
sebagai biner, karena memang, itu hanya semacam
kebetulan.
Kita bisa melakukan ini lagi.
Jadi tidak ada 2 dalam sistem biner, yang
mungkin cukup pula.
Enter.
Jadi itu bukan masalah.
Apa lagi?
Tepat.
>> Jadi pikirkan kembali apa int sebenarnya.
Ini 32 bit yang secara kolektif diinterpretasikan
sebagai angka.
Jika Anda memiliki 32 bit, itu berarti setiap bit dapat
0 atau. 1, 0 atau 1
Jadi itu berarti ada dua kemungkinan untuk sedikit ini,
dua kemungkinan untuk ini, dua kemungkinan untuk ini
bit - jadi itu 2 kali 2 kali -
jadi itu 2 pangkat 32 adalah jumlah total
permutasi dari angka satu dan nol jika Anda memiliki 32
penampung, angka nol atau yang, di depan Anda.
Jadi jika saya memiliki 2 ke 32, secara matematis, itu apa?
Jadi banyak.
Ini 4 miliar, memberi atau mengambil.
Dan 4 miliar tampaknya tidak menjadi apa yang dicetak di sini.
Bahkan, ini tampak lebih dekat dengan 2 miliar.
Tapi ini bukan suatu kebetulan.
Fakta bahwa komputer telah salah menafsirkan jumlah besar saya,
saya besar urutan satu dan kemudian urutan besar saya berpasangan,
sebagai sekitar 2 miliar, dijelaskan bagaimana?
Ada topi pada int.
Ada tentu saja nilai maksimum yang dapat mewakili.
Tapi itu biasanya 4 miliar, kan?
Jika 2 ke 32 adalah sekitar 4 miliar, yang tampaknya seperti
itulah jumlah terbesar.
Jadi bukan sisa, tetapi pikiran yang baik.
Angka negatif.
Jadi jika Anda memiliki 4 miliar hal yang mungkin Anda bisa
mewakili dengan berbagai permutasi dari 32 0s dan
1s, baik, maka bisa dipastikan bahwa kita manusia mungkin ingin
mewakili tidak hanya bilangan bulat positif
namun bilangan bulat negatif.
Dan memang, itulah asumsi bahwa C membuat.
Jadi dengan 32 bit, Anda dapat mewakili sekitar 2 negatif
miliar sepanjang jalan sampai dengan positif 2 miliar.
Dan sehingga dalam kasus ini, apa yang kita benar-benar melihat hanya
pinggiran kapasitas integer kami, dan kami memiliki, sehingga
untuk berbicara, meluap integer.
Kami sudah mencoba untuk menjejalkan bit lebih ke dalamnya daripada benar-benar bisa cocok.
Jadi hasil akhirnya adalah kita pada dasarnya memiliki semua bit 1.
Kami telah membalik semua bit kami, kami sudah mencoba untuk mewakili
jumlah terbesar yang mungkin, tapi itu jelas tidak hampir
cukup besar untuk mewakili dua hal yang saya baru saja diketik masuk
Ya?
HADIRIN: [Tak terdengar]
>> DAVID J. Malan: Pertanyaan yang bagus.
Mengapa kita tidak bisa hanya menyatakan bahwa negatif
menandatangani hanya sebagai karakter?
Jadi kita benar-benar bisa, dan kita kemudian bisa menyelamatkan
sedikit tambahan.
Tapi kau masih akan harus mewakili dasbor itu, dan
yang akan dikenakan biaya setidaknya sesuatu,
mungkin sedikit.
Jadi ya, kita bisa memiliki 32 bit yang digunakan untuk nomor kami, tapi sekarang
kita membutuhkan bit yang digunakan untuk dasbor kami
simbol, tanda minus.
Jadi sekarang kita memiliki 33 bit nilai, yang bisa kita lakukan, tapi itu
hanya tidak cara itu dilakukan.
Kami membuat keputusan beberapa tahun lalu panggilan, 32 bit adalah semacam
satuan ukuran di sini.
Jadi kita akan menggunakan salah satu bit secara efektif
mewakili negatif, dan 31 bit untuk mewakili nomor.
Pertanyaan lain?
Baiklah.
Itu banyak.
Mengapa kita tidak pergi ke depan dan mengambil lima menit kami istirahat di sini?
>> Baiklah.
Jadi sekali lagi, bukan untuk bergantung pada aplikasi matematika
pemrograman, mari kita hanya memetik off satu contoh
sebelum kita pindah ke konstruksi lainnya, hanya karena
akan menggambarkan beberapa poin sandungan umum di beberapa
dasar-dasar ketika datang ke program menulis.
Dalam kasus ini, melakukan ekspresi aritmatika yang memiliki beberapa
menarik relevansi dengan sintaks.
>> Jadi ini hanyalah sebuah rumus yang kita dapat mengkonversi
suhu dari Fahrenheit ke Celsius.
Jika Anda tidak ingat, ini hanya rumus.
Jadi jika kita pasang di Fahrenheit nilai 32 derajat, yang
pembekuan, yang akan menjadi 32 dikurangi 32 adalah 0, dan memang,
0 di Celcius juga beku.
Jadi kewarasan cepat check sana - itu rumus akrab.
Biarkan aku pergi ke alat, meskipun, dan mulai
menulis sebuah program yang disebut, seperti, f2c, "Fahrenheit ke
Celsius dot c ".
Dan sampai di atas sini, aku akan mulai dengan # include
stdio.h, dan aku akan melakukan int main (void), dan
lagi, kami akan kembali di masa depan seperti apa int berarti
ada dan apa yang berarti ada kekosongan.
Dan sekarang biarkan aku pergi ke depan dan menerapkan program yang
pada dasarnya melakukan konversi ini bagi kita.
>> Jadi printf, katakanlah, suhu di Fahrenheit.
Dan kemudian biarkan aku pergi ke depan dan mendapatkan nilai dari pengguna.
Apa nilai yang harus saya dapatkan dari pengguna jika saya ingin
mereka untuk memberikan suhu dalam Fahrenheit?
Ya?
Apa yang akan Anda usulkan?
Ya.
Jadi mengapung terasa cukup masuk akal.
Kami memiliki, sekali lagi, hanya beberapa pilihan yang
kita lihat sejauh ini.
Kami memiliki hal-hal seperti char, pelampung ganda,, int, panjang,
bool, string.
Jadi ini, mengambang terasa cukup masuk akal.
Kita bisa menggunakan hak, ganda, karena jika kita benar-benar ingin
mewakili suhu manusia -
98,60000 -
kita bisa menggunakan 64 bit untuk melakukan itu, tapi rasanya seperti
berlebihan untuk suhu.
Jadi mari kita pergi dengan float.
Sekarang aku butuh variabel.
Hanya untuk menjaga hal-hal sederhana, aku akan menyebutnya f, tapi aku
bisa saja benar menyebutnya suhu,
tapi entah baik-baik saja.
Jadi mengapung f = GetFloat.
Begitu aku sekarang telah memutuskan untuk menggunakan GetFloat, meskipun, saya
perlu membuat satu koreksi.
Ya.
Jadi kita perlu # include , jika compiler adalah
akan berteriak pada kami.
Sekarang saya memiliki pelampung, biarkan aku pergi ke depan dan melakukan
konversi.
>> Jadi pertama, saya juga masuk ke kebiasaan di sini dari
komentar kode saya.
Jadi sekali lagi, komentar hanya notasi ke manusia yang
bukan bagian dari program per se, tetapi satu, membantu Anda
mengerti apa yang Anda lakukan keesokan harinya, atau berikutnya
bulan, itu membantu sesama mengajar Anda mengerti apa yang Anda lakukan
atau apa yang Anda dimaksudkan untuk melakukan, jadi
umumnya sangat baik praktek.
Setiap beberapa baris kode, menulis komentar ke
diri sendiri atau kolega Anda.
Jadi di sini, aku akan mengatakan, "Mintalah pengguna untuk suhu."
Tidak harus berupa kalimat lengkap, hanya kalimat pendek.
Tapi ide di balik komentar di C adalah bahwa setiap Anda
komentar harus memberdayakan Anda - atau, katakanlah, TF atau kolega -
untuk skim program Anda dan tahu persis apa yang dilakukannya, dengan tidak
begitu banyak membaca kode, tetapi dengan membaca komentar, yang
harus ringkas dan jelas.
Baiklah, jadi sekarang biarkan aku pergi ke depan dan berkata, "Mengkonversi
Fahrenheit ke Celsius. "Jadi aku akan pergi ke depan dan melakukan,
katakanlah, mengambang c.
Kami akan terus Celcius sebagai nilai floating point.
>> Dan biarkan aku mengambil bacokan di ini.
Rumusnya adalah, sekali lagi, di sini.
Sebagai 5/9 kali F dikurangi 32.
Jadi mari kita lakukan ini.
Jadi 5 dibagi dengan 9, minus -
whoops, saya mengacaukannya sudah.
Times.
Jadi 5/9 kali F dikurangi 32.
Jadi F dikurangi 32, titik koma.
Dan sekarang, di sini, aku akan pergi ke depan
dan berkata, mencetak hasil.
Dan bagian ini mudah. Printf.
Bagaimana saya pergi tentang mencetak ini?
Nah, saya bisa mengatakan "Itu nomor dalam Celcius adalah% f \ n",
hanya untuk beberapa estetika.
Lalu apa nilai yang ingin saya pasang di sini sebagai yang printf
argumen kedua?
Oke.
Jadi hanya c.
Jadi kita akan mulai dengan ini dan kemudian hanya kembali 0.
Sekali lagi, itu tidak ada hubungannya dengan matematika.
Ini hanya berarti semuanya baik-baik.
>> Sekarang, program ini, yang benar ini?
Baiklah.
Jadi saya sudah membuat beberapa kesalahan.
Bahkan jika Anda tidak tahu apa pemrograman, Anda dapat mengurutkan
punggung menyimpulkan ke sekolah kelas apa
kesalahan di sini mungkin.
Apa salah satu yang pertama?
HADIRIN: [Tak terdengar]
DAVID J. Malan: Ya.
Jadi kita hilang kurung.
Itu sengaja saya lakukan kurung di keynote
geser sini, karena sebenarnya ada gagasan order
operasi, atau didahulukan, dimana operasi tertentu -
perkalian -
memiliki tinggi mengikat, memiliki prioritas lebih tinggi, daripada hal-hal
seperti penambahan atau pengurangan.
Jadi kita sudah melakukan ini selama bertahun-tahun hanya untuk membuat benar-benar jelas
apa operasi matematika harus dilakukan terlebih dahulu.
Jadi saya mungkin harus meniru persis ini.
Jika tidak, komputer mungkin akan mencoba untuk melakukan
sesuatu seperti membagi 5 dengan 9, kemudian kalikan F, kemudian kurangi
32 dari semuanya.
Yang tidak, pada kenyataannya, apa yang ingin kita lakukan.
Jadi mari kita mengurungkan.
Mari kita tambahkan tanda kurung saya di sini, kurung di sini.
Mari kita menempatkan ini di sini.
Di sini, saya hanya melihat satu kesalahan yang kubuat sepanjang jalan.
Ya?
HADIRIN: [Tak terdengar]
>> DAVID J. Malan: Ah.
Baik.
Jadi kita benar-benar memiliki bilangan bulat yang sama
Divisi masalah dari sebelumnya.
Saya benar itu, mari kita lihat apa gejala tersebut.
Tapi kami akan harus memperbaiki satu
lainnya kesalahan di sini.
Ya?
HADIRIN: [Tak terdengar]
DAVID J. Malan: Ya.
Jadi, kesalahan bodoh saya buat, tapi sangat penting.
Komputer tidak akan hanya menutup mata dan membiarkan
saya menggunakan F modal, ketika aku benar-benar mendeklarasikan variabel
sebagai f huruf kecil di sini, di baris 8.
Jadi saya perlu memperbaiki sejalan 11 kapitalisasi saya, dimana
saat lalu adalah F modal oleh kesalahan.
Bagaimana dengan di sini?
Hal ini harus huruf kecil juga?
Seharusnya, tapi itu suatu kebetulan.
Bahwa f% tidak ada hubungannya dengan variabel.
Jadi hanya untuk menjadi super jelas di sini, biarkan aku pergi ke depan dan
mengubah nama ini, sebentar, "suhu." Biarkan saya mengubah nama
ini "suhu." Biar tidak mengubah nama ini.
Karena, sekali lagi, f% secara global berarti, "nilai titik mengambang."
Tidak ada hubungannya dengan variabel saya.
Tapi "suhu" di seluruh tempat ini hanya sedikit bertele-tele,
jadi aku akan kembali ke s huruf kecil saya "f".
>> Sekarang, biarkan aku pergi ke depan ke jendela saya di sini.
Membuat f2c -
yang, sekali lagi, nama saya sewenang-wenang
memberikan ke file ini.
Tampaknya telah disusun.
Biarkan saya menjalankan f2c.
Enter.
Suhu di Fahrenheit - mari kita lakukan yang mudah.
32.
OK, benar.
Tapi, jika saya lakukan sekarang 212 untuk mendidih -
sialan.
Baiklah.
Jadi, jelas tidak benar, jika Anda mencoba TF
setidaknya dua nilai.
Jadi apa masalahnya di sini?
Nah, Anda sudah meletakkan jari Anda pada apa masalah ini.
Tapi kenapa begitu kasus ini?
Sampai di sini, ketika saya melakukan matematika dari 5 dibagi dengan 9.
Jadi secara konseptual, itu sempurna benar.
Benar-benar konsisten dengan rumus.
Namun komputer hanya melakukan persis apa yang Anda
memberitahu mereka untuk melakukannya.
Dan apa yang kita efektif memberitahu komputer di sini adalah
membagi 5 bilangan bulat oleh 9 bilangan bulat
dan memberikan hasilnya.
Masalahnya adalah, meskipun, ketika Anda melakukan pembagian menggunakan data
jenis, output adalah tipe data yang sama sebagai masukan.
Dan jadi jika dua input keduanya ints, output akan
menjadi int.
Dan jadi 5 dibagi dengan 9 adalah sesuatu titik.
Tapi apa bilangan bulat terdekat untuk menunjukkan sesuatu?
Jadi, itu sebenarnya 0.
Jadi seperti yang kita bahas pada hari Senin, semuanya setelah desimal
titik akan terpotong.
Itu hanya akan dibuang.
Jadi ini adalah kesalahan lengkap, karena saya mungkin juga hanya
kalikan dengan apapun di sini 0.
>> Sekarang, saya bisa memperbaiki ini dalam beberapa cara.
Aku bisa melakukan ini.
5.0 dibagi dengan 9.0.
Secara teknis, aku bahkan tidak perlu melakukan itu.
Ini tidak cukup untuk hanya membuat salah satu nomor pelampung -
atau double - dengan menempatkan titik desimal di sini.
Karena apa yang terjadi sekarang adalah ketika Anda membagi integer oleh
pelampung, atau ganda, komputer akan menyadari
oh, salah satunya adalah lebih tepat.
Biarkan aku berbuat salah di sisi memberi Anda lebih presisi dibanding
Anda dimaksudkan.
Sehingga akan mengubah hasilnya -
itu akan mengembalikan hasil sebagai nilai floating point juga.
Sehingga akan bekerja.
Hal ini akan bekerja.
Dan ada satu mekanisme lain yang akan kita lihat pada
lebih detil minggu depan.
Anda benar-benar dapat, sebagai programmer, memberitahu komputer
untuk benar-benar memperlakukan satu tipe data sebagai
olah yang lain.
>> Jadi saya benar-benar bisa melakukan ini.
Dalam kurung, saya dapat mengatakan sesuatu seperti (float), terbuka
paren, paren dekat.
Dan ini adalah apa yang disebut "casting." Sekali lagi, lebih
pada minggu depan.
Tapi ini hanya cara untuk memberitahu program
komputer, ya aku tahu 9 adalah bilangan bulat atau panjang.
Aku tahu itu bukan nilai floating point.
Tapi memperlakukannya seperti itu pula.
Jadi untuk melemparkan tipe data berarti untuk mengkonversi
dari satu ke yang lainnya.
Terus terang, ini hanya sedikit jelek, jadi saya akan mengusulkan kita pergi
kembali ke saran asli hanya mengkonversi
hal-hal yang mengambang point nilai secara manual.
Karena sekarang itu hanya super jelas apa yang terjadi, dan
itu tidak semua yang mengganggu.
>> Sekarang, mari kita kembali ke jendela terminal saya.
Membuat f2c.
Biarkan aku pergi ke depan dan menjalankan ini.
Dan, sebagai samping, Anda bosan mengetik perintah ini
lagi dan lagi, menyadari bahwa komputer, seperti Linux sini,
cenderung cukup pintar.
Dan jika aku memukul Up, kita bisa pergi melalui seluruh sejarah saya
perintah, Atas dan Bawah.
Jadi dalam hal ini di sini, saya hanya bisa pergi Hingga jalankan make f2c.
Aku sedang berteriak, karena saya hanya melakukan itu satu detik yang lalu.
Ini sudah up to date.
Jadi sekarang saya dapat menjalankan f2c lagi.
Mari kita coba 32 Fahrenheit.
Sekarang mari kita coba 212 Fahrenheit.
>> Fiuh.
Tampaknya bekerja.
Sekarang, ini bagus, tapi rasanya agak sewenang-wenang yang
Aku menunjukkan enam angka setelah titik desimal.
Benar?
Jika Anda orang cuaca di TV, kau jenis doofus suatu
jika Anda membaca suhu untuk
ini tingkat presisi.
Jadi mari kita menyederhanakan ini.
Jadi mari kita benar-benar pergi di sini, untuk printf saya.
Dan ya, saya ingin mengapung.
Tapi aku ingin sekarang menentukan presisi.
Dan aku akan menjadi ringkas sedikit.
Aku akan mengatakan, beri saya satu poin setelah tempat desimal.
Jadi daripada mengatakan f%, aku akan mengatakan% .1 f.
Dan ini hanya berarti memberi saya satu posisi
setelah titik desimal.
Baiklah.
Mari kita coba ini lagi.
Biarkan aku kembali menjalankannya setelah kompilasi.
Dan sekarang saya ketik di 32, dan saya mendapatkan kembali
lebih ringkas nilai.
Dan saya dapat mengetikkan, sekarang, 212, dan mendapatkan kembali lebih ringkas
nilai juga.
Dan ada hal lain yang dapat Anda lakukan dengan printf.
Anda benar-benar dapat menentukan berapa lebar nomor harus.
Jika Anda ingin memiliki bantalan di atasnya, sehingga Anda dapat benar-align atau
kiri-align semua nomor atau
mencoba hal pusat.
Jadi menyadari ada sedikit trik yang dapat Anda lakukan di sana.
Tapi mereka hanya mendidih ke kode format,
seperti kita telah ada.
>> Jadi dalam hal ini masalah didahulukan.
Ini adalah meja yang sangat membosankan untuk pergi melalui metodis.
Tapi menyadari bahwa penulis C telah datang dengan
aturan yang menentukan operator memiliki tinggi
didahulukan, lebih banyak kekuatan mengikat, daripada yang lain.
Jadi sedangkan di sekolah dasar, kita umumnya tahu bahwa itu
perkalian dan pembagian, maka penambahan dan pengurangan,
maka beberapa hal lainnya.
Dalam dunia pemrograman, ada banyak
lagi daftar hal-hal.
Dan ini bukan sesuatu yang layak menghafal sekarang.
Anda akan mendapatkan terbiasa untuk itu sebelum lama.
Tapi sama seperti di sekolah dasar, tanda kurung pada umumnya memecahkan
isu diutamakan, dengan membuat super jelas untuk
komputer dan manusia sama apa yang dimaksudkan.
Jadi pertimbangkan ini hanya contekan kecil di sana.
Tapi kebanyakan dari mereka rincian kita tidak akan mendapatkan untuk beberapa waktu.
>> Baiklah.
Sekarang, mari kita membangun dan menjauh dari ini sedikit konyol
contoh matematika.
Masih menggunakan fundamental yang sama, tapi mulai
mengekspresikan diri kita sedikit lebih seperti Scratch.
Jadi dalam Scratch, kami memiliki ekspresi-ekspresi Boolean.
Dan dalam bahasa Inggris, ekspresi Boolean adalah apa?
Benar atau salah.
Ini adalah sesuatu yang mengevaluasi untuk benar atau salah.
1 atau 0.
Hidup atau mati.
Apa pun yang Anda ingin menyebutnya.
Sekarang di Gores, potongan-potongan teka-teki tampak seperti ini.
Dan itulah kombinasi, di bawah sana, dari tiga
teka-teki potongan.
Satu hubungannya -
sesuatu yang kosong dan kosong.
Dan kemudian dua ekspresi Boolean dalamnya.
Jadi Anda dapat sarang ekspresi Boolean untuk mendapatkan lebih banyak
rumit ekspresi Boolean.
Misalnya, jika hari Sabtu, dan itu bagus
Cuaca, kemudian pergi ke luar.
Atau sewenang-wenang seperti itu sesuatu.
Jadi Anda dapat bergabung ekspresi Boolean untuk datang dengan
besar nilai kebenarannya, yang jawabannya didasarkan
pada yang lebih kecil.
>> Sekarang, di C, untungnya, pemetaan ini
sebenarnya cukup sederhana.
Kurung membantu membuat hal-hal yang jelas di sini.
&& Adalah apa artinya "dan." Jadi begitulah
kita akan mengkonversi blok dari Scratch ke C.
Dan untuk kondisi yang kita lihat di Gores, di sisi kiri
sisi ada, saya dapat stack mereka sama di C. Jika x kurang
daripada y, kemudian melakukan ini.
Lain jika x lebih besar dari y, kemudian melakukan ini.
Lain logis mereka harus sama, jadi ucapkan
bahwa mereka adalah sama.
Jadi sekarang kita dapat mulai membangun hal-hal ini.
>> Jadi mari kita lakukan contoh.
Mari saya membuka file yang ada di situs kursus yang
Saya menulis di muka.
Itu disebut nonswitch.c.
Dan kita akan melihat mengapa hanya dalam beberapa saat.
Jadi dalam file ini - nonswitch.c--
pertama kali menyadari bahwa ada sejumlah besar
Komentar di atas.
Itu hanya menjelaskan nama file, apa
tidak, dan sebagainya.
Dan itu tampaknya menunjukkan penggunaan Boolean AND-ing -
conjoining dua ekspresi.
>> Jadi mari kita lihat bagaimana program ini bekerja.
Saya termasuk dua file, cs50.h dan stdio.h.
Jika saya gulir ke bawah, sekarang, untuk program, itu sedikit lebih lama
daripada kita sudah ditulis sebelum, tapi cukup dibaca.
Jadi saya pertama kali mencetak ke pengguna, on line 18,
"Berikan saya sebuah integer antara 1 dan 10." Jadi
yang ada di sana.
Sekarang saya mendapatkan integer.
Tetapi menyadari bahwa GetInt - cukup sederhana.
Ini hanya akan mendapatkan sebuah int.
Ini akan memastikan bahwa itu tidak mendapatkan int dan bukan
string atau pelampung.
Tapi itu tidak akan melakukan apapun pengecekan batas.
Ini tidak akan menyaring angka-angka harus antara
tertentu jangkauan.
Jadi kita harus menerapkan bahwa diri kita sendiri.
Jadi seperti di Scratch, di mana saya bisa melakukan gabungan dari
dua ekspresi, saya bisa melakukan itu di C sebagai berikut.
Jika n lebih besar dari atau sama dengan 1, dan n adalah kurang dari dan
atau sama dengan 3, saya akan sangat sewenang-wenang memutuskan bahwa
nomor untuk menjadi nomor kecil.
Hanya demi sebuah pernyataan.
Lain jika n adalah antara 4 dan 6, cetak "Anda memilih media
nomor. "Lain jika n adalah antara 7 dan 10, cetak" memilih Anda
jumlah yang besar. "Lain print" Anda memilih nomor yang tidak valid. "
Karena secara logika, yang mengikuti jika kita sudah
kelelahan jangkauan kami.
>> Jadi menyadari hal ini tidak cukup bagaimana kita menulis lebih besar atau
sama dengan di kelas matematika.
Benar?
Anda biasanya menarik seperti ini, dengan garis di bawahnya.
Tetapi tidak ada kunci seperti pada keyboard saya.
Jadi simbol dalam C untuk mengekspresikan lebih besar dari atau
sama dengan dua karakter, dan simbol untuk kurang dari
atau sama dengan dua karakter juga.
Baiklah.
Jadi jika saya menjalankan program ini, Anda mungkin bisa menebak apa itu
akan dilakukan.
Jika saya pergi ke depan dan membuat nonswitch, Enter.
Dan kemudian jalankan nonswitch.
Beri aku nomor antara 1 dan 10.
Aku akan memberikannya 11.
Aku mengambil nomor yang tidak valid.
Biarkan aku mencoba nomor 3.
Aku mengambil sejumlah kecil.
Jadi cukup mudah di sana.
>> Bagaimana jika saya ingin mengubah perilaku dari program ini dan
melakukan sesuatu yang sedikit berbeda, bukan?
Biarkan aku pergi ke depan dan mengatakan ini.
Mari saya menyingkirkan semua ini.
Dan biarkan aku mengatakan jika (n == 42).
Dan kemudian aku akan pergi ke depan dan mengatakan cetak "Anda memilih yang
jawaban yang benar. "Lain kita akan pergi ke depan dan berkata,
printf ("Anda memilih
Jawaban salah ");. Oke.
Hanya karena.
>> Sekarang, beberapa poin yang bisa kita lakukan di sini.
Satu, saya tidak ketik simbol yang Anda akan berpikir adalah
paling masuk akal.
Ketika saya ingin memeriksa kesetaraan, ternyata Anda tidak menggunakan
sama tanda.
Anda malah menggunakan tanda sama sama.
Dan mengapa mungkin itu akan, hanya intuitif?
Ya.
HADIRIN: [Tak terdengar]
DAVID J. Malan: Benar.
Tanda sama sudah digunakan untuk tugas.
Seseorang tidak benar-benar berpikir ini melalui.
Dan sekarang, ketika datang ke pengujian kesetaraan, kita harus
lebih eksplisit, dan mengatakan sama sama.
Sebuah kesalahan yang sangat umum adalah untuk melakukan hal ini.
Dan, jika dalam jam kantor atau kadang-kadang minggu depan atau di
berikutnya dua minggu Anda melakukan sesuatu seperti ini dan kemudian
berjuang dengan itu selama 10, 20 menit mencoba untuk mencari tahu
apa bug sialan ini, menyadari bahwa Anda adalah salah satu dari mereka
orang-orang yang membuat kesalahan ini.
Jadi, super mudah untuk membuat.
Tetapi tujuannya sekarang adalah untuk menangkal kesalahan ini.
Ini bisa mengevaluasi, karena apa yang ini benar-benar katakan?
Jika n mendapat 42.
Jadi orang-orang verba digunakan, secara lisan, untuk mengekspresikan
gagasan penugasan adalah "mendapat." Jadi jika n mendapat 42.
Jadi itu berarti menetapkan 42 ke n.
Sekarang saya memiliki ekspresi Boolean dalam tanda kurung,
dalam kondisi ini, nilai yang 42.
Benar?
Karena jika Anda mengevaluasi itu dari dalam ke luar, total
Jawabannya, sekarang, adalah 42.
>> Jadi jika saya meminta Anda pertanyaan, "jika (42)," apa yang
yang benar-benar katakan?
Nah, ekspresi Boolean hanya bisa benar atau salah.
1 atau 0.
Hidup atau mati.
Jadi kita tampaknya memiliki kasus sudut sini, dimana semua dari
tiba-tiba, saya katakan "jika (42)". Itu bukan nilai Boolean.
Jadi apa yang komputer lakukan, meskipun, adalah pada dasarnya menyamakan
sesuatu yang tidak 0 ditafsirkan untuk menjadi kenyataan.
1.
Pada.
Mereka semua setara fungsional.
Hanya nilai 0, atau kata kunci palsu, seperti yang kita akan
akhirnya melihat, sebenarnya palsu.
Jadi "jika (42)" akan benar-benar menjadi kenyataan, karena itu adalah non-nol.
Jadi untuk lebih tepat di sini, nilai Boolean benar-benar tidak begitu
banyak benar atau salah, tetapi untuk ini
kasus, jika adalah 0 atau non-nol.
Jadi palsu atau tidak palsu.
Dan yang memungkinkan kita untuk mencakup semua lebih
kemungkinan dalam ekspresi kurung.
Jadi kita perlu, pernah begitu hati-hati, mengatakan ini -
if (n == 42).
Hanya karena kita perlu menentukan tes kesetaraan,
bukan tugas dari nilai.
>> Apa lagi yang perlu diperhatikan di sini?
Ini kurung kurawal sebenarnya tidak diperlukan.
Aku sudah melakukannya hanya untuk menjadi rewel di sini.
Tetapi bila Anda memiliki kondisi yang hanya memiliki satu baris
kode, seperti kenyamanan, programmer tidak perlu menggunakan
yang keriting kawat gigi.
Itu sudah cukup untuk hanya indent, untuk alasan estetika, dan
kemudian menulis baris kode Anda.
Hanya ketika Anda ingin menulis dua baris kode - untuk
Misalnya, lain printf ("Bye!"). Jika Anda ingin melakukan
itu, ini rusak.
Anda dapat indent semua yang Anda inginkan, tapi fakta bahwa Anda memiliki
mengetik dua baris kode tanpa menggunakan kurung kurawal
berarti bahwa program ini tidak akan berjalan dengan benar atau mungkin
bahkan tidak mengkompilasi benar.
Jadi untuk saat ini, jujur, saya pikir kebiasaan terbaik adalah hanya
menggunakan kurung kurawal, dan Anda akan menemukan bahwa mereka membuat
super jelas apa yang terjadi.
>> Juga, sebagai samping - terutama jika Anda berada di antara mereka yang menggunakan
yang direkomendasikan buku atau sumber daya online -
menyadari bahwa ada gagasan dari gaya dalam
pemrograman.
Dan beberapa orang benar-benar lebih memilih untuk menempatkan tanda kurung kurawal
di sini pada baris.
Sebagian orang memilih untuk melakukan hal-hal konyol,
seperti menempatkan mereka di sini.
Tidak ada jawaban yang salah ketika datang ke
gaya, tapi ini salah.
Tetapi beberapa orang melakukannya.
[TERTAWA]
DAVID J. Malan: Jadi saya menyebutkan ini sekarang, hanya karena sebagai
Anda membaca tentang hal-hal di buku atau online, Anda akan mendapatkan
berbeda pesan dari guru yang berbeda dan
penulis yang berbeda.
Dan hanya menyadari bahwa, fungsional, mereka
umumnya setara, tapi konsisten.
Jadi dalam hal ini, kita akan standarisasi pada keriting
kawat gigi berbaris di sini di sebelah kiri.
>> Baiklah.
Jadi mari kita lanjutkan sekarang dan menjalankan ini, dan melihat apa yang terjadi
dengan program ini.
Membuat nonswitch.
Kemudian jalankan nonswitch.
Berikan saya sebuah integer antara 0 dan - jadi itu tidak relevan
lagi, tapi aku hanya akan sewenang-wenang katakan 42.
Dan saya memilih jawaban yang tepat.
Nah sekarang, mari kita benar-benar mengambil ini dalam arah yang berbeda.
Ternyata ada beberapa sintaks lain kita
dapat digunakan dalam program.
Berikut sepotong baru sintaks yang secara fungsional sama,
tetapi hanya memperkenalkan cara lain untuk mengekspresikan diri kita sendiri.
Jadi ini adalah apa yang disebut "pernyataan switch." Dan
pernyataan switch beroperasi sebagai berikut.
Dibutuhkan, dalam tanda kurung, nilai yang ingin Anda
"Saklar" on.
Anda ingin berperilaku berbeda berdasarkan nilainya.
Jadi ini berarti beralih pada nilai n.
Dan apa artinya ini?
Nah, jika n adalah 1 atau 2 atau 3, pergi ke depan dan mencetak "Kau
mengambil sejumlah besar "dan kemudian istirahat.
Alasan untuk istirahat adalah bahwa cara kerjanya adalah sebagai C
Begitu ia menemukan kasus yang cocok, ia mulai melaksanakan
semua kode di bawahnya.
Jadi jika saya memiliki satu baris kode, seperti yang saya lakukan di sini pada baris 27, hal itu
dijalankan.
Jika saya menambahkan baris lain di sini, itu akan dieksekusi.
Baris lain di sini, itu akan dieksekusi.
Program ini hanya berhenti melaksanakan apa yang di bawah
Kasus berlaku pernyataan ketika saya tandasnya
mengatakan "istirahat." Begitu salah.
Benar, dalam hal ini, sebagai hasilnya.
Kasus 4 atau 5 atau 6, sama, akan
untuk mencetak pesan.
Dalam hal ini angka, menengah.
Istirahat.
Kasus 7, 8, 9, 10, itu akan mencetak "Kau memilih besar
nomor "Break..
Dan kemudian ada harfiah kata kunci yang disebut "default"
itu efektif seperti "lain" membangun.
Jadi baru sintaks, namun secara intelektual,
tidak ada sama sekali di sini baru.
Ini seperti Scratch tersebut.
Jika, else if, else if, semacam blok.
>> Jadi itulah versi beralih dari program ini.
Tapi perhatikan bahwa kita melakukannya dengan angka di sini.
Mari saya membuka versi kedua, hanya untuk menunjukkan
sedikit lebih sesuatu yang konkret.
Jadi di sini kita memiliki nilai sebagai gantinya.
Ternyata Anda dapat menggunakan switch tidak hanya pada bilangan bulat, tetapi pada
karakter.
Tidak di semua jenis data, tapi setidaknya pada karakter.
Jadi di sini, kita bisa melakukan sesuatu seperti jika nilai C yang
pengguna mengetik, di baris 19, dengan menggunakan fungsi getchar,
adalah modal A atau huruf kecil, mari kita mengartikannya sebagai sebuah kelas,
dan mengatakan mereka memilih sebuah kelas yang sangat baik.
Dan turun sepanjang pernyataan switch, yang kita miliki lainnya
kasus untuk "B" s dan "C" s, dan sebagainya.
Tapi mari kita sekarang melengkapi satu hal lainnya.
Dan lagi, jenis terbang melalui
beberapa contoh.
Tapi itu benar-benar sehingga kita bisa menerapkannya, sekarang -
atau benar-benar, hanya menerjemahkan mereka sekarang -
C.
>> Jadi biarkan aku pergi ke depan dan melakukan hal ini.
Aku akan membuka file baru.
Dan aku akan melakukan include.
Dan kemudian aku akan melakukan int main (void).
Biarkan saya menyimpan file ini sebagai suatu loop.c.
Hanya sebagai contoh.
Dan aku akan pergi ke depan dan lakukan hal berikut.
Saya ingin menulis sebuah program yang sangat membosankan.
Jadi 10.
Mari kita lakukan ini.
9.
Baiklah.
Segera setelah Anda mulai melakukan hal ini dalam pemrograman, Anda
mungkin melakukan sesuatu yang salah.
Tapi kita akan mulai dari sana pula.
Ups.
Itu benar-benar salah.
7.
6.
5.
4.
Tidak ada yang akan terjadi ketika kita sampai ke 0.
3.
2.
1.
Oke.
0.
Hapus.
>> Baiklah.
Jadi kembali 0.
Jadi program ini yang jelas akan melakukan apa yang sangat
tediously mengatakan itu akan dilakukan.
Ini akan mencetak semua dari mereka
nilai-nilai, dari atas ke bawah.
Jadi biarkan aku lakukan membuat lingkaran.
Dan kemudian - whoops.
Membuat loop.
Aku berada di direktori yang salah.
Dan sekarang biarkan aku menjalankan loop.
Enter.
Woohoo.
Sangat bagus.
Program yang bagus, panjang.
>> Baiklah, tapi sekarang mari kita lakukan ini lebih baik.
Sama seperti di Scratch, ketika Anda mulai menggunakan looping
membangun, bukan hanya menyalin dan menyisipkan semua
potongan puzzle, izinkan saya memperkenalkan hal ini.
Jadi di C, ada konstruksi perulangan berbagai,
salah satunya terlihat seperti ini.
A "untuk" loop memiliki tiga hal, dipisahkan oleh dua titik koma.
Dan kemudian, dalam tubuh loop, sehingga untuk berbicara - yang
hal dalam kurung kurawal -
kita bisa melakukan sesuatu lagi dan lagi.
Jadi apa yang saya miliki di sini di layar, ini
benar-benar hanya komentar.
The / / berarti di sini datang komentar.
Ini bukan kode.
Ini hanya deskripsi bahasa Inggris, bagi saya, manusia.
>> Jadi inisialisasi, kondisi, dan update.
Nah, mari kita lihat bagaimana ini bekerja.
Hal ini memungkinkan saya untuk menulis ulang program ini sebagai berikut.
Untuk -
jadi di sini datang loop saya -
int i -
di sini datang sebuah variabel yang disebut "i" -
akan diinisialisasi ke 10.
Jadi ada inisialisasi saya.
Saya ingin melakukan loop ini asalkan "i" lebih besar dari atau
sama dengan 0.
Dan pada setiap iterasi dari loop ini, saya ingin
untuk melakukan i -.
Jadi kita melihat + + pada Senin.
- Adalah sebaliknya.
Ini decrements nilai dengan 1.
Di dalam loop ini, saya ingin benar-benar melakukan sesuatu.
Jadi aku akan mengatakan sesuatu seperti printf.
Saya tidak ingin mengatakan 10 sekarang, karena ini jelas hanya
akan mencetak nilai yang sama.
Apa yang saya ingin mencetak sebaliknya, mungkin?
Ya.
Jadi "i." Jadi% d, i.
>> Jadi aku akan mencuri salah satu ide dari sebelumnya -
ini substitusi untuk kode format -
dan kemudian turun di sini, di bagian bawah, aku akan kembali 0, hanya
untuk mengukur baik.
Tapi sekarang, saya memiliki program lebih ringkas.
Ini hanya beberapa baris, dan bukan 10 atau 11 baris.
Biarkan aku pergi ke prompt saya di sini.
Remake loop.
Memutarkan loop.
Dan tampaknya menjadi sama.
Sekarang, program ini ada lebih menarik.
Tapi sekarang saya bisa mengetik sesuatu seperti ini.
Saya bisa mengubah ini untuk 100.
Saya kemudian bisa mengkompilasi ulang program saya.
Dan kemudian saya dapat kembali menjalankan program saya.
Dan sekarang ia pergi super cepat pada komputer saat ini.
Tapi ada saya -
dan benar-benar, penyangga scrollback saya tidak
bahkan pergi sejauh itu.
Di sana kami pergi.
Jadi ada kita memiliki semua 100.
Tapi itu mudah untuk membuat kesalahan di sini.
Apa yang akan menjadi perilaku yang diharapkan jika saya
sengaja melakukan itu?
Jadi rasanya seperti tak terbatas.
Jadi mari kita lihat apakah komputer berperilaku.
>> Jadi biarkan aku pergi ke depan dan membuat lingkaran.
Dan biarkan aku menjalankan loop.
Jadi mari kita kembali ke yang hanya dalam beberapa saat.
Kami akan membiarkan menjalankan itu.
Karena apa yang harus kita menghitung sampai, minimal?
Mungkin setidaknya 2 miliar, jika kita memiliki banyak bit, dan
kita menggunakan nilai-nilai positif.
Jadi mari kita melompat kembali ke sini.
Selain jenis loop, kita memiliki apa yang disebut sementara
loop. Jadi, seperti dalam Scratch, Anda memiliki Selamanya
blok, dan Anda memiliki blok Ulangi.
Demikian pula, di C, Anda hanya punya cara lain
untuk mengekspresikan diri.
Jadi Anda memiliki gagasan while loop yang memungkinkan Anda untuk
mengekspresikan diri sedikit berbeda.
Dan kemudian Anda memiliki sesuatu yang disebut loop do-while,
yang beroperasi sedikit berbeda juga.
Dan kita akan menggoda ini terpisah dari waktu ke waktu.
>> Tapi mari kita lihat ini yang terakhir di sini.
Jika kita pergi ke -
masih berjalan.
Hal ini cukup terbatas.
Jadi biarkan aku pergi ke positif, dan menunjukkan bagaimana kita dapat benar-benar
mengatur input pengguna sedikit lebih efektif.
Ini adalah program yang cukup singkat.
Dan di sini kita miliki, di utama, sebuah deklarasi int n.
Jadi memberi saya sebuah variabel yang disebut n. Sekarang, saya benar-benar mengatakan
"Lakukan." Dan kemudian aku punya terbuka keriting
penjepit, penjepit keriting dekat.
Dan kemudian perhatikan, setelah itu, ia mengatakan sedangkan n
kurang dari 1.
Jadi perhatikan bahwa garis -
19 sampai 24 -
menulis kolektif loop do-while.
Dan lagi, sintaks baru, bukan ide baru.
Ini hanya cara lain untuk perulangan, sintaksis.
Jadi apa ini lakukan?
Lakukan hal berikut saat n kurang dari 1.
Jadi apa yang saya ingin lakukan?
Saya menuntut bahwa Anda memberi saya bilangan bulat positif.
Lalu aku benar-benar mencoba untuk mendapatkan integer dari pengguna.
Tapi dalam hal urutan operasi di sini, karena
sementara kondisinya di sini, saya kemudian akan memeriksa, adalah n
kurang dari 1?
Jadi misalkan bahwa pengguna -
setelah dituntut dengan cara ini -
jenis dalam nilai 0.
Kondisi ini akan menjadi benar atau salah?
Yah, itu benar-benar akan menjadi kenyataan.
Karena n adalah 0, dan 0 adalah kurang dari 1.
Jadi, apa itu berarti?
Lakukan lagi.
Hanya sekali kondisi yang mengevaluasi ke false.
Jika saya ketik di 42.
Yah tidak, 42 ​​tidak kurang dari 1.
Oleh karena itu loop ini dilakukan mengeksekusi.
Dan sehingga pada saat itu, program ini akan mengatakan, terima kasih untuk
42, dalam kasus ini.
Sekarang bahwa Anda memiliki cara untuk mengekspresikan diri -
Kita tidak harus menunggu untuk ini untuk menyelesaikan.
Ini akan memakan waktu.
Untuk dilanjutkan lain kali, mungkin.
>> Tapi sekarang, Anda memiliki kemampuan untuk mudah-mudahan untuk memahami
sedikit humor geek.
Permintaan maaf.
Ini tidak mewakili humor dalam ilmu komputer
dunia, tapi itu lucu.
[LAUGHS] Mari kita berakhir pada catatan itu.
Dan kita akan melihat Anda pada hari Senin.
[Tepuk Tangan]