>> [Bermain muzik]
>> DAVID MALAN: Baiklah.
Selamat kembali.
Ini adalah CS50, dan ini adalah Minggu Satu, berterusan.
Jadi salah satu daripada sebab-sebab kita telah lulus teknologi-teknologi seperti
Google Kaca adalah bahawa mereka datang dengan sesuatu yang dikenali sebagai API, sebuah
Permohonan Pengaturcaraan Antaramuka.
Dan apakah ini bermakna bahawa dengan fail yang betul dan dengan hak
dokumentasi, anda benar-benar boleh menulis perisian untuk peranti walaupun seperti ini.
>> Dan supaya apa yang kita ada di dalam fikiran ke arah semester akhir, jika projek
melibatkan, mengatakan, Google Kaca mungkin rayuan, kita akan melihat apa yang boleh kita lakukan dalam
segi hooking anda dengan beberapa perkakasan loaner serta
API awam diakses supaya anda boleh sebenarnya mula mencipta perisian
yang berjalan di Google Glass sama.
>> Peranti lain yang kita telah bermain dengan akhir-akhir ini yang kita fikir mungkin
bersenang-senang di akhir semester adalah perkara ini sedikit di sini.
Ia dipanggil Usul Leap, dan apa yang anda kira-kira untuk melihat secara teknikal yang
iklan untuk peranti, tetapi ia tidak bercakap dengan apa yang khusus ini
peranti mampu.
Dan ia juga datang dengan API melalui yang anda boleh menulis perisian untuk
mengawal komputer anda sendiri dengan cara yang agak suka filem ini satu minit di sini.
>> [MAIN SEMULA VIDEO]
>> [AKHIR VIDEO MAIN SEMULA]
>> Jadi sekarang, peranti ini berlaku kepada dilaksanakan sebagai USB sedikit
penyambung yang anda boleh dimasukkan ke dalam anda komputer, tetapi saya tidak akan terkejut
jika sebelum lama kita mempunyai jenis-jenis teknologi dalam kumpulan seterusnya PC
dan Mac supaya anda boleh, sesungguhnya, berinteraksi dengan dalam
cara seperti itu.
Malah, apa yang saya fikir saya akan lakukan, juga, adalah Saya ditarik ke atas satu demonstrasi kecil
program yang datang dengan perisian ini.
Jadi, saya telah meletakkan sensor kecil di hadapan komputer riba saya.
>> Dan seperti yang anda lihat, ia telah menyedari yang tangan saya ada
mengawal ia.
Dan semua permohonan ini adalah tidak dgn perkara-perkara kecil seperti ini.
Tetapi, anda boleh melihat bahawa, sesungguhnya, Saya mempunyai lima jari di sana.
Jika kita boleh mendapatkan untuk melakukan semua 10, anda boleh bayangkan piano kemas
permohonan atau sebagainya.
Jadi, jika anda ingin datang selepas kelas hari ini dan bermain dengan itu sebagai
Selain itu, anda dialu-alukan untuk.
Jadi lebih pada itu ke arah akhir semester.
>> Jadi beberapa pentadbiran pengumuman.
Satu, melakukan bahagian dengan Jumaat ini pada tengah hari di cs60.net/section.
Itu URL adalah pada kursus yang laman web juga.
Dalam pada itu, walaupun, supersections akan debut Ahad ini.
Supersections adalah satu perkara yang satu masa, kerana ia membawa kita sedikit masa untuk bekerja
siapa yang dalam yang seksyen dan di mana.
>> Jadi Ahad akan datang ini, akan menjadi salah satu bahagian untuk mereka yang kurang selesa,
satu bahagian untuk mereka lebih selesa.
Dan orang-orang di antara kamu di suatu tempat di antara dialu-alukan untuk pergi ke
salah satu atau kedua-duanya atau tidak.
Kedua-dua ini akan difilemkan.
Mereka akan berada di dalam auditorium yang lebih besar daripada bahagian yang biasanya akan masuk
Tetapi matlamat di sini adalah untuk melengkapkan anda dengan beberapa keselesaan dengan masalah menetapkan satu,
dengan C, dengan perkakas CS50, ini hujung minggu, walaupun sebelum anda mengetahui anda
seksyen formal tugasan.
Jadi, anda akan bertemu TF anda dan yang lebih kecil anda kumpulan sectionmates dalam kira-kira
masa seminggu.
>> Waktu pejabat, Sementara itu, telah berlaku.
Adakah mengambil kesempatan daripada mereka malam ini atau malam esok jika anda ingin.
Set Masalah 0 adalah disebabkan pada hari Jumaat.
Ini adalah hari yang lewat daripada kerap-dijadualkan Khamis.
Tetapi dengan set masalah 1, anda akan melihat bahawa ia termasuk beberapa memanaskan badan
latihan yang anda sendiri anda boleh melanjutkan
Khamis Tarikh akhir Jumaat.
Set Masalah 1 Sementara itu, akan debut di laman web kursus yang akan datang
Friday, jika anda ingin untuk melenting dengan ia seperti yang saya lakukan satu ketika dahulu lewat
Malam Jumaat di dalam bilik anda.
>> Jadi cs50.net/appliance adalah tempat di mana anda boleh mendapatkan perkakas CS50
kita mula menggunakan pada hari Isnin.
Kami akan menggunakan ia sedikit lebih hari ini.
Tetapi yakinlah bahawa masalah set 1 spesifikasi akan berjalan anda melalui
tepat langkah-langkah yang perlu untuk mendapatkan dan berjalan.
Jadi jangan bimbang melakukan bahawa sebelum Pset 1 jika anda lebih suka tidak.
>> Baiklah.
Jadi kita melihat pada hari Isnin di kod sumber, tetapi dalam konteks yang baru
bahasa pengaturcaraan, iaitu C. Dan C, tidak seperti Awal, bukan grafik.
Ia tidak teka-teki keping.
Ia lebih bahasa Inggeris seperti sintaksis.
Dan ada beberapa langkah yang terlibat dalam sebenarnya menulis dan menjalankan
program dalam C, kerana selain sumber kod seperti ini, anda memerlukan sesuatu
dipanggil pengkompil.
Dan dari segi orang biasa itu, apa tidak pengkompil lakukan untuk kami?
Yeah.
>> PELAJAR: Ia menukarkan kod bahawa anda menulis kepada 0 dan 1s.
>> DAVID MALAN: Baik.
Jadi ia menukarkan kod yang kita menulis kepada 0 dan 1s.
Ia menukarkan dipanggil kod sumber untuk kod objek, kedua yang kelihatan
sesuatu yang kecil seperti ini.
Dan ia CPU anda, otak dalam komputer anda, bahawa kerana
orang yang mencipta mereka komputer, tahu apa yang mereka urutan
min 0 dan 1s.
>> Mungkin ia bermakna cetak.
Mungkin ia bermakna tambahan.
Mungkin ia bermakna penolakan.
Mungkin ia bermakna memaparkan grafik.
Terdapat corak yang telah ditetapkan bit bahawa dunia telah memutuskan bermakna
perkara-perkara tertentu.
Tetapi bagi sebahagian yang paling dalam kursus ini, kita akan bekerja pada tahap yang lebih tinggi, dan
kita akan mengambil mudah bahawa wujud perkara-perkara seperti penyusun yang boleh
membuat fungsi kod sumber kami dalam cara kita berniat.
>> Jadi program ini kita menulis pertama minggu lalu dan kemudian mula port, jadi untuk
berucap, C lepas ini Monday, adalah ini.
Apabila bendera hijau klik, bertanya khabar.
Ini, sudah tentu, ditulis dalam Scratch.
Dan saya mendakwa bahawa bersamaan program dalam C kelihatan sedikit
sesuatu seperti ini.
>> Jadi apa yang saya fikir kita akan lakukan pada mulanya ialah, mari kita mengusik selain apa yang kelihatan, pada mulanya
pandangan, diakui, kerana agak batin sintaksis, tetapi anda akan mula notis
corak agak cepat.
Apa yang kita juga akan lakukan hari ini ialah menyediakan anda dengan model mental untuk beberapa
berkanun, beberapa membina standard dalam pengaturcaraan.
Dan kemudian kita benar-benar akan mendapatkan tangan kita kotor dengan beberapa contoh juga.
>> Jadi bagi orang-orang yang anda lebih selesa, menyedari bahawa minggu ini dan kemudian seterusnya
minggu dengan baik boleh menjadi sedikit kajian.
Tetapi terutama apabila edisi penggodam masalah 1 set keluar pada
kursus laman web pada hari Jumaat, saya berfikir anda akan mendapati bahawa walaupun anda mengisi
beberapa kosong selama minggu depan atau dua, anda akan mula mendapat yang lebih
mencabar dan menghadapi sesuatu yang baru dan baru.
>> Jadi mari kita mengusik program ini selain beberapa baris pada satu masa.
Di bahagian paling atas, kita mempunyai apa yang teknikal dipanggil
arahan prapemproses.
Ini hanyalah satu baris kod yang mengatakan untuk memasukkan kandungan fail,
dipanggil standard I / N, input standard - atau, maaf, standard I / O, standard
input / output. h, di dalam program saya sendiri.
>> Jadi, dalam erti kata lain, jika saya menulis ini program dengan editor teks yang mudah seperti
gedit, bersamaan lebih mudah daripada sesuatu seperti Microsoft Word, yang
arahan # include stdio.h, hanya akan memberitahu pengkompil, merebut
kandungan fail yang lain, stdio.h, dan tampal di sini.
>> Sekarang, mengapa saya penjagaan?
Apa yang kita dakwa di dalam fail ini dipanggil stdio.h, yang disimpan
di suatu tempat pada cakera keras saya, atau dalam kes, di suatu tempat di dalam perkakas CS50?
Orang lain meletakkan di sana untuk saya.
Tetapi apa yang di dalamnya?
>> Ya, maka ia adalah satu pengisytiharan fungsi printf dipanggil.
Jadi printf mengimbas kembali fungsi yang memaparkan kata-kata dan huruf dan
nombor pada skrin pada bidaan saya.
Tetapi saya tidak menulisnya.
CS50 tidak menulisnya.
Seseorang tahun lalu menulis, dan mereka dasarnya memberikan kita resipi untuk ia
dalam fail yang dipanggil stdio.h.
Supaya baris pertama hanya memberikan saya akses kepada fungsi-fungsi yang orang lain
menulis tahun lalu, di kalangan yang printf.
>> Sekarang, baris seterusnya saya akan melambai saya tangan di, sekurang-kurangnya sehingga minggu depan.
Tetapi untuk sekarang, tahu bahawa int utama (tidak sah) adalah dasarnya bersamaan ini
sekeping teka-teki kuning apabila bendera hijau diklik.
Dunia, tahun lalu, memutuskan bahawa jika anda menulis program dalam
bahasa yang dikenali sebagai C, anda mula program anda dengan garis
yang kelihatan seperti itu.
Dalam masa hanya kira-kira seminggu, ia akan membuat rasa apa int, apa yang tidak sah adalah.
Tetapi untuk sekarang, hanya memikirkan ia kerana ini sekeping teka-teki kuning.
>> Sekarang akan datang, kita perlu bersedia kerinting diikuti oleh yang lain bersedia kerinting rapat,
jadi untuk bercakap.
Dan kita akan melihat ini sepanjang program dalam C, serta
JavaScript dan PHP.
Dan ini hanya merangkumi garisan yang berkaitan dengan kod.
Kerinting bersedia terbuka dasarnya berkata, di sini datang beberapa kod.
Dan bersedia kerinting tertutup, yang merupakan bersudut ke arah yang lain, hanya
cara, itu sahaja untuk kod yang berkaitan.
>> Jadi garis berair dalam pertama program adalah yang terakhir, printf,
quote-unquote, hello dunia.
Dan saya dipanggil perkara antara sebut apa masa lepas?
Jadi ia adalah rentetan.
Dan rentetan hanya techie yang panjang bagi urutan
watak-watak, perkataan, frasa.
Walaupun satu huruf boleh boleh double dipetik.
Tetapi ia adalah satu urutan sifar atau lebih watak-watak.
>> Garis sendeng terbalik-n, walaupun, kelihatan agak pelik.
Tetapi ia hanya bermakna sesuatu mudah untuk komputer.
Apa backslash-n?
Barisan baru.
Jadi itu hanya urutan khas watak-watak yang dunia telah memutuskan
cara meletakkan satu baris di sana, kerana pengkompil sebenarnya akan mendapat
keliru, biasanya, jika anda, sangat difahami, tetapi tidak betul, hanya
mula memukul Masukkan meletakkan baris baru dalam kod anda.
Anda perlu lebih sedikit jelas dengan garis sendeng terbalik-n.
>> Dan kita akan melihat ada beberapa yang lain seperti corak untuk aksara khas.
Sebagai contoh, jika anda mahu untuk membiarkan anda fikiran merayau kepada kes sudut,
menganggap bahawa saya mahu untuk mencetak petikan berganda pada skrin untuk
apa-apa sebab, yang akan seolah-olah menjadi sedikit bermasalah, bukan?
Kerana jika saya meletakkan petikan berganda dalam tengah-tengah "hello, dunia," untuk apa-apa
sebab, mengapa yang kelihatan berpotensi bermasalah?
Ia pecah tali.
>> Pengkompil hanya program.
Satu program seperti pengkompil hanya akan membaca atas kod anda ke bawah,
kiri ke kanan.
Dan jika melihat tiga petikan berganda bukannya dua, ia tidak akan tahu
jika anda bermakna bahawa perkara yang kiri harus tali, atau perkara yang perlu
yang betul, atau segala-galanya.
Ia adalah samar-samar, dan jadi apa yang biasa pengkompil akan lakukan adalah hanya aneh keluar,
dan memberikan anda beberapa mesej ralat, dan membuat anda menangani masalah tersebut.
>> Jadi memandangkan backslash-n bermakna baru line, apa yang akan naluri anda sekarang
mula jika anda mahu termasuk sesuatu yang ganjil seperti dua
memetik dalam ini sebaliknya dipetik rentetan?
Quote garis sendeng terbalik-double.
Dan dengan itu kita akan melihat ini jenis corak juga.
>> Jika anda mahu melakukan sesuatu yang sedikit pelik, anda akan mendapati bahawa
penyelesaian yang sering mengikuti corak, dan garis sendeng terbalik di
menandakan urutan melarikan diri.
Dan ia hanya bermaksud sesuatu yang istimewa bahawa kita perlu untuk mewakili dalam
cara yang berbeza.
Adapun bagaimana anda mewakili backslash, baik, kami akan
kembali kepada itu.
Tetapi jawapan itu juga, sebenarnya agak jelas.
>> Jadi mari kita kini memperkenalkan beberapa lain membina pengaturcaraan
yang anda lihat dalam Scratch.
Anda mungkin telah diambil untuk diberikan pun jika anda sudah menyelam ke
masalah set 0.
Tetapi mari kita kini memperkenalkan sintaks dalam C bagi sebaliknya agak intuitif
idea-idea, sekurang-kurangnya sebahagian daripada mereka.
>> Jadi tanggapan ini keadaan atau cawangan, sedangkan sebelum ini kita
diwakili dengan kod yang kelihatan seperti ini di sebelah kiri dalam Scratch -
jika x adalah kurang daripada y, maka berkata demikian -
sebaliknya kini C - biarlah saya mengasah di atas mana-mana yang mudah -
kita hanya akan berkata, jika, membuka kurung, sesuatu yang benar - satu
Ungkapan Boolean akan pergi di mana saya telah berkata keadaan -
kurungan rapat, maka apa yang dalam orang-orang pendakap kerinting.
>> Jadi di sini, juga, pendakap kerinting adalah jenis seperti itu Scratch
Kepingan teka-teki berbentuk U.
Adakah apa yang di dalam ini pendakap kerinting.
Dalam kes ini, mengurangkan mengurangkan.
Dan notis ini ke hadapan mengurangkan, tidak backslash a.
Italik, italik, bagi mereka yang telah diprogramkan
sebelum ini, hanya bermaksud -
ia hanya komen.
Komen bukanlah garis kod, per se.
Ia adalah satu garis Bahasa Inggeris yang anda, manusia, telah menulis kepada diri sendiri untuk
mungkin mengingatkan anda untuk melakukan sesuatu, untuk menjelaskan kepada diri sendiri, untuk menerangkan kepada
orang lain, apa kod anda lakukan.
Ia hanya satu komen deskriptif.
>> Kini, sudah tentu, kita boleh mempunyai cara dua garpu di jalan raya hanya dengan melakukan ini,
tiga cara garpu di jalan raya dengan melakukan ini, dan jika anda terus ini
corak, anda boleh mempunyai empat cara, lima cara, enam cara garpu di jalan raya jika
anda perlu untuk mengendalikan, sesungguhnya, bahawa keadaan banyak.
Dan kemudian melihat keselarian di sini -
jika (keadaan), lain jika (keadaan), dan hanya satu yang sedikit
aneh adalah yang terakhir, yang hanya itu yang lain.
Tetapi sekali lagi, ini adalah sama, konsep, dengan apa yang kita lakukan
sudah, walaupun sintaks akan mengambil sedikit untuk membiasakan diri.
>> Sekarang, dalam contoh ini, terdapat beberapa sintaks pelik yang lain.
Kita melihat printf lagi, kurungan terbuka, dan kurung dekat.
Dan di dalam terdapat tali dipetik.
Kurungan, dalam konteks daripada printf, pergi di sebelah kiri
dan kanan apa?
Apa yang kita menggambarkan yang dipetik tali sebagai lebih umum?
>> Jadi ia adalah hujah.
Mana-mana masa yang anda perlu fungsi, seperti printf, dan kemudian paren terbuka dan
paren rapat dan sesuatu yang di dalam , sama ada ia adalah rentetan, atau
integer, atau apa-apa lagi, perkara di antara orang-orang kurungan dipanggil
pertengkaran.
>> Dan hujah hanya mempengaruhi tingkah laku fungsi ini.
Dalam kes ini, ia cukup jelas bagaimana.
x <y adalah apa yang sedang berlalu dalam, boleh dikatakan, sebagai hujah.
Dan printf akan mencetak tepat.
Kerana sesungguhnya, tahun-tahun orang yang lalu yang dilaksanakan printf tidak tahu
apa yang kita manusia adalah pengganti akan menggunakan printf untuk.
Jadi itulah sebabnya hujah wujud, mempengaruhi tingkah laku selepas majlis itu
telah ditulis.
>> Sekarang, ungkapan Boolean.
Kami telah melihat ini sebelum di calar.
Ternyata dalam C anda juga boleh "atau" mereka bersama-sama, jadi untuk bercakap.
Dua bar menegak bermakna blok ini kod, ini melakukan ini, akan
melaksanakan jika keadaan yang pertama adalah benar atau keadaan yang kedua adalah benar.
Dan walaupun anda mungkin tidak dilakukan ini Awal, anda boleh benar-benar
melakukan ini dengan Awal, Dan anda juga boleh meluahkan diri anda berbeza -
jika keadaan yang pertama dan kedua keadaan adalah benar, maka apa yang
dalam pendakap kerinting.
>> Dan hanya sebagai diketepikan, sebab ia a #: glib double dan
bar menegak, kita akan melihat akhirnya bahawa bar tunggal menegak dan
Ampersand tunggal sebenarnya telah berbeza makna dalam C. Jadi buat masa ini,
bahawa pertindihan simbol sengaja.
>> Jadi mari kita memperkenalkan, secara ringkas, ini sedikit lain sintaksis.
Ini tidak cukup membawa kepada Awal, tetapi saya mendakwa bahawa saya boleh
melaksanakan idea jika lain, jika lagi, jika yang lain, jika kenyataan lain yang menggunakan
sesuatu yang dinamakan kenyataan suis.
Dan satu-satunya sebab ini benar-benar wujud adalah untuk hanya memberi anda, programmer, satu
cara yang sedikit berbeza menyelesaikan beberapa masalah, walaupun secara logiknya ia
tidak memberikan apa-apa keupayaan baru.
>> Oleh yang saya maksudkan ini.
Apabila kamu berkata switch, dan kemudian ruang, dan kemudian sepasang kurungan, di dalam
yang pergi ungkapan -
dan ini mungkin menjadi sedikit tidak jelas pada mulanya, tetapi ini bukanlah hujah,
teknikal, kerana suis bukan fungsi.
Jadi buat masa ini, hanya menganggap bahawa kita menggunakan kurungan di tempat-tempat yang berbeza
atas sebab-sebab yang berbeza.
>> Jadi hidupkan ungkapan bermakna saya boleh meletakkan dalam ubah mereka
kurungan di mana ia mengatakan bersuara.
Dan kemudian jika yang berubah-ubah -
andaikan ia dipanggil x, dan ia hanya integer -
Saya kemudian boleh menghitung dalam slaid saya di sini sesuatu seperti ini.
Jika x ialah pembolehubah saya, dan saya mahu melakukan sesuatu jika x
sama dengan 1, saya boleh berbuat demikian.
>> Jika saya bukan mahu melakukan sesuatu jika x ialah 2, saya boleh berbuat demikian.
Lain, jika saya ingin melakukan sesuatu yang lain sepenuhnya, saya boleh mempunyai kes ingkar
mana saya melakukan perkara ini lain.
Jadi dalam erti kata itu, ia adalah bersamaan dengan jika x sama sama 1, lain jika yang lain,
tetapi saya menyebut ini sekarang hanya kerana kita akan melihat sekali lagi.
Tetapi untuk sekarang, hanya tahu bahawa ia wujud.
>> Baiklah.
Jadi pasangan ini terakhir adalah lebih sedikit kompleks pada pandangan pertama, tetapi mereka
sesuatu yang agak mudah.
A untuk gelung dalam C adalah sebahagian daripada kod yang hanya melakukan sesuatu lagi dan
lagi dan lagi.
Dan satu-satunya perkara yang menjengkelkan tentang ia adalah itu adalah bahawa ia adalah sedikit samar
untuk menyatakan diri dalam kitaran corak, tetapi dunia yang selaras mengenai
cara berikut.
>> Apabila anda menggunakan untuk gelung, anda mempunyai sepasang kurung lagi.
Dan notis dua koma bertitik di sana.
Kedua-dua koma bertitik berasingan tiga ungkapan yang berbeza di dalam satu
kurungan.
Satu adalah initializations kononnya.
Satu keadaan yang dipanggil.
Dan satu maklumat kononnya.
>> Melihat dalam abstrak, ini adalah benar-benar tidak jelas, jadi mari kita lihat
pada satu contoh yang konkrit.
Dalam Scratch kami mempunyai blok berulang.
Dan blok ini berkata mengulangi 10 kali, berkata "Hello, dunia." Biar saya menuntut
sekarang, dan kita akan kembali kepada ini, dan ini juga akan mendapatkan lebih biasa kepada
anda tidak lama lagi, bersamaan C kod boleh dikatakan ini -
bagi kenyataan dan ruang, sepasang kurungan, notis koma bertitik dalam
sana, yang memisahkan tiga berbeza perkara, pengawalan itu,
keadaan, dan kemas kini.
>> Dan mengambil meneka apa pertama lakukan.
Int i = 0.
Dari segi orang biasa kasar, apakah yang lakukan untuk kita, mungkin?
Jadi yeah.
Ia mengisytiharkan pembolehubah yang dipanggil i, dan ia memberi apa nilai itu?
0.
Jadi ia mewujudkan ubah yang dipanggil i, menyimpan nilai 0 di dalamnya.
Itulah pengawalan kononnya.
>> Baiklah, sekarang saya mendakwa sebelum bahawa perkara yang pertengahan, i
<10, adalah keadaan.
Jadi apa yang lakukan?
Nah, apa yang gelung untuk tidak apabila program dengan gelung untuk dijalankan, adalah
setiap kali komputer berjalan melalui gelung ini, atas ke bawah, atas ke
bawah, sama seperti anda lakukan apabila lelaki mengira diri kamu dan duduk,
lagi dan lagi dan lagi, komputer akan
untuk memeriksa keadaan itu.
Dan jika i adalah kurang daripada 10, ia akan melakukannya sekali lagi.
Jika saya adalah kurang daripada 10, ia akan melakukannya sekali lagi.
Jika saya adalah kurang daripada sepuluh, ia akan melakukannya sekali lagi.
Jadi seolah-olah mencadangkan bahawa mudah-mudahan i berubah.
Jika tidak, kita akan mempunyai gelung tak terhingga.
Dan sesungguhnya, saya berubah, kerana Perkara terakhir selepas koma bernoktah di sana
adalah sintaks yang agak samar i + +.
Tetapi mereka yang telah melakukan ini sebelum ini, bahawa hanya bermaksud
cukup sekadar apa?
>> PELAJAR: [INTERPOSING suara].
>> DAVID MALAN: Tambah 1 i.
Kenaikan i.
Oleh itu, kita menyaksikan teka-teki Scratch sekeping untuk itu, sebenarnya.
Ia tidak kelihatan seperti i + +, tetapi yang hanya bermakna, agak mudah, kenaikan yang
menghargai i sebanyak 1 setiap kali anda melakukan ini.
Jadi benar-benar, anda mulakan dengan Memulakan i kepada 0.
Anda kemudian memeriksa keadaan anda.
Adalah 0 kurang daripada 10?
Ya.
Kita melalui gelung.
>> Perkara seterusnya yang saya menuntut komputer ini akan lakukan ialah ia akan
untuk kenaikan i.
Jadi saya kini 1.
Ia memeriksa keadaan.
1 kurang daripada 10?
Sudah tentu.
Begitu juga sekali lagi.
Kemudian ia kenaikan i + + 2.
2 adalah kurang daripada 10?
Ya.
Dan sekali lagi dan lagi dan lagi.
Dan akhirnya, kerana plus-plussing, kita dapat i sama 10.
10 kurang daripada 10?
Nah, jelas tidak.
Dan itulah titik di mana untuk gelung hanya berhenti.
Dan jika anda mempunyai kod lanjut mengenai skrin ke bawah, komputer
hasil untuk menjalankan kod yang sebaliknya.
>> Jadi sekali lagi, walaupun ini akan kelihatan dan berasa sedikit pelik pada
pertama, sudah tentu bagi mereka yang tidak pernah diprogramkan sebelum ini, ia
benar-benar mengurangkan konsep kepada apa yang sebaliknya sangat
teka-teki yang mudah sekeping dalam Scratch.
>> Baiklah, saya berjanji bahawa akan menjadi analog lain di calar.
Ada satu ini juga.
Dan kita melihat masa lalu secara ringkas ini.
Tetapi ingat selama-lamanya menghalang dalam Scratch?
Ia hanya melakukan sesuatu yang selama-lamanya?
Saya mendakwa bahawa anda boleh melaksanakan ini dengan cara ini.
Dan anda sebenarnya boleh melaksanakan ini dalam banyak cara yang berbeza.
>> Tetapi gelung manakala hanya yang berbeza cara C menyatakan diri.
Pada akhir hari, anda tidak boleh berbuat apa-apa dengan gelung sementara anda
tidak boleh dengan untuk gelung.
Jadi mereka berada di akhir hari fungsi yang sama.
Tetapi ia membolehkan anda untuk meluahkan diri anda sedikit berbeza dalam
cara berikut.
>> Dengan gelung sementara, ia adalah apa yang di dalam kurungan itu diperiksa sekali lagi dan
lagi dan lagi.
Dan sebaik sahaja ungkapan itu adalah palsu, maka gelung berhenti melaksanakan,
dan komputer bertindak untuk menjalankan apa-apa kod lain yang anda
ada dalam fail anda.
>> Tetapi apa yang menarik di sini bahawa saya benar-benar ditaip benar.
Dan yang benar adalah sejenis nilai Boolean, nilai benar atau palsu.
Jadi boleh benar pernah menjadi palsu jika saya telah benar-benar
keras dikodkan ke dalam program saya?
Jadi tidak.
Ia sedikit pelik yang saya lakukan ini.
Tetapi benar adalah benar.
Tidak ada campur-plussing.
Tiada penggunaan pembolehubah di sini.
Jadi kerana saya keras berkod manakala benar, ini gelung sentiasa akan menilai
lagi dan lagi dan lagi.
>> Jadi berapa banyak kali adalah dunia hello akan mencetak pada skrin?
Selama-lamanya.
Nombor terhingga kali sehingga mati bateri atau beberapa luaran yang lain
peristiwa yang berlaku.
Jadi ini mungkin tidak program yang terbaik untuk menulis, kerana jika pengguna
tidak boleh berhenti program anda, mungkin tidak apa yang anda inginkan.
>> Tetapi kadang-kadang, program perlu mempunyai gelung tak terhingga.
Sebagai contoh, jika komputer anda mempunyai jam di atasnya, ia pasti akan menjadi
bagus jika jam anda ia terus mengemaskini sendiri selama-lamanya, walaupun sekali
kedua atau sekali satu minit atau sesuatu seperti itu.
Jadi, walaupun gelung tak terhingga mempunyai tempat mereka.
>> Baiklah.
Akhir sekali, yang satu ini.
Dan yang satu ini yang sedikit berbeza fungsi, dan kami akan kembali kepada
ini mungkin dalam Pset 1.
Tetapi ada satu lagi jenis gelung dipanggil lakukan semasa gelung.
Dan satu-satunya perbezaan di sini antara lakukan semasa gelung dan, berkata, gelung sementara,
adalah bahawa keadaan ini tidak diperiksa sebelum anda melaksanakan kod, tetapi selepas
anda melaksanakan kod.
Jadi di atas untuk sementara gelung, manakala lakukan semasa
memeriksa ia di bawah.
>> Dan ini hanya bererti bahawa gelung sementara biasanya akan melaksanakan lebih banyak kali
atau kurang kali daripada gelung sementara?
Berpotensi lebih masa, kerana melakukan gelung while jelas mengatakan melakukan ini,
hanya selepas yang menunjukkan anda menyemak jika di dalam keadaan yang
kurungan adalah benar.
>> Oleh itu, kita akan melihat ini lagi mungkin dalam Pset 1.
Jika anda mahu melakukan sesuatu di kurangnya sekali dan maka mungkin ada yang lebih
kali, ini adalah baik membina untuk digunakan.
Tetapi gelung sementara, sebaliknya, akan memeriksa keadaan yang pertama.
Dan itu sahaja untuk gelung dalam C, jangan sementara, sementara, dan bagi gelung.
Dan sekali lagi, mereka merancang cukup baik kembali untuk Gores, kecuali satu ini tidak
cukup mempunyai analog yang sama di calar.
>> Nah, bagaimana pula, kini, pembolehubah?
Jadi ini adalah bagaimana saya mengisytiharkan pembolehubah sintaksis pada hari yang lain.
Saya mempunyai int, yang saya mendakwa adalah integer.
Saya kemudian telah dipanggil kaunter berubah-ubah, dan kemudian koma bernoktah.
Jadi, apakah ini selaras kod lakukan?
Ini adalah, cukup mudah, mengisytiharkan berubah-ubah -
iaitu, meminta komputer, memberi saya memori tertentu, berikan saya beberapa bit - dalam
yang saya boleh menyimpan apa?
Satu int.
Dan koma bertitik hanya bermakna akhir baris kod.
>> Sekarang, baris kedua mungkin cukup diteka.
Apakah kaunter = 0; lakukan?
Ia memberikan 0 hingga kaunter.
Dan jadi ini adalah perkara yang lain itulah sedikit menjengkelkan
berbanding, katakan, algebra.
Manakala dalam algebra, tanda yang sama bermakna sama, di sini di C, yang sama
tanda bermakna tugasan.
Jadi ia bermakna meletakkan apa yang di sebelah kanan ke dalam apa yang di sebelah kiri.
Dan kita akan melihat simbol yang lain, sama sama, apabila kita mahu untuk benar-benar menguji
untuk kualiti, agak annoyingly.
>> Tetapi ini adalah sedikit tidak cekap.
Ia adalah jenis menjengkelkan bahawa saya mempunyai untuk mengisytiharkan pembolehubah dan
kemudian memberikan nilai.
Jadi C sebenarnya membolehkan kita memudahkan ini dan hanya melakukannya semua sekali gus.
Anda boleh mengisytiharkan pembolehubah di sebelah kiri.
Anda masih boleh melakukan tugasan pada betul dengan meletakkan bahawa tanda yang sama dalam
tengah-tengah.
Jadi, pada akhir hari, kedua-dua adalah sama, tetapi yang satu ini, terus-terang,
mungkin tabiat yang lebih baik untuk masuk ke dalam hanya kerana ia adalah sedikit kurang
kod, ia sedikit lebih mudah untuk membaca, dan ia hanya mengetatkan sehingga
kod anda, jadi untuk bercakap.
>> Sebarang pertanyaan setakat di gelung, pada pembolehubah, kepada keadaan, pada
Booleans, sama ada dari segi teknikal atau konsep?
Baiklah.
Jadi sekarang yang satu ini seterusnya mendapat sedikit lebih menarik.
Dan ini adalah contoh yang saya meletakkan lalu masa yang hanya memetakan contoh Scratch
kepada C.
>> Jadi fungsi.
Dari segi orang biasa itu, apa fungsi?
Mendapat menjadi lebih berani dengan jawapan anda.
Apa fungsi?
>> PELAJAR: Adakah sesuatu.
>> DAVID MALAN: Apakah itu?
>> PELAJAR: Adakah sesuatu.
>> DAVID MALAN: Adakah sesuatu.
OK.
Kami akan bermula di sana.
Jadi fungsi melakukan sesuatu.
Jadi ia adalah sekeping kod itu dasarnya dilaksanakan di tempat lain yang
memang melakukan sesuatu.
Kini, apa yang menarik mengenai fungsi adalah bahawa ia boleh mengambil input,
dan ia boleh menghasilkan output.
Dan mari kita sebenarnya mengambil lihat ini.
>> Jadi orang di belakang tabir adalah sengaja sebentar tadi.
Di sini kita mempunyai jadual.
Tetapi menganggap bahawa sebenarnya ini merupakan satu kotak besar.
Jadi ini adalah satu kotak kononnya hitam.
Dan secara umum, dalam reka bentuk, dalam komputer sains, kotak hitam hanya merujuk kepada
keping fungsi yang seseorang telah dilaksanakan, dan anda tidak
semestinya tahu atau peduli bagaimana ia dilaksanakan di bawah hood.
Anda hanya peduli bahawa kotak hitam ini, yang kini kita akan mula memanggil
fungsi, adakah sesuatu.
>> Maka, misalnya, jika kotak hitam ini pada peringkat di sini mewakili printf, satu
fungsi, saya tahu dari contoh yang lepas printf yang mengambil masa satu atau lebih
hujah-hujah, dan yang pertama dari orang-orang hujah-hujah yang perlu tali, seperti
"Hello, dunia." Nah, jika saya seorang yang bertulis program ini, dan saya mahu
menggunakan printf, saya, sebagai contoh, mungkin mengambil sekeping kertas kosong di sini dan
penanda hitam dan menulis di atasnya -
Saya silap eja "dunia" -
H-E-L-L-O.
>> Jadi saya akan mengambil penanda hitam saya dan saya akan menulis, sebagai besar dan dengan jelas seperti yang saya boleh pada
ini sekeping kertas, "hello, dunia," Dan kini saya menuntut ini adalah hujah saya.
Ini adalah rentetan diwakili dengan sehelai kertas putih.
Dan input saya sekarang untuk fungsi printf akan menjadi ini.
Oleh itu, saya menyeru printf, lulus hujah bahawa input kepadanya.
>> Dan sekarang, saya tidak tahu bagaimana orang yang menulis printf melakukannya tahun lalu, tetapi
Saya tahu dari dokumentasi yang tujuan dalam hidup adalah untuk mencetak apa yang saya
memberikan kepadanya sebagai input.
Dan sebagainya, walaupun pelaksanaan ini adalah tanpa pengetahuan saya
di bawah hood, kini Saya melihat, oh, ia dilakukan.
Ia telah dicetak sesuatu pada skrin.
Dan kini mengawal program ini, jika terdapat lebih baris kod, akan
kini telah kembali kepada saya.
Dan supaya hakikat bahawa Colton -
memberkati hatinya, bersembunyi di sini di bawah meja di hadapan anda semua -
adalah sengaja yang saya tidak tahu dan saya tidak peduli bagaimana printf adalah
dilaksanakan.
Saya hanya tahu, sekali lagi, dari itu dokumentasi, apakah ia dan bagaimana saya
saya sepatutnya untuk menggunakannya.
>> Sekarang, ingat bahawa printf boleh mendapatkan sedikit lebih canggih.
Sekali lagi, kami hanya bercakap tentang bersamaan blok Katakanlah calar itu.
Tetapi saya juga tidak kali ini lepas.
Saya mahu membuat program hello saya a sedikit lebih dinamik dan tidak hanya keras
kod sesuatu seperti "dunia", dan pasti tidak kod sesuatu yang keras
sewenang-wenangnya seperti D-A-V-I-D ke dalam program ini.
Saya ingin bertanya kepada pengguna untuk beliau nama, dan kemudian lakukan sesuatu dengan
rentetan bahawa mereka menyediakan.
>> Jadi ada sesuatu yang berbeza di sini. printf, masa yang lalu,
tidak, sesungguhnya, melakukan sesuatu, tetapi ia tidak kembali apa-apa kepada saya.
Betul?
Colton tidak tangan saya apa-apa kembali, tiada sehelai kertas.
Terdapat hanya kesan sampingan.
Saya menyediakan "hello, dunia" sebagai hujah untuk Colton menyebabkan
kesan sampingan perkataan, beberapa perkataan, muncul pada skrin.
>> getstring, walaupun, adalah sedikit berbeza. getstring juga
berfungsi, tetapi ia kembali beberapa nilai.
Ia bukan sahaja mempunyai kesan sampingan estetik.
Ia sebenarnya memberi saya, orang yang memanggil atau menggunakan fungsi,
sesuatu kembali.
Jadi dalam kes ini, adalah getstring dipanggil dengan getstring terbuka
paren, paren dekat.
Adakah getstring, oleh itu, mengambil apa-apa hujah atau input?
Tidak, ia tidak kelihatan.
Tujuan dalam hidup adalah hanya untuk mendapatkan rentetan.
Ia memerlukan detail tidak lebih daripada itu.
Jadi biarlah saya pergi ke hadapan dan berpura-pura bahawa, lagi, kotak hitam ini tidak printf,
tetapi getstring, dan beritahu saya, orang yang bertulis program ini, sila hubungi atau menggunakan
getstring dengan hanya menulis G-E-T-S-T-R-I-N-G, terbuka paren, berhampiran
paren, getstring.
>> Sekarang, saya tidak mempunyai idea bagaimana kakitangan CS50 dilaksanakan getstring, tetapi saya tahu bahawa
jika saya menunggu cukup lama, ia akan melakukan yang perkara di bawah hood, mungkin menggunakan
beberapa pembolehubah, mungkin menggunakan beberapa keadaan, mungkin menggunakan beberapa gelung,
mungkin menggunakan beberapa fungsi, mungkin menggunakan -
hanya cuba untuk gerai - mungkin menggunakan beberapa ciri-ciri pengaturcaraan yang lain.
Tetapi jika saya menunggu cukup lama - dalam realiti, dalam komputer, ini berlaku
super cepat -
jika saya menunggu cukup lama, fungsi ini getstring akan mendapat tali
daripada pengguna, yang mungkin menaip ia keluar pada keyboard mereka, dan
kemudian, apabila anda getstring dilakukan mendapat mereka watak-watak dari pengguna
dan menyimpan mereka ke dalam tali, yang fungsi, getstring, akan mempunyai
bersedia untuk saya beberapa output yang saya akan mendapatkan dengan cara
operator tugasan.
>> Dan jika saya pergi, memang, ke output di sini, Obosi mempunyai murah hati
mengambil bahagian, tanpa mengetahui ini maju, dengan menulis namanya ke ini
berubah-ubah, yang mewakili rentetan.
Sekarang, pengendali tugasan bermakna, walaupun walaupun ini mungkin merasa sedikit
berlebihan, saya sebenarnya memang memerlukan untuk membuat salinan saya sendiri ini.
Kerana pada tangan kiri side - Oops! -
perhatian bahawa saya pada dasarnya mempunyai tali nama di sebelah kiri.
Jadi, saya juga akan membuat salinan saya sendiri ini.
Dan ini adalah sedikit dusta putih, kerana kita akan melihat dalam satu atau dua minggu ini
masa itu rentetan tidak sebenarnya apa yang mereka kelihatan.
>> Tetapi untuk sekarang, di sini adalah nilai pulangan.
Berikut adalah salinan saya sendiri selepas menggunakan operator tugasan.
Dan kini, apa yang saya mahu lakukan seterusnya?
Kami kini mempunyai kedua dua baris kod.
Jadi sekarang saya mahu panggil printf.
Mari kita berpura-pura sekarang bahawa hitam kotak kembali lagi untuk menjadi
printf dan tidak getstring.
>> Printf masa ini akan mengambil berapa banyak hujah?
Jadi melihat, ia seperti dua.
Terdapat dua koma di sana, tetapi salah seorang daripada mereka koma, ia
bahagian dalam petikan.
Jadi hujah pertama adalah benar-benar akan menjadi ini.
H-E-L-L-O, koma, peratus s, garis sendeng terbalik-n.
Dan sekarang saya menyediakan bukan satu hujah, tetapi dua hujah untuk printf.
>> Dan apa yang printf sepatutnya dilakukan dengan kedua-dua input selepas saya lulus mereka dalam
sebagai hujah?
Ia sepatutnya mengambil kedua mereka, yang saya dipanggil nama, jadi
sekeping kertas kedua saya menulis daripada masa lalu dipanggil nama.
Ia akan plug daripada nilai dalam itu berubah-ubah ke dalam ruang letak,
% S, supaya, sekali lagi, hanya dalam masa yang masa, kita akan melihat kesan sampingan
setelah dipanggil printf, di mana kini kita lihat bukan "hello, dunia," tetapi "hello,
Obosi. "
>> Jadi pusingan besar tepukan untuk kedua-dua sukarelawan kami, hanya satu daripada mereka tahu
ini akan berlaku.
Baiklah.
Jadi, mungkin, mudah kerana itu, sudah tentu, jika anda sudah biasa
dengan apa-apa, mudah-mudahan anda tidak akan lupa bahawa visual tertentu bagaimana
fungsi bekerja.
>> Jadi, terdapat lebih daripada sekadar getstring.
Di dalam perpustakaan CS50, terdapat keseluruhan sekumpulan fungsi, semua yang
dipermodalkan hanya untuk membuat jelas bahawa kita menulis fungsi ini.
Biasanya, dalam C, hampir setiap lain fungsi yang anda akan digunakan adalah huruf kecil.
Tetapi kita sengaja menggunakan huruf besar hanya untuk membuat jelas bahawa
adalah roda latihan jenis yang kita akan digunakan untuk hanya beberapa minggu yang
memudahkan proses mendapatkan input daripada pengguna.
>> Perpustakaan CS50 tidak berbuat apa-apa yang kamu sendiri tidak dapat lakukan oleh
hanya menggunakan kod C daripada buku teks oldschool.
Tetapi, sekali lagi, kita menggunakan mereka sebagai latihan roda pelbagai untuk hanya beberapa
minggu supaya kita dapat menghilangkan kerumitan yang anda tidak lama lagi akan memahami
diri daripada melakukan sesuatu yang agak mudah kerana mendapat
input daripada pengguna.
>> Maka ketahuilah, bahawa anda akan mempunyai akses untuk GetChar, GetDouble -
dua kali ganda.
What's - dan kemudian GetFloat.
Apa apungan?
Mari kita mulakan di sana.
>> PELAJAR: [didengar].
>> DAVID MALAN: Ya.
Ia adalah satu nombor dengan titik perpuluhan.
Jadi sedangkan int adalah integer, yang hanya beberapa dengan 0 hingga 9,
beberapa nombor ulangan itu, float adalah sesuatu
dengan titik perpuluhan.
Dan dua, sementara itu, juga merupakan nombor dengan titik perpuluhan, tetapi lebih
nombor selepas perpuluhan titik, yang berpotensi.
>> Oleh itu, kita akan kembali kepada ini tidak lama lagi.
Tetapi biasanya, setiap jenis data, setiap jenis pembolehubah
bahawa perpustakaan seperti kita boleh kembali ke anda, menggunakan nombor yang berbeza bit untuk
menyimpan maklumat.
Biasanya, Char, yang hanya bermakna satu watak, menggunakan 8 bit.
Dan itulah sebenarnya konsisten dengan kami bait sukarelawan minggu lepas yang
datang dan mewakili satu Watak Ascii pada satu masa.
Jadi Char ialah 8 bit.
>> Float A kebetulan 32 bit, biasanya.
Dan dua, seperti yang anda sangka, adalah sebenarnya 64-bit, yang hanya lebih,
yang bermakna anda boleh mempunyai lebih besar nombor atau lebih tepat.
Tetapi sekali lagi, lebih pada masa yang lain.
GetLongLong Sementara itu, walaupun bodoh dinamakan, adalah benar-benar hanya
integer itu dua kali ganda lebih besar, dua kali ganda panjang, berpotensi, sebagai tetap
integer, 64 bit dan bukannya 32.
Dan GetString kita telah menggunakan.
>> Tetapi ternyata, di perpustakaan CS50, yang dilaksanakan, seperti yang kita akan lihat,
bentuk kedua-dua gambar, yang dipanggil cs50.h, mempunyai dua lagi
jenis data di dalamnya.
Booleans tidak wujud dalam C. Anda boleh meniru mereka dengan hanya menggunakan 0 dan 1s
sepanjang program anda.
Tetapi kita di perpustakaan CS50 telah mencipta simbol-simbol "benar" dan "palsu"
untuk mewakili 1 dan 0 supaya anda tidak perlu kod sesuatu yang keras
benar-benar seperti 1 dan 0.
Tetapi kita akan melihat orang-orang lagi.
>> Tali, juga, tidak wujud.
Dan itulah sebabnya saya nyatakan ia sedikit dusta putih untuk sekarang.
Tetapi kita akan mengupas kembali bahawa lapisan tidak lama lagi.
Tetapi untuk sekarang, rentetan adalah jujukan aksara.
>> Sementara itu, dalam C, anda benar-benar mempunyai jenis data yang berbeza.
Notis ini adalah kecil.
Oleh itu, fungsi-fungsi yang anda lihat sebentar tadi fungsi yang ditulis oleh CS50 yang
akan kembali kepada anda dengan nilai yang jatuh menjadi salah satu kategori ini.
>> Satu lembaran menipu pasangan hanya untuk menanam benih di sini. printf tidak hanya
mengambil% s sebagai ruang letak.
Ia mengambil% d bagi integer perpuluhan, atau% i akan bekerja juga.
% F terapung nilai mata. % C adalah untuk a char, jika anda mahu hanya pasangkan satu
watak ke dalam tali diformat seperti yang kita telah lakukan, anda boleh menggunakan% c.
>> Dan kemudian, agak annoyingly,% LLD adalah bagi yang panjang, integer perpuluhan panjang,
yang hanya bermakna jika anda perlu benar-benar jumlah yang besar dan anda menggunakan sesuatu
dipanggil yang lama, yang kita akan datang kembali ke dalam pset, anda boleh menggunakan% untuk LLD
memberitahu printf, pasangkan yang benar-benar besar integer di sini dengan cara yang kedua atau
beberapa hujah lain.
>> Dan akhir sekali, saya berjanji bahawa ada melarikan diri yang lain beberapa
urutan yang printf menyokong.
Kami telah melihat backslash-n.
Garis sendeng terbalik-r anda boleh melihat.
Ia semacam satu perkara yang lama-sekolah.
Jika anda pernah menggunakan mesin taip tahun sebenar yang lalu dan anda menarik pada engkol
yang bukan sahaja berputar roda untuk bergerak barisan, ia juga memindahkan
segala-galanya semua perjalanan pulang ke kiri, baik, backslash-r hanya
dasarnya bergerak ke belakang kursor anda ke permulaan baris
tanpa bergerak ke bawah.
Tetapi sekali lagi, lebih pada itu, mungkin, pada masa hadapan.
>> Garis sendeng terbalik-quote, quote backslash-dua, backslash backslash-adalah
penyelesaian untuk teka-teki kecil sedikit Saya katakan sebelum ini.
Dan garis sendeng terbalik-0 sebenarnya agak menarik.
Tetapi kita akan kembali ke yang tidak lama lagi.
>> Jadi biarlah saya pergi ke dalam, kini, CS50 perkakas, dan membiarkan sebenarnya kita buat
cepat memanaskan badan dengan satu contoh kami tidak sudah dan kemudian beralih kepada
sesuatu yang lebih kompleks.
Jadi jika saya membuka program saya dipanggil gedit -
ini adalah editor grafik saya.
Dan saya boleh berbuat demikian -
biarlah saya menutup tetingkap yang ada -
melalui ikon ini ke sini, gedit, di bahagian bawah kiri
sudut sebelah menu.
>> Saya akan pergi ke hadapan dan maju, dan menyelamatkan contoh ini ke dalam, berkata, John
Folder Harvard.
Folder John Harvard hanya rumahnya direktori di mana semua fail hidup
secara lalai.
Dan saya akan untuk menyelamatkan ini sebagai fail yang dipanggil hello-0.c.
Dan saya telah memilih nama ini hanya supaya ia garis dengan kod sampel pada
kursus laman web ini dan di Video YouTube dalam talian.
>> Jadi sekarang saya akan mula menulis program pertama saya.
Biar saya mengezum masuk untuk kebolehbacaan.
Dan saya akan pergi ke hadapan dan mengatakan int tidak sah utama, yang hanya suka bahawa
sekeping teka-teki kuning yang bermula program.
Saya telah mendapat ke tabiat itu sejak tahun pembukaan bersedia saya kerinting, maka
juga menutup dan kemudian akan kembali ke di mana saya mahu meletakkan kod saya, hanya
kerana ia membantu saya menyimpan semua seimbang, terutama kerana saya
program mendapat lama.
>> Dan kini, di sini, saya akan pergi ke hadapan dan berkata, printf, quote unquote,
hello dunia, backslash-n, quote rapat, kurung penutup, koma bertitik.
Jadi saya hanya mengulangi segala yang kita telah telah mengambil untuk diberikan setakat ini.
Sekarang saya akan untuk zum keluar.
>> Dan tingkap terminal ini ke sini, apa saya dibenarkan untuk dilakukan di hitam ini
dan tingkap putih?
Apa yang boleh saya menggunakannya untuk?
Jadi, ini adalah di mana saya menjalankan arahan dan di mana saya boleh menyusun sesuatu.
Dan saya akan pastikan ia mudah.
Saya akan menggunakan program Buat yang dipanggil, yang tidak
teknikal compiler.
Dipanggil dilafaz yang mengkompilasi, tetapi kita akan kembali kepada bahawa dalam
minggu atau masa dua ini.
>> Buat masa ini, saya hanya akan membuat menaip hello-0, Tetapi mereka yang telah
membandingkan dalam minda anda apa yang saya ditaip dengan apa yang saya sepatutnya ditaip boleh
sudah tahu yang saya lakukan sesuatu yang tidak kena di sini.
Kini, terdapat dengan jelas beberapa kesilapan.
Sebelum saya juga melihat apa yang mereka, apa-apa pemikiran tentang apa yang saya lakukan salah?
>> PELAJAR: [INTERPOSING suara].
>> DAVID MALAN: Ya.
Saya hilang file kepala perpustakaan.
Mana-mana. H fail dipanggil header fail, dan mereka secara kolektif
tergolong dalam perkara-perkara yang dipanggil perpustakaan.
Perpustakaan hanya ketulan kod bahawa orang lain menulis.
Jadi [standard? i?] perpustakaan adalah koleksi fail yang mengandungi kod
bahawa orang lain menulis.
>> Jadi, saya hilang itu.
Jadi mengapa saya mendapat satu kesilapan?
Baiklah, biar saya tatal kembali dalam tetingkap terminal saya di sini.
Dan malangnya, dalam C, seperti dalam banyak bahasa pengaturcaraan, terutamanya
jika itu semua baru untuk anda, kesilapan mesej yang tepat, tetapi mereka juga
agak samar.
Dan kesilapan di sini, dalam merah, "Tersirat mengisytiharkan fungsi perpustakaan
printf dengan jenis, "dan kemudian ia skrol ke baris seterusnya, "int malar char *,
... "Ia hanya akan benar-benar besar dengan cepat.
>> Tetapi apa yang anda perlu bermula untuk berbuat demikian, jika, sekali lagi, baru kepada semua ini, adalah hanya untuk
mula mencari kata kunci.
Jelas sekali, saya tidak mungkin memahami separuh kata-kata yang saya lihat hanya lagi.
Anda akan, walaupun, dalam masa seminggu.
Tetapi saya melihat printf.
Dan yang perlu bermula, lama lagi, untuk berjoging memori anda, semua hak, printf.
Sesuatu yang tidak kena dengan printf.
Adakah saya mengeja ia salah?
Tidak, ia tidak kelihatan seperti - oh.
Saya tidak boleh menggunakan melainkan saya mengajar pengkompil bahawa ia wujud.
Dan sebagainya, sekali lagi, pergi dengan naluri anda, walaupun anda tidak benar-benar memahami
mesej ralat sebenar.
>> Dan sesungguhnya, penyelesaian di sini adalah untuk hanya termasuk di bahagian atas fail
seperti itu, resaving fail saya dengan Kawalan-S atau menu Fail.
Dan jika saya kini kembali ke sini, Saya akan menjelaskan ini.
Kawalan-L adalah hanya cara yang baik untuk mengosongkan skrin.
Dan kemudian saya akan menaip "membuat hello 0 "Masukkan, dan kini saya masih melihat
urutan samar simbol, tetapi kita akan kembali kepada itu.
Itulah yang Buat lakukan untuk anda.
Ia mengautomasikan proses mengambil arahan agak menjengkelkan melibatkan
Dilafaz, pengkompil sebenar.
Tetapi hakikat bahawa saya tiada kesilapan bermakna bahawa perkara ini harus bekerja.
>> Jadi, saya kini akan lakukan - biarlah saya mengezum masuk lagi -
./hello-0 Masukkan, dan sesungguhnya, saya melihat "Hello, dunia." Jadi mari kita kini meningkatkan
ini pernah jadi sedikit hanya untuk meniru langkah-langkah yang kita dimaksudkan.
Saya akan menukar nama ini dengan Simpan Sebagai untuk hello1.c.
Dan sekarang saya akan mengisytiharkan pembolehubah dipanggil nama, jadi nama tali,
dan saya akan meletakkan di dalamnya nilai quote-unquote
D-A-V-I-D dekat quote koma bertitik.
Dan sekarang saya akan menggantikan "dunia" dengan apa placeholder untuk rentetan?
% S.
>> Dan kini, berapa banyak hujah-hujah yang perlu printf mengambil masa ini?
Jadi kedua-duanya.
Jadi saya pergi ke luar daripada petikan.
Saya menaip "nama" selepas koma.
Tetapi saya telah melakukan sesuatu yang lain salah masa ini.
Tetapi mari kita andaikan bahawa saya tidak menyedari bahawa yet.
Biar saya pergi di sini.
>> Dan notis, juga, saya mendapat sedikit bosan dengan menaip "membuat hello 0" semua
masa, "membuat" dan semua ini.
Jadi, ternyata, dalam Linus anda boleh sering melanda arrow Up pada anda
papan kekunci, dan anda sebenarnya boleh menatal melalui semua arahan yang saya telah
dilaksanakan sebelum ini hanya sekarang.
Jadi, jika saya berbuat demikian, Up, Up, ada membuat hello 0.
Saya tidak mahu itu.
Saya hanya mahu untuk menukar bahawa untuk hello 1 kali ini, Enter.
Akhirnya, yang akan menjimatkan masa.
>> Baiklah.
Malangnya, ada yang ralat.
Jadi biarlah saya tatal ke atas.
Ini kelihatan seperti saya benar-benar disembelih program ini.
Maksud saya, Tuhan saya, ia adalah dua baris kod, dan 10 baris daripada kesilapan.
Tetapi melihat yang pertama atas.
Gunakan tali pengecam tidak diisytiharkan.
Adakah saya maksudkan standard i n?
Tidak, saya tidak.
Saya maksudkan tali.
>> Tetapi di manakah pembolehubah rentetan Jenis diisytiharkan, DD kita katakan?
Jadi ia adalah dalam CS50 perpustakaan.
Jadi ia tidak mencukupi, dalam pertama beberapa minggu, hanya untuk menggunakan
apa C memberikan kita.
Saya juga akan pergi di sini, dan saya boleh meletakkan ia di atas atau di bawah, tetapi saya akan
hanya menyimpan ia abjad untuk menjaga perkara yang teratur.
Saya akan termasuk cs50.h, yang pra-dipasang untuk
anda pada perkakas CS50.
Dan ia adalah sumber terbuka, jadi walaupun orang di internet boleh menggunakannya pada mereka
komputer sendiri.
Tetapi ia datang dengan perkakas CS50.
>> Jadi sekarang biarlah saya kembali dan susun semula ini dengan membuat hello 1.
Celaka.
Masih satu lagi kesilapan.
Biar saya tatal ke atas yang pertama, walaupun.
Yang ini agak kompleks.
Multi watak-watak yang berterusan.
Itu tidak membantu saya.
Tetapi notis, dilafaz adalah sekurang-kurangnya sedikit agak baik, di mana dengan sedikit
hijau tanda sisipan simbol, ia berkata di sini adalah di mana saya kacau sehingga.
Mengapa ia menunjuk, dengan sedikit hijau arrow, untuk quote tunggal seterusnya
kepada nama saya?
>> Jadi ini adalah salah satu perkara yang anda hanya digunakan untuk mendapatkan, terutamanya jika anda telah
pengaturcaraan dalam Python, atau JavaScript, atau bahasa lain yang terperinci ini
tidak mengapa.
Dalam C, ia tidak perkara itu.
Jika anda sedang mengisytiharkan tali, yang merupakan urutan 0 atau lebih watak-watak,
anda sebenarnya perlu menggunakan tanda petikan berganda.
Jadi saya benar-benar perlu untuk menukar kembali ini untuk membuka quote, menutup quote, dengan
petikan berganda.
Petikan tunggal mempunyai tempat mereka, tetapi hanya apabila anda menggunakan individu
aksara, tetapi lebih kepada yang masa yang lain.
Buat masa ini, tanda petikan berganda perlu.
>> Jadi sekarang, biarlah saya kembali ke terminal saya tingkap, membuat hello 1.
Dan siapa yang yakin?
Adakah program ini sekarang akan untuk menyusun dengan betul?
OK.
Jadi kami bertiga rasa ini.
Baiklah.
Enter.
Dan ia sebenarnya tidak.
Jadi tidak ada kesilapan masa ini, walaupun walaupun program ini yang mendapat sedikit
lebih kompleks.
Jika saya kini melakukan dot slash hello 1, Enter, ia akan berkata "hello, Daud."
>> Tetapi mari kita buat lelaran ketiga ini, di mana
program yang benar-benar dinamik.
Biar saya pergi ke hadapan dan mengubah fail nama, hanya untuk konsisten dengan
fail yang anda akan telah disediakan kepada anda kemudian dalam talian.
Enter.
Dan sekarang saya akan pergi dan tidak menyimpan "David" keras berkod di sini.
Apa yang saya boleh lakukan untuk sangat mudah meningkatkan program ini?
>> Saya boleh memanggil getstring.
Ia mungkin yang sedikit tidak jelas adalah akan berlaku, jadi saya akan
untuk benar-benar menambah satu lagi talian, printf, dan menyebut nama, kolon, quote dekat, hanya
untuk memberikan pengguna dengan segera pada skrin.
Dan sekarang saya akan pergi di sini, dan saya akan menggunakan jalan pintas papan kekunci saya.
Saya akan pergi Up, Up, dan menukar hello 1 hello 2, Enter.
Dan bersyukur, saya membuat kemajuan.
>> Dan sekarang saya akan naik ke titik slash khabar dan
perubahan itu kepada 2, Enter.
Dan kini program saya -
Saya akan zoom in - semakin sedikit lebih cantik.
Nama akan menjadi, katakan Rob masa ini, Masukkan, hello, Rob.
Kami boleh melakukannya sekali lagi.
Nama, Lauren, Enter.
Nama, Joseph, Enter.
Nama, mari kita cuba untuk menjadi sukar, Enter.
Eh.
Ia tidak benar-benar bug.
Jadi ia hanya hodoh sedikit.
Jadi mungkin kita boleh menyelesaikan masalah ini pada masa depan, bukan sekarang.
>> Tetapi bagaimana akan anda naluri pergi tentang menangani
bahawa cabaran tertentu?
Ia hanya kelihatan bodoh.
Bagaimana anda mengelakkan perkara-perkara mencari bodoh?
Jadi, kita boleh lakukan, OK, saya mendengar beberapa perkara, keadaan dan gelung.
Kita boleh menggunakan, satu, syarat, untuk memeriksa apa yang panjang rentetan
pengguna memberikan kita?
Dan jika ia adalah 0, ia hanya quote unquote, mereka hanya tekan Enter, maka
mungkin saya patut menjerit pada mereka dan meminta mereka lagi.
Tetapi bagaimana yang meminta mereka lagi?
Nah, saya juga mendengar gelung, dan saya boleh melakukannya sekali lagi dan lagi dan lagi
mendorong pengguna untuk perkara yang sama.
>> Nah, mari kita buat satu contoh lain menggunakan yang berbeza
fungsi di perpustakaan CS50.
Izinkan saya menutup fail ini.
Izinkan saya membuat yang baru.
Dan saya akan memanggilnya adder.c, hanya kerana ia adalah mudah untuk melakukan aritmetik mudah,
walaupun ini akan benar-benar underwhelming dengan apa yang anda boleh lakukan
dengan mana-mana komputer moden.
>> Tetapi biarlah saya pergi ke hadapan sekarang dan -
Saya belajar pelajaran saya masa lalu - termasuk cs50.h, termasuk stdio.h, int
tidak sah utama, yang, buat masa ini, saya akan hanya mengambil iman buta, tetapi kita akan menganggap
yang akan memahami apa ini bermakna tidak lama lagi.
Dan saya akan mengatakan sesuatu seperti "memberi saya int an."
>> Dan kini, bagaimana saya boleh mendapatkan int an?
Saya mahu akhirnya mengisytiharkan pembolehubah dipanggil x jenis int
menyimpan dalam suatu integer dari pengguna.
Jadi itu adalah hal yg penting.
Tetapi jika seseorang mahu untuk mencadangkan, bagaimana saya mengisytiharkan integer dipanggil x?
X Int.
>> Jadi ia benar-benar adalah mudah itu.
Berikan saya int an.
Memanggilnya x.
Sekarang saya menggunakan operator tugasan.
Dan bagaimana saya menyimpan daripada meninggalkan nilai pengguna?
Saya tidak mahu untuk memanggil getstring, jelas, tetapi getint.
Mana-mana hujah?
No
Jadi ia terbuka paren, paren berhampiran serta-merta, dan kemudian
koma bertitik berakhir baris.
>> Sekarang biarlah saya melakukan ini lagi.
Berikan saya int lain.
Kali ini saya akan melakukan int, mari kita memanggilnya y, sama getint.
Dan sekarang biarlah saya melakukan sesuatu yang super-mudah seperti beberapa matematik.
Jadi printf, jumlah% d adalah placeholder untuk int an.
Dan% d, tempoh, backslash-n.
>> Baiklah.
Jadi itu bukan sebenarnya matematik.
Tetapi jika saya mahu mengatakan jumlah ini nilai ditambah nilai ini sama ini
nilai yang lain, berapa banyak hujah ke jumlah yang perlu saya akan memberi printf,
akhirnya?
Jadi empat, bukan?
Rentetan ini dan kemudian tiga nilai.
Jadi x adalah yang pertama saya mahu menjadi dipasang pertama ke% d.
y akan menjadi yang seterusnya.
>> Dan kini saya jenis mahu mengatakan z, z tetapi tidak wujud.
Tetapi itu bukan satu masalah besar.
Kerana apa yang anda akan lakukan dengan naluri, terutamanya jika anda mempunyai
grafik kalkulator, apa yang anda menaip?
Bagaimana kira-kira x campur y?
Jadi ia bukan satu pembolehubah sebenar.
Ia hanya sejumlah dua pembolehubah lain.
Dan yang sempurna yang sah.
C pasti memahami mudah aritmetik seperti ini.
>> Koma bertitik, menjimatkan.
Sekarang saya akan turun di sini dan menaip membuat penambah, Enter.
Tiada kesilapan, supaya kemajuan juga.
Taip penambah.
Dan satu lagi jalan pintas papan kekunci, jika anda mula bosan
dengan semua arahan -
jika anda mula menaip arahan, seperti dot mengurangkan iklan, dan di mana anda
kebosanan menendang, anda biasanya boleh mencecah Tab untuk mempunyai komputer menyelesaikan
berehat frasa untuk anda jika ia tidak samar-samar apa yang harus datang selepas iklan.
>> Jadi biarlah saya pergi ke hadapan sekarang dan anda klik Masuk.
Berikan saya int, 1, 2, dan bersyukur, ia adalah 3.
Tetapi seperti biasa, menguji program tidak perlu untuk mengurangkan
hanya cuba sekali.
Biar saya cuba kes sudut, seperti negatif 1, memberi saya 1, dan yang satu
cek keluar juga.
Dan saya mungkin mahu melakukan lebih ujian yang ketat, tetapi saya cukup
selesa dengan mana itu di.
>> Nah, sekarang mari kita cuba program lain kali ini menggunakan
sedikit sintaks lain.
Izinkan saya membuat fail baru.
Saya akan panggil conditions0.c ini untuk beratur dengan beberapa kod dalam talian sampel.
Dan biarlah saya pergi ke hadapan dan melakukan termasuk cs50.h, termasuk
stdio.h, dalam tidak sah utama -
OK.
Ada kita pergi.
Kami mempunyai boilerplate standard kami.
>> Dan kali ini saya akan mengatakan printf, "Saya ingin satu int, sila," hanya untuk
membuat segera sedikit lebih mesra.
Dan kini saya ingin mendapatkan int dari pengguna.
Saya akan memanggilnya n masa ini, hanya kerana n bunyi seperti nombor.
getint, dan sekarang, apa yang Saya mahu lakukan dengan ia?
Nah, jika n - dan saya akan zoom in -
jika n adalah lebih besar daripada 0, saya ingin untuk melakukan perkara berikut -
printf "Anda mengambil nombor positif." Yang lain, saya akan menaip printf "Anda
mengambil yang negatif
nombor. "Baiklah.
Jadi program ini, walaupun saya telah melakukannya cepat, kelihatan betul sintaksis.
Biar saya cuba ini.
Membuat keadaan 0.
Seolah-olah berjalan.
Keadaan 0, masuk.
Mari kita memberikan satu int 50.
Saya mengambil nombor positif.
Mari kita cuba sekali lagi.
Keadaan 0.
Negatif 50.
Saya mengambil nombor negatif.
>> Tetapi sekarang, saya mengambil apa yang kita akan terus memanggil mana-mana sudut, yang lebih
satu kes yang menarik yang anda fikir mungkin memberi anda beberapa masalah, 0.
Sekarang, saya cukup pasti ini adalah salah satu kes-kes di mana sudut sifar
tidak positif atau negatif, jadi saya program, walaupun dalam sintaksis
betul - ia menyusun, ia berjalan - secara logiknya tidak betul.
Jadi apa yang menetapkan yang mudah di sini jika saya mahu untuk mengesan, jika saya mahu untuk mengendalikan n
sama dengan 0 berasingan?
>> Jadi, jika n sama dengan 0, maka saya ingin katakan sesuatu seperti printf "Anda dipilih 0."
Biar saya cuba ini sekarang.
Biar saya kembali di sini, jelas tingkap saya, dan susun semula.
Hm.
Satu kesilapan menjana.
Tetapi saya yang anda mahu untuk memeriksa jika n sama dengan 0.
>> Jadi sekali lagi, satu lagi perkara yang bodoh untuk mendapatkan digunakan untuk, tanda sama adalah
pengendali tugasan.
Jadi ini adalah sebenarnya kesilapan itu, teknikal, walaupun pengkompil
dilindungi saya daripada diri saya sendiri, kita akan teknikal akan menyalin 0 ke n, yang
tidak apa yang saya mahu.
Saya mahu menguji untuk kesaksamaan dengan sama sama.
Dan sebagainya yang kini mungkin penyelesaian saya lebih baik.
>> Biar saya sebenarnya resave ini sebagai, berkata, conditions1, untuk menjadi baru dan lebih baik.
Jadi sekarang jika saya susun semula ini, ia akan membuat syarat -
Oops - membuat conditions1 dot slash conditions1, Masukkan, "Saya ingin int an,
please. "Saya akan pergi hadapan dan menaip 50.
Ia masih baik.
Negatif 50, masih baik.
0, dan ia, sesungguhnya, dikesan yang saya meningkat 0.
>> Jadi apa lagi yang boleh saya lakukan sekarang dengan ini?
Nah, kita pasti boleh melakukan semakin perkara-perkara yang kompleks.
Tetapi apa yang saya ingin mencadangkan adalah bahawa kita berakhir pada nota ini di sini.
Jika kita tarik ke atas ini, anda akan melihat, mungkin, kartun kegemaran anda
sehingga hari ini anda mungkin tidak pernah difahami.
Dan itu tentang kualiti ketawa anda perlu mendapatkan dengan jenaka CS.
Jadi itu kira-kira yang betul.
>> Tetapi yang lebih compellingly, saya fikir saya akan memberi kita penggoda sedikit untuk hari ini.
Jadi kami mula menggunakan integer.
Kami telah dirujuk terapung.
Kami juga disebut beregu, yang, sekali lagi, memberikan nombor
selepas titik perpuluhan.
>> Tetapi ternyata bahawa terapung dan beregu, dan benar-benar, komputer,
asasnya, tidak dapat meluahkan nilai-nilai yang tepat.
Kita tahu daripada kelas matematik yang anda boleh mempunyai apa-apa bilangan nombor selepas
titik perpuluhan.
Dan anda juga boleh meletakkan bar menegak untuk mengatakan ini pergi selama-lamanya.
>> Malangnya, anda tidak boleh benar-benar berbuat demikian dalam komputer.
Dan supaya kes sudut timbul.
Sebagai contoh, andaikan anda melakukan sesuatu yang kewangan.
Anda lakukan matematik dengan peratusan, dan
dengan dolar dan sen.
Dan orang-orang sen tidak line semestinya up.
Nah, ternyata bahawa pecahan sen boleh mula untuk menambah sehingga apabila
dimodelkan dengan sistem komputer dalam apa-apa cara yang bijak
manusia boleh mengambil kesempatan.
>> Dan orang-orang yang tidak pernah melihat, saya akan suka untuk memberikan anda penggoda 30-kedua
sebuah filem yang indah dikenali sebagai Ruang Pejabat, yang akan melukis sekeping gambar
masalah kita akan menangani Perkara pertama pada hari Isnin.
Jika kita boleh meningkatkan jumlah sedikit, saya memberikan anda 30
saat Ruang Pejabat.
>> [MAIN SEMULA VIDEO]
>> -Maksud saya, anda, anda tidak menunjukkan dan anda boleh menyimpan kerja anda.
>> -Sebenarnya, saya dinaikkan pangkat.
>> -Saya dapat program virus yang akan merobek tempat yang luar masa yang besar.
>> -Nah, bagaimana ia berfungsi?
>> -Setiap kali ada transaksi bank di mana faedah dikira, dan terdapat
beribu-ribu sehari, komputer berakhir dengan ini pecahan sen.
>> -Tetapi saya tidak akan melakukan apa-apa haram.
>> -Haram?
Samir, ini adalah Amerika.
>> -Kita perlu bersumpah kepada Tuhan.
>> -Jika tiada siapa yang tahu tentang perkara ini tetapi kita, betul?
Tiada ahli keluarga, tidak teman wanita, tiada siapa.
>> -Sudah tentu.
>> -Setuju.
>> -Jangan bimbang, manusia.
Saya tidak akan memberitahu sesiapa sahaja sama ada.
>> [AKHIR VIDEO MAIN SEMULA]
>> DAVID MALAN: Jadi ini, maka, adalah CS50, yang Ruang Pejabat, dan ia akan semua
masuk akal pada hari Isnin.
Lihat anda kemudian.
>> Pencerita: Pada CS50 seterusnya, Rob menyesuaikan untuk menjadi luar
Rancangan makanan Harvard.