>> [Chơi nhạc]
>> DAVID Malan: Được rồi.
Chào mừng trở lại.
Đây là CS50, và đây là Một tuần, tiếp.
Vì vậy, một trong những lý do chúng tôi đã đi qua xung quanh công nghệ như
Google Glass là họ đến với một cái gì đó được biết đến như là một API, một
Giao diện lập trình ứng dụng.
Và điều này có nghĩa là đó là với tập tin bên phải và với quyền
tài liệu, bạn thực sự có thể viết phần mềm cho các thiết bị thậm chí như thế này.
>> Và vì vậy những gì chúng tôi có trong tâm trí hướng học kỳ cuối cùng là, nếu một dự án
liên quan đến, nói, Google Glass có thể hấp dẫn, chúng ta sẽ thấy những gì chúng tôi có thể làm trong
về hooking bạn với một số phần cứng mượn cũng như
truy cập công khai API để bạn có thể thực sự bắt đầu tạo ra phần mềm
chạy trên Google cùng thủy tinh.
>> Một thiết bị mà chúng tôi đã được chơi với cuối năm mà chúng tôi nghĩ có thể là
vui vẻ vào cuối học kỳ là điều này rất ít ở đây.
Nó được gọi là Leap Motion, và những gì bạn đang về để xem là kỹ thuật một
quảng cáo cho các thiết bị, nhưng nó không nói chuyện với những gì đặc biệt này
thiết bị có khả năng.
Và nó cũng đi kèm với một API thông qua mà bạn có thể viết phần mềm để
kiểm soát máy tính của bạn một cách rất thích bộ phim một phút này đây.
>> [VIDEO xem lại]
>> [END xem video]
>> Vì vậy, ngay bây giờ, thiết bị này sẽ xảy ra với được thực hiện như một chút USB
kết nối mà bạn có thể cắm vào của bạn máy tính, nhưng tôi sẽ không ngạc nhiên
nếu trước khi lâu chúng tôi có các loại công nghệ trong các đợt tiếp theo của máy tính
và máy Mac để bạn có thể, thực sự, tương tác với nó trong
một cách như thế.
Trong thực tế, những gì tôi nghĩ rằng tôi muốn làm, cũng là Tôi kéo lên một cuộc biểu tình nhỏ
chương trình mà đi kèm với phần mềm này.
Vì vậy, tôi đã đặt các cảm biến nhỏ ở phía trước của máy tính xách tay của tôi.
>> Và như bạn thấy, nó đã nhận ra rằng tay của tôi là có
kiểm soát nó.
Và tất cả các ứng dụng này không có gì swimmingly những điều nhỏ nhặt như thế này.
Nhưng bạn có thể thấy rằng, thực sự, Tôi có năm ngón tay đó.
Nếu chúng ta có thể có được nó để làm tất cả 10, bạn có thể tưởng tượng một chiếc piano gọn gàng
ứng dụng hoặc tương tự.
Vì vậy, nếu bạn muốn đưa ra sau khi lớp hôm nay và chơi với điều đó như
tốt, bạn được hoan nghênh.
Vì vậy, thêm vào đó đến kết thúc học kỳ.
>> Vì vậy, một vài hành chính thông báo.
Một, làm phần vào thứ sáu này vào buổi trưa tại cs60.net/section.
URL đó là trên của khóa học trang chủ là tốt.
Trong khi đó, mặc dù, supersections sẽ ra mắt vào chủ nhật này.
Supersections là một điều một thời gian, bởi vì chúng tôi phải mất một thời gian để làm việc
ra người, trong đó phần và ở đâu.
>> Vì vậy, vào chủ nhật tới, sẽ có một phần dành cho những người kém thoải mái,
một phần cho những thoải mái hơn.
Và những người bạn ở đâu đó trong giữa được chào đón để đi đến
một hoặc cả hai hay không.
Cả hai sẽ được quay.
Họ sẽ có trong một khán phòng lớn hơn một phần thông thường sẽ được in
Nhưng mục tiêu ở đây là để trang bị cho bạn một số tiện nghi với vấn đề thiết lập một,
với C, với các thiết bị CS50, điều này cuối tuần, thậm chí trước khi bạn tìm hiểu của bạn
chuyển nhượng phần chính thức.
Vì vậy, bạn sẽ gặp TF của bạn và nhỏ hơn của bạn nhóm sectionmates trong khoảng
thời gian một tuần.
>> Giờ làm việc, trong khi đó, đã xảy ra.
Làm tận dụng lợi thế của họ đêm nay hoặc đêm vào ngày mai nếu bạn muốn.
Vấn đề đặt 0 là do vào thứ Sáu.
Đây là một ngày muộn hơn thường xuyên theo lịch trình hôm thứ Năm.
Nhưng với vấn đề tập 1, bạn sẽ thấy nó bao gồm một số khởi động
các bài tập mà bạn mình có thể mở rộng của bạn
Thứ năm thời hạn đến thứ Sáu.
Vấn đề tập 1, trong khi đó, sẽ ra mắt trên trang web của khóa học này đến
Thứ sáu, nếu bạn muốn cuộn tròn với nó như tôi đã làm một lần khi một thời gian trễ
Tối thứ Sáu trong phòng của bạn.
>> Vì vậy, cs50.net/appliance là nơi mà bạn có thể nhận được các thiết bị CS50
mà chúng ta bắt đầu sử dụng vào thứ hai.
Chúng tôi sẽ sử dụng nó nhiều hơn một chút ngày hôm nay.
Nhưng yên tâm rằng các vấn đề thiết lập 1 đặc điểm kỹ thuật sẽ hướng dẫn bạn qua
chính xác các bước bạn cần để có được và chạy.
Do đó, không lo lắng về làm điều đó trước khi Pset 1 nếu bạn không muốn.
>> Được rồi.
Vì vậy, chúng ta nhìn vào thứ hai tại mã nguồn, nhưng trong bối cảnh mới
ngôn ngữ lập trình, cụ thể là C. Và C, không giống như Scratch, không phải là đồ họa.
Nó không giải đố miếng.
Đó là tiếng như nhiều cú pháp.
Và có một vài bước có liên quan trong việc viết và chạy một
chương trình trong C, bởi vì ngoài nguồn mã như thế này, bạn cần một cái gì đó
được gọi là một trình biên dịch.
Và trong cách hiểu thông thường, những gì không một trình biên dịch làm cho chúng ta?
Vâng.
>> HỌC SINH: Nó chuyển đổi mã mà bạn viết thư cho 0 và 1.
>> DAVID Malan: Tốt.
Vì vậy, nó chuyển đổi các mã chúng tôi viết thư cho 0 và 1.
Nó chuyển đổi cái gọi là mã nguồn để mã đối tượng, thì sau đó trông
một chút gì đó như thế này.
Và đó là CPU, bộ não bên trong máy tính của bạn, mà vì
những người tạo ra các máy tính, biết những gì các trình tự
của 0 và 1 trung bình.
>> Có lẽ nó có nghĩa là in.
Có lẽ nó có nghĩa là bổ sung.
Có lẽ nó có nghĩa là trừ.
Có lẽ nó có nghĩa là hiển thị hình ảnh.
Có mẫu được xác định trước của các bit rằng thế giới đã quyết định có ý nghĩa
những điều nào đó.
Nhưng đối với hầu hết các phần trong khóa học này, chúng tôi sẽ làm việc ở một mức độ cao hơn, và
chúng tôi sẽ đưa cho các cấp rằng có tồn tại những thứ như trình biên dịch mà có thể
thực hiện chức năng mã nguồn của chúng tôi trong cách chúng ta có ý định.
>> Vì vậy, các chương trình chúng tôi đã viết đầu tiên vào tuần trước và sau đó bắt đầu cổng, vì vậy để
nói, để C qua này Thứ hai, là này.
Khi lá cờ màu xanh lá cây nhấp, chào hỏi.
Đây là, tất nhiên, viết bằng cào.
Và tôi cho rằng tương đương chương trình trong C nhìn một chút
một cái gì đó như thế này.
>> Vì vậy, những gì tôi nghĩ chúng tôi sẽ làm lúc đầu là, chúng ta hãy trêu chọc nhau những gì có vẻ, lúc đầu
Trong nháy mắt, phải thừa nhận rằng, như khá phức tạp cú pháp, nhưng bạn sẽ bắt đầu nhận thấy
mô hình khá nhanh chóng.
Những gì chúng tôi cũng sẽ làm hôm nay là cung cấp bạn với một mô hình về tinh thần đối với một số
kinh điển, một số cấu trúc tiêu chuẩn trong lập trình.
Và sau đó chúng tôi sẽ thực sự có được bàn tay của chúng tôi bẩn với một số ví dụ là tốt.
>> Vì vậy, cho những người bạn thoải mái hơn, nhận ra rằng trong tuần này và sau đó tiếp theo
tuần rất có thể là một chút xem xét.
Nhưng đặc biệt là khi các phiên bản của hacker vấn đề thiết lập 1 đi ra ngoài trên
trang web khóa học vào thứ sáu, tôi nghĩ bạn sẽ thấy rằng ngay cả khi bạn điền vào
một số khoảng trống trong tuần tới hoặc hai, bạn sẽ bắt đầu để có được hơn bao giờ hết
thách thức và gặp phải những điều mới và mới hơn.
>> Vì vậy, hãy trêu chọc chương trình này ngoài một vài dòng tại một thời điểm.
Ở phía trên, chúng tôi có những gì kỹ thuật được gọi là một
chỉ thị tiền xử lý.
Đây chỉ là một dòng mã mà nói bao gồm các nội dung của một tập tin,
được gọi là tiêu chuẩn I / N, đầu vào tiêu chuẩn - hoặc, xin lỗi, I / O chuẩn, tiêu chuẩn
đầu vào / đầu ra,. h, trong các chương trình của riêng tôi.
>> Vì vậy, nói cách khác, nếu tôi đã viết này chương trình với một trình soạn thảo văn bản đơn giản như
gedit, tương đương đơn giản hơn một cái gì đó như Microsoft Word, mà
hướng dẫn, # bao gồm stdio.h, chỉ là sẽ cho trình biên dịch, lấy
Nội dung của tập tin khác, stdio.h, và dán chúng ở đây.
>> Bây giờ, tại sao tôi quan tâm?
Chúng tôi đã khẳng định được những gì bên trong của tập tin này gọi là stdio.h, được lưu trữ
nơi nào đó trên ổ cứng của tôi, hoặc trong này trường hợp, ở đâu đó trong các thiết bị CS50?
Người khác đặt nó ở đó cho tôi.
Nhưng những gì trong đó?
>> Yeah, vì vậy đó là một tuyên bố một chức năng gọi là printf.
Vì vậy, printf nhớ lại các chức năng mà hiển thị từ và ký tự và
con số trên màn hình tại đấu thầu của tôi.
Nhưng tôi đã không viết nó.
CS50 đã không viết nó.
Năm trước một người nào đó đã viết nó, và họ về cơ bản đã cho chúng tôi công thức cho nó
trong một tập tin gọi là stdio.h.
Vì vậy, dòng đầu tiên chỉ mang lại cho tôi truy cập các chức năng mà người khác
đã viết năm trước đây, trong số đó là printf.
>> Bây giờ, các dòng tiếp theo tôi sẽ vẫy tôi tay tại, ít nhất là cho đến tuần tới.
Nhưng bây giờ, biết rằng int main (void) là về cơ bản tương đương này
vàng mảnh ghép khi lá cờ màu xanh lá cây nhấp vào.
Thế giới, năm trước đây, quyết định rằng nếu bạn đang viết một chương trình trong
ngôn ngữ được gọi là C, bạn bắt đầu chương trình của bạn với một dòng
trông như thế.
Chỉ trong khoảng thời gian một tuần, nó sẽ làm cho cảm giác những gì int là, những gì là khoảng trống.
Nhưng bây giờ, chỉ cần nghĩ về nó như mảnh ghép màu vàng.
>> Bây giờ tiếp theo, chúng ta có một cú đúp xoăn sau bởi khác gần xoăn đôi,
vậy để nói chuyện.
Và chúng ta sẽ thấy những suốt chương trình trong C, cũng như
JavaScript và PHP.
Và những chỉ gói gọn dòng liên quan đến mã.
Mở xoăn cú đúp cơ bản cho biết, ở đây có một số mã.
Và đóng xoăn cú đúp, đó là nghiêng theo một hướng khác, chỉ
phương tiện, đó là nó cho mã có liên quan.
>> Do đó, dòng ngon ngọt trong này đầu tiên chương trình là cuối cùng, printf,
quote-unquote, xin chào thế giới.
Và tôi gọi là điều giữa trích dẫn những gì thời gian qua không?
Vì vậy, đó là một chuỗi.
Và một chuỗi chỉ là iPod hạn cho một chuỗi các
ký tự, một từ, một cụm từ.
Thậm chí một chữ cái có thể được trích dẫn đôi.
Nhưng đó là một chuỗi các không hoặc nhiều ký tự.
>> Dấu gạch chéo ngược-n, tuy nhiên, có vẻ một chút lạ.
Nhưng nó chỉ đơn giản có nghĩa là một cái gì đó đơn giản với máy tính.
Dấu gạch chéo ngược-n là gì?
Dòng mới.
Vì vậy, đó chỉ là trình tự đặc biệt nhân vật mà thế giới đã quyết định
có nghĩa là đặt một ngắt dòng phải có, vì trình biên dịch sẽ thực sự có được
nhầm lẫn, thông thường, nếu bạn, rất dễ hiểu, nhưng không chính xác, chỉ cần
bắt đầu nhấn Enter để đưa dòng mới trong mã của bạn.
Bạn cần phải có nhiều hơn một chút rõ ràng với dấu gạch chéo ngược-n.
>> Và chúng ta sẽ thấy có một vài khác mô hình cho các ký tự đặc biệt.
Ví dụ, nếu bạn muốn cho bạn tâm đi lang thang đến một trường hợp góc,
giả sử rằng tôi muốn in một giá gấp đôi trên màn hình
lý do gì, mà dường như có một chút vấn đề, phải không?
Bởi vì nếu tôi đặt một giá gấp đôi trong giữa "hello, thế giới," cho bất cứ điều gì
lý do, tại sao điều ấy có có khả năng có vấn đề?
Nó phá vỡ các chuỗi.
>> Trình biên dịch chỉ là một chương trình.
Một chương trình như một trình biên dịch chỉ cần đi đọc trên mã của bạn xuống dưới,
trái sang phải.
Và nếu thấy ba dấu ngoặc kép thay hai, nó sẽ không biết
nếu bạn có nghĩa là điều bên trái là chuỗi, hoặc là điều để
quyền, hoặc toàn bộ điều.
Đó là không rõ ràng, và vì vậy những gì một điển hình trình biên dịch sẽ làm là chỉ cần lăn tăn,
và cung cấp cho bạn một số thông báo lỗi, và làm cho bạn đối phó với vấn đề.
>> Vì vậy, cho rằng dấu gạch chéo ngược-n có nghĩa là một mới dòng, những gì sẽ bản năng của bạn bây giờ
bắt đầu được nếu bạn muốn bao gồm một cái gì đó bất thường như một đôi
trích dẫn bên trong này nếu không trích dẫn chuỗi?
Dấu gạch chéo ngược-nháy kép.
Và vì vậy chúng ta sẽ thấy điều này loại hoa văn quá.
>> Nếu bạn muốn làm một chút gì đó lạ, bạn sẽ thấy rằng
các giải pháp thường theo một khuôn mẫu, và các dấu gạch chéo ngược
biểu thị một dãy thoát.
Và nó chỉ có nghĩa là một cái gì đó đặc biệt mà chúng ta cần để đại diện cho một trong
cách khác nhau.
Như làm thế nào để bạn đại diện một dấu gạch chéo ngược, tốt, chúng tôi sẽ
quay trở lại đó.
Nhưng câu trả lời, cũng là thực sự một chút rõ ràng.
>> Vì vậy, bây giờ chúng ta giới thiệu một số khác cấu trúc lập trình
mà bạn đã thấy trong Scratch.
Bạn đã có thể dùng cho các cấp đã nếu bạn đã nhảy vào
vấn đề thiết lập 0.
Nhưng bây giờ chúng ta giới thiệu cú pháp trong C cho những khác khá trực quan
ý tưởng, ít nhất là một số người trong số họ.
>> Vì vậy, khái niệm về một điều kiện hoặc chi nhánh, trong khi trước đó chúng tôi
đại diện nó với mã trông như thế này ở bên trái trong Scratch -
nếu x nhỏ hơn y, sau đó nói như vậy -
thay vì tại trong C - hãy để tôi trau dồi trong trên các trường hợp đơn giản -
chúng tôi chỉ đơn giản là sẽ nói, nếu, mở ngoặc đơn, một cái gì đó là sự thật - một
Biểu thức boolean là sẽ đi nơi mà tôi đã nói điều kiện -
ngoặc gần, sau đó làm gì bên trong những dấu ngoặc nhọn.
>> Vì vậy, ở đây, các dấu ngoặc nhọn là loại giống như Scratch của
Mảnh ghép hình chữ U.
Làm những gì bên trong các dấu ngoặc nhọn.
Trong trường hợp này, cắt giảm cắt giảm.
Và nhận thấy đây là một tiền đạo cắt giảm, không phải là một dấu gạch chéo ngược.
Dấu gạch chéo, dấu gạch chéo, cho những người đã được lập trình
trước, chỉ có nghĩa là -
nó chỉ là một bình luận.
Một nhận xét không phải là một dòng mã, cho mỗi gia nhập.
Đó là một dòng tiếng Anh mà bạn, con người, đã viết cho chính mình để
có thể nhắc nhở bạn làm điều gì đó, để giải thích cho chính mình, để giải thích cho
người khác, những gì mã của bạn đang làm.
Nó chỉ là một bình luận mô tả.
>> Bây giờ, tất nhiên, chúng ta có thể có một cách hai ngã ba trên đường chỉ bằng cách làm này, một
ba cách ngã ba trên đường bằng cách làm này, và nếu bạn tiếp tục này
mô hình, bạn có thể có bốn chiều, năm chiều, sáu cách dĩa trong đường nếu
bạn cần phải xử lý, thực sự, có nhiều điều kiện.
Và sau đó nhận thấy sự song song đây -
if (điều kiện), if (điều kiện), và chỉ có một mà là một chút
lạ là cuối cùng, Chỉ có điều là khác.
Nhưng một lần nữa, đây là giống hệt nhau, khái niệm, những gì chúng tôi đã thực hiện
đã có, mặc dù cú pháp sẽ mất một ít để làm quen.
>> Bây giờ, trong ví dụ này, có một số cú pháp khác lạ.
Chúng ta thấy printf một lần nữa, mở ngoặc đơn, và dấu ngoặc đóng.
Và bên trong có một chuỗi trích dẫn.
Các dấu ngoặc đơn, trong bối cảnh printf, đi bên trái
và đúng đắn những gì?
Chúng ta mô tả rằng trích dẫn chuỗi như nói chung?
>> Vì vậy, nó là một đối số.
Bất cứ lúc nào bạn có một chức năng, như printf, và sau đó một dấu ngoặc mở và một
Dấu ngoặc đơn thân và một cái gì đó bên trong nó, cho dù đó là một chuỗi, hoặc một
số nguyên, hoặc bất cứ điều gì khác, điều trong giữa những dấu ngoặc đơn được gọi là
một cuộc tranh cãi.
>> Và một cuộc tranh cãi chỉ ảnh hưởng đến hành vi của chức năng.
Trong trường hợp này, nó khá rõ ràng như thế nào.
x <y là những gì đang được thông qua tại, có thể nói, như một tham số.
Và printf sẽ in chính xác điều đó.
Bởi vì chắc chắn, những năm người trước người thực hiện printf không có ý tưởng
những gì chúng ta thừa kế của con người là sẽ sử dụng printf cho.
Vì vậy, đó là lý do tại sao đối số tồn tại, để ảnh hưởng đến hành vi sau khi một chức năng của
được viết.
>> Bây giờ, biểu thức Boolean.
Chúng tôi đã nhìn thấy những trước trong Scratch.
Hóa ra trong C, bạn cũng có thể "hoặc" chúng lại với nhau, vì vậy để nói chuyện.
Hai thanh dọc có nghĩa là khối này mã, điều này làm được điều này, sẽ
thực thi nếu điều kiện đầu tiên là đúng hoặc điều kiện thứ hai là sự thật.
Và mặc dù bạn có thể không thực hiện này trong Scratch, bạn có thể thực sự
làm điều này trong đầu, và bạn cũng có thể thể hiện bản thân khác nhau -
nếu điều kiện đầu tiên và lần thứ hai điều kiện là đúng sự thật, sau đó làm gì
bên trong dấu ngoặc nhọn.
>> Và cũng giống như một sang một bên, lý do đó là một ký hiệu đôi và một đôi
thanh thẳng đứng, chúng ta sẽ thấy cuối cùng rằng một thanh thẳng đứng duy nhất và một
ký hiệu duy nhất thực sự có khác nhau có nghĩa là trong C. Vì vậy, bây giờ,
sự trùng lặp của các biểu tượng là cố ý.
>> Vì vậy, hãy giới thiệu, một thời gian ngắn, bit này khác của cú pháp.
Điều này không hoàn toàn mang sang Đầu, nhưng tôi cho rằng tôi có thể
thực hiện các khái niệm về một nếu người nào khác, nếu khác, nếu người nào khác, nếu tuyên bố khác sử dụng
một cái gì đó gọi là một tuyên bố chuyển.
Và lý do duy nhất này thực sự tồn tại là để chỉ cho bạn, các lập trình viên, một
cách hơi khác nhau giải quyết một số vấn đề, mặc dù nó một cách hợp lý
không cung cấp cho bạn bất kỳ khả năng mới.
>> Bởi rằng tôi có ý nghĩa này.
Khi bạn nói chuyển đổi, và sau đó một không gian, và sau đó là một cặp ngoặc đơn, bên trong
trong số đó đi một biểu hiện -
và điều này có thể là một chút không rõ ràng lúc đầu, nhưng đây không phải là một cuộc tranh luận,
về mặt kỹ thuật, bởi vì chuyển đổi không phải là một chức năng.
Vì vậy, hiện nay, cho rằng chúng tôi đang sử dụng ngoặc đơn ở những nơi khác nhau
vì những lý do khác nhau.
>> Vì vậy, chuyển đổi trên biểu hiện có nghĩa là tôi có thể đặt một trong những biến
ngoặc nơi nó nói biểu hiện.
Và sau đó nếu có biến -
giả sử nó được gọi là x, và nó chỉ là một số nguyên -
Sau đó tôi có thể liệt kê trong slide của tôi ở đây một cái gì đó như thế này.
Nếu x là biến của tôi, và tôi muốn làm một cái gì đó nếu x
bằng 1, tôi có thể làm điều đó.
>> Nếu tôi thay vì muốn làm một cái gì đó nếu x là 2, tôi có thể làm điều đó.
Khác, nếu tôi muốn làm một cái gì đó khác hoàn toàn, tôi có thể có một trường hợp mặc định trong
trường hợp này, tôi làm điều này khác.
Vì vậy, trong ý nghĩa đó, nó tương đương với một nếu x bằng bằng 1, nếu người nào khác khác,
nhưng tôi đề cập đến điều này bây giờ chỉ vì chúng ta sẽ thấy nó một lần nữa.
Nhưng bây giờ, chỉ biết rằng nó tồn tại.
>> Được rồi.
Vì vậy, các cặp vợ chồng cuối cùng là nhiều hơn một chút phức tạp ở cái nhìn đầu tiên, nhưng họ làm
một cái gì đó khá đơn giản.
Một vòng lặp trong C là một đoạn mã chỉ làm điều gì đó một lần nữa và
một lần nữa và một lần nữa.
Và điều duy nhất khó chịu về nó là đó là nó là một chút khó hiểu
để thể hiện bản thân trong chu kỳ này mô hình, nhưng trên thế giới được chuẩn hóa trên
theo cách sau.
>> Khi bạn sử dụng một vòng lặp, bạn đã có một cặp ngoặc đơn một lần nữa.
Và để ý đến dấu chấm phẩy trong đó.
Hai dấu chấm phẩy riêng ba biểu hiện khác nhau bên trong
ngoặc đơn.
Là một trong những khởi tạo cái gọi là.
Là một trong những điều kiện được gọi là.
Và là một trong những cái gọi là bản cập nhật.
>> Nhìn một cách trừu tượng, đây là hoàn toàn không rõ ràng, vì vậy chúng ta hãy xem
một ví dụ cụ thể.
Trong Scratch chúng tôi đã có một khối lặp lại.
Và khối này nói lặp lại 10 lần, nói "Hello, thế giới." Hãy để tôi yêu cầu bồi thường
bây giờ, và chúng tôi sẽ trở lại vấn đề này, và này cũng sẽ nhận được quen thuộc hơn với
bạn trước khi dài, tương đương C mã có thể được cho là điều này -
câu lệnh for và một không gian, một cặp ngoặc đơn, thông báo các dấu chấm phẩy trong
có được phân chia ba khác biệt điều, việc khởi tạo, các
điều kiện, và cập nhật.
>> Và có nhiều phán đoán những gì đầu tiên là làm.
Int i = 0.
Trong điều kiện của giáo thô, những gì là mà làm cho chúng ta, có lẽ?
Vì vậy, yeah.
Nó khai báo một biến gọi là tôi, và nó đem lại cho nó những gì giá trị?
0.
Vì vậy, nó tạo ra một biến được gọi là i, lưu trữ các giá trị 0 trong nó.
Đó là cái gọi là khởi tạo.
>> Được rồi, bây giờ tôi tuyên bố trước rằng điều trung, tôi
<10, là điều kiện.
Vì vậy, những gì đang làm gì?
Vâng, những gì các vòng lặp để thực hiện khi một chương trình với một vòng lặp for được chạy, là
mỗi khi máy tính chạy qua vòng này, trên xuống dưới, từ trên xuống
phía dưới, giống như các bạn đã làm khi tính mình và ngồi xuống,
một lần nữa và một lần nữa và một lần nữa, máy tính sẽ
để kiểm tra tình trạng đó.
Và nếu tôi là ít hơn 10, nó sẽ làm điều đó một lần nữa.
Nếu tôi là ít hơn 10, nó sẽ làm điều đó một lần nữa.
Nếu tôi là ít hơn mười, nó sẽ làm điều đó một lần nữa.
Vì vậy, đó dường như cho thấy rằng hy vọng tôi đang thay đổi.
Nếu không, chúng tôi muốn có một vòng lặp vô hạn.
Và thực sự, tôi đang thay đổi, bởi vì Điều cuối cùng sau dấu chấm phẩy có
là cú pháp hơi khó hiểu của tôi + +.
Nhưng những người bạn của những người đã làm điều này trước đây, mà chỉ có nghĩa là
khá đơn giản là những gì?
>> SINH VIÊN: [interposing GIỌNG NÓI].
>> DAVID Malan: Thêm 1 đến i.
Tăng i.
Vì vậy, chúng ta đã thấy một câu đố Scratch phần cho rằng, trên thực tế.
Nó không giống như i + +, nhưng đó chỉ phương tiện, khá đơn giản, thặng dư
đánh giá tôi bởi 1 mỗi khi bạn làm điều này.
Vì vậy, theo nghĩa đen, bạn bắt đầu bằng khởi tạo i 0.
Sau đó bạn kiểm tra tình trạng của bạn.
Là 0 ít hơn 10?
Vâng.
Chúng tôi đi qua vòng lặp.
>> Điều tiếp theo tôi yêu cầu bồi thường của máy tính sẽ làm là nó sẽ
để tăng i.
Vì vậy, tôi bây giờ là 1.
Nó sẽ kiểm tra điều kiện.
Là 1 ít hơn 10?
Tất nhiên.
Vì vậy, hiện nó một lần nữa.
Sau đó nó gia tăng i + + 2.
Là 2 ít hơn 10?
Vâng.
Và một lần nữa và một lần nữa và một lần nữa.
Và cuối cùng, vì cộng plussing, chúng tôi nhận được tôi bằng 10.
10 ít hơn 10?
Vâng, rõ ràng là không.
Và đó là điểm mà tại đó cho vòng lặp chỉ dừng lại.
Và nếu bạn có nhiều mã trên màn hình xuống dưới đây, máy tính
tiền thu được để chạy mã thay thế.
>> Vì vậy, một lần nữa, mặc dù điều này sẽ nhìn và cảm thấy một chút lạ
đầu tiên, chắc chắn cho những người bạn của những người chưa bao giờ được lập trình trước, nó
nghĩa là làm giảm khái niệm với những gì nếu không rất
câu đố đơn giản mảnh trong Scratch.
>> Được rồi, tôi hứa rằng có muốn là các chất tương tự khác trong Scratch.
Có một điều này.
Và chúng ta đã thấy thời gian một thời gian ngắn cuối cùng này.
Nhưng nhớ mãi mãi chặn trong Scratch?
Nó chỉ làm một cái gì đó mãi mãi?
Tôi cho rằng bạn có thể thực hiện này theo cách này.
Và bạn thực sự có thể thực hiện điều này trong một loạt các cách khác nhau.
>> Nhưng vòng lặp trong khi chỉ là một khác nhau cách trong C thể hiện chính mình.
Vào cuối ngày, bạn không thể làm bất cứ điều gì với một vòng lặp thời gian mà bạn
không có thể với một vòng lặp.
Vì vậy, họ đang ở cuối của ngày chức năng tương tự.
Nhưng nó cho phép bạn thể hiện bản thân một chút khác nhau trong
theo cách sau.
>> Với các vòng lặp trong khi, đó là những gì trong ngoặc đó là kiểm tra một lần nữa và
một lần nữa và một lần nữa.
Và ngay sau khi biểu thức đó là sai, sau đó vòng lặp dừng thực hiện,
và các máy tính để tiến hành chạy bất cứ điều gì khác mà bạn đang
có trong tập tin của bạn.
>> Nhưng điều thú vị ở đây là mà tôi đã gõ đúng nghĩa đen.
Và thực sự là một loại giá trị Boolean, một giá trị đúng hay sai.
Vì vậy, có thể thực sự bao giờ trở thành sai nếu tôi đã theo nghĩa đen
mã hóa cứng vào chương trình của tôi?
Vì vậy không.
Đó là một chút kỳ lạ mà tôi đã làm điều này.
Nhưng đúng là sự thật.
Không có cộng plussing.
Không có sử dụng các biến trong đây.
Như vậy bởi vì tôi mã hóa cứng trong khi sự thật, điều này vòng lặp là luôn luôn đánh giá
một lần nữa và một lần nữa và một lần nữa.
>> Vì vậy, bao nhiêu lần là hello world sẽ in trên màn hình?
Mãi mãi.
Vô số lần cho đến khi chết pin hoặc một số bên ngoài
sự kiện xảy ra.
Vì vậy, điều này có lẽ không phải là chương trình tốt nhất để viết, bởi vì nếu người sử dụng
không bao giờ có thể thoát khỏi chương trình của bạn, đó là có lẽ không phải những gì bạn dự định.
>> Nhưng đôi khi, chương trình nên có một vòng lặp vô hạn.
Ví dụ, nếu máy tính của bạn có một đồng hồ trên nó, nó chắc chắn sẽ là
tốt đẹp nếu đồng hồ của bạn nó tiếp tục cập nhật bản thân mãi mãi, mặc dù một lần
thứ hai hoặc một lần một phút hoặc một cái gì đó như thế.
Vòng vì vậy ngay cả vô hạn không có chỗ đứng của họ.
>> Được rồi.
Cuối cùng, chương trình này.
Và điều này là một chút khác nhau chức năng, và chúng tôi sẽ trở lại
điều này có lẽ trong Pset 1.
Nhưng có một dạng khác của vòng lặp gọi là làm trong khi vòng lặp.
Và sự khác biệt duy nhất ở đây giữa một làm trong khi vòng lặp và, nói rằng, một vòng lặp trong khi,
là điều kiện được kiểm tra không trước khi bạn thực thi mã, nhưng sau
bạn thực thi mã.
Vì vậy, ở đầu cho trong khi vòng lặp, trong khi làm trong khi
kiểm tra nó ở phía dưới.
>> Và điều này chỉ có nghĩa là vòng lặp while thường sẽ thực hiện lần
hoặc thời gian ít hơn một vòng lặp trong khi?
Thời gian có khả năng hơn, bởi vì một làm trong khi vòng lặp được nói rõ ràng làm điều này,
chỉ sau đó chỉ cho bạn kiểm tra nếu điều kiện bên trong của
ngoặc đơn là đúng sự thật.
>> Vì vậy, chúng ta sẽ thấy điều này một lần nữa có thể trong Pset 1.
Nếu bạn muốn làm một cái gì đó ở ít nhất một lần và sau đó có thể là một số chi tiết
lần, đây là một tốt xây dựng để sử dụng.
Nhưng một vòng lặp trong khi, ngược lại, sẽ kiểm tra tình trạng của nó đầu tiên.
Và đó là nó cho vòng trong C, làm trong khi, trong khi, và cho các vòng.
Và một lần nữa, họ bản đồ khá độc đáo trở lại để cào, ngoại trừ một điều này không
khá có tương tự như nhau trong Scratch.
>> Vâng, làm thế nào về, bây giờ, biến?
Vì vậy, đây là cách tôi tuyên bố một biến cú pháp ngày khác.
Tôi đã có một int, mà tôi tuyên bố là một số nguyên.
Sau đó tôi đã có một biến gọi là truy cập, và sau đó một dấu chấm phẩy.
Vì vậy, dòng mã này làm là gì?
Đây là, khá đơn giản, tuyên bố một biến -
đó là, yêu cầu máy tính, cho tôi một số bộ nhớ, cho tôi một số bit - trong
mà tôi có thể lưu trữ những gì?
Một int.
Và chỉ có nghĩa là dấu chấm phẩy cuối dòng mã.
>> Bây giờ, dòng thứ hai có lẽ là khá đoán.
Truy cập = 0 là những gì, đang làm gì?
Nó gán 0 để chống lại.
Và do đó, đây là điều khác đó là một chút khó chịu
so với, nói, đại số.
Trong khi đó, trong đại số, dấu bằng có nghĩa là bằng, ở đây trong C, bằng
dấu hiệu có nghĩa là chuyển nhượng.
Vì vậy, nó có nghĩa là đặt những gì là bên phải vào những gì là bên trái.
Và chúng ta sẽ thấy biểu tượng khác, bằng bằng, khi chúng ta muốn thực sự thử nghiệm
về chất lượng, hơi khó chịu.
>> Nhưng đây là một chút không hiệu quả.
Đó là loại gây phiền nhiễu mà tôi có để khai báo một biến và
sau đó cung cấp cho nó một giá trị.
Do đó, C thực sự cho phép chúng ta đơn giản hóa này và chỉ cần làm tất cả cùng một lúc.
Bạn có thể khai báo biến bên trái.
Bạn vẫn có thể làm nhiệm vụ trên phải bằng cách đặt rằng dấu bằng trong
giữa.
Vì vậy, vào cuối ngày, hai là tương đương, nhưng lần này, thẳng thắn,
có lẽ là thói quen tốt để có được thành chỉ vì nó là một chút ít
mã, đó là một chút dễ dàng hơn để đọc, và nó chỉ thắt chặt lên
mã của bạn, do đó, để nói chuyện.
>> Bất kỳ câu hỏi vậy, đến nay trên các tuyến, trên biến về điều kiện, trên
Các phép toán luận, hoặc kỹ thuật hoặc khái niệm?
Được rồi.
Vì vậy, bây giờ tiếp theo này được một ít thú vị hơn.
Và đây là ví dụ tôi đưa ra cuối cùng thời điểm đó chỉ các bản đồ một ví dụ Scratch
qua C.
>> Vì vậy, một chức năng.
Trong điều khoản của layman, một chức năng là gì?
Đã nhận được táo bạo hơn với câu trả lời của bạn.
Một chức năng là gì?
>> HỌC SINH: Có một cái gì đó.
>> DAVID Malan: Cái gì thế?
>> HỌC SINH: Có một cái gì đó.
>> DAVID Malan: Có một cái gì đó.
OK.
Chúng tôi sẽ bắt đầu ở đó.
Vì vậy, một chức năng làm điều gì đó.
Vì vậy, nó là một đoạn mã đó là về cơ bản thực hiện ở những nơi khác mà
thực sự làm điều gì đó.
Bây giờ, những gì là thú vị về một chức năng là nó có thể có đầu vào,
và nó có thể sản xuất ra.
Và chúng ta đã thực sự mất xem này.
>> Vì vậy, người đàn ông phía sau bức màn là cố tình một thời điểm trước đây.
Ở đây chúng ta có một bảng.
Nhưng giả sử rằng điều này thực sự đại diện cho một hộp lớn.
Vì vậy, đây là một hộp đen được gọi là.
Và nói chung, trong thiết kế, trong máy tính khoa học, hộp đen chỉ cần tham khảo
miếng chức năng mà một người nào đó đã thực hiện, và bạn không
nhất thiết phải biết hoặc không quan tâm làm thế nào nó thực hiện bên dưới mui xe.
Bạn chỉ cần quan tâm rằng hộp đen này, mà bây giờ chúng tôi sẽ bắt đầu gọi một
chức năng, làm điều gì đó.
>> Vì vậy, ví dụ, nếu hộp đen này trên các sân khấu ở đây đại diện cho printf, một
chức năng, tôi biết từ ví dụ trước rằng printf có một hoặc nhiều
lập luận, và là người đầu tiên của những đối số phải là một chuỗi, như
"Hello, thế giới." Vâng, nếu tôi là người viết chương trình, và tôi muốn
sử dụng printf, tôi, ví dụ, năng có một mảnh giấy trắng ở đây và một
đánh dấu màu đen và viết về nó -
Tôi sai chính tả "thế giới" -
H-E-L-L-O.
>> Vì vậy, tôi sẽ có đánh dấu màu đen của tôi và tôi sẽ viết, lớn và rõ ràng nhất có thể trên
mảnh giấy này, "hello, thế giới," Và bây giờ tôi khẳng định đây là lý luận của tôi.
Đây là một chuỗi đại diện với một tờ giấy trắng.
Và đầu vào của tôi bây giờ với chức năng printf là có được điều này.
Vì vậy, tôi kêu gọi printf, đi qua rằng lập luận như đầu vào cho nó.
>> Và bây giờ, tôi không biết làm thế nào người người đã viết printf đã làm năm trước đây, nhưng
Tôi biết từ tài liệu của nó mục đích của nó trong cuộc sống là để in ra những gì tôi
cung cấp cho nó như là đầu vào.
Và vì vậy, mặc dù thực hiện điều này là không biết rằng tôi
bên dưới mui xe, bây giờ Tôi thấy, oh, nó được thực hiện.
Nó đã in một cái gì đó trên màn hình.
Và bây giờ kiểm soát của chương trình, nếu có là dòng mã, sẽ
bây giờ đã trở về với tôi.
Và do đó, thực tế là Colton -
chúc lành cho trái tim của mình, đang trốn dưới đây một bàn trước mặt tất cả các bạn -
là cố ý trong đó tôi không biết và tôi không quan tâm là printf
thực hiện.
Tôi chỉ biết, một lần nữa, từ của nó tài liệu, những gì nó làm và làm thế nào tôi
đang nghĩa vụ phải sử dụng nó.
>> Bây giờ, nhớ lại rằng printf có thể nhận được một phức tạp hơn một chút.
Một lần nữa, chúng tôi chỉ nói về tương đương với khối Say Scratch của.
Nhưng tôi cũng đã làm thời gian qua.
Tôi muốn thực hiện chương trình chào tôi một ít năng động hơn và không chỉ khó khăn
Mở một cái gì đó như "thế giới", và chắc chắn không phải cái gì đó cứng mã
tùy ý như D-A-V-I-D vào chương trình.
Tôi muốn yêu cầu người dùng của mình tên, và sau đó làm một cái gì đó với
rằng chuỗi mà họ cung cấp.
>> Vì vậy, có một chút gì đó khác nhau đây. printf, một thời điểm trước đây,
đã làm, thực sự, làm một cái gì đó, nhưng nó không trở về bất cứ điều gì với tôi.
Phải không?
Colton đã không đưa cho tôi bất cứ điều gì trở lại, không có mảnh giấy.
Không chỉ là một tác dụng phụ.
Cung cấp các "hello, thế giới" của tôi như một tham số để Colton dẫn đến việc
tác dụng phụ của một từ, một số từ, xuất hiện trên màn hình.
>> getString, mặc dù, là một chút khác nhau. getString cũng là một
hoạt động, nhưng nó sẽ trả về một số giá trị.
Nó không chỉ có một tác dụng phụ thẩm mỹ.
Nó thực sự mang lại cho tôi, người gọi điện thoại hoặc sử dụng chức năng,
một cái gì đó trở lại.
Vì vậy, trong trường hợp này, là getString gọi với getString mở
Dấu ngoặc đơn, dấu ngoặc đóng.
Không getString, do đó, có bất kỳ đối số hoặc đầu vào?
Không, có vẻ như không.
Mục đích của nó trong cuộc sống chỉ để có được một chuỗi.
Nó cần chi tiết không nhiều hơn thế.
Vì vậy, hãy để tôi đi trước và giả vờ rằng, một lần nữa, hộp đen này là không printf,
nhưng getString, và cho tôi, người viết chương trình này, gọi điện thoại hoặc sử dụng
GetString bởi chỉ cần viết G-E-T-S-T-R-I-N-G, mở dấu ngoặc, gần
Dấu ngoặc đơn, getString.
>> Bây giờ, tôi không có ý tưởng như thế nào CS50 nhân viên thực hiện getString, nhưng tôi biết rằng
nếu tôi chờ đợi đủ lâu, nó sẽ làm nó điều bên dưới mui xe, có thể sử dụng
một số biến, có thể sử dụng một số điều kiện, có thể sử dụng một số vòng,
có thể sử dụng một số chức năng, có thể sử dụng -
chỉ cố gắng để gian hàng - có thể sử dụng một số tính năng lập trình khác.
Nhưng nếu tôi chờ đợi đủ lâu - trong thực tế, trong máy tính, điều này xảy ra
siêu nhanh -
nếu tôi chờ đợi đủ lâu, chức năng này getString sẽ nhận được một chuỗi
từ người sử dụng, người có lẽ đó là cách gõ nó ra trên bàn phím của họ, và
sau đó, khi bạn getString được thực hiện nhận những nhân vật từ người sử dụng
và lưu trữ chúng vào một chuỗi, mà chức năng, getString, là sẽ có
sẵn sàng cho tôi một số đầu ra mà tôi sẽ lấy bằng cách của
phân công điều hành.
>> Và nếu tôi đi, thực sự, vào đầu ra đây, Obosi có hào phóng
tham gia, mà không biết này trong tạm ứng, bằng cách viết tên của mình lên này
biến, mà là đại diện cho một chuỗi.
Bây giờ, các nhà điều hành phân công có nghĩa là, ngay cả mặc dù điều này có thể cảm thấy một chút
dư thừa, tôi thực sự không cần để làm cho bản sao của riêng tôi về điều này.
Bởi vì trên tay trái bên - tả -
nhận thấy rằng tôi về cơ bản có chuỗi tên ở phía bên tay trái.
Vì vậy, tôi cũng sẽ làm cho bản sao của riêng tôi về điều này.
Và điều này là một chút của một lời nói dối trắng, bởi vì chúng ta sẽ thấy trong một hoặc hai tuần
thời điểm đó dây là không thực sự những gì chúng xuất hiện để được.
>> Nhưng bây giờ, đây là giá trị trả về.
Đây là bản sao của riêng của tôi về nó sau khi bằng cách sử dụng toán tử gán.
Và bây giờ, những gì tôi muốn làm gì tiếp theo?
Bây giờ chúng tôi có thứ hai của hai dòng mã.
Vì vậy, bây giờ tôi muốn gọi printf.
Hãy giả vờ bây giờ mà đen hộp là trở lại một lần nữa để được
printf và không getString.
>> Printf thời gian này sẽ có bao nhiêu đối số?
Vì vậy, nhìn, nó giống như hai.
Có hai dấu phẩy ở trong đó, nhưng một trong những dấu phẩy, nó
bên trong dấu ngoặc kép.
Vì vậy, tham số đầu tiên là nghĩa đen sẽ được điều này.
H-E-L-L-O, dấu phẩy, phần trăm s, dấu gạch chéo ngược-n.
Và bây giờ tôi đang cung cấp không phải là một đối số, nhưng hai đối số printf.
>> Và những gì printf phải làm với hai yếu tố đầu vào này sau khi tôi vượt qua họ trong
như các đối số?
Đó là nghĩa vụ để có những thứ hai của họ, mà tôi gọi tên, do đó
Phần thứ hai của bài báo tôi đã viết ra một thời điểm trước đây được gọi tên.
Nó sẽ cắm của giá trị bên trong đó biến thành giữ chỗ,
% S, do đó, một lần nữa, chỉ trong một thời điểm của thời gian, chúng ta sẽ thấy một tác dụng phụ của
đã gọi là printf, theo đó bây giờ chúng tôi nhìn thấy không "hello, thế giới", nhưng "xin chào,
Obosi. "
>> Vì vậy, người lớn vòng vỗ tay để cả hai tình nguyện viên của chúng tôi, chỉ có một người trong số họ biết
điều này sẽ xảy ra.
Được rồi.
Vì vậy, có lẽ, đơn giản vì đó là, chắc chắn, nếu bạn đã quen thuộc
có như vậy, hy vọng bạn sẽ không bao giờ quên rằng hình ảnh đặc biệt như thế nào
chức năng làm việc.
>> Do đó, có nhiều hơn chỉ là getString.
Bên trong của thư viện CS50, có một bó toàn bộ các chức năng, tất cả đều
được vốn chỉ để làm cho rõ ràng mà chúng tôi đã viết các chức năng này.
Thông thường, trong C, hầu hết các khác chức năng bạn sẽ sử dụng là chữ thường.
Nhưng chúng tôi cố tình sử dụng chữ in hoa chỉ để làm cho rõ ràng rằng những
là bánh xe đào tạo về các loại mà chúng tôi sẽ sử dụng cho chỉ một vài tuần mà
đơn giản hóa quá trình nhận đầu vào từ người sử dụng.
>> Thư viện CS50 không làm bất cứ điều gì mà bạn mình không thể làm được bởi
chỉ sử dụng mã C từ một sách giáo khoa oldschool.
Nhưng, một lần nữa, chúng ta sử dụng chúng như đào tạo bánh xe của các loại cho chỉ một vài
tuần để chúng ta có thể thoát khỏi sự phức tạp mà bạn sẽ sớm hiểu
mình làm một cái gì đó như tương đối đơn giản như nhận được
đầu vào từ người sử dụng.
>> Vì vậy, biết rằng bạn sẽ có thể truy cập để getchar, GetDouble -
tăng gấp đôi.
What's - và sau đó GetFloat.
Một phao là những gì?
Hãy bắt đầu ở đó.
>> HỌC SINH: [nghe được].
>> DAVID Malan: Vâng.
Đó là một số với một dấu thập phân.
Vì vậy, trong khi một số nguyên là một số nguyên, mà chỉ là một số với 0 đến 9,
một số số lần lặp lại của chúng, một phao là một cái gì đó
với một dấu thập phân.
Và một đôi, trong khi đó, cũng là một số với dấu thập phân, nhưng hơn
số sau dấu thập phân điểm, có khả năng.
>> Vì vậy, chúng tôi sẽ quay trở lại này trước khi dài.
Nhưng thông thường, mỗi loại dữ liệu, mỗi loại biến
một thư viện như chúng ta có thể trở lại bạn, sử dụng các số khác nhau của các bit để
lưu trữ thông tin.
Thông thường, một Char, mà chỉ có nghĩa một nhân vật, sử dụng 8 bit.
Và đó là thực sự phù hợp với chúng tôi byte của tình nguyện viên tuần trước người
đã đưa ra và đại diện cho một Ascii nhân vật tại một thời điểm.
Vì vậy, một Char là 8 bit.
>> Một nổi sẽ xảy ra 32 bit, thông thường.
Và một đôi, như bạn có thể đoán, là 64 bit thực sự, mà chỉ là nhiều hơn,
có nghĩa là bạn có thể có lớn hơn số hoặc chính xác hơn.
Nhưng một lần nữa, thêm vào đó một thời gian.
GetLongLong Trong khi đó, mặc dù ngớ ngẩn tên, thực sự chỉ là một
số nguyên đó là lớn gấp đôi, gấp đôi dài, có khả năng, như một thường xuyên
số nguyên, 64 bit thay vì 32.
Và GetString chúng tôi đã sử dụng.
>> Nhưng nó quay ra, trong thư viện CS50, được thực hiện, như chúng ta sẽ thấy, trong
hình thức của hai tập tin, một trong số đó được gọi là cs50.h, có hai khác
các kiểu dữ liệu trong đó.
Các phép toán luận không tồn tại trong C. Bạn có thể mô phỏng chúng bằng cách chỉ sử dụng 0 và 1
trong chương trình của bạn.
Nhưng chúng tôi trong thư viện CS50 đã tạo các biểu tượng "đúng" và "sai"
đại diện cho 1 và 0, do đó bạn không phải cứng mã một cái gì đó
nghĩa đen như 1 và 0.
Nhưng chúng ta sẽ thấy những người một lần nữa.
>> Chuỗi, cũng không tồn tại.
Và đó là lý do tại sao tôi đã đề cập đó là một chút của một lời nói dối trắng cho bây giờ.
Nhưng chúng tôi sẽ trở lại vỏ mà lớp trước khi dài.
Nhưng hiện nay, một chuỗi là một chuỗi các ký tự.
>> Trong khi đó, trong C, bạn thực sự có các loại dữ liệu khác nhau.
Nhận thấy đây là những chữ thường.
Vì vậy, các chức năng mà bạn nhìn thấy một thời điểm trước đây được chức năng được viết bởi CS50 mà
sẽ trả lại cho bạn một giá trị rơi vào một trong các loại này.
>> Một vài giấy ăn gian chỉ để trồng hạt giống ở đây. printf không chỉ
có% s như giữ chỗ.
Nó có% d cho số nguyên thập phân, hoặc% tôi sẽ làm việc tốt.
% F là nổi các giá trị điểm. % C là cho một char, nếu bạn muốn chỉ cần cắm một
nhân vật thành một chuỗi định dạng sẵn như chúng ta đã làm, bạn có thể sử dụng% c.
>> Và sau đó, hơi khó chịu,% lld là cho một chặng đường dài, số nguyên thập phân dài,
mà chỉ có nghĩa là nếu bạn cần một thực sự số lượng lớn và bạn đang sử dụng một cái gì đó
gọi là lâu dài, chúng ta sẽ đến trở lại trong một pset, bạn có thể sử dụng% lld để
nói printf, cắm vào một thực sự lớn số nguyên ở đây bằng cách thứ hai hoặc
một số lập luận khác.
>> Và cuối cùng, tôi hứa rằng có một vài lối thoát khác
trình tự printf hỗ trợ.
Chúng tôi đã nhìn thấy dấu gạch chéo ngược-n.
Dấu gạch chéo ngược-r bạn có thể thấy.
Đó là loại một điều trường học cũ.
Nếu bạn đã từng sử dụng một máy đánh chữ năm thực trước và bạn kéo trên tay quay
không chỉ xoay bánh xe để di chuyển đội hình, nó cũng di chuyển
toàn bộ điều tất cả các cách trở lại qua bên trái, tốt, dấu gạch chéo ngược-r chỉ
về cơ bản di chuyển con trỏ chuột của bạn trở lại đến đầu dòng
mà không cần di chuyển nó xuống.
Nhưng một lần nữa, thêm vào đó, có lẽ, trong tương lai.
>> Dấu gạch chéo ngược báo giá, dấu gạch chéo ngược-nháy kép, dấu gạch chéo ngược-dấu chéo ngược là
giải pháp cho chút bí ẩn nhỏ Tôi ám chỉ trước đó.
Và dấu gạch chéo ngược-0 thực sự khá thú vị.
Nhưng chúng tôi sẽ trở lại mà chẳng bao lâu.
>> Vì vậy, hãy để tôi đi vào, bây giờ, CS50 thiết bị, và chúng ta hãy thực sự làm một
nhanh chóng khởi động với một trong những ví dụ chúng tôi đã và sau đó chuyển sang
một chút gì đó phức tạp hơn.
Vì vậy, nếu tôi mở ra chương trình của tôi gọi là gedit -
đây là biên tập viên đồ họa của tôi.
Và tôi có thể làm điều đó -
hãy để tôi đóng cửa sổ đó có -
bằng cách biểu tượng này xuống đây, gedit, ở dưới cùng bên trái
góc cạnh trình đơn.
>> Tôi sẽ đi trước và tạm ứng, và tiết kiệm ví dụ này vào, nói, John
Thư mục của Harvard.
Thư mục John Harvard chỉ là nhà của mình thư mục nơi mà tất cả các tập tin của mình sống
theo mặc định.
Và tôi sẽ tiết kiệm này là một tập tin hello-0.c.
Và tôi đã chọn tên này chỉ để nó đường dây với các mẫu mã trên
trang web khóa học và trong các Video trực tuyến YouTube.
>> Vì vậy, bây giờ tôi sẽ bắt đầu viết chương trình đầu tiên của tôi.
Hãy để tôi phóng to cho dễ đọc.
Và tôi sẽ đi trước và nói int void main, mà chỉ là như thế
vàng mảnh ghép đó bắt đầu một chương trình.
Tôi đã nhận được vào các thói quen trong năm mở ngoặc móc của tôi, sau đó
cũng đóng nó và sau đó sẽ trở lại nơi mà tôi muốn đặt mã của tôi, chỉ cần
bởi vì nó giúp tôi giữ tất cả mọi thứ cân bằng, đặc biệt là của tôi
chương trình được lâu.
>> Và bây giờ, ở đây, tôi sẽ đi trước và nói, printf, trích dẫn unquote,
hello thế giới, dấu gạch chéo ngược-n, trích dẫn gần, ngoặc gần, dấu chấm phẩy.
Vì vậy, tôi chỉ lặp đi lặp lại tất cả mọi thứ chúng tôi đã được dùng cho các cấp cho đến nay.
Bây giờ tôi sẽ để thu nhỏ.
>> Và cửa sổ thiết bị đầu cuối này xuống đây, những gì tôi được phép làm trong này đen
và cửa sổ màu trắng?
Những gì tôi có thể sử dụng nó cho?
Vì vậy, đây là nơi mà tôi chạy các lệnh và nơi mà tôi có thể biên dịch mọi thứ.
Và tôi sẽ giữ nó đơn giản.
Tôi sẽ sử dụng một chương trình Hãy gọi, mà không phải là
về mặt kỹ thuật một trình biên dịch.
Của trình biên dịch gọi là kêu vang, nhưng chúng tôi sẽ trở lại trong một
tuần hoặc thời gian của hai.
>> Còn bây giờ, tôi chỉ cần đi để gõ làm hello-0, Nhưng những người bạn của những người
so sánh trong tâm trí của bạn những gì tôi chỉ gõ những gì tôi nên đã gõ có thể
đã biết rằng tôi đã làm một cái gì đó sai trái ở đây.
Bây giờ, có một số lỗi rõ ràng.
Trước khi tôi nhìn vào những gì họ đang có, bất kỳ suy nghĩ như những gì tôi đã làm sai?
>> SINH VIÊN: [interposing GIỌNG NÓI].
>> DAVID Malan: Vâng.
Tôi là thiếu tập tin tiêu đề của thư viện.
Bất kỳ của những tập tin h. Được gọi là tiêu đề tập tin, và họ chung
thuộc về những thứ gọi là thư viện.
Thư viện chỉ là khối mã mà người khác đã viết.
Vì vậy, [tiêu chuẩn? i] thư viện? là một bộ sưu tập các tập tin có chứa mã
mà người khác đã viết.
>> Vì vậy, tôi đang mất tích mà.
Vì vậy, tại sao tôi lại nhận được một lỗi?
Vâng, hãy để tôi di chuyển trở lại trong cửa sổ thiết bị đầu cuối của tôi ở đây.
Và thật không may, trong C, như trong rất nhiều ngôn ngữ lập trình, đặc biệt là
nếu đó là tất cả mới cho bạn, lỗi thông điệp này là chính xác, nhưng chúng tôi cũng
khá khó hiểu.
Và lỗi ở đây, màu đỏ, là "Ngầm tuyên bố chức năng thư viện
printf với loại, "và sau đó nó cuộn đến dòng kế tiếp, "int const char *,
... "Nó chỉ được thực sự áp đảo một cách nhanh chóng.
>> Nhưng những gì bạn nên bắt đầu làm, nếu, một lần nữa, mới đến tất cả điều này, chỉ là để
bắt đầu tìm kiếm từ khóa.
Rõ ràng, tôi có thể không hiểu một nửa của những lời tôi đang nhìn thấy chỉ được nêu ra.
Bạn sẽ, tuy nhiên, trong thời gian một tuần.
Nhưng tôi thấy printf.
Và nên bắt đầu, trước khi dài, chạy bộ nhớ của bạn, tất cả các bên phải, printf.
Một cái gì đó sai với printf.
Tôi đã đánh vần sai không?
Không, nó không giống như - oh.
Tôi không thể sử dụng nó, trừ khi tôi dạy trình biên dịch mà nó tồn tại.
Và như vậy, một lần nữa, đi với bản năng của bạn, ngay cả khi bạn không thực sự hiểu
các thông báo lỗi thực tế.
>> Và quả thực, giải pháp ở đây là để chỉ bao gồm nó ở trên cùng của tập tin
như thế, resaving tập tin của tôi với Kiểm soát-S hoặc menu File.
Và nếu tôi bây giờ đi xuống đây, Tôi sẽ rõ ràng điều này.
Kiểm soát-L chỉ là một cách tốt đẹp để xóa màn hình.
Và sau đó tôi sẽ gõ "làm cho chào 0 "Enter, và bây giờ tôi vẫn thấy
trình tự khó hiểu của các biểu tượng, nhưng chúng tôi sẽ quay trở lại đó.
Đó là những gì làm đang làm cho bạn.
Nó tự động hoá quá trình lấy một lệnh khá khó chịu liên quan đến
Kêu vang, trình biên dịch thực tế.
Nhưng thực tế là tôi đã không có lỗi có nghĩa là rằng điều này sẽ làm việc.
>> Vì vậy, bây giờ tôi sẽ làm gì - hãy để tôi phóng to một lần nữa -
./hello-0 Enter, và quả thật, tôi thấy "Hello, thế giới." Vì vậy, bây giờ chúng ta nâng cao
này bao giờ nên hơi chỉ để nhân rộng các bước chúng tôi dự định.
Tôi sẽ đổi tên này với Save As để hello1.c.
Và bây giờ tôi sẽ khai báo một biến gọi tên, vì vậy tên chuỗi,
và tôi sẽ đưa nó giá trị của báo-unquote
D-A-V-I-D gần quote dấu chấm phẩy.
Và bây giờ tôi sẽ thay thế "thế giới" với những gì giữ chỗ cho một chuỗi?
% S.
>> Và bây giờ, có bao nhiêu đối số nên printf mất thời gian này?
Vì vậy, hai.
Vì vậy, tôi đi ra ngoài các dấu ngoặc kép.
Tôi gõ "tên" sau dấu phẩy.
Nhưng tôi đã làm điều gì đó sai khác thời gian này.
Nhưng chúng ta hãy giả định rằng tôi đã không nhận ra rằng chưa.
Hãy để tôi đi lên đây.
>> Và thông báo, quá, tôi nhận được một chút chán gõ "làm cho chào 0" tất cả các
thời gian, "làm" và tất cả điều này.
Vì vậy, nó quay ra, trong Linus bạn có thể thường nhấn phím mũi tên lên trên của bạn
bàn phím, và bạn thực sự có thể di chuyển thông qua tất cả các lệnh mà chúng tôi đã
thực hiện trước đó ngay bây giờ.
Vì vậy, nếu tôi làm điều đó, Up, Up, có thực hiện chào 0.
Tôi không muốn điều đó.
Tôi chỉ muốn thay đổi điều đó để xin chào 1 thời gian này, Enter.
Cuối cùng, mà sẽ giúp bạn tiết kiệm thời gian.
>> Được rồi.
Thật không may, có được một lỗi.
Vì vậy, hãy để tôi di chuyển lên.
Điều này có vẻ như tôi thực sự tàn sát chương trình này.
Ý tôi là, thần của tôi, đó là hai dòng mã, và 10 dòng của lỗi.
Nhưng nhìn vào một đầu đầu tiên.
Sử dụng không khai báo chuỗi nhận dạng.
Tôi có nghĩa là tiêu chuẩn tôi n?
Không có tôi thì không.
Tôi có nghĩa là chuỗi.
>> Nhưng mà là biến chuỗi kiểu được khai báo, dd chúng ta nói?
Vì vậy, trong CS50 thư viện.
Vì vậy, nó không đủ, trong những lần đầu tiên vài tuần, chỉ để sử dụng
những gì C cho chúng ta.
Tôi cũng sẽ đi lên ở đây, và tôi có thể đặt nó ở trên hoặc dưới đây, nhưng tôi sẽ
chỉ cần giữ cho nó chữ cái để giữ cho mọi thứ có trật tự.
Tôi sẽ bao gồm cs50.h, được cài đặt sẵn cho
bạn trên các thiết bị CS50.
Và nó là mã nguồn mở, vì vậy ngay cả người trên internet có thể sử dụng nó trên của họ
máy tính riêng.
Nhưng nó đi kèm với thiết bị CS50.
>> Vì vậy, bây giờ hãy để tôi quay trở lại và biên dịch lại này làm cho chào 1.
Chết tiệt.
Vẫn còn một lỗi khác.
Hãy để tôi di chuyển đến đầu tiên, mặc dù.
Điều này là một chút phức tạp.
Nhân vật đa tính cách liên tục.
Đó không phải là giúp đỡ tôi.
Nhưng thông báo, kêu vang ít nhất là một chút bit phong nha, theo đó với một chút
màu xanh lá cây biểu tượng dấu nháy, nó nói đây là nơi mà tôi hơi say lên.
Tại sao nó chỉ, với ít màu xanh lá cây mũi tên, để giá duy nhất tiếp theo
để tên của tôi?
>> Vì vậy, đây là một trong những điều bạn chỉ được sử dụng để, đặc biệt là nếu bạn đã được
lập trình Python, hoặc JavaScript, hoặc các ngôn ngữ khác, nơi mà chi tiết này
không quan trọng.
Trong C, nó không thành vấn đề.
Nếu bạn đang khai báo một chuỗi, đó là một chuỗi các 0 hoặc nhiều ký tự,
bạn thực sự phải sử dụng dấu ngoặc kép.
Vì vậy, tôi thực sự cần phải thay đổi trở lại để mở báo giá, đóng cửa giá, với
dấu ngoặc kép.
Báo giá duy nhất không có chỗ đứng của họ, nhưng chỉ khi bạn đang sử dụng cá nhân
ký tự, nhưng thêm vào đó một thời gian.
Hiện tại, các dấu ngoặc kép là cần thiết.
>> Bây giờ, chúng tôi quay trở lại nhà ga của tôi cửa sổ, hãy chào 1.
Và những người tự tin?
Được chương trình này ngay bây giờ đi để biên dịch một cách chính xác?
OK.
Vì vậy, ba chúng tôi nghĩ rằng đây.
Được rồi.
Nhập.
Và nó thực sự đã làm.
Vì vậy, không có lỗi thời gian này, ngay cả mặc dù chương trình này đã nhận được một chút
phức tạp hơn.
Nếu bây giờ tôi làm dấu chấm dấu gạch chéo chào 1, Enter, nó sẽ nói "xin chào, David."
>> Nhưng chúng ta hãy làm phiên thứ ba điều này, nơi
chương trình thực sự là năng động.
Hãy để tôi đi trước và thay đổi tập tin tên, chỉ cho phù hợp với các
tập tin bạn sẽ có sẵn để bạn sau đó trực tuyến.
Nhập.
Và bây giờ tôi sẽ đi vào và không lưu trữ "David" cứng mã hoá ở đây.
Tôi có thể làm gì để rất đơn giản cải thiện chương trình này?
>> Tôi có thể gọi getString.
Nó có thể là một không rõ ràng những gì là ít sắp xảy ra, vì vậy tôi sẽ
để thực sự thêm một dòng khác, printf, và nói tên, đại tràng, trích dẫn gần, chỉ cần
để cung cấp cho người sử dụng một dấu nhắc trên màn hình.
Và bây giờ tôi sẽ đi đây, và tôi sẽ sử dụng phím tắt bàn phím của tôi.
Tôi sẽ đi Up, Up, và thay đổi xin chào 1 đến hello 2, Enter.
Và may mắn thay, tôi đang đạt được tiến bộ.
>> Và bây giờ tôi sẽ đi lên để chấm dấu gạch chéo chào và
thay đổi điều đó với 2, Enter.
Và bây giờ chương trình của tôi -
Tôi sẽ phóng to - là nhận được một chút đẹp hơn.
Tên là có được, chúng ta hãy nói Rob thời gian này, Enter, xin chào, Rob.
Chúng ta có thể làm điều đó một lần nữa.
Tên, Lauren, Enter.
Tên, Joseph, Enter.
Tên, chúng ta hãy cố gắng để được khó khăn, Enter.
Eh.
Nó không thực sự là một lỗi.
Vì vậy, nó chỉ là một chút xấu xí.
Vì vậy, có lẽ chúng ta có thể giải quyết trong tương lai, không phải bây giờ.
>> Nhưng làm thế nào bạn sẽ theo bản năng đi về giải quyết
rằng thách thức đặc biệt?
Nó chỉ có vẻ ngu ngốc.
Làm thế nào để tránh những điều tìm kiếm ngu ngốc?
Vì vậy, chúng ta có thể làm, OK, tôi nghe một vài của sự vật, một điều kiện và vòng lặp.
Chúng tôi có thể sử dụng, một, một điều kiện, kiểm tra chiều dài của chuỗi là những gì
người sử dụng đã cho chúng tôi?
Và nếu nó là 0, nó chỉ trích unquote, họ chỉ cần nhấn Enter, sau đó
có lẽ tôi nên hét vào mặt họ và nhắc nhở họ một lần nữa.
Nhưng làm thế nào để một nhắc nhở họ một lần nữa?
Vâng, tôi cũng nghe nói vòng lặp, và tôi có thể làm điều đó một lần nữa và một lần nữa và một lần nữa
khiến người sử dụng cho cùng một điều.
>> Vâng, chúng ta hãy làm một ví dụ khác bằng cách sử dụng khác nhau
chức năng trong thư viện CS50.
Hãy để tôi đóng tập tin này.
Hãy để tôi tạo một hình mới.
Và tôi sẽ gọi nó là adder.c, chỉ vì thật dễ dàng để làm phép tính đơn giản,
mặc dù điều này sẽ hoàn toàn underwhelming với những gì bạn có thể làm
với bất kỳ máy tính hiện đại.
>> Nhưng hãy để tôi đi trước và bây giờ -
Tôi đã học được bài học của tôi thời gian qua - bao gồm cs50.h, bao gồm stdio.h, int
void main, mà, bây giờ, tôi sẽ chỉ có trên niềm tin mù quáng, nhưng chúng tôi sẽ giả định
sẽ hiểu những gì có nghĩa là trước khi dài.
Và tôi sẽ nói điều gì đó như "cung cấp cho tôi một số nguyên."
>> Và bây giờ, làm thế nào để tôi nhận được một int?
Tôi muốn cuối cùng là khai báo một biến x gọi là kiểu int và
lưu trữ trong nó một số nguyên từ người sử dụng.
Vì vậy, đó là một miếng.
Nhưng nếu ai đó muốn đề xuất, làm thế nào Tôi tuyên bố một số nguyên được gọi là x?
Int x.
>> Vì vậy, nó thực sự là đơn giản.
Cung cấp cho tôi một int.
Gọi nó là x.
Bây giờ tôi sử dụng toán tử gán.
Và làm thế nào để lưu trữ từ để lại một giá trị của người sử dụng?
Tôi không muốn gọi getString, rõ ràng, nhưng thay vì getInt.
Bất kỳ đối số?
Không.
Vì vậy, nó mở dấu ngoặc, đóng dấu ngoặc ngay lập tức, và sau đó một
dấu chấm phẩy kết thúc dòng.
>> Bây giờ hãy để tôi làm điều này một lần nữa.
Cho tôi int khác.
Lần này tôi sẽ làm int, chúng ta hãy gọi nó là y, bằng getInt.
Và bây giờ hãy để tôi làm một cái gì đó siêu đơn giản như một số toán học.
Vì vậy, printf, tổng của% d là giữ chỗ cho một int.
Và% d, thời gian, dấu gạch chéo ngược-n.
>> Được rồi.
Vì vậy, đó không phải là thực sự toán học.
Nhưng nếu tôi muốn nói số tiền này giá trị cộng với giá trị này bằng này
giá trị khác, bao nhiêu đối số vào tổng tôi nên được đưa ra printf,
cuối cùng?
Vì vậy, bốn, phải không?
Chuỗi này và sau đó là ba giá trị.
Vì vậy, x là lần đầu tiên tôi muốn được cắm vào đầu tiên d%.
y sẽ là người tiếp theo.
>> Và bây giờ tôi loại muốn nói z, z nhưng không tồn tại.
Nhưng đó không phải là một việc lớn.
Bởi vì những gì bạn sẽ làm theo bản năng, đặc biệt là nếu bạn đã có một
đồ họa máy tính, những gì bạn gõ?
Làm thế nào về việc này cộng với y?
Vì vậy, nó không phải là một biến thực tế.
Nó chỉ là tổng của hai các biến số khác.
Và đó là hoàn toàn hợp pháp.
C chắc chắn hiểu đơn giản số học như thế này.
>> Dấu chấm phẩy, tiết kiệm.
Bây giờ chúng tôi đi xuống đây và loại làm cho bộ cộng, Enter.
Không có lỗi, vì vậy đó là tiến bộ quá.
Nhập cộng.
Và một phím tắt, nếu bạn bắt đầu cảm thấy buồn chán
với tất cả các lệnh -
nếu bạn bắt đầu gõ một lệnh, như dấu chấm cắt giảm quảng cáo, và đó là nơi của bạn
sự nhàm chán trong đá, bạn thường có thể nhấn Tab để có máy tính kết thúc
phần còn lại của cụm từ cho bạn nếu nó không không rõ ràng những gì cần đến sau khi quảng cáo.
>> Vì vậy, hãy để tôi đi trước bây giờ và bạn nhấn Enter.
Cung cấp cho tôi một int, 1, 2, và may mắn, đó là 3.
Nhưng như mọi khi, các chương trình thử nghiệm không nên giảm xuống
chỉ cần cố gắng một lần.
Hãy để tôi thử một trường hợp góc, như tiêu cực 1, cho tôi 1, và một
kiểm tra ra là tốt.
Và tôi có thể muốn làm một số chi tiết thử nghiệm nghiêm ngặt, nhưng tôi khá
thoải mái với nơi đó là ở.
>> Vâng, bây giờ chúng ta hãy thử một chương trình khác lần này sử dụng một
chút cú pháp khác.
Hãy để tôi tạo ra một tập tin mới.
Tôi sẽ gọi conditions0.c này xếp hàng với một số mã trực tuyến mẫu.
Và để cho tôi đi trước và làm bao gồm cs50.h, bao gồm
stdio.h, trong khoảng trống chính -
OK.
Có chúng tôi đi.
Chúng tôi đã soạn tiêu chuẩn của chúng tôi.
>> Và lần này tôi sẽ nói printf, "Tôi muốn một int, xin vui lòng", chỉ để
làm cho dấu nhắc một chút thân thiện hơn.
Và bây giờ tôi muốn có được một int từ người sử dụng.
Tôi sẽ gọi nó là n thời gian này, chỉ cần vì n giống như âm thanh số.
getInt, và bây giờ, những gì làm Tôi muốn làm gì với nó?
Vâng, nếu n là - và tôi sẽ phóng to -
nếu n là lớn hơn 0, tôi muốn làm như sau -
printf "Bạn đã chọn một số tích cực." Khác, tôi sẽ gõ printf "Bạn
chọn một tiêu cực
số. "Được rồi.
Vì vậy, chương trình này, mặc dù tôi đã làm nó nhanh, có vẻ đúng cú pháp.
Hãy để tôi thử này.
Làm cho tình trạng 0.
Có vẻ chạy.
Điều kiện 0, nhập.
Hãy cung cấp cho nó một int 50.
Tôi chọn một số dương.
Chúng ta hãy thử lại lần nữa.
Tình trạng 0.
Tiêu cực 50.
Tôi chọn một số âm.
>> Nhưng bây giờ, hãy để tôi chọn những gì chúng tôi sẽ tiếp tục kêu gọi một trường hợp góc, mà là nhiều hơn
một trường hợp thú vị mà bạn nghĩ có thể cung cấp cho bạn một số rắc rối, 0.
Bây giờ, tôi khá chắc chắn đây là một trong những trường hợp góc, nơi không có
không tích cực hay tiêu cực, vì vậy tôi chương trình, mặc dù trong cú pháp
sửa chữa - nó biên dịch, nó chạy - là không hợp lý chính xác.
Vì vậy, việc sửa chữa đơn giản là những gì ở đây nếu tôi muốn để phát hiện, nếu tôi muốn xử lý n
bằng 0 cách riêng biệt?
>> Vì vậy, nếu n bằng 0, sau đó tôi muốn nói một cái gì đó giống như printf "Bạn chọn 0."
Hãy để tôi thử này ngay bây giờ.
Hãy để tôi quay trở lại đây, rõ ràng cửa sổ của tôi, và biên dịch lại.
Hm.
Một lỗi tạo ra.
Nhưng tôi nào bạn muốn kiểm tra nếu n bằng 0.
>> Vì vậy, một lần nữa, một điều ngu ngốc để có được sử dụng để, dấu bằng là
các nhà điều hành chuyển nhượng.
Vì vậy, đây thực sự là sai lầm trong đó, về mặt kỹ thuật, mặc dù trình biên dịch
bảo vệ tôi từ bản thân mình, chúng tôi kỹ thuật được sao chép vào 0 n,
không phải là những gì tôi muốn.
Tôi muốn thử nghiệm cho sự bình đẳng với bằng bằng.
Và để bây giờ có thể giải pháp tốt hơn tôi.
>> Hãy để tôi thực sự lưu lại này như, nói, conditions1, là mới và được cải thiện.
Vì vậy, bây giờ nếu tôi biên dịch lại này, nó sẽ làm cho điều kiện -
Lỗi chính - làm conditions1 dấu chấm dấu gạch chéo conditions1, Enter, "Tôi muốn một int,
xin vui lòng. "Tôi sẽ đi trước và gõ 50.
Nó vẫn còn tốt.
Âm 50, vẫn còn tốt.
0, và nó, thực sự, phát hiện mà tôi đã chọn 0.
>> Vì vậy, nhiều hơn những gì tôi có thể làm bây giờ với điều này?
Vâng, chúng tôi chắc chắn có thể làm ngày càng những điều phức tạp.
Nhưng những gì tôi muốn đề xuất là mà chúng ta kết thúc trên ghi chú này đây.
Nếu chúng ta kéo lên này, bạn sẽ thấy, có lẽ, một phim hoạt hình yêu thích của bạn
cho đến hôm nay em có thể không bao giờ hiểu.
Và đó là về chất lượng của tiếng cười bạn sẽ nhận được với CS cười.
Vì vậy, đó là về bên phải.
>> Nhưng compellingly hơn, tôi nghĩ rằng tôi muốn cung cấp cho chúng tôi một chút teaser thứ hai.
Vì vậy, chúng tôi đã bắt đầu sử dụng các số nguyên.
Chúng tôi đã gọi nổi.
Chúng tôi thậm chí đã gọi tăng gấp đôi, trong đó, một lần nữa, cung cấp cho bạn số
sau khi các điểm thập phân.
>> Nhưng nó quay ra rằng nổi và tăng gấp đôi, và, thực sự, máy tính,
về cơ bản, không thể diễn tả một số giá trị chính xác.
Chúng ta biết từ các lớp học toán mà bạn có thể có bất kỳ số lượng các số sau
số thập phân điểm.
Và thậm chí bạn có thể đặt một thanh thẳng đứng để nói những đi mãi mãi.
>> Thật không may, bạn có thể không thực sự làm điều đó trong một máy tính.
Và vì vậy trường hợp góc phát sinh.
Ví dụ, giả sử bạn làm một cái gì đó về tài chính.
Bạn đang làm toán học với tỷ lệ phần trăm, và
với đồng đô-la.
Và những xu không nhất thiết phải xếp hàng.
Vâng, nó chỉ ra rằng thành phần của đồng xu có thể bắt đầu tăng lên khi
mô hình với một hệ thống máy tính trong một cách mà thông minh
con người có thể tận dụng lợi thế.
>> Và những người bạn, những người đã không nhìn thấy, tôi muốn muốn cung cấp cho bạn một lời trêu ghẹo 30 giây
một bộ phim tuyệt vời được gọi là Văn phòng, mà sẽ vẽ một bức tranh của một
vấn đề chúng ta sẽ giải quyết Điều đầu tiên vào hôm thứ Hai.
Nếu chúng ta có thể tăng khối lượng một chút, tôi cung cấp cho bạn 30
giây của văn phòng.
>> [VIDEO xem lại]
>> -Ý tôi là, bạn, bạn đã không được thể hiện và bạn có thể tiếp tục công việc của bạn.
>> -Thực ra, tôi đang được xúc tiến.
>> -Tôi có thể lập trình một loại virus mà muốn rip là nơi ra thời gian lớn.
>> -Vâng, như thế nào?
>> -Mỗi khi có một giao dịch ngân hàng nơi mà lãi suất được tính toán, và có
hàng ngàn một ngày, các máy tính kết thúc với các phần phân đoạn của một xu.
>> -Nhưng tôi sẽ không làm bất cứ điều gì bất hợp pháp.
>> -Bất hợp pháp?
Samir, đây là nước Mỹ.
>> -Chúng ta phải thề có Chúa.
>> -Nếu không ai biết về việc này nhưng chúng ta, tất cả phải không?
Không gia đình, không bạn gái, không ai.
>> -Tất nhiên rồi.
>> -Đồng ý.
>> -Đừng lo lắng, người đàn ông.
Tôi sẽ không nói với ai.
>> [END xem video]
>> DAVID Malan: Vì vậy, đây, sau đó, là CS50, đó là Văn phòng, và nó sẽ tất cả
có ý nghĩa vào hôm thứ Hai.
Hẹn gặp lại sau đó.
>> Người kể chuyện: Tại CS50 sau, Rob điều chỉnh để được ra khỏi
Kế hoạch bữa ăn Harvard.