1 00:00:07,780 --> 00:00:10,540 [Powered by Google Translate] Precendence là làm thế nào chúng ta trả lời câu hỏi, hoạt động những gì chúng ta nên làm gì đầu tiên? 2 00:00:10,540 --> 00:00:14,250 Cho dù giải quyết các phương trình toán học hoặc các dòng phân tích cú pháp của mã máy tính, 3 00:00:14,250 --> 00:00:17,230 có những quy định nghiêm ngặt ưu tiên mà chúng tôi tuân thủ 4 00:00:17,230 --> 00:00:20,270 để tất cả các máy tính và mọi người có thể có được kết quả tương tự. 5 00:00:20,270 --> 00:00:24,710 >> Trước hết, nguyên tắc quan trọng nhất để nhớ, đặc biệt là trong việc kiểm tra lỗi, 6 00:00:24,710 --> 00:00:27,680 là chúng tôi luôn luôn làm việc từ dấu ngoặc đơn trong cùng ra ngoài. 7 00:00:27,680 --> 00:00:31,120 Sử dụng ngoặc thêm có thể là một chiến thuật gỡ lỗi hữu ích, 8 00:00:31,120 --> 00:00:34,640 nhưng nó không phải là tốt thực hành để xả rác mã của bạn với các dấu ngoặc không cần thiết. 9 00:00:34,640 --> 00:00:38,220 Hãy dành thời gian để tìm hiểu quy tắc ưu tiên điều hành cơ bản. 10 00:00:38,220 --> 00:00:42,450 >> Nguyên tắc chung thứ hai là khi các nhà khai thác có priorty bằng, 11 00:00:42,450 --> 00:00:44,820 bạn chỉ đơn giản là giải quyết từ trái sang phải. 12 00:00:44,820 --> 00:00:47,690 Khi giao dịch với toán học đơn giản, chúng tôi bắt đầu với dấu ngoặc đơn, 13 00:00:47,690 --> 00:00:52,110 sau đó làm nhân và chia, và cuối cùng làm phép cộng và phép trừ. 14 00:00:52,110 --> 00:00:54,400 Phép nhân và chia có ưu tiên giống nhau, 15 00:00:54,400 --> 00:00:56,870 bởi vì họ là chủ yếu thực hiện các hoạt động tương tự. 16 00:00:56,870 --> 00:01:00,880 Sau khi phân chia tất cả chỉ đơn giản là nhân nghịch đảo của một giá trị. 17 00:01:00,880 --> 00:01:04,300 Tương tự như vậy, trừ chỉ đơn giản là thêm một giá trị âm. 18 00:01:04,300 --> 00:01:06,150 >> Hãy làm một ví dụ. 19 00:01:14,470 --> 00:01:18,300 Tiếp theo thứ tự ưu tiên, chúng tôi sẽ bắt đầu với các dấu ngoặc đơn. Nine trừ đi 1. 20 00:01:18,300 --> 00:01:23,410 Điều đó sẽ cho chúng ta 8. Sau đó, chúng tôi có thể chuyển sang các bộ phận và nhân. 21 00:01:23,410 --> 00:01:27,450 Chúng tôi sẽ giải quyết từ trái sang phải. Vì vậy, 10 chia cho 2 là 5. 22 00:01:27,450 --> 00:01:31,290 Chúng tôi có 5 lần 8 ở đây, và sẽ cung cấp cho chúng tôi 40. 23 00:01:33,230 --> 00:01:35,410 Sau đó, chúng tôi di chuyển thứ tự tiếp theo ưu tiên. 24 00:01:35,410 --> 00:01:38,730 Vì vậy, chúng tôi đang trái với 3 và 40 trừ đi 1. 25 00:01:42,400 --> 00:01:43,700 Một lần nữa chỉ giải quyết trái sang phải, 26 00:01:43,700 --> 00:01:47,650 bởi vì có bằng ưu tiên giữa cộng và trừ. 27 00:01:47,650 --> 00:01:51,510 Chúng ta có thể nói 3 và 40 là 43, trừ đi 1 là 42. Đó là câu trả lời của chúng tôi. 28 00:01:53,920 --> 00:01:56,730 >> Có 2 loại của các nhà khai thác giảm đi và tăng; 29 00:01:56,730 --> 00:02:01,000 Các hình thức tiền tố, và hình thức hậu tố. 30 00:02:01,000 --> 00:02:06,130 Các hình thức hậu tố, i + +, thường được sử dụng cho các vòng, 31 00:02:06,130 --> 00:02:10,500 điều đó có nghĩa rằng giá trị hiện tại được sử dụng trong biểu thức, và sau đó nó được tăng lên. 32 00:02:10,500 --> 00:02:14,240 Vì vậy, giá trị sẽ khác nhau trong thời gian tới biến được sử dụng. 33 00:02:14,240 --> 00:02:17,910 Mặt khác, việc tăng tiền tố hay giảm có nghĩa là giá trị hiện tại 34 00:02:17,910 --> 00:02:22,760 được tăng lên hoặc giảm đi đầu tiên, và sau đó nó được sử dụng trong biểu thức. 35 00:02:22,760 --> 00:02:25,310 >> Hãy lấy một ví dụ với các số nguyên x. 36 00:02:25,310 --> 00:02:27,220 Chúng tôi sẽ thiết lập nó bằng 5. 37 00:02:27,220 --> 00:02:36,500 Nếu chúng ta sử dụng toán tử hậu tố vào nó và nói x + +, x trên dòng này vẫn còn 5. 38 00:02:36,500 --> 00:02:39,230 Nếu chúng tôi đã in nó ra, chúng ta sẽ nhận được giá trị 5. 39 00:02:39,230 --> 00:02:42,540 Nhưng thực tế x1 về phía trước bằng 6. 40 00:02:42,540 --> 00:02:48,770 Vì vậy, ngay tại đây trên dòng này x là bằng 6, và nếu chúng ta in nó ra, chúng tôi sẽ nhận được giá trị 6. 41 00:02:48,770 --> 00:02:57,380 Bây giờ nếu chúng ta sử dụng các nhà điều hành tiền tố, + + x, x được tăng lên đầu tiên, và sau đó giá trị được sử dụng. 42 00:02:57,380 --> 00:03:00,110 Vì vậy, nó bằng 7 trên dòng này. 43 00:03:00,110 --> 00:03:04,750 Incrementing nhiên 6 7, và nếu chúng tôi đã in ra, chúng tôi sẽ nhận được giá trị 7. 44 00:03:04,750 --> 00:03:09,160 >> Các sắc thái cuối cùng trong precendence rằng chúng tôi sẽ xem xét các chương trình khuyến mại bằng các ký hiệu con trỏ. 45 00:03:09,160 --> 00:03:15,050 Các nhà điều hành dereference, ngôi sao, có ưu tiên hơn các nhà khai thác toán học cơ bản, 46 00:03:15,050 --> 00:03:18,550 nhưng không quá incement hậu tố và các nhà khai thác giảm đi. 47 00:03:18,550 --> 00:03:20,690 Điều này dẫn chúng ta đến ví dụ cuối cùng của chúng tôi. 48 00:03:20,690 --> 00:03:24,500 Chúng ta hãy x số nguyên và thiết lập nó bằng 7. 49 00:03:24,500 --> 00:03:30,540 Chúng tôi cũng sẽ làm cho một y con trỏ và thiết lập nó bằng địa chỉ của x. 50 00:03:30,540 --> 00:03:34,920 Vì vậy, khi chúng tôi dereference y chúng ta nên có giá trị 7. 51 00:03:34,920 --> 00:03:39,380 Bây giờ trong dòng mã này, chúng tôi có một tình huống hơi mơ hồ. 52 00:03:39,380 --> 00:03:44,310 Chúng ta dereferencing y đầu tiên, và sau đó incrementing giá trị 7? 53 00:03:44,310 --> 00:03:48,300 Hay là chúng ta incrementing các con trỏ và sau đó dereferencing nó? 54 00:03:48,300 --> 00:03:52,800 Trong thực tế, bởi vì các nhà điều hành tăng hậu tố có ưu tiên hơn 55 00:03:52,800 --> 00:03:55,370 các nhà điều hành dereference, chúng tôi đang cố gắng để tăng y con trỏ, 56 00:03:55,370 --> 00:03:59,170 trong đó sẽ di chuyển con trỏ bằng cách kích thước byte int. 57 00:03:59,170 --> 00:04:03,040 Về cơ bản cho chúng tôi một địa chỉ ở một số điểm hoàn toàn khác nhau trong bộ nhớ, 58 00:04:03,040 --> 00:04:05,010 và sau đó chúng tôi đang dereferencing nó. 59 00:04:05,010 --> 00:04:07,350 Vì vậy, đây là dòng rất vô nghĩa. 60 00:04:07,350 --> 00:04:10,250 Nếu chúng ta thực sự muốn tăng giá trị của 7 61 00:04:10,250 --> 00:04:14,260 chúng ta sẽ phải đặt các nhà điều hành dereference với y trong dấu ngoặc đơn. 62 00:04:14,260 --> 00:04:17,290 Sau đó, chúng ta có thể tăng nó. 63 00:04:17,290 --> 00:04:21,089 Vì vậy, trong khi chúng tôi sẽ không được incrementing giá trị x với thứ hai đến dòng cuối cùng của mã, 64 00:04:21,089 --> 00:04:23,380 trong dòng cuối cùng của mã, chúng tôi sẽ infact dereference y 65 00:04:23,380 --> 00:04:26,380 để có được giá trị x và thặng dư đó. 66 00:04:26,380 --> 00:04:29,540 Chúng tôi sẽ để lại với giá trị x bằng 8. 67 00:04:31,580 --> 00:04:33,580 >> Dưới đây là danh nhanh chóng trong các quy định precendence mà chúng tôi đã nói chuyện về. 68 00:04:33,580 --> 00:04:37,210 Chúng tôi sẽ bắt đầu với dấu ngoặc đơn trong cùng và làm việc ra ngoài. 69 00:04:37,210 --> 00:04:41,210 Sau đó, chúng tôi di chuyển cho các nhà khai thác hậu tố như i + + hoặc i. 70 00:04:41,210 --> 00:04:45,920 Sau đó, tới đích và địa chỉ của các nhà khai thác như một ngôi sao x hoặc ký hiệu x, 71 00:04:45,920 --> 00:04:50,260 và tiền tố nhà khai thác như + + i - i. 72 00:04:50,260 --> 00:04:54,920 Cuối cùng, chúng tôi làm hoạt động toán học đơn giản như chia, nhân, modulo. 73 00:04:54,920 --> 00:04:58,400 Sau đó, cộng, trừ. 74 00:04:58,400 --> 00:05:02,170 Đó là precendence. Tôi là Jordan Jozwiak, và đây là CS50. 75 00:05:04,160 --> 00:05:10,480 Chúng tôi sẽ tới đích và sử dụng địa chỉ và làm thế nào bạn có cụm từ đó? 76 00:05:12,380 --> 00:05:13,190 Tôi đang thực hiện. Okay.