None (2) Flashcards

1
Q

Được rồi. Đây là CS50, và đây là tuần thứ 2, trong đó chúng ta sẽ xem xét cách mọi thứ hoạt động ở cấp độ thấp hơn,
1:20
và thực sự, trong số các mục tiêu của khóa học là sự hiểu biết từ dưới lên này để trong thời gian vài tuần, thậm chí vài năm,
1:26
khi bạn gặp một số công nghệ mới, hy vọng bạn sẽ có thể nghĩ lại về một số thứ trong tuần này và đây là các khối xây dựng cơ bản và nguyên thủy
1:33
và thực sự chỉ cần suy luận về cách các công nghệ của ngày mai hoạt động.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

ciphertext : Đó là kết quả của việc mã hóa một số thông tin.
plaintext : bản rõ
ciphertext : bản mã

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

assembler output : a.out : đầu ra của trình biên dịch

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

đối số dòng lệnh : -o A, đầu vào cho lệnh
the name of variable
đối số của hàm

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Đối số dòng lệnh, không giống như đối số của hàm, chỉ là một từ bổ sung hoặc cụm từ khóa mà bạn gõ sau một lệnh tại dấu nhắc của bạn trong cửa sổ thiết bị đầu cuối của bạn chỉ sửa đổi hành vi của lệnh đó.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Và bạn sẽ chỉ biết điều này khi đọc sách hướng dẫn, tham gia một lớp học, có nghĩa là đầu ra.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Và đây cũng là một chi tiết mà bạn phải tra cứu trên một trang web, đọc hướng dẫn, nghe ai đó như tôi nói với bạn về nó. Và trên thực tế, còn có nhiều hơn những lựa chọn này, nhưng chúng ta sẽ chỉ làm trầy xước bề mặt ở đây.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

bạn thấy trong vài tuần tới có thể không đến từ make, họ đến từ Clang bên dưới mui xe bởi vì make chỉ là quá trình tự động hóa.

A

Học hiểu những cái bên dưới make giúp mình hiểu bất kỳ lỗi nào đang xảy ra.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Tuy nhiên, nếu bạn thích và bạn muốn được kiểm soát nhiều hơn, bạn hoàn toàn có thể chạy Clang thủ công nếu bạn nhớ các đối số dòng lệnh khác nhau

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Make không chỉ dành cho CS50. Nó được sử dụng trên toàn cầu trong bất kỳ dự án nào thực sự hiện nay sử dụng C, C++, thậm chí cả các ngôn ngữ khác.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

header file : để dạy cho trình biên dịch biết rằng các hàm tồn tại

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

bánh xe đào tạo : sẽ dần dần bị loại bỏ

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Và ngay cả những lệnh đó, chúng tôi sẽ dần dần loại bỏ các bánh xe huấn luyện để chính xác những gì các lệnh đó cũng đang thực hiện.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Make không chỉ dành cho CS50. Nó được sử dụng trên toàn cầu trong bất kỳ dự án nào thực sự hiện nay sử dụng C, C++, thậm chí cả các ngôn ngữ khác. Trên thực tế, hầu hết mọi lệnh bạn thấy trong lớp này, trừ khi nó có tỷ số 5-0 ở cuối, được sử dụng trên toàn cầu.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

nhưng vấn đề là mặc dù điều này thực sự tồn tại,
14:39
dạy Clang rằng get_string tồn tại, nó không đủ thông tin để Clang tìm kiếm trên ổ cứng của máy tính
14:47
số 0 và 1 thực sự tự triển khai get_string.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

header file nó thể hiện là các mã 0 và 1 trong quá khứ của các file header file sẽ được thêm vào trong mã máy của chương trình cuối

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

preprocessing
compiling
assembling
linking

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Và đây không phải là những thuật ngữ mà bạn sẽ phải ghi nhớ liên tục bởi vì một lần nữa, chúng ta sẽ trừu tượng hóa rất nhiều điều này.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Preprocessing (Tiền xử lý)

string get_string(string prompt); : nguyên mẫu chức năng

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Preprocessing chưa dịch sang nhị phân mà sao chép và dán tất cả các khai báo
hàm trong file .h

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

