Sự khác biệt giữa dấu ngoặc nhọn và dấu ngoặc vuông trong Python

Ta nói rằng mảng chứa ba ô và mỗi ô chứa một chuỗi. Bản thân các chuỗi dài 2, 1 và 6 ký tự. Đặt các chuỗi này lại với nhau thành một mảng ô, chúng ta thấy rằng nó chiếm 354 byte trong bộ nhớ – nhiều hơn chúng ta mong đợi đối với ba chuỗi ngắn. Do đó, các mảng ô không hiệu quả về mặt sử dụng bộ nhớ, nhưng miễn là chúng ta không tìm cách lưu trữ quá nhiều dữ liệu, thì sự tiện lợi của một mảng ô vượt xa bộ nhớ bổ sung cần thiết

Có hai cách để chúng ta có thể truy cập dữ liệu trong mảng ô. Một là nơi chúng ta xem các phần tử của nó dưới dạng ô hoặc mảng con của ô. Một cách khác là chúng ta xem các phần tử theo kiểu dữ liệu 'gốc' của chúng - mà trong ví dụ của chúng ta là kiểu dữ liệu chuỗi [i. e. một

mảng]

Ví dụ 5. 11

Ví dụ này minh họa các cách khác nhau để truy cập các phần tử của một mảng ô. Chúng tôi bắt đầu bằng cách đặt ba chuỗi vào một mảng ô được gọi là

được xây dựng bằng cách sử dụng dấu ngoặc nhọn

Sau khi xây dựng mảng, các cách khác nhau để truy cập dữ liệu trong
được minh họa bên dưới.

O5. Đ, O5. F, O5. G

Trong đoạn mã trên, mảng ô được tạo có thể được hiển thị bằng sơ đồ hiển thị trong Hình. 5. 3 . Điều này minh họa một mảng chứa ba ô và mỗi ô chứa, trong trường hợp này, của chính nó

mảng [tôi. e. chuỗi]

Hình 5. 3 . Một minh họa của một mảng ô.

Sau khi tạo mảng ô, biến

được gán giá trị của một ô [ô đầu tiên trong mảng
]. Biến
được gán với một mảng con gồm các ô từ
[thứ hai và thứ ba]. Cả hai biến
được gán bằng cách sử dụng dấu ngoặc tròn mà MATLAB thường sử dụng để truy cập các phần tử mảng. '[' và ']'.

Biến đổi

khác. Lần này, dấu ngoặc nhọn, '{' và '}', được sử dụng để truy cập nội dung của một ô [ô thứ ba] chứ không phải chính ô đó. Vì vậy,
được gán một
mảng [i. e. một chuỗi]. Chúng tôi có thể kiểm tra trạng thái và loại biến của mình bằng cách sử dụng
lệnh.

Lưu ý cách
cả hai mảng ô [có kích thước 1×1and 1×2respectively], whereas
is a string of length 8.

Điều quan trọng là phải rõ ràng về việc sử dụng các loại dấu ngoặc khác nhau [tròn, vuông và xoăn]. Các loại dấu ngoặc khác nhau có thể được sử dụng để thực hiện một trong hai việc

Tạo một mảng

Truy cập một phần tử [hoặc nhiều phần tử] trong mảng

Không phải tất cả các kết hợp đều khả thi. Ví dụ, trong MATLAB chúng ta không thể sử dụng dấu ngoặc vuông để truy cập các phần tử trong mảng, chúng chỉ được sử dụng để xây dựng mảng. Xem Phần 5. 7. 2 để biết thêm chi tiết.

5. 7. 1 Mảng ô có thể chứa các loại dữ liệu hỗn hợp

Ở trên, chúng ta đã thấy mảng ô có thể hữu ích như thế nào để lưu trữ một tập hợp các chuỗi có độ dài khác nhau. Trên thực tế, một mảng ô có thể được xem như một danh sách các vùng chứa được lập chỉ mục và mỗi vùng chứa có thể chứa các biến thuộc bất kỳ loại dữ liệu nào. Ở đây, chúng tôi xác định một mảng ô với hỗn hợp các loại

Chúng ta có thể sử dụng dấu ngoặc nhọn để truy cập các phần tử bên trong mảng ô và sử dụng

chức năng để xác định các loại của họ

Các

mảng ô được minh họa trong Hình. 5. 4 . Sơ đồ cho thấy cách mảng chứa bốn ô, mỗi ô chứa một mảng thuộc một loại khác nhau.

