C Programlama diliyle şamatalar

Başlatan z, 23 Ekim 2011, 15:32:04

unknownperson

Alıntı yapılan: Tagli - 03 Mart 2014, 14:31:24
http://answers.yahoo.com/question/index?qid=20071220030343AApQcDk
Fonksiyonun biçimlendirilmiş (formatlanmış) çıktı verdiğini gösteriyor. Sadece bir isimlendirme yöntemi, çalışması ile ilgisi yok. Bu sınıftaki fonksiyonların tırnak içindeki bölümleri format olarak adlandırılıyor.
Anladım teşekkür ederim  :)

StDarg

selamlar.Şöyle bir soru takıldı aklıma

int dizi[3]={5,3,7};
int i,j,k;

     for(i=0;i<3;i++)
    {
    for(j=0;j<3;j++)
   {
   if(dizi>dizi[j])
   {
    k=dizi[j];
   dizi[j]=dizi[j];
   dizi=k;
   }
   }
   }

program dizi elemanlarını yerini değiştirmeden önce dizi 5 değeri bulunmakta.if içindeki şart sağlandığında dizi elemanları yer değiştirdiğinde bu diziye direk yansıyormu yoksa döngünün sonlanması mı lazım

SpeedyX

yansıyor ama j lerden 2 si i olacak

unknownperson

Merhaba, C de baştaki Main() fonksiyonunun içine void Main(void) şeklinde konmasının amacı nedir ? Hangi durumlarda konur ? Ne farkı vardır ?

SpeedyX

Boş olması void ile aynı anlama gelmektedir, derleyiciye kesin olarak bildirmek için void olarak da yazılır. Artık günümüz derleyicilerinde özellikle void şeklinde belirtmeye pek gerek yok sanıyorum. Eski bir gelenek diyelim.

unknownperson

Alıntı yapılan: SpeedyX - 23 Mart 2014, 11:51:54
Boş olması void ile aynı anlama gelmektedir, derleyiciye kesin olarak bildirmek için void olarak da yazılır. Artık günümüz derleyicilerinde özellikle void şeklinde belirtmeye pek gerek yok sanıyorum. Eski bir gelenek diyelim.
İlla void olarak belirtmek gerekiyor diyelim, o zaman void'in anlamı nedir ya da eskiden ne maksatla yazılıyordu ?

z

C programa parametre yollamak istersen bu void yerine parametrenin degisken tipini belirliyorsun. Ancak bu durum isletim sistemi ustunde calistirilan programlar icin gecerli.

Bizim ciplak islemci ustunde kosan programlarda bunu main(void) yaz gitsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

SpeedyX

Alıntı yapılan: unknownperson - 23 Mart 2014, 15:50:54
İlla void olarak belirtmek gerekiyor diyelim, o zaman void'in anlamı nedir ya da eskiden ne maksatla yazılıyordu ?
Merhaba, aslında konuya bakış açısı burada önemli.
PICC, CCS, C18, C for ARM vb gibi derleyicilerde main(); yada main(void); olmasının farkı yok, çünkü onların üzerinde çalışan bir işletim sistemi yok ve biz customexecutable -param -param2 şeklinde onu çağırmıyoruz. Direkt main in anlamı program başıdır yada belli internal işlemler (low_level_init) yapıldıktan sonra gidilen etikettir. Burada main(void) yazmış olmanız yada boş bırakmış olmanız birşey ifade etmeyecek, hatta main(int i) bile deseniz o i parametresini veren olmayacağı için anlamsız olacaktır.

Eğer bir işletim sistemi üzerinde C/C++ ile kod geliştiriyor olsaydık burada ufak bir fark oluşuyor. Orada da neden eski bir gelenek dediğim anlaşılacaktır.
main(void) yazarak, yaptığımız executable ın bir parametre almadığını kesin olarak ifade ederiz. Boş bıraktığımızda ise belirsiz bir durum oluşur, belirlenmemiş sayıda belirlenmemiş tipte parametreler alır hale gelir.

In C:
void foo() means "a function foo taking an unspecified number of arguments of unspecified type"
void foo(void) means "a function foo taking no arguments"
In C++:
void foo() means "a function foo taking no arguments"
void foo(void) means "a function foo taking no arguments"

pure C ciler main(void) şeklinde yazmaya alıştıklarından dolayı low level da da bu geleneği sürdürmüşler. Fakat görüyorsunuz ki sonradan çıkan C++ da bu fark yokedilip, her iki şekilde de aynı davranış tanımlanmış.

unknownperson

Kusura bakmayın sadece C'yi ayrıntılı olarak öğrenmek istediğimden bu tür sorular sorup biraz uğraştırıyorum sizi , şimdi anladım cevapladığınız için teşekkür ederim