chỉ thị tiền xử lý : dấu thăng

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

./
../
../../
nên được hiểu như là một thư mục

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

dấu <> thể hiện vị trí thư mục ở thư mục include
dấu “” thể hiện vị trí thư mục ở thư mục hiện tại

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Nó sẽ tìm kiếm bất kỳ dòng nào bắt đầu bằng hàm băm. Và nếu nó thấy điều đó, về cơ bản nó sẽ đi vào tệp đó, như cs50.h, sau đó chỉ cần sao chép và dán nội dung của tệp đó kỳ diệu ở đó cho bạn.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Vì vậy, bạn có thể nghĩ về những dòng include này như là trình giữ chỗ tạm thời cho những gì sẽ trở thành một công cụ tìm và thay thế toàn cầu.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Đó là điều đầu tiên clang sẽ làm là xử lý trước tệp này. Nó sẽ tìm kiếm bất kỳ dòng nào bắt đầu bằng hàm băm.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Vì vậy, bạn có thể nghĩ rằng những dòng bao gồm này chỉ là một loại kết hợp tất cả của các khai báo hàm đó trong một số tệp riêng biệt có tên là cs50.h, để bạn không phải gõ chúng mỗi khi bạn sử dụng thư viện–hoặc tệ hơn, để bạn, chính bạn, không phải sao chép và dán những dòng đó.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

.h là viết tắt của file header

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Vì vậy, bạn có thể nghĩ rằng những dòng bao gồm này chỉ là một loại kết hợp tất cả
23:07
của các khai báo hàm đó trong một số tệp riêng biệt gọi là cs50.h
Vì vậy, dấu chấm, dấu chấm, dấu chấm có nghĩa là một số biến

A
30
Q

mặc dù có nhiều dòng mã hơn trong cs50.h và stdio.h, nhưng điều thực sự đang xảy ra là tiếng kêu đó, trong quá trình tiền xử lý
24:21
tệp, sao chép và dán nội dung của các tệp đó vào mã của bạn để bây giờ mã của bạn biết về mọi thứ– getString, printf,
24:29
và bất cứ điều gì khác.

A
31
Q

Câu hỏi hay. Khi bạn bao gồm một tệp, nó chỉ bao gồm những gì bạn cần hay nó bao gồm mọi thứ?
24:54
Hãy nghĩ về nó như bao gồm tất cả mọi thứ.

A
32
Q

Compiling (Biên dịch)

Được rồi, vì vậy bước hai của quá trình biên dịch, gây nhầm lẫn, được gọi là biên dịch.
25:22
Chỉ là, đây là thuật ngữ mà hầu hết mọi người sử dụng để mô tả toàn bộ quá trình, thay vì chỉ một bước này.

A
33
Q

Compiling chuyển mã của mình từ mã C sang mã hợp ngữ

A
34
Q

clang đơn giản chỉ là chuyển file của mình hiện đang viết bằng mã c sang vẫn là file của mình nhưng được viết bằng hợp ngữ
nên file mã c của mình có gì thì file sau compiling có cái đó chỉ đơn giản là được viết bằng hợp ngữ

A
35
Q

Và lý tưởng nhất là những người như bạn và tôi có xu hướng kéo và thả các mảnh ghép
27:44
đó là loại trừu tượng tất cả những điều đó đi xa hơn.

A
36
Q

Và bây giờ– và đây là lúc mọi thứ trông hơi ma quái. Đây là những gì xảy ra khi clang, hoặc bất kỳ trình biên dịch nào,
26:00
nghĩa đen biên dịch mã như thế này. Nó chuyển đổi nó từ cái này trong C thành cái này trong mã hợp ngữ.

A
37
Q

26:14Nếu bạn tham gia một lớp tiếp theo về khoa học máy tính, trong các hệ thống, một lớp cấp cao hơn, bạn thực sự có thể học điều này hoặc một số biến thể của nó.

A
38
Q

