C++ yeniyim

Başlatan KillerB, 16 Aralık 2010 - 21:24:15

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

KillerB

arkadaşlar başta python öğreniyodum ama baktımki python bilip bilmediğine bakmıyorlar bende bunu öğreniyim dedim en azından aklımda bişeyler kalsın dev c++ indirdim arkadaşlar bana türkçe kaynak yollayabilirmisiniz.
ve de bu dil acayip zor bir dil ya nasıl alışılırki buna anlamıyorum pythonda print hello world diyodun çatır çatır yapıyodu bunun hello world ü için 6,7 satır yazmak gerekiyo ki onuda yapamadım zaten  :'( :'(

sem

Merhabalar

Kim bakmıyor Python'a... İş verenler mi? =)

Ben aslında onların çok da bir şey bilerek istediklerini düşünmüyorum...=) Python uygulamaya kolay geçirilmesi nedeni ile özellikle prototiplerin oluşturulmasında çok kullanılırmış diye duymuştum ben de =)

Linux'ta da Dev C++ var mı acaba?  Gerçi açık kaynak olduğuna göre mutlaka vardır, neden olmasın, ben hep Windows tarafında onu kullandığım için şaşırdım biraz...

Yalnız sorunuzu anlamayadığımı da belirtmek isterim... Tam olarak neyi öğrenmek istiyorsunuz?

C ye mi başladınız, C++ a mı?

C/C++ geliştirmek için şöyle yapıyoruz;

Kullanacağımız bazı fonksiyonlar ve tanımlamalar belirli başlık dosyaları içerisinde tanımlanıyor. Örneğin standart giriş ve çıkış fonksiyonları C için stdio.h dosyası içerisinde bulunuyor.

Standart giriş/çıkış ile kastım nedir? Ekrana bir şeyler yazdırma, klavyeden bir sayı alma gibi işlemlerdir örneğin... Tabii stdio.h sadece bunları değil, bunların yanında daha bir sürü tanımlama ve fonksiyon içeriyor. Az önce de dediğim gibi siz bu stdio.h dosyasında tanımlanmış fonksiyonları kullanabilmek için bu dosyayı kodunuza dahil etmelisiniz. Nasıl?

#include <stdio.h>

burada #include ifadesi bir başlık dosyası dahil edeceğinizi belirtiyor. stdio.h ise dahil ettiğimiz başlık dosyası oluyor. Bu şekilde artık stdio.h içerisinde fonksiyonları kullanabiliyoruz.

Kodlar derlendikten sonra çalışması için, bir başlangıç noktası, kodun çalıştırılmaya başlayacağı bir nokta olması gerekiyor. Bu nokta ise programın ana fonksiyonu olarak standartize edilmiştir. Yani ana programınız olmadan programınız çalışmaz, çalışmadan ziyade derlenmez de...

Derlenme nedir? Python da olduğu gibi yazdıklarını doğrudan yorumlatamıyorsunuz. C/C++ dillerinde önce yazdığınız kodları bilgisayarın anlayacağı bir dile çevirmeniz gerekiyor. İşte sizin yazdığınız kodları, bilgisayarın anlayacağı dile çevirmeye ise derleme deniyor...

Bu durumda bir de ihtiyacımız olan bir ana fonksiyon var...


int main()
{
// Kodlarımız...
}


Yani neyimiz var, stdio.h gibi içinde fonksiyon ve tanımlamar bulundura bir dosyamız var. Programın başlayabileceği bir ana fonksiyonumuz var. Bir iki kod da kendimiz eklersek kaynak kodumuz da oldu demektir =)


#include <stdio.h>
int main()
{
     printf("Hello world demeyelim de hoş gelidn KillerB diyelim\n");
     return 0;
}



En sona koyduğumuz "return 0" ifadesinde ana program 0 ile sonlanırsa, hatasız yürütüldüğünü kabul ediyoruz. Şimdilik bizim için önemli değil...


Yani ekrana bir şey yazdırırken kullanmanız gereken 6, 7  satır bunlar... Bunlar zaten temel olan, bilinmesi  gereken şeyler...

Bu kaynak kodunuz oluyor... Şimdi bunu bilgisayarın anlayacağı hale getirmeniz gerekiyor bu işleme derleme deniyor... Ve bu siteden çokça örneğini bulabilirsiniz... Derleme bittikten sonra programınız çalışacaktır...


