<< Chapter < Page Chapter >> Page >

Danh sách

Danh sách là một dãy có phân biệt thứ tự của các phần tử cách nhau ít nhất một khoảng trắng và đặt nằm trong cặp dấu ngoặc đơn ().

Phần tử của danh sách có thể là một nguyên tử hoặc là một danh sách.

Hằng danh sách được mở đầu bằng dấu nháy đơn ‘.

Ví dụ về các hằng danh sách:

  • ‘()Danh sách rỗng, tương đương ký hiệu NIL.
  • ‘(a 5 c)Danh sách gồm 3 phần tử.
  • ‘(3 (b c) d (e (f g)))Danh sách gồm 4 phần tử, trong đó phần tử thứ 2 và phần tử thứ 4 lại là các danh sách.

Biểu thức

Biểu thức là một nguyên tử hoặc một danh sách. Biểu thức luôn có một giá trị mà việc định trị nó theo nguyên tắc sau:

  • Nếu biểu thức là một số, thì giá trị của biểu thức là giá trị của số đó.

Ví dụ:

>25

= 25

  • Nếu biểu thức là một ký hiệu thì giá trị của biểu thức có thể là
  • Được xác định trước bởi LISP (chẳng hạn t có giá trị là T (TRUE) và nil có giá trị là NIL một danh sách rỗng) hoặc
  • Một giá trị dữ liệu của người sử dụng hoặc trong chương trình được gán cho một biến. Biến không cần phải khai báo.

Ví du:

>(setq a 3) ; Gán số 3 cho biến có tên a

= 3

>a ; hỏi giá trị của ký hiệu “a”

= 3

  • Nếu biểu thức là một danh sách có dạng (E0 E1 ... En) thì giá trị của biểu thức được xác định theo cách sau đây:
  • Phần tử đầu tiên E0 phải là một hàm đã được LISP nhận biết.
  • Các phần tử E1, E2, ..., En được định trị tuần tự từ trái sang phải. Giả sử ta có các giá trị tương ứng là V1, V2, ..., Vn
  • Hàm E0 được áp dụng cho các đối V1, V2, ..., Vn. Giá trị của hàm E0 chính là giá trị của biểu thức.

Ví dụ

>(+ 5 3 6)

= 14

>( + 4 (+ 3 5))

= 12

  • Chú ý: Nếu biểu thức dùng hàm QUOTE hoặc dấu nháy đơn sẽ không được đánh giá

Ví dụ:

>‘(+ 1 2)

= (+ 1 2)

Các hàm

Một chương trình của LISP là một hàm hoặc một hàm hợp. Các hàm có thể do LISP định nghĩa trước hoặc do lập trình viên tự định nghĩa.

Một số hàm định nghĩa trước

  • Các hàm số học: +, -, *, /, 1+, 1-, MOD, SQRT tác động lên các biểu thức số và cho kết quả là một số.

Ví dụ:

>(+ 5 6 2)

= 13

>(- 8 3)

= 5

>(- 8 3 1)

= 4

>(1+ 5) ; Tương đương (+ 5 1)

= 6

>(1- 5) ; Tương đương (- 5 1)

= 4

>(MOD 14 3)

= 2

>(sqrt 9) ; Lấy căn bậc hai của 9

= 3

  • Các hàm so sánh các số<,>,<=,>=, = và /=, cho kết quả là T hoặc NIL

Ví dụ:

>(<4 5)

= T

>(>4 (* 2 3))

= NIL

  • (EQ s1 s2) so sánh xem hai ký hiệu s1 và s2 có giống nhau hay không?

Ví dụ:

>(eq ‘tuong ‘tuong)

= T

>(eq ‘tuong ‘duong)

= NIL

>(eq ‘5 5 )

= T

  • (EQUAL o1 o2) so sánh xem đối tượng bất kỳ o1 và o2 có giống nhau hay không?

Ví dụ:

>(equal ‘(a b c) ‘(a b c))

= T

>(equal ‘(a b c) ‘( b a c))

= NIL

>(equal ‘a ‘a)

= T

  • Các hàm thao tác trên danh sách: CAR, CDR, CONS và LIST
  • (CAR L) nhận vào danh sách L, trả về phần tử đầu tiên của L.

Ví du:

