Tam Sürümünü Görmek İçin : C adına 2 soru...
asinanyavuz
11/07/2004, 16:36
İlk sorum:
C Tüm Sürümleri için Herbert Schidlt, Alfa Yayınları nın kitabını aldım. Onunla çalışmaya uğraşıyorum. Ama ilk aşamalarda (Bölüm 2 : Deyimler) de örneklerde açıklanmamış daha doğrusu anlamadığı yerler var(yanlarına yazdım):
#include <stdio.h>
int main(void) /* bu satır ne işe yarıyor */
{
int x;
x = 10;
if(x == 10) {
int x;
x = 99;
printf("Inner x: %d\n", x);
}
printf("Outer x: %d\n", x);
return 0;
}
içteki x in dıştaki x i gizlemesi ne anlama geliyor. Yani iç alanda iç alanda tanımlanan x kullanılıyor yanlış anlamadıysam.
#include <stdio.h>
void f(void); /* bu void nedir? */
int main(void)
{
int i;
for(i=0; i<10; i++) f();
return 0;
}
void f(void)
{
int j = 10;
printf("%d ", j);
j++; /* this line has no lasting effect */
}
Bu kodu tamamen açıklarsanız ve çıktısını da yazarsanız memnun olurum açıklayarak.
ikinci sorum ise :
c99 standardına göre derleme yapan bir derleyici nasıl bulabilirim? ( ücretsiz olarak )
s) int main(void) /* bu satır ne işe yarıyor */
c) Main fonksiyonu programında ilk olarak çalıştırlacak fonksiyondur, olması zorunludur.
s)içteki x in dıştaki x i gizlemesi ne anlama geliyor. Yani iç alanda iç alanda tanımlanan x kullanılıyor yanlış anlamadıysam.
c) Aslında programcılıkta çok önerilen bir değişken tanımlama sistemi olmasada burda anlatılmak istenen şu
int x;
x = 10;
if(x == 10) {
int x; //burda yeni bir x değişkeni tanımlanıyor eğer bu "x" if bloğunun içinde olmasaydı hata alırdın
x = 99;// burda bir üst satırda tanımlanan "x" e değer atanıyor önemli olanda burası , if bloğundan önceki x korunuyor if bloğunun içindeki "x" etkileniyor
printf("Inner x: %d\n", x); //burda x=99
}
printf("Outer x: %d\n", x);//burda x=10 çünkü if bloğu sonra erdi 2 kez tanımlanan x değerine burdan erişemezsin
return 0;
s)void f(void); /* bu void nedir? */
c) void =boş yani f fonksiyonun geri dönüş değeri yok, void fonksiyonlar atama işlemlerinde kullanılamazlar ve return kullanamazlar örn;
int f(void)
{
int a=10;
return a;
}
gibi bir fonksiyonumuz olsun bunu main fonksiyonumuzdan şu şekilde çağırabiliriz.
int b;
b=f(); // burda b=10 olur...
eğer f fonksiyonu geri dönüş değeri void olsaydı...
void f(void)
{
int a=10;
return a; //derleyici hata verirdi çünkü fonksiyon geridönüş dğeri çıkaramaz die tanımlanmış
}
ikinci void ise fonksiyonun parametre almadığını gösteriyor...
eğer parametre alsaydı şu şekilde olurdu
int b; // burda b yi public (heryerden erişebilir) olarak düşün
void f(int a)
{
b=a;
}
f fonkisyonunu herhangi bir yerden çağırdığında içinde değer geçmek zorundasın
örneğin
f(20); // burda fonksiyon int b değerine 20 sayısı atar
eğer senin örneğindeki gibi void ise fonksiyona değer geçemessin yani
f(20);// hata alırsın....
s)Bu kodu tamamen açıklarsanız ve çıktısını da yazarsanız memnun olurum açıklayarak.
#include <stdio.h>
void f(void); /* bu void nedir? */
int main(void)
{
int i;
for(i=0; i<10; i++) f(); // i değerini 10'a kadar arttır ve her arttışta f fonksiyonunu çalıştır
return 0;
}
void f(void)
{
int j = 10;
printf("%d ", j); /ekrana j yani 10 değerini yaz
j++; /* this line has no lasting effect */ //burda değer arttırımına gidilmiş ama fonksiyon her seferinde yeniden çalışacağından(for döngüsünden ötürü 10 kez) "j" yeniden 10 olacak ,yani j++; işlemi bir işe yaramayacak.
}
anlaşılacağı üzere bu program çalıştırıldığında ekrana on kere 10 yazdırır yani
10 10 10 10 ...
derleyicinde ufak bir warning mesajı gösterir j++; 'dan dolayı
s)c99 standardına göre derleme yapan bir derleyici nasıl bulabilirim? ( ücretsiz olarak )
c) şimdi link veremeyeceğim ama forumda araştrma yaparsan bir çok derleyicinin download adresini bulursun...
asinanyavuz
11/07/2004, 17:26
çok teşekkür ederim...
asinanyavuz
11/07/2004, 17:42
fakat aramalarım sonucu maalesef bulamadım. Sadece adını öğrensem yeter. C++ derleyici sanırım işimi görmez çünkü C++ C89 üstüne yazılmış.
psikopat®
11/07/2004, 17:45
c99 ne ki? niye C++ derleyicileri olmuyo?
asinanyavuz
11/07/2004, 17:54
c99 yeni geliştirilmiş bir C standartı. Çünkü c89 üstüne yapılmış c++ dili. c99 da ekstra fonksiyonlar fln var...
psikopat®
11/07/2004, 18:46
iyi de çok fazla fark yoktur ki bunların arasında. bence Dev-C++ oldukça iyi. denemeni tavsiye ederim.
http://www.bloodshed.net/devcpp.html
bu sayfadan indirebilirsin....
asinanyavuz
11/07/2004, 18:48
zaten dev-cpp kullanıyorum. Fakat beni eğiten kitap özellikle c99 üzerindede duruyor bende durmak istiyorum açıkçası. Ama bir türlü bulamıyorum. Sanırım borlandın derleyicisinde varmış ama indiremem dial-up :(
psikopat®
11/07/2004, 19:12
peki kitabın yazarı hangi compiler'ı kullanabileceğinle ilgili birşeyler yazmamış mı?
asinanyavuz
11/07/2004, 19:19
hayır maalesef... kitapta derleyici adı geçmiyor hiç. Sadece bir yerde dosyaları bağlamak için Visual C++ da hangi komutların işe yarayacağı yazıyor...
psikopat®
11/07/2004, 19:22
o zaman Visual C++'ın son versiyonunu bulmaya çalış. demekki C++ da C99 olabiliryormuş. öyle değil mi?
asinanyavuz
11/07/2004, 19:25
c++ C99 olamaz. Dediğim gibi C++ C89 üzerinden geliştirilmiş. Ama C++ derleyicisi C99 Destekliyor olabilir. Sanırım bulduğum sonuçlara göre borland da destekliyor ama dial-up :(
psikopat®
11/07/2004, 19:30
belki başka C++ derleyicileri de destekliyodur. Dev-C++ desteklemiyor mu?
DotNetKid
11/07/2004, 19:42
visual c++ nın son sürümü c++.net :) kardeş sen en iyisi vs.net 2003 edin bir tane ama tabii elindeki kitapla olmaz. olur da.. sen en iyisi visual c++ editörü edin bir tane o sana yeter. mesela visual studio bulman sanırım daha kolay olur, sadece visual c++ bulmandan..
asinanyavuz
11/07/2004, 19:42
şu ana kadar problem çıkarmadı. Ama çok karakteristik bir fonksiyon kullanacak kadar C bilmediğim için bilmiyorum. Ama vakti gelince iyice araştırırım. Ayrıca C99 daki bir çok fonksiyonu zaten C++ kullanıcıları biliyormuş :)
asinanyavuz
11/07/2004, 19:43
Bir de : "Because the timing of the release of C99, this version of Visual C++ is not conformant with that standard. " Yani Visual C++ desteklemiyor. VC++ 2005 Express destekler kanaatindeyim
psikopat®
11/07/2004, 19:52
desteklemiyo dediğin de iki tane komutu desteklemiyodur. fazla bir farkı yoktur....
asinanyavuz
11/07/2004, 21:58
inşallah öyledir...
psikopat®
11/07/2004, 22:00
http://gcc.gnu.org/c99status.html
şu adrese bi bak istersen. GCC'nin şu anki durumunu gösteriyo. adamlar çoğunu halletmişler....
acehreli
12/07/2004, 01:40
asinanyavuz, digerlerinin de soyledikleri gibi, bu ise fazla kafani takma :)
Evet, C++ C89 uzerine kurulmustur ama cogu C++ derleyicisi C99 olanaklarini de ek olarak sunar. Borland, Visual Studio, Dev C++, vs. hepsi cok iyidir...
borland c++ builder olabilir. herbert amcamizin kitabi ve ilk c bolumunde bununla derletiyor programi :) dene .
asinanyavuz
15/07/2004, 20:23
dediğim gibi borland c++ builder ı indiremem dial-up :(
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.