stdio.h dışında çok çok fazla bşık dosyası (malloc.h, stdlib.h, socket.h, ether.h...) vardır.. Örneğin bir TCP/IP kullanan bir programa ek başlık dosyaları daha eklemeniz gerekecek, ya da saat işlemleri için ayrı başlık dosyaları gerekecek... Zaten ihtiyacınız oldukça; arayıp, bulup kullandıkça öğrenirsiniz...

Bu 6,7 satırı anlarsanız gerisi aynı zaten =) Kolay gelsin...

Ek: Biraz yorgunken ve acele yazdım, imla hataları nedeni ile kusura bakmayın...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

KillerB

çok sağol sonunda yazdım onuda run dedimde açılıp kapanıyodu ama python dan ögrendigim cmd den yazınca görüyorum,bu .exe olarak da kaydediyo galiba pythonda böyle bir şey yoktu merak ettiğim python bu kadar süper sadeyken bu niye bu kadar çok şey istiyo ve bana bir kaynak biliyorsanız söylermisiniz

sem

Siz Windows üzerinde geliştiriyorsunuz programı...

Şu anda bulunduğunuz aslında Windows ile alakalı bir site değil. Bir Linux sitesindesiniz. Fakat C programlama kaynaklarına sitede arama yaparak ulaşabilirsiniz.

http://forum.ubuntu-tr.net/index.php/topic,21020.msg253775.html#msg253775

Bunun gibi... Fakat üstüne basarak söyleyeyim; bu site Windows ile alakalı bir site değil...


Windows sorunlarınızı ise;

Programı cmd den başlatmak istemiyorsanız ve de hemen açılıp kapanmasını istemiyorsanız kodunuzun sonuna

getch();

Bu fonksiyonu ekleyin... Böylece programınız hemen kapanmaz...

Bu dillerin çalışan dosya oluşturması (.exe dediğiniz)  ve Python un oluşturmaması ise derleme ile alakalı... Python derlenen değil, yorumlanan bir dildir... Bu gibi konulara da arama ile ulaşabilirsiniz...

http://ddili.org/ders/d/derleyici.html

Burada biraz bahsedilmiş...

".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

KillerB

#4
çok sağolun bildiğiniz iyi bir kaynak varmıdır peki?

hocam verdiginiz linki okuyorum yani c++ için programı çalıştırabilmesi için derlemesi gerekiyo yani etkileşimli kabuğu yok galiba ?
peki etkileşimli kabuğu yoksa programları yazmak daha çok zaman isteyecektir yani yanlışı zor bulucaz ve yarısında falan deniyemeyeceğiz değilmi ?

Tuxie

Alıntı yapılan: sem0900 - 16 Aralık 2010 - 22:24:47
Merhabalar

Kim bakmıyor Python'a... İş verenler mi? =)

Ben aslında onların çok da bir şey bilerek istediklerini düşünmüyorum...=) Python uygulamaya kolay geçirilmesi nedeni ile özellikle prototiplerin oluşturulmasında çok kullanılırmış diye duymuştum ben de =)

Linux'ta da Dev C++ var mı acaba?  Gerçi açık kaynak olduğuna göre mutlaka vardır, neden olmasın, ben hep Windows tarafında onu kullandığım için şaşırdım biraz...

Yalnız sorunuzu anlamayadığımı da belirtmek isterim... Tam olarak neyi öğrenmek istiyorsunuz?

C ye mi başladınız, C++ a mı?

C/C++ geliştirmek için şöyle yapıyoruz;

Kullanacağımız bazı fonksiyonlar ve tanımlamalar belirli başlık dosyaları içerisinde tanımlanıyor. Örneğin standart giriş ve çıkış fonksiyonları C için stdio.h dosyası içerisinde bulunuyor.

Standart giriş/çıkış ile kastım nedir? Ekrana bir şeyler yazdırma, klavyeden bir sayı alma gibi işlemlerdir örneğin... Tabii stdio.h sadece bunları değil, bunların yanında daha bir sürü tanımlama ve fonksiyon içeriyor. Az önce de dediğim gibi siz bu stdio.h dosyasında tanımlanmış fonksiyonları kullanabilmek için bu dosyayı kodunuza dahil etmelisiniz. Nasıl?

#include <stdio.h>

burada #include ifadesi bir başlık dosyası dahil edeceğinizi belirtiyor. stdio.h ise dahil ettiğimiz başlık dosyası oluyor. Bu şekilde artık stdio.h içerisinde fonksiyonları kullanabiliyoruz.

