Bir Metottan Birden Çok Parametre Döndürme

Programlama dillerinde bir fonksiyondan hepimizin bildiği üzere sadece bir parametre döndürebiliriz. Buradaki döndürmekten kasıt yapılan “*return*” işlemiyle sadece bir parametre döndürdüğümüzdür. Peki eğer birden çok parametre döndürmek istersek ne yaparız? Bunun için 3 methodtan bahsedeceğim.

C’ye alışkın insanların bu soruya vereceği cevap “struct” kullanırız olacaktır. Struct tanımı içinde kullanmak istediğimiz parametreleri belirtir fonksiyonun dönüş tipini de tanımladığımız Struct türünden yaparsak bu işi başarıyla gerçekleştiririz.  OOP’de bunu sınıflar aracılığıyla yaparız.

1. Method:

class Program { static void Main(string[] args) {      Parameters x = foo(); Console.WriteLine(x.a + ” – ” + x.b); Console.ReadKey(); /* Konsolun işlemden sonra herhangi bir tuşa basılana kadar açık kalmasını sağlamak için */ } static Parameters foo() {      Parameters param = new Parameters(); param.a = 5; param.b = 8; return param; } } class Parameters { public int a, b; }

2. Method: Bu methodumuzda “out” parametresini kullanmak olacaktır.

static void Main(string[] args) { int x, y; x = foo(out y); Console.WriteLine(x + ” – ” + y); Console.ReadKey(); /* Konsolun işlemden sonra herhangi bir tuşa basılana kadar açık kalmasını sağlamak için */ } static int foo(out int var1) { var1 = 5; return 8; }

3. Method: .Net Framework 4.0 ile gelen [Tupples](http://msdn.microsoft.com/en-us/library/system.tuple.aspx)

static void Main(string[] args) {    var result = foo(); Console.WriteLine(result.Item1 + ” – ” + result.Item2);    Console.ReadKey(); /* Konsolun işlemden sonra herhangi bir tuşa basılana kadar açık kalmasını sağlamak için */ } static Tuple foo() { return Tuple.Create(3 , “uccccc”); }

Son örnek hariç diğer örnekler hep aynı türden veriler kullanmışım fakat önceki örneklerde de farklı türden veriler kullanmamız mümkün. Ayrıca aynı türe sahip veriler için kullanılacak başka methodlarda mevcut. Mesela *Collections *kullanımı.

İyi akşamlar

333 Words

C/C++ Dizilere ait İlginç Bir Özellik

Bugün internette dolaşırken şu şekilde bir kullanıma rastladım. Bunu sizlerle paylaşmak istiyorum.

int main() { int array[] = {10 , 20 , 30 , 40 , 50}; int index = 2; printf(“%d\n” , index[array]); /* Bu satıra dikkat */ return 0; }

Normalde diziye erişim yaparken dizi_ismi[indis] şeklinde erişim yaparız. Fakat yukarıdaki hiçbir şekilde hata vermeden “array[index]” ile aynı sonucu veriyor.

İspatına gelince de şu şekilde;

Dizi veri yapısı bellekte bitişken şekilde açılır. Yani her bir indis bellekte rastgele yerlere değil ardışık biçimde dizilir. Biraz da pointer aritmetiğine bakacak olursak;

array[index] = *(array + index)
*(array + index) = *(index + array)
*(index + array) = index[array]
array[index] = index[array]

Bu yukarıdaki kodu herhangi başka bir programlama dilinde yani en azından benim bildiklerim arasında (C/C++ hariç) yazarsanız derleme aşamasında hata alırsınız. Böyle bir işleme izin verilmez.

157 Words

Ek Değişken Kullanmadan Swap İşlemi Yapmak

*Bilgisayar Biliminde* iki değişkenin değerlerinin karşılıklı olarak birbirlerine aktarılması işlemine *[Swap](http://en.wikipedia.org/wiki/Swap_%28computer_science%29)* işlemi denir. Swap işlemi çoğumuzun da bildiği üzere ek bir değişken kullanarak yapılıyor.

void swap(int *var1, int *var2) { int temp; temp = *var1; *var1 =*var2; *var2 = temp; }

**

Peki hiç düşündük mü acaba bu işlemi ek değişken kullanmadan yapabilir miyiz diye? Kullağa ilk başta çok ilginç geliyor tıpkı* Veri Yapıları ve Algoritmalar* dersine ait bir soruymuş gibi geliyor.

Bu sorunun cevabı evet. Burada yardımımıza yine Bilgisayar Biliminde çok duymuş olduğumuz **[XOR](http://tr.wikipedia.org/wiki/XOR_kap%C4%B1s%C4%B1)** işleci yardımımıza koşuyor.

void xorSwap(int* var1, int *var2){ if ( var1 != var2 ){ *var1 ^= *var2; *var2 ^= *var1; *var1 ^= *var2; } }

*Örnek C kodu*

**

Yukarıda yazdığımız kodun makrosunu tanımlamak istersek onu da şu şekilde tanımlıyoruz.

#define xorSwap1(x,y) {x^=y; y^=x; x^=y;}

İşlem 1. Değişkenin
içeriği
2. Değişkenin
içeriği
İlk Durum var1 var2
1. Adım var1 ^= var2 var1 xor var2 var2
2. Adım var2 ^= var1 var1 xor var2 ((var1 xor var2)  xor var2)  = var 1
3. Adım var1 ^= var2 ((var1 xor var2) xor var1) =** var2** **var1**
[XOR SWAP İşlemine ait Wikipedia Sayfası](http://en.wikipedia.org/wiki/XOR_swap_algorithm)

242 Words

jQuery ile Form Validation

FORM VALIDATION – Örnek Senaryo;
Diyelim ki sitemizde kayıt formu kullanmak istiyoruz. Ve bu forumda girilen bilgilerin belirttiğimiz özellikleri taşımasını istiyoruz.
Ad Soyad bilgisi 8 harften az olamaz.
E-mail bilgisi gerçek bir mail adresini yansıtmalı.
Şifre alanlarında girilen şifrelerin birbirinin aynısı olmasını istiyoruz diyelim.

Elimizdekiler
Formda girilecek olan alanların bilgileriniJavaScript kodu içinde gerekli değişkenlere aktarma işlemi

var x = $(“#pass1”).val();var y = $(“#pass2”).val();var z = $(“#name”).val();var t = $(“#mail”).val();

ilk durumda Submit butonu pasif durumda

$(“#submit”).attr(“disabled”, “disabled”);

Mail kontrolü sırasında kullanılacak Regular Expression bilgisi

RegExp(/^((“[\w-\s]+”)|([\w-]+(?:\.[\w-]+)*)|(“[\w-\s]+”)([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i)
var pattern = new RegExp(yukarıdaki ifade);

Formum şu şekilde

<form><label> Tam Adınız: label><inputid=“name”type=“text”/><imgid=“img1”src=“tick.png”alt=“”/><label> e-mail: label><inputid=“mail”type=“text”/><imgid=“img2”src=“tick.png”alt=“”/><label>Şifre: label><inputid=“pass1”type=“password”/><label>Yeniden Şifre: label><inputid=“pass2”type=“password”/><imgid=“img3”src=“tick.png”alt=“”/><inputid=“submit”type=“button”value=“SUBMIT”/>form>

– – – – – –