[]

C++ başlangıç kitabı, egzersizler vs

Tez ayağına şu C++'ı öğrenmeye ve deyim yerindeyse kısa zamanda hatmetmeye çalışıyorum. Yalnız cplusplus.com'daki rehberle bir yere kadar ilerleyebiliyorum. tamam pointer vs. gelene kadar her şey iyi sayılırdı ama konular ilerledikçe structlar classlar derken olay çığırından çıkmaya başladı.

İhtiyacım olan sağlam bir C++ kitabı ve güzel egzersizler. Hani konu ile ilgili en son diyecek ki bana şöyle bir kod yaz şunu yapsın. eğer kodu çalıştırmayı becerirsem şahane de ne olur ne olmaz diye çözümlerinin(kodlarının) da bulunması tadından yenmez olur. böyle örnek problemler, ders notları vs. de ayrıca tarafımdan takdirle karşılanır.

Ne yapmaya çalıştığımı da söyleyeyim. Genetik algoritma yazmam gerekiyor ama öyle böyle değil. Tam ismiyle An Interactive Method Using Infeasibility Driven Genetic Algorithms for Multi-Objective Decision Making. Yani birden fazla kritere sahip ve kısıtları olan bir optimizasyon problemimiz var, buna uygun bir evrimsel algoritma yazacağım ve bunun interaktif kısımları da olacak.

 
C++ secmen icin cok onemli bir sbebein var mi? Zaten interaktif GA olacaksa hizda bottleneck interaktif fitness degerlendirmesi yapacak insan olacak, bu durumda hizin cok asiri onemli oldugunu dusunmuyorum. C++ hele de programlama tecruben yoksa tez asamasinda sac bas yoldurur sana. Daha high level bir dilde yapmayi denemeyi dusunur musun? Python bicilmis kaftan bu is icin ornegin...


  • kurukafa  (15.01.10 20:58:23) 
S.B.Lipmann, J.Lajoie, Moo, E.B., C++ Primer, Addison Wesley

Weiss, M.A., Data Structures and Problem Solving Using C++, Addison Wesley

N.Dale, C++ Plus Data Structures, Johns and Bartlett

H.M.Deitel, P.J.Deitel, C++ How To Program, Prentice Hall