Kodlar derlendikten sonra çalışması için, bir başlangıç noktası, kodun çalıştırılmaya başlayacağı bir nokta olması gerekiyor. Bu nokta ise programın ana fonksiyonu olarak standartize edilmiştir. Yani ana programınız olmadan programınız çalışmaz, çalışmadan ziyade derlenmez de...

Derlenme nedir? Python da olduğu gibi yazdıklarını doğrudan yorumlatamıyorsunuz. C/C++ dillerinde önce yazdığınız kodları bilgisayarın anlayacağı bir dile çevirmeniz gerekiyor. İşte sizin yazdığınız kodları, bilgisayarın anlayacağı dile çevirmeye ise derleme deniyor...

Bu durumda bir de ihtiyacımız olan bir ana fonksiyon var...


int main()
{
// Kodlarımız...
}


Yani neyimiz var, stdio.h gibi içinde fonksiyon ve tanımlamar bulundura bir dosyamız var. Programın başlayabileceği bir ana fonksiyonumuz var. Bir iki kod da kendimiz eklersek kaynak kodumuz da oldu demektir =)


#include <stdio.h>
int main()
{
     printf("Hello world demeyelim de hoş gelidn KillerB diyelim\n");
     return 0;
}



En sona koyduğumuz "return 0" ifadesinde ana program 0 ile sonlanırsa, hatasız yürütüldüğünü kabul ediyoruz. Şimdilik bizim için önemli değil...


Yani ekrana bir şey yazdırırken kullanmanız gereken 6, 7  satır bunlar... Bunlar zaten temel olan, bilinmesi  gereken şeyler...

Bu kaynak kodunuz oluyor... Şimdi bunu bilgisayarın anlayacağı hale getirmeniz gerekiyor bu işleme derleme deniyor... Ve bu siteden çokça örneğini bulabilirsiniz... Derleme bittikten sonra programınız çalışacaktır...


stdio.h dışında çok çok fazla bşık dosyası (malloc.h, stdlib.h, socket.h, ether.h...) vardır.. Örneğin bir TCP/IP kullanan bir programa ek başlık dosyaları daha eklemeniz gerekecek, ya da saat işlemleri için ayrı başlık dosyaları gerekecek... Zaten ihtiyacınız oldukça; arayıp, bulup kullandıkça öğrenirsiniz...

Bu 6,7 satırı anlarsanız gerisi aynı zaten =) Kolay gelsin...

Ek: Biraz yorgunken ve acele yazdım, imla hataları nedeni ile kusura bakmayın...
@sem0900 ne kadar güzel anlatmışsınız uzun zamandır böyle iyi programlama anlatana rastlamamıştım. Devamını getirmeyi düşünseniz ne güzel olur  ;) :D

KillerB

#6
hocam şimdi python daki input burdaki scanf mi oluyor?
pythondan farklıymış mesela pythonda sonda yaptığımız şeyleri burda başta yapıyoruz anladığım kadarıyla

mesela hiç
girilen=int(input("zart zurt")) falan yapmadık pythonda bu budur bunu istiyceksin yazıcak topluycan ikiye bölücen falan filan mantığı daha anlaşılırdı onun  bunun mantığı nasıl arkadaşlar umarım açık anlatabilmişimdir sorunumu

mesela %d yi niye tırnak içine almalıyız tırnak kullanıcının okuyacağı şeydi pythonda burda yoksa tam tersimi




hocam yeni başlayanlar için zor python öğren dedi bi abim sağolun yardımlarınız için ben pythona geri dönüyorum  :P

sem

@Tuxie, gözümden kaçmış koca ileti, biraz geç de olsa cevap vereyim. Aslında  SUDO'da anlatmayı düşünmüştüm ben de C programlama fakat yeterli bilgiye sahip olmadığım için vazgeçtim. Şimdilik bilgim yettiğince forumdan yardım etmeye çalışıyorum... Kendimi biraz daha geliştirebilirsem anlatabilmeyi ve anlatmayı ben de isterim... Teşekkür ederim...

@KillerB size de Python'da kolaylıklar diliyeyim... Bunu saymayız yine bekleriz =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

furkankalkan