Hình 5. 4 . Một mảng ô chứa các loại hỗn hợp.

Khả năng của một mảng ô chứa hỗn hợp các loại dữ liệu có thể được quan tâm nhưng hiếm khi hữu ích trong thực tế. Mảng ô thường được sử dụng nhất với kiểu dữ liệu thống nhất, i. e. với tất cả các ô chứa dữ liệu cùng loại. Chúng ta đã thấy điều này trong trường hợp mảng ô gồm các chuỗi ở trên

Một ví dụ khác về mảng ô chứa hỗn hợp dữ liệu khác nhau được hiển thị bên dưới

Trong trường hợp này, tất cả dữ liệu đều cùng loại [

], nhưng chúng là hỗn hợp của các giá trị đơn và mảng. Tuy nhiên, chúng ta đã thấy rằng MATLAB coi một giá trị đơn lẻ thực sự là một mảng 1×1 .

5. 7. 2 Các loại giá đỡ khác nhau. Tóm tắt lại

Tóm lại, có lẽ hai thao tác cơ bản nhất liên quan đến một mảng là

Tạo mảng

Truy cập các phần tử trong mảng

Tùy thuộc vào việc chúng ta có mảng ô hay mảng 'tiêu chuẩn' của kiểu dữ liệu cơ bản [e. g

], chúng ta có thể phân biệt các hành vi khác nhau của từng loại dấu ngoặc. vuông, xoăn và tròn

Tạo một mảng

Dấu ngoặc vuông '[ ]'

Tạo một mảng trong đó tất cả các mục có cùng loại, e. g

hoặc
. Ví dụ:

Dấu ngoặc nhọn ‘{ }’.

Tạo một mảng ô. Các ô của nó có thể chứa bất kỳ loại nào. Chúng có thể chứa các mục cùng loại hoặc hỗn hợp các loại. Ví dụ,

Truy cập phần tử

Dấu ngoặc tròn '[ ]'

Chúng có thể được sử dụng để truy cập một hoặc nhiều phần tử từ bất kỳ loại mảng nào. Các phần tử trả về luôn có cùng kiểu với mảng, i. e. đối với một mảng nhân đôi, dấu ngoặc tròn sẽ trả về gấp đôi, đối với một mảng ô, chúng sẽ trả về các ô. Ví dụ: sử dụng các mảng được tạo ở trên

Dấu ngoặc nhọn '{ }'

Khi được sử dụng để truy cập các phần tử, dấu ngoặc nhọn dành riêng cho mảng ô. Chúng có thể được sử dụng để lấy nội dung của một ô trong kiểu dữ liệu gốc của nó, tôi. e. không ở dạng tế bào. Ví dụ,

Hoạt động 5. 6

Kiểm tra đoạn mã sau, xác định một số mảng để lưu trữ dữ liệu bệnh nhân

O5. Đ, O5. F, O5. G

Dự đoán những gì bạn nghĩ đầu ra của mã sẽ được. Nhập mã vào m-file tập lệnh MATLAB, chạy mã đó và kiểm tra xem dự đoán của bạn có đúng không

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B9780128122037000057

Lập trình C cho vi điều khiển PIC 32 bit

Dogan Ibrahim, trong Thiết kế hệ thống nhúng với bộ vi điều khiển PIC 32 bit và MikroC , 2014

câu lệnh while

câu lệnh while là một câu lệnh khác có thể được sử dụng để tạo vòng lặp trong chương trình. Định dạng của tuyên bố này như sau

trong khi [điều kiện]

{

các câu lệnh;

}

Ở đây, vòng lặp được bao quanh bởi dấu ngoặc nhọn sẽ thực thi miễn là điều kiện đã chỉ định ước lượng thành . Lưu ý rằng nếu điều kiện là SAI khi vào vòng lặp, thì vòng lặp sẽ không bao giờ thực thi. Một ví dụ được đưa ra dưới đây trong đó các câu lệnh bên trong vòng lặp while thực thi 10 lần.

tôi = 0;

