[Powered by Google Translate] DAVID Malan: Đây là CS50, và đây là sự bắt đầu của Tuần 1.
Những gì chúng tôi nghĩ rằng chúng tôi muốn làm là nhìn lại
một cái gì đó nhiều người trong các bạn có thể đi ngang qua đối với một số
Hiện tại và có thể nhìn một chút quen thuộc.
Điều này ở đây, điều này tất nhiên là trong -
Khán giả: Khoa học.
DAVID Malan: Khoa học trung tâm.
Vì vậy, đây thực sự là một trong những máy tính đầu tiên
sao từ những năm 1940.
Đó là một trong những máy tính điện đầu tiên
đó là có khả năng đặc biệt dài,
tính toán tự duy trì, và những gì chúng tôi thực sự nhìn thấy trong
trung tâm khoa học chỉ là đôi chút về điều này.
Những gì chúng tôi nghĩ rằng chúng tôi muốn làm sau đó là hãy xem lại video
đã được thực hiện một số thời gian trước đây, giới thiệu này
điều thế giới.
Và bạn sẽ thấy từ âm nhạc và giọng nói đó thực sự là những
là thời gian rất hạnh phúc.
>> [VIDEO PLAYBACK]
-A chiến thắng của kỹ năng toán học và cơ học này
mới tự động máy tính tại Đại học Harvard.
Vấn đề phức tạp trong toán học, thông qua các
máy ở dạng mã hóa trên băng, chính xác giải quyết trong một
phút phần của thời gian cần thiết cho con người
tính toán.
Được thiết kế để tiến hành tất cả các hình thức của toán học và khoa học
nghiên cứu cơ khí, gã khổng lồ não sẽ làm việc cho Hoa
States Navy cho đến khi chiến tranh kết thúc.
>> DAVID Malan: Vì vậy, những gì bạn có thể không biết rằng đó là
thiết bị này là một thuật ngữ tất cả chúng ta bây giờ có khá nhiều
cho là đương nhiên được đặt ra, đó là một lỗi.
Vì vậy, một trong những kỹ sư làm việc trong máy tính này
nghĩa là tìm thấy một con bướm đêm nhỏ trong máy mà kết quả
trong một số tính toán không chính xác.
Và khi câu chuyện đi sâu bướm đã được ghi âm sẵn để đăng nhập này
ở báo này, từ ngày 9 tháng 9 trong một cái gì đó-1940,
và do đó đã được sinh ra cho thế giới thuật ngữ "lỗi".
Vì vậy, từ nay trở đi chúng ta xem xét lỗi là bất kỳ loại sai lầm trong
các chương trình, cho dù con người tạo ra hoặc trong trường hợp này, côn trùng.
>> Vì vậy, một vài thông báo, như chúng ta tiến hành.
Vì vậy, CS50 có truyền thống cung cấp bữa ăn trưa của các loại
hầu hết các thứ Sáu trong học kỳ, nơi chúng tôi mất 30
40 sinh viên Fire và Ice tại Quảng trường cho chơi game ngẫu nhiên
chuyện tán gẫu, nói chuyện về khoa học máy tính,
nói về tương lai.
Chúng tôi mời các cựu sinh viên và bạn bè từ ngành công nghiệp trò chuyện
sinh viên là tốt.
Thực sự hướng tới một kết thúc làm cho một lớp học khá lớn là những gì
tất cả các thân mật hơn, ít nhất là một lần trong thời gian cho
tập hợp con của học sinh.
Vì vậy, nếu bạn muốn tham gia với chúng tôi vào thứ sáu này, 1:15 PM, đi đến
CS50.net/lunch RSVP.
Và chúng tôi sẽ làm điều này recurringly, do đó, không phải lo lắng nếu bạn không
những người đầu tiên 30 hay như vậy trong tuần này.
>> Vì vậy, ghi chú ghi chép.
Một từ trên các nguồn tài nguyên mà bây giờ sẽ bắt đầu được có sẵn
học sinh trong lớp.
Vì vậy, mà người đứng đầu của bạn không cần phải được trong quá trình giảng dạy
scribbling xuống tất cả những gì tôi nói và vân vân, những gì chúng tôi làm
thay vào đó là cung cấp đội ngũ giáo viên
kinh điển tập hợp các ghi chú.
Vì vậy, chúng tôi có một nghiên cứu sinh giảng dạy của chúng tôi, Andrew Sellergren,
người ngồi xuống mỗi tuần, đánh giá các đoạn video, và sau đó
viết xuống những gì chúng ta nghĩ là một cách khá
có thẩm quyền thiết lập các ghi chú.
Và Andrew thích, cũng được, đặt chú thích snarky
phía dưới.
Vì vậy, bạn hy vọng sẽ tận hưởng những như là một cuốn sách tham khảo
vui vẻ, và cũng có thể, đến bài kiểm tra thời gian, như một cơ hội để xem xét
những gì đã xảy ra trong các bài giảng cá nhân.
Vì vậy, những liên kết trên trang bài giảng.
>> Trong khi đó, vấn đề thiết lập 0.
Và về các nguồn tài nguyên có sẵn cho bạn -
trình thực hiện.
Milo dẫn đầu tiên vào thứ sáu.
Nó được quay, đưa lên mạng vào thứ Bảy.
Và do đó nhận ra, nếu bạn không thực sự chắc chắn bắt đầu từ đâu,
cho hay trong tương lai p-bộ, luôn luôn biến đầu tiên
hướng hoặc video đó.
Sectioning là trong tiến trình, tại cs50.net/section là nơi bạn
phải nộp sở thích của bạn, nếu bạn chưa có
đã có, bởi ngày hôm nay.
Bởi vì phần sẽ bắt đầu vào chủ nhật tới, Thứ Hai,
và thứ Ba.
Chúng tôi làm phần ba ngày, mỗi tuần của
học kỳ cho hầu hết các phần.
Và chúng tôi cũng giới thiệu, một lần nữa, bài hát khác nhau.
Vì vậy, bạn sẽ được hỏi về hình thức phân đoạn này, nếu bạn
đã không nhìn thấy nó đã có, nếu bạn đang ở trong số những người ít
thoải mái, thoải mái hơn, hoặc một nơi nào đó ở giữa.
Và nếu bạn đang sắp xếp trên hàng rào, nói chung một nơi nào đó trong
giữa những gì là hầu hết sinh viên kết thúc kiểm tra.
Giờ làm việc bắt đầu đêm nay.
>> Vì vậy, Scratch là phím khá thấp, mặc dù nó hoàn toàn tự nhiên
chạy vào các lỗi khác nhau, hoặc không chắc chắn như thế nào để
thực hiện cái gì.
Vì vậy, nhận ra rằng chúng tôi sẽ bắt đầu giờ làm việc trong tuần này.
Họ sẽ ở Annenberg Thứ hai, ba, tư,
Thứ năm, từ 8:00 PM đến 11:00 PM trong thời gian nghỉ não.
Classmen trên có thể nhận được trong, và nếu bạn đã bao giờ gặp khó khăn khi nhận được
trong cửa, bởi vì họ sẽ được swiping, chỉ nói theo cách của bạn
và giải thích bạn với CS50.
Thông thường 20 đến 30 của chúng tôi về nhân viên sẽ ở đó để giúp đỡ
một ngày một.
>> Khi đến ý tưởng là điều này: bạn sẽ mang lại cho máy tính xách tay của bạn,
bạn sẽ có bộ sạc của bạn, chúng tôi sẽ có thêm dây điện,
đặc biệt là dọc theo bức tường phía nam của Annenberg nơi
có rất nhiều cửa hàng điện.
Và điểm vào chính giờ Q & A là để đi đến
cs50.net/discuss và để gửi
câu hỏi của bạn ở đó.
Và để gắn nhãn nó với pset 0 hoặc pset 1, bất cứ điều gì trong tuần
có thể xảy ra được.
Và sau đó những gì chúng tôi sẽ làm là có một bảng của đồng bào giảng dạy
và các trợ lý, thường là 8 hoặc 10 hay như vậy của chúng tôi,
đi qua, giữ một con mắt thận trọng trên bảng, và
tuốt ra câu hỏi thực sự là một cách nhanh chóng như chúng ta có thể,
giới thiệu bạn đến các bài viết liên quan nếu bạn đã không tìm thấy những
mình, tài liệu tham khảo trực tuyến, khi thích hợp.
Và sau đó nếu có vấn đề, như có chắc chắn
sẽ được, hoặc nó chỉ làm cho ý nghĩa hơn để ngồi xuống một ngày một,
làm việc thông qua các vấn đề với một người nào đó.
>> Hoặc bạn chỉ cần đi vào giờ làm việc thực sự
cần suy nghĩ đó.
Bạn không muốn phải đi qua dưới dạng điện tử, bạn
thực sự muốn để đáp ứng với một ai đó.
Giao tiếp đó cho chúng ta, và những gì sẽ xảy ra là khi bạn
Câu hỏi này đã được nhìn thấy một nhân viên, và chúng tôi
xác định, yup, điều này sẽ được gửi đi đến một trong 20 hoặc
30 thành viên trong nhóm ở đây tại địa phương, bạn sẽ thấy ở phía trên trái
ít Nhập vào nút Queue bắt đầu nhấp nháy trên cs50.net /
thảo luận.
Và điều này là nói cho bạn mà bạn bây giờ đã được mời tham gia, do đó,
để nói chuyện, để vào hàng đợi.
Và bằng cách nhấp vào nút đó, tên của bạn sau đó sẽ xuất hiện trên
iPad bộ chào mừng CS50, một của người đứng đầu của khóa học,
được tổ chức gần lối vào của Annenberg, những người sau đó sẽ
xem như mô tả ở đây, những sinh viên có thắc mắc về
bên trái, các nhân viên có mặt bên phải.
Và với một nhấp chuột trái và phải, trình duyệt web của bạn sẽ
bắt đầu nhấp nháy ngay sau khi, ví dụ, Giáo sư McGonnagal
đã sẵn sàng để xem một bảng cụ thể trong Annenberg.
>> Vì vậy, chúng tôi đã làm một số người trong số này năm ngoái.
Chúng tôi đã khởi động lại giờ làm việc và
thực hiện lại nhiều của phần mềm.
Vì vậy, nhận ra rằng điều này được sẽ ấm lên trong tuần này.
Nhưng cũng nhận ra, trong những năm qua, như bạn có thể đã nghe nói
từ bạn bè, giờ hành chính có thực sự từ 50 đến
150 sinh viên cùng một lúc.
Và nó chỉ đơn giản là không thể cho chúng tôi để xử lý mà
hiệu quả, một trên một, trong suốt buổi tối.
Và vì vậy những gì chúng tôi đang thực sự sẽ cố gắng để làm điều này là
tận dụng thực tế là rất nhiều câu hỏi
thường gặp và thường có thể được trả lời tốt hơn
không đồng bộ.
Vì vậy, bạn có thể sắp xếp suy nghĩ thông qua phản ứng của nhân viên,
và chúng ta có thể nghĩ rằng thông qua mã của bạn, mà không có nước nóng
áp lực nhất thiết phải đấu tranh
thông qua nó bên cạnh nhau.
Vì vậy, chúng tôi ước tính rằng khoảng 1/3 hoặc một nửa trong những câu hỏi
sẽ được gửi đi trong người, và chúng tôi sẽ cố gắng để nhổ như
nhiều như một nửa hoặc nhiều hơn điện tử,
trong giờ làm việc.
Và chúng tôi sẽ tiếp tục sử dụng Thảo luận
trong suốt tuần là tốt.
>> Và cuối cùng, nhận ra rằng khóa học này có thể được thực hiện thông qua / không.
Vì vậy, nếu bạn đang ở trên hàng rào hoặc chỉ nghĩ rằng bạn đang thực sự
không chắc chắn nếu điều này là thế giới cho bạn, hoặc điều này thực sự
khá nước ngoài cho bạn, nhận ra rằng đây là một cách tuyệt vời
đạt được một số sự tự tin để bước vào
lớp học, như tôi đã thẳng thắn, năm trước đây.
Và sau đó có năm tuần để sắp xếp của con số cho
chính mình nếu bạn muốn ở lại pass / fail, chuyển sang một bức thư
cấp, hoặc các loại tương tự.
Và thường pass / fail không, tôi nghĩ rằng, cho học sinh là
rằng, nếu bạn đặt trong đó 10 giờ, 20 giờ, bất cứ điều gì
có thể được trên một số vấn đề, và bạn đang đập đầu của bạn
chống lại bức tường,
và bạn thực sự không thể đuổi một cái gì đó, và bạn
có rất nhiều những thứ khác bạn cần làm, trung thực, những gì tôi
suy nghĩ vượt qua / thất bại là, phải mất cạnh
tình huống như thế.
Trong trường hợp bạn đã thực hiện điều 90% số đường.
Bạn biết đấy, nó không hoàn toàn hoàn hảo.
Tuy nhiên, bạn có rất nhiều ra khỏi nó, dù sao.
Vì vậy, xem xét thông qua / không như đem lại cho bạn rằng
mô hình tinh thần, có lẽ.
>> , Tất cả các bên phải để tuần trước, chúng tôi lao vào Scratch, và chúng tôi
nói về lập trình trên một cấp độ đồ họa khá cao.
Và ngày hôm nay chúng tôi thực hiện việc chuyển đổi sang một ngôn ngữ
được gọi là C, một ngôn ngữ lập trình cấp thấp hơn trên đầu trang của
nhiều ngôn ngữ hiện đại đang được xây dựng, bao gồm một số
trong những người chúng tôi sẽ được sử dụng vào cuối hạn của.
Và cú pháp, những gì họ trông giống như
là tất cả hoàn toàn tương tự.
Vì vậy, hãy bắt đầu thực hiện chuyển đổi ở đây.
Vì vậy, đây là một chương trình tuần trước đó là đơn giản nhất của
xin chào các chương trình thế giới.
Nó chỉ đơn giản là in với thế giới màn hình chào, với một
thưa bài phát biểu bong bóng của con mèo.
Vâng, nếu bây giờ chúng ta bắt đầu dịch này vào một
ngôn ngữ, nhận ra rằng những ý tưởng ngày hôm nay và hôm thứ Tư
là giống hệt nhau, nhưng cú pháp bắt đầu thay đổi.
Vì vậy, trong khi tuần trước, chúng tôi đã có, khi lá cờ màu xanh lá cây nhấn vào,
hello thế giới.
Hôm nay chúng ta sẽ có int, main, void, printf,
lại, với một số cú pháp khác trong đó là tốt.
Dấu ngoặc nhọn, và dấu ngoặc và dấu ngoặc kép, và whatnot.
Nhưng nhận ra rằng cốt lõi của ý tưởng ở đây là việc in ấn,
và cuối cùng là thực tế mà chính là bây giờ sẽ là
đồng nghĩa với sự bắt đầu của một chương trình.
Chính sẽ là nơi lá cờ màu xanh lá cây đá vật tắt.
>> Vì vậy, bây giờ chúng ta hãy tách một số các khối xây dựng ở đây
trước khi chúng tôi nhảy vào một số ví dụ cụ thể.
Vì vậy, chúng tôi gọi là một báo cáo cuối cùng trong tuần này, theo đó nó chỉ là
một hướng dẫn.
Làm điều này - trong trường hợp này, nói hello thế giới.
Cũng trong C, nếu chúng ta nhìn tại dòng đó, điều này là làm thế nào chúng tôi
sẽ bắt đầu bày tỏ rằng mảnh ghép cụ thể:
printf ("hello world");
Và bây giờ chúng tôi sẽ trêu chọc những ngoài nhiều hơn và nhiều hơn nữa theo thời gian,
nhưng nhận ra rằng có một mô hình ở đây.
Vì vậy, chúng ta có điều này gọi là printf, đó là
về cơ bản tương tự để từ nói.
Đó là những gì nó sẽ làm gì.
Printf, f ở đây có nghĩa là "định dạng".
Vì vậy, nó chỉ có nghĩa là bạn có thể chèn
các chi tiết thẩm mỹ.
Vì vậy, quote unquote là sự khởi đầu của những gì chúng ta đang đi
để bắt đầu cuộc gọi một chuỗi.
Một từ, một cụm từ, một câu.
Một chuỗi trong một ngôn ngữ lập trình là một chuỗi các số không
hoặc nhiều ký tự.
Vì vậy, h-e-l-l-o, dấu phẩy, và vv là,
quote unquote, một chuỗi.
Và giờ đây, dấu gạch chéo ngược n, cú pháp nhỏ lẻ, nhưng chúng tôi
tuần trước đó đã được xác định là có nghĩa là gì?
Nó chỉ là một dòng mới.
Nó chỉ là một cách truyền đạt vào máy tính bạn muốn
tương đương với nhấn Enter có, nhưng bạn không
muốn thực sự nhấn Enter và do đó mess up tất cả các
định dạng của chương trình thực tế của bạn.
Bây giờ các dấu ngoặc đơn kèm theo chuỗi này, mở paren
gần paren, và bên trong đó là chuỗi ký tự của chúng tôi.
Bởi vì đó là bởi vì trong C, và lập trình khác
ngôn ngữ, những thứ như printf vài tham số, hoặc đi
các thông số.
>> Vì vậy, bắt đầu suy nghĩ của khối này Say màu tím như một
chức năng, như là một phương pháp, như một thủ tục.
Bạn thực sự có thể gọi nó là bất cứ điều gì bạn muốn cho bây giờ, nhưng
nó là sắp xếp của một chương trình thu nhỏ mà chỉ làm một
điều, trong một đường duy nhất, không kém.
Vì vậy, printf cũng là những gì chúng ta sẽ bắt đầu gọi một
chức năng, và các chức năng làm một cái gì đó - trong trường hợp này
in một chuỗi định dạng màn hình -
nhưng chức năng cũng có đối số hoặc các thông số.
Và những tranh luận hoặc các thông số, cảm ơn bạn, chúng tôi có nghĩa là
hành vi của họ có thể bị ảnh hưởng bởi những gì bạn vượt qua trong
bên trong dấu ngoặc đơn.
Vì vậy, trong trường hợp này, nhu cầu printf được cho biết những gì để in, và chúng tôi
chỉ cần vượt qua trong dấu ngoặc kép ở đây, chuỗi
thực sự muốn in.
Và dấu chấm phẩy vào cuối của dòng này chỉ là một
lịch sử gây khó chịu, theo đó vào cuối của hầu hết các dòng mã,
bạn đặt một dấu chấm phẩy để làm cho siêu rõ ràng với máy tính
rằng dòng mã này kết thúc ở đây.
Bây giờ điều này là tốt vì như chúng ta sẽ thấy như các chương trình nhận được nhiều hơn
phức tạp, dấu chấm phẩy sẽ làm cho con người siêu rõ ràng đối với chúng tôi,
và cũng có máy tính, nơi dòng bắt đầu và kết thúc mã.
Nhận ra rằng một số ngôn ngữ không có một số
cùng những chi tiết này.
Và trên thực tế, trong JavaScript, bạn không phải lúc nào cũng cần một cái gì đó
giống như các dấu chấm phẩy.
Nhưng thêm vào đó để đến.
>> Vì vậy, vòng lặp.
Chúng tôi đã có một cái gì đó như thế này, rất trực quan, rõ ràng, làm
một cái gì đó một lần nữa và một lần nữa và một lần nữa.
Cũng giống như đặt trên vớ, hoặc chào hỏi, trong trường hợp này.
Vâng, bắt đầu từ ngày hôm nay trong C, chúng ta có thể thể hiện điều này Scratch
chặn như trong khi (đúng) printf ("hello world").
Vì vậy, nhận thấy chúng ta đang bắt đầu xây dựng trên câu đố nghĩa
mảnh từ trước.
Chúng tôi có cùng một khối màu tím, nhưng đó là bên trong của
trong ngoặc vuông Vô hạn khối, và cách tốt nhất để dịch đó
C là như sau.
Không có giới hạn từ khóa.
Bạn có thể không chỉ cần gõ f-o-r-e-v-e-r trong C.
Vì vậy, tương tự gần nhất là thời gian.
>> Bây giờ, trong khi (đúng) có vẻ hơi ngu ngốc vì không giá trị
của sự thay đổi chân thật?
Có lẽ không.
Nó giống như nói rằng trong khi một, trong khi trên, trong khi sự thật.
Đó là tất cả những điều tương tự, đúng là luôn luôn như vậy.
Vì vậy, vòng lặp này là thực sự gây những loại vòng lặp?
Chỉ cần một vòng lặp vô hạn, phải.
Một vòng lặp mãi mãi hoặc trong khi chúng tôi gọi nó tuần trước,
chỉ là một vòng lặp vô hạn.
Vì vậy, đôi khi đó là xấu.
Đôi khi đó là một lỗi, đôi khi đó là lý do tại sao bạn nhận được
bóng bãi biển kéo sợi hoặc đồng hồ cát hoặc tương tự.
Nhưng trong trường hợp này, chúng tôi cố ý, cho bất cứ điều gì
lý do, muốn in những điều tương tự một lần nữa
và một lần nữa và một lần nữa.
Hoặc trong trường hợp giống như một chiếc đồng hồ, bạn muốn làm
một cái gì đó một lần nữa và một lần nữa và một lần nữa.
Vì vậy, vòng lặp vô hạn có thể có ý nghĩa.
Và đây là làm thế nào trong C chúng ta có thể dịch Vô hạn để mã.
>> Vì vậy, bây giờ một trong những điều này là một chút cụ thể hơn.
Chúng tôi đã lặp lại 10 lần tuyên bố như sau.
Vì vậy, trong khi (đúng) không khá làm việc ở đó, bởi vì thật sự là
luôn luôn đúng.
Vì vậy, nếu chúng ta thay vì nhìn vào các phiên bản C, cú pháp được một
chút khó hiểu.
Nhưng phải trung thực khi bạn bắt đầu thấy điều này, tất cả được
khá quen thuộc một cách nhanh chóng.
Vì vậy, đây là những gì được gọi là một vòng lặp for.
Một vòng lặp sẽ nói cho các máy tính để làm một cái gì đó
một lần nữa và một lần nữa và một lần nữa cho đến khi nào
những điều này là đúng sự thật.
Bây giờ chúng ta làm những gì có nghĩa là bằng cách đó?
Vâng, có ba phần vào một vòng lặp for, và chúng ta sẽ
trở lại với điều này trong bối cảnh thực tế
ví dụ trong một thời điểm.
Vì vậy, đừng lo lắng nếu nó không hoàn toàn chìm trong cùng một lúc.
Nhưng int i = 0 là, câu chuyện dài ngắn, nói cho tôi một
biến đó là kiểu số nguyên, do đó cung cấp cho tôi một số
tên gọi là i, và khởi tạo nó để 0.
Điều đó cho tôi giống như một biến x đại số và
khởi tạo nó là 0.
Nhưng trong trường hợp này, chúng tôi gọi nó là i.
Sau đó ở giữa, nó nói tôi là ít hơn 10.
Đó là nói cho máy tính làm những thứ sau một thời gian dài
như tôi là nhỏ hơn 10.
Và rõ ràng là nó bắt đầu ít hơn 10 vì
nó bắt đầu từ 0.
Sau đó, cuối cùng, bạn có lẽ có thể đoán những gì i + + phương tiện.
Đó là một chút ít cú pháp mà chỉ có nghĩa là tăng i.
Vì vậy, thêm 1 đến i, một lần nữa và một lần nữa và một lần nữa.
>> Và như vậy là chúng ta sẽ thấy vòng lặp này, cú pháp này, đúng hơn là, thực hiện
chính xác cùng một điều rằng, thẳng thắn, trong Scratch chỉ để
dễ dàng hơn nhiều để thể hiện.
Lặp lại 10, và bạn đang làm.
Trong C, và trong hầu hết các ngôn ngữ lập trình, chúng ta phải là một
ít hơn hướng dẫn cho máy tính và thực sự
chỉ định một cái gì đó như thế này.
Nhưng chúng tôi sẽ trở lại và cú pháp khác.
>> Điều gì về các biến?
Trong Scratch, chúng tôi đã có một cái gì đó giống như các khối màu cam,
nơi tôi có thể khai báo một biến.
Hãy tự ý gọi nó truy cập.
Hãy khởi tạo nó đến 0, và sau đó
hãy mãi mãi làm điều gì đó.
Trong trường hợp này trong Scratch tôi nói các truy cập, vì vậy
mèo sẽ có một bong bóng lời nói nhỏ mà nói
số đó là trong biến này.
Và sau đó chúng tôi có truy cập thay đổi bằng cách 1.
Vì vậy, tất cả những điều này được bọc bên trong của một khóa Vô hạn.
Vì vậy, chúng tôi đã có các khối xây dựng trong C với
dịch này.
>> Một trong những cách mà chúng ta có thể làm điều đó.
Hãy cho tôi một số nguyên, hãy gọi nó truy cập.
Khởi tạo nó là 0
trong dòng đầu tiên ở đó.
Trong khi (đúng), vì vậy tôi đang ăn cắp ý tưởng đó chỉ là một từ thời điểm
trước, đi trước và làm như sau.
In ra các truy cập, và sau đó tăng truy cập,
một lần nữa, và một lần nữa, và một lần nữa.
Hay nữa, + + chỉ có nghĩa là thêm 1 vào một cái gì đó.
Nhưng có một đoạn mới của cú pháp ở đây.
Những gì đang nhảy ra khỏi không nằm trong số các ví dụ trước đây của chúng tôi?
Có, điều này d%.
Vì vậy, bạn có thể có thể suy ra những gì đang làm, thẳng thắn, dựa
những gì các khối Scratch đang làm.
Nhưng một lần nữa trong C, chúng tôi chỉ cần có để có nhiều hơn một chút đặc biệt
khi nói đến việc thể hiện bản thân.
>> Vì vậy, printf ("% d \ n").
Tốt nhất của chúng tôi có thể vứt bỏ như là quen thuộc.
Dấu ngoặc kép chỉ có nghĩa là đó là một chuỗi, dấu gạch chéo ngược n
chỉ là một dòng mới.
Vì vậy, điều duy nhất ở đây là% d.
Và tất cả những gì là một giữ chỗ.
% D để biểu thị một số thập phân.
% D có nghĩa là máy tính, đặt một số thập phân.
Vâng, những gì số nào bạn muốn đặt ở đó?
Vâng, như bạn có lẽ có thể suy ra, sau dấu phẩy, chúng ta nói
truy cập, đó là tên của một biến mà chúng tôi đã kê khai hoặc
tạo ra một vài dòng trước đó.
Vì vậy, đây chỉ là cách C cắm trong một biến thành một
chuỗi động.
Bởi vì ngược lại, nếu tôi thay vì làm một cái gì đó như thế
, printf ("counter"), điều gì sẽ này
chương trình thay vì làm thế, có lẽ?
Nó nghĩa là sẽ in "counter".
Mà không phải là hiệu quả mà tôi muốn.
Tôi cần phải thay thế trong một số giá trị số.
Vì vậy, chúng ta sẽ thấy rằng các chức năng sau đó, giống như printf, có thể mất không
chỉ chỉ duy nhất đối số, như
"Hello thế giới".
Họ có thể lấy dấu phẩy unquote trích dẫn nội dung bài viết này, và sau đó một số biến
đó sẽ nhận được cắm vào, như chúng ta sẽ thấy chuỗi trước
thông qua các placeholders dấu%.
>> Vâng những gì về các biểu thức Boolean?
Biểu thức boolean là những giá trị này, đúng hay sai.
Có hoặc không.
1 hoặc 0.
Hoặc tắt.
Vì vậy, trong Scratch trông như thế này, và nhận thấy rằng các
dưới cùng khối ở đây thực sự là sự kết hợp
của hai khối nhỏ hơn.
Vì vậy, tôi loại kéo và thả ba mảnh ghép
cùng nhau để làm cho rằng mảnh ghép còn ở đó vì vậy mà tôi
có thể truyền đạt ý tưởng mà tôi muốn x là ít hơn so với y và
y là ít hơn z.
Và vì vậy tôi có thể dịch hai dòng riêng biệt như sau.
Một trong những đầu có thể rất trivially dịch C,
chỉ với x <y.
Có lẽ với một số dấu ngoặc đơn cho các biện pháp tốt.
Và sau đó trong C, bạn không viết và để biểu thị
kết hợp của một cái gì đó.
Bạn thay vì viết &&.
Và như chúng ta cuối cùng sẽ nhìn thấy, một dấu "và" duy nhất xảy ra với
có nghĩa là một cái gì đó khác nhau.
Vì vậy, & chỉ biểu thị ý tưởng.
>> Vì vậy, một lần nữa, mặc dù điều này bắt đầu trông khá phức tạp,
một trong những mục đích giới thiệu Scratch, bên cạnh
chỉ có loại một niềm vui trên đoạn đường nối nơi mà bạn có thể làm
một cái gì đó là rất đồ họa, và hoạt hình, và
thể chia sẻ và như thế, cũng là để truyền đạt ý tưởng
tất cả những ý tưởng chúng tôi bắt đầu lặn vào ngày hôm nay trở đi
đã được thể hiện ngay cả đơn giản
giao diện kể từ khi một ngày.
Điều gì về việc này một ở đây?
>> Vì vậy, điều kiện.
Vì vậy, các khối Scratch trên bên trái có vẻ
một chút phức tạp hơn.
Nhưng nó chỉ là một số di chuyển và
thả miếng quen thuộc.
Nếu x nhỏ hơn y, nói như vậy.
Khác nếu x lớn hơn y, nói như vậy.
Khác, chúng tôi hợp lý có thể giả định nó được suy ra rằng
họ phải được bình đẳng.
Vì vậy, nói rằng chúng bằng nhau.
Bây giờ trong C điều, phải chính xác cùng.
Và nhận thấy rằng các dấu ngoặc nhọn sẽ là một
tính năng của C và các ngôn ngữ khác làm điều này loại
đóng gói.
Cũng giống như các khối nếu điều này màu vàng là sắp xếp của
lấy các khối màu tím bên trong của nó.
Tương tự như vậy là những niềng răng -
những dấu ngoặc nhọn -
có nghĩa là để gợi lên ý tưởng cùng ôm ấp một hoặc nhiều
dòng mã được thụt vào bên trong của họ.
Vì vậy, ở phía bên tay phải ở đây, nếu x nhỏ hơn y, printf
("X nhỏ hơn y").
Khác nếu x lớn hơn y, in ra như nhau.
Thư khac in ra rằng họ đều bình đẳng.
>> Vì vậy, trong ngắn hạn, có một bản đồ khá trực tiếp hoặc dịch
của ngôn ngữ, chúng tôi đã nhìn thấy vậy, đến nay, kể cả đối với một số
các tính năng phức tạp hơn.
Vì vậy, bạn có thể không được sử dụng cho dự án của bạn, hoặc có thể không
được sử dụng cho dự án của bạn trong tuần này.
Nhưng chúng tôi những điều này được gọi là mảng trong C. Scratch,
chúng được gọi là danh sách.
Và chúng ta đã thấy những với RPG Fruitcraft tuần cuối cùng.
Anh chàng nhỏ màu xanh đã được đi bộ xung quanh, chọn lên
anh đào và cam và các loại tương tự.
Cũng trong Scratch, đã được thực hiện với cam này
ngăn chặn có chứa những từ, trong trường hợp này, chúng tôi theo nghĩa đen
thêm "màu da cam" với một
biến được gọi là hàng tồn kho.
Vì vậy, trong C, cú pháp này là sẽ nhận được nhiều hơn một chút khó hiểu.
Và chúng tôi sẽ quay trở lại tuần này và làm nhiều hơn
điều thú vị trong thế giới về mật mã với nó.
Nhưng ở dưới cùng ở đây, hai dòng cơ bản
dịch cho những gì chúng tôi đang làm trong một Scratch chặn có.
Nhưng thêm vào đó để đến.
>> Vì vậy, đặt nó lại với nhau, đây là một chương trình trong C. Vì vậy, chúng ta hãy
nhanh chóng tách một số trong những phần của cú pháp ở đây, nhưng
sau đó để thực sự bắt đầu viết một số mã, làm quen
bạn với một số trong những công cụ chúng tôi sẽ được sử dụng, và xem chúng ta
có thể xây dựng bây giờ một số các khối xây dựng cơ bản từ
tuần trước, bây giờ cú pháp trong C. Vì vậy, ở đầu ở đây, điều này
có lẽ là một trong những chương trình nhàm chán nhất bạn có thể
viết trong bất kỳ ngôn ngữ lập trình.
Nhưng đó là loại có ý nghĩa đặc biệt bởi vì đó là
chương trình kinh điển mà bất kỳ nhà khoa học máy tính viết khi
giảng dạy ai đó một ngôn ngữ lập trình -
một chương trình thế giới hello.
>> Vì vậy, đặt ở đầu, chúng ta thấy khái niệm này của # bao gồm
và sau đó, trong dấu ngoặc góc cạnh, stdio.h.
Chúng tôi sẽ trở lại vào đó, nhưng thực sự những gì mà
có nghĩa là có một tập tin trong thế giới này được gọi là tiêu chuẩn
I / O, stdio dot h, và đó chỉ là một file văn bản
ai đó đã viết năm trước đây.
Và bên trong của tập tin văn bản là một bó toàn bộ
chức năng, hoặc các phương pháp, hoặc các thủ tục, mà người khác
đã viết rằng chúng ta là những người hưởng lợi bởi vì chúng tôi
bây giờ có thể sử dụng mã của người đó.
Các chức năng người đó viết.
Trong trường hợp này, printf không phải là một cái gì đó mà tôi đã viết,
không phải cái gì mà CS50 viết.
Đó là một cái gì đó mà ai đó đã viết năm trước và đặt trong một
tập tin gọi là stdio.h và sau đó, một sang một bên, đặt
một phần khác của các chức năng trong tập tin khác.
Nhưng chúng tôi sẽ đến đó.
>> Vì vậy, # include chỉ là cách nói của chúng tôi, trong
C, cho tôi truy cập vào các chức năng mà người khác đã viết.
Và trong trường hợp này tôi quan tâm bởi vì tôi muốn printf.
Bây giờ chúng tôi nhận được int main (void).
Vì vậy, đây là một trong những điều này, thẳng thắn, rằng vào ngày 0,
khá nhiều tôi đã loại ra khỏi khu vực, bởi vì nó chỉ
không thú vị
trí tuệ, một số cú pháp.
Nhưng bây giờ biết rằng chức năng này, nếu không được gọi là
thủ tục, hoặc các phương pháp, thường sản xuất một số giá trị.
Họ làm một cái gì đó.
Họ đưa ra một câu trả lời.
Họ sản xuất đầu ra.
Int tiếp theo chính là cách nói cách viết tắt của chúng tôi
chức năng này, thủ tục này, sẽ là cuối cùng
cung cấp cho bạn một số.
Và tại sao đó là, chúng tôi sẽ quay trở lại.
Chính là thế giới mặc định tiêu chuẩn mặc định
chức năng đó sẽ được thực hiện trong một chương trình C
bạn chạy nó.
Void chỉ có nghĩa là điều này, chính, sẽ không có
đối số, trong trường hợp này.
Vì vậy, tôi là siêu rõ ràng.
Không có chuỗi trong đó, có dấu phẩy không.
Void có nghĩa là không có đối số chính.
>> Bây giờ cuối cùng, may mắn thay, hai dòng cuối cùng quen thuộc.
Bên trong dấu ngoặc nhọn, chúng tôi có một printf
và chúng tôi có trở lại.
Và trả lại là loại không may là chúng ta phải
đặt nó ở đó, bởi vì trong trường hợp này nó không phải làm tất cả những điều đó
nhiều quan tâm.
Tuy nhiên, trong một chương trình máy tính, khi một hàm trả về 0,
điều đó có nghĩa là tất cả là tốt.
Không có gì đã đi sai.
Ngược lại, nếu một hàm trả về 1, hoặc tiêu cực 1, hoặc
tiêu cực 1337, hoặc một số các số ngẫu nhiên như thế, mà
thường có nghĩa là một lỗi thực sự đã xảy ra.
Vì vậy, nếu bạn đang ở trên máy Mac hoặc máy PC của bạn, nếu bạn đã từng thấy
một số thông báo khó chịu vì máy tính của bạn đã bị hỏng hoặc
đông lạnh, và có một thông báo lỗi khó hiểu,
và sau đó một số mã, giống như hệ thống mã
1,2,3,4, một số số,
mà thường là một chi tiết không cần thiết để nói
hầu hết con người chúng ta, nhưng đó là những gì một số chức năng hoặc một số
chương trình đã thực sự trở lại, một giá trị khác không.
Và lợi ích của việc này là 0 có nghĩa là cũng,
sau đó bạn về cơ bản có một số lượng vô hạn của những điều mà
có thể đi sai.
Đó là lý do tại sao họ đã chọn 0 cho tốt và một giá trị khác không
xấu, như chúng ta sẽ sớm nhìn thấy.
>> Vì vậy, chúng ta hãy đi trước và viết này.
Vì vậy, nhớ lại rằng ngày khác tôi đã sử dụng máy Mac của tôi để mở ra một
thiết bị đầu cuối cửa sổ, và sau đó tôi mở chương trình văn bản, như
TextEdit, và tôi bắt đầu viết một số mã.
Vâng đó là tốt.
Tuy nhiên, kinh nghiệm của bạn là có được khác nhau trên máy Mac, hoặc
Solaris trên một máy tính, một máy tính Linux, bất cứ điều gì điều hành
hệ thống bạn xảy ra để được sử dụng.
Và do đó, trong khóa học, những gì chúng tôi thay vì sử dụng là một cái gì đó
được gọi là gia dụng CS50.
Vì vậy, các gia dụng CS50 là một phần tải về của phần mềm
cho phép bạn chạy một hệ điều hành được gọi là Linux,
đặc biệt Fedora Linux, Mac hoặc máy PC.
Và bạn làm điều này bằng cách tải về một cái gì đó gọi là hypervisor.
Vì vậy, tất cả những điều này sẽ được ghi chép lại thành 1 bộ vấn đề.
Và bạn sẽ được hướng dẫn đối với những gì bạn cần để tải về.
Nhưng kết quả cuối cùng, cho dù bạn có một máy Mac hoặc máy PC, bạn
tải về một số phần mềm miễn phí.
Sau đó, bạn tải về các gia dụng CS50, và bạn nói rằng
phần mềm miễn phí - hypervisor
để chạy gia dụng CS50 trong một cửa sổ trên máy tính của bạn.
Và những gì xảy ra là điều này.
>> Bây giờ tôi đã, chú ý ở đây, những gì dường như là một máy tính để bàn
môi trường.
Và hãy để tôi thực sự thu nhỏ cửa sổ này.
Vì vậy, điều này giờ là Mac của tôi, với một cửa sổ nhỏ ở đây, và bên trong
của cửa sổ này sẽ xảy ra là hoàn toàn
hệ thống điều hành khác nhau.
Quả thực có menu này bắt đầu xuống đây, gợi nhớ
Windows, có một bó toàn bộ các menu phụ, bao gồm cả
một liên kết để hướng dẫn CS50, Dropbox, và như thế.
Và những gì môi trường này bây giờ là một môi trường tiêu chuẩn
rằng tất cả chúng ta bây giờ có thể sử dụng, vì vậy không có vấn đề gì của bạn
máy tính là những gì bạn đã cài đặt trên nó, những phiên bản
Mac OS hoặc Windows bạn đang chạy, tất cả chúng ta bây giờ có
cùng một môi trường.
Và bây giờ trong môi trường này, chúng tôi có thể bắt đầu viết một số mã.
>> Vì vậy, tôi sẽ đi trước và mở một chương trình được gọi là gedit.
Điều này có thể so sánh notepad.exe, hoặc
TextEdit trên một máy Mac.
Và đây chỉ là một chương trình chỉnh sửa văn bản đơn giản siêu
trông như thế này ở cái nhìn đầu tiên.
Bây giờ vào phần trên, tôi có một bảng màu trắng, ở phía dưới tôi
có cửa sổ màu đen này nói jharvard @ thiết bị.
Và đó là bởi vì tài khoản người dùng mà chúng tôi tạo ra trước
cho tất cả mọi người được gọi là John Harvard.
Ông có một thư mục nơi mà tất cả các tập tin của mình sẽ đi, và
đây là nơi mà chúng ta có thể bắt đầu viết một số mã.
Vì vậy, hãy để tôi đi trước đây và phóng to một chút, và tôi
sẽ làm # include int main (void), và
sau đó tôi sẽ làm printf ("hello world")
; Trở về 0.
Bây giờ đây là tất cả khá màu đen và trắng.
>> Hãy để tôi đi trước và làm một điều gì để dạy gedit những gì tôi
thực sự làm.
Hãy để tôi đi Save As.
Tôi sẽ lựa chọn ở phía bên tay trái ở đây jharvard.
Vì vậy, một lần nữa, ngay cả khi bạn đã không bao giờ được sử dụng Linux trước đây, thẳng thắn
những ngày này, tất cả chúng được phân cấp thành cơ bản
cùng loại của giao diện -
Mac OS, Windows, và Linux.
Vì vậy, tôi đã chọn thư mục nhà của jharvard ở đây.
Và tôi sẽ lưu tập tin này như hello.c.
Vì vậy, ở đầu, tôi đã gõ hello.c, đặt tên một C
chương trình với phần mở rộng c.
thực tế phổ biến là những gì.
Và tôi nhấn Save.
Và bây giờ những gì tốt đẹp mà tôi đã có hiệu quả giảng dạy gedit,
rằng đây là một chương trình C.
Chú ý rằng văn bản màu đen và trắng của tôi bây giờ màu sắc mã hoá, hoặc
nêu bật cú pháp, mà chỉ thu hút sự chú ý của tôi.
phần ngữ nghĩa khác nhau của chương trình.
Ở phía trên bên tay trái, như các chương trình của tôi có được phức tạp hơn, tôi
sẽ có một bản tóm tắt của tất cả những điều tôi đã viết.
Vì vậy, đó là nó ở đó.
Vì vậy, hãy để tôi thu nhỏ và đi xuống này cửa sổ terminal.
>> Vì vậy, đây có lẽ là mới đối với nhiều người.
Nếu bạn đã không bao giờ được sử dụng một môi trường dòng lệnh, bạn đã không bao giờ
sử dụng hệ điều hành DOS, hoặc bạn đã không bao giờ được sử dụng Linux, hoặc bạn đã không bao giờ mở
Mac OS cửa sổ terminal của bạn, có rất nhiều điều bạn
có thể làm với các giao diện, chẳng hạn như chỉ trỏ, và nhấp vào, và
kéo, và thả, và như thế, nhưng nói chung -
chắc chắn trong thế giới của khoa học máy tính -
bằng cách sử dụng một dòng lệnh, nơi mà bạn không có con chuột của bạn
nói chung, bạn chỉ có bàn phím của bạn, thực sự là rất nhiều
mạnh hơn so với giao diện, một khi bạn đã thích nghi với
các lệnh.
Và bạn loại phóng được bản thân cần để trỏ và nhấn
ở tất cả mọi thứ.
Vì vậy, trong gedit chúng tôi sẽ sắp xếp của có tốt nhất của cả hai thế giới.
Chúng tôi có thể kéo và thả văn bản, chúng ta có thể nhìn thấy nó
tốt đẹp và mã màu sắc.
Nhưng khi nói đến thời gian để chạy chương trình của chúng tôi, chúng tôi sẽ đôi khi
chỉ cần sử dụng cửa sổ nhỏ ở đây.
>> Vì vậy, tôi sẽ đi trước và làm điều này.
Trong cửa sổ màu đen và trắng phía dưới, tôi sẽ đi trước
và viết kêu vang.
Và kêu vang là tên của một trình biên dịch.
Đó là một chương trình chuyển đổi mã nguồn của tôi
vào, vì vậy, mã đối tượng.
0 và 1, chúng ta đã thấy một thời gian ngắn hồi tuần trước.
Nhớ lại từ tuần trước, chúng tôi đã hứa rằng chúng tôi sẽ
đi từ một cái gì đó như thế này - chúng tôi cần thiết để được
một cái gì đó như thế này -
và điều này chắc chắn không phải là một cái gì đó mà một con người sẽ
làm bằng tay.
Vì vậy, thay vào đó chúng ta sẽ sử dụng chương trình, và chương trình trong
trường hợp này được gọi là kêu vang.
Và tên của chương trình của tôi là hello.c.
Vì vậy, để biên dịch hello.c từ mã nguồn vào
mã đối tượng, hoặc 0 và 1, nó là đủ để chỉ cần làm
điều này và nhấn Enter.
>> Được rồi, có vẻ như không có gì đã xảy ra.
Nhưng tôi biết bây giờ, hoặc từ tuần trước, tên mặc định của
một chương trình, khi viết bằng C, điên rồ gọi là a.out.
Uninteresting nhất tên mà bạn có thể đi lên với.
A là chữ cái đầu tiên của bảng chữ cái, ra là những gì đã được
kết quả, nhưng để được nó.
Đây là chương trình của tôi, và bây giờ dot dấu gạch chéo, như chúng ta sẽ thấy,
thực sự chỉ là một loại tính năng bảo mật, bởi vì
a.out là một chương trình tôi đã viết.
Nó đã không đến với máy tính của tôi, đó là
không phải trong Program Files.
Nó không phải trong thư mục Ứng dụng hệ điều hành Mac OS.
Tôi cần phải được siêu rõ ràng với máy tính, và nói
chương trình này, a.out, trong thư mục hiện tại,
thư mục hiện tại.
Và cách bạn đại diện này trong một môi trường như thế này
được chấm đại diện cho bất kỳ thư mục mà bạn đang nhập
Và như vậy / chỉ có nghĩa là a.out chạy
trong thư mục hiện hành.
Và tôi chạy với Enter, và thì đấy, chương trình đầu tiên của tôi.
>> Bây giờ hãy để tôi đi một bước lại.
Cửa sổ này là một chút nhỏ, và nhận ra rằng phía dưới
còn lại của thiết bị ở đây là biểu tượng khác.
Một là Chrome, nên khá quen thuộc, chỉ cần một trang web
trình duyệt bên trong của thiết bị.
Và điều này biểu tượng màu đen và trắng chỉ là một
cửa sổ lớn hơn thiết bị đầu cuối.
Vì vậy, nếu nó được một chút phiền phức để sắp xếp của có chỉ
lát nhỏ bé này một cửa sổ tương tác
với các chương trình, chúng tôi thay vì có thể làm điều này.
Và bây giờ hãy để tôi bắt đầu gõ một vài sớm
là các lệnh quen thuộc.
ls.
Vì vậy, ls là lệnh niêm yết.
Vì vậy, trong một hệ điều hành Mac hoặc Windows, bạn thường sẽ tăng gấp đôi vào một
thư mục và sau đó, thì đấy, bạn thấy tất cả các tập tin khác nhau
và thư mục.
Trong một môi trường dòng lệnh, nơi mà bạn chỉ có thể gõ
lệnh hoặc văn bản, ls là tương đương.
Vì thế hãy cho tôi biết những gì trong thư mục này.
>> Bây giờ có một loạt các công cụ ở đây đó là cả một chút
quen thuộc và xa lạ chút.
Nhưng chú ý rằng giống như Windows và Mac OS, jharvard
có một thư mục máy tính để bàn.
Vì vậy, bất kỳ biểu tượng trên máy tính để bàn của tôi xảy ra
có trong thư mục đó.
Có một thư mục tải về, các công cụ mà
Chrome có thể đặt ở đó.
Dropbox.
Vì vậy, thiết bị đi kèm với built-in hỗ trợ cho Dropbox
để qua học kỳ, bạn có thể đồng bộ hóa với Dropbox của bạn
tài khoản để tất cả các chương trình của bạn được sao lưu.
Chúng tôi truy cập trên máy tính khác của bạn.
Nếu bất cứ điều gì bao giờ đi sai với thiết bị này, bạn có thể
rất dễ dàng phục hồi từ Dropbox.
Vì vậy, thư mục đó có cho điều đó.
Có hai tập tin mà tôi đã thực hiện hello.c
và a.out.
Và sau đó bên phải có một số thư mục khác mà chúng tôi sẽ
nhận được vào cuối học kỳ, với các trang web
lập trình.
Vì vậy, khi tôi làm /, a.out, Enter, nói đi
trong thư mục trong thư mục hiện hành, và chạy
chương trình được gọi là a.out ngay tại đó.
>> Được rồi, vì vậy đó là đẹp và tốt, nhưng nó không phải tất cả những điều đó
hấp dẫn để viết một chương trình được gọi là giúp a.out.
Vì vậy, chúng tôi thực sự có thể làm điều này một chút khác nhau.
Vì vậy, thay vì kêu vang chạy chỉ, hello.c, hãy thêm
những gì được gọi là một đối số dòng lệnh.
Vì vậy, một đối số dòng lệnh, hay một chuyển đổi trong trường hợp này, chỉ là
một từ hoặc cụm từ mà bạn gõ tại dấu nhắc sau
chương trình mà bạn muốn chạy.
Vì vậy, trong trường hợp này, kêu vang là chương trình tôi muốn chạy,-o
có nghĩa là đầu ra một tập tin mà không còn a.out gọi là.
Đầu ra một tập tin gọi là hello, và làm như vậy bằng cách biên dịch
cuối cùng từ trên đường dây, hello.c.
Vì vậy, trong ngắn hạn, đây là một cải tiến rất cận biên, theo đó
thay vì phải này a.out tập tin tên là ngớ ngẩn,
Bây giờ tôi có thể làm kêu vang-o hello, sau đó hello.c, và
sau đó nhấn Enter.
Dường như không có gì xảy ra, nhưng một lần nữa giống như với 0 -
có vẻ như không có gì xảy ra có nghĩa là không có gì sai trái xảy ra -
do đó, chúng ta hãy làm ls Enter, và thực sự bây giờ tôi
có một chương trình hello.
Vì vậy, nếu tôi gõ chào bây giờ, lệnh không được tìm thấy.
OK, /.
Vì vậy, chính xác.
Vì vậy, bởi vì chương trình này, tôi đã viết, và nó đã không đi kèm với
máy tính, / hello, Enter, có nghĩa là
Tôi bây giờ đang chạy.
>> Vì vậy, đó là nó ở đó.
Bây giờ những gì chúng tôi cuối cùng sẽ nhận được nhiều hơn và nhiều hơn nữa dòng lệnh
đối số cho phép chúng ta làm nhiều hơn nữa, nhưng chỉ đối với những người cho
người này có thể là quá cũ, hãy để tôi thực sự đi vào một
thư mục ở đây và chỉ cung cấp cho bạn một lời trêu ghẹo làm thế nào khác chúng tôi
có thể đi về thực hiện hello thế giới.
Hãy để tôi đi vào đây, và tôi sẽ để mở nó.
Vì vậy, trên thực tế, tôi sẽ giải thích những gì tôi đang làm, do đó,
này là hữu ích.
Hãy để tôi trở lại.
>> Vì vậy, tôi đã làm điều này một thời gian dài.
Vì vậy, nhận thấy bên phải có một vài
thư mục được đặt tên kỳ quặc source1m và source1w.
Đây chỉ là ngớ ngẩn ước chúng tôi sử dụng.
Nguồn chỉ có nghĩa là mã nguồn, 1 có nghĩa là đây là một tuần, và
m có nghĩa là nó Thứ hai, và w có nghĩa là nó thứ tư.
Vì vậy, không có gì khó hiểu đó.
Nó chỉ là ký hiệu viết tắt.
Những điều này màu xanh là các thư mục, hay còn gọi là
thư mục.
Tôi muốn đi vào thư mục đó, và trên một máy tính bình thường
Tôi chỉ có thể tăng gấp đôi nhấp chuột vào biểu tượng thư mục và
có tất cả các tác phẩm của tôi.
Tuy nhiên, trong một môi trường dòng lệnh, tôi có thể không hoàn toàn làm
đó, vì vậy thay vào đó, tôi phải thay đổi thư mục bằng tay.
Vì vậy, nếu tôi gõ cd và sau đó source1m, Enter, thông báo rằng
dấu nhắc của tôi, điều màu trắng ở bên trái, chỉ cần thay đổi.
Và thực sự, khi nó chỉ cho biết dấu ngoặc đơn và sau đó là
squiggle ít, biểu tượng dấu ngã, mà chỉ có nghĩa là tôi
trong thư mục nhà của John Harvard, tài liệu của mình,
các tập tin cá nhân của mình.
Nhưng bây giờ trong dấu ngoặc đơn, nó nói ~ / source1m.
Điều này chỉ có nghĩa là tôi đang ở trong một thư mục được gọi là source1m
đó là trong thư mục nhà của John Harvard.
Vì vậy, nếu bây giờ tôi muốn liệt kê các tập tin trong thư mục này, dễ dàng
câu hỏi, tôi chỉ cần gõ ls.
Và bây giờ tôi thấy tất cả các tập tin mà tôi tạo ra trước cho ngày hôm nay
bài giảng, tất cả, hoặc hầu hết trong số đó, xảy ra
để kết thúc. c.
>> Vì vậy, hãy để tôi đi trước và chạy gedit của một chương trình được gọi là
holloway.c, được viết bởi một số hacker ngẫu nhiên
trên Internet, trông một chút như thế này.
Và chúng tôi sẽ không phải đi qua một trong những điều này trong bất kỳ
chi tiết, nhưng đối với những người thoải mái hơn, đặc biệt, nếu
bạn muốn để có một đoán là những gì chương trình này không có gì ở đây.
Hãy yên tâm, cho dù bạn ít hơn hoặc thoải mái hơn,
chúng ta thậm chí không nhận được các loại điều này vào cuối năm
học kỳ này.
Đây là một ví dụ về một cuộc thi obfuscated C, là những gì mà
có nghĩa là viết chương trình khó hiểu nhất bạn có thể có
để có thể vượt qua những người khác thông minh, những người tương tự
cố gắng để viết những điều và cho thấy rằng họ có thể viết
những điều khó hiểu hơn hơn bạn.
Vì vậy, đây không phải là một ví dụ về một chương trình tốt bằng văn bản từ
quan điểm của phong cách này là một ví dụ của một chương trình
thắng một cuộc thi, người đang cố gắng
mơ hồ và trừu tượng.
>> Vì vậy, nếu chúng ta chạy điều này, để tôi đi vào cửa sổ thiết bị đầu cuối của tôi,
do đó, để nói chuyện.
Vì vậy, môi trường màu đen và trắng này được gọi là
cửa sổ terminal nói chung.
Hãy để tôi đi trước và biên dịch nó.
Tôi sẽ không sử dụng kêu vang, bởi vì chương trình này là một
chút khó hiểu và nó cần một khác nhau
trình biên dịch, được gọi là GCC.
Nhưng nó không làm điều tương tự.
Nó có mã nguồn để mã đối tượng.
Và bây giờ nếu tôi chạy a.out, chương trình mà bạn
chỉ thấy hiện điều này.
Vì vậy, đồng nghiệp rằng năm đó giành chiến thắng cuộc thi đó.
Nhưng dù sao, chúng tôi không đi theo hướng đó, cho mỗi gia nhập.
>> Vì vậy, chúng ta hãy thực sự cố gắng tách chúng ta có thể làm gì
với các khối xây dựng cơ bản để thực hiện nhiều hơn và nhiều hơn nữa
thú vị chương trình.
Vì vậy, chúng tôi đã viết một chương trình, chúng tôi đã chạy một chương trình.
Bây giờ chúng ta thực sự có thể đơn giản hóa và không còn phải viết
kêu vang lời tại dấu nhắc.
Nó chỉ ra như các chương trình của chúng tôi nhận được khó hiểu hơn, chúng ta có thể, hoặc
phức tạp hơn thay vào đó, chúng ta thực sự có thể chạy lệnh này.
Vì vậy, hãy để tôi quay trở lại thư mục nhà của tôi, có thể nói, hãy để tôi
loại bỏ - rm là lệnh loại bỏ - Tôi sẽ để loại bỏ
các tập tin được gọi là a.out và hello.
Và bây giờ thấy trong một môi trường dòng lệnh, giống như trong
một giao diện, bạn sẽ có được nhắc nhở. Tôi không thể nhấn một nút mặc dù, tôi
phải gõ y cho có, y có.
Và bây giờ nếu tôi gõ ls một lần nữa, thông báo rằng những người màu xanh lá cây
chương trình - a.out và hello -
đã mất hết.
Hãy coi chừng rm.
Nó có thể làm những điều xấu, cũng giống như bạn có thể bằng cách kéo
điều cần thùng rác của bạn.
>> Vì vậy, bây giờ chúng ta hãy đi trước và tôi có thể làm điều này - kêu vang-o
hello, hello -
Tôi đã chán cách gõ lệnh này.
Mặc dù tôi đã gõ nó một chút một cách nhanh chóng.
Vì vậy, chúng tôi thay vì có thể làm xin chào.
Vì vậy, chắc không phải là một trình biên dịch.
Nó chỉ là một chương trình thân thiện đến với Linux, trong
trường hợp hệ điều hành -
tự động hóa quá trình biên dịch chương trình.
Vì vậy, thay vì ghi nhớ kêu vang-o tên tập tin và
sau đó ..., đặc biệt là khi những dòng có được lâu hơn và
lâu hơn, tôi chỉ có thể viết thực hiện.
Và điều này sẽ nhổ ra một bó toàn bộ những thứ đó
cuối cùng chúng ta sẽ thấy trong học kỳ này.
Nhưng hãy chú ý bây giờ nếu tôi gõ ls, hello là trở lại trong thư mục của tôi.
Và thực sự tôi có thể chạy nó với / hello.
Vì vậy, hãy chỉ tự động hóa quá trình chạy những gì đã được,
trong trường hợp này, một, dài hơn nhiều lệnh phức tạp hơn.
Vì vậy, chúng ta sẽ bắt đầu sử dụng làm cho, chỉ vì nó là rất nhiều
thân thiện với người sử dụng hơn.
>> Nhưng bây giờ chúng ta hãy làm một chương trình thú vị hơn
hơn là chỉ nói hello.
Vì vậy, trong các chương trình, chúng tôi đã viết vậy, đến nay có chính.
Đó chỉ là điều mặc định đá tất cả mọi thứ ra.
Nhưng cũng có những chức năng khác ra khỏi đó là tốt, và
stdio.h là điều mà chúng ta thấy ở đầu của chúng tôi
tập tin trước khi, và đó là những gì được biết đến như các thư viện chuẩn.
Bên trong của thư viện chuẩn là một bó toàn bộ các chức năng
mà người khác đã viết, và chúng tôi có thể bắt đầu sử dụng các
chức năng để viết nhiều hơn nữa
thú vị chương trình mình.
>> Vì vậy, hãy để tôi đi trở lại thiết bị.
Tôi sẽ để đóng cửa sổ thiết bị đầu cuối.
Tôi sẽ đóng những điều chúng tôi đã viết trước đó, và chỉ cần đi
vào hello.c, và chú ý bây giờ tôi có thể làm như sau.
Xin chào thế giới không phải là tất cả những gì thú vị, tôi muốn
cá nhân hóa chương trình này cho bản thân mình.
Vì vậy, thay vì nói thế giới, tôi sẽ
đi trước và nói -
Tôi có thể gõ David - nhưng điều này thực sự là loại
về cơ bản là giống nhau.
Nhưng chúng ta hãy thử ý tưởng này giữ chỗ.
Nhớ lại rằng trong C, đúng hơn là trong printf, chúng tôi đã có những
placeholders, và có nhiều hơn chỉ là% d.
Vì vậy,% d, nhanh chóng kiểm tra sanity.
Được rồi, số thập phân, đó là nó.
Chữ số thập phân, đó là tất cả.
Vì vậy,% c, như chúng ta sẽ gặp phải, là có được một nhân vật.
Đặt một nhân vật ở đây, một lá thư từ a đến z,
hoặc biểu tượng dấu chấm câu.
Một nhân vật duy nhất,% f, ai biết từ các ngôn ngữ khác?
Vì vậy, một giá trị dấu chấm động.
Một số thực.
Vì vậy, không phải là một số thập phân - điều này thực sự là một số thực với
một điểm thập phân, và một số các chữ số bên trái
và bên phải của nó.
% S, chuỗi.
Đó là một trong chúng ta sẽ nhìn thấy khá thường xuyên.
Một chuỗi, một lần nữa, chỉ là một từ, một cụm từ, một chuỗi các
cá nhân ký tự.
Và cuối cùng, lld?
Vì vậy, đây là một trường hợp góc.
Long, dài thập phân.
Vì vậy, nếu bạn muốn không chỉ là một số lượng lớn này, bạn
muốn có một số lớn hơn, bạn sẽ phải chỉ định để
máy tính mà nó là của một kích thước cụ thể.
>> Vì vậy, hãy tinh chỉnh một chút.
Chứ không phải là mã cứng trong David, hãy để tôi hơi
động nói% s.
Vì vậy, đặt% s ở đây, mà là một giữ chỗ cho một chuỗi.
Sau đó, hãy để tôi làm dấu phẩy, và sau đó "David" ở đây.
Bây giờ điều này không phải là tất cả những trí tuệ thú vị,
bởi vì tất cả những gì tôi đã làm được thực sự tạo ra thêm công việc vì
máy tính.
Thay vì nói cho máy tính làm điều này cùng một lúc, tôi bây giờ
nói rằng làm điều này và chèn một chuỗi cuối cùng, dấu phẩy,
ở đây là chuỗi đó.
Vì vậy, đây không phải là một cải tiến tốt hơn, nhưng nó ít nhất là
một bước tiến tới một chương trình thú vị hơn.
Bởi vì bây giờ, hãy để tôi đi trước và làm cho cửa sổ này một chút
lớn hơn, hãy để tôi đi trước và chạy làm cho xin chào.
Và bây giờ, / a.out là không làm việc, tại sao?
Được rồi, bây giờ nó được gọi là hello.
Vì vậy, một lần nữa, và cũng kêu vang với một o-, đổi tên thành
chương trình để có một cái gì đó thú vị hơn.
Và thì đấy: bây giờ nó nói xin chào David.
>> Được rồi, vẫn còn là một chương trình ngu ngốc.
Vì vậy, bây giờ chúng ta hãy thực sự quay trở lại đây và giới thiệu các khái niệm
của một biến.
Nó sẽ không được tốt đẹp nếu tôi có thể khai báo một biến
có loại là chuỗi?
Và giá trị của biến thực sự đến từ người sử dụng
chính mình.
Vì vậy, tùy tiện, tôi sẽ gọi s biến của tôi, đó là
chỉ là một quy ước chung khi bạn có một biến gọi là
các chuỗi.
Tôi sẽ làm dấu bằng, và sau đó tôi sẽ gọi một
chức năng gọi là GetString.
Vì vậy, GetString không phải là một cái gì đó mà đến được xây dựng vào C. Đó là
một chức năng mà các nhân viên CS50 đã viết, thực sự chỉ dành cho
những cặp vợ chồng đầu tiên của tuần, để đơn giản hóa quá trình
nhận được đầu vào người sử dụng và được người sử dụng đầu vào trong các hình thức
các chuỗi, hoặc số, và như vậy.
Vì vậy, GetString là giống như printf, nhưng rõ ràng chứ không phải là
in nó sẽ làm những gì tên của nó nói, có được một chuỗi.
Nhưng để sử dụng GetString, chúng ta sẽ phải thực hiện thay đổi
ở đây, ngoài này.
Vì vậy, bằng trực giác, chương trình này, hy vọng, bằng cách nào đó
nhận được một chuỗi từ người dùng, và sau đó nó sẽ làm gì
với chuỗi đó, được gọi là s?
Nó chỉ để in nó, phải không?
Vẫn không một chương trình kích thích bởi vì tất cả nó sẽ
làm là cắm vào giá trị đó vào nơi mà% s
nói rằng nó nên đi.
>> Vì vậy, hãy cho thấy điều này trong hành động.
Hãy để tôi tiết kiệm và thu nhỏ.
Bây giờ trong cửa sổ thiết bị đầu cuối của tôi ở đây, lát nhỏ một,
hãy để tôi một lần nữa làm xin chào.
Được rồi, ah, damn, tôi có một bó toàn bộ lỗi.
Hãy để tôi di chuyển lên, và chúng tôi nhìn thấy đầu tiên của chúng tôi -
do đó, chúng ta hãy thực sự làm được điều này trong một cửa sổ lớn hơn, do đó bạn
có thể thấy làm thế nào xấu tôi hơi say lên -
do đó hãy hello.
Được rồi, đó là một thảm họa, phải không?
Tôi đã viết ba dòng mã, và
nó cho tôi 12 lỗi.
Vậy tại sao điều này?
Vì vậy, may mắn thay, đôi khi khi bạn nhìn thấy nhiều, rất nhiều lỗi
phun ra cùng một lúc, nó thực sự chỉ vì bạn đã
nhầm lẫn các máy tính ở đây.
Và nó vẫn còn bối rối bởi thời gian nó được xuống đây.
Và do đó, nó chỉ bắt đầu vấp ngã, và vấp ngã, và
phun ra nhiều thứ đáng sợ hơn là thực sự được áp dụng.
Vì vậy, nói chung, luôn luôn bắt đầu với đầu.
>> Vì vậy, hầu hết trên cùng thể hiện của màu đỏ,
thông báo lỗi này.
Sử dụng chuỗi định danh không khai báo, đã làm tôi
có nghĩa là tiêu chuẩn trong?
Tôi thì không.
Tôi có nghĩa là chuỗi, nhưng điều này là bởi vì, cũng vậy, chuỗi từ
mà tôi tiếp tục sử dụng bằng lời nói thực sự
không tồn tại trong C hoặc.
Đó là một cái gì đó chúng ta sẽ sử dụng chỉ trong tuần đầu tiên hoặc hai
ở đây, nhưng nó tồn tại trong một tập tin gọi là cs50.h.
Vì vậy, bây giờ, biết rằng có thư viện này khác
nhân viên đã viết, vì vậy nó được viết gần đây
stdio.h.
Nhưng bên trong của cs50.h là một định nghĩa, một từ đồng nghĩa
các loại, tạo ra chuỗi từ này.
>> Vì vậy, bây giờ hãy để tôi quay trở lại cửa sổ thiết bị đầu cuối của tôi.
Tôi sẽ rõ ràng cả đống lộn xộn này bằng cách Ctrl-L. Chúng tôi sẽ chỉ
cuốn bay mọi thứ sạch sẽ, và tôi sẽ đi trước và thực
xin chào một lần nữa, Enter.
Vì vậy, những gì đã xảy ra bây giờ?
Bây giờ tất cả những sai sót đi đi.
Vì vậy, những gì tôi có thực sự thực hiện?
Tôi đã chỉ dạy máy tính rằng chuỗi tồn tại, và nó
trong tập tin đó được gọi là cs50.h.
Vì vậy, ngừng phàn nàn, bởi vì bây giờ bạn biết nơi để tìm
đó là chức năng khai báo vậy để nói chuyện.
Trường hợp tồn tại trên thế giới.
>> Vì vậy, bây giờ tôi sẽ đi trước và chạy xin chào.
Tôi dường như có một vòng lặp vô hạn, không có gì đang xảy ra.
Vì vậy, tôi cần phải gõ một cái gì đó ở đây, ngay.
Dòng mã đầu tiên trong chương trình của tôi được getString.
Vì vậy, nó nghĩa là chờ đợi cho tôi để có được một chuỗi.
Vì vậy, trong ý nghĩa đó có, nó là một vòng lặp vô hạn.
Rõ ràng trong GetString là hành vi mặc định mà chúng ta
viết - các nhân viên -
mà chỉ nói rằng chờ đợi và chờ đợi và chờ đợi và chờ đợi và chờ đợi,
cho đến khi người sử dụng cung cấp cho bạn một chuỗi bằng cách gõ một cái gì đó.
Vì vậy, hãy để tôi đi trước và gõ vào D-a-v - i-d, Enter.
Và vì thế, xin chào David.
>> Bây giờ thực hiện điều này có vẻ như nó chỉ là một hành động?
Hãy để tôi đi trước và gõ Tommy.
Nhập, được rồi, có vẻ là làm việc.
Hoạt động cho Rob, công trình cho Zamyla, làm việc cho - okay.
Vì vậy, nó sẽ làm việc, rất có thể.
Vì vậy, nó sẽ in ra bất cứ điều gì chúng tôi thực sự cung cấp cho nó,
và chúng ta có thể có một chút khó khăn ở đây.
Hãy xem nếu chúng ta làm một cái gì đó giống như xin chào.
Có thể đi qua ở đây, chúng ta hãy xem, sao chép, dán.
Tôi sẽ không để có thể dán nhiều lần ở đây.
Paste, okay, Shift + Ctrl + V. Vì vậy, những gì có thể
xảy ra đó là xấu ở đây?
>> Rồi, do đó, segfaults.
Vì vậy, một số bạn với các nền tảng trước sẽ biết rằng
nói chung, cho máy tính rất nhiều các yếu tố đầu vào khi họ đang
có lẽ không có nghĩa là để nhận được tên dài như thế này - xấu
điều xảy ra.
Thật vậy, trong thế giới của các trang web, cũng vậy, điều này xảy ra khá một chút,
, theo đó khi bạn đang thiết kế một trang web, khi bạn đang
thiết kế Facebook, bạn có để làm cho các quyết định tùy ý lên
phía trước, như bao lâu của một ai đó
Facebook tên người dùng?
Hoặc bao lâu tên đầu tiên của một ai đó sẽ là gì?
Số điện thoại của một ai đó sẽ là bao lâu và như thế.
Và nếu lập trình làm cho các giả định xấu, các chương trình phá vỡ
bởi vì bạn cố gắng cho họ sản xuất nhiều hơn, nhiều đầu vào
đúng hơn, hơn là họ có bộ nhớ.
Hoặc bộ nhớ RAM phân bổ cho nó, và do đó, nếu bây giờ tôi nhấn Enter,
chương trình đó thực sự làm việc, bởi vì chúng tôi đã ở thư viện
và chúng tôi thực sự dự đoán trường hợp cụ thể.
Nhưng chắc chắn trong học kỳ này, bạn sẽ viết ít nhất một
chương trình mà sẽ nói những lời này.
Hãy nhớ điều này tuần kể từ bây giờ, có thể là hai ngày, kể từ bây giờ.
Segmentation fault là một điều xấu.
Nó sẽ đề cập đến một cái gì đó làm của bạn là các máy tính
không dự đoán.
Và trong trường hợp đó, bạn, các lập trình viên, không dự đoán.
Giống như những gì đống vớ này, đã có khác nhau
trường hợp góc, chúng ta có thể gặp phải.
Tương tự như vậy trong các chương trình nếu bạn không lường trước được bao lâu
tên của một ai đó có được.
Hoặc nếu tôi có một người sử dụng độc hại, và tên của mình là
thực sự là khá ngắn, nhưng họ chỉ cần cố gắng
gây rối với tôi?
Điều gì sẽ là hành vi của chương trình của tôi?
Vâng, trong trường hợp đó, một cái gì đó thực sự có thể sụp đổ.
>> Vì vậy, hãy làm điều này.
Trong 90 phút, đây là một thời gian dài khủng khiếp
để làm khoa học máy tính.
Tại sao chúng ta không nhận được vào các thói quen của một năm phút
phá vỡ ở đây, và khi chúng ta trở lại, chúng tôi sẽ thêm một vài
các chương trình phức tạp và hấp dẫn hơn?
Năm phút.
>> Được rồi.
Vì vậy, một bình luận nhanh chóng.
Tôi được cho biết rằng mặc dù đây là trên màn hình trước, những gì
ra khỏi miệng của tôi là cs50.net/rsvp.
Điều này là chính xác. cs50.net/lunch.
Vì vậy, bây giờ bạn có thể thử RSVPing này tại / bữa ăn trưa.
Nhưng hãy làm điều này ngay bây giờ.
Vì vậy, điều này đã được siêu nhanh, siêu mới cho rất nhiều người.
Old mũ cho một số folks.
Vì vậy, chúng ta hãy quay lại chỉ là một thời điểm, và xem làm thế nào chúng ta có
sản lượng thế giới hello này chỉ là một thời điểm trước đây.
>> Vì vậy, đầu tiên, có thiết bị này CS50.
Một lần nữa, mảnh của vấn đề, phần mềm thiết lập 1 sẽ cho biết
bạn làm thế nào để tải về nó, nơi để tải về, nhấp chuột
và vv.
Và sau đó một khi bạn làm theo những hướng dẫn, bạn sẽ có thể
để tối đa hóa cửa sổ của bạn, và Mac hoặc máy PC của bạn sẽ xem xét một
ít một cái gì đó như thế này.
Một nền đen, một thư mục nhà ở đầu trang, nơi tất cả
các tập tin của bạn, một thùng rác ở phía trên trái,
một menu ở phía dưới.
Vì vậy, một lần nữa, đẹp, tinh thần tương tự Mac OS hoặc Windows,
mặc dù nó xảy ra là Linux.
Vì vậy, chúng tôi đã làm những gì tiếp theo làm gì?
Vâng, chúng tôi bắt đầu viết chương trình.
Và nhớ lại từ tuần trước rằng tất cả phải mất để viết một
chương trình là một trình soạn thảo văn bản đơn giản,
như Notepad hoặc TextEdit.
Thành thật mà nói, bạn thậm chí có thể sử dụng Microsoft Word.
Tuy nhiên, những điều xấu sẽ xảy ra, bởi vì đó là rất
giải pháp mạnh tay để viết một chương trình, cộng với nó sẽ
lưu nó trong các định dạng tập tin sai.
Nhưng nó chỉ là một trình soạn thảo văn bản, xử lý văn bản, tất cả những gì
cần thiết để viết một chương trình.
>> Vì vậy, trong các gia dụng CS50, chúng ta có thể làm điều này trong một cách đơn giản.
Chúng tôi có thể chỉ cần nhấp chuột vào biểu tượng này ở phía dưới bên trái.
Và một lần nữa, vấn đề thiết lập 1 sẽ tư vấn cho bạn về điều này, và thì đấy -
bạn sẽ có được giao diện màu đen và trắng, nơi chúng tôi có thể bắt đầu
viết code.
Vì vậy, chúng ta hãy bắt đầu viết một chương trình siêu đơn giản một lần nữa.
Tôi sẽ đi lên vào File, Save, và tôi sẽ gọi
này, hãy nói, hello2.c.
Và tôi chỉ nói với nó bằng cách nhấp vào jharvard, đặt nó
trong thư mục chính của mình, tôi không thực sự quan tâm
nơi này đi.
Và sau đó Save.
Và bây giờ tôi có thể bắt đầu viết chương trình của tôi.
Và tôi nhớ lại từ trước rằng tôi phải viết int
main (void).
• Phóng to vào phía trên bên trái.
Và sau đó tôi muốn nói printf, mất hai.
Và bây giờ, dòng mới gần quote, đóng
dấu ngoặc đơn, dấu chấm phẩy.
Và sau đó tôi đi xuống đây để cửa sổ terminal của tôi đó là
nhúng trong gedit, chỉ cho thuận tiện.
Và tôi sẽ đi trước và viết làm cho xin chào, nhưng không
xin chào mình, hello2.
>> Vì vậy, tập tin của tôi được gọi là hello2.c. Tập tin của tôi do đó
nên được gọi là hello2, trong trường hợp này.
Chết tiệt, tôi đã làm gì sai?
Được rồi, vì vậy tôi rõ ràng bỏ qua một dòng, nếu bạn nhớ lại những gì
chương trình trước đó như thế nào.
Nhưng chúng ta hãy xem nếu chúng ta không có thể trêu chọc nhau.
Thật không may, hầu hết mọi người, những người viết chương trình mà
chúng ta viết chương trình không đơn giản hóa mọi thứ tất cả những gì tốt.
Vì vậy, chúng ta phải loại lướt qua những gì không hoàn toàn làm
cảm nhận được ở đây và xem liệu chúng ta có thể tìm ra những gì sai.
Dòng đầu tiên có nói ngầm tuyên bố C
thư viện chức năng printf với kiểu int.
OK, tôi hiểu phần trong đó.
Nhưng có vẻ như ám chỉ đến thực tế là tôi đã sử dụng printf
sai, bằng cách nào đó.
Và ý thức những gì là sai không?
Tôi chỉ không dạy máy tính mà nó trong một tập tin
gọi là stdio.h.
Bây giờ tôi chỉ có chỉ nhớ rằng printf là
trong stdio.h, và thực sự có sẽ khác
chức năng trong cùng một tập tin rằng chúng tôi sẽ có được sử dụng để.
>> Vì vậy, bây giờ hãy để tôi đi trước và nhấn Ctrl-L chỉ cần xóa
đi, chạy lại hello2, và thì đấy.
Và lệnh này một lần nữa, phức tạp hơn, chúng tôi sẽ giải thích cho
mục đích của ngày hôm nay.
Nhưng nó đã chạy kêu vang, kêu vang mã nguồn và
spits ra 0 và 1.
Và những người 0 và 1 trong trường hợp này được gọi là gì?
Được rồi, phản đối mã.
Và được gọi là các tập tin mà họ đang ở trong, vì vậy,
hello2, trong trường hợp này.
Bởi vì tập tin văn bản của tôi là hello2.c Enter.
Và bây giờ tôi đã mất hai dấu chấm than, chấm than
điểm, dấu chấm than.
Được rồi, vì vậy chúng tôi có khả năng để có những chuỗi,
rõ ràng.
Vâng, những gì khác chúng ta có thể nhận được từ người sử dụng?
>> Cũng trong thư viện CS50, có các chức năng khác mà
sẽ đơn giản hóa cuộc sống của chúng tôi trong những ngày đầu tiên.
Getchar, GetDouble, GetFloat, getInt,
GetLongLong, GetString.
Vâng, chúng ta hãy nhổ dễ nhất của những đầu tiên.
GetString nghĩa nào đó.
Nó chỉ ngồi ở đó, chờ đợi cho người sử dụng gõ một cái gì đó trong,
và ngay sau khi tôi gõ gì đó vào và nhấn Enter,
làm một cái gì đó với giá trị đó.
Vì vậy, hãy quay trở lại ví dụ đó để thấy chính xác
GetString đang làm.
Hãy để tôi đi trước và mở ra trong gedit, hello.c, và nhớ lại
ngay trước giờ nghỉ, đây là nơi chúng tôi rời đi.
>> Vì vậy, hãy trêu chọc này ngoài trong một chi tiết nhỏ hơn.
Vì vậy, trên dòng 6, có hai điều
xảy ra tại thời điểm này.
Dấu bằng là tách nửa đầu và nửa cuối năm.
Vì vậy, ở phía bên tay trái của dấu bằng, chúng tôi
nói string s.
Và sau đó, thuật ngữ chỉ của giáo dân, string s là những gì
làm, bạn nghĩ gì?
Điều này tạo ra cái gì cơ?
Vì vậy, nó tạo ra một chuỗi được gọi là s.
Bây giờ những gì thực sự có nghĩa là gì?
Vâng, nó dành không gian cho một chuỗi được gọi là s.
Đó không phải là hoàn toàn đúng.
Này đang làm gì?
Máy tính tốt, như bạn biết, có ổ đĩa cứng, đó là nơi
các tập tin của bạn được lưu trữ.
Các máy tính có bộ nhớ RAM, và đó là nơi chương trình được nạp
trong khi họ đang chạy.
Vì vậy, khi bạn kích đúp vào một biểu tượng và Microsoft Word sẽ mở ra
up, Microsoft Word đang chạy, vậy để nói chuyện, trong bộ nhớ RAM, đó là
phần điện tử của máy tính của bạn.
Không phải là thể chất, cơ khí một phần đó là quay,
dữ liệu thường được lưu trữ lâu dài.
Vì vậy, string s khá nhiều nói máy tính cho tôi
đủ RAM để phù hợp với một chuỗi.
Bây giờ đó là một chút của một sự đơn giản hóa, bởi vì
lớn như thế nào là chuỗi sẽ được?
Vâng, chúng tôi thực sự không biết được nêu ra, vì vậy trong những tuần tới
chúng tôi thực sự sẽ kéo trở lại lớp đó là chuỗi và
chúng tôi sẽ cho bạn biết những gì nó thực sự là.
String, cho bây giờ, chỉ là sự đơn giản hóa tốt đẹp của thế giới của chúng ta.
Nhưng string s tuyên bố một chuỗi được gọi là s, cho bây giờ.
Khai báo một chuỗi.
Nó bảo lưu một số không gian trong bộ nhớ RAM cho chuỗi người dùng là
về gõ.
>> Bây giờ hãy nhìn ở bên phải của dấu bằng.
Vì vậy, nó nói GetString ().
Và một sự tỉnh táo ít kiểm tra.
Thực tế là không có gì bên trong dấu ngoặc đơn
ngụ ý gì về GetString?
Nó không có đối số.
Nghĩa là, bạn không thể ảnh hưởng đến hành vi của nó trong bất kỳ cách nào.
Mỗi khi bạn sử dụng nó, nó sẽ nhận được một chuỗi và đó là nó.
Ngược lại, printf, hy vọng hành vi của nó không
thay đổi mỗi lần.
Nếu không, nó là một chức năng in ấn khá vô dụng nếu
nó làm điều tương tự.
Nếu nó luôn luôn in David hoặc một cái gì đó
tùy ý tất cả các thời gian.
Vì vậy, printf làm cho tinh thần để có một đối số.
GetString không thực sự cần một đối số, vì tôi muốn
để có được một chuỗi từ người dùng và đó là người dùng sẽ
để cung cấp năng động bằng cách gõ các chữ cái khác nhau
mỗi lần vào bàn phím.
>> Vì vậy, những gì không GetString để cuối cùng?
Hãy suy nghĩ về nó như là hộp đen nhỏ này.
Và hộp đen này sẽ không có đầu vào, nhưng khi bạn đập vào
nó, nó phun ra một chuỗi mà người dùng đã gõ.
Và thực tế là có một dấu bằng có nghĩa là mất
những gì được nhổ ra bên phải và lưu trữ nó bên trong
những gì ở bên trái.
Vì vậy, dấu bằng ở đây, nó thực sự không có nghĩa là
bình đẳng, chứ không phải về mặt kỹ thuật có nghĩa là chuyển nhượng.
Lấy giá trị bên phải, và đặt nó trong
biến trên bên trái.
Vì vậy, đó là tất cả những gì xảy ra ở đó.
>> Bây giờ trong dòng 7, chúng tôi đang gọi printf.
Vì vậy, printf hy vọng là nhận được một chút nhàm chán bây giờ.
Vì vậy, in một chuỗi định dạng.
Những gì chuỗi?
In ra, "h-e-l-l-o,% s
\ N ".
Được rồi, vì vậy tôi làm những gì muốn plug-in cho% s?
Nghĩa đen, bất cứ điều gì được lưu trữ trong s.
Vì vậy, trong trường hợp này, kiểm tra sự tỉnh táo chút, làm thế nào nhiều đối số không
printf?
Được rồi, tôi nghe thấy một.
Tôi nghe một lần nữa.
Hai, tôi nghe thấy hai.
Và làm thế nào khoảng ba?
Được rồi, ba?
Excellent.
Ba câu trả lời có thể, chỉ có một trong số họ là chính xác.
Vì vậy, lập luận một lần nữa ảnh hưởng đến hành vi của một hàm.
Trong quá khứ, printf đã chỉ mất một đối số.
"Hello world" là một đối số duy nhất.
Tuy nhiên, bây giờ, nhận thấy nơi đây là dấu phẩy.
Dấu phẩy Đây là bên ngoài của các báo / unquote, có nghĩa là
hey printf, ở đây có một đối số thứ hai.
>> Vì vậy, dấu phẩy trong hầu hết các ngôn ngữ lập trình
riêng biệt nhiều đối số.
Vì vậy, câu trả lời ở đây chắc chắn là không phải là một, bởi vì
có dấu phẩy này.
Vì vậy, tối thiểu, printf là dường như hai
đối số thời gian này.
Tuy nhiên, cơ hội cho một câu hỏi trick ở đây là những gì
về dấu phẩy này?
Điều này hàm ý rằng có thực sự là ba đối số?
Này, điều này, và điều này.
Vì vậy, không, vì dấu phẩy bên trong đó là các dấu ngoặc kép,
có nghĩa là nó thực sự chỉ là một thẩm mỹ của tiếng Anh.
Nó không có gì để làm với số lượng
đối số trong chương trình này.
Vì vậy, dấu phẩy này bên ngoài các dấu ngoặc kép.
Và sau đó trở về 0.
Loại chỉ cho bây giờ chúng ta hãy lấy cái này về đức tin
ngày hôm nay, và chỉ biết rằng khi các chức năng được thực hiện thực hiện
dòng mã, họ thường phải trả lại một số giá trị.
Trong trường hợp này, chỉ vì chính phải trả lại một int,
đó chỉ là cách ngôn ngữ C hoạt động.
>> Vì vậy, vì không có gì đã đi sai, cảm thấy như thế này của chương trình
tốt, tôi chỉ cứng mã hoá trong trở về 0.
Nhưng ngược lại, tôi sẽ viết điều này trong mã giả
bây giờ, giống như Joseph đã làm khi chúng tôi đã làm sock
Ví dụ tuần trước.
Nếu một cái gì đó đã đi sai - điều này là không thực tế mã - đã
sai, sau đó trở về, hãy nói, 1.
Khác trở về 0.
Vì vậy, đây là nơi mà chúng tôi đang đi với điều này.
Đây không phải là mã C thực tế, chỉ là giả.
Nhưng điều này là làm thế nào bạn có thể trở lại
giá trị có thể khác nhau.
Nhưng bây giờ tôi chỉ cần đi để đi trước và trở về 0.
Được rồi, bất kỳ câu hỏi vậy, đến nay về chức năng, cú pháp,
hoặc như thế nào?
Yeah, trong trở lại.
>> Khán giả: không nghe được]
DAVID Malan: Bạn có thể nói một chút to hơn?
Tại sao chương trình này 0 trở lại, và?
Khán giả: không nghe được]
DAVID Malan: Oh, đó là bởi vì tôi đã lười biếng, xin lỗi.
Không có phản ứng tích học tập tốt, trở về 0.
Tôi có thể loại cứu hộ này, bằng cách nói về mặt kỹ thuật C, nếu chính
không trả lại một cách rõ ràng giá trị, 0 sẽ được trả lại
tự động cho bạn.
Đó là sự thật, tôi không chỉ bao che.
Nhưng, tôi đã thực hiện nó theo cách này.
Không có takeaway thú vị hơn so với khác hơn là sai lầm của tôi.
Yeah?
>> Khán giả: Thông thường, khi bạn gõ vào một khoảng trống, có nghĩa là bạn
không trả lại một cái gì đó.
DAVID Malan: Đúng.
Nếu thay vào đó, bạn chỉ định trước khi tên của một chức năng,
dụ ở đây, có hiệu lực, sau đó chức năng
không trả lại bất cứ điều gì.
Và vì vậy tôi chỉ có thể nói, trả lại hoặc không có gì cả,
và đó sẽ là phù hợp.
Và chúng tôi sẽ trở lại đó.
Và chỉ FYI, một trong những sản lượng khai thác với việc học
lập trình trong một thế giới có hàng trăm cuốn sách và
hàng trăm trang web trên là bạn sẽ không thay đổi
xem cú pháp khác nhau trong cuốn sách khác nhau
bởi những người khác nhau.
Nhận ra chúng tôi sẽ làm tốt nhất của chúng tôi trong các phần và bài giảng được
nhất quán.
Nhưng đôi khi bạn sẽ thấy cú pháp xung đột.
Vì vậy, bất cứ khi nào nghi ngờ, chỉ cần hỏi.
Và nói chung, chúng tôi sẽ chăm sóc trong các bài giảng và phần để
hầu như luôn luôn trình bày nó một cách đúng đắn.
Và tôi nói hầu như luôn luôn, bởi vì trường hợp tại điểm.
Các câu hỏi khác?
>> TƯỢNG:% s tồn tại bên ngoài thiết bị?
DAVID Malan:% s tồn tại bên ngoài của thiết bị?
Vâng.
Vì vậy,% s đã làm với C. Thực tế là chúng ta đang sử dụng nó trong
thiết bị về cơ bản không có gì để làm với các
các tính năng của ngôn ngữ chúng ta đang sử dụng.
Thật vậy, từ tuần trước khi chúng tôi sử dụng máy Mac của tôi, tôi đã viết
C code trên máy Mac của tôi.
Tôi có thể sử dụng% s trên máy Mac của tôi, và bạn có thể sử dụng nó trên
máy tính Windows của bạn nếu bạn cài đặt một trình biên dịch, giống như
Visual Studio của Microsoft.
Vì vậy% s.
Tất cả những gì chúng tôi đang làm bên trong của cửa sổ này ngày hôm nay có
làm với C. Và về cơ bản không có gì để làm với các
hệ điều hành trong câu hỏi.
Ngược lại, cửa sổ thiết bị đầu cuối màu đen và trắng -
Tôi là đánh máy những thứ như ls, cd rm và -
mà đã làm với hệ điều hành và
điều hướng xung quanh.
Yeah.
Khán giả: Tôi có nghĩa là các thư viện, thư viện CS50.
DAVID Malan: Được rồi, vì vậy nếu bạn có nghĩa là các chuỗi từ khóa, mà
chỉ tồn tại trong thư viện CS50, chính xác.
Điều đó không tồn tại trong C chính nó, và thực sự trong một vài
tuần, chúng tôi sẽ ném đi những thư viện CS50 và bắt đầu
làm việc từ đầu mình, do đó, để nói chuyện.
Các câu hỏi khác?
Yeah.
>> Khán giả: không nghe được]
DAVID Malan: Câu hỏi.
Các trường hợp lệnh nhạy cảm?
Và hãy để tôi làm cho một sự khác biệt ở đây.
Vì vậy, lệnh nói chung là những điều chúng ta sẽ viết tại
dưới cùng của cửa sổ, trong cửa sổ thiết bị đầu cuối.
Bất cứ điều gì ở đây sẽ là các báo cáo hoặc mã C.
Tuy nhiên, trong cả hai trường hợp, câu trả lời là như nhau, có.
Cả hai của các môi trường, mã C ở đầu trang và
hệ điều hành dòng lệnh.
dưới, là trường hợp nhạy cảm.
Vì vậy, bạn phải tận dụng GetString có vốn đầu G,
vốn S. Bạn phải viết printf trong tất cả các chữ thường.
Bạn phải gõ ls ở dạng chữ thường tất cả.
Vì vậy, trong trường hợp này học kỳ, hầu hết các tình huống,
thực tế, vấn đề.
Vâng.
>> Khán giả: không nghe được]
DAVID Malan: Ah, như vậy được không, chúng tôi nếu những gì đã có một file
gọi là hello.d.
Vì vậy, nó quay ra D là một ngôn ngữ lập trình.
Và như vậy trong một số trường hợp, chúng tôi thực sự có thể viết một chương trình trong
tập tin đó và nó được biên dịch trong thời trang đó.
Chúng ta có thể, và thực sự, câu trả lời ngắn, tôi không biết.
Vì vậy, chúng ta sẽ làm điều này.
Hãy để tôi đi trước và tạo ra một tập tin mới.
Và spin ở đây, trung thực nói chung, là bất cứ khi nào bất kỳ nghi ngờ
học kỳ này, và bạn có một thiết bị hoặc máy tính của bạn
mở, đi trước và thử một cái gì đó.
Vì vậy, tôi sẽ lưu một tập tin gọi là hello.d.
Tiết kiệm này.
Và tôi sẽ để chạy make chào Nhập.
Dường như để suy ra rằng c nhiều khả năng
hơn d, trong trường hợp này.
Các câu hỏi khác.
Yeah.
>> Khán giả: không nghe được]
DAVID Malan: Được rồi, nói rằng một lần nữa.
Khán giả: không nghe được]
DAVID Malan: Làm thế nào bạn sẽ đi về chẩn đoán đó hoặc
xử lý sự cố đó?
Vì vậy, nhiều khả năng, bởi vì họ là những ngôn ngữ khác nhau,
rất có thể bạn sẽ nhận được một hoàn toàn
khác nhau chương trình xuất ra.
Bạn sẽ nhận được thông báo lỗi hoàn toàn khác nhau.
Và cũng có thể chỉ về thiết kế, nó cho là sẽ là một
quyết định thiết kế nghèo được viết hai khác nhau
ngôn ngữ với các tập tin gần như giống hệt tên là,
chính xác cùng một thư mục, sử dụng một
công cụ như tự động làm.
Vì vậy, tôi cũng có thể đẩy lùi và nói rằng trong 15 năm làm việc này,
không bao giờ được thực hiện cho rằng sai lầm.
Có thể xảy ra.
Tuy nhiên, chỉ khác nhau, tôi nghĩ rằng,
phòng thủ tại chỗ, hậu cần.
Cộng với các thông báo lỗi mà có thể xảy ra sau đó, mà có thể
cuối cùng đã tiết lộ những gì vấn đề là.
Nhưng một trường hợp góc có thể.
>> Được rồi, do đó, chúng ta hãy giới thiệu chỉ là một vài khác
tính năng ở đây bây giờ, vì vậy chúng ta có thể bắt đầu xây dựng vào nhiều
và phức tạp hơn chương trình.
Vì vậy, đầu tiên của tất cả, toán học.
Vì vậy, ví dụ toán học chỉ là loại dễ dàng trong tuần đầu tiên.
Điều này không phải là để nói rằng tất cả các lập trình là về
toán học.
Chắc chắn, sự hiểu biết các tính năng của
toán học, đại số đặc biệt, là
khá liên quan ở đây.
Ở cấp độ cao hơn CS các lớp học, đại số tuyến tính,
tính toán, và như thế.
Nhưng nhận ra hầu hết những gì chúng tôi sẽ làm trong học kỳ này làm giảm không
toán học, và chắc chắn không phải để số học, cho mỗi gia nhập, nhưng thực sự
chỉ logic và suy nghĩ cẩn thận.
Và do đó, sự liên kết này mà khoa học máy tính đã từ lâu đã có,
đặc biệt là ở cấp học cao, với toán học, là một
chút gây hiểu nhầm.
Bởi vì hầu hết các chương trình mà chúng ta sẽ viết, thực sự,
sắp xếp của cấp cao hơn và tập trung vào giải quyết các vấn đề đó,
chắc chắn, có thể sử dụng một số cộng, trừ, và các
công thức toán học hoặc tương tự,
nhưng vào cuối ngày, đó là về tư duy và không
chỉ thực hiện những gì bạn có thể đã được thực hiện trên giống như một TI
máy tính trong trường trung học.
>> Vì vậy, với những gì đã nói, chúng ta hãy làm điều gì đó với những
các nhà khai thác toán học tồn tại để chúng ta có thể chuyến đi
trên một số trong những khía cạnh cơ bản của chương trình, hoặc trong
trường hợp này C. Vì vậy, như thư viện CS50 đề nghị,
và hôm nay chúng tôi chỉ sử dụng GetString - và trong một khoảnh khắc
có lẽ là một chức năng khác -
nhưng cũng có những loại dữ liệu khác nhau trong một máy tính.
Vào cuối ngày, máy tính chỉ biết 0 và 1.
Nhưng nhớ lại rằng tuần trước, chúng tôi đã nói về hệ thống nhị phân
trong việc đại diện cho số, như số 0, 1, và 2,
tất cả các cách trên lên đến 8, như trong video của Nate.
Và sau đó chúng ta có thể tính cao hơn nhiều như chúng ta
đã làm trên sân khấu ở đây.
Nhưng nếu bạn muốn đại diện cho không chỉ là những con số nhưng các chữ cái,
chúng tôi, những con người, có để đến với một số tùy ý
công ước, theo đó, nếu ở cuối ngày tất cả các máy tính của tôi
đã là khả năng để thể hiện 0 và 1, chúng tôi muốn tốt hơn
bắt đầu chuẩn hóa mô hình 0 và 1 đại diện cho
sự việc.
Một mô hình của 0 và 1 đại diện cho một lá thư.
Patterns 0 và 1 đại diện cho z thư.
Mẫu của số 0 và số 1 đại diện cho màu xanh, hoặc
màu đỏ, hoặc tương tự.
Chúng tôi cần phải sử dụng tất cả các số 0 và 1 để thể hiện bản thân mình trong
bối cảnh khác nhau, những cách khác nhau mà không phải là
nhất thiết phải số.
>> Vì vậy, về đại diện, C có các loại dữ liệu khác nhau,
và chúng tôi đã nhìn thấy một trong những cho đến nay.
Chúng tôi thấy int, và thông báo những gì không phải trên màn hình
ngay bây giờ là chuỗi.
Chuỗi không, trên thực tế, tồn tại trong C. Một lần nữa, đó là một
đơn giản hóa chúng ta đang trình bày cho người đầu tiên
vài tuần.
Char là một nhân vật cá nhân.
Float là một số thực, với một điểm thập phân và số điện thoại để
bên trái và bên phải của nó.
Đôi là gì, cho những người với nền trước khi trở lại?
Vì vậy, một đôi là hai lần một cái gì đó.
Thêm hai lần như độ chính xác nhiều.
Vì vậy, điều này có nghĩa gì?
Vì vậy, trong mỗi trường hợp này, thế giới có loại tiêu chuẩn hóa
bao nhiêu bit được sử dụng để đại diện cho
mỗi những điều này.
Vì vậy, nếu bạn đã xem video ASCII của Nate đã cho một phần
pset 0, hoặc vào cuối tuần này, bạn sẽ, bạn có thể sẽ biết
rằng ASCII -
nhân vật đại diện -
sử dụng bao nhiêu bit?
Và thậm chí bạn có thể nhớ từ tuần trước demo của chúng tôi như thế nào
nhiều người trên sân khấu.
Vì vậy, 7 hoặc 8, thông thường.
Vì vậy, nói chung là 8, và có một cái gì đó gọi là mở rộng
ASCII sử dụng tất cả 8 bit, thay vì 7.
Nhưng nói chung, chúng tôi nói chuyện trong quyền hạn của 2, do đó, trong trường hợp này, 8.
Vì vậy, một char trong một ngôn ngữ lập trình thường là 8 bit.
Vì vậy, một int thường là 32 bit.
Float A thường là 32 bit.
Đôi là 64 bit.
Và điều đó có nghĩa gì?
Nó có nghĩa là bạn có thể đại diện cho số lớn hơn, hoặc trong trường hợp
số thực, bạn có thể có số lượng nhiều hơn sau khi
vị trí thập phân.
Rất nhiều chi tiết chính xác, trong trường hợp đó.
Bây giờ một lâu dài, rất tiếc là đặt tên.
Vì vậy, có một int là 32 bit.
Có một thời gian dài đó là, nope, 32 bit.
Và một lâu dài là 64 bit.
Tuy nhiên, một số trong số đó là bối cảnh nhạy cảm, nó phụ thuộc
loại máy tính mà bạn có.
Vì vậy, nói chung, chúng tôi sẽ chỉ định trong một bài tập ở nhà hoặc trong một bài kiểm tra
nó thực sự quan trọng.
Nhưng điểm là có tất cả những khác nhau
cơ quan đại diện ở đây.
>> Vì vậy, chúng ta hãy thực sự nhảy vào một chương trình.
Thay vì viết này từ đầu, hãy để tôi đi trước
và mở ra từ mã nguồn của ngày hôm nay - tất cả đều là
trực tuyến - nếu bạn muốn tinker quanh trực tuyến, hoặc trả lại
Với các thiết bị trên máy tính của bạn, hướng dẫn
mà sẽ liên kết trên trang chủ của khóa học.
Đây là một chương trình đơn giản siêu.
Nhưng nó có một chút gì đó mới ở đầu trang
chúng tôi đã không có trước đây.
Một toàn bộ rất nhiều màu xanh của dòng văn bản.
Vì vậy, những dòng màu xanh đại diện cho ý kiến.
Vì vậy, nó khá hữu ích trong một chương trình để có thể viết
một số ý kiến ​​cho chính mình, hoặc đồng nghiệp, bạn bè, hoặc
nghiên cứu sinh giảng dạy, mà loại mô tả những gì đang diễn ra trong
tập tin này, nhưng không có gì để làm với C mã chính nó.
Không có gì để làm với chương trình chức năng, nó chỉ là
thẩm mỹ.
Vì vậy, cách bạn làm điều này trong C là bạn thường bắt đầu
ý kiến ​​với / *, và bạn sẽ cảm nhận của bạn với
* /.
Và nếu bạn thực sự hậu môn và như để vẽ loại hình ảnh,
sau đó bạn muốn đặt một toàn bộ rất nhiều ngôi sao, bạn muốn tạo ra một
hộp nhỏ như thế này.
Nhưng không có vấn đề.
Điều duy nhất mà vấn đề là đầu tiên
và cuối cùng
Đây là những gì được gọi là một lời nhận xét nhiều đường.
Và nó chỉ là con người quy ước thường làm những ngôi sao và hộp
những thứ như thế này nếu bạn có nhiều thời gian rảnh.
>> Vì vậy, sau khi bạn đã viết trong một số ý kiến, nói chung, đến
thực tế ruột của chương trình.
Đây là quen thuộc của chúng tôi # include.
Và chỉ nhanh chóng, điều này là cần thiết hay không cần thiết?
Khán giả: cần thiết.
DAVID Malan: Vì vậy, nó thực sự không cần thiết.
Vậy tại sao, mặc dù là nó không cần thiết?
Vì vậy, có printf không.
Thực sự.
Tất cả chúng tôi đang làm trong chương trình này là toán học.
Vì vậy, tôi thực sự có thể xóa.
Vì vậy, bạn không phải lúc nào cũng phải bao gồm bất cứ điều gì
đầu của một chương trình.
>> Vì vậy, chúng ta hãy đơn giản hóa điều này một chút.
Và bây giờ nhận thấy chương trình này làm gì.
Không có nhiều quan tâm.
int x = 1.
Vâng, điều này đang làm gì?
Vâng, nghĩ trở lại mô hình tinh thần từ trước.
Phía bên tay trái của biểu thức này làm những gì?
Tạo không gian cho một số nguyên.
Vì vậy, bao nhiêu không gian?
Vâng, chúng tôi xảy ra cho biết bây giờ mà nó là 32 bit.
Trước đây, một chuỗi kỹ thuật 32 bit, nhưng nhiều hơn
rằng trong tương lai.
Nhưng một int là 32 bit.
Vì vậy, điều này biểu hiện bên trái ở đây, int x chỉ nói hey
hệ điều hành, cho tôi 32 bit của bộ nhớ RAM -
nếu không được biết đến như 4 byte của RAM -
để tôi có thể đặt một số nguyên trong không gian đó.
Số nguyên đã muốn đặt?
Vâng, chỉ cần số 1.
int y được 2, cùng một điều chính xác mặc dù
số là lớn hơn, về độ lớn của nó.
Số lượng chính nó vẫn còn chỉ 32 bit.
Nó chỉ là mô hình của các bit khác nhau để
đại diện cho 1 so với 2.
int z bây giờ nói cho tôi một 32 bit gọi nó là z, và đặt
tổng kết 1 và 2 trong đó.
Vì vậy mà bây giờ z có lẽ là lưu trữ các giá trị 3,
và sau đó trở về 0.
>> Bây giờ chương trình này, nó làm bất cứ điều gì quan tâm?
Vì vậy, nó thực sự không làm bất cứ điều gì thú vị, trong bất kỳ
ý nghĩa, bởi vì tại sao? Nó đang làm một số toán học.
Nhưng nó không trả lại câu trả lời, phải.
Nó trở về 0.
Nó không phải in câu trả lời.
Vì vậy, chương trình này về cơ bản là vô giá trị, vì nó
viết tắt bây giờ.
Nó đang làm một số công việc.
Nó sẽ mất một số số giây, micro,
chạy, nhưng nó không thực sự làm bất cứ điều gì
hữu ích cho con người.
>> Vì vậy, chúng ta hãy thực sự bây giờ mở math2, bây giờ tôi đang thực sự
in kết quả.
Vì vậy, điều này cũng có thể được suy ra từ các ví dụ trước đây của chúng tôi.
Nếu tôi muốn làm một số toán học đơn giản, int x = 1, y
= 2. z là 1 cộng với 2 bây giờ.
Này là những gì sẽ in ra rõ ràng?
Chỉ 3.
Như vậy nhanh chóng kiểm tra sanity.
Hãy để tôi di chuyển vào thư mục này.
Vì vậy, cd source1m.
Hãy để tôi đi trước và gõ làm math2.
Không có thông báo lỗi xuất hiện, do đó, cho phép tôi chạy -
không a.out cho tôi chạy math2. Enter.
Và quả thực, nó được in ra 3.
Vâng chúng ta hãy có một cái nhìn tại một biến thể của điều này.
Trong math3.c, bây giờ chúng ta có ví dụ này ở đây.
>> Vì vậy, một loại thú vị.
Vì vậy, trong này ở đây, câu trả lời là để có được 1 chia cho 10,
và thông báo tôi đã khai báo nó như là một phao.
Tại sao tôi muốn nó được một phao?
Vâng, đó là một phần nhỏ.
Nó sẽ là một số thực.
Vì vậy, nó sẽ là 0,1, hy vọng - 10%, trong trường hợp này.
Và những gì tôi sau đó muốn in ra?
Vâng, câu trả lời.
Vâng, chúng ta trêu chọc những ngoài.
Vì vậy, ở phía bên trái, khai báo một
nổi, gọi nó trả lời.
Ở phía bên tay phải, 1 chia cho 10 và đặt
trả lời bên trong của biến.
Bây giờ, dòng này có vẻ nhiều hơn một chút khó hiểu.
Nhưng hãy chú ý một số tính năng quen thuộc. % Có nghĩa là ở đây có một
giữ chỗ.
f có nghĩa là đây là một giá trị dấu chấm động, chỉ cần một thực tế
số lượng, một cái gì đó với một điểm thập phân.
0,2 có nghĩa là gì?
Bất cứ ai cũng biết từ kinh nghiệm trước?
Hai chữ số thập phân.
Vì vậy, chúng tôi đã không nhìn thấy điều này trước đây, nhưng nó chỉ là một cách
thực hiện kiểm soát nhiều hơn ít hơn printf
câu nói không cho tôi 30 điểm sau khi các điểm thập phân,
thay vì cho tôi chỉ là 2.
>> Và sau đó chúng ta hãy đi trước và chạy.
Vì vậy, làm cho toán học 3, và bây giờ để tôi chạy toán 3, Enter.
Và đó là không đúng.
Chúng tôi dường như đã gặp phải lỗi đầu tiên chính hãng của chúng tôi.
Vâng, có lẽ tôi không đủ gần.
Vì vậy, hãy để tôi đi lên ở đây, và cho tôi đặt 20 số thập phân
điểm nơi có.
Và hãy để tôi biên dịch này, làm cho math3, chạy.
Đẹp, chắc chắn 1 chia cho 10 không phải là 0.
Vì vậy, những gì đang xảy ra?
Cũng không sao, do đó, thực sự nó không phải làm với điều này.
Đó là một suy nghĩ tốt.
Điều này thực sự chỉ là một sự trùng hợp ngẫu nhiên
rằng chúng tôi đang làm điều này.
Nhưng chỉ để chứng minh rằng điều này không phải là nó, tôi sẽ
trả lại một cái gì đó ngẫu nhiên.
Đừng làm điều này ở nhà, bởi vì nó chỉ sai.
Nhưng chắc math3, hãy để tôi chạy nó.
Vì vậy, không có gì để làm với những gì tôi đang quay trở lại, chỉ có làm
với những gì tôi đang in.
Nhưng tôi nghe nói nó xuống ở đây.
Gì?
Khán giả: Vì vậy, chúng tôi cần phải viết các con số trong
sự phân chia như -
>> DAVID Malan: Được rồi tốt.
Vì vậy, chúng ta cần phải viết những con số tham gia vào
phân chia ở đây là điểm nổi giá trị bản thân mình.
Vì vậy, vấn đề ở đây là như trước: C, với rất nhiều
ngôn ngữ, có các loại dữ liệu khác nhau.
Và những kiểu dữ liệu, ví dụ, là những đây.
Và các kiểu dữ liệu trong câu hỏi ở đây, khi tôi gõ 1 và sau đó tôi
loại 10, có lẽ là những gì các loại dữ liệu?
Vì vậy, nó có thể là một int, phải không?
Đó chắc chắn không phải một phao bởi vì có số thập phân
điểm hoặc bất cứ điều gì như thế.
Vì vậy, thực sự, tôi có một int chia một int.
>> Vì vậy, điều thú vị về toán học và một máy tính là
nếu bạn đang làm bộ phận sử dụng số nguyên -
1 chia cho 10, có là 0,1.
Tuy nhiên, khi bạn đang phân chia một số nguyên một số nguyên,
câu trả lời có cũng là một số nguyên chỉ vì, cho bây giờ.
Và ngụ ý những gì sau đó?
Vâng, nếu câu trả lời là 1 chia cho 10 bằng 0,1,
máy tính sẽ làm là tôi không có ý tưởng làm thế nào để
đại diện cho 0,1, bởi vì đó là một giá trị dấu chấm động, không phải là một
số nguyên, nó sẽ để chop off tất cả mọi thứ sau khi
số thập phân điểm và chỉ cho bạn thấy 0 ở đầu.
Và thực tế là nó in như là một điểm nổi
giá trị, nó chỉ là một thứ thẩm mỹ.
Đó là bởi vì tôi đang buộc các máy tính để in này như là một
nổi giá trị điểm.
Và thực sự tôi đã khai báo nó như là một phao, nhưng toán học
xảy ra ở đây.
>> Vì vậy, hãy để tôi thực sự sửa chữa điều này trong một cách khá dễ dàng.
Tại sao tôi không làm 10,0 và 1,0, mặc dù
kỹ thuật tôi có thể nhận được ngay với chỉ làm một trong những người.
Bây giờ hãy để tôi đi trước và thực math3.
Hãy để tôi đi trước và bây giờ chạy math3, Enter.
Và bây giờ, cậu bé.
Bây giờ chúng ta có một vấn đề mới hoàn toàn.
Vì vậy tốt hơn, phải không, chúng ta đang tiến gần hơn đến 0,1, nhưng những gì rõ ràng là
sai ở đây?
Trừ khi chúng ta đã nói dối với bạn trong nhiều năm, phải không?
1 chia cho 10 thực sự là không hoàn toàn 0,1, vì vậy những gì
thực sự xảy ra ở đây?
Vâng, bạn có thể loại lý do thông qua một cách logic.
Nếu máy tính chỉ có một số lượng hữu hạn của bộ nhớ RAM để bắt đầu
với, và thực sự là một máy tính chỉ bằng cách sử dụng 32 bit cho một
nổi giá trị điểm, nó đứng vào lý do đó với một
số lượng hữu hạn của các bit, 32 trong trường hợp này, có, bạn có thể
đại diện cho rất nhiều thứ.
Nó thực sự là bốn tỷ giá trị khác nhau có thể được
đại diện với 32 bit, 2 cho 32, nhưng nó vẫn còn hữu hạn.
Vì vậy, vấn đề là có một số lượng vô hạn thực
số, bên phải.
Nếu bạn cung cấp cho tôi một số thực, tôi luôn luôn có thể tìm thấy bạn một
hơi lớn, hơi ít, bởi chỉ cần tinh chỉnh
số sau dấu thập phân.
Vì vậy, nếu bạn không có một số lượng vô hạn của các bit, bạn
không thể đại diện cho một vô hạn
số các số thực.
>> Vì vậy, có sự thiếu chính xác vốn có trong các máy tính này, và
này bị vấp ngã trên tất cả các thời gian ngay cả trong những đơn giản nhất
các chương trình như thế này.
Nhưng cũng có một số vấn đề rất thực tế trên thế giới cũng như.
Trong thực tế, chúng ta hãy dành một chút thời gian để đi xem một
một cái gì đó thực sự xảy ra trong thực tế.
Chúng tôi sẽ xem chỉ là vài phút đầu tiên, và sau đó
chúng tôi sẽ gửi liên kết trực tuyến.
Nhưng điều này là minh chứng cho chỉ là những gì có thể đi sai, khá
một cách trung thực, theo một cách rất bi thảm khi những điều này là không
đánh giá cao hoặc chỉ con người chúng ta phạm sai lầm khi nói đến
các loại chi tiết thực hiện của các máy tính hiện đại.
>> [Chơi video]
Bây giờ chúng ta quay trở lại với các thảm họa kỹ thuật trên Modern Marvels.
Máy tính.
Tất cả chúng tôi đã đến để chấp nhận những vấn đề thường bực bội
mà đi với họ.
Lỗi, virus, và ổn định phần mềm là giá nhỏ
trả tiền cho sự tiện lợi.
Nhưng trong quân đội tốc độ cao và không gian công nghệ cao và cao
ứng dụng chương trình, các vấn đề nhỏ nhất có thể được
phóng đại thành thảm họa.
Vào ngày 4 tháng 6 năm 1996, các nhà khoa học chuẩn bị để khởi động một không người lái
Ariane 5 tên lửa.
Nó được mang theo vệ tinh khoa học được thiết kế để
thiết lập chính xác như thế nào từ trường của trái đất
tương tác với gió mặt trời.
Tên lửa được xây dựng cho Cơ quan Vũ trụ châu Âu và
nâng lên khỏi từ cơ sở của nó trên bờ biển của Pháp Guyana.
>> Xét về khoảng 37 giây vào chuyến bay, họ lần đầu tiên
nhận thấy một cái gì đó đã đi sai, rằng các vòi phun
xoay trong một cách mà họ thực sự không nên.
Khoảng 40 giây vào chuyến bay, rõ ràng chiếc xe
gặp rắc rối, và đó là khi họ thực hiện các quyết định
tiêu diệt nó.
Một sĩ quan an toàn với hệ thống ruột to lớn nhấn
nút, nổ tung tên lửa trước khi nó có thể trở thành một
gây nguy hiểm cho an toàn công cộng.
>> -Đây là chuyến đi đầu tiên của tên lửa Ariane 5, và
phá hủy diễn ra vì một lỗ hổng nhúng vào trong
tên lửa của phần mềm.
>> Các vấn đề về Ariane là có một con số
yêu cầu 64 bit để thể hiện và họ muốn chuyển đổi nó
một số 16 bit.
Họ cho rằng con số này là không bao giờ
sẽ là rất lớn,
rằng hầu hết những chữ số trong số 64 bit 0.
Họ đã lầm.
>> Sự bất lực của một chương trình phần mềm để chấp nhận các
loại số được tạo ra bởi một người khác là ở gốc của
sự thất bại.
Phát triển phần mềm đã trở thành một phần rất tốn kém
công nghệ mới.
Các tên lửa Ariane 4 đã rất thành công.
Vì vậy, nhiều phần mềm tạo ra cho nó cũng được sử dụng
Ariane 5.
>> - Vấn đề cơ bản là tên lửa Ariane 5 đã được nhanh hơn,
tăng tốc nhanh hơn.
Và phần mềm đã không được tính cho điều đó.
>> Việc tiêu hủy các tên lửa là một tài chính lớn
thiên tai, tất cả vì một phút lỗi phần mềm.
Nhưng điều này không phải là lần đầu tiên vấn đề chuyển đổi dữ liệu có
cản công nghệ tên lửa hiện đại.
>> DAVID Malan: Chúng tôi sẽ để nó ở đó.
Nhưng điều này là minh chứng cho cách áp dụng thậm chí một số
những mức thấp nhất chi tiết mà chúng tôi đã bắt đầu
khám phá ngày hôm nay là.
Vì vậy, ngay cả khi bạn nhận được một chút phân tâm có lẽ bởi một số
cú pháp và arcaneness đây, nhận ra rằng trong
dài, chúng tôi sẽ tập trung vào cách áp dụng này là để
thế giới vượt xa CS.
Chúng ta sẽ thấy bạn hôm thứ Tư.