Doğru Sayıyı Bulana Kadar Nasıl Tekrar Ettirilir? (C)
-
DeaD_BY bunu yazdı:
-----------------------------hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-----------------------------
Trace etmek, yani programı adım adım çalıştırmak hocam. Değişkenlerin aldığı değerleri tek tek takip etmek. Dev C++ kullanıyorsan (diğer compilerları bilmediğim için bunun üzerinden örnek veriyorum onlarda da vardır diye tahmin ediyorum) Debug özelliğini kullanarak programın seçtiğin kısmına kadar senin verdiğin değişken değerlerini kullanarak gelir. Böylece programı irdeleyerek hatanın nerde olduğunu daha kolayca bulabilirsin. Programı kafanda a,b,c şeklinde 3e bölüp debug ı buna göre yaparsan, önce a kısmını kontrol edersin, sonra b kısmını kontrol edersin en son c yi kontrol ederken hata olduğunu görürsün ve sadece o kısımda hata ararsın böylece zamandan da kazanmış olursun. C dili yazılan kodları okurken yukarıdan aşağıya yani top-down şeklinde okur. Örneğin
printf("hede hödö");
scanf("%c",&hebele);
yazdığın zaman önce hede hödö yazdırıp ardından scanf komutunu okur. Goto da bu mantığa ters düştüğü için genelde tavsiye edilmez ama dediğim gibi kod olarak yanlış birşey değildir. Sadece ilerde programdaki hataları irdelerken ya da program ilerde birbaşkası tarafından okunurken durumu zorlaştırır.
-
DeaD_BY bunu yazdı:
-----------------------------hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated.____
(Hocam goto kullanmamanı öneririm. C'nin trace yapısına çok aykırı bir kod şekli.)
hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-----------------------------Kullandığın compiler yüzünden olabilir hocam #include "conio.h" şeklinde dener misin bir de
OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------anladım hocam teşekkürler aydınlattığın için
-----------------------------est. hocam ne demek
-
manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-----------------------------
Trace etmek, yani programı adım adım çalıştırmak hocam. Değişkenlerin aldığı değerleri tek tek takip etmek. Dev C++ kullanıyorsan (diğer compilerları bilmediğim için bunun üzerinden örnek veriyorum onlarda da vardır diye tahmin ediyorum) Debug özelliğini kullanarak programın seçtiğin kısmına kadar senin verdiğin değişken değerlerini kullanarak gelir. Böylece programı irdeleyerek hatanın nerde olduğunu daha kolayca bulabilirsin. Programı kafanda a,b,c şeklinde 3e bölüp debug ı buna göre yaparsan, önce a kısmını kontrol edersin, sonra b kısmını kontrol edersin en son c yi kontrol ederken hata olduğunu görürsün ve sadece o kısımda hata ararsın böylece zamandan da kazanmış olursun. C dili yazılan kodları okurken yukarıdan aşağıya yani top-down şeklinde okur. Örneğin
printf("hede hödö");
scanf("%c",&hebele); yazdığın zaman önce hede hödö yazdırıp ardından scanf komutunu okur. Goto da bu mantığa ters düştüğü için genelde tavsiye edilmez ama dediğim gibi kod olarak yanlış birşey değildir. Sadece ilerde programdaki hataları irdelerken ya da program ilerde birbaşkası tarafından okunurken durumu zorlaştırır.
-----------------------------hmm anladım hocam.yani demek istediğin; diyelim ki binlerce satırlık bi kod yazdık, o kod okunurken,kontrol edilirken veya güncellenirken goto kullanıldıgında okumada çok sıkıntı çıkıcak.700.satırda goto 5. satır diyecek örneğin,ordan oraya giderken mantık karışacak..dogru anladım?
-
DeaD_BY bunu yazdı:
-----------------------------manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-----------------------------
Trace etmek, yani programı adım adım çalıştırmak hocam. Değişkenlerin aldığı değerleri tek tek takip etmek. Dev C++ kullanıyorsan (diğer compilerları bilmediğim için bunun üzerinden örnek veriyorum onlarda da vardır diye tahmin ediyorum) Debug özelliğini kullanarak programın seçtiğin kısmına kadar senin verdiğin değişken değerlerini kullanarak gelir. Böylece programı irdeleyerek hatanın nerde olduğunu daha kolayca bulabilirsin. Programı kafanda a,b,c şeklinde 3e bölüp debug ı buna göre yaparsan, önce a kısmını kontrol edersin, sonra b kısmını kontrol edersin en son c yi kontrol ederken hata olduğunu görürsün ve sadece o kısımda hata ararsın böylece zamandan da kazanmış olursun. C dili yazılan kodları okurken yukarıdan aşağıya yani top-down şeklinde okur. Örneğin
printf("hede hödö");
scanf("%c",&hebele); yazdığın zaman önce hede hödö yazdırıp ardından scanf komutunu okur. Goto da bu mantığa ters düştüğü için genelde tavsiye edilmez ama dediğim gibi kod olarak yanlış birşey değildir. Sadece ilerde programdaki hataları irdelerken ya da program ilerde birbaşkası tarafından okunurken durumu zorlaştırır.
-----------------------------hmm anladım hocam.yani demek istediğin; diyelim ki binlerce satırlık bi kod yazdık, o kod okunurken,kontrol edilirken veya güncellenirken goto kullanıldıgında okumada çok sıkıntı çıkıcak.700.satırda goto 5. satır diyecek örneğin,ordan oraya giderken mantık karışacak..dogru anladım?
-----------------------------Aynen öyle hocam. Küçük kodlamalarda goto nun programı basitleştireceğine inanıyorsan kullanmanda bence bir sakınca yok, fakat genelde çoğu coder tarafından C dili için uygunsuz bulunduğu için ben goto kullanmamaya özen gösteriyorum. Tavsiyem sen de goto yerine elini for/while/do-while döngülerine alıştır. Daha çok işine yarayacağına eminim :)
-
goto kullanmak okunulabilirliği azaltır. koda bakan adamı "neyi nereye göndermişsin ne yapmışın be amk" diye düşündürür :D
Bunun dışında sayı tahminini şöyle yaparsın;
while(tahmin==4) //while ile sayı bulunana kadar döndürüceksin yapılacakları
{
printf("Tahmin et bakam: ");
scanf("%d",&tahmin);
if(tahmin==4) //doğru bulunduysa
printf("afferin sana bildin");
else if(tahmin<4) //girilen değer küçükse
printf("biraz daha büyük bi sayı gir");
else if(tahmin>4) //girilen değer büyükse
printf("biraz daha küçük bi sayı gir");
else //diğer durumlara karşı hata kontrolü
printf("adam akıllı bi sayı gir!");
}
bunun haricinde 2 tavsiyem daha var :) srand() fonksiyonunu araştır, bu fonksiyonla rastgele değil rassallaştırılmış sayılar üretirsin ve her seferinde yeni bir sayı verir. (eğer bu muhabbeti bilmiyosan rand ve srand fonksiyonlarını kullan dene aradaki farkı anlayacaksın,anlatmıyorumki merak duygun kabarsın :))
ayrıca return komutunu kullanmayı tam bilmiyorsan if yapısından true false döndürmeyi dene return kullanarak ve whileın başka bir değişkenin true olup olmadığını kontrol etmesini sağla. çeşitlilik yarat kendine göre işte =)
-
manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-----------------------------
Trace etmek, yani programı adım adım çalıştırmak hocam. Değişkenlerin aldığı değerleri tek tek takip etmek. Dev C++ kullanıyorsan (diğer compilerları bilmediğim için bunun üzerinden örnek veriyorum onlarda da vardır diye tahmin ediyorum) Debug özelliğini kullanarak programın seçtiğin kısmına kadar senin verdiğin değişken değerlerini kullanarak gelir. Böylece programı irdeleyerek hatanın nerde olduğunu daha kolayca bulabilirsin. Programı kafanda a,b,c şeklinde 3e bölüp debug ı buna göre yaparsan, önce a kısmını kontrol edersin, sonra b kısmını kontrol edersin en son c yi kontrol ederken hata olduğunu görürsün ve sadece o kısımda hata ararsın böylece zamandan da kazanmış olursun. C dili yazılan kodları okurken yukarıdan aşağıya yani top-down şeklinde okur. Örneğin
printf("hede hödö");
scanf("%c",&hebele); yazdığın zaman önce hede hödö yazdırıp ardından scanf komutunu okur. Goto da bu mantığa ters düştüğü için genelde tavsiye edilmez ama dediğim gibi kod olarak yanlış birşey değildir. Sadece ilerde programdaki hataları irdelerken ya da program ilerde birbaşkası tarafından okunurken durumu zorlaştırır.
-----------------------------hmm anladım hocam.yani demek istediğin; diyelim ki binlerce satırlık bi kod yazdık, o kod okunurken,kontrol edilirken veya güncellenirken goto kullanıldıgında okumada çok sıkıntı çıkıcak.700.satırda goto 5. satır diyecek örneğin,ordan oraya giderken mantık karışacak..dogru anladım?
-----------------------------Aynen öyle hocam. Küçük kodlamalarda goto nun programı basitleştireceğine inanıyorsan kullanmanda bence bir sakınca yok, fakat genelde çoğu coder tarafından C dili için uygunsuz bulunduğu için ben goto kullanmamaya özen gösteriyorum. Tavsiyem sen de goto yerine elini for/while/do-while döngülerine alıştır. Daha çok işine yarayacağına eminim :)
-----------------------------eyvallah hocam.. son sorum :) ;
hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated. -
DeaD_BY bunu yazdı:
-----------------------------eyvallah hocam.. son sorum :) ;
hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated.
-----------------------------Yok hocam istediğin kadar sor hiç sorun yok. Kullandığın derleyici nedir ?
-
wasd bunu yazdı:
-----------------------------goto kullanmak okunulabilirliği azaltır. koda bakan adamı "neyi nereye göndermişsin ne yapmışın be amk" diye düşündürür :D
Bunun dışında sayı tahminini şöyle yaparsın;
while(tahmin==4) //while ile sayı bulunana kadar döndürüceksin yapılacakları
{
printf("Tahmin et bakam: ");
scanf("%d",&tahmin);
if(tahmin==4) //doğru bulunduysa
printf("afferin sana bildin");
else if(tahmin
printf("biraz daha büyük bi sayı gir");
else if(tahmin>4) //girilen değer büyükse
printf("biraz daha küçük bi sayı gir");
else //diğer durumlara karşı hata kontrolü
printf("adam akıllı bi sayı gir!");
}
bunun haricinde 2 tavsiyem daha var :) srand() fonksiyonunu araştır, bu fonksiyonla rastgele değil rassallaştırılmış sayılar üretirsin ve her seferinde yeni bir sayı verir. (eğer bu muhabbeti bilmiyosan rand ve srand fonksiyonlarını kullan dene aradaki farkı anlayacaksın,anlatmıyorumki merak duygun kabarsın :))
ayrıca return komutunu kullanmayı tam bilmiyorsan if yapısından true false döndürmeyi dene return kullanarak ve whileın başka bir değişkenin true olup olmadığını kontrol etmesini sağla. çeşitlilik yarat kendine göre işte =)
-----------------------------while(tahmin==4) //while ile sayı bulunana kadar döndürüceksin yapılacakları
burda tahmin 4e eşit olacak demek olmuyor mu? kodda sanki çok mantık hatası mı var yoksa ben mi hala çakamadım durumu? :S
if yapısından true false döndürmek tam olarak nedir hocam?true false olayını hiç bilmiyorum :S
-
manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------eyvallah hocam.. son sorum :) ;
hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated.
-----------------------------Yok hocam istediğin kadar sor hiç sorun yok. Kullandığın derleyici nedir ?
-----------------------------linux terminal hocam.. gcc
-
DeaD_BY bunu yazdı:
-----------------------------manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
-----------------------------eyvallah hocam.. son sorum :) ;
hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated.
-----------------------------Yok hocam istediğin kadar sor hiç sorun yok. Kullandığın derleyici nedir ?
-----------------------------linux terminal hocam.. gcc
-----------------------------conio.h windows a bağlı çalışıyor diye biliyorum. conio.h yerine curses.h veya ncurses.h yazıp tekrar dener misin ? Olmazsa conio.h yerine stdlib.h yazıp, getch(); yerine de System("PAUSE"); yazıp dener misin bi