27:23Vì vậy, thực sự, các phép toán cấp thấp mà máy tính hiểu được có xu hướng là các phép toán số học– phép trừ, phép cộng,
27:31
và những thứ tương tự– di chuyển mọi thứ vào và ra khỏi bộ nhớ. Đối với những người như chúng tôi, việc viết mã như thế này sẽ tẻ nhạt hơn rất nhiều.

A
39
Q

27:57Vì vậy, chúng tôi có hai bước để đi. Vì vậy, khi trình biên dịch chuyển sang bước ba,
28:02
đây là nơi mọi thứ được chuyển đổi thành mã máy.

Assembling (Lắp ráp)

Assembling là nơi mọi thứ được chuyển đổi thành mã máy. Assembling chuyển đổi những mã hợp ngữ ở trên sang mã máy

Biên dịch sang mã máy đối với dòng mã của mình hay là phần int main(void)

28:02đây là nơi mọi thứ được chuyển đổi thành mã máy. Và khi trình biên dịch lắp ráp mã của bạn cho bạn,
28:08
nó chuyển đổi những gì chúng ta vừa thấy trên màn hình ở đây thành số 0 và số 1

28:14Nhưng điều đáng chú ý là đây không nhất thiết phải là tất cả
28:22
của số không và số một trong chương trình của bạn. Vâng, chúng là số không và số một tương ứng với chương trình Xin chào của bạn
28:29
hoặc printf và getString và những thứ tương tự, nhưng lưu ý rằng ở đây, chúng ta cần một bước cuối cùng.

A
40
Q

Vì vậy, khi trình biên dịch chuyển sang bước ba, đây là nơi mọi thứ được chuyển đổi thành mã máy.

A
41
Q

Linking

Nhưng còn những dòng mã của CS50 mà chúng tôi đã viết để triển khai getString thì sao?
28:43
Còn những dòng mã mà con người đã viết cách đây hàng chục năm để triển khai printf thì sao? Chúng ở đâu đó trên ổ cứng này, như trên máy Mac, PC của tôi,
28:50
hoặc ở đâu đó trên đám mây, nhưng chúng tôi cần kết hợp tất cả các số không và số đó lại với nhau và liên kết mã của tôi với mã của CS50 với mã của I/O tiêu chuẩn,
29:01
tất cả cùng nhau.

A
42
Q

Linking đơn giản là kết nối các file 1 0 cần thiết để tạo ra chương trình thực thi cuối cùng

A
43
Q

Hàm băm đó bao gồm dòng cs50.h ở đầu mã của tôi.
31:57
Nếu tôi chỉ thay thế nó bằng nội dung của cs50.c, nó có hoạt động không? Câu trả lời ngắn gọn, vâng, điều đó sẽ hiệu quả.
32:03
Bạn có thể sao chép tất cả các mã ở đó. Tuy nhiên, có một số thứ tự hoạt động có thể phát huy tác dụng. Và do đó, nó có thể không đơn giản như sao chép, dán.
32:10
Nhưng về mặt khái niệm, vâng, đó là những gì đang xảy ra. Như đã nói, trong cs50.h, chỉ là nguyên mẫu của các chức năng,
32:19
các gợi ý về hình thức của các hàm, kiểu trả về của chúng là gì, tên của chúng là gì và đối số của chúng là gì.
32:25
Trong tệp dot c, mã thực tế có xu hướng được viết. Và điều này bây giờ hơi khó hiểu vì bạn và tôi chỉ có
32:32
mã được viết trong tệp dot c. Nhưng trong vài tuần tới, bạn sẽ thực sự bắt đầu viết một số tệp dot h của riêng mình
32:37
đồng thời, giống như CS50, giống như I/O tiêu chuẩn. Nhưng về bản chất, dòng mã đó chỉ giúp sử dụng và tái sử dụng dễ dàng hơn
32:44
mã đã được viết. Và đó là toàn bộ quan điểm của một thư viện.

A
44
Q

Đó sẽ là một cặp bánh xe đào tạo khác mà chúng tôi sẽ cất cánh trong những tuần tới.

A
45
Q