ben de c++ öğreniyorum eğer windows kullanıyorsanız Dev C++ ile başlayın derim bendeki muadilleri Code Blocks ve Visual C++ a göre hata ayıklaması kolaydır.
Eğer amacınız Linux üzerinde program yazmaksa küçük programlar için konsol gayet kullanışlıdır. Gedit veya herhangi bir editörle programınızı yazıp .cpp uzantısıyla home dizininize kaydedip ve sonra konsoldan   
#g++ -o programinizin_adi dosyanizin_adi.cpp şeklinde bir kod verip derleyebilirsiniz.Eğer herangi bir hata vermezse home dizininizde programinizin_adi şeklinde bir çalıştırılabilen dosya oluşacaktır bu dosyayı da konsola sürükle bırak şeklinde veya konsoldan
#./program_adi şeklinde bir kod yazarak çalıştırabilirsiniz.


Alıntı yapılan: Tuxie - 17 Aralık 2010 - 20:44:56
Alıntı yapılan: sem0900 - 16 Aralık 2010 - 22:24:47
Merhabalar

Kim bakmıyor Python'a... İş verenler mi? =)

Ben aslında onların çok da bir şey bilerek istediklerini düşünmüyorum...=) Python uygulamaya kolay geçirilmesi nedeni ile özellikle prototiplerin oluşturulmasında çok kullanılırmış diye duymuştum ben de =)

Linux'ta da Dev C++ var mı acaba?  Gerçi açık kaynak olduğuna göre mutlaka vardır, neden olmasın, ben hep Windows tarafında onu kullandığım için şaşırdım biraz...

Yalnız sorunuzu anlamayadığımı da belirtmek isterim... Tam olarak neyi öğrenmek istiyorsunuz?

C ye mi başladınız, C++ a mı?

C/C++ geliştirmek için şöyle yapıyoruz;

Kullanacağımız bazı fonksiyonlar ve tanımlamalar belirli başlık dosyaları içerisinde tanımlanıyor. Örneğin standart giriş ve çıkış fonksiyonları C için stdio.h dosyası içerisinde bulunuyor.

Standart giriş/çıkış ile kastım nedir? Ekrana bir şeyler yazdırma, klavyeden bir sayı alma gibi işlemlerdir örneğin... Tabii stdio.h sadece bunları değil, bunların yanında daha bir sürü tanımlama ve fonksiyon içeriyor. Az önce de dediğim gibi siz bu stdio.h dosyasında tanımlanmış fonksiyonları kullanabilmek için bu dosyayı kodunuza dahil etmelisiniz. Nasıl?

#include <stdio.h>

burada #include ifadesi bir başlık dosyası dahil edeceğinizi belirtiyor. stdio.h ise dahil ettiğimiz başlık dosyası oluyor. Bu şekilde artık stdio.h içerisinde fonksiyonları kullanabiliyoruz.

Kodlar derlendikten sonra çalışması için, bir başlangıç noktası, kodun çalıştırılmaya başlayacağı bir nokta olması gerekiyor. Bu nokta ise programın ana fonksiyonu olarak standartize edilmiştir. Yani ana programınız olmadan programınız çalışmaz, çalışmadan ziyade derlenmez de...

Derlenme nedir? Python da olduğu gibi yazdıklarını doğrudan yorumlatamıyorsunuz. C/C++ dillerinde önce yazdığınız kodları bilgisayarın anlayacağı bir dile çevirmeniz gerekiyor. İşte sizin yazdığınız kodları, bilgisayarın anlayacağı dile çevirmeye ise derleme deniyor...

Bu durumda bir de ihtiyacımız olan bir ana fonksiyon var...


int main()
{
// Kodlarımız...
}


Yani neyimiz var, stdio.h gibi içinde fonksiyon ve tanımlamar bulundura bir dosyamız var. Programın başlayabileceği bir ana fonksiyonumuz var. Bir iki kod da kendimiz eklersek kaynak kodumuz da oldu demektir =)