trong khi [i  A = {'toán';

một =

  'toán học'

  'vật lý học'

  'lịch sử'

  'NÓ'

Chúng ta có thể đề cập đến các thành phần riêng lẻ

>> p = A[2]

p =

  'vật lý học'

>> A[3. 4]

trả lời =

  'lịch sử'

  'NÓ'

Để truy cập nội dung của ô, chúng tôi sử dụng dấu ngoặc nhọn, do đó

>> cont = A{3}

tiếp =

Môn lịch sử

Lưu ý rằng lịch sử không còn trong dấu ngoặc kép và do đó chúng tôi có thể tham chiếu các ký tự riêng lẻ như sau.

>> tiếp[4]

trả lời =

t

Một mảng ô có thể bao gồm cả dữ liệu số và chuỗi và cũng có thể được tạo bằng hàm ô . Ví dụ: để tạo một ô có 2 hàng và 2 cột, chúng ta có

>> F = ô[2,2]

F =

  [ ] [ ]

  [ ] [ ]

Để gán một vô hướng, một mảng hoặc một chuỗi ký tự cho một ô, chúng ta viết

>> F{1,1} = 2;

>> F{1,2} = 'kiểm tra';

>> F{2,1} = one[3];

>> F

F =

  [ 2] 'kiểm tra'

  [3x3 double] [ ]

Cách tạo tương đương F

>> F = {[2] 'kiểm tra';

Vì không xem được nội dung chi tiết của F{2,1} ở phần trước nên chúng tôi sử dụng hàm celldisp thus:

>> celldisp[F]

F{1,1} =

  2

F{2,1} =

  1 1 1

  1 1 1

  1 1 1

F{1,2} =

kiểm tra

F{2,2} =

  [ ]

Mảng ô cho phép chúng ta nhóm dữ liệu có kích thước và kiểu khác nhau lại với nhau dưới dạng một mảng và truy cập các phần tử của nó bằng cách sử dụng các chỉ số con

Dạng dữ liệu cuối cùng mà chúng ta xem xét là cấu trúc, được triển khai trong Matlab bằng cách sử dụng structMatlab . Điều này tương tự như một mảng ô nhưng các ô riêng lẻ được lập chỉ mục theo tên. Một cấu trúc kết hợp một số trường, mỗi trường có thể là một loại khác nhau. Có một tên chung cho trường, ví dụ: Matlab . Điều này tương tự như một mảng ô nhưng các ô riêng lẻ được lập chỉ mục theo tên. Một cấu trúc kết hợp một số trường, mỗi trường có thể là một loại khác nhau. Có một tên chung cho trường, ví dụ: Matlab . Điều này tương tự như một mảng ô nhưng các ô riêng lẻ được lập chỉ mục theo tên. Một cấu trúc kết hợp một số trường, mỗi trường có thể là một loại khác nhau. Có một tên chung cho trường, ví dụ: . This is similar to a cell array but individual cells are indexed by name. A structure combines a number of fields, each of which may be a different type. There is a general name for the field, for example, 'tên' hoặc 'số điện thoại'. Each of these fields can have specific values such as 'George Brown' hoặc '12719'. To illustrate these points consider the following example which sets up a structure called StudentRecords chứa ba trường. NameField , FeesField . .

Lưu ý rằng chúng tôi bắt đầu bằng cách thiết lập thông tin cho ba sinh viên dưới dạng các giá trị cụ thể được giữ trong các mảng ô. Tên, lệ phí và đối tượng

>> name = {'A ​​Best', 'D Good', 'S Green', 'J Jones'}

tên =

  'A Best' 'D Good' 'S Green' 'J Jones'

>> phí = {333 450 200 800}

phí =

  [333] [450] [200] [800]

>> môn học = {'cs','cs','maths','eng'}

môn học =

  'cs' 'cs' 'maths' 'eng'

>> StudentRecords = struct['NameField',names,'FeesField',fees,

  'Trường chủ đề',chủ đề]

Hồ sơ học sinh =

Mảng cấu trúc 1x4 với các trường

  Trường tên

  Trường phí

  Trường chủ đề

Bây giờ, sau khi đã thiết lập cấu trúc của mình, chúng ta có thể tham chiếu đến từng bản ghi riêng lẻ bằng cách sử dụng chỉ số con, do đó

>> Hồ sơ học sinh[1]

trả lời =

  Trường tên. 'Tốt nhất'

  Trường phí. 333

  Trường chủ đề. 'cs'

Hơn nữa, chúng ta có thể kiểm tra nội dung của các thành phần của mỗi bản ghi, do đó

>> Hồ sơ học sinh[1]. TênTrường

trả lời =

một tốt nhất

>> Hồ sơ học sinh[2]. Chủ đề

trả lời =

cs

Chúng ta có thể thay đổi hoặc cập nhật giá trị của các thành phần của bản ghi, do đó

>> Hồ sơ học sinh[3]. Trường phí = 1000;

Bây giờ chúng ta kiểm tra nội dung của FeesField

>> Hồ sơ học sinh[3]. PhíLĩnh Vực

trả lời =

  1000

Matlab cung cấp các hàm cho phép chúng ta chuyển đổi từ cấu trúc dữ liệu này sang cấu trúc dữ liệu khác và một số hàm này được liệt kê tại đây.

  cell2struct

  struct2cell

  num2cell

  str2num

  num2str

  int2str

  gấp đôi

  độc thân

Hầu hết các chuyển đổi này đều dễ hiểu. Ví dụ: num2str chuyển đổi một số có độ chính xác kép thành một chuỗi tương đương. Hàm double chuyển thành độ chính xác kép và các ví dụ về cách sử dụng hàm này được đưa ra trong Chương 10.

Việc sử dụng các ô và cấu trúc thường không cần thiết trong việc phát triển các thuật toán số mặc dù chúng có thể được sử dụng để nâng cao tính dễ sử dụng của thuật toán. Có một ví dụ về việc sử dụng các cấu trúc trong Chương 10 .

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B9780128122563000105

Từ điển và chức năng như đối số

Ryan G. McClarren, trong Kỹ thuật hạt nhân điện toán và khoa học phóng xạ sử dụng Python , 2018

5. 1 từ điển

Trước đây, chúng ta đã học về danh sách dưới dạng một chuỗi các mục mà chúng ta có thể truy cập thông qua vị trí bằng cách sử dụng dấu ngoặc vuông. Có thể có trường hợp chúng tôi không muốn truy cập các mục dựa trên chỉ mục số, thay vào đó chúng tôi muốn truy cập chúng dựa trên tên. Một ví dụ điển hình của điều này có thể là những đứa trẻ trong một gia đình. Bạn có thể có một danh sách những đứa trẻ mà bạn truy cập thông qua thứ tự chúng được sinh ra; . Giải pháp cho vấn đề này trong Python có thể được tìm thấy trong từ điển. Từ điển giống như một danh sách theo nhiều cách, nhưng bạn truy cập nó bằng tên của mục

Về mặt kỹ thuật, từ điển là một bộ khóa. cặp giá trị . Khóa tương tự như chỉ mục của danh sách và trên thực tế là tên của mục. Bạn định nghĩa một từ điển bằng dấu ngoặc nhọn.

Thay vì truy cập từ điển bằng một vị trí, giống như chúng ta đã làm với chuỗi, danh sách và mảng NumPy, chúng ta sử dụng khóa. Điều này rất hữu ích vì sau đó chúng ta không phải nhớ thứ tự đã liệt kê các giá trị trong. Ví dụ: trong các ngày trong tuần ở trên, chúng tôi không phải nhớ cách chúng tôi sắp xếp các ngày [e. g. , thứ hai đầu tiên hoặc chủ nhật đầu tiên]

Ngoài ra, ví dụ trên đã sử dụng toán tử in để cho biết liệu một khóa cụ thể có trong từ điển hay không. Cụ thể, nó cho chúng ta biết rằng "G" không phải là một từ khóa trong từ điển.

Hộp 5. 1 Nguyên tắc Python

Từ điển là một chuỗi các mục được truy cập thông qua tên được gọi là khóa. Các phần tử của từ điển mà khóa đề cập đến được gọi là giá trị. Để định nghĩa một từ điển, chúng tôi sử dụng dấu ngoặc nhọn như trong ví dụ sau

my_dictionary ={key_1. value_1,
                key_2. giá trị_2,. }

Có thể lấy danh sách các khóa trong từ điển thông qua chức năng d. keys[] , trong đó d là tên của một từ điển.

Để biết thêm ví dụ, chúng ta sẽ đọc trong tệp văn bản có các giá trị được phân tách bằng dấu phẩy [thường được gọi là csv], sử dụng mô-đun csv . Tệp văn bản sẽ được sử dụng để cung cấp khóa . cặp giá trị trong từ điển. Định dạng của tệp này là ký hiệu hóa học, tên nguyên tố . Một vài dòng đầu tiên của tệp là

Ac,Actinium
Ag,Bạc
Al,Nhôm
Am,Americium

Đoạn mã sau đọc trong tệp và sử dụng ký hiệu hóa học làm khóa và tên hóa chất làm giá trị. Nó cũng yêu cầu người dùng nhập ký hiệu hóa học và sẽ trả về tên

Từ điển thậm chí có thể trở nên mạnh mẽ hơn nếu chúng ta tạo một từ điển của các từ điển. Vâng, bạn đã đọc dúng điều đó. giá trị trong khóa . cặp giá trị có thể là một từ điển khác. Đối với nhiều ứng dụng, đây là nơi từ điển trở nên rất hữu ích. Trong ví dụ sau, chúng tôi sử dụng ý tưởng về từ điển của từ điển để lưu trữ thông tin bổ sung về các ngày trong tuần.

Lưu ý rằng khi một từ điển được lặp lại trong một vòng lặp for , biến vòng lặp sẽ lấy từng khóa của từ điển. Ngoài ra, thứ tự của các phím không được đảm bảo khớp với thứ tự mà chúng được nhập. Trong vòng lặp trên, các phím không được in ra theo thứ tự từ Thứ Hai đến Chủ Nhật.

Chúng ta có thể sử dụng ý tưởng về từ điển của ý tưởng từ điển để tạo một mã có thể tự động tính toán sự phân rã phóng xạ cho chúng ta. Để làm điều này, tôi sẽ tạo một từ điển trong đó khóa là số nguyên tử [Z] và giá trị sẽ là một từ điển có tên và ký hiệu nguyên tố. Tệp được đọc bên dưới có định dạng Z, Ký hiệu, Tên .

Cho rằng chúng ta có một từ điển nơi chúng ta có thể tra cứu một nguyên tố theo số nguyên tử của nó, chúng ta có thể viết một hàm tính tích phân rã alpha của một hạt nhân cụ thể. Chúng ta sẽ truyền vào hàm số nguyên tử, số khối và từ điển nguyên tố, và nó sẽ trả về số nguyên tử và số khối của sản phẩm, cùng với việc in một số thông tin ra màn hình

Cho rằng hàm trả về số nguyên tử và số khối của sản phẩm, chúng ta có thể chạy alpha_decay trong một vòng lặp.

Ví dụ này không kiểm tra xem một phân rã alpha như vậy có thể xảy ra hay không, tuy nhiên, với một sửa đổi thích hợp đối với từ điển, chúng tôi có thể thêm thông tin về chế độ phân rã cho một hạt nhân cụ thể. Từ điển này sẽ phức tạp hơn nhiều, bởi vì nó có thể yêu cầu một hệ thống phân cấp ba cấp bao gồm một từ điển cấp cao nhất trong đó các khóa là số nguyên tử và các giá trị là một từ điển gồm các từ điển trong đó khóa là số khối và các giá trị là . Việc thiết lập và điền dữ liệu vào nó sẽ rất lộn xộn, nhưng về nguyên tắc là có thể thực hiện được

Một cách sử dụng khác của từ điển là lưu trữ thông tin về các nguyên tố nhiên liệu khác nhau trong lò phản ứng. Chúng ta sẽ xem xét một lò phản ứng có hai loại nhiên liệu, uranium có độ giàu cao [HEU] và uranium có độ giàu thấp [LEU]. Chúng tôi sẽ sử dụng một từ điển để mô tả các thuộc tính của từng loại nhiên liệu. Sau đó, sử dụng thông tin này, chúng tôi vẽ mặt cắt hình học nhiên liệu HEU

Theo cách tương tự, nhiên liệu LEU có thể được hình dung bằng cách sử dụng từ điển

Cho rằng chúng ta có một từ điển mô tả từng loại nhiên liệu, chúng ta có thể định nghĩa một mạng các nguyên tố nhiên liệu. Chúng tôi sẽ tạo ra một mạng nhiên liệu 10 x 10 với 0. Khoảng cách 5 cm giữa các phần tử. Ngoài ra, chúng tôi sẽ tạo mọi phần tử thứ ba HEU và phần còn lại LEU. Mã bên dưới tạo mạng này và sau đó vẽ sơ đồ

Với mạng này, nếu chúng ta biết hình dạng của chế độ cơ bản của dòng vô hướng, chúng ta có thể tính mật độ tốc độ sản xuất neutron phân hạch tại mỗi điểm của lò phản ứng. Chúng ta sẽ giả sử một dạng thông lượng vô hướng đơn giản và nhân thông lượng với giá trị của νΣf , là tích của số neutron phân hạch trung bình được tạo ra, lần . Đoạn mã sau tính toán số lượng này bằng cách đánh giá νΣf ở giữa mỗi phần tử nhiên liệu.

Khi chúng ta giải phương trình khuếch tán cho dòng vô hướng của neutron trong một hệ thống, chúng ta sẽ xem xét lại các kỹ thuật này để tính tốc độ sản xuất neutron phân hạch và các đại lượng khác

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B9780128122532000066

Các ứng dụng của Mobile Agent trong Mạng không dây và Điện toán di động

Sergio González-Valenzuela,. Victor C. M. Leung, trong Những tiến bộ trong máy tính , 2011

3. 4. 3 quy tắc

Wiseman triển khai ba phương pháp để kiểm soát luồng thực thi mã của các MA. Đầu tiên và thường được sử dụng nhất là quy tắc lặp lại R . Quy tắc này được cung cấp dưới dạng một vòng lặp đơn giản và do đó, trình thông dịch sẽ thực thi các mã nằm trong dấu ngoặc nhọn theo chu kỳ. Cuối cùng, các mã bên trong quy tắc lặp lại được sao chép và chèn lại trước toàn bộ cấu trúc [i. e. , R{…} mang lại …;R{…}]. Do đó, các mã trong quy tắc lặp lại thực thi cho đến khi đánh giá điều kiện nhất định không thành công. Ngoài ra, các quy tắc Và/Hoặc kiểm soát luồng thực thi của MA bằng cách xác minh kết quả của các mã được phân tách trong dấu ngoặc vuông. Ví dụ: cấu trúc quy tắc Or O[

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B9780123855121000049

Môi trường lập trình MPIDE và Lập trình trong C

Dogan Ibrahim, trong Bộ vi điều khiển PIC32 và chipKIT kỹ thuật số , 2015

cho báo cáo

Câu lệnh for có lẽ là câu lệnh được sử dụng rộng rãi nhất để tạo vòng lặp trong chương trình. Định dạng chung của tuyên bố này là

Một biến vòng lặp được sử dụng trong vòng lặp for . Biểu thức ban đầu chỉ định giá trị bắt đầu của biến vòng lặp và biến này được so sánh với một số điều kiện bằng cách sử dụng biểu thức điều kiện trước khi vòng lặp bắt đầu. Các câu lệnh nằm trong cặp dấu ngoặc nhọn được thực thi miễn là điều kiện đánh giá là TRUE. Giá trị của bộ đếm vòng lặp được thay đổi [thường tăng thêm 1] ở mỗi lần lặp. Vòng lặp dừng khi điều kiện đánh giá là FALSE.

Một ví dụ được đưa ra dưới đây nơi một vòng lặp được hình thành và bên trong vòng lặp này, các câu lệnh được thực hiện 10 lần

hoặc

Ví dụ 5. 4

Viết đoạn mã chương trình sử dụng câu lệnh for để tính tổng các số nguyên từ 1 đến 10. Lưu trữ kết quả trong một biến số nguyên gọi là Sum

Giải pháp 5. 4

Mã chương trình cần thiết được đưa ra dưới đây

Tất cả các tham số trong vòng lặp for là tùy chọn và có thể bỏ qua nếu cần. Ví dụ: nếu biểu thức điều kiện [biểu thức ở giữa] bị bỏ qua, nó được coi là luôn ĐÚNG. Điều này tạo ra một vòng lặp vô tận. Một ví dụ được đưa ra dưới đây trong đó vòng lặp không bao giờ kết thúc và giá trị của i được tăng thêm 1 ở mỗi lần lặp

Một vòng lặp vô tận cũng có thể được tạo nếu tất cả các tham số bị bỏ qua như trong ví dụ sau

Vòng lặp vô tận được sử dụng thường xuyên trong các chương trình vi điều khiển. Một ví dụ về việc tạo một vòng lặp vô tận bằng cách sử dụng lệnh tiền xử lý và câu lệnh for được đưa ra trong ví dụ sau

Ví dụ 5. 5

Viết đoạn mã chương trình tạo vòng lặp vô tận sử dụng câu lệnh for. Tạo macro có tên DO_FOREVER để thực hiện vòng lặp

Giải pháp 5. 5

Mã chương trình cần thiết được đưa ra dưới đây

Nếu chúng ta bỏ qua tham số thứ hai và thứ ba của vòng lặp for, thì vòng lặp sẽ lặp lại vô tận như trong ví dụ trước, nhưng giá trị của bộ đếm vòng lặp ban đầu không bao giờ thay đổi. Một ví dụ được đưa ra dưới đây trong đó giá trị của i luôn là 0

vòng lặp for có thể được lồng vào nhau sao cho trong vòng lặp hai cấp, vòng lặp bên trong được thực hiện cho mỗi lần lặp của vòng lặp bên ngoài. Các vòng lặp lồng nhau hai cấp thường được sử dụng trong các phép toán ma trận, chẳng hạn như cộng hai ma trận, v.v. Một vòng lặp for lồng nhau hai cấp được đưa ra bên dưới. Trong ví dụ này, các câu lệnh trong vòng lặp bên trong được thực hiện 100 lần

Một ví dụ về vòng lặp lồng nhau để thêm tất cả các phần tử của ma trận 2 × 2 M được đưa ra dưới đây

Ví dụ 5. 6

Viết đoạn mã chương trình sử dụng vòng lặp for để cộng các phần tử của ma trận 2×2 gọi là M

Giải pháp 5. 6

Mã chương trình cần thiết được đưa ra dưới đây

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B9780080999340000053

Cơ bản về lập trình C

Martin P. Bates, trong Lập trình vi điều khiển PIC 8-bit trong C , 2008

Phân tích chương trình

Chương trình chính chỉ chứa một câu lệnh, output_D[255] . Điều này có nghĩa là xuất số 25510 dưới dạng mã nhị phân sang Cổng D của chip, đặt tất cả các chân ở mức cao [rõ ràng, bất kỳ số nào trong khoảng từ 0 đến 255 đều dẫn đến tổ hợp bit đầu ra tương ứng]. Tất cả các câu lệnh được kết thúc bằng dấu chấm phẩy. Câu lệnh này là một lời gọi hàm, có nghĩa là trình biên dịch lấy mã máy cho thao tác này từ tập hợp các hàm dựng sẵn tiêu chuẩn được cung cấp cùng với trình biên dịch. Hàm cụ thể này là một trong một tập hợp các hàm thư viện có dạng output_x[n] , trong đó xx . Dạng tổng quát của hàm C là x . Dạng tổng quát của hàm C là x . Dạng tổng quát của hàm C là is the port number [A–E], and n is the output value [0–255]. The general form of the C function is tên_hàm[]. Mọi thông tin cần thiết cho hàm, [các] tham số hàm, được chèn vào dấu ngoặc đơn.

Chương trình chính bắt đầu với từ khóa void main[] và được đặt giữa dấu ngoặc nhọn . Tất cả các khối chương trình được bao quanh , or braces, as they are officially known. All program blocks are enclosed bằng dấu ngoặc nhọn, cho phép cấu trúc phân cấp đa cấp. Main là một hàm đặc biệt chứa khối chương trình chính, trong đó chứa tất cả các hàm cấp thấp hơn. Chúng có thể trả về kết quả cho hàm gọi, nhưng từ khóa void đứng trước tên hàm main means that this function returns no result, since it is the top-level function.

Chỉ thị tiền xử lý ♯bao gồm “16F877A. h” hướng dẫn trình biên dịch đưa tệp dành riêng cho bộ xử lý này vào đầu chương trình. Nó chứa nhãn cho các thanh ghi trong MCU đã chọn, để trình biên dịch biết nơi lưu trữ các biến điều khiển MCU.

Nhận xét có thể được đặt giữa dấu gạch chéo/dấu sao [/*. */] ký tự điều khiển hoặc có thể theo dấu gạch chéo kép [//], trong trường hợp đó nhận xét bị chấm dứt . Tiêu đề chương trình phải chứa càng nhiều thông tin càng tốt để hỗ trợ người dùng và tạo điều kiện sửa đổi trong tương lai. Lý tưởng nhất là các chú thích dòng mô tả tác dụng của câu lệnh trong hệ thống đích.

Ý nghĩa của chương trình C độc lập với bố cục trên trang. Chỉ có dãy ký tự là quan trọng đối với trình biên dịch. Tuy nhiên, trong thực tế, mã nguồn chương trình nên được sắp xếp sao cho dễ hiểu nhất có thể. Dấu cách hoặc tab có thể được sử dụng để thụt vào từng khối [cấp độ chương trình], và các dấu ngoặc mở và đóng nên được xếp trên cùng một cột để các cặp dấu ngoặc có thể khớp với nhau khi kiểm tra chương trình. Điều này làm cho việc gỡ lỗi và sửa đổi mã nguồn tiếp theo trở nên dễ dàng hơn. Lợi ích của bố cục tốt trở nên rõ ràng hơn sau này, khi các chương trình phức tạp hơn được phát triển

Theo truyền thống, mã nguồn C chủ yếu được viết bằng chữ thường, với chữ hoa được sử dụng cho một số từ khóa nhất định

Đọc thêm Điều hướng xuống

Xem chươngMua sách

Đọc toàn bộ chương

URL. https. //www. sciencedirect. com/khoa học/bài viết/pii/B978075068960100002X

Thêm ứng dụng PIC

Martin Bates, trong Bộ vi điều khiển PIC [Ấn bản thứ ba] , 2011

13. 3. Lập trình 2 PIC C

Đối với những độc giả chưa quen với lập trình C, một ví dụ đơn giản được hiển thị trong Chương trình 13. 3 . Chương trình sẽ cho kết quả giống như BIN1. Chương trình hợp ngữ ASM. Chương trình phải được chuyển đổi thành mã máy 16 bit PIC bằng Trình biên dịch MPLAB C18, được cung cấp dưới dạng tiện ích bổ sung cho hệ thống phát triển. Trình biên dịch này nhận dạng ANSI [Viện Tiêu chuẩn Quốc gia Hoa Kỳ] C, cú pháp tiêu chuẩn cho vi điều khiển. Trình biên dịch C phải được chọn trong hộp thoại chế độ phát triển khi xây dựng ứng dụng.

Chương trình 13. 3 . Một chương trình PIC ‘C’ đơn giản

Các yếu tố chính của chương trình như sau

/∗ bình luận ∗/

Các chú thích trong mã nguồn C được đặt giữa /∗ và ∗/ và có thể chạy trên nhiều dòng. Dấu chấm phẩy được sử dụng trong trình biên dịch chương trình hợp ngữ

#include

'Bao gồm' là một chỉ thị của trình biên dịch gọi tệp tiêu đề có tên 'p18f4580. h', có chức năng giống như tệp bao gồm trong trình biên dịch chương trình hợp ngữ, trong đó nó chứa các nhãn đăng ký được xác định trước cho bộ xử lý cụ thể đó và các địa chỉ tương ứng

truy cập int

Điều này gán nhãn cho một thanh ghi và tuyên bố rằng nó sẽ lưu trữ một số nguyên hoặc số nguyên. Một số nguyên tiêu chuẩn trong C được lưu trữ dưới dạng số 16 bit, yêu cầu hai vị trí thanh ghi mục đích chung [GPR] bộ nhớ truy cập ngẫu nhiên dữ liệu [RAM]. EQU cung cấp hoạt động tương đương trong trình biên dịch chương trình hợp ngữ

khoảng trống chính [khoảng trống]

Cú pháp khá đặc biệt này chỉ đơn giản chỉ ra, theo như chúng ta quan tâm ở đây, điểm bắt đầu của trình tự chương trình chính. Dấu ngoặc nhọn sau [ dấu ngoặc nhọn ] bắt đầu khối chương trình chính, với dấu ngoặc nhọn tương ứng ở cuối. Chúng được sắp xếp trong cùng một cột và chương trình chính được gắn thẻ ở giữa chúng, để chúng có thể được khớp chính xác.

bộ đếm = 0;

Giá trị 0 ban đầu được đặt ở vị trí biến [byte thấp]. Tương đương trong trình biên dịch mã chương trình là MOVLW, theo sau là MOVWF

TRISB = 0;

Giá trị 0 được nạp vào thanh ghi hướng dữ liệu của cổng B để khởi tạo các bit cổng cho đầu ra đèn LED

trong khi[1]

Điều này bắt đầu một vòng lặp, nó sẽ chạy vô tận. Một điều kiện được đặt trong ngoặc điều khiển vòng lặp. Ví dụ: câu lệnh có thể đọc là 'while[count

Chủ Đề