Câu hỏi hay. Hàm băm đó bao gồm dòng cs50.h ở đầu mã của tôi.
31:57
Nếu tôi chỉ thay thế nó bằng nội dung của cs50.c, nó có hoạt động không? Câu trả lời ngắn gọn, vâng, điều đó sẽ hiệu quả.
32:03
Bạn có thể sao chép tất cả các mã ở đó. Tuy nhiên, có một số thứ tự hoạt động có thể phát huy tác dụng. Và do đó, nó có thể không đơn giản như sao chép, dán.
32:10
Nhưng về mặt khái niệm, vâng, đó là những gì đang xảy ra. Như đã nói, trong cs50.h, chỉ là nguyên mẫu của các chức năng,
32:19
các gợi ý về hình thức của các hàm, kiểu trả về của chúng là gì, tên của chúng là gì và đối số của chúng là gì.
32:25
Trong tệp dot c, mã thực tế có xu hướng được viết. Và điều này bây giờ hơi khó hiểu vì bạn và tôi chỉ có
32:32
mã được viết trong tệp dot c. Nhưng trong vài tuần tới, bạn sẽ thực sự bắt đầu viết một số tệp dot h của riêng mình
32:37
đồng thời, giống như CS50, giống như I/O tiêu chuẩn. Nhưng về bản chất, dòng mã đó chỉ giúp sử dụng và tái sử dụng dễ dàng hơn
32:44
mã đã được viết. Và đó là toàn bộ quan điểm của một thư viện.

A
46
Q

Debugging

Lỗi cú pháp

A
47
Q

step over : bước qua dòng
step in :

A
48
Q

Làm quen với debug50

A
49
Q

rubber duck

A
50
Q

printf
debug50
rubber duck Lần lượt từ trên xuống dưới sử dụng để gỡ lỗi nhưng có lẽ mình sẽ làm quen với debug50 còn đôi khi thì mình dùng rubber duck

A
51
Q

String

A
52
Q

Hi! : 3 byte
DAVID : 5 byte

A
53
Q

array giúp cho thiết kế tốt hơn
score1
score2
score3

A
54
Q

sum / (float) N , trick typecast

A
55
Q

String : array of characters
Nếu string ASCII thì 1 kí tự trong chuỗi sẽ được lưu trữ trong 1 byte còn nếu

A
56
Q

một chuỗi là gì, nếu đây là cách nó được trình bày trong bộ nhớ?
1:36:12
ĐỐI TƯỢNG: Một mảng.

A
57
Q

Literally, it’s just an array of characters. And we didn’t have to know about arrays last week to use strings.
1:36:18
This is where, again, the training wheels are starting to come off.

A
58
Q

Vì vậy, về mặt kỹ thuật, một mảng– hoặc một chuỗi có tên là s thực sự là một biến có tên là s cho phép bạn
1:36:33
để lấy ký tự đầu tiên bằng s[0], nếu bạn muốn

A
59
Q

Nhược điểm của string

A
60
Q

Hiểu bảng bộ nhớ máy tính
bảng bộ nhớ máy tính dùng để biểu thị các giá trị tương tự

A
61
Q

Trong C thì dùng dấu ‘’ để bao kí tự
còn dấu “” để bao chuỗi

A
62
Q

string.h
strlen : string length
ctype.h

A
63
Q

echo $?

A
64
Q

2:19:34 Mật mã là xáo trộn thông tin để nếu bạn có một tin nhắn bí mật để gửi cái gọi là văn bản gốc, bạn có thể chạy nó thông qua một số thuật toán và biến nó thành thứ được gọi là bản mã

A
65
Q

2:19:49 Và chỉ người biết bạn đã sử dụng thuật toán và đầu vào nào bạn đã sử dụng cho thuật toán, về mặt lý thuyết,

A
66
Q

Cryptography: mật mã học
encryption : mã hóa
decryption : giải mã

A
67
Q

thuật toán trong mật mã học gọi là cipher

Vấn đề là không chỉ cần có thuật toán cần phải có một đầu vào cho nó

A
68
Q

Caesar cipher : thuật toán thêm giá trị số vào từng chữ cái

A
69
Q

2:22:33 bởi vì bạn chỉ đảo ngược thuật toán và thay vào đó bạn trừ đi một

A
70
Q

heuristic

A