>> ROB Bowden: Đây là phần thoải mái hơn,
nhưng điều đó không có nghĩa là nếu bạn cảm thấy như bạn đang không thoải mái hơn
bạn sẽ không học hỏi những điều ở đây.
Vì vậy, hãy bắt đầu.
Bạn có slide đi ngay vào việc.
Tôi về để chỉ cần mang nó ngay bây giờ?
Chuyển đổi máy tính xách tay.
>> ALLISON: Bạn không muốn giới thiệu về mình, Rob?
>> ROB Bowden: Oh, tôi là Rob.
Đây là năm thứ năm TF-ing CS50 của tôi.
>> GABRIEL: Tôi là Gabriel.
Tôi là người đứng đầu của TF CS50.
Tôi đã TF năm ngoái và năm nay.
ALLISON: Và tôi Alison, và điều này là năm thứ hai TF-ing CS50 của tôi.
>> ROB Bowden: Tất cả các bên phải, vì vậy điều này trên bên trái,
hy vọng bạn đã nhìn thấy nó trước đây.
Nếu không phải vì bạn tải về nó cho chính mình,
bạn nên đã thấy nó trong bài giảng.
Vì vậy, đây là thiết bị CS50, và ông đã làm một phần nào của một mô tả của nó
trong bài giảng.
Nhưng về cơ bản nó chỉ là bạn đang chạy một hoạt động
hệ thống trong điều hành của bạn hệ thống để chúng tôi có thể cung cấp cho bạn
chương trình mà không cần lo lắng, oh là này
sẽ làm việc trên cả Windows và Mac, hoặc nếu một số bạn
đã sử dụng Linux, Linux.
Nó chỉ phải là một sân chơi chung
lĩnh vực để mọi người đều có cùng một môi trường chính xác.
>> Vì vậy, nếu bạn chưa có tải về này đã có,
bạn nên tải về nó, bởi vì bạn sẽ cần đến nó cho bộ vấn đề.
Và nó là một gigabyte hai tải về, vì vậy nó có thể mất một thời gian.
Trên Harvard nó sẽ đi nhanh.
Vì vậy, thiết bị CS50.
>> Bây giờ trong đầu, chúng ta sẽ nói về chỉ là một loạt các dòng lệnh
công cụ, và như vậy bằng cách đó, tôi có nghĩa là làm việc trong môi trường này ít hơn ở đây.
Và nhận thấy tất cả những điều Tôi nói ngay tại đây ngay bây giờ
sẽ làm việc nếu bạn đang ở trong các một thiết bị đầu cuối bên trong của thiết bị,
hoặc nếu bạn là bên trong cửa sổ thiết bị đầu cuối gedit
bên trong của thiết bị.
Vì vậy, những môi trường giống hệt nhau.
>> Nhưng tôi sẽ đi một con đường thứ ba.
Và thông báo xuống đây này ít địa chỉ IP ở đây.
Vì vậy, bạn không cần phải làm điều này, nhưng IP này
address-- bây giờ nếu I-- trừ nó bị chặn bởi điều này.
OK, vì vậy mà địa chỉ IP hơn trong một thiết bị đầu cuối
here-- để thiết bị đầu cuối này trên đây là một thiết bị đầu cuối trong máy Mac của tôi.
Vì vậy, đây là không có cách nào hiện nay kết hợp với các thiết bị ở tất cả.
Và nếu bạn đang ở trên Windows, sau đó bạn sẽ cần phải tải về một cái gì đó
cụ thể cho điều này, đặc biệt người có xu hướng sử dụng Putty, P-U-T-T-Y.
>> Vì vậy, những gì tôi sẽ làm là loại SSH và sau đó là địa chỉ IP.
Vâng, jharvard tại địa chỉ IP.
Vì vậy, 192.168.24.220.
Thông điệp đáng sợ này, bỏ qua nó.
Chỉ cần gõ có.
Đây là CS50 trong một hộp.
Nó sẽ hỏi mật khẩu của bạn.
>> Và như vậy trong rất nhiều những hoàn cảnh nơi nó yêu cầu mật khẩu, [không nghe được].
Chúng tôi đã có rất nhiều câu hỏi mà nó nói nó không thực sự gõ.
Nó không chỉ cho bạn các nhân vật trong mật khẩu khi bạn gõ, nếu bất cứ điều gì,
cho một tính năng bảo mật, bởi vì nếu ai đó đang nhìn qua vai của bạn
và họ nhìn thấy sao sao sao sao, sau đó họ
biết rằng mật khẩu của bạn là bốn nhân vật.
Vì vậy, ý tưởng là nó sẽ yêu cầu bạn nhập mật khẩu, loại của bạn.
Nó sẽ không để hiển thị bạn các nhân vật,
nhưng nó thực sự chấp nhận chúng.
Trong trường hợp này, bất cứ lúc nào bạn bao giờ nhìn thấy một dấu nhắc mật khẩu
đối phó với thiết bị này, các mật khẩu là có được màu đỏ thẫm.
Vì vậy, đỏ thẫm.
>> Và giờ đây bên trong này cửa sổ đó là trong máy Mac của tôi,
Tôi về cơ bản có quan điểm chính xác cùng
như bên trong một thiết bị đầu cuối trong thiết bị.
Vì vậy, bạn không cần phải làm điều này.
Bạn có thể làm tất cả mọi thứ bạn muốn bên trong của thiết bị.
Tôi gần như không bao giờ thực sự làm bất cứ điều gì trong thiết bị.
Tôi hầu như luôn luôn giảm thiểu đó và bây giờ Tôi đang làm việc SSH vào thiết bị.
>> Nếu bất cứ điều gì, nếu bạn có một máy tính chậm hơn,
bạn có thể nhận thấy một sự khác biệt.
Tôi làm điều này vì tôi thích cửa sổ thiết bị đầu cuối này.
Nó có một số tính năng như Tôi có thể chia nhỏ các cửa sổ,
và bây giờ tôi có thể SSH trong thông qua thiết bị này.
Tôi có hai SSH đang xảy ra cùng một lúc.
Nếu máy tính của bạn là đặc biệt chậm và bạn đang làm việc trong các thiết bị,
và bạn nhận ra điều này là thực sự lag, bất cứ điều gì.
Có xu hướng nhanh hơn nhiều nếu bạn SSH-ed trong.
Nhưng nếu không bạn có thể làm việc một trong hai cách.
>> Đung không SSH nghĩa là gì?
>> ROB Bowden: vỏ an toàn, một cái gì đó như thế?
SSH không có ý nghĩa gì?
GABRIEL: Secure shell.
ALLISON: Đó là vỏ chỉ an toàn.
ROB Bowden: Secure shell.
Đó là một giao thức you-- nó một giao thức an toàn, do đó mã hóa.
Người ta không thể ăn trộm mạng và xem những gì bạn đang nói đến bất cứ điều gì
bạn SSH-ed để.
Và trên thực tế, trong xưa ngày CS50, vì vậy trong năm 2009
khi tôi còn là một sinh viên năm nhất, cách mà bạn làm việc trên bộ vấn đề CS50,
là bạn SSH-ed để một số máy chủ rằng chúng tôi đã cho bạn truy cập vào,
và bạn làm việc trên đó.
Vì vậy, bạn không có điều này thiết bị đồ họa.
Bạn không có gedit.
Bạn không có tất cả những điều đó bạn có thể trực quan điểm và nhấn chuột.
Bạn đã phải làm việc trong giao diện này.
Tôi thích làm việc trong giao diện này.
Vì vậy, một phần của những gì chúng ta đang đi để được đi qua ngay bây giờ
là một bó của lệnh mà bạn nên
bắt đầu làm quen với như bạn đi cùng trong khóa học.
Và trung thực, một khi bạn làm quen với họ, nó
vậy là nhanh hơn nhiều làm việc trong môi trường này
hơn là để làm việc với các công cụ tìm, kéo và nhấp điều.
>> Vì vậy, ở đây chúng tôi đang có.
Bây giờ tôi chỉ SSH-ed trong, và như vậy mặc định location-- bạn
thấy một số các lệnh trong lớp, nhưng chúng tôi sẽ đi qua tất cả của họ một lần nữa.
Vị trí mặc định chúng tôi trong là thư mục nhà.
Và thư mục, chỉ cần một từ khác cho thư mục.
Vì vậy, chúng tôi đang ở trong thư mục chính.
Gõ ls, danh sách các tập tin trong thư mục này.
Rõ ràng tôi tạo ra một blah.c trước đó.
Vì vậy, chúng tôi có một thư mục máy tính để bàn.
Bạn chú ý làm nổi bật cú pháp?
Các màu xanh nổi bật ánh sáng chỉ một thư mục và trắng thẳng
chỉ ra chỉ là một tập tin đồng bằng.
Vì vậy, có đang có được một số màu sắc khác mà bạn nhìn thấy.
Một tập tin thực thi có lẽ sẽ là màu xanh lá cây hoặc một cái gì đó như thế.
OK, vì vậy chúng tôi đang ở trong thư mục chính.
>> Bây giờ nếu tôi muốn đi vào một khác nhau thư mục, cd là lệnh tôi muốn.
Vì vậy, thay đổi thư mục, và sau đó bạn vượt qua tên của thư mục
mà bạn muốn đi vào.
Vì vậy, ở đây chúng tôi có bốn lựa chọn.
Tôi có thể đi vào tải về, và bây giờ chúng ta thấy ở đây nó đã được cập nhật trong ngoặc này
để nói rằng tôi đang ở trong ~ / downloads.
>> Vì vậy, dấu ngã là gì?
Đó là một cách viết tắt cho thư mục nhà của bạn.
Vì vậy, hầu như tất cả mọi thứ bạn làm sẽ có liên quan đến thư mục nhà của bạn với,
và pwd chỉ là một lệnh Tôi sử dụng một lần trong một năm
chỉ cần in thư mục hiện hành.
Và như vậy bạn thấy ở đây mà ~ / Downloads thực sự giải quyết
để / home / jharvard / tải.
Vì vậy, / home / jharvard là thư mục nhà của tôi.
>> Vì vậy, chúng tôi có thể cd chấm chấm.
Bây giờ dot dot là một thư mục đặc biệt luôn luôn đề cập đến một thư mục lên.
Vì vậy, nếu tôi đang ở trong ~ / downloads, sau đó cd dot chấm sẽ mang lại cho tôi để dấu ngã.
Những gì chúng tôi nghĩ rằng cd dot dot sẽ mang lại cho tôi bây giờ?
Nó sẽ mang lại cho tôi / home.
Vì vậy, dấu ngã bởi in thư mục làm việc, Tôi đang ở tại / home / jharvard.
một thư mục từ đó, bây giờ nó nói ở đây / home.
>> Bây giờ cd dot dot.
Bây giờ tôi đang ở trong thư mục gốc, và bạn không thể làm điều đó một lần nữa.
Bạn sẽ chỉ ở trong thư mục gốc mãi mãi.
Các thư mục gốc có một bó toàn bộ điều rằng, nếu bạn muốn nhìn vào,
bạn có thể.
Ví dụ, nếu tôi đi vào thùng, có chứa
tất cả các tập tin nhị phân, chẳng hạn như ls, và cd, và tất cả những điều đó.
Vì vậy, các lệnh này cần phải tồn tại ở đâu đó trong hệ thống,
và đó là trong thư mục / bin.
Nhưng hầu như tất cả mọi thứ bạn làm là sẽ từ thư mục nhà của bạn.
Và cd mà không cần bất kỳ đối số nào, bạn có thể nói cd ~, không cần phải.
cd sẽ mang lại cho bạn trở lại thư mục nhà của bạn.
>> Một cuối cùng.
cd - sẽ đưa bạn trở lại thư mục cuối cùng mà bạn đang ở trong.
Vì vậy, tôi chỉ cd'd hai lần liên tiếp, vì vậy tôi thư mục cuối cùng là thư mục chính.
Nếu tôi đi đến cắt giảm bin, và bây giờ chúng ta hãy đi lên và đi vào sử dụng.
Người sử dụng chia sẻ.
Chúng ta hãy đi đến người sử dụng chia sẻ.
Bây giờ tôi là bây giờ trong người sử dụng chia sẻ.
cd -, trở lại trong bin.
Vì vậy, đây được đặc biệt hữu ích khi bạn have-- và nó sẽ chuyển đổi.
Vì vậy, người sử dụng chia sẻ, lại bin, chia sẻ bin.
>> Vì vậy, đây được hữu ích.
Bạn có thể thấy mình có nhiều, nhiều, rất nhiều các thư mục lồng nhau.
Và bạn muốn làm điều gì đó nhanh chóng thực trong một thư mục trên.
Bạn hãy vào thư mục đó, làm cho thay đổi và các công cụ như vậy,
và bây giờ bạn muốn đi trở lại nơi mà bạn được.
cd -.
Tôi luôn luôn thất vọng khi tôi xảy ra để đi
đến thư mục đó tôi muốn làm việc trong.
Tôi luôn luôn nhận được thất vọng khi tôi đã làm nó trong hai bước thay vì một bước,
bởi vì điều đó có nghĩa rằng cd - sẽ để đưa vào vị trí đó trung gian
thay vì nơi tôi muốn đi.
>> Vì vậy, chúng ta thấy tất cả các tập tin danh sách.
Chúng tôi biết làm thế nào để có được xung quanh cho đến nay.
Vì vậy, bây giờ hãy nói về chỉnh sửa các file.
Vì vậy, trong khóa học này, bạn gần như luôn luôn dự kiến ​​sẽ sử dụng gedit.
Nếu bạn muốn, bạn có thể thực hiện bước tiếp theo và bắt đầu học một văn bản dòng lệnh
biên tập viên.
Vì vậy, lựa chọn khác nhau tồn tại.
>> Và những người mà có lẽ sẽ có liên quan đến bạn,
chúng tôi có Nano, Vim, và Emacs.
Vì vậy, Nano là người mới bắt đầu dòng lệnh soạn thảo văn bản.
Vì vậy, Nano hãy đi về blah.c tôi tạo ra trước đó.
Nó chỉ là tập tin C tiêu chuẩn này.
Và bạn thấy một bó toàn bộ công cụ xảy ra ở dưới cùng của màn hình,
và dường như blah.c chứa mã C này.
>> Vì vậy, trong trình soạn thảo đặc biệt này, những gì nó nói tại bottom--
Bây giờ biểu tượng dấu sót này, chúng ta thấy điều này ^ G, X ^, ^ O.
Vì vậy, ở hầu hết các bối cảnh mà bạn nhìn thấy,
bạn có thể thấy rằng biểu tượng dấu sót trong những nơi khác trên mạng, trên Stack Overflow,
một cái gì đó như thế.
Nó hầu như luôn luôn đề cập đến kiểm soát.
Vì vậy, để thoát khỏi tôi muốn làm Kiểm soát X. điều khiển X, thoát.
Và tôi có thể sử dụng mũi tên của tôi phím để di chuyển xung quanh.
Thông báo tôi không thể trỏ và nhấn chuột dễ dàng.
Bạn cần phải sử dụng mũi tên của bạn phím để di chuyển xung quanh.
Có thể có một thiết lập để trỏ và nhấn chuột.
>> Nhưng chúng ta hãy thực hiện một số thay đổi.
Bây giờ kiểm soát X để đi xuất cảnh.
Nó sẽ nói tiết kiệm đệm sửa đổi.
Bây giờ dấu nhắc, y cho có, n không có.
Kiểm soát C cho hủy bỏ.
Tôi sẽ chỉ nói có.
Tên tập tin để viết.
Mặc định là các tập tin mà nó đã là.
Nhấn Enter.
OK.
Bây giờ tôi đã chỉ chỉnh sửa tập tin đó, lưu nó, và nó được thay đổi.
>> Vì vậy, Nano là dễ nhất soạn thảo văn bản được sử dụng để.
Các lựa chọn thay thế là Vim và Emacs.
Đó là soạn thảo văn bản cấp cao hơn rằng có một đường cong học tập rất dốc.
Vì vậy, sở thích cá nhân của tôi là Vim.
Và nó có một loạt các tùy chọn.
Và một khi bạn đã quen với nó, bạn sẽ không bao giờ
muốn đi đến bất kỳ khác soạn thảo văn bản bởi vì bạn chỉ
có rất nhiều điều sẵn cho bạn trong những,
nhưng phải mất một thực sự thời gian dài để tìm hiểu.
Vì vậy, có thể bạn chỉ muốn lực lượng mình ngay bây giờ để có được sử dụng để nó,
nhưng tôi sẽ nói đó là giá trị nó.
Nhưng nó là khó khăn.
>> Và sau đó Emacs.
Tôi luôn luôn đấu tranh trong Emacs vì Tôi biết làm thế nào để làm hoàn toàn không có gì.
Rõ ràng Emacs không phải là theo mặc định cài đặt trên thiết bị.
Chúng tôi có thể sẽ thêm rằng như một cài đặt mặc định.
Một khi bạn tìm hiểu một trong Vim hay Emacs, có
không có lý do gì để bao giờ học khác,
nhưng đó là một phong cách hoàn toàn khác nhau.
OK vì vậy đó là chỉnh sửa các file văn bản.
>> Đung Nếu bạn đã bị mắc kẹt trong Vim ngay bây giờ, làm thế nào we--
>> ROB Bowden: Có nhiều chế độ trong Vim,
và có toàn bộ hướng dẫn về học tập Vim.
Vì vậy, nếu bạn xảy ra được trong chế độ chèn theo thứ tự
để gõ văn bản, mà bạn có thể nhập đó theo những cách khác nhau,
nhưng tôi là làm thế nào bạn nhận được vào chế độ chèn.
Hoặc có được ra khỏi bất kỳ đặc biệt chế độ mà bạn đang ở, chỉ cần thoát.
Và bạn chỉ bash thoát để có được ra của bất kỳ chế độ lồng nhau trong của bạn.
Just OK, bây giờ tôi lại ở chế độ bình thường.
>> Và như vậy trong chế độ bình thường, dấu hai chấm.
Bạn thấy nó xuất hiện ở phía dưới.
Và sau đó q.
Vì vậy, q sẽ bỏ thuốc lá nếu bạn đã thực hiện thay đổi, mà I-- có tôi thực hiện thay đổi?
Tôi đã thực hiện những thay đổi rõ ràng.
Vì vậy, nếu bạn đã thực hiện thay đổi, nó sẽ thấy nói rằng bạn có thể đặt một dấu chấm than.
Tôi sẽ gọi nó là một tiếng nổ.
Vì vậy, bạn có thể đặt một lệnh cấm chỉ bỏ mà không làm bất cứ điều gì,
hay đại tràng wq sẽ tiết kiệm và bỏ thuốc lá.
Vì vậy, w nói chung là viết.
Vì vậy, viết các tập tin.
Tôi có thể viết và bỏ thuốc lá.
Hoặc bạn có thể có chỉ qx slam, q nổ chỉ
để có được ra khỏi đó bất kể của bất kỳ thay đổi mà bạn đã thực hiện.
>> Tất cả các bên phải, vì vậy bây giờ chúng ta hãy go-- chúng ta có thể tạo ra các tập tin.
Hãy bắt đầu loại bỏ các file.
Và tôi sẽ chỉ ném vào một lệnh mới nhanh chóng, liên lạc.
Vì vậy, chạm vào foo.
Thanh Touch.
Chạm baz.
Nếu tôi ls, bây giờ chúng ta thấy rằng các tập tin tồn tại.
Họ hoàn toàn trống rỗng.
Vì vậy, liên lạc chỉ là một cách dễ dàng cách của một, [không nghe được].
Hai, về mặt kỹ thuật chỉ để nhà nước nó, nó cập nhật thời gian.
Vì vậy, bất kỳ tập tin mà bạn tạo ra có một dấu thời gian liên kết với nó.
Vì vậy, baz được tạo ra trên 14 tháng 9 tại 16:21.
Nó bây giờ 16:22, vì vậy nếu Tôi chạm vào baz một lần nữa, chúng tôi
thấy baz đó là nhất gần đây đã sửa đổi tại 16:22.
Nhưng nếu không, tôi gần như không bao giờ nhìn vào các nhãn thời gian trên các tập tin.
Vì vậy, cảm ứng, ở đây tôi chỉ sử dụng nó để tạo ra một số tập tin nhanh chóng.
>> Tất cả các bên phải, vì vậy bây giờ rm là lệnh mà chúng ta quan tâm ở đây.
Và chúng ta có thể rm boo.
Nói loại bỏ thường xuyên trống rỗng tập tin boo.
Và chúng ta có thể gõ y, và bây giờ nó là để loại bỏ việc.
rm baz.
Hủy bỏ tập tin rỗng thường xuyên baz và loại n cho không.
Bây giờ nó không được loại bỏ.
Vì vậy, quầy bar và baz vẫn còn tồn tại.
Foo đã biến mất.
GABRIEL: Tiếp tục nói chuyện.
ROB Bowden: Great.
Vì vậy, các tin nhắn gây phiền nhiễu ở đây, loại bỏ empty-- thường xuyên
bạn đang làm gì dưới đó không?
Hủy bỏ tập tin rỗng thường xuyên.
Vì vậy, nếu chúng ta không muốn có làm phiền bởi những tin nhắn đó,
chúng ta có thể ném vào -f này cờ, và vì vậy đó là lực lượng.
Và bây giờ nếu tôi rm -f, nó sẽ không nói rằng bạn muốn loại bỏ tập tin này.
Nó sẽ chỉ làm điều đó.
Và ls, tôi không thấy thanh đó nữa.
>> Bây giờ đó là một tiềm năng lệnh nguy hiểm.
Nó có xu hướng không quá xấu.
Chúng tôi sẽ trở lại trong một giây như thế nào nó có thể thực sự nguy hiểm.
Và chúng ta hãy tạo ra một số thư mục tạm.
mkdir, một lệnh khác.
Vì vậy, mkdir là một lệnh mà làm cho một thư mục.
Và bây giờ bằng cách ls chúng ta thấy ánh sáng đẹp này màu xanh đánh dấu thư mục tạm.
Tôi có thể cd vào temp.
Và tôi có thể mkdir foo.
cd vào foo. thanh mkdir.
cd vào quán bar.
>> Vì vậy, chúng ta thấy chúng ta có thể dễ dàng nhận được vào một số tổ khá sâu.
Bây giờ làm thế nào để loại bỏ một thư mục?
rmdir.
Vì vậy, nếu tôi chỉ thẳng cố gắng rm, như chúng ta đã làm với một tập tin thường xuyên,
thanh rm sẽ nói không thể loại bỏ thanh.
Nó là một thư mục.
Có một lệnh đặc biệt cho loại bỏ các thư mục, loại.
Vì vậy, thanh rmdir.
Bây giờ thanh đã biến mất.
>> OK, vì vậy rmdir tôi khá nhiều không bao giờ sử dụng.
Lý do tại being-- hãy làm cho một quán bar tập tin thường xuyên tại đây.
Boo Vì vậy, rmdir.
rmdir.
Không thể loại bỏ foo.
Thư mục không rỗng.
Vì vậy, bạn không thể sử dụng loại bỏ các thư mục trên thư mục đó có những điều trong đó.
>> Vì vậy, bạn có một số tùy chọn.
Bạn có thể đi vào thư mục đó, loại bỏ tất cả mọi thứ bằng tay, và sau đó đi ra
và rmdir thư mục.
Đó rõ ràng là âm thanh khó chịu.
Điều gì nếu có hàng ngàn các tập tin trong đó không?
Vâng, bạn có thể rm *.
Chúng tôi sẽ nói về * trong một giây.
Về cơ bản nó có nghĩa là tất cả những gì.
Nhưng tốt hơn, -r để rm.
Vì vậy, rm -r-- trong rất nhiều bối cảnh, -r có nghĩa là đệ quy,
mà chúng tôi sẽ nói về những gì phương tiện đệ quy trong vài tuần.
Nhưng về cơ bản có nghĩa là đi qua toàn bộ thư mục này
và loại bỏ tất cả mọi thứ.
>> Vì vậy, rm foo -r sẽ nói rơi vào thư mục foo?
Vâng.
Loại bỏ thường xuyên trống rỗng tập tin foo / bar?
Vâng.
Hủy bỏ thư mục foo?
Vâng.
Vì vậy bây giờ foo và tất cả mọi thứ bên trong nó đã được gỡ bỏ.
>> Bây giờ có thể nhận được đặc biệt gây phiền nhiễu when-- hãy chạm vào 1, 2 chạm, chạm 3.
Có thể có một bó toàn bộ các tập tin.
Nếu tôi muốn, tôi có thể tạo ra hàng ngàn tập tin ở đây.
Và rm foo -r sẽ là khá khó chịu.
Yes, yes, yes, yes, yes, yes.
Với rất nhiều file bạn nhanh chóng xem bao nhiêu lần
Tôi sẽ phải gõ có.
Vâng, chúng tôi chỉ thấy trước như thế nào chúng ta có thể thoát khỏi cần phải gõ có, -f.
Vì vậy, mkdir foo cd foo liên lạc 1 2 3.
OK, do đó rm -rf foo sẽ mù quáng gỡ bỏ foo hoàn toàn.
Không nhắc.
Không có bất cứ điều gì.
Foo đã biến mất.
>> Vì vậy, tôi có xu hướng sử dụng này chỉ huy tất cả các thời gian.
Điều đó nói rằng, đó là một lệnh rất nguy hiểm,
bởi vì nếu tôi làm điều gì đó như này, nó sẽ không nhắc bạn.
Nó sẽ được đi.
Và nó xảy ra khá thường xuyên, và thậm chí ở mức độ cao hơn CS khóa học.
Đôi khi chúng ta sẽ thấy cái gì đó mà một người nào đó
nói tôi vô tình của chúng tôi rm rf-ed nhà của tôi thư mục và tất cả các thiết lập P của tôi đã biến mất.
Và đó là tàn phá, nhưng không có thùng rác.
Rằng không có bất có gì cho bạn để lấy.
Nó chỉ biến mất.
Thậm chí tệ hơn sẽ là một cái gì đó giống như rm -rf /.
Vì vậy, chúng tôi chỉ thảo luận rằng thư mục gốc.
Nó chứa tất cả các tập tin trên hệ thống của bạn.
Những điều có xu hướng nhận được khá lộn xộn khi bạn loại bỏ những thứ như ls,
và cd, và tất cả những.
>> Đung sự khác biệt là gì giữa rm, rf, và rm *
ROB Bowden: Vì vậy, rm * -
>> ALLISON: Câu hỏi là những gì các sự khác biệt giữa rm, rf, và rm *.
>> ROB Bowden: Vì vậy, rm *.
Sao ở phương tiện nói chung tất cả các nội dung của thư mục này.
Đang cố gắng để nghĩ về khác cách thể hiện sao.
Vâng, ngôi sao thực sự nói chung có nghĩa là phù hợp với bất kỳ mô hình.
Vì vậy, nếu tôi có một tập tin gọi là dog1, dog2 chạm, chạm CAT1, chạm cat2.
Vì vậy, ls * 1 sẽ in và CAT1 dog1, vì sao có thể được lấp đầy
trong with-- một trong những cần phải có mặt ở đó, nhưng sao có thể là chó hoặc mèo.
Đó là một thẻ hoang dã.
Đó là từ mà tôi đang tìm kiếm.
Wild card.
Hoặc tôi có thể ls chó *, và Tôi đã nhìn thấy dog1, dog2.
Vì vậy, những người được liệt kê các tập tin phù hợp mà mô hình cụ thể.
Bạn có thể sử dụng ls theo cách này.
>> Ls * sao phù hợp với bất cứ điều gì.
Vì vậy, nó sẽ in tất cả các các nội dung của thư mục này
vì tất cả chúng phù hợp.
Nó sẽ không để in bất cứ điều gì trong thư mục cấp trên.
Nếu tôi có một tiểu thư mục, foo, và chạm 1 2 3-- vì vậy bây giờ nếu rm * sao,
loại bỏ CAT1, cat2, dog1, dog2.
Không thể loại bỏ foo.
Nó là một thư mục.
>> Vì vậy, sao mở rộng cho tất cả các các tập tin trong thư mục.
Vì vậy, về mặt kỹ thuật rm * giống như nói rm CAT1, cat2, dog1, dog2, foo.
Trong khi đó rm -rf, kỹ thuật sao sẽ thực hiện những gì chúng ta muốn, nhưng rm -rf--
nếu tôi đi ra khỏi này thư mục, rm -rf tạm thời,
đó là sẽ đi vào nhiệt độ và đệ quy loại bỏ tất cả mọi thứ.
>> Vì vậy, sao là riêng biệt trong đó có được hiểu by-- vì vậy điều này
rằng tôi đang chạy trong, điều này được thúc đẩy tôi cho lệnh
và sau đó thực hiện và làm họ, tôi gọi đây là vỏ của tôi.
Và vì thế lớp vỏ này chính là một chương trình.
Và nếu tôi muốn, tôi có thể chạy trong / bin / bash.
Vỏ được gọi là bash.
Và bây giờ chúng tôi nhận thấy một cái gì đó đã hơi thay đổi,
và đó là bởi vì các thiết lập của tôi cho vỏ có phần khác nhau.
>> Nhưng bây giờ tôi về mặt kỹ thuật chạy một vỏ trong vỏ ban đầu của tôi,
và tôi có thể thoát khỏi vỏ, và bây giờ Tôi trở lại shell cấp cao nhất của tôi.
Mục đích của việc nói rằng is-- ngôi sao.
Vì vậy, các ngôi sao là một cái gì đó hiểu bởi bash.
Vì vậy, rm -rf, cờ -rf là hiểu bởi chỉ rm.
Nó biết rằng khi bạn vượt qua một -rf bạn
muốn nó để loại bỏ đệ quy tất cả các file mà không cần nhắc.
Các ngôi sao được một cái gì đó hiểu bởi bash rằng khi bạn nói rm *,
bash sẽ không nói hey rm *, xóa dấu sao.
Bash sẽ nói rm * loại bỏ CAT1, cat2, dog1, dog2.
Nó tự động sẽ mở rộng tất cả các file trong thư mục.
>> Và tương tự như dấu ngã là một biểu tượng mà bash hiểu.
Khi bạn nói cd ~, bash mở rộng đó vào thư mục nhà của bạn.
Các câu hỏi khác cho đến nay?
OK như vậy chúng ta sẽ bắt đầu đi nhanh chóng.
>> Tab hoàn thành.
Chỉ cần để ném nó ra khỏi đó.
Rất nhiều người không nhận ra điều này tồn tại.
Vì vậy, nếu tôi gõ cd dow, tôi muốn đi vào tải.
Tôi không cần phải gõ nloads.
Tôi chỉ có thể nhấn Tab.
Vì vậy, nó nhận ra rằng dow là một tiền tố
không phù hợp với bất cứ điều gì khác trong thư mục này,
vì vậy nó sẽ hoàn thành điều đó cho bạn.
Bây giờ tôi có thể nhập.
>> Tôi cũng làm điều đó một cách đệ quy.
Foo Vì vậy, mkdir.
Chúng ta hãy đi vào foo.
thanh mkdir.
Quay trở lại với gia đình của tôi thư mục, tôi có thể thấy tải.
Bây giờ nhấn tab một lần nữa, tự động sẽ điền vào foo.
Đó là thư mục duy nhất.
Nhấn tab một lần nữa, tự động sẽ điền vào trong quán bar.
Vì vậy, bây giờ tôi đang ở (~ Downloads / foo / bar).
>> Vì vậy, hoàn thành tab này, bất cứ khi nào tôi đến giờ làm việc,
và tôi đang đứng trên vai của ai đó,
và họ sẽ rm D-O-W-N-L-O-A-D-S, tôi sắp chết.
Chỉ cần tab, tab, tab, tab.
Vì vậy, chắc chắn sử dụng tab.
Và tương tự và xuống, rất nhiều người dân
chỉ xảy ra với không bao giờ nhấn lên và xuống.
Nó sẽ đi qua trước lệnh, vì vậy nếu bạn chỉ cần chạy một cái gì đó,
và bạn muốn chạy nó một lần nữa, chỉ cần giữ lên cho đến khi bạn có được nó.
OK.
>> Vì vậy, nhanh chóng, một số những thứ khác.
Hãy trở lại vào temp.
Hãy tạo ra một số tập tin.
Vì vậy, ở đây, tôi chỉ sẽ liệt kê một số từ.
chó, mèo, meo meo.
Hãy làm con chó, cá.
Vì vậy, hiện nay đại diện là rất lệnh hữu ích mà bạn
sử dụng để tìm kiếm trong suốt tập tin cho một văn bản cụ thể,
và kỹ thuật bạn có thể làm thực sự biểu thức phức tạp cho nó để phù hợp.
>> Vì vậy, ở đây, nếu tôi grep, và những gì Tôi muốn tìm kiếm?
Hãy nói rằng tôi đang tìm kiếm con mèo, và Tôi muốn tìm kiếm tất cả các file.
Vì vậy, làm thế nào để làm tất cả những tập tin này?
Star.
Vì vậy, trong một tập tin, tôi có con mèo.
Tôi có thể có thể có gọi nó là một cái gì đó tốt hơn,
vì trông giống như số dòng hoặc một cái gì đó.
Nhưng trong một tập tin tôi có một dòng với con mèo.
Trong tập hai tôi có một dòng với con mèo.
Vì vậy, bây giờ tôi có thể nhìn vào bên trong một file và thấy oh yeah, tập tin đó đã có con mèo.
Thông báo tập tin ba đã không phù hợp bởi vì con mèo không phải là ở đó.
Tôi có thể grep cho meo meo.
Chỉ có hai tập tin có meo meo.
>> Vì vậy, bạn có thể kết hợp, một lần nữa, với r, mà
như tôi đã nói trước thường xuyên có nghĩa là đệ quy.
Và vì vậy tôi có thể đến đây, grep -r cho bất kỳ trường hợp of-- hãy chỉnh sửa
cái này chỉ để ném một con mèo trong đó.
Vì vậy, grep -r cho bất kỳ trường hợp mèo suốt thư mục này.
Và nó sẽ đệ quy tìm kiếm bất kỳ thư mục con.
Vì vậy, trong baz, có con mèo.
Trong temp / 2, có con mèo.
Và trong temp / 1 có con mèo.
Vì vậy, đó là tìm kiếm trong các tập tin.
>> Bây giờ bạn cũng có thể sử dụng một find.
Và do đó, tìm là cụ thể về tìm kiếm các tập tin với một tên cho.
Vì vậy, chúng ta hãy làm một số chi tiết.
Chúng ta hãy đi vào tải.
Chạm dog1.
Chạm cat2.
Chạm cat_dog.
Chạm catcat.
>> Vì vậy, tôi muốn tìm tất cả tập tin với con chó trong tên.
Vì vậy, tìm kiếm, và dài nhất thời gian tôi không bao giờ nhớ
làm thế nào tìm thấy làm việc, cho đến khi tôi cuối cùng đọc một cái gì đó đã làm cho nó rõ ràng.
Vì vậy, tìm kiếm, tự động đệ quy.
Bạn không cần phải vượt qua một -r.
Vì vậy, tìm thấy dấu chấm.
Chúng tôi đã không nói về dấu chấm nào.
Trong khi đó, dot dot luôn có nghĩa là một thư mục lên.
Dot luôn luôn có nghĩa là thư mục hiện hành.
Vì vậy, tôi có thể chấm rm -r trong cùng một cách tôi có thể rm -rf *.
Cuối cùng họ thực hiện điều tương tự.
rm -rf chấm sẽ loại bỏ toàn bộ thư mục hiện tại.
>> OK, mà tôi không muốn làm điều đó.
Nhưng tìm dấu chấm.
Vì vậy, đệ quy tìm kiếm hiện tại thư mục, và bây giờ tất cả mọi thứ
sau đó là một loạt các lá cờ mà bạn sử dụng để loại trừ những thứ từ sự trở lại.
Vì vậy, tìm thấy dấu chấm trả về tất cả mọi thứ mà nó có thể tìm thấy từ thư mục hiện hành.
Đó là tất cả các tập tin đệ quy tìm kiếm.
Chúng ta sẽ thấy một số người trong một giây.
>> Nhưng trong trường hợp bạn đang tự hỏi làm thế nào tôi làm đó, vì vậy lệnh K, ít nhất
trong thiết bị đầu cuối của tôi trong Mac xóa nó.
Kiểm soát L thường xóa nó cho bất kỳ loại thiết bị đầu cuối.
Bạn cũng có thể gõ rõ ràng.
Và nếu bạn đã bao giờ có được thành một scenario-- lạ
nó xảy ra với tôi một vài time-- mà màu sắc nhắc nhở của bạn
tất cả đều sai lầm, hoặc bạn không thể nhìn thấy bất cứ điều gì
được đánh máy khi bạn đang gõ, bởi vì đôi khi như màu nền được thiết lập
giống như màu nền trước và bây giờ bạn không thể nhìn thấy phông chữ.
Thiết lập lại là một cái gì đó mà chỉ cần reset bạn nền đen mặc định,
màu trắng phía trước, hoặc bất cứ điều gì bạn đặt chúng vào.
>> Vì vậy, nơi là chúng tôi?
Tìm dấu chấm.
Vì vậy, bây giờ mọi thứ trong quá khứ này điểm giới hạn kết quả
một cái gì đó phù hợp các mô hình cho.
Vì vậy, ở đây tôi muốn tìm kiếm tất cả mọi thứ với tên con mèo.
Tôi đã không có gì.
Tại sao là trường hợp?
Vâng, tôi chỉ cần tìm kiếm một cái gì đó với chính xác tên con mèo.
Nếu tôi muốn tìm kiếm một cái gì đó mà có một số mô hình, và cat--
có dấu ngoặc kép về mặt kỹ thuật là không cần thiết, nhưng tôi ném chúng ở đó.
Vì vậy, bây giờ nó thấy catcat vì đó là điều duy nhất mà
có một số tùy ý mô hình tiếp theo mèo.
Tôi có thể đặt con mèo *, và bây giờ tìm catcat, cat_dog, cat2,
bởi vì đó là tất cả mọi thứ với con mèo lúc bắt đầu tiếp theo bất cứ điều gì.
Bạn có thể kết hợp này.
Nếu bạn muốn tìm kiếm cho tất cả các file C mà bạn có, bạn có thể làm * .c.
Chúng tôi đã blah.c đây.
Vì vậy, đó là một công trình tìm thấy.
Bạn có thể tìm kiếm.
Nó có một bó toàn bộ các cờ để hạn chế hơn nữa.
Và một trong những ngày đó, chúng ta hãy nói -d.
Vì vậy, phản đối.
Oh, đó không phải là những gì tôi muốn.
Không -d.
Loại d.
Vì vậy, tìm dot - loại d.
Vì vậy, những gì mà chỉ làm là tôi đang tìm kiếm cho tất cả các file trong thư mục hiện tại
với a-- d là viết tắt của loại thư mục directory--.
Trả về tất cả các thư mục trong thư mục hiện hành.
Và loại F là tất cả thường xuyên các tập tin, tất cả các thư mục không.
Vì vậy, đó chỉ là một ví dụ về những cách khác bạn
có thể giới hạn tìm kiếm khác hơn chỉ là tên của tập tin.
>> Đó là 30 phút.
Vẫn đi.
>> ALLISON: Tôi sẽ lướt qua.
Nó sẽ bị phạt.
>> ROB Bowden: Vì vậy, một số những thứ khác.
Bây giờ đập, dấu chấm than.
Vì vậy, nói chung means-- tốt, chúng ta hãy xem một ví dụ.
Vì vậy! F, những gì đang có sẽ làm gì?
Cũng có vẻ như có lặp đi lặp lại tìm thấy dấu chấm -type f.
Những gì về g?
Điều đó chỉ grep mèo -r *.
Vì vậy, đập bạn có thể sử dụng để lặp lại một lệnh vừa thực hiện.
Vì vậy, nếu tôi gõ! Gre, nó sẽ chạy lại các lệnh bắt đầu với gre nhất
thời gian gần đây.
>> Và bạn có thể xem tất cả các lệnh với lịch sử.
Vì vậy, lịch sử.
Đây là tất cả lệnh Tôi đã chạy ngày hôm nay.
Và tốt, nó không phải theo nghĩa đen hạn chế đến ngày hôm nay,
nhưng tôi đã chỉ được sử dụng này thiết bị như của ngày hôm nay.
Đó là toàn bộ của bạn của lịch sử của bash shell của bạn,
ngoại trừ nó cắt tại một số điểm.
Đung Điều gì xảy ra nếu bạn làm lịch sử [không nghe được] lệnh và một lỗi
trong kết quả vẫn sẽ in the--
>> ROB Bowden: Yeah, nếu có một lỗi trong một trong những commands--
vì vậy hãy nói, đó là một lệnh báo lỗi không tìm thấy.
Vẫn còn xuất hiện trong lịch sử.
Được rồi.
Các câu hỏi khác về bất cứ điều gì?
Vì vậy, đó là tiếng nổ.
>> Bây giờ, lệnh thực sự hữu ích, người đàn ông.
Vì vậy, cung cấp cho bạn hướng dẫn cho lệnh nhất định.
Vì vậy, hãy nói ls người đàn ông, vì vậy này được hiển thị cho tôi ls.
Nó liệt kê nội dung thư mục.
Và đây là nơi mà tôi thấy rằng có là những lá cờ khác nhau mà tồn tại.
Vì vậy, chúng ta thấy rằng ls -l tồn tại nếu chúng ta đọc mà. ls -l
mang lại cho tôi bảng liệt kê này đầy đủ các thư mục với những người sở hữu tập tin,
kích thước của các tập tin, dấu thời gian sửa đổi.
Vì vậy, ls -a là một số khác mà bạn có thể thực sự sử dụng hơi thường xuyên.
-al là lá cờ phổ biến nhất của tôi này ls qua.
>> Vì vậy, -a, nhận thấy có rất nhiều các tập tin nhiều hơn chỉ là ls.
ls -a.
Có gì chung với tất cả những tập tin này?
Họ bắt đầu với một dấu chấm.
Vì vậy, đây là một quy ước trong Linux các tập tin mà bắt đầu với một dấu chấm là ẩn.
Vì vậy, nó chỉ có nghĩa là khi chúng tôi chỉ ls thẳng,
hoặc chúng ta đang tìm kiếm thư mục này bằng cách sử dụng công cụ tìm kiếm tương đương, hoặc Windows
Explorer tương đương, mà chúng ta không muốn nhìn thấy những dấu chấm tập tin.
Họ chỉ gây ô nhiễm quan điểm của sự vật.
Vì vậy, họ đang ẩn trừ khi bạn đặc biệt
yêu cầu họ với một cái gì đó giống như -a.
Vì vậy, tôi có thể cd vào .local, và tôi thấy rằng đó chính là một thư mục với
một thư mục chia sẻ, và các ứng dụng, và blah blah blah.
Vì vậy, rải rác, tập tin mà họ chỉ đang ẩn.
>> OK, những người quan trọng như vậy khác.
Tôi có một cặp vợ chồng tôi có thể bỏ qua.
Hãy nói chuyện nhanh chóng chỉ thực sự về những chuyển hướng tập tin.
Vì vậy, có một loạt phức tạp toàn bộ điều bạn có thể làm với các,
nhưng chỉ để nhìn thấy chúng, hãy nói, echo.
Một lệnh.
Lệnh thực sự câm.
Tất cả nó là in những gì tôi yêu cầu.
Vì vậy, tiếng vang hello.
Nó chỉ lặp lại lời chào với màn hình.
Xin chào thế giới.
Echoes hello thế giới.
>> Vì vậy, một lệnh hoặc một biểu tượng mà bash hiểu
là này lớn hơn biểu tượng, và đó là đầu ra cho một biểu tượng tập tin.
Vì vậy, nếu tôi đầu ra này với foo, có bây giờ là một tập tin
gọi là foo, bên trong đó là hello world.
Vì vậy, nhận thấy rằng khi tôi lặp chào ống thế giới vào foo,
nó đã không echo hello thế giới.
Thay vào đó nó được đưa vào tập tin foo.
Và lệnh khác chỉ để ném nó vào bạn, con mèo.
Đó là một cách dễ dàng chỉ cần hoàn toàn liệt kê các nội dung của tập tin
vì vậy mà tôi không cần phải mở một trình soạn thảo văn bản để xem nó.
Vì vậy, nội dung của tập tin foo là hello world.
Và tôi có thể con mèo blah.c, nội dung không có này.
>> Một lần nữa, đây là những lệnh đó, không hy vọng bạn có tất cả ghi nhớ.
Ý tưởng là bạn đã nhìn thấy chúng.
Có lẽ bạn đang làm việc trên một cái gì đó, và bạn
như tôi bị ốm mở tập tin này.
Tôi muốn tôi chỉ có thể nhìn vào các nội dung thực sự nhanh chóng.
Bạn có thể làm điều đó, sau đó nhìn lại và nói oh tôi
nhớ một cái gì đó như tồn tại, và đó là con mèo.
>> Vì vậy, đó là đi đến một tập tin.
Bây giờ không có thực sự bất kỳ tốt Ví dụ đọc từ một tập tin nào.
Một cái gì đó mà có là gì một cái gì đó từ tiêu chuẩn?
Bất kỳ lệnh Linux đơn giản?
Khi chúng tôi nhận được vào nó, trong một vài tuần tất cả các piece-- tốt,
tuần này bạn có một mảnh nơi bạn bắt đầu lấy đầu vào từ người sử dụng.
Và do đó, thường bạn gõ rằng đầu vào bàn phím.
Thay vì gõ mà nhập vào bàn phím,
thay vào đó bạn có thể đường ống từ một tập tin để khi bạn làm Mario, ./mario,
ống từ bất kỳ tập tin nào đó, và đó là sẽ chạy chương trình Mario.
Không mong đợi đầu vào bàn phím, thay vào đó là
chỉ cần đi để đọc dòng từ tập tin foo.
>> Vì vậy, lớn hơn foo đặt nó vào các tập tin foo, và ít hơn foo
có công cụ từ các tập tin foo và sử dụng đó như đầu vào cho chương trình này.
Và chỉ để nhìn thấy nó, chúng ta cũng có thể vang vọng foo bar baz, và sau đó thay vì một
lớn hơn, chúng ta hãy làm hai vào foo.
Điều đó làm gì?
Nó chỉ gắn thêm vào tập tin.
Vì vậy, thay vì nhận thấy nếu tôi vang blah vào foo và sau đó con mèo foo, nó chỉ là blah.
Vì vậy, khi bạn xuất ra một tập tin, nó hoàn toàn ghi đè lên tập tin đó.
Nếu bạn chỉ muốn thêm, đôi [? học sinh lớp. ?]
>> Và cuối cùng là đường ống.
Ống Gets phức tạp hơn nhiều, nơi phải mất đầu ra của một lệnh
và thức ăn nó vào lệnh tiếp theo.
Vì vậy, một số điều phổ biến, lịch sử.
Vì vậy, ugh, tôi không muốn nhìn vào điều này.
Chỉ cho tôi tất cả các lệnh trong lịch sử của tôi nơi tôi grep-ed cho một cái gì đó.
Không, đó là khó hiểu.
Chỉ cho tôi tất cả các lệnh mà tôi tìm thấy.
Tất cả các lệnh tìm thấy tôi bao giờ chạy.
>> Vì vậy, lịch sử.
Bây giờ kết quả đầu ra lịch sử cho màn hình danh sách các lệnh,
nhưng tôi không muốn đầu ra nó vào màn hình.
Thay vào đó tôi sẽ để nó vào ống grep.
Vì vậy, hãy grep cho tất cả các trường của find.
Vì vậy, bây giờ thay vì lấy grep đầu vào, thay vì of--
grep là có thể xử lý như input-- chúng tôi sử dụng grep hơi khác nhau ở đây.
Vì vậy, thay vì gõ danh sách điều chúng tôi muốn tìm kiếm
và nói grep được dùng như là đầu vào.
Vì vậy, nếu tôi chỉ grep tìm thấy, nó chờ đợi cho tôi để loại điều.
Vì vậy, con mèo chào tìm thấy.
Xin chào.
Tìm.
Chú ý mỗi khi tôi gõ tìm nó nhận ra rằng tôi đã gõ find.
Vì vậy, thay vì điều này, sẽ các tập tin tìm kiếm tìm thấy.
>> Vì vậy, lịch sử bây giờ sẽ đầu ra một danh sách của tất cả các lệnh.
Chúng tôi đang đặt ra rằng, và chúng tôi đang cho ăn nó để grep,
và do đó, nó phun ra tất cả các trường của find.
Lý do tôi nói nó muốn được khó hiểu là nếu I-- nó vẫn còn khó hiểu.
Nếu tôi grep cho grep.
Chú ý nó là khá nhiều luôn hiển thị các lệnh tôi chỉ
chạy vì lệnh chính nó có grep bên trong của nó.
>> OK, vì vậy bất kỳ câu hỏi về bất cứ điều gì?
Và tôi sẽ chuyển nó qua vào thời điểm này.
Hy vọng rằng đây là một tốt đẹp tổng quan về tất cả các lệnh
mà bạn không cần phải có học thuộc lòng, nhưng những tạo nên
một chất rắn 95% những gì tôi làm tại dòng lệnh.
Cũng nên nhớ rằng các dòng lệnh chính nó, bash là một ngôn ngữ lập trình,
và vì vậy khi bạn nhận được xuống để nó, bạn có thể muốn làm những điều thực sự phức tạp.
Và vì vậy nó có những thứ như vòng, và IFS, và tất cả những
rằng bạn đang đi để có được sử dụng để với các ngôn ngữ lập trình của bạn.
Nhưng đó là vượt ra ngoài phạm vi của phần này.
OK, vì vậy không có câu hỏi?
ALLISON: Không?
GABRIEL: Bạn sẽ đối với:
ALLISON: Tôi có thể làm điều đó trên của tôi nếu bạn muốn.
Chúng ta có thể xem những gì sẽ xảy ra.
ROB Bowden: Off để Allison.
ALLISON: Woo.
Bạn là một hành động khó để làm theo, Rob.
Bạn có muốn tôi để chuyển đổi với bạn?
Hoặc bạn có, OK.
Tôi sẽ cố gắng và không khá như dài ở đó.
Hãy xem nếu điều này sẽ làm việc theo cách tôi muốn nó.
Có lẽ?
Haha!
Vâng.
>> Vì vậy, tôi chỉ cần đi đến rất nhanh chóng đi thông qua các biến, các vòng lặp, điều kiện,
và một chút vào trình biên dịch.
Nếu bạn có câu hỏi tại bất cứ lúc nào, xin vui lòng dừng lại cho tôi.
Những anh chàng này sẽ nhắc nhở tôi phải lặp lại câu hỏi của bạn trong trường hợp tôi quên,
nhưng không phải là quá xấu.
>> Vì vậy, các biến, yeah.
Chúng tôi không có một trong những của bạn Phần đầu ở đây.
Tôi chắc rằng hầu hết các bạn, nếu bạn đã có một số loại trò chơi
mà bạn tạo ra với Scratch, bạn có để theo dõi một cái gì đó như điểm số,
hoặc thời gian, hoặc một cái gì đó như thế.
Vì vậy, những màu cam tươi sáng miếng mà chúng ta thấy có
chỉ là hình thức của Scratch biến, và bạn chắc chắn sẽ
được sử dụng các biến trong suốt chương trình của bạn.
Nếu bạn không, tôi không thực sự chắc chắn những gì bạn đang làm.
>> Nhưng dù sao, điều lớn, xác định các biến.
Với C mỗi biến có để có một kiểu được khai báo,
vì vậy tôi đã cho bạn một rất một chung ở đầu trang.
Vì vậy, bạn sẽ có của bạn gõ và sau đó bất cứ điều gì
bạn quyết định gọi biến của bạn.
Vì vậy, trong trường hợp này, loại trong danh sách biến của bạn.
>> Chúng tôi có ba ví dụ.
Char của một số lớp, của một A, đó là những gì
Tôi chắc rằng tất cả các bạn muốn để có được trong lớp học này.
Bạn có thể xác định nhiều biến trên một dòng
miễn là họ đang tất cả cùng loại, đó là ví dụ thứ hai của chúng tôi có
nơi bạn có ba biến, x, y, và z.
Họ là tất cả các phao nổi.
Và sau đó bạn cũng có thể, trong này cuối cùng Ví dụ với int số điểm và số lượng
của các đội, bạn có thể khởi tạo chúng ngay tại đó.
>> Vì vậy, trong ví dụ giữa nơi chúng tôi chỉ có float của x, y, và z,
những người không được khởi tạo nào.
Họ không có giá trị.
Hoặc họ có giá trị rác.
Và nếu bạn cố gắng và sử dụng chúng, trình biên dịch sẽ la mắng bạn.
Bạn phải cả hai tuyên bố và khởi tạo các biến của bạn.
Vì vậy, trong một cuối cùng này, chúng tôi đang làm cả hai.
Chúng tôi đang khai báo biến của điểm số và số lượng các đội,
và chúng tôi đang khởi tạo chúng, tạo cho họ giá trị ban đầu của họ về 7 và 4
tương ứng.
Cool.
Tất cả mọi người tốt?
Tuyệt vời.
>> OK, vì vậy một số công ước.
Nếu các bạn đã đọc thông qua phong cách 50, các
chỉ là những điều mà chúng tôi muốn cho bạn để thực hiện trong phong cách của bạn.
Tên rất có ý nghĩa.
Nếu bạn bắt đầu cuộc gọi thứ chỉ x, y, z, đặc biệt
như bạn nhận được vào dài hơn các chương trình, bạn
có lẽ sẽ nhầm lẫn giữa bản thân và được
như biến này đề cập đến là gì.
Tôi không có ý tưởng những gì điều này có nghĩa.
>> Vì vậy, nếu nó có nghĩa là để giữ một số điểm, gọi nó là ghi bàn.
Nếu nó có nghĩa là để giữ một số câu trả lời hoặc kết quả, cung cấp cho nó một cái tên như thế.
Đối với các vòng lặp, mà chúng tôi sẽ nhận được vào trong các slide tiếp theo,
biến chữ cái cũng tốt.
ROB Bowden: I, j, và k là chỉ ước cho cho các vòng
mà mọi người mong đợi họ để được gọi là i, j, và k.
Bạn có thể gọi them-- tôi thấy hàng cột hoặc gọi hàng đôi khi
cho hai vòng lặp lồng nhau, và đó cũng là loại tiêu chuẩn.
Nhưng tôi và j được hiểu hoàn toàn.
>> ALLISON: Yeah, tôi và j bạn hoàn toàn tốt.
Vì lợi ích rõ ràng như trong một số bộ P của bạn,
nó có thể làm cho tinh thần để có nhiều hơn nữa điều mô tả trong đó chỉ
để theo dõi nó.
Nhưng tôi nghĩ rằng i, j, k và tôi nghĩ phần lớn của tất cả chúng ta sử dụng.
>> ROB Bowden: Với những ước, vì vậy phong cách là rất quan trọng.
Đó là một trong bốn trục mà bạn đang phân loại,
và nó là như vậy dễ dàng chỉ cần đi qua P của bạn thiết lập lúc kết thúc và chắc chắn
rằng không có sai lầm về phong cách.
Vì vậy, hãy chắc chắn rằng bạn đang tabbing một cách chính xác.
Hãy chắc chắn rằng các biến của bạn được đặt tên.
Để lại một số ý kiến.
Nó rất dễ dàng để có được những điểm.
Bạn không cần phải suy nghĩ về bất cứ điều gì để có được những điểm.
Bạn không cần phải tìm bất cứ điều gì.
Nó chỉ làm cho nó trông khá.
>> ALLISON: Trong thực tế, chúng tôi có phong cách 50,
sẽ cho bạn biết nơi bạn đang rối tung lên nếu bạn đang rối tung lên trên phong cách
và sẽ cho bạn biết chính xác những gì bạn cần phải sửa chữa và làm thế nào bạn cần phải sửa chữa nó.
Nó cũng chỉ tốt để đề cập đến rằng đó là chính sách nhiên
rằng nếu bạn đang ở văn phòng giờ và mã của bạn là một mớ hỗn độn,
chúng tôi có thể từ chối giúp đỡ bạn cho đến khi nó trông đẹp hơn.
Vì vậy, bắt đầu ra bên phải, giữ phong cách nhất quán,
bạn cũng chỉ cần đi làm cuộc sống của bạn dễ dàng hơn nhiều khi
bạn đang cố gắng để đi qua debug.
Nếu bạn đang cố gắng tìm ra nơi bạn đang bỏ lỡ một cú đúp xoăn
và họ là tất cả các nơi, bạn chỉ làm cho cuộc sống của bạn khó khăn hơn.
Vì vậy, phù hợp với phong cách.
Tôi hứa nó sẽ làm cho cuộc sống của bạn dễ dàng hơn.
Nó sẽ làm cho cuộc sống của chúng tôi dễ dàng hơn.
Tất cả mọi người sẽ hạnh phúc hơn.
Và đó là những gì bạn muốn.
GABRIEL: lớp của bạn sẽ cao hơn.
ALLISON: Vâng, và lớp của bạn.
Nếu TF của bạn giống như bạn, có xu hướng thuận lợi.
Tất cả các bên phải, và sau đó chỉ cần điểm thứ hai ở đây.
Khởi tạo phù hợp.
Vì vậy, như chúng ta đã thấy, bạn có thể khai báo và khởi tạo vật.
Nhiều biến trên cùng một dòng.
Một điều chúng tôi muốn bạn không làm là khai báo một số biến
và không khởi tạo cho họ trên cùng một dòng mà bạn được khởi tạo khác.
>> Vì vậy, trong trường hợp đó được thực hiện không có ý nghĩa gì,
chúng ta có ví dụ ở đây nơi mà chúng tôi đang tuyên bố ints
trong các biến khu dimes và đồng xu,
nhưng quý và đồng xu không có giá trị ban đầu.
Chúng tôi đã không được khởi tạo chúng, nhưng phải ở giữa có
chúng ta đã khởi tạo dimes 0.
Vì vậy, hoặc làm tư, mưu sinh, đồng xu.
Hoặc quý bằng 0.
Dimes bằng 0.
Đồng xu bằng 0, hoặc bất cứ điều gì những giá trị ban đầu.
>> Big điều với phong cách, phù hợp.
Khi nghi ngờ, phù hợp.
Nhưng theo hướng dẫn phong cách của chúng tôi quá.
Cool.
Tất cả mọi người tốt không?
>> Đung đâu là hướng dẫn phong cách?
ALLISON: Các hướng dẫn phong cách là on-- trang web là những gì?
>> GABRIEL: Tôi nghĩ rằng đó là manual.cs50.net/--
ALLISON: Phong cách?
>> GABRIEL: Style.
Yep.
>> ALLISON: Có.
Vì vậy, câu hỏi, mà là phong cách 50.
manual.cs50.net/style.
Có?
>> Đung Nếu chúng ta xác định biến, nó là OK
nếu chúng ta đặt như [không nghe được] như int số điểm và sau đó int mục tiêu.
Vì vậy, bạn sẽ nói rằng bây giờ chúng tôi đã đã xác định chúng lại với nhau?
>> ALLISON: Vì vậy, câu hỏi, nên bạn có mã dư thừa
khi bạn đang xác định biến như int điểm và
trên dòng int trò chơi tiếp theo?
ROB Bowden: Có chắc chắn Trường hợp mã dư thừa là xấu.
Tôi sẽ không xem xét mã dư thừa.
Tôi gần như không bao giờ tuyên bố nhiều biến trên cùng một dòng bao giờ hết.
Và nếu bất cứ điều gì, đó là vì thường tôi để lại một số loại bình luận
giải thích những gì biến là cho.
Vì vậy, tôi sẽ nói int số dấu gạch chéo dấu gạch chéo.
Theo dõi bất cứ điều gì.
Trong tổng số dấu gạch chéo dấu gạch chéo.
Vì vậy, nó là nhiều phim có doanh thu theo cách đó để đặt tất cả trên cùng một dòng.
Tôi chỉ không bao giờ đặt chúng trên cùng một dòng.
>> ALLISON: Tôi cảm thấy thích nó sở thích cá nhân vào thời điểm này.
>> Đung Điều đó đi cho cho các vòng và những thứ quá?
ROB Bowden: Giống như bên trong?
Giống như int i bằng 0 dấu phẩy chiều dài bằng một cái gì đó?
Bạn không có một sự lựa chọn.
Với cho các vòng khởi tạo part-- vì vậy bạn có thể chỉ nhìn thấy
int i bằng 0 dấu chấm phẩy i ít hơn bất cứ điều gì tôi cộng với cộng với dấu chấm phẩy.
Đó int i bằng 0, kỹ thuật, bạn cũng có thể
làm những gì chúng ta đã thấy trước với cú pháp dấu phẩy.
int i bằng 0 dấu phẩy j tương đương với 3 dấu phẩy k = 5.
Bạn không có một sự lựa chọn để chia rằng thành nhiều dòng,
và đó là tiêu chuẩn.
Nhìn thấy nó có là tốt.
ALLISON: Awesome.
Vâng, segue thuận tiện vào các vòng lặp.
Vì vậy, yeah, ở đây chúng tôi có một số ví dụ của vòng mà các bạn đã thấy trong Scratch.
Và dĩ nhiên tất cả các chỉ có thể được tái tạo trong C.
Và họ về cơ bản cho phép bạn để lặp lại một số phần của mã
cho đến khi một điều kiện nhất định được đáp ứng, mà chúng ta sẽ
nhận được vào ngay sau khi nói chuyện về vòng với điều kiện.
>> Vì vậy, chúng tôi có ba loại chính.
Đối với, trong khi, và làm trong khi, mà tất cả chúng ta sẽ đi qua ngay bây giờ.
Vì vậy, đầu tiên là cho các vòng.
Vì vậy, đối với một số điều kiện, thực hiện khối mã này.
Chúng ta có ít này mát mẻ sơ đồ ở đây ở phía dưới.
Nhưng về cơ bản bạn có trong cho bạn, dòng đầu tiên,
bạn sẽ khởi tạo các biến của bạn.
>> Vì vậy, khi chúng tôi nói chuyện về, tôi là bằng 0 hoặc i bằng 10.
Bất cứ điều gì bạn cần đó biến được nó
sẽ được khởi tạo ở đó, khai báo và khởi tạo một số giá trị.
Vì vậy, sau đó chúng tôi có một số tình trạng đó đang xảy ra
để được kiểm tra của chúng tôi biến chống lại một cái gì đó.
Vì vậy, trong trường hợp các trường hợp điển hình nơi có thể bạn muốn phần này của mã
thực hiện năm lần.
Vì vậy, chúng tôi có int i bằng 0, và chúng tôi muốn nó được khi tôi là ít hơn 5.
Vì vậy, điều kiện đó chỉ là sẽ kiểm tra xem tất cả các thời gian.
Nếu điều kiện để đánh giá đúng, đó là
sẽ chạy mã, mà là chính xác những sơ đồ này ít được hiển thị.
>> Và do đó, nó thực hiện nó.
Nó cập nhật một biến, đó là những gì chúng ta thấy
trong phần cuối cùng của cho chúng tôi khởi tạo vòng lặp đó.
Vì vậy, nó sẽ chỉ tiếp tục làm này cho đến khi điều kiện không được đáp ứng,
và sau đó nó sẽ thoát vòng lặp và tiếp tục
di chuyển trên với phần còn lại của chương trình của bạn.
Tất cả mọi người tốt không?
Cool.
>> Vì vậy, đây là một ví dụ, rất giống để cái gì tôi chỉ nói chuyện về.
Vì vậy, chúng tôi chỉ muốn in đây là CS50 10 lần.
Vì vậy, bạn thấy ở đây chúng tôi có cho chúng tôi, và sau đó chúng tôi
khởi tạo biến tôi là bằng 0.
Điều kiện của chúng tôi được kiểm tra rằng đó là ít hơn 10.
Vì vậy, để đánh giá đúng khi chúng ta đầu tiên bắt đầu, và sau đó cập nhật biến của chúng tôi
mỗi thời gian đó nó thực sự thực hiện và in ra đây là CS50.
Và sẽ chấm dứt sau 10 lần.
Cool.
>> Vì vậy, trong khi các vòng lặp là lên tới.
Và như bạn thấy ở đây, chúng tôi chỉ có trong khi một số câu hỏi condition-- này?
>> ĐỐI TƯỢNG: Làm thế nào tôi có thể nhảy thực sự chỉ cần không phải là một số,
nhưng hai con số [không nghe được] i cộng với cộng với cộng?
>> ALLISON: Vậy câu hỏi là làm thế nào có thể bạn cập nhật biến của bạn bởi nhiều hơn một
tại một thời điểm.
Vì vậy, tôi cộng cộng sẽ cập nhật bởi một mỗi lần.
Nếu bạn muốn cập nhật nó bằng hai, bạn có thể làm tôi cộng = 2.
>> ROB Bowden: Bạn đã thấy cộng bằng trong bài giảng chưa?
>> Đung [không nghe được].
>> ALLISON: Đó là hiệu quả cùng một điều như tôi bằng i cộng với 2.
Vì vậy, nó sẽ mất nó và cập nhật nó bằng hai mỗi lần.
Thêm bằng từ chỉ là một cái gì đó chúng ta gọi là cú pháp đường.
ROB Bowden: Yeah, những tồn tại khá nhiều tất cả các toán tử số học.
Vì vậy, tôi lần bằng sẽ tăng gấp đôi số lượng.
j chia bằng 3 là cùng như j bằng j chia cho 3.
>> ALLISON: Hoặc trừ bằng 2 sẽ giảm giá trị i bởi hai mỗi lần.
ROB Bowden: Ngay cả bình đẳng mod.
Bạn không nhìn thấy các nhà khai thác Bitwise, nhưng caret bằng và ký hiệu bằng,
tất cả những tồn tại.
>> ALLISON: Vì vậy, rất nhiều lần, đặc biệt với cặp vợ chồng đầu tiên của bộ P,
bạn sẽ có thể incrementing bởi một, vì vậy tôi cộng với cộng với, j cộng với cộng với
là tất cả mọi thứ bạn đang đi để thường được sử dụng.
Nhưng mà điều kiện cập nhật hoàn toàn trong tầm kiểm soát của bạn.
Bạn có thể cập nhật nó bằng cách gia tăng bất cứ điều gì hoặc trong bất cứ cách nào bạn quyết định.
Có lẽ bạn thậm chí muốn nó được một số ngẫu nhiên đôi khi.
Nhưng có, có rất nhiều điều bạn có thể làm với điều đó.
Bạn không bị hạn chế i cộng với cộng với.
>> ROB Bowden: Chỉ cần để bạn biết nó tồn tại, nó cũng
tồn tại dưới hình thức khác, cộng với cộng với i.
Vì vậy, nếu bạn đã bao giờ tìm kiếm trực tuyến và xảy ra để xem cộng với cộng với i,
khá nhiều có nghĩa là cùng một điều.
ALLISON: Cool.
Tốt?
Tuyệt vời.
Vì vậy, trong khi các vòng.
Rất giống nhau.
Bạn có một số điều kiện.
Nhưng điều cần lưu ý ở đây là thay vì có
ba phần khác nhau để thiết lập, chúng tôi có một.
Chúng tôi chỉ có một số điều kiện đó là đang được kiểm tra.
Và trong cùng một cách, miễn là điều kiện để đánh giá đúng,
mã của bạn sẽ chạy.
Và nếu nó sai, nó sẽ chấm dứt, di chuyển
vào phần tiếp theo của chương trình của bạn.
Vì vậy, đây là loại like-- gì một ví dụ tốt về kiểm tra
đối với một số điều kiện bình thường?
GABRIEL: Trong khi sự thật.
ALLISON: Bạn có thể làm trong khi sự thật.
Vâng, 1 là bằng 1.
>> ROB Bowden: Bạn có thể làm while-- chỉ thay vì sử dụng một vòng lặp,
bạn luôn có thể code một cho vòng lặp trong vòng lặp while,
vì vậy tôi lớn hơn 0 hoặc trong khi tôi ít hơn 10.
>> ALLISON: Awesome.
Và sau đó chúng tôi đã làm trong khi vòng, mà là rất tốt cho người sử dụng xác nhận, nơi
bạn muốn nhận được một cái gì đó từ người dùng của bạn, xem nếu nó là hợp lệ,
và sau đó tiếp tục từ đó.
Vì vậy, một trong những điều cần biết là với một làm trong khi là nó sẽ thực hiện,
và sau đó nó sẽ tái thực hiện nếu điều kiện này được đáp ứng.
>> Vì vậy, có lẽ là cách tốt nhất để làm điều này là chỉ để xem một ví dụ ở đây.
Vì vậy, như tôi đã đề cập, người sử dụng xác nhận là thực sự useful--
hoặc làm tuy rằng thực sự hữu ích với người sử dụng xác nhận.
Vì vậy, đây là chỉ cần đi lại nhắc nhở một số người sử dụng
cho đến khi họ nhập một số dương, mà có thể là hữu ích cho bộ P của bạn
trong tuần này.
Và như vậy trong trường hợp này, khi chúng ta ban đầu chạy chương trình này,
nó sẽ in nhập một số dương.
Nó sẽ nhận được một số đầu vào từ người dùng,
và sau đó nó sẽ kiểm tra rằng đầu vào đối với điều kiện
mà bạn đã thiết lập cho nó.
>> Vì vậy, trong trường hợp này nó sẽ kiểm tra.
Nó sẽ nói, OK, là đầu vào của chúng tôi tiêu cực,
hoặc là nó 0 hay tiêu cực, đó sẽ là không hợp lệ.
Vì vậy, sau đó nó sẽ lại nhanh chóng.
Câu hỏi?
>> ĐỐI TƯỢNG: Đây có phải là cùng sau đó như một vòng lặp trong khi nếu bạn chỉ cần sao chép mã
và đặt nó [không nghe được] trong khi vòng lặp?
>> ALLISON: Vì vậy, câu hỏi là sẽ này giống như chỉ một thời gian
vòng lặp nếu chúng ta chỉ sao chép các vòng lặp trong khi ở trên.
Vì vậy, trong trường hợp này, vòng lặp trong khi của bạn là sẽ kiểm tra điều kiện đầu tiên.
Vì vậy, trong trường hợp này, nếu chúng ta cố gắng viết như chỉ là một vòng lặp while,
nó sẽ nói trong khi đầu vào là ít hơn một.
Nhưng chúng ta không có một đầu vào cho nó.
>> Đung Nếu bạn [không nghe được] trong khi vòng lặp bao gồm cả mã này,
nhưng sau đó bạn đối phó mã trên các vòng lặp trong khi cũng có.
Bạn chỉ cần có mã này [Không nghe thấy] trong khi vòng lặp.
ALLISON: Nó sẽ là điều tương tự, có.
Vì vậy, bạn chỉ có thể write-- thay vì có một có do--.
GABRIEL: Nhưng đó là thanh lịch hơn.
ALLISON: Vâng, đó là thanh lịch hơn.
Bạn có thể nhận được vào thiết kế và không có điều gì, nhưng có, bạn hoàn toàn có thể làm điều đó.
Bất kỳ câu hỏi khác?
OK, mát mẻ.
>> Vì vậy, chúng tôi đã nói rất nhiều về điều kiện với tất cả các vòng mà chúng ta có,
vì vậy chúng tôi đang thực sự đi vào điều kiện trong các biểu thức Boolean.
Một lần nữa, bạn sử dụng các bằng C, vì vậy chỉ cần loại chuyển
từ giao diện đồ họa hơn để thực sự mã hóa.
>> Cool, một quá lớn, nếu.
Về cơ bản chỉ cho phép chúng tôi giới thiệu một số logic vào chương trình và kiểm tra của chúng tôi
điều kiện sys.
Vì vậy, trong trường hợp này, OK, là n lớn hơn 0?
Có nó, vì vậy bạn có thể thực hiện điều này.
Nó chỉ kiểm tra một số điều kiện là bạn đã
thiết lập, mà tôi nghĩ rằng tất cả chúng ta thoải mái với điều kiện kiểm tra.
Cool.
Vì vậy, nếu người nào khác là một trong những khác của bạn, bạn có thể nói OK, nếu điều này là đúng,
làm việc đầu tiên này.
Nếu không, tôi muốn bạn mặc định và làm cái gì khác.
Giống như trong trường hợp này, bạn có thể chọn một số dương hoặc một số âm.
Bạn chỉ có hai lựa chọn.
Bạn cần nó để thực hiện bất kể của những đầu vào người dùng của bạn.
Vì vậy, bạn có thể nói tốt, là nó lớn hơn 0?
Cool.
In một số dương.
Nếu không, in một tiêu cực.
Tất cả mọi người tốt?
>> Và sau đó một điều nhận ra là rằng nếu nếu điều kiện được đáp ứng,
else sẽ không bao giờ cũng thực hiện.
Chỉ có một trong những sẽ thực hiện tại một thời điểm.
Vì vậy, nó là một thương mại giảm.
Bạn không nhận được để có cả hai.
Bạn có thể có điều kiện đầu tiên.
Bạn có thể có nếu hoặc người nào khác, không phải cả hai.
Mà sau đó có thể làm cho mọi việc thậm chí còn phức tạp hơn,
bởi vì bạn có thể làm gì nếu, khác nó, và sau đó khác.
Vì vậy, trong trường hợp này, chúng tôi có ba điều kiện.
Và một lần nữa, chỉ có một trong số này là sẽ kết thúc được thực thi.
Vì vậy, bạn có thể tự hỏi tốt, những gì nếu bạn
có cái gì đó có thể đáp ứng hai trong số này.
Có lẽ bất cứ điều gì bạn đang nhập đáp ứng cả hai điều kiện
vì nếu và else if.
Chỉ có điều đó là sẽ chạy
>> ALLISON: Ngay sau khi nó tìm thấy một cái gì đó rằng nó đáp ứng các điều kiện cho điều đó
để đánh giá đúng, đó là những gì nó sẽ chạy và không có gì khác.
Vì vậy, nếu bạn đã là con số này giữa 0 và 5 cho một đầu tiên của bạn,
hoặc là con số này từ 3 và 5 cho khác nếu một phần,
và bạn nhập vào number-- Tôi nói 0 và 5 và- 4.
Nó sẽ nhấn đầu tiên.
Nó sẽ nói OK, điều này số là từ 0 đến 5.
Thực hiện và để lại.
Nó sẽ không bao giờ nhấn mà lựa chọn thứ hai.
Mát mẻ?
Tuyệt vời.
>> OK, chúng tôi cũng có báo cáo chuyển đổi nếu bạn muốn nhận được thậm chí more-- hoặc xin lỗi,
chuyển đổi là tiếp theo.
Tôi nhận được trước bản thân mình ở đây.
Một lần nữa, nhiều nếu khối nơi như tôi vừa nói
là ngay khi bạn tìm thấy một tình trạng đó là gặp và nếu người nào khác nếu người nào khác,
nó để lại.
Nếu bạn cần phải kiểm tra nhiều điều, bạn
sẽ muốn sử dụng vì đây nó sẽ kiểm tra tất cả các thời gian ở đây.
Vì vậy, đây sẽ chạy qua và nếu nó lớn hơn hoặc bằng 90,
nó sẽ in đó.
Và nó sẽ chạy qua và kiểm tra mỗi một đơn của các.
>> Đung Vì vậy, đây sẽ là buggy hơn [không nghe được].
Điều này có thể như [không nghe được]?
>> ALLISON: Câu hỏi là điều này sẽ là lỗi hoặc thực hiện điều này làm những gì bạn muốn.
Nó thực sự phụ thuộc vào những gì bạn muốn từ chương trình của bạn.
>> Đung tôi có ý nghĩa như thế nào nếu bạn đặt 90 trong.
ALLISON: Nếu bạn đặt 90--
Đung [không nghe được].
GABRIEL: Bạn sẽ nhận được hai điều.
ALLISON: Bạn sẽ nhận được hai điều.
Vâng, hai.
>> ROB Bowden: Hai?
>> ALLISON: số
>> ROB Bowden: Four.
Nếu bạn đặt 90, nó sẽ nói rằng bạn có một A, bạn có một B, bạn có một C,
bạn có một D.
>> Đung [không nghe được].
ALLISON: Đúng vậy.
Vì vậy, tôi phụ thuộc vào những gì bạn từ chương trình bạn.
Đôi khi bạn cần kiểm tra nhiều điều.
Bạn sẽ nhận được sâu hơn vào những gì thiết kế tốt là khi bạn đi về phía trước.
Điều quan trọng cần nhận ra là điều này
sẽ kiểm tra tất cả bốn điều kiện ở đây.
Trong khi đó, nếu điều này là một nếu người nào khác nếu người nào khác nếu người nào khác, nó sẽ nhấn mà trường hợp đầu tiên,
nó sẽ in bạn có một A và được thực hiện.
>> ROB Bowden: Ngay cả nếu chúng tôi quyết định thay đổi này nếu
và lớn hơn hoặc bằng 90, nếu và lớn hơn hoặc bằng 80,
và nhỏ hơn hoặc bằng 89, nếu n lớn hơn hoặc bằng 70,
n và nhỏ hơn hoặc bằng 79, do đó sẽ được chính xác.
Điều đó sẽ làm những gì chúng ta muốn, nhưng nó vẫn kiểm tra mỗi đơn nó.
>> Vì vậy, trong khi trong kịch bản đầu tiên, nếu chúng ta nhập 90 với chỉ nếu người nào khác nếu người nào khác nếu,
và chúng ta bước vào 90, sau đó nó sẽ sửa chữa.
Nó sẽ kiểm tra đầu tiên một, in bạn có một A,
bỏ qua tất cả mọi thứ, bởi vì nó đã tìm thấy một trong những hoạt.
Tất cả các trường hợp loại trừ lẫn nhau dựa trên nếu người nào khác nếu người nào khác nếu.
Vì vậy, nó sẽ thực hiện đầu tiên nếu, sau đó nó được thực hiện.
Nó sẽ đi đến cùng.
>> Trong khi đó, nếu chúng ta thay đổi đây là những gì tôi đã
nói rằng có ít hơn hoặc bằng 89.
Nó sẽ kiểm tra đầu tiên.
Nó sẽ in.
Nó sẽ kiểm tra thứ hai.
Nó sẽ không in.
Kiểm tra một phần ba.
Sẽ không in.
Kiểm tra một phần tư.
Bây giờ chuẩn bị in.
Vì vậy, trong trường hợp đó, nếu người nào khác phiên bản, vì những trường hợp này
loại trừ lẫn nhau, đó là sử dụng tốt hơn nếu người nào khác nếu người nào khác nếu,
bởi vì có nghĩa là sẽ có ít kiểm tra các điều kiện
hơn so với phiên bản này.
ALLISON: Awesome.
Vì vậy, điều khác chúng ta có thể làm là báo cáo chuyển đổi.
Về cơ bản một báo cáo chuyển đổi có trong một số biến,
trong trường hợp này đó là n, và xác định trường hợp đó để thực thi.
Vì vậy, đây cũng là một trong những nơi mà trường hợp của bạn nên loại trừ lẫn nhau.
Vì vậy, trong trường hợp này, nếu chúng tôi chúng tôi có được một, đó là
sẽ phù hợp với bất cứ điều gì mà variable-- bất cứ điều gì giá trị của n
là một trong những trường hợp này, do đó, 1, 2, hoặc 3, và in ra các dòng tương ứng.
>> Và sau đó nếu bạn nhận thấy ở đây, chúng tôi cũng có một mặc định,
mà bạn có thể nghĩ là của người khác của bạn.
Vì vậy, nếu bạn chọn bất kỳ số khác bên cạnh 1, 2, và 3 trong trường hợp này
nó chỉ là sẽ in không hợp lệ.
Quyết định khi sử dụng so với IFS nếu elses so với thiết bị chuyển mạch sẽ
là một cái gì đó mà các bạn sẽ xem thiết kế khôn ngoan khi bạn bắt đầu viết
các chương trình phức tạp hơn, và không có quy tắc cứng và nhanh chóng
khi sử dụng chúng.
Nó thực sự phụ thuộc vào hoàn cảnh của bạn.
>> ROB Bowden: Và chỉ để ném nó ra khỏi đó
vì nó là phần thoải mái hơn.
Thiết bị chuyển mạch, họ có xu hướng be-- nên bạn bị giới hạn
trong số cách bạn có thể sử dụng chúng, bởi vì IFS,
điều kiện có thể được khá nhiều bất cứ điều gì bạn muốn.
Với các trường hợp chuyển mạch phải là con số,
hoặc kỹ thuật họ có thể ký tự, nhưng ký tự, như chúng ta sẽ thấy, chỉ là con số.
Vì vậy, họ phải có con số, nhưng thiết bị chuyển mạch là thực sự hiệu quả hơn nếu
else if else if, bởi vì ngay cả lấy ví dụ before-- tốt,
ví dụ lớp có vẻ tốt.
>> Vâng chúng ta hãy nói ở đây, chúng ta thay vì làm này như là một nếu người nào khác nếu người nào khác nếu kịch bản.
Vì vậy, nếu n bằng bằng 1, in bạn chọn một số lượng thấp.
Nếu người nào khác nếu n bằng bằng 2, bạn đã chọn một số trung bình.
Khác nếu bình đẳng tương đương với 3, cao.
Khác không hợp lệ.
>> Vì vậy, hãy nói đó là kịch bản của chúng tôi.
Vì vậy, hãy nói rằng chúng ta nhập 4, vì vậy chúng tôi mong đợi không hợp lệ.
Cách mà nếu người nào khác nếu người nào khác nếu phương pháp tiếp cận là đi làm việc là
kiểm tra các điều kiện đầu tiên.
Nó không hài lòng.
Vì vậy, chúng tôi kiểm tra điều kiện thứ hai.
Nó không hài lòng.
Kiểm tra điều kiện thứ ba.
Không hài lòng.
Vì vậy, chúng tôi đi đến khác và in không hợp lệ.
>> Cách các công trình chuyển đổi là nó biên dịch xuống
vào những gì chúng ta đang đi để gọi một bảng nhảy.
Ý tưởng chính con rằng khi bạn nhập 4,
nó ngay lập tức có thể đi để mặc định.
Nó không cần phải kiểm tra am trường hợp 1?
Nope đó không phải là nó.
Trường hợp 2?
Không.
Trường hợp 3?
Không.
Mặc định.
OK, đây phải là nơi tôi muốn, và sau đó thực hiện điều đó.
Không, nó ngay lập tức nhảy vào mặc định.
Hoặc nó tôi nhập 2, đó là ngay lập tức sẽ đi đến 2
mà không cần phải đi qua trường hợp 1.
>> Vì vậy, theo cách đó, thực tế hiện nay đó là
không phải là nhiều của một đạt được hiệu quả.
Thông thường các máy tính là khá nhanh chóng, và đó không phải là tuyệt vời.
Nhưng đó là trường hợp đó thiết bị chuyển mạch nhanh hơn.
Nếu bạn đang thực sự cố gắng để tối ưu hóa, sử dụng một bộ chuyển mạch.
>> ALLISON: Cool.
Và sau đó chúng tôi có điều hành bậc ba.
Vì vậy, tôi biết tôi đã đề cập trước đó từ cú pháp đường.
Vì vậy, nó chỉ là những điều mà làm mã của bạn nhiều hơn nữa súc tích.
Vì vậy, đây là một trong những trường hợp đó.
>> Vì vậy, điều hành bậc ba là dấu hỏi ruột như chúng ta thấy trong chuỗi dây chuyền
s tương đương với n lớn hơn 100 dấu hỏi ruột kết cao thấp.
Vì vậy, về cơ bản cách làm việc này là nó n lớn hơn 100 là một điều kiện.
Vì vậy, tôi nghĩ rằng nó có thể làm cho tinh thần.
Nó giống như hỏi một câu hỏi.
Nó nói oh, là n lớn hơn 100.
Ai biết được?
Và nếu nó để đánh giá đúng, nó sẽ cung cấp cho bạn
điều đầu tiên đó là liệt kê ở đó, mà là cao.
Nếu không nó sẽ cung cấp cho bạn thấp.
Vì vậy, đây chỉ là một thực sự đơn giản và cách hiệu quả để làm giống như một nếu người nào khác.
Đó là tất cả điều này.
>> Và nếu chúng ta để viết này là nếu người nào khác có điều kiện,
nó sẽ được nếu n lớn hơn 100, cao trở lại.
Khác, trả lại thấp.
Đây chỉ là một nhiều hơn nữa cách ngắn gọn của văn bản đó.
>> ROB Bowden: Vì vậy, ví dụ cụ thể này là bất cứ khi nào bạn đang làm một cái gì đó
như thế này, đây là mô hình mà tôi sử dụng ba yếu tố rất thường xuyên.
Vì vậy, chúng tôi đã không nói về phạm vi nào, nhưng tôi ghét nhìn thấy chuỗi s dấu chấm phẩy.
Nếu n lớn hơn 100, s bằng cao.
Khác, s bằng thấp.
Vì vậy, mô hình đó, những năm dòng mã theo nghĩa đen 100% thời gian
có thể được chuyển vào những gì là lên đó với một bậc ba.
Vì vậy, các bậc ba, một dòng mã.
Nếu khác, năm.
Đó là một ví dụ tôi chỉ ra mỗi lần duy nhất.
Sẽ tuyệt vời nơi này cho một nhà điều hành bậc ba.
Nó rất sạch sẽ.
Nhưng mọi người có xu hướng không bao giờ sử dụng nó.
>> ALLISON: Lấy nó đi Gabe.
>> GABRIEL: Bây giờ các bạn tất cả đã học trong bài giảng trong tuần này
rằng tất cả mọi thứ trong một máy tính là nhị phân, phải không?
Cũng giống như các đèn ở đây.
Bạn có thể là bật và tắt.
Và bằng tất cả mọi thứ, tôi có nghĩa nghĩa là tất cả mọi thứ.
Một số con số, và các ký tự, và các chuỗi, và ngay cả những mã mà bạn viết khi
nó được biên dịch để máy mã và công cụ như thế,
do đó tất cả các boils xuống 0 và 1.
>> Và như vậy khi chúng tôi đang làm việc với số nguyên, mà
là cái gì đó là kỹ thuật rất đơn giản, chúng ta sẽ có thể làm công cụ
giống như thêm họ, đó là có lẽ là một trong những điều đơn giản nhất
bạn có thể làm để hai số nguyên, phải không?
Vì vậy, cộng và trừ công trình chỉ như nó hoạt động trong ký hiệu số thập phân,
ngoại trừ ở đây nó là nhị phân, phải không?
Vì vậy, nó trong cơ sở hai.
Vì vậy, thêm 1 cộng thêm 1.
Điều đó cho 0 và 1 mang hơn.
Và chỉ cần giữ làm điều đó, Vậy bây giờ là một câu hỏi thú vị hơn.
>> Chúng tôi biết làm thế nào để đại diện cho tất cả số nguyên dương trong máy tính,
nhưng chúng ta hãy làm một bài tập này.
Giả vờ bạn là tất cả vào năm 1960 hoặc một cái gì đó cố gắng để tạo ra một máy tính,
và bạn phải đi lên của một cách để lưu trữ trừ đi 1,
ví dụ, hoặc trừ đi bất kỳ số nguyên cho rằng vấn đề.
Làm thế nào bạn sẽ làm điều đó?
Bất cứ ý tưởng?
Chỉ cần ném bất cứ điều gì với tôi.
Có?
>> Đung [không nghe được] định đặc biệt nếu bạn [không nghe được].
>> GABRIEL: Bạn có thể chỉ định một chút đặc biệt, đó sẽ là 0 hoặc 1.
Hãy nói rằng một khi nó tích cực và 0 nếu đó là tiêu cực.
Và sau đó phần còn lại của các bit chỉ là để lưu trữ các số.
Cool.
Vì vậy, đó là một ý tưởng rất tốt.
Chúng tôi có, tôi không biết, 200.
Và nếu bit đầu tiên là bật lên, sau đó nó cộng với 200.
Nếu nó tắt, nó là trừ đi 200.
Cool.
>> Chỉ có một nhỏ Vấn đề này,
đó là nếu chúng tôi cố gắng để tổng hợp mọi thứ lên.
Vì vậy, hãy tưởng tượng chúng ta có 11111 ở đây, và chúng tôi đang tổng hợp này với 00100 bất cứ điều gì.
Nếu hai là tích cực, đó là tốt.
Nhưng sau đó nếu một trong họ là tiêu cực, như
hãy nói rằng bit này ở đây là một trong đó là trách nhiệm
for-- tôi sẽ làm cho một separate-- vì vậy một điều này có nghĩa rằng con số này ở đây
là tích cực.
Điều này có nghĩa rằng đây số ở đây là tiêu cực, phải không?
>> Nhưng sau đó khi bạn đang sẽ tổng hợp, bạn
cần một tuyên bố nếu nói oh nếu điều này là 0,
sau đó tổng hợp của tôi sẽ được một cái gì đó khác nhau, phải không?
Vì vậy, có một chút thông minh hơn cách để làm
rằng, được gọi là hai của bổ sung.
Vì vậy, về cơ bản những gì chúng tôi làm là chúng ta xác định trừ đi 1
là điều mà nếu chúng ta thêm lên đến 1 cho chúng ta 0.
Hãy để tôi lặp lại điều đó.
Vì vậy, hãy nói rằng điều này ở đây là 1.
Điều này là những gì mà tự nhiên trong các số nguyên dương
thêm vào đó cho chúng ta 0?
Nếu chúng ta cố gắng thêm nó vào con số này?
Chúng tôi sẽ have-- OK, vì vậy chúng ta hãy thêm.
Chúng ta sẽ có 1 cộng với 1 là 0, và sau đó nó mang lại.
Và sau đó chúng ta sẽ nhận được 0 một lần nữa.
Tôi nhận được bối rối.
Và bạn sẽ nhận được 0 và 0 và 0 và 0 và 0 và 0.
Rất nhiều 0 của.
>> Tại một trong những cuối cùng, chúng tôi không sẽ có thể thực hiện nó trên,
bởi vì chúng ta nói rằng chúng ta chỉ giao dịch với một byte, do đó chỉ có 8 bit.
Vì vậy, những gì các máy tính không theo mặc định chỉ là quên về điều đó [không nghe được],
OK?
Vì vậy, đây là những gì được gọi là của hai bổ sung.
Chúng tôi chỉ đơn giản là xác định trừ đi 1 là điều ở đây là nếu bạn thêm rằng đến 1
sẽ cung cấp cho bạn 0.
Và đó là khá mát mẻ bởi vì chúng tôi không thực sự
cần trễ để thực hiện một loại khác nhau của tổng
tùy thuộc vào việc đó là một tiêu cực hoặc một số dương.
Điều đó có ý nghĩa?
>> Vì vậy, có một điều mà chúng tôi làm ở đây để chuyển đổi
giữa tích cực và tiêu cực số nguyên sau đó chúng tôi bật tất cả mọi thứ,
và sau đó chúng tôi thêm 1 đến số đó.
Nếu bạn cố gắng làm điều đó cho mình trên một mảnh giấy,
bạn sẽ thấy có ý nghĩa.
Nhưng nếu tôi lấy con số này ở đây, đây là năm.
Vì vậy, nếu tôi lật tất cả mọi thứ ở đây, do đó, 1, 1, 1, 1, 1.
Lật, lật, lật.
Và sau đó tôi thêm 1 đến nó.
Tôi sẽ có chính xác trừ 5.
OK?
>> Điều này loại có ý nghĩa bởi vì nếu bạn cố gắng để tổng hợp này với số lượng
rằng chúng tôi đã có trước đó, was-- chúng ta hãy lật này một lần nữa.
Đó là 101 và rất nhiều số 0.
Nếu bạn cố gắng thêm những hai số với nhau,
bạn sẽ có chính xác 0.
OK.
Bất kỳ câu hỏi?
>> Đung [không nghe được]
>> GABRIEL: bạn có ý nghĩa gì?
>> Đung xấu đến tích cực [không nghe được].
>> GABRIEL: Không, bạn lật và bạn thêm 1 luôn.
Yeah.
OK, vì vậy nhân vật cũng được mã hóa tập tin nhị phân.
Chúng tôi có bảng mã ASCII, như bạn cũng đã thấy trong bài giảng, phải không?
Vì vậy, nó là cơ bản một bản đồ của sự vật.
Và ở đây tôi không thể nhấn mạnh đủ rằng đối với một máy tính, một và 65
nghĩa là cùng một điều.
Vì vậy, nếu tôi viết một cái gì đó giống như char c tương đương với một, tôi có thể cùng một lúc
chỉ cần viết 65 ở đây, và nó sẽ là giống hệt nhau, OK?
Không có khác biệt gì.
>> Chúng ta thường có xu hướng đặt nhân vật trong biến kiểu.
Char, không phải vì họ yếu làm cho điều đó, nhưng vì
quy ước của con người.
Nhưng bạn chỉ có thể đối phó với số nguyên thay vì các biến kiểu char,
và bạn sẽ bị phạt.
Sự khác biệt thực tế chỉ giữa một char c và một int i
là một int có bốn byte trong hầu hết các hệ thống, trong khi một char có một byte.
Họ cơ bản điều tương tự về dữ liệu.
Vì vậy, những gì sẽ in ở đây?
Ở đây chúng ta đang in một chữ số sử dụng printf với một cộng 1, và cũng giống như số nguyên,
ký tự có thể được tóm tắt, vì vậy nhân vật cũng có thể được tóm tắt.
Vì vậy, đây chính xác là 65.
Vì vậy, sẽ là 66, và ở đây chúng tôi có
65 cộng với một chút trừ lớn A, mà sẽ được, tôi thực sự không biết.
Nhưng nó sẽ được chính xác khoảng cách giữa các chữ cái vốn
và và các chữ cái nhỏ hơn, do chúng ta sẽ có được một nhỏ, phải không?
Yeah.
Vì vậy, điều này sẽ in một nhân vật mà là chính xác này.
Tốt?
Bất kỳ câu hỏi?
>> Ở đây chúng ta có một loạt các khác nhau loại cho các biến số.
Chúng tôi đã nói về int.
Float chỉ là một cách đối với: điều này thực sự là buồn cười, bởi vì khi tôi lần đầu tiên học
để chương trình trở lại trong ngày với Python, chương trình đầu tiên tôi
cố gắng để viết, tôi thấy rằng có một loại gọi và một loại được gọi là phao.
Và phao là cho tất cả các số thực.
Vì vậy, sau đó tôi hỏi lý do tại sao nên Tôi đã từng sử dụng một int sau đó?
Bởi vì nếu tôi có thể sử dụng tất cả số thực với một phao,
Tôi chỉ muốn ngừng sử dụng ints, phải không?
Bởi vì con số thực sự là giống như chung chung hơn.
>> Nó chỉ ra rằng đây là không phải là trường hợp trong máy tính
bởi vì họ chủ yếu những thứ khác nhau.
Vì vậy, số nguyên và phao nổi, các hoạt động mà bạn làm cho họ
về cơ bản là khác nhau, vì cách mà chúng được lưu trữ, OK?
Chúng ta sẽ nói một chút bit thêm về điều đó trong một giây.
>> Vì vậy, đôi chỉ là một phao lớn hơn.
Thông thường trong hầu hết các hệ thống, một phao là bốn byte, giống như một int.
Và một đôi là tám byte.
Một lâu dài thực sự chỉ là một biểu tượng mà bạn nối thêm vào một loại như int.
Bạn nói dài dài int như thế này.
Lâu dài int x để làm cho nó lâu hơn.
Vì vậy, trong hầu hết các hệ thống, mà sẽ cung cấp tám byte thay vì thông thường bốn.
Và bạn thực sự có thể thả trong, vì vậy nó chỉ có thể nói dài dài,
và rằng hoạt động quá, OK?
Bạn cũng có thể làm những việc khác như unsigned int, hoặc một lần nữa chỉ unsigned
cũng sẽ làm việc.
Và điều đó sẽ làm cho x là một biến như tất cả mọi thứ là tích cực,
vì vậy bạn có thể không thực sự có tiêu cực số theo cách mà chúng ta đã thấy ở đây.
Vì vậy, sau đây tuyệt vời điểm và độ chính xác nổi.
Đó là một trong những lý do tại sao bạn muốn sử dụng ints thay vì nổi,
vì ints là 100% chính xác, phải không?
Đó là chính xác những con số đó.
Đối với các điểm nổi, nếu bạn nói câu trả lời bằng 1 trên 10--
Tôi xảy ra để có này chính xác chương trình tại đây, float.c.
Đó in đến 20 chữ số thập phân.
1 chia cho 10, và thường là 0.1, phải không?
Nhưng ở đây nếu chúng ta làm nổi và sau đó chúng tôi chạy nó,
chúng ta thấy rằng nó không chính xác 0.1.
Đó là 0,149 một cái gì đó.
>> Và tại sao vậy?
Bởi vì bạn có thể không thực sự đại diện cho tất cả đơn số thực thể trong bộ nhớ
bởi vì có uncountably nhiều trong số họ.
Vì vậy, chúng tôi về mặt kỹ thuật chỉ có thể đại diện cho một số lượng hữu hạn của chúng
với một số lượng hữu hạn của dữ liệu.
Nhưng nó thực sự thú vị.
Bây giờ điều này đặt ra câu hỏi làm thế nào bạn sẽ
đi về đại diện này với bit, phải không?
Vì vậy, làm thế nào nổi được lưu trữ?
Với số nguyên đó là dễ dàng.
Nhưng với phao bạn muốn để tối đa hóa phạm vi,
và bạn muốn để có thể đại diện số lượng lớn và số lượng rất nhỏ như
0.000001 cùng một lúc.
Vì vậy, một lần nữa, cùng một game.
Có ai có bất kỳ ý tưởng làm thế nào chúng ta có thể đi về đại diện cho float trong bộ nhớ?
Chỉ cần ném bất cứ điều gì.
Vâng, xin vui lòng.
>> Đung [không nghe được] như nếu nó là hai ints và một
là [không nghe được] và một con tất cả mọi thứ sau dấu thập phân.
GABRIEL: OK, mát mẻ.
Vì vậy, hai số nguyên khác nhau.
Bạn có thể có 12.45, vì vậy đó là 12 và 45.
Nice.
ERE gì bạn sẽ nói gì?
Điều tương tự?
Yeah?
>> Đung [không nghe được] ký hiệu nơi bạn tách biệt các cơ sở.
>> GABRIEL: ký hiệu khoa học, yeah đó là thường những gì xảy ra.
Vì vậy, đây là những gì được gọi là mantissa.
Đó là những gì thực sự là số, và sau đó là số mũ
chỉ là nơi các dấu phẩy, phải không?
Vì vậy, đây sẽ là một cái gì đó của mẫu 1, 2, 3, 4, 5 lần 10
đến 4 trừ.
Tôi chỉ nhận ra that-- yeah, chính xác.
Và sau đó 10 này để trừ đi 4 sẽ xác định nơi các dấu phẩy là, OK?
Ở Brazil chúng tôi sử dụng dấu phẩy.
Ở đây các bạn sử dụng một dấu chấm.
Vì vậy, một dấu chấm.
>> Và đây là mát mẻ, bởi vì sau đó bạn có thể tập trung rất nhiều bit của bạn về anh chàng này
ở đây, trên mantissa, và sau đó đó là sẽ được chính xác thực tế của bạn.
Và bạn có thể làm điều này bằng trong hệ thập phân hoặc trong các hệ thống dựa trên nhị phân.
Có khác nhau cách để thực hiện điều này.
Câu hỏi?
Có?
ĐỐI TƯỢNG: Làm thế nào nhiều nơi sau khi các số thập phân [không nghe được]?
>> GABRIEL: Đó là một câu hỏi phức tạp, bởi vì nó chính xác không bao giờ thực sự 100%,
bởi vì như bạn thấy ở đây, cho một số con số đó là chính xác 100%.
Tôi tin rằng nếu chúng ta đưa 0,5 ở đây, nó sẽ được chính xác 100%.
Nó sẽ là 0,500000.
Vì vậy, trong trường hợp đó, nó hoàn hảo.
Nhưng trong trường hợp khác, nó ít nhiều hoàn hảo.
Theo kinh nghiệm của tôi, giống như lên đến bốn, năm chữ số thập phân là khá chính xác.
Nếu bạn sử dụng một đôi, nó sẽ là cách chính xác hơn đó, OK?
>> ROB Bowden: Như vậy chỉ cần ném một số bối cảnh nhiều hơn tại phao,
Tôi không bao giờ nhớ 100% như thế nào spec của phao thực sự hoạt động,
nhưng tôi làm bạn luôn luôn nhớ mà nổi bắt đầu nhận được lộn xộn.
Vì vậy, ý tưởng là khi bạn nhận được thực sự, thực sự số lượng lớn hay thực sự, thực sự
số lượng nhỏ, chúng tôi bắt đầu tồi tệ hơn và tồi tệ hơn
tại sự khác biệt giữa hai phao gần.
>> Vì vậy, làm thế nào tôi muốn nghĩ về nó là với dấu chấm động không chính xác,
có hai phao mà nếu tôi cố gắng để xác định chúng
trong C, mặc dù thực tế chúng là các số khác nhau,
họ sẽ được hiểu là cùng một số,
bởi vì chúng ta không thể lưu trữ chúng khác nhau.
Chúng tôi cần phải sử dụng các bit cùng.
Và như vậy khi chúng tôi nhận được thực sự, con số thực sự lớn,
nói chuyện như 10 đến 300 hoặc một cái gì đó, đó là tại thời điểm đó
rằng 10 đến 300 hoặc 5 lần từ 10 đến 300
không thể phân biệt từ 7 giờ 10 đến 300.
Vì vậy, đó là một sự khác biệt khá lớn giữa hai con số.
>> Nhưng sau đó khi bạn nhận được xuống để những điều bình thường,
bạn có xu hướng được khá tốt tại khác biệt.
Và sau đó khi bạn nhận được xuống thực sự nhỏ, bạn cũng nhận được khá xấu một lần nữa.
Vì vậy, như một bó toàn bộ 0.0000, nó được khá xấu.
GABRIEL: Yeah, do đó, một lưu ý nhanh chóng.
Không bao giờ làm điều này.
Không bao giờ cố gắng để so sánh Nổi sử dụng bình đẳng bằng từ,
bởi vì ngay cả khi họ gần như cùng, gần như giống nhau là không giống nhau.
Vì vậy, những gì bạn thường làm là bạn trừ đi họ, lấy giá trị tuyệt đối đó,
và xem nếu đó là nhỏ hơn 0,0001 hay như thế, OK?
Và mát mẻ.
Tôi biết rất nhiều người có một số nền trong Java,
đặc biệt là những người đã làm Khoa học máy tính AP, phải không?
Và Java là một ngôn ngữ mà chủ yếu dựa trên C,
nó đã có một vài sự khác biệt rất lớn.
Nhưng đối với các vòng lặp, và IFS, và các công cụ như rằng, họ đang tất cả các cú pháp tương tự.
Tôi có một vài chương trình ở đây để hiển thị này.
>> Vì vậy, ví dụ, một thế giới hello đơn giản.
Đây là hello world trong C, mà bạn kẻ chắc chắn quen thuộc với,
và điều này và điều này là một trong Java.
Vì vậy, trong Java chúng tôi có điều này public class, xin chào thế giới,
và public static void args chính, và chuỗi.
Các args chuỗi sẽ xuất hiện trong C rất sớm.
Nhưng chúng ta không đi đến đó được nêu ra.
Ngay bây giờ chúng tôi có khoảng trống ở đây, có nghĩa là chính mà không cần đối số.
Và sau đó chúng tôi có System.out.println, và đó là
loại tương đương với printf.
Ở đây chúng ta không thực sự cần các dấu gạch chéo ngược n vì in ln nào đó cho bạn.
Nó gắn thêm dấu gạch chéo ngược n ở cuối dòng.
>> Nhưng nếu bạn đi vào một cái gì đó giống như một kiếm, bạn
có thể thấy rằng họ khá nhiều điều tương tự.
Vì vậy, khởi tạo, và điều kiện, và cập nhật
is-- tôi bị mất một không gian here-- họ khá nhiều điều tương tự, ngoại trừ Java
có như một vài công cụ cấp cao.
Ở đây chúng ta có thể làm cộng với tôi và Java sẽ tự động
làm cho tôi ở đây, đó là một số nguyên, thành một chuỗi,
và sau đó nối thêm hai chuỗi với nhau.
Ở đây trong C chúng ta cần phải làm và% d.
Dòng ở đây, cho trông giống hệt nhau.
>> Và nếu chúng ta nhìn vào khi, các IFS cũng trông giống hệt nhau, phải không?
Vì vậy, sự khác biệt lớn thực sự là trong những điều mà bạn thấy ở đây.
Tĩnh công cộng, bãi bỏ, và sau đó public class nếu.
Vì vậy, Java có là gì được gọi là một máy ảo.
Và nó được rất nhiều dựa trên những gì được gọi là trình hướng đối tượng,
mà là một rất, rất phổ biến mô hình cho chương trình hiện nay.
Và điều lớp này là những gì bạn thấy, một cái gì đó từ hướng đối tượng,
là bạn tạo một lớp và sau đó bạn có thể lấy được các đối tượng từ lớp đó.
Chúng tôi sẽ không nói quá nhiều về điều đó trong CS50,
nhưng đó là chắc chắn một cái gì đó thực sự mát mẻ,
đặc biệt là nếu bạn muốn đi vào phát triển web phức tạp hơn
vào cuối khóa học, như trình dự án cuối cùng của bạn
và một số khung đẹp và các công cụ.
>> Vì vậy, về cơ bản ý tưởng là bạn không muốn tái thực hiện một cái gì đó,
do đó, bạn tạo ra một cái gì đó rất chung chung, giống như hình dạng,
và sau đó bạn tạo ra hình dạng khác nhau từ nó,
và sau đó từ mỗi các hình dạng này, bạn tạo
một số hình dạng cụ thể hơn trong ba kích thước hoặc một cái gì đó như thế.
Và họ có hệ thống phân cấp này họ kế thừa từ những người khác, vì vậy
tất cả các chức năng và tất cả các biến hình dạng lớn ở đây có, tất cả các
sẽ có, và tất cả trong số này là sẽ có, và vv và vv.
Vì vậy, đó là ý tưởng cơ bản.
>> C không có điều đó, nhưng C ++ không có loại tính năng.
Và Java được ảnh hưởng nặng nề bởi định hướng đối tượng,
vì vậy đó là lý do tại sao bạn thấy lớp học ở đây tất cả các thời gian.
Và một điều nữa là máy ảo Java này.
Vì vậy, tôi nghĩ, là một ý tưởng rất thông minh.
Vì vậy, những gì các folks người java phát minh đã làm là
họ không muốn biên dịch mã của họ hai lần
nếu họ có để chạy nó trong Windows, hoặc một máy Mac, hoặc Linux, vì vậy những gì họ làm
được họ theo nghĩa đen chạy một cái gì đó giống như thiết bị,
nhưng bạn không thực sự nhìn thấy nó xảy ra.
Vì vậy, họ chạy một máy ảo bên trong máy tính của bạn,
về cơ bản là giống như một hệ điều hành mini.
Và điều hành Mục đích của hệ thống trong cuộc sống
chỉ là để chạy những gì được gọi là mã byte.
>> Vì vậy, thay vì trong C, cách chúng ta sẽ biên dịch này là thực hiện nếu, và sau đó chạy
./if.
Tôi quên dấu chéo ngược trong.
Trong Java, bạn sẽ làm gì đầu tiên Java C để biên dịch nó, if.c.
Nó không phải của C. Nó chấm java.
Và sau đó bạn phải chạy không ./.
Bạn nhận được tập tin này mới if.class, nhưng bạn có thể không thực sự
chạy if.class bây giờ chỉ như chúng tôi đã làm trước đây.
Đây không phải là một thực thi.
Bạn phải chạy.
Bạn có để nuôi nó thành một chương trình được gọi là Java,
và chương trình đó là các máy ảo, và sau đó bạn làm if.class, hoặc nếu.
Vâng.
Và sau đó nó hoạt động.
OK vì vậy đây là loại của máy ảo xảy ra.
C không có điều đó, vì vậy nếu tôi được đưa chương trình này vào một máy tính Windows,
nó sẽ không làm việc trong C. Trong Java nó.
Câu hỏi?
Cool.
Đó là nếu cho siêu phần cho ngày hôm nay.