ÜYE GİRİŞİ

HIZLI ARAMA


Dersler Mirc script ile ilgili dersler, yardım konuları, ipuçları.

Cevapla
Alt 06-08-2007, 18:39   #1 (permalink)
WingmaN
Banned
 
WingmaN - ait Kullanıcı Resmi (Avatar)
 
Kayıt: 03.08.2007
Mesajlar: 149
İtibar Gücü: 0


/* if - elseif - else ve genel if else kullanımı */

if - else muhabbeti tüm programlama dillerinde kullanılır, matematikte de fonksiyon karşımıza çıkar. En basite indirgeyerek tek cümleyle güzel bir örnek vererek konuya hızlı bir giriş yapalım:

Mesela bir arkadaşımız hakkında yapmasına ihtimal vermediğimiz bir olay duyduk. Bu durumda bazılarımız "eğer onu tanıyorsam, hayatta böyle birşey yapmaz" diye düşünürüz. Şimdi bu cümleyi inceleyelim.

Alıntı:
eğer onu tanıyorsam, hayatta böyle birşey yapmaz
yaptıysa onu tanımıyorum demektir, tanımadığım biriyle arkadaş olamam
Bunu if - else kullanarak yazarsak;

Kod:
if (ben tanıyorsam onu) { o hayatta böyle birşey yapmaz }if (o yaptıysa) { kes arkadaşlığı }
Bir başka örnek, ilkokul matematik sorularından:

Alinin 3 Velinin 5 elması var. Veli 1 elmasını Aliye verirse ikisinin elmaları eşit olur mu?

Alıntı:
eğer alinin elmasılarına 1 eklendiğinde velinin elmalarına eşit oluyorsa eşitlik olur
Kod:
if (ali_elma + 1 == veli_elma - 1) { eşitlik var }
Son olarak da elseif kullanımına gerçek hayattan bir örnek verelim:

Diyelim iki arkadaş aranızda muhabbet ediyorsunuz. Arkadaşın sana diyor ki; "Bizim Ahmet var ya Ayşeyi aldatmış, intikamını almış." Bu durumda şu şekilde bir tepki veriyorsun:"Ohoo Ahmet o kadar ufak şeyle yetinmez. Eğer intikamını tam anlamıyla almışsa kesin Ayşeyi bir güzel dövmüştür. Tam anlamıyla intikam almayıp merhamet etmişse bile en azından bir tokat atmıştır. Hiçbirini yapmadıysa da çok okkalı bir şekilde aldatmıştır."

Şimdi bunu if - elseif - else'e göre derleyelim:

Alıntı:
eğer ahmet intikamını aldıysa ayşeyi bir güzel dövmüştür
intikamını almayıp merhamet etmişse bir tokat atmıştır
hiçbirini yapmamışsa çok iyi aldatmıştır
mIRC'e döküyoruz:

Kod:
if (ahmet aldı intikam) { ahmet bir güzel dövdü ayşeyi }elseif (ahmet etti merhamet) { ahmet bir tokat attı ayşeye }else { ahmet çok iyi aldattı ayşeyi }
Şimdi de tekrar elma örneğine dönüp o örneği tam anlamıyla mIRC'e döküyoruz:

Kod:
if ($calc(ali_elma + 1) == $calc(veli_elma - 1)) { echo -a eşitlik var }
Alıntı:
//$calc calculator'ın (hesap makinesi) kısaltılmışı olup hesaplama işlemlerinde kullanılır.
Mantığı anlamışsınızdır umarım. Çünkü bundan sonra mIRC konuşacak

if - elseif - else'in basit kullanımı şu şekildedir:

