Yazılımlar / Diğer Programlar
C++ Konsol Uygulamaları Yazmayı Öğrendim Sırada Ne Var?
C++ Konsol Uygulamaları Yazmayı Öğrendim Sırada Ne Var?
-
Selamlar. C++ için kod yazmayı öğrendim. cin, cout, cmath kütüphanesi, fonksiyonlar, diziler, dizilerde string manipülasyonu gibi temel konuları öğrendim. döngü içinde döngü kullanarak elmas, üçgen, vb şekilleri çıkartabiliyorum girdiğiniz cümlede hangi harften kaç tane var falan bunları zorlanmadan yazıyorum. yaptığım uygulamalar konsol ekranında çalışıyor. 1. bölüm bitti fakat 2. bölüme nasıl geçiliyor? grafik arayüzüne sahip bir program nasıl yapıyoz şimdi bi el atın YARDIM EDİN! driver yazanlar varmış donanımhaberde nasıl yazıyolar nereden öğrendiler? Saygılar sevgiler teşekkürler.
-
How to programming gui with c++?
how can i learn driver programming?
İngilizce bilmiyorsan önce İngilizce öğren.
Hiç kimsenin sana adım adım bak şöyle driver yazacaksın şunu koyacaksın şunu çıkaracaksın gibisinden yardım edeceğini sanmıyorum.
Google en iyi arkadaşın. Yukarıdaki gibi arama yapıp çıkan sonuçları delik deşik edersen öğrenirsin.
-
1. Kaan Aslan'ı takip et. C ve Sistem Programcıları Derneği'nin web sitesini dolaş, makaleleri-dökümanları oku.
2. NYP konusunda kendini geliştir. Bu konuda JAVA kaynaklarından yararlanmanı tavsiye ederim.
3. Veri yapıları konusunu atlama. İkili ağaç, bağlı listeler...
4. STL'yi öğren. Şablonların ne işe yaradığını yala yut. JAVA ile ilgili bildiğin şeyleri unut bu sırada.
5. Bir framework daha öğren. wxWidgets, MFC, QT... Herhangi biri.
Başıma gelenler, başımdan geçenler ve çevreden gözlemlediğim kadarıyla aktarıyorum. Deneyimle sabit:
1. C++ biliyorum diyenlerin çoğu oturduğunda düzgün C++ kodu yazamazlar. C kodu da yazamazlar. Ya C mantığıyla cpp dosyası hazırlarlar ya da tam tersi. Sallamasyon. Çok bilen bilmiyor demektir.
2. Dil amaç değil, araçtır. Unutma. X dili ile y alıştırmasını çözebiliyor olmak çok bir şey kazandırmaz. Dilin ve dille birlikte kullanılması önerilen platformun dışına çıkmadan projeni bitirebiliyorsan öğrenmişsin demektir. Sürüden ayrılanı kurt kapar çünkü.
3. Eğer meslek olarak programcılık düşünüyorsan dil bilmenin yanında yazılım mühendisliğinin kurallarına da uymalısın. Hebele-hübele kod yazılmaz. Hatta kod yazma, işin zaman olarak ufak bir kısmını oluşturur.
4. C++'ın istisna mekanizması, STL ve şu anki işimde pratik bir kullanım alanı olmamasından dolayı C++'den vazgeçeli çok oldu. Söylediğim konuları akılda tutmak bile terlememe neden oluyor. Yarım doktor candan eder. En temel prensipleri bile uygulayamayacaksam neden kullanayım ki? Kısaca çok geçerli bir sebebin yoksa neden C++ öğreniyorsun?
5. C de donanım konusunda geçerli bir dildir. C ile WinAPI kullanabilirsin, Linux'ta donanım sürücüleri yazabilirsin.
-
Windows için grafik arayüzü yapmak istiyorsan varsayılan metot WinForm tasarlayıp link aşamasında Resource segmentine ekleyip Windows.h de tanımlanan api leri kullanarak yaptığın programa bağlamaktır.
Ancak bu eski, platforma bağımlı ve çok uğraştırıcı olan bir yol olduğu için pek kullanılmıyor. Bunun yerine GTK, MFC, wxWidgets veya Qt kullanabilirsin.
Driver yazmak için C++ yerine C kullanılması daha mantıklı olur.
-
YeniHarman bunu yazdı
1. Kaan Aslan'ı takip et. C ve Sistem Programcıları Derneği'nin web sitesini dolaş, makaleleri-dökümanları oku.
2. NYP konusunda kendini geliştir. Bu konuda JAVA kaynaklarından yararlanmanı tavsiye ederim.
3. Veri yapıları konusunu atlama. İkili ağaç, bağlı listeler...
4. STL'yi öğren. Şablonların ne işe yaradığını yala yut. JAVA ile ilgili bildiğin şeyleri unut bu sırada.
5. Bir framework daha öğren. wxWidgets, MFC, QT... Herhangi biri.
Başıma gelenler, başımdan geçenler ve çevreden gözlemlediğim kadarıyla aktarıyorum. Deneyimle sabit:
1. C++ biliyorum diyenlerin çoğu oturduğunda düzgün C++ kodu yazamazlar. C kodu da yazamazlar. Ya C mantığıyla cpp dosyası hazırlarlar ya da tam tersi. Sallamasyon. Çok bilen bilmiyor demektir.
2. Dil amaç değil, araçtır. Unutma. X dili ile y alıştırmasını çözebiliyor olmak çok bir şey kazandırmaz. Dilin ve dille birlikte kullanılması önerilen platformun dışına çıkmadan projeni bitirebiliyorsan öğrenmişsin demektir. Sürüden ayrılanı kurt kapar çünkü.
3. Eğer meslek olarak programcılık düşünüyorsan dil bilmenin yanında yazılım mühendisliğinin kurallarına da uymalısın. Hebele-hübele kod yazılmaz. Hatta kod yazma, işin zaman olarak ufak bir kısmını oluşturur.
4. C++'ın istisna mekanizması, STL ve şu anki işimde pratik bir kullanım alanı olmamasından dolayı C++'den vazgeçeli çok oldu. Söylediğim konuları akılda tutmak bile terlememe neden oluyor. Yarım doktor candan eder. En temel prensipleri bile uygulayamayacaksam neden kullanayım ki? Kısaca çok geçerli bir sebebin yoksa neden C++ öğreniyorsun?
5. C de donanım konusunda geçerli bir dildir. C ile WinAPI kullanabilirsin, Linux'ta donanım sürücüleri yazabilirsin.
Soğuktan düğme gibi büzmüştüm 😀
-
SkynetX bunu yazdı
How to programming gui with c++?
how can i learn driver programming?
İngilizce bilmiyorsan önce İngilizce öğren.
Hiç kimsenin sana adım adım bak şöyle driver yazacaksın şunu koyacaksın şunu çıkaracaksın gibisinden yardım edeceğini sanmıyorum.
Google en iyi arkadaşın. Yukarıdaki gibi arama yapıp çıkan sonuçları delik deşik edersen öğrenirsin.
daha önce bu yollardan geçmiş kişilerin tecrübelerini almaya geldim. google ı kullanmayı gayet iyi biliyorum öyle bir yazmışsın ki sanki şu program hata verdi crackini nasıl yapacağım diye soru sordum ulan gui programlamadan bahsediyoruz burada ne google ı?yukarıdaki diğer mesajlara bak bir de bu mesaja bak. şu tarz bir mesaj yazmak yerine ;"http://www.functionx.com/win32/Lesson07.htm bu site Windows programlarını API'ler ile geliştiriyor, bu yüzden sana bu kadar karışık gelmiştir.Eğer amacın sistem programlama değil, basit GUI uygulamalar oluşturmaksa hiç GUI API'ye bulaşma derim.İllede C++ yazacaksanda MFC sınıflarını kullan.Bunlar API sınıflarını sarmalar ve örneğin bir GUI uygulaması oluşturmayı daha basitleştirir." neden GOOGLE A BAKSANA HERŞEYİ BİZDEN BEKLEMEYİN moduna giriyorsun güzel kardeşim?
edit: google'a bodoslama dalmak yerine tavsiyeler alarak dalmayı uygun gördüm.
-
C++ ile bir ilgim yok. Aynı soru yine de benim de bir süre önce aklıma takılmıştı ve biraz araştırdım. Bir yabancı forumda daha önce duymadığın yeni bir kütüphane önerilmişti. Bir bak istersen https://www.sfml-dev.org/
emrah20 tarafından 27/Şub/18 21:09 tarihinde düzenlenmiştir -
GuArDiAn55 bunu yazdı
Yazı yazarken aslında biraz ifade eksikliği oluyor. Sanki bağırıyormuşsun gibi hissedilebiliyor. :))
Öncelikle cidden Google kullanmadığını düşündüm. Eğer kullanıyorsan özür dilerim bu şekilde düşündüğüm için.
Şimdi, Türkiye 'de C++ kullanan C++ ı deli gibi bilen adam cidden iki elin parmaklarını geçmez. Onların da ben internette takıldıklarını pek görmedim. Yine ne varsa yabancılarda var.
Mesela sürücü programlama ile ilgili bilgi ararken Quora, Reddit gibi yerlerde Nvidia 'dan Intel 'den mühendisler gelip cevap verebiliyor. Bizzat senin sorduğun bir soru da olabilir bu.
Şu an mesela Reddit 'te Bill Gates sorulara cevap veriyor.
Bizim millet cidden bu işi bilmiyor. Bloglara bakıyorsun boktan bir blog tasarımı ile boktan bir Türkçe ile bir şeyler anlatmaya çalışmış. Ne yazdığını da anlamıyorsun. İstisnalar tabi ki var. Türk olan ve mükemmel işler yapan insanlarda var. Ama bunlar çok az. Ve bunların da bir çoğu bloglarını Türkçe dilinden İngilizce diline çevirdiler. İngilizce yazıp tüm dünyaya hitap etmek istiyorlar.
Türkçe; yazıp okumak acayip keyif aldığım bir dil ama globalde bilim dili değil malesef (en azından şu an).
Bu sebeple İngilizce olarak önümüzde erya deniz milyonlarca kaynak var.
------------------------------------------------------------
Qt kullanabilirsin. Kendi IDEsi, mükemmel ve bol dökümantasyon, C++ 'ın en modern sürümlerini kullanabileceğin bir geliştirme ortamı sunuyor. Otomotiv, tüketici elektroniği üreticileri tarafından yoğun bir şekilde kullanılıyor. Yanlış bilmiyorsam Adobe 'un programlarında profesyonel sürümü kullanılıyor. Qt Creator içerisinde kendi form tasarlama aracı da var. Kullanmayı öğrenince Visual Studio/C# form tasarlama aracından daha esnek daha kullanışlı geliyor.
Qt kullan derim. Hem ilerde Python ile de aynı, tanıdık API leri kullanırsın.
Bunun dışında wxWidgets, GTK++ 'da var. Windows kullanıyorsan Visual Studio ile kullanabilirsin.
MFC falan kullanmanı ben önermem. Hem saydığım kütüphanelere göre altseviye Win32 API leri bol bol kullanacaksın hem de çapraz platform olmayacak. Eğer bir program yazıyorsan çapraz platform olması iyidir(en azından bana göre :)).
Aslında C++ ile birlikte kullanılabilecek onlarca GUI kütüphanesi var. Say say bitmez.
----------------------------------------------------------------
Sürücü programlama ise başlı başına bir derya. İşletim sistemlerini de çok iyi derecede bilmen gerekir ki sürücüler işletim sistemlerine çok bağımlıdırlar. C++ ile programlanabilse de C ve ASM tercih edilir genelde.
-
Aziz kardesim, programlama konsol -> gui -> web diye gitmez, "konsol uygulamalari yazmayi ogrendin sirada ne var"? Kullandigin C++ derleyicisi de bir konsol uygulamasi, onu yazmayi ogrendin mi?
Programlari kafanda cok yuzeysel kategorilere ayirmissin, dis gorunusune ve kullanici arabirimine gore.
Genelde programlama iki genel kategoriye ayrilir, sistem programlama ve uygulama programlama. Bunlar yine pek cok alt dala ayrilir. Bunlari ve nihai amacinin ne oldugunu ogrenip daha sonra nerden devam etmek istedigine karar verebilirsin.
C++ cok kotu bir baslangic, toplam 20 programlama diline yetecek kadar kural ve istisnalari olan cok karmasik bir dil. Hic bir zaman bu dile tamamen hakim olamazsin. Sebebi cok fazla kurali olmasi degil, insanlar arapca bilmeden kuran ezberliyorlar, sebebi, kullanmadigin ozellikleri ve kurallari unutmaya mahkum olman. ve C++ yazarken ancak dilin %5-10 unu kullanirsin.
Bunun yaninda her yeni C++ standartinda sifirdan bir programlama diline yetecek kadar kural eklenir cikarilir degistirilir.
Ne yapmak gerek peki, C yi cok iyi ogrenmek gerek. Sistem programlamada neredeyse tamamen C kullanilir. C++ genelde oyun yazarken kullanilsa da bu is artik hazir game engine'lere ve bunlarin sundugu scripting dillerine kalmis durumda.
GUI gibi konularda da C++ kotu bir secim, C# ve Java gibi diller varken. Yine de C++ ile GUI yapacagim diyorsan en kolay yol C++ Builder ile yapmaktir. QT yi denemedim, @j4x efendi bu konuda bilgilendirebilir.
Driver'a gelince, aslinda driver yazmanin pek bir zorlugu yok, ancak kernel modda calisan kodun hata konusunda affi olmaz. Direkt windows'da mavi ekran (BSOD) linux da kernel panic gorursun. Yani tum sistem crash olur.
Ikincisi windows'da artik kendi driver'ini yazsan bile dagitamazsin. 64 bit sistemlerde digital imzasiz driver yuklemeye izin verilmez. Driver icin gerekli code signing imzalari normal uygulamalardan cok daha zor aliniyor, guvenilir bir firma oldugunu ispatlaman lazim.
Ucuncusu, driver isletim sisteminin ayrintilariyla cok ilgilidir, windowsda da linuxda da driverlarin arabirimi ayni, windows da CreateFile ile Linuxda open ile acabilirsin, Windowsda ReadFile, WriteFile, DeviceIOControl, linuxda read, write, ioctl ile okuma yazma yonetme yaparsin. Ama kendi icinde cok farkli mimariler var.
Windows'da driverlar ayri olarak derlenmis ve baglanmis dosyalar iken (exe, dll gibi) linuxda derlenmis ancak baglanmamis dosyalardir, sistem calisirken link edilir kernele.
Bunlarin disinda windowsda katmanli driver mimarisi vardir, disk driveri / volume manager driveri / ntfs dosya sistemi driveri diye low levelden high level e dogru gider, istedigin katmana kendi driver ini ekleyip cikarabilirsin, linuxda bu var mi bilmiyorum, muhakkak muadili vardir, yine @j4x bilgilendirebilir merak edersen.
Benim sana tavsiyem, boyle belli bir isletim sistemine veya islemci mimarisine bagimli bilgilere fazla takilmaman, ozellikle de yeni programciysan. Bu isim 80 yildir degismemis temelleri var, bunlari cok iyi ogrendigin zaman belirli bir sistemin ya da mimarinin ayrintilarina hakim olman cok kisa zaman alir.
- Temel algoritmalari ve veri yapilarini cok iyi ogren. @yeniharman'in soyledigi gibi, linked list, binary search tree, trie, hash table vs vs.
- En az bir programlama dilinde tamamen uzman ol.
- Isletim sistemlerinin temel ozelliklerine hakim ol (belli bir implementasyona bagli kalmadan) mesela dosya, dosya sistemi, program, process, thread, task scheduling, kernel, shell, user mode, kernel mode vs vs.
Daha sonra kendi yolunu bulursun zaten. Onunde cok yol oldugunu dusunuyorsan sana soyle bir teselli vereyim, bu isi ogrenmesi zevkli ogrendikten sonrasi degil, hayalini kurdugun her uygulamayi yazabilecek seviyeye geldikten ve pek cogunu yazdiktan sonra programlama eskisi kadar zevkli gelmiyor, ozellikle de kesfetme duygusu bittikten sonra.
-
Windows ile birlikte gelen GDI+ var. Herhangi bir şeyi ilave kurmaya gerek kalmadan C++ ile Gui programlar derleyebilirsin.
https://flylib.com/books/en/2.474.1.80/1/
http://www.neptunecentury.com/blogs/c-cpp/windows/simple-gdi-plus-drawing-example
http://www.c-sharpcorner.com/article/gdi-tutorial-for-beginners/
https://msdn.microsoft.com/en-us/library/windows/desktop/ms533802(v=vs.85).aspx
emrah20 tarafından 28/Şub/18 16:07 tarihinde düzenlenmiştir -
Yukarıda eklediğim örnekleri Dev C++ ile derlemeye çalıştığımda hata aldım. C++ bilmediğim için de hataları düzeltemedim. Bilgi olsun.