>(CAR '(1 2 3))

= 1

>(CAR 3)

Error: bad argument type - 3

>(CAR nil)

= NIL

>(CAR '((a b) 1 2 3))

= (A B)

  • (CDR L) nhận vào danh sách L, trả về một danh sách bằng phần còn lại của danh sách L sau khi bỏ đi phần tử đầu tiên.

Ví dụ:

>(cdr '(1 2 3))

= (2 3)

>(cdr 3)

Error: bad argument type - 3

>(cdr nil)

= NIL

>(cdr '(1))

= NIL

>(CAR (CDR ‘(a b c)))

= B

  • Viết gộp các hàm: Ta có thể dùng hàm C..A/D..R để kết hợp nhiều CAR và CDR (có thể thay thế việc lồng nhau tới 4 cấp)

Ví du:

(CADR ‘(a b c))

= B

  • (CONS x L) nhận vào phần tử x và danh sách L, trả về một danh sách, có được bằng cách thêm phần tử x vào đầu danh sách L

Questions & Answers

so some one know about replacing silicon atom with phosphorous in semiconductors device?
s. Reply
how to fabricate graphene ink ?
SUYASH Reply
for screen printed electrodes ?
SUYASH
What is lattice structure?
s. Reply
of graphene you mean?
Ebrahim
or in general
Ebrahim
in general
s.
Graphene has a hexagonal structure
tahir
On having this app for quite a bit time, Haven't realised there's a chat room in it.
Cied
what is biological synthesis of nanoparticles
Sanket Reply
what's the easiest and fastest way to the synthesize AgNP?
Damian Reply
China
Cied
types of nano material
abeetha Reply
I start with an easy one. carbon nanotubes woven into a long filament like a string
Porter
many many of nanotubes
Porter
what is the k.e before it land
Yasmin
what is the function of carbon nanotubes?
Cesar
I'm interested in nanotube
Uday
what is nanomaterials​ and their applications of sensors.
Ramkumar Reply
what is nano technology
Sravani Reply
what is system testing?
AMJAD
preparation of nanomaterial
Victor Reply
Yes, Nanotechnology has a very fast field of applications and their is always something new to do with it...
Himanshu Reply
good afternoon madam
AMJAD
what is system testing
AMJAD
what is the application of nanotechnology?
Stotaw
In this morden time nanotechnology used in many field . 1-Electronics-manufacturad IC ,RAM,MRAM,solar panel etc 2-Helth and Medical-Nanomedicine,Drug Dilivery for cancer treatment etc 3- Atomobile -MEMS, Coating on car etc. and may other field for details you can check at Google
Azam
anybody can imagine what will be happen after 100 years from now in nano tech world
Prasenjit
after 100 year this will be not nanotechnology maybe this technology name will be change . maybe aftet 100 year . we work on electron lable practically about its properties and behaviour by the different instruments
Azam
name doesn't matter , whatever it will be change... I'm taking about effect on circumstances of the microscopic world
Prasenjit
how hard could it be to apply nanotechnology against viral infections such HIV or Ebola?
Damian
silver nanoparticles could handle the job?
Damian
not now but maybe in future only AgNP maybe any other nanomaterials
Azam
Hello
Uday
I'm interested in Nanotube
Uday
this technology will not going on for the long time , so I'm thinking about femtotechnology 10^-15
Prasenjit
can nanotechnology change the direction of the face of the world
Prasenjit Reply
At high concentrations (>0.01 M), the relation between absorptivity coefficient and absorbance is no longer linear. This is due to the electrostatic interactions between the quantum dots in close proximity. If the concentration of the solution is high, another effect that is seen is the scattering of light from the large number of quantum dots. This assumption only works at low concentrations of the analyte. Presence of stray light.
Ali Reply
the Beer law works very well for dilute solutions but fails for very high concentrations. why?
bamidele Reply
how did you get the value of 2000N.What calculations are needed to arrive at it
Smarajit Reply
Privacy Information Security Software Version 1.1a
Good
Got questions? Join the online conversation and get instant answers!
QuizOver.com Reply

Get the best Algebra and trigonometry course in your pocket!





Source:  OpenStax, Ngôn ngữ lập trình. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10783/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ngôn ngữ lập trình' conversation and receive update notifications?

Ask