Kod:
if (1.değer ilişki 2.değer) { komutlar }elseif (1. değer ilişki 2.değer { komutlar }else { komutlar }
Tam Türkçe olarak açıklayalım:

Kod:
eğer (1. değer ile 2. değer arasındaki ilişki doğruysa) { bu komutları uygula }değilse ve (1. değer ile 2. değer arasındaki ilişki bu şekildeyse) { şu komutları uygula }yukarılardakilerden hiçbiri uygun değilse { bu komutları uygula }
Şimdi değerler arasındaki ilişkileri listeleyelim:

== eşittir
=== eşittir (*)
!= eşit değildir
< küçüktür
> büyüktür
>= büyüktür veya eşittir
<= küçüktür veya eşittir
// katlarından biridir
\\ katlarından biri değildir
isin 1. değer 2. değerin içinde geçiyorsa
isincs 1. değer 2. değerin içinde geçiyorsa (*)
iswm 1. wildcard değeri 2. değerin içinde geçiyorsa (**)
iswmcs 1. wildcard değeri 2. değerin içinde geçiyorsa (**)
isnum 1. değer 2. değerde belirtilen sayılar arasındaki bir değerse veya 1. değer bir sayıysa
isletter 1. değer 2. değerde belirtilen harflerden biriyse veya 1. değer bir harfse
isalnum değer sadece harf ve rakamlardan oluşuyorsa
isalpha değer sadece harflerden oluşuyorsa
islower değer sadece küçük harflerden oluşuyorsa
isupper değer sadece büyük harflerden oluşuyorsa
ison 1. değer 2. değerde belirtilen kanaldaki bir nickse
isop 1. değer 2. değerde belirtilen kanalda opsa
ishop 1. değer 2. değerde belirtilen kanalda bir half-opsa
isvoice 1. değer 2. değerde belirtilen kanalda voice durumundaysa
isreg 1. değer 2. değerde belirtilen kanalda user durumundaysa yani op voice halfop vs değilse (***)
ischan 1. değer benim bulunduğum kanallardan biriyse
isban 1. değer dahili ban listesinde (internal ban list - hafızada tutulan banlar) mevcutsa
isaop 1. değer 2. değerde belirtilen kanal için otomatik op listesindeyse (***)
isavoice 1. değer 2. değerde belirtilen kanal için otomatik voice listesindeyse (***)
isignore 1. değer 2. değerde verilen parametrelerle ignore listesindeyse (***)
isprotect 1. değer 2. değerde belirtilen kanal için koruma listesindeyse (***)
isnotify 1. değer notify listesindeyse

* Case Sensitive olarak kullanılır. Yani büyük küçük harf uyumuna dikkat edilir. Örneğin %x değeri AsDeF ise %x == asdef ilişkisi doğruyken, %x === asdef ilişkisi doğru olmayacaktır. %x === AsDeF olması gerekir.
** Wildcard hakkında detaylı bilgiyi forumda bulabilirsiniz.
*** 2. değer belirtilmediği durumlarda olayın geçtiği kanal, nick, metin, parametre vs göz önünde bulundurulmadan işlem yapılır, veya uygun olan tek bir değer varsa otomatik olarak verilir.

İlişkiyi tersine çevirmek için de ! işareti kullanılır. Örneğin;

Kod:
if (ali ison #sex) { msg ali sen sapık mısın? }
Ali #sex kanalındaysa Ali'ye sen sapık mısın? diye mesaj at

Kod:
if (ali !ison #sex) { msg ali noldu bugün sapıklık yapmıyor musun? }
Ali #sex kanalında değilse Ali'ye noldu bugün sapıklık yapmıyor musun? diye mesaj at.

İki veya daha fazla ilişkinin birlikte olduğu durumlarda && işareti kullanılır. Örneğin:

Kod:
if (ali isop #bay) && (ali isop #bayan) { msg ali Gay misin hayırdır? }
Eğer Ali #bay kanalında op ise ve aynı zamanda ali #bayan kanalında da op ise Ali'ye Gay misin hayırdır? diye mesaj at
WingmaN Çevrimdışı   Alıntı ile Cevapla
 
Alt 06-08-2007, 18:45   #2 (permalink)
WingmaN
Banned
 
WingmaN - ait Kullanıcı Resmi (Avatar)
 
Kayıt: 03.08.2007
Mesajlar: 149
İtibar Gücü: 0


Yukarıdaki anlatımı basit olarak if - else ve ilişki belirteçleri hakkında en alt düzeyde eğitim vermek için yazmıştım. Şimdi ilişkiler bölümündeki değerleri örneklendirerek merdivenleri tırmanmaya başlayalım

== ve === ilişkisini birlikte kullanarak hem kullanımını hem de arasındaki farkı anlatmış olacağım bir örnekle başlıyorum. Örnek olarak script'imize bir şifre koyduk diyelim. Bu şifreyi doğru yazdığında script açılacak, yanlış yazdığında da bir takım tepkiler verecek. Bu durumda yapacağımız şey öncelikle şifremizi %sifre diye bir değere kaydetmektir. Daha sonra yazılan şifrenin doğru olup olmadığını kontrol eden bir kod yazmamız gerekiyor.

Önce if-elseif-else kullanarak yazalım:

Kod:
alias sifre { var %sifre = AsD if ($1 === %sifre) { echo -a Şifre kabul edildi. | halt } elseif ($1 == %sifre) { echo -a Lütfen şifreyi büyük küçük harf uyumuna göre giriniz. | halt } else { echo -a Yanlış şifre girdiğiniz. }}
Kodun açıklamasına gelince:

* Öncelikle sadece /sifre komutu için geçerli olacak, %sifre adında ve karşılığı AsD olan bir değer oluşturuyoruz.
* Eğer /sifre komutuyla birlikte girilen 1. değer, yani $1, büyük küçük harfleri de dikkate alarak tamamen eşit ise (===), kullanıcının şu an baktığı pencereye şifre kabul edildi diye bir mesaj yaz, ve komutu durdur.
* Eğer yukarıdaki satırda yazdığı gibi, tam anlamıyla eşit değilse ve büyük küçük harf durumu dışında bir eşitlik var ise (==), kullanıcının şu an baktığı pencereye lütfen şifreyi büyük küçük harf uyumuna göre giriniz diye bir mesaj yaz, ve komutu durdur.
* Hiçbiri değilse, kullanıcının şu an baktığı pencereye yanlış şifre girdiniz diye bir mesaj yaz.

Şimdi de kodu eşit değildir (!=) ilişkisine göre düzenleyelim:

Kod:
alias sifre { var %sifre = AsD if ($1 === %sifre) { echo -a Şifre kabul edildi. | halt } if ($1 == %sifre) { echo -a Lütfen şifreyi büyük küçük harf uyumuna göre giriniz. | halt } if ($1 != %sifre) { echo -a Yanlış şifre girdiğiniz. }}
Bu kodda ise eğer böyleyse, böyle değil de şöyleyse muhabbeti yerine böyleyse şöyle yap, şöyleyse böyle yap diye kullandık. Fakat değişik olarak eşit değildir ilişkisini kullanarak ona da örnek vermiş olduk.
WingmaN Çevrimdışı   Alıntı ile Cevapla
 
Alt 06-08-2007, 18:46   #3 (permalink)
WingmaN
Banned
 
WingmaN - ait Kullanıcı Resmi (Avatar)
 
Kayıt: 03.08.2007
Mesajlar: 149
İtibar Gücü: 0


Matematikte kullandığımız büyüktür küçüktür vs işaretleri ne işimize yarayacak diye soranlar olmuştur, hatta dersi dinlemeyip dalga geçenler bile olabilir. Fakat her programlama dilinde if gibi bu işaretler de karşımıza çıkabilir

Bu ilişkinin en çok kullanıldığı yer kesinlikle loop'lardır. Fakat ondan önce while kullanmayı veya goto kullanmayı anlatmak gerekir. Onun yerine hoş bir sayı tahmin etme oyunu kodlayalım. Oyunu herkes biliyordur herhalde, 1'den 99'a kadar bir sayı belirlersiniz, ve karşınızdaki tahmin etmeye çalışır. Şimdi kodlamaya geçelim:


Kod:
alias tahmin { if ($1 == $null) { set %sayi $r(1,99) | echo -a Evet oyun başladı. Tahmini "/tahmin sayı" şeklinde ilet. | halt } if ($1 == %sayi) { echo -a Tebrikler, doğru tahmin! Tekrar oynamak için /tahmin yaz. | unset %sayi | halt } if ($1 < %sayi) { echo -a Çık. | halt } if ($1 > %sayi) { echo -a Düş. | halt } if ($1 !isnum) { echo -a Sayı tahmin oyunu oynadığımızı sanıyordum? | halt } if ($1 !isnum 1-99) { echo -a Tahminini 1'den 99'a kadar olan sayılar arasından yapmalısın. | halt }}
Notlar:
* Tahminde bulunmak için "/tahmin sayı" yazın. Örnek: /tahmin 50
* Sadece "/tahmin" yazarsanız hafızadaki sayı silinir, oyun tekrar başlar.


Kodumuz bu şekilde oluyor. Şimdi de açıklamaya geçelim:


* Eğer 1. değer boş ise, yani komut sadece /tahmin olarak girilmişse ve arkasından bir değer girilmemiş ise, değeri 1'den 99'a kadar herhangi bir sayı olacak şekilde %sayi isminde bir değer oluştur ve aktif pencereye evet oyun başladı diye bir mesaj yayınlayıp komutu durdur.
* Eğer 1. değer %sayi değerine eşit ise, aktif pencereye tebrikler diye bir mesaj yayınla ve %sayi değerini silip komutu durdur.
* Eğer 1. değer %sayi değerinden küçük ise, aktif pencereye çık diye bir mesaj yayınlayıp komutu durdur.
* Eğer 1. değer %sayi değerinden büyük ise, aktif pencereye düş diye bir mesaj yayınlayıp komutu durdur.
* Eğer 1. değer bir sayı değil ise, aktif pencereye sayı tahmin oyunu oynadığımızı sanıyordum diye bir mesaj yayınlayıp komutu durdur.
* Eğer 1. değer 1'den 99'a kadar bir sayı değil ise, aktif pencereye sayı 1'den 99'a kadar olmalı diye bir mesaj yayınlayıp komutu durdur.


Şimdi yukarıdaki kodda değişiklik yapıp "çok yaklaştın, biraz daha düş, biraz daha çık" diye bir mesaj ekleyelim ve <= >= kullanımına örnek verelim.


Kod:
alias tahmin { if ($1 == $null) { set %sayi $r(1,99) | echo -a Evet oyun başladı. Tahmini "/tahmin sayı" şeklinde ilet. | halt } if ($1 == %sayi) { echo -a Tebrikler, doğru tahmin! Tekrar oynamak için /tahmin yaz. | unset %sayi | halt } if ($1 < %sayi) { if ($1 >= $calc(%sayi - 5)) { echo -a Çok yaklaştın, biraz daha çık! | halt }
else { echo -a Çık. | halt } } if ($1 > %sayi) { if ($1 <= $calc(%sayi + 5)) { echo -a Çok yaklaştın, biraz daha düş! | halt } else { echo -a Düş. | halt } } if ($1 !isnum) { echo -a Sayı tahmin oyunu oynadığımızı sanıyordum? | halt } if ($1 !isnum 1-99) { echo -a Tahminini 1'den 99'a kadar olan sayılar arasından yapmalısın. | halt }
}


Kodda yaptığımız değişiklik değerin %sayi değerinden küçük olması durumuna ek olarak 1. değerin %sayi değerinin 5 eksiğinden büyük olmasını da dahil ettik. 1. değerin %sayi değerinden büyük olması durumuna da ek olarak %sayi değerinin 5 fazlasından küçük olmasını da dahil ettik. Bunu da örnek vererek özetleyeyim, eğer hafızadaki sayı 40 ise, 40'tan küçük ve 40'ın 5 eksiğinden yani 35'ten büyük sayılarda çok yaklaştın biraz daha çık, 40'tan büyük ve 40'ın 5 fazlasından yani 45'ten küçük sayılarda da çok yaklaştın biraz daha düş demesini sağladık.




Not: Son eklemeyi yaparken isnum da kullanabilirdik.

Hazırlayan, Utku .
WingmaN Çevrimdışı   Alıntı ile Cevapla
 
 
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Kategori Cevaplar Son Mesaj
Msn Space Scrollbar Kullanımı Mr.CoWbOy Msn Space 0 28-12-2007 18:32
Hamilelikte ilaç kullanımı SweetWitch Anne ve Çocuk 0 03-09-2007 11:30
Genel-İş Sendikası Genel Başkanı toprağa verildi Haberci Son Dakika Haberleri 0 29-07-2007 14:50
Bilinçli internet kullanımı **Zerd@** Bilelim Öğrenelim 1 06-02-2007 23:19
.htaccess kullanımı ve ipuçları Kr㣠Webmaster Genel 2 12-12-2006 12:16





1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848