#include <stdio.h>
int main()
{[quote author=Tuxie link=topic=24164.msg290881#msg290881 date=1292611496]
[quote author=sem0900 link=topic=24164.msg290650#msg290650 date=1292531087]
Merhabalar

Kim bakmıyor Python'a... İş verenler mi? =)

Ben aslında onların çok da bir şey bilerek istediklerini düşünmüyorum...=) Python uygulamaya kolay geçirilmesi nedeni ile özellikle prototiplerin oluşturulmasında çok kullanılırmış diye duymuştum ben de =)

Linux'ta da Dev C++ var mı acaba?  Gerçi açık kaynak olduğuna göre mutlaka vardır, neden olmasın, ben hep Windows tarafında onu kullandığım için şaşırdım biraz...

Yalnız sorunuzu anlamayadığımı da belirtmek isterim... Tam olarak neyi öğrenmek istiyorsunuz?

C ye mi başladınız, C++ a mı?

C/C++ geliştirmek için şöyle yapıyoruz;

Kullanacağımız bazı fonksiyonlar ve tanımlamalar belirli başlık dosyaları içerisinde tanımlanıyor. Örneğin standart giriş ve çıkış fonksiyonları C için stdio.h dosyası içerisinde bulunuyor.

Standart giriş/çıkış ile kastım nedir? Ekrana bir şeyler yazdırma, klavyeden bir sayı alma gibi işlemlerdir örneğin... Tabii stdio.h sadece bunları değil, bunların yanında daha bir sürü tanımlama ve fonksiyon içeriyor. Az önce de dediğim gibi siz bu stdio.h dosyasında tanımlanmış fonksiyonları kullanabilmek için bu dosyayı kodunuza dahil etmelisiniz. Nasıl?

#include <stdio.h>

burada #include ifadesi bir başlık dosyası dahil edeceğinizi belirtiyor. stdio.h ise dahil ettiğimiz başlık dosyası oluyor. Bu şekilde artık stdio.h içerisinde fonksiyonları kullanabiliyoruz.

Kodlar derlendikten sonra çalışması için, bir başlangıç noktası, kodun çalıştırılmaya başlayacağı bir nokta olması gerekiyor. Bu nokta ise programın ana fonksiyonu olarak standartize edilmiştir. Yani ana programınız olmadan programınız çalışmaz, çalışmadan ziyade derlenmez de...

Derlenme nedir? Python da olduğu gibi yazdıklarını doğrudan yorumlatamıyorsunuz. C/C++ dillerinde önce yazdığınız kodları bilgisayarın anlayacağı bir dile çevirmeniz gerekiyor. İşte sizin yazdığınız kodları, bilgisayarın anlayacağı dile çevirmeye ise derleme deniyor...

Bu durumda bir de ihtiyacımız olan bir ana fonksiyon var...


int main()
{
// Kodlarımız...
}


Yani neyimiz var, stdio.h gibi içinde fonksiyon ve tanımlamar bulundura bir dosyamız var. Programın başlayabileceği bir ana fonksiyonumuz var. Bir iki kod da kendimiz eklersek kaynak kodumuz da oldu demektir =)


[code]#include <stdio.h>
int main()
{
     printf("Hello world demeyelim de hoş gelidn KillerB diyelim\n");
     return 0;
}



En sona koyduğumuz "return 0" ifadesinde ana program 0 ile sonlanırsa, hatasız yürütüldüğünü kabul ediyoruz. Şimdilik bizim için önemli değil...


Yani ekrana bir şey yazdırırken kullanmanız gereken 6, 7  satır bunlar... Bunlar zaten temel olan, bilinmesi  gereken şeyler...

Bu kaynak kodunuz oluyor... Şimdi bunu bilgisayarın anlayacağı hale getirmeniz gerekiyor bu işleme derleme deniyor... Ve bu siteden çokça örneğini bulabilirsiniz... Derleme bittikten sonra programınız çalışacaktır...


stdio.h dışında çok çok fazla bşık dosyası (malloc.h, stdlib.h, socket.h, ether.h...) vardır.. Örneğin bir TCP/IP kullanan bir programa ek başlık dosyaları daha eklemeniz gerekecek, ya da saat işlemleri için ayrı başlık dosyaları gerekecek... Zaten ihtiyacınız oldukça; arayıp, bulup kullandıkça öğrenirsiniz...

Bu 6,7 satırı anlarsanız gerisi aynı zaten =) Kolay gelsin...

Ek: Biraz yorgunken ve acele yazdım, imla hataları nedeni ile kusura bakmayın...
@sem0900 ne kadar güzel anlatmışsınız uzun zamandır böyle iyi programlama anlatana rastlamamıştım. Devamını getirmeyi düşünseniz ne güzel olur  ;) :D
printf("Hello world demeyelim de hoş gelidn KillerB diyelim\n");
     return 0;
}
[/code]


En sona koyduğumuz "return 0" ifadesinde ana program 0 ile sonlanırsa, hatasız yürütüldüğünü kabul ediyoruz. Şimdilik bizim için önemli değil...


Yani ekrana bir şey yazdırırken kullanmanız gereken 6, 7  satır bunlar... Bunlar zaten temel olan, bilinmesi  gereken şeyler...

Bu kaynak kodunuz oluyor... Şimdi bunu bilgisayarın anlayacağı hale getirmeniz gerekiyor bu işleme derleme deniyor... Ve bu siteden çokça örneğini bulabilirsiniz... Derleme bittikten sonra programınız çalışacaktır...


