Lisp (List Processing - Liste İşleme) VB.NET Karşılaştırması ve Örnekler
Kaynak: clisp_book.pdf, VB.NET2008, GCL 2.6.7
Açıklama | Common Lisp | VB.NET | |
---|---|---|---|
1 |
Matematik işlemler |
+ - * / |
+ - * / |
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 |
< > = Not |
5 |
Açıklama yazmak için |
; (noktalı virgül) |
' (tek tırnak) |
6 |
Yazı yazmak |
(format t "Merhaba Lisp") |
Console.WriteLine("Merhaba VB") |
7 |
Diziler |
(değer1 değer2 değer3) |
Dim a(2) as değişkenTürü |
8 |
İç içe listeler |
((1 mehmet) (2 zehra) (3 ahmet)) |
Dim b(,) as String = |
9 |
Uzunluk |
(Length listemiz) ;3 yazar |
b.Length |
10 |
Listeyi Silmek |
() Nil |
b.Clear() |
11 |
Liste elemanlarına ulaşmak |
First Second Third Rest Last |
Array.IndexOf 'tek boyutlu dizilerde |
12 |
Listeleri birleştirmek |
Cons ;construct |
Array.Copy |
13 |
Fonksiyon yazmak |
(defun ortalama (a b) (ortalama 3 4) ; 3.5 yazar |
Function ortalama ( a as integer, b as integer) as double Sonuc= ortalama (3, 4) |
14 |
İç içe fonksiyon |
(defun ikiKat (n) |
Fu1nction ikiKat (n as integer) as integer |
15 |
Programı Kapatmak |
(exit) |
End |
16 |
Verileri ayırt etmek |
' tek tırnak ile başlar |
" çift tırnak içine yazılır |
17 |
Parametresiz fonksiyon |
(defun yaz () (yaz) ;ekrana Merhaba Dünya yazar |
Function deneme() |
18 |
İşlem uygulamak |
(apply #'+ '(2 3)) ; ekrana 5 yazar |
|
19 |
Eğer komutu |
(if (oddp 1) 'tek 'çift) |
if 1 mod 2 = 1 then sonuc= "tek" else sonuc= "çift" |
20 |
Çoklu Karşılaştırma |
(defun karsilastir (x) (karsilastir 3) ;ekrana üç yazar |
Function karsilastir(x As Integer) As String |
21 |
Mantıksal İşlemler |
(and nil t t) ;ekrana nil yazar |
(True And False And False) ' False |
22 |
Liste elemanlarına ulaşmak |
(setq dizi '("a" "b" "c")) |
Dim dizi() as string ={"a", "b", "c"} |
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 |
Sonuc = Cint(Rnd() * 10) |
30 |
Listeden eleman silmek |
(remove 'a '(m a r m a r a)) ;ekrana mrmr yazar |
metin = "marmara" |
31 |
Dizi içinde arama |
(setq isimler '(ali zeynep mahmut)) |
metin = "ali zeynep mahmut" |
32 |
Kesişim |
(intersection '(a s d f g) '(v w s r a)) |
Grafik nesnelerinde Intersection komutu var |
33 |
Tabloda arama |
(setf sayi '( (1 . bir) (2 . iki) (3 . üç) )) |
Array.Find(dizi, bulunma) |
34 |
Çok değer işleme |
(defun karesi (n) (* n n)) |
|
35 |
Çok değeri tek yapmak |
(reduce #'+ '(10 9 8 7 6)) |
|
36 |
Adım adım izlemek |
(trace fonksiyonAdi) |
Debug*Step Into F11 |
37 |
Döngü yapmak |
(defun sayYukari (n) (sayYukari 4) ;ekrana 1 2 3 4 yazar |
Sub sayYukari (n as integer) 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" |
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 |
|
42 |
Global değişken |
(setf *bardak* 0) ;global değişken |
Dim bardak as integer = 0 |
43 |
Dosya okuma yazma |
With-Open-File |
FileStream |
44 |
Listeye değer eklemek çekmek |
(setf bulaşık nil) ;boş bir yığın |
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) |
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)) |
Dim diziAdi(4) |
51 |
Metinlerde karakterlere ulaşma |
(setf isim "Tekir") |
Dim isim As [String] = "Tekir" |
52 |
Özellik (property) |
(setf (get 'adam 'yaş) 23) |
Sınıf konusu |
53 |
Değer artırmak azaltmak |
(setf yaş 10) |
Dim yaş as integer = 10 |
54 |
` karakteri |
(setf isim 'Ahmet) |
String.Format gibi |
55 |
Kod derlemek |
(defun ornekFunc (n) |
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