Lisp (List Processing - Liste İşleme) VB.NET Karşılaştırması ve Örnekler
Kaynak: clisp_book.pdf, VB.NET2008, GCL 2.6.7

Ana sayfaya dön

  Açıklama Common Lisp VB.NET

1

Matematik işlemler

+ - * /
abs sqrt eval
(eval (+ 2 3)) ;eval=evaluate

+ - * /
Math.Abs Math.Sqrt
a=2+3

2

Mantıksal sembol

T Nil

True False

3

Belirleyici

NumberP SymbolP ZeroP OddP EvenP ListP

isNumeric isArray isNot

4

Karşılaştırma

< > = EqualP Equal Eq Not
(> (* 2 5) 9) ;T döner

< > =  Not
((2*5) > 9) 'True döner

5

Açıklama yazmak için

; (noktalı virgül)

' (tek tırnak)

6

Yazı yazmak

(format t "Merhaba Lisp")
(princ "Selam")

Console.WriteLine("Merhaba VB")

7

Diziler

(değer1 değer2 değer3)
;değerlerin aynı türde olması gerekli değildir

Dim a(2) as değişkenTürü

8

İç içe listeler

((1 mehmet) (2 zehra) (3 ahmet))
(setq listemiz '(2 3 4)) ;setq = sequential assignment

Dim b(,) as String =
{{"1", "mehmet"},{"2", "zehra"},{"3", "ahmet"}}

9

Uzunluk

(Length listemiz) ;3 yazar

b.Length

10

Listeyi Silmek

() Nil
(setq listemiz Nil)

b.Clear()

11

Liste elemanlarına ulaşmak

First Second Third Rest Last
Car Cdr Caddr
(first listemiz) ;(1 mehmet) yazar

Array.IndexOf 'tek boyutlu dizilerde
Array.LastIndexOf(b, "zehra")
b(1,1) 'zehra yazar

12

Listeleri birleştirmek

Cons ;construct
List

Array.Copy

13

Fonksiyon yazmak

(defun ortalama (a b)
(/ (+ a b) 2.0)
) ;defun = define function

(ortalama 3 4)  ; 3.5 yazar

Function ortalama ( a as integer, b as integer) as double
Return (a+b)/2
End Function

Sonuc= ortalama (3, 4)

14

İç içe fonksiyon

(defun ikiKat (n)  
(* n 2)
)
(defun dortKat (n)
(ikiKat (ikiKat n))
)

Fu1nction ikiKat (n as integer) as integer
Return n * 2
End Function
Function dortKat (n as integer) as integer
Return  ikiKat(ikiKat(n))
End Function

15

Programı Kapatmak

(exit)
(quit)

End
Application.Exit()

16

Verileri ayırt etmek

' tek tırnak ile başlar
" metinler çift tırnak içine yazılabilir

" çift tırnak içine yazılır

17

Parametresiz fonksiyon

(defun yaz () 
(princ "Merhaba Dünya")
)

(yaz) ;ekrana Merhaba Dünya yazar

Function deneme()
MsgBox("Merhaba Dünya")
Return True
End Function
deneme()

18

İşlem uygulamak

(apply #'+ '(2 3)) ; ekrana 5 yazar

 

19

Eğer komutu

(if (oddp 1) 'tek 'çift)
(if t 'Mutlu)

if 1 mod 2 = 1 then sonuc= "tek" else sonuc= "çift"
if True then sonuc= "Mutlu"

20

Çoklu Karşılaştırma

(defun karsilastir (x)
(cond ((equal x 1) 'bir)
((equal x 2) 'iki)
((equal x 3) 'üç)
(t 'bilinmiyor)      ;t False kısmıdır
)
)

(karsilastir 3) ;ekrana üç yazar

   Function karsilastir(x As Integer) As String
Dim sonuc As String = ""
Select Case (x)
Case 1 : sonuc = "bir"
Case 2 : sonuc = "iki"
Case 3 : sonuc = "üç"
Case Else: sonuc = "bilinmiyor"
End Select
Return sonuc
End Function

21

Mantıksal İşlemler

(and nil t t) ;ekrana nil yazar
(or nil t t)  ;ekrana t yazar

(True And False And False) ' False
(True Or False Or False) ' True

22

Liste elemanlarına ulaşmak

(setq dizi '("a" "b" "c"))
(nth 2 dizi) ;ekrana c yazar

Dim dizi() as string ={"a", "b", "c"}
Sonuc = dizi (2)

23

Dizi birleştirmek

(append '(1 2 3) '(4 5 6)) ; sonuç (1 2 3 4 5 6)

Dizi1.CopyTo(Dizi2, indeksLong)

24

Diziyi ters çevirmek

(reverse ' (a b (c d))) ;sonuç ((C D) B A)

Array.Reverse(dizi)

25

Kayıtlı bir programı açmak

(load "dosyaAdi.lisp")

File*Open Project...

26

İsimsiz geçici fonksiyon yapmak

((lambda (x) (+ x 2)) 4) ;ekrana 6 yazar

 

27

Adım adım çalıştırma (kodu test etmek)

(step (if (oddp 5) 'tek 'çift)) ;her adımda

Debug*Step Into F11

28

Değişken yapmak

(setf trChr '(ç ğ ü ş ı ö)) ;yerel bir değişken

Dim trChr() as Char = {"ç", "ğ", "ü", "ş", "ı", "ö" }

29

Rasgele değer üretmek

(random 10)    ;tamsay  9 gibi
(random 10.0)  ;ondalıklı 9.7542323 gibi

Sonuc = Cint(Rnd() * 10)
Sonuc = Rnd() * 10

30

Listeden eleman silmek

(remove 'a '(m a r m a r a)) ;ekrana mrmr yazar

metin = "marmara"
metin = metin.Replace("a", "")

31

Dizi içinde arama

(setq isimler '(ali zeynep  mahmut))
(member 'ali isimler) ;bulunca listeler, yoksa NIL

metin = "ali zeynep mahmut"
Sonuc= metin.Contains("ali") 'bulursa True döner
Nerede= metin.IndexOf("ali")
;bulursa yeri döner yoksa -1 döner

32

Kesişim

(intersection '(a s d f g) '(v w s r a))
;a ve s döner

Grafik nesnelerinde Intersection komutu var

33

Tabloda arama

(setf sayi '( (1 . bir) (2 . iki) (3 . üç) ))
(assoc '2 sayi) ;ekrana (2 . iki) yazar
(rassoc 'iki sayi) ;ekrana (2 . iki) yazar

Array.Find(dizi, bulunma)

34

Çok değer işleme

(defun karesi (n) (* n n))
(mapcar #'karesi '(3 8 -3 5 2 10))
;ekrana (9 64 9 25 4 100) yazar

 

35

Çok değeri tek yapmak

(reduce #'+ '(10 9 8 7 6))
;ekrana toplam olan 40 yazar

 

36

Adım adım izlemek
(kodu test etmek)

(trace fonksiyonAdi)
;fonksiyon bir sonraki çalıştırmada adımlanır
(untrace fonksiyonAdi)

Debug*Step Into F11

37

Döngü yapmak

(defun sayYukari (n)
(say 1 n))
(defun say (sayac n)
(cond ((> sayac n) nil)
(t (cons sayac (say (+ sayac 1) n)
))))

(sayYukari 4)    ;ekrana 1 2 3 4 yazar

Sub sayYukari (n as integer)
Dim i as integer
For i = 1 to N
Console.Writeline(i)
Next i
End Sub

sayYukari(4)

38

Metinlerde alt satır

(format t "Zaman~%su gibi akıyor")

MsgBox("Zaman" & vbCrLf & "su gibi akıyor")

39

Metin içinde değişken

(format t "Yol ~S den ~S e ~S dakika sürer"
'kadiköy '(tuzla sahil) 50)

MsgBox(String.Format("Yol {0:s} den {1:s} e {2:d} sürer", "kadıköy", "tuzla sahil", 50))

40

Klavyeden veri girmek

(setf degisken (read)) ;klavyeden bilgi bekler

degisken = Console.Readline()

41

Konsolu kaydetmek

(dribble "dosya.log") ;kayıt başlar
(dribble)                   ;kayıt biter

 

42

Global değişken

(setf *bardak* 0) ;global değişken 
(defun sat (n)
(setf *bardak* (+ *bardak* n))
(format t "~S toplam satış" *bardak*)
)
(sat 3) ;ekrana 3 toplam satış yazar
(sat 4) ;ekrana 7 toplam satış yazar

Dim bardak as integer = 0
Sub sat (n as integer)
bardak += n
MsgBox(String.Format("{0:d} toplam satış", bardak))
End Sub
sat(3):sat(4)

43

Dosya okuma yazma

With-Open-File
:direction :output ;kaydetme parametresi

FileStream
FileOpen

44

Listeye değer eklemek çekmek

(setf bulaşık nil)  ;boş bir yığın
(push 'tabak1 bulaşık) ;bulaşık yığınına tabak ekler
(pop bulaşık) ;son ekleneni yığından siler

DirectX komutlarında Push ve Pop vardır

45

Döngü komutları

(Dotimes|Dolist (indeks-değişkeni n [sonuç-formu]) kodlar)

For, Do Loop, While

46

Döngüden çıkmak

Return

Exit For

47

Kod tamamlanma süresi

(Time fonksiyonAdi())

 

48

Değişken tipi sorgulama

(Typep değişken 'tür)
(Typep 3 'integer) ;ekrana T yazar
(Type-of değişken)
(Type-of "deneme") ;ekrana String yazar
(Describe|Inspect değişken)

TypeOf değişken Is tür

49

Yapı

DefStruct

C# struct

50

Dizi yapımı ve elemanlarına ulaşma

(setf diziAdi '#(deneme müzik 440 a))
(aref diziAdi elemanNo)

Dim diziAdi(4)
diziAdi(2)

51

Metinlerde karakterlere ulaşma

(setf isim "Tekir")
(setf (aref isim 0) #\B)
isim ;ekrana Bekir yazar

Dim isim As [String] = "Tekir"
isim = isim.Replace("T"c, "B"c)
MsgBox(isim)

52

Özellik (property)

(setf (get 'adam 'yaş) 23)
(symbol-plist 'adam)
; (SYSTEM:PNAME "ADAM" YAŞ 23)
(get 'adam 'yaş)  ;ekrana 23 yazar
(describe 'adam) ;ekrana adam'ın özellikleri gelir
(remProp 'adam 'yaş) ;yaş özelliği silinir

Sınıf konusu

53

Değer artırmak azaltmak

(setf yaş 10)
(incf yaş)    ;11
(decf yaş)   ;10

Dim yaş as integer = 10
yaş +=1
yaş -=1

54

` karakteri
' gibi ama içi çalışabilir

(setf isim 'Ahmet)
> `(,isim en çok kullanılanlardandır.)
;ekrana Ahmet en çok kullanılanlardandır. yazar

String.Format gibi

55

Kod derlemek

(defun ornekFunc (n)
(dotimes (i n)
(if (> (* i i) n) (return i))))
(compile 'ornekFunc) ;~30 kat hızlı çalışır

Build*Build Application...

56

Makro yapmak

DefMacro

C dilindeki #define gibi

Örnekler:
(/ 120 3 5) ;120/3=40 ve 40/5=8 sonuç
'((BLUE SKY) (GREEN GRASS) (BROWN EARTH)) ;iç içe listeler
(length '(nil nil)) ;ekrana 2 yazar, nil de liste elemanıdır
(first (rest '((BLUE SKY) (GREEN GRASS) (BROWN EARTH)))) ; (GREEN GRASS) yani ikinci eleman
(car (cdr '((BLUE SKY) (GREEN GRASS) (BROWN EARTH)))) ; (GREEN GRASS) yani ikinci eleman
(cons 'hello '(dr jones)) ;(HELLO DR JONES) birleşerek yeni liste oluştu
(list '(good morning) '(dr jones)) ;((GOOD MORNING) (DR JONES)) yeni liste
(cons '(good evening) (rest (list '(good morning) '(dr jones)))) ;((GOOD EVENING) (DR JONES)) ilk elemanı değiştirdi
'(A B C . A) ;liste nil ile bitmiyor, A ile bitiyor, aslında liste sonlarında . Nil vardır
'((A . B) (C . D)) ;noktalı çiftler
(eval '(/ 120 3 5)) ;ekrana 8 yazar
pi ;3.1415926535897931 sabit
(list 3 'karesi (* 3 3)) ; (3 KARESI 9) doğrudan hesaplama yapılıyor
(defun swaps (x) (list (second x) (first x))) ; Basic'deki Swap gibi
(swaps '(dancing bear)) ;(BEAR DANCING) yazar
(quote (hello world)) ;(HELLO WORLD) ' tek tırnak yerine quote kullanılabilir
(defun my-abs (x) (if (< x 0) (- x) x)) ;kendi abs fonksiyonumuz
(my-abs -5) ;5 yazar

Yukarı Git

sflogo