stdio.h dışında çok çok fazla bşık dosyası (malloc.h, stdlib.h, socket.h, ether.h...) vardır.. Örneğin bir TCP/IP kullanan bir programa ek başlık dosyaları daha eklemeniz gerekecek, ya da saat işlemleri için ayrı başlık dosyaları gerekecek... Zaten ihtiyacınız oldukça; arayıp, bulup kullandıkça öğrenirsiniz...

Bu 6,7 satırı anlarsanız gerisi aynı zaten =) Kolay gelsin...

Ek: Biraz yorgunken ve acele yazdım, imla hataları nedeni ile kusura bakmayın...
[/quote] @sem0900 ne kadar güzel anlatmışsınız uzun zamandır böyle iyi programlama anlatana rastlamamıştım. Devamını getirmeyi düşünseniz ne güzel olur  ;) :D [/quote]

arkadaş sanırım C için anlatmış
C++ da böyle oluyordu :

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello World" << endl;

  return 0;
}


Lover
twitter.com/furkan_kalkan1

sem

Alıntı yapılan: sem0900 - 16 Aralık 2010 - 22:24:47
...
Örneğin standart giriş ve çıkış fonksiyonları C için stdio.h dosyası içerisinde bulunuyor.
...

Aynen dediğiniz gibi C için...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

furkankalkan

arkadaş C++ demiş ama C anlatımı görünce şaşırdım doğrusu :D
Lover
twitter.com/furkan_kalkan1

sem

@dewilman, arkadaş hello world yazmak için 6 7 satır gerekiyor demiş... Bu satırlar nelerdir C ve C++ için,  kullanılacak başlıklar dahil edilir, ana fonksiyon açılır, ekrana yazdırılır, geri dönüş belirlenir. Bu kısımlarda C ya da C++ fark etmediği için arkadaşın anlamadığı 6 7 satırı açıklamak için C üzerinden anlattım... Mantık olarak tamamen aynı... Eğer mantıken yanlış olan bir şey varsa bu kısımlarda ben de öğrenmek isterim, C++ bilmiyorum çünkü...

Yani demek istediğim arkadaşa C++ ya da C'yi bir ileti ile anlatmaya çalışmadım, kafasına takılan 6 - 7 satırı açıklmaya çalıştım...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

furkankalkan

Lover
twitter.com/furkan_kalkan1

bahadirhtp