İngilizce kaynak olarak önerebileceğim bunlar, üstte belirtildiği gibi illaki c++ olacak diye bir zorunluluğun yoksa daha high level bir dil kullanman yararına. Ancak her dilin kendine göre artıları eksileri oduğu için, şu anki programlama seviyen(c++,pointers) ile yapacağın projenin bir taslağını oluştur kağıt üstünde, sana ne gerekiyor, bir programlama dilinin hangi özelliği olmalı ki o senin işine yarasın, bu konular üzerinde düşün. Sonra bir kaç dil ile ilgili bir kaç araştırma yap(mesela yukarıda bahsedildiği gibi python senin istediğin şeyleri yapabiliyorsa c++'a göre tercih sebebi olabilir).

Kitaplar Hakkında:

C++ Primer, C++ sözlüğü gibidir, genel olarak neredeyse herşeyden bahseder örnekli ve açıklamalıdır. Baştan sona okunarak kitaptan birşeyler kapma imkanın vardır. Kafan kodunla ilgili birşeye takıldığında açıp bakılan referans içeriğine sahiptir.

Dale'in kitabı data structures'ları öğretirken bol bol örnekte bulundurur, tavsiye ederim. Data Structures bilmek şart azizim(Kişisel yorumum).
  • zamanin otesinden gelen edit  (16.01.10 01:01:50) 
programlama dillerinden birine hakim değilsen bence yanlış konu seçmişsin. öncelikle c++'ı öğrenmek için oop bilgisine sahip olmak gerek, bunları öğrenmekten başlamak gerek ki struct, class gibi şeyleri öğrenesin. pointer denen olay da herhangi bir programlama dilini ilk defa öğrenen insanların canını en çok sıkan, en zor öğrenilen şey.

sanırım matematikçisin. ben de uğraşmak zorunda kalmıştım genetik algoritmayla yapay zeka dersi projesi için. onun için internette örnek kod da yok. biraz kötümserliğe sevketmek gibi olacak ama bu seviyeden c++'ı hem de genetik algoritma yazacak kadar öğrenmen zor kısa sürede. bir algoritmayı çıkarmak bilimsel bir iş ve işin keyifli ynaı, implementasyonunu bir programlama dilinde yapmaksa işin hamallığı. eğitim hayatım boyunca teoriyi sevip implementasyonundan nefret ettim, kolay gelsin.

edit: bu arada deitel'in kitabı iyidir. c++ öğrenmek için önce data structures öğrenmen lazım. mühendislik bölümünde önce data structures öğretirler, sonra oop. deitelin kitabı ikisini de işliyor.
  • uckac  (16.01.10 03:13:48 ~ 03:15:05) 
endüstri mühendisiyim. geçmişte c ile işim oldu, aşinalığım var (epey geçmişte -tek haneli yaşlarda- babam sağolsun basic ile de işim oldu). database management systems dersini aldım ama daha çok sql üzerineydi. bizim bölüm genelde böyle kodlamalar için c kullanıyor. evet düşük seviye bir dil olacağı için biraz kafayı sıyırtacak bana ama bu dili de öğrenmek gerekiyor istediğim şeyleri yapabilmek için. kolay olsun diye matlab da kullanabilirdim ama inanın bana o daha zor geliyor şu an için. bir arkadaşın demesiyle de c öğreneceğine c++ öğren diye c++ işine girdim.

duyduğum bildiğim kadarıyla bu dillerden birini öğrendikten sonra (hele low-level ise) diğer dilleri öğrenmek olabildiğince kolay hale geliyormuş. python'ı arkadaş tavsiye etmişti ama dediğim gibi eğer ileride de kullanacaksam zorunu öğrenmek lazım önce. python'a tahminim çoğunuz c vb bir dili kullandıktan sonra geçtiniz o yüzden kolay geliyor.

aldığım dersler sağolsun hayatım modelleme, parametric design, verimlilik vs üzerine gidiyor. üzerinde çalıştığım projenin referans aldığı modelin bile "computational complexity" denen mereti epey yüksek, o yüzden bana mümkün olduğunca verimli çalışan bir kod lazım (python'ın hız bakımından bu kadar yakın olduğunu bilmiyordum c++'a).

Kısaca;

*Başka projeler için c++ öğrenme gerekliliği
*C++'ı devirince başka dilleri öğrenmesinin kolay gelme ihtimali
*Zamandan tasarruf.

beni bu yola itti :)
  • jesters cap  (16.01.10 08:10:40) 
C++'nin, C üzerine eklemeli bir dil olduğunu düşünürsek, önce C'yi ve ardından C++'yi öğrenmen sence daha doğru olmaz mı? C oldukça minimal ve basit bir dil (K&R bile önsözünde küçük ve yalın bir dil olduğu üzerinde duruyor). Ayrıca bu ikisini sırayla öğrenmek, iki farklı paradigmayı (imperative/structured, object-oriented) aynı dil ve sentaks üzerinde daha iyi ayırt etmeyi sağlıyor bana kalırsa. C/C++ dışında kalan çoğu yüksek seviyeli dil, en başta ürüne odaklanmış olduklarından, öğrenim açısından pek doğru tercihler olduğunu düşünmüyorum (kısa vadede faydalı gibi görünseler de); tıpkı BASIC'in çok yanlış bir ilk dil tercihi olması gibi.

Resmi spesifikasyonların yalın ve kesin tanımlarına danışmanın yanı sıra, C ve C++ için iki mükemmel kaynak olarak, Bruce Eckel'in online olarak ücretsiz dağıttığı kitapları ve Necati Ergin'in C kitabını kesinlikle öneririm.

Bruce Eckel, www.mindview.net
Necati Ergin, www.csystem.org (Kitap Mecidiyeköy'deki derneklerinde mevcut)
  • carcass  (17.01.10 09:50:04 ~ 09:57:03) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.