unknownperson

Herkese merhaba, şöyle bir sorum olacak yazdığım programı herhangi bir tuşa basarak kapatmak istiyorum ya da do while komutuyla işlem sonunda while parantezi içine koşul koyucam bu koşulda mesela 1 e basarsa program tekrar edicek 2 ye basarsa program sonlanıcak bunu nasıl yaparım ? İnternette araştırdım kimisinde getchar kimisinde getch kullanıyor kimisi her ikisinide kullanmıyor ben getchar kullanmak istiyorum yardımcı olursanız sevinirim.

Tesla.25

#790
do
{
...
...
}
while(degisken != 0);

komutu, degisken 'in sıfırdan farklı olduğu durumlarda do-while döngüsüne devam edecektir.
Eğer illa soru sorup, cevaba göre işlem yapılacaksa, mesela

while(1)
{
printf("tamam mı devam mı? :) ");
scanf("%d", &baskaDegisken);

if (baskadegisken == 1)
devam et;
else if (baskaDegisken == 2)
break;
else
printf("Yanlış seçim...");
}

İlk soru, Windows üzerinde "system("pause");" iş görür. Tabi stdlib.h 'ın include edilmesi gerekir. Bir tuşa basılmasını bekler.

getchar() mı getch() mi, bunlardan birisi standart C içerisinde yoktu ama hangisiydi hatırlayamıyorum şu anda. Sanırım getch() fonksiyonunun standart olması  gerek.

Yani  standartsa, her ortamda kullanılabilir. Standart değilse, kullanılan derleyicinin klavuzlarına bakmak gerekir bu fonksiyon var mı yok mu diye.


(Yorgun olduğumdan biraz dağınık oldu cevap kusura bakmayın. İnşallah anlatabilmişimdir.)

unknownperson

Alıntı yapılan: Tesla.25 - 05 Nisan 2014, 00:01:17
do
{
...
...
}
while(degisken != 0);

komutu, degisken 'in sıfırdan farklı olduğu durumlarda do-while döngüsüne devam edecektir.
Eğer illa soru sorup, cevaba göre işlem yapılacaksa, mesela

while(1)
{
printf("tamam mı devam mı? :) ");
scanf("%d", &baskaDegisken);

if (baskadegisken == 1)
devam et;
else if (baskaDegisken == 2)
break;
else
printf("Yanlış seçim...");
}

İlk soru, Windows üzerinde "system("pause");" iş görür. Tabi stdlib.h 'ın include edilmesi gerekir. Bir tuşa basılmasını bekler.

getchar() mı getch() mi, bunlardan birisi standart C içerisinde yoktu ama hangisiydi hatırlayamıyorum şu anda. Sanırım getch() fonksiyonunun standart olması  gerek.

Yani  standartsa, her ortamda kullanılabilir. Standart değilse, kullanılan derleyicinin klavuzlarına bakmak gerekir bu fonksiyon var mı yok mu diye.


(Yorgun olduğumdan biraz dağınık oldu cevap kusura bakmayın. İnşallah anlatabilmişimdir.)


If li olarak değilde daha çok şöyle yapmak istiyorum.

do
{
...
printf("If you want to continue click to 1");
scanf("%d",&repeat);
}
while(repeat == 1);

Bu çalışıyor sorun yok ama bunun devamında diyelim çıkmak istedi 0'a bassın istiyorum ama onu bu düzeneğe koyamadım.Yani bunun için kesinlikle if mi kullanmalıyım ?

Tesla.25

#include <stdio.h>

int main(int argc, char **argv)
{
    int degisken;
    do
    {
        printf("For exit, press 1\n");
        scanf("%d", &degisken);
        printf("merhaba\n\n");
    }while(degisken == 1 || degisken != 0);
}


Mesela bu kodda, while satırına bakarsanız, program 0 girince kapanıyor. 1 girince devam ediyor.

unknownperson

Alıntı yapılan: Tesla.25 - 06 Nisan 2014, 11:07:51
#include <stdio.h>

int main(int argc, char **argv)
{
    int degisken;
    do
    {
        printf("For exit, press 1\n");
        scanf("%d", &degisken);
        printf("merhaba\n\n");
    }while(degisken == 1 || degisken != 0);
}


Mesela bu kodda, while satırına bakarsanız, program 0 girince kapanıyor. 1 girince devam ediyor.

Tamam şimdi oldu çok teşekkür ederim  :)

Mr.Java

C dilinde parametre olarak port ismini nasıl alabiliriz ? Örnek ile anlatmak gerekirse;

unsigned char xxxx(&PORTB,1); şeklinde.