Başlığı görünce hemen atladım umarım yardımcı olursunuz (:
bir kaç soru ve programım var..

#include<iostream>
int main()
{
int x=2;
int fnc1(int);
cout<<"Before fnc call x="<<x<<endl;
fnc1(x);
cout<<"After fnc call x="<<x<<endl;
}
int fnc1(int x)
{return x=x*x; cout<<"Within fnc x="<<x<<endl;}

nedense x'i fonsıyona sokmuyor!!!

#include <iostream>
#include <math.h>
using namespace std;
template <class T>


T fnc(T x) {return x*x;}

int main()
{
    int x=2;
    cout<<""<<x<<endl;


    double x=2.5;

   cout<<""<<x<<endl;
}

T.cpp: In function 'int main()':
T.cpp:16: error: conflicting declaration 'double x'
T.cpp:12: error: 'x' has a previous declaration as 'int x


gibi bir hata alıyorum, arkadaşım bana her seferınde tanımla derken bunu kasdetmıstı sanırım.
ama aynı X'i hem double hem int nasıl tanımlıycam anlamadım.

bu tanımlama C++'ta neden gerekli, bir kaç kullanım klavuzunda vermıs ama gereklılık ıcerııgını vermemıs.


Alıntı Yapusing namespace std;


ayrıca şablon tanımlamasında "class T" ne anlama gelıyor? class'ın ismi T yani dimi??
template <class T>

#include<iostream>
using namespace std;
inline int fnc2(int x) { return (x*x); }

int main()
{

int x,y; int fnc2(int);
  for( x=0;x<=77;x+=7)
  {  y=fnc2(x); cout<<"x\t"<<x<<"\ty\t"<<y<<endl;

    }

}

tanımlamadıgımı ıdda etsede tanımladım (:
hatayı gorebılen varmı?

Yardımlarınız için şimdiden teşekkür ederim (:
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

hyperThread

#14
ilk soruna cevap vereyim ilk önce. Kodunda hata bulunmakta.

bu senin orjinal kodun

#include<iostream>
int main()
{
int x=2;
int fnc1(int);
cout<<"Before fnc call x="<<x<<endl;
fnc1(x);
cout<<"After fnc call x="<<x<<endl;
}
int fnc1(int x)
{return x=x*x; cout<<"Within fnc x="<<x<<endl;}


bu kod da hatanın düzeltilmiş hali.

#include<iostream>
int main()
{
int x=2;

cout<<"Before fnc call x="<<x<<endl;
[b]x = fnc1(x);[/b]
cout<<"After fnc call x="<<x<<endl;
}
int fnc1(int x)
{
[b] cout<<"Within fnc x="<<x<<endl;
return x=x*x;
}[/b]


koyu renkli kısımlar, kodunda yaptığım değişiklikleri göstermektedir. İlk hata, main fonksiyonu içerisinde, fcn1(int) tanımlamasıdır. Fonksiyonlar, fonksiyon içerisinde prototip olarak tanımlanamazlar. İkinci hata, bir fonksiyon içerisinde return yazdıktan sonraki kodlar, işletilmezler. return satırından sonra program o fonksiyonu sonlandırır ;)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2011 - 20:53:43

İkinci sorunda da aynı hata bulunmakta. Fonksiyonlar, değişken gibi tanımlanmazlar. İkinci programda, main içerisindeki "int fnc2" kısmını silersen, programın çalışacaktır.

template tanımlamasındaki <class T> o fonksiyonun veya sınıfın içerisinde kullanılacak olan değişken tipini gösterir. Mesela

template <class T>
T foo(T fuu);

tanımlaması yaptığında, bu fonksiyonu hemen hemen bütün veri tiplerinde kullanabilirsin. burada T yerine farklı bir şey de yazabilirsin. Bu konu oldukça güzel bir konudur. Aşağıdaki linkte ayrıntılı bilgiler bulunmaktadır.

http://www.learncpp.com/cpp-tutorial/141-function-templates/


bahadirhtp

#15


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2011 - 21:11:37

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 20:59:26

sıte lınkı ıcın tesekkurler ıncelemeye basladım bıle ;)

ayrıca 8 basamaklı bır sayının nasıl ortalamasını nasıl alabılırım?
nasıl parcalayacagım konusnda bır fıkır bulamadım. algorıtm yazarkende benzer seyler yaşıyorum yanı nedense cozum bulma konusunda zayıfım (:


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2011 - 21:08:01

#include<iostream>
using namespace std;

int main()
{
int x=2;
int fnc(int *);
cout<<"Before fnc x="<<x<<endl;
fnc(&x);
cout<<"after fnc x="<<x<<endl;
}

int fnc(int * px)
{*px=(*px)*(*px);
cout<<"Within fnc:"<<*px<<endl;}


anlamadıgım bır nokta var dıgerı calısmazken burda fonksiyon çalışıyor????


#include <iostream>
#include <math.h>
using namespace std;
template <class T>


T fnc(T x) {return x*x;}

int main()
{
    int x=2;
    cout<<""<<x<<endl;


    double x=2.5;

   cout<<""<<x<<endl;
}

bunu  da atlamayalım dıye tekrar koyuyorum (: hazır anlıyan ınsanları yakalamısken (:
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

hyperThread

çalışmıyordan kastın, istediğin gibi mi çalışmıyordu yoksa derleme hatası mı alıyordun??

bahadirhtp

#17
fnc1 fonksıyona sokmuyordu ya hanı bu programda aynısı sadece poınter da ıslem yapıyor ama onda sorun yok



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2011 - 23:14:33



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Mart 2011 - 23:12:19

Oluşturduğum header dosyasını program gormuyor neden olabılır?

#include<iostream>
#include<Student.h>
using namespace std;

void main()
{
student St1;
student St2;
St1.setid(2005);
St2.setid(2006);

cout<<"Studen1:"<<st1.getid()<<endl;
cout<<"Studen2:"<<st2.getid()<<endl;
}


#include<iostream>
#include<string>
class Student
{
private
int id;
char name[20];
float grade;
public
void setid(int id1);
void setname(char* name1);
void setgrade(float grade1);

int getid(),
char *getname();
float getgrade();
};

void Student :: setid (int id1)
{id=id1;}

void Studen :: setname(char* name1);
{strncpy(name,name1,19);name[19]='\0';}

void Student :: setgrade(float grade1);
{grade=grade1;}

int Student :: getid()
{return  id;}

char* Student :: getname()
{return name;}

float Student :: getgrade()
{return grade;}
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

sem

#include<Student.h>

eğer bu ise programı derlerken kaynak kod ile aynı dizine koyarak;

#include "Student.h"  olarak deneyin... ya da

#include "/home/dizin/altdizin/Student.h" şeklinde tam yol belirtmeniz gerekiyor...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Erdem

Burda öğrenci nesnesindeki set ve getleri kullanmak yerine kurucu işlevleri kullanabiliriz. Böylece ortalıkta geçersiz öğrenci nesnesi kalmamış olur.


class Ogrenci
{
/* ... */
public:
    Ogrenci(short numara, string const & adi);
/* ... */
};


Öğrencilerin veri alma işlevini C++'de geleneksel olarak operator>> işlevine farklı anlam yükleyerek (operator overloading) yapabiliriz. Bu kullanım bize giris >> ogrenci; şeklinde direkt olarak öğrencileri okuyabilmemizi sağlar.


class Ogrenci
{
    friend istream & operator>> (istream & giris, Ogrenci const &);
    // burada verileri almak için bir işlev tanımlayabiliriz
/* ... */
};

istream & operator>> (istream & giris, Ogrenci const & ogrenci)
{
    ogrenci = ogrenciOku(giris);
    return giris;
}

int main()
{
    Ogrenci ogrenci;

    /* ... */
    /* 'giris' burada tanimlanmis bir giris akimi olsun */
    giris >> ogrenci;
}


Çıkışı da  gene operator<< işlevi ile yapabiliriz:

ostream & operator<< (ostream & cikis, Ogrenci const & ogrenci)
{
    return cikis << "Numarasi: " << numara << '\n'
                 << "Adi: " << adi << '\n';
}
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

#20
student.cpp:5:56: error: /home/bahadirhtp/Desktop/C++ WORKS/student.h: No such file or directory
student.cpp:8: error: '::main' must return 'int'
student.cpp: In function 'int main()':
student.cpp:10: error: 'student' was not declared in this scope
student.cpp:10: error: expected ';' before 'St1'
student.cpp:11: error: expected ';' before 'St2'
student.cpp:12: error: 'St1' was not declared in this scope
student.cpp:13: error: 'St2' was not declared in this scope
student.cpp:15: error: 'st1' was not declared in this scope
student.cpp:16: error: 'st2' was not declared in this scope
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

sem

Yukarıda Student.h yazmışsınız. Büyük küçük harf duyarlılığına (case sensetive) dikkat etmeniz gerekiyor. Farklı iki dosya algılanacaktır Student.h ile student.h
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

bahadirhtp

yeniyim ama o kadar değil (:
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

sem

=)

Böyle ufak şeylerde çok fark etmiyor aslında... Herkesin gözünden kaçabiliyor =)

"no such file or directory" ile benim aklım tamamen yol(path) hatasına gitti... Ondan böyle söyledim =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Erdem

Bahadır yazdığın koddaki hataları açıklama olarak düzelttim.

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44
Oluşturduğum header dosyasını program gormuyor neden olabılır?


#include<iostream>
// #include<Student.h>
# include "student.h"

c++'nin sunmadığı başlık dosyalarını eklerken "" kullanıyoruz
Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

using namespace std;

//void main()
int main ()

void main'in doğrusu int main olacak. bu hem c++ hem de yeni c standartında böyledir.

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

// #include<iostream>
// #include<string>
// bunlara gerek yok
class Student
{
private:

: eksik ayrıca biz bir şey yazmasak bile bir sınıf içerisinde veri  elemanları varsayılan olarak private'dır

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

public:

: eksik
Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

    void setid(int id1);
    void setname(char* name1);
    void setgrade(float grade1);

c++'de char * tercih edilmez (1)

c++'nin doğal ondalık sayı türü double'dır (2)

buradaki set ve get işlev bildirimlerine eğer sınıf kurucusunu kullansaydık ihtiyaç duymazdık. (3)

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

   
    int getid();


, yerine ; olacak

ayrıca nesne üzerinde değişiklik yapmayan işlevleri const olarak  bildirmeliyiz. const doğrulaması (correctness) c++'de önemli bir   konudur. böylece bu işlevin Student sınıfı üzerinde değişiklik yapmayacağına söz veriyoruz

          int getId () const;
   

Alıntı yapılan: bahadirhtp - 24 Mart 2011 - 22:04:44

void Student :: setname(char* name1);

t eksik
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik