BASIC kullanıcılarını C'ye alıştırma turları

Başlatan bunalmis, 28 Ekim 2011, 18:48:32

z

#30
Su anda amac programın yakışıklı olması vs değil.

Tüm amacımız C Komutları örnek kodların içinde anlamaya çalışmak.

Cevap olacak programları istediğiniz gibi yazabilirsiniz.

Fonksiyon yazımını şu ana kadar göstermedik.

Kısaca değineyim

int main()
{
int A,B,C,D,Y,Z;

          A=1;
          B=2;
          C=3;
          D=4;

          Y=A+B;
          Z=C+D;
}

Yukarıdaki programı şu şekilde de yazabiliriz.

int Topla(int T1, T2)
{
     return(T1+T2);
}

int main()
{
int A,B,C,D,Y,Z;
     
          A=1;
          B=2;
          C=3;
          D=4;

          Y=Topla(A+B);
          Z=Topla(C+D);
}

Bu yazdığımız programda Topla adında bir fonksiyon tanımladık ve toplama işlemi gerektiğinde bu fonksiyonu çağırdık.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

PIC basic gibi dillerde Fonksiyon kavramı yoktur hocam. Sadece Alt Program Vardır.Bu alt programlarda Argümant alamazlar. Yaptığınız Değişken Tanımlaması Programın heryerinde Yaşar.
Peki ben Fonksiyon Alt Programı nereden Biliyorum. VB den.

muhittin_kaplan

Yukardaki nedenlerden Dolayı PIC basic vb dilleri bilenlerden biraz ayrılıyorum. Ondan Dolayı Yazmadım.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

int Port1;
int Port2;


while (1)
   if (Port1.7==0x01<7)
    {
     if (Port2==$55)
       {     
            goto Buldum;
       }
    }
}
     
buldum: goto buldum;


Hocam herhalde böyle olurdu

z

#35
Hataları kırmızı ile işaretledim.

int Port1;
int Port2;


while (1)
{
   if (
Port1==0x01<<7)
    {
     if (Port2==
0x55)
       {     
            goto
Buldum;
       }
    }
}
     
Buldum: goto Buldum;


Goto olayına takılmayın. Fakat kullanmayın derler. Kullanırsanız da Keil çok güzel icabına bakar.


Programı aşağıdaki gibi de yazabiliriz.


int Port1;
int Port2;

    while (1) if (Port1&0x80) if (Port2==$55) goto Buldum;

     
Buldum: goto Buldum;


Bu arada  int Port1 ve Port2; tanımını volatile unsigned int olarak tanımlamalıyız.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

eistain_54

#37
Yok hocam anlaşılmayan bişey sadece while (1) ilemi sadece döngü kurulur.yani parantezin içi başka bir şekilde doldurulamazmi yani karşılaştırma tarzında

Eğer sonsuz döngü kuracaksan o zaman parantez içine her zaman doğru olan bir ifade yazmalısın. Bu durumda while içine sıkışıp kalırsın. while(1) while (2) gibi.

Yani:

      goto Yani

gibi bir durum oluşur.


while (0) dersek while içine girilmez.

Aşağıdaki program parçası for(i=0;i<10;i++)[/b] ile bire bir aynı anlama gelir.

    i=0;
    while(i<10)
       {
          i++;
       }

Burada i<10 ise ifade doğrudur. i=10 yada i>10 olduğunda i<10 sorgusu yanlış olur ve while dan çıkılır.
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eistain_54

#38
peki while içinde lojik işlemler yapılabilirmi yani sorudaki gibi port1&0x55 gibi

Sonucu doğru yada yanlış olan her türlü işlemi while'a ait parantezin arasında kullanabilirsin.

Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eistain_54

#39
Anladım. O halde yukarıdaki soru için

while (port2&0x55)
{
buldum:

}

Bu yazdığın kod parçası port2 yi okur ve 0x55 ile AND yapar.

Eğer porttan okunan değerin 6, 4, 2, 0 bitlerinin hepsi de 0 ise while dönügüsünden çıkar. (Mesela 0x80 yada 0xAA vs okunursa while dan çıkılır)
Bu bitlerden en az birisi 1 ise tekrar port2 yi okuyarak döngü içinde kalmaya devam eder ve aynı kontrolleri tekrar tekrar yapar.


Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eistain_54

ben konuyu anladım gördüm ki o döngü içinde lojik kıyaslama da oluyormuş benim için önemli olan bu teşekkür ederim
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

z

Islemcilerin port ayarlamalari vs yi bir kenara biraksak;

Simdiye kadar ogrendiklerinle program yazabilirmisin?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

eistain_54

bir deneyelim istersen hocam birde fonksiyon olayından bahsedelimmi biraz
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

z

Fonksiyonlara kisaca yukarida degindik.

https://www.picproje.org/index.php/topic,35980.msg257964/topicseen.html#msg257886

C de anlamli bir seyler yapan yaklasik 20-30 satirlik bir program yazmaniz isteyecegim.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

eistain_54

#44
şamata yaptığımız yerde anlamadığımı ifade ettiğim konular dahil olmayacak diymi birde onları sonraya mi bıraktınız ?

Structure ve union çok zor değil. Yarın C yi bitireceğiz. Basic bilen 2 günde C ye geçer demiştim beni haksız çıkarma.

Yarın diğer konularla örnekler yaptıktan sonra structure vs ye bakarız.
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!