Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
OOP Yapıcıları - Bilmeniz Gereken Yapıcı Türleri (Ustalığın Temelleri)
OOP Yapıcıları - Bilmeniz Gereken Yapıcı Türleri (Ustalığın Temelleri)
Bu videoda, farklı Yapıcı türlerini, amaçlarını ve programlamada neden gerekli olduklarını tartışacağız. Örnekler vereceğim ve İnşaatçıların arka plan çalışmalarını açıklayacağım. Ama konuya girmeden önce, yıllardır kullandığım PBS Studio adlı bir aracı önermek istiyorum. Hataların izlenmesine ve kod kalitesinin iyileştirilmesine yardımcı olan güçlü bir statik kod analiz aracıdır. Çeşitli IDE'lerle kolayca bütünleşir ve C, C++, C# ve Java gibi dilleri destekler. İndirme bağlantısını bulabilir ve hatta öğrenciyseniz ücretsiz olarak edinmenin yollarını keşfedebilirsiniz. Şimdi videoya dönelim.
Başlamak için, "ad", "ad", "soyadı", "yaş" ve "email" adlı genel üyelerle "Kullanıcı" adında bir sınıf oluşturalım. Şu anda, oluşturduğumuz her kullanıcı için bu özelliklere manuel olarak değer atıyoruz. Ancak, kullanıcı sayısı arttıkça bu yaklaşım uygulanamaz hale gelir.
Bunun yerine Yapıcıları kullanarak daha iyi bir çözüm keşfedeceğiz. Yapıcılar, nesneleri oluşturmak için kullanılır ve nesne özelliklerini başlatma sürecini otomatikleştirir. İnşaatçıların arka plan çalışmalarını örneklerle açıklayarak başlayacağız.
Demo amaçlı olarak ikinci kullanıcıyı kaldırıp birinci kullanıcının bilgilerini yazdıralım. Programı çalıştırdığınızda, çıktının firstName, lastName ve email için boş değerler ve yaş için büyük veya küçük bir sayı gösterdiğini fark edeceksiniz. Bunun neden olduğunu ve herhangi bir hatanın olmadığını keşfedeceğiz.
Bu davranışın arkasındaki sebep, C++ tarafından sağlanan varsayılan Oluşturucu'dur. Özellikleri, yaş için gördüğümüz büyük sayı gibi varsayılan değerlerle başlatır. Ancak, "test" gibi basit bir değişkeni başlatmadan oluşturduğumuzda, bir hatayla karşılaşırız çünkü basit tiplerin varsayılan Oluşturucuları yoktur.
Şimdi Yapılandırıcıların özelliklerini inceleyelim. İlk olarak, Yapıcılar sınıfla aynı ada sahiptir ve dönüş türü yoktur. İkincisi, sınıfın halka açık bölümüne yerleştirilmeleri gerekir. Üçüncüsü, varsayılan Oluşturucuların parametresi yoktur. Dördüncüsü, siz oluşturmazsanız, C++ otomatik olarak varsayılan bir Oluşturucu oluşturur. Beşincisi, parametreleştirilmiş Oluşturucular, nesne özelliklerini başlatmak için parametreler alır. Son olarak, o sınıftan bir nesne oluşturulduğunda varsayılan bir Yapıcı otomatik olarak çağrılır.
Özelliklere varsayılan değerler atayarak kendi varsayılan Oluşturucumuzu uygulayalım. Bu değişiklikle, her kullanıcı oluşturduğumuzda, varsayılan Oluşturucumuz çağrılacak. Artık kullanıcı bilgilerini yazdırdığımızda, atadığımız varsayılan değerleri göreceğiz.
Devam ederek, ikinci tür Oluşturucuyu, parametreleştirilmiş Oluşturucuyu keşfedelim. Varsayılan Yapıcıdan farklı olarak, parametreleştirilmiş Yapıcı belirli değerleri parametre olarak kabul eder ve bunları nesne özelliklerini somutlaştırmak için kullanır. FirstName, lastName ve age için parametreleri alan parametreli bir Oluşturucu örneği vereceğim.
Bu parametrelerle, verilen değerleri karşılık gelen özelliklere atayabiliriz. Bu, doğrudan nesne oluşturma sırasında belirli bilgilerle kullanıcılar oluşturmamıza olanak tanır.
Bu, İnşaatçıların temellerini ve kullanımlarını kapsar. Gelecekteki videolarda daha fazla örnek ve içgörü için bizi izlemeye devam edin.
C++'da arkadaş işlevleri ve sınıfları (Yeni başlayanlar için programlama)
C++'da arkadaş işlevleri ve sınıfları (Yeni başlayanlar için programlama)
Bu videoda, size C++'da arkadaş fonksiyonları ve arkadaş sınıfları hakkında bilgi vermekten heyecan duyuyorum. Programlamadaki bu arkadaşlık kavramı, gerçek hayattaki arkadaşlığa benzer. Tıpkı arkadaşlarınızın hayatınızın diğerlerinin sahip olmadığı özel alanlarına erişimi olduğu gibi, nesne yönelimli programlamadaki arkadaş işlevleri ve arkadaş sınıfları da bir sınıfın özel ve korumalı üyelerine erişime sahiptir.
Bu videoda arkadaş fonksiyonlarını ve arkadaş sınıflarını nasıl ve ne zaman kullanacağınızı öğreneceksiniz. Göstermek için Visual Studio Topluluğunu kullanacağız ve ayrıca size Visual Assist adlı mükemmel bir uzantıyı tanıtacağım. İndirme linkini aşağıdaki açıklamada bulabilirsiniz. Visual Assist, birçok profesyonel geliştiricinin, özellikle büyük projeler veya Unreal Engine gibi motorlarla oyun geliştirme için kullandığı akıllı bir kodlama asistanıdır. Kod tamamlamayı geliştirir, yeniden düzenleme için akıllı öneriler sunar, kod parçacıkları sağlar ve projenizde gezinmeyi ve aramayı geliştirir.
Şimdi arkadaş fonksiyonları konusuna geçelim. Bu kavramı açıklamak için bir problem oluşturalım ve bunu friend fonksiyonlarını kullanarak çözelim. Üç kenarı da aynı uzunlukta olan bir üçgeni temsil etmek için "EquilateralTriangle" adında bir sınıf oluşturacağız. Sınıf, kenar uzunluğu, çevre ve alan için özel değişkenlere sahip olacaktır. Kenar uzunluğunu ayarlamak ve çevreyi ve alanı bu yöntem içinde hesaplamak için bir genel ayarlayıcı yöntemi de ekleyeceğiz.
Ancak private üyelere class dışından erişmeye çalışırsak hatalarla karşılaşırız. Çözümlerden biri, özel üyeleri herkese açık hale getirmek veya herkese açık alıcılar oluşturmaktır, ancak bu onları herkese ifşa eder. Bunun yerine, seçerek erişim izni vermek için arkadaş işlevlerini kullanabiliriz. Üçgenin çevresini ve alanını yazdıracak "PrintResults" adlı global bir işlev oluşturacağız. Bu fonksiyonu EquilateralTriangle sınıfının arkadaşı ilan ederek private üyelere erişim sağlar.
Ancak unutmayın, arkadaş işlevlerinizi dikkatli bir şekilde seçin ve kapsüllemeyi sürdürmek için aşırı kullanımdan kaçının. Ek olarak, C++'da arkadaş sınıflarınız da olabilir. "PrintResults" fonksiyonunu "Homework" isimli bir sınıfın içine taşıyıp public üye fonksiyon yaparsak, "Homework"ü "EquilateralTriangle"ın arkadaş sınıfı olarak ilan edebiliriz. Bu sayede "Homework" sınıfı "EquilateralTriangle"ın özel ve korumalı üyelerine erişebilir.
Programlamadaki arkadaşlığın karşılıklı veya kalıtsal olmadığına dikkat etmek önemlidir. Friend işlevlerini ve Friend sınıflarını dikkatli bir şekilde kullanın ve devralma ve işleç aşırı yüklemesinin Friend işlevleri için yaygın kullanım durumlarını da içerdiğini unutmayın. Daha fazla bilgi ve ilgili bir ev ödevi alıştırması için operatörün aşırı yüklenmesiyle ilgili videoma (açıklamada bağlantısı verilmiştir) göz atın.
Umarım bu videoyu, programlama projelerinizde arkadaş fonksiyonlarını ve arkadaş sınıflarını anlama ve kullanma konusunda faydalı bulursunuz. Daha fazla heyecan verici içerik için bizi izlemeye devam edin ve Visual Studio için Visual Assist uzantısına göz atmayı unutmayın!
Programlamada Yıkıcılar: Pratik Gösterim
Programlamada Yıkıcılar: Pratik Gösterim
Bu videoda size programlamadaki yıkıcıları öğreteceğim. Yıkıcıların ne olduğunu, nasıl kullanılacağını ve ne zaman kullanılacağını öğreneceksiniz. Videonun tamamını izlemeyi unutmayın çünkü sonunda size özel bir sürprizim var. Yıkıcılara dalmadan önce, yapıcıları anlamak önemlidir. İnşaatçılara aşina değilseniz, burada ve açıklamada bağlantısı verilen önceki videomu izleyin.
Yıkıcılar, bir nesne yok edilirken çağrılan özel işlevlerdir. Nesne tarafından tutulan bellek veya dosyalar gibi kaynakları serbest bırakmak gibi gerekli temizleme görevlerini yerine getirirler. Bu kaynakların serbest bırakılmaması performansı, kararlılığı düşürebilir ve bellek sızıntılarına yol açabilir.
Yıkıcıları tartışmaya başlamadan önce, size kullanmayı sevdiğim bir araç olan PBS Studio'yu tanıtmak istiyorum. Hatasız daha iyi kod yazmama yardımcı olan statik bir kod analizcisi. Potansiyel sorunlar ve hatalar için kodunuzu analiz eder, üretime geçmeden önce hataları yakalayarak zamandan ve paradan tasarruf etmenizi sağlar. Popüler IDE'lerle entegrasyonu kolaydır ve birden çok programlama dilini destekler. Açıklamadaki linkten indirip ücretsiz deneyebilirsiniz. Öğrenciyseniz, ücretsiz seçenekler için web sitelerini kontrol edin.
Şimdi, yıkıcıları inceleyelim. Yıkıcı, adında yaklaşık işareti (~) bulunan, adı sınıf adıyla aynı olan özel bir işlevdir. Bir dönüş tipi yoktur, herhangi bir parametre almaz ve sınıfınızın genel bölümüne yerleştirilmelidir. Sınıf başına yalnızca bir yıkıcı olabilir.
Yıkıcıları göstermek için, iki özelliğe sahip "Kitap" adlı bir sınıf oluşturalım: "başlık" ve "yazar". Ayrıca bir yapıcı ve bir yıkıcı oluşturacağız. Unutmayın, yıkıcı nesne tarafından tutulan tüm kaynakları serbest bırakmalıdır.
Yapıcının içinde, iletilen parametreleri karşılık gelen özelliklere atayacağız. Yıkıcının içinde, yok edicinin belirli bir kitap için çağrıldığını belirten bir mesaj çıkaracağız.
Şimdi, oluşturucu ve yok edicinin ne zaman çağrıldığını görmek için bazı kitap nesneleri oluşturalım. Programın hatalarını ayıklayacağız ve çağırma sırasını gözlemleyeceğiz.
Sınıfınız işaretçiler içermiyorsa, derleyici otomatik olarak bellek ayırma işlemini gerçekleştirir. Bununla birlikte, işaretçilerle çalışıyorsanız, bellek sızıntılarını önlemek için yıkıcıdaki belleği manuel olarak serbest bırakmanız gerekir. Diziler için "delete[] diziAdı"nı kullanmayı ve serbest bırakmadan sonra işaretçileri nullptr olarak ayarlamayı unutmayın.
Umarım bu video, yıkıcıları ve kaynakları yönetmedeki önemini anlamanıza yardımcı olmuştur. Bir sonraki videomda kopya oluşturucuları keşfedeceğiz, bu yüzden bizi izlemeye devam edin.
C++ Copy oluşturucuları (yeni başlayanlar için uygun eğitim + pratik örnekler)
C++ Copy oluşturucuları (yeni başlayanlar için uygun eğitim + pratik örnekler)
Herkese merhaba, kanalıma hoş geldiniz. Bu videoda sizlere yeni başlayanlar için önemli ama kafa karıştıran bir konu olan kopya kurucuları öğreteceğim. Bu videoyu izlemeden önce, varsayılan ve parametreli oluşturucular da dahil olmak üzere farklı türdeki oluşturucularla ilgili önceki videomu izlediğinizden emin olun (bağlantı açıklamada). Ayrıca, bu konuyu daha iyi anlamanıza yardımcı olacağından, işaretçiler ve dinamik diziler (açıklamadaki bağlantı) hakkındaki videoma göz atın.
Bu videoda, kopya oluşturucular hakkında bilmeniz gereken her şeyi açıklayacağım. Yeni başlayanlar genellikle kopya oluşturucuların arkasındaki konsepti anlarlar, ancak bunların ne zaman ve nasıl kullanılacağının yanı sıra meydana gelebilecek olası hatalar ve hataları anlamakta zorlanırlar. Tüm bu yönleri adım adım ele alacağım.
Bir önceki videomdaki kodu inceleyerek başlayalım. Başlık, yazar gibi özelliklere ve "oranlar" adlı bir işaretçiye sahip "Kitap" adlı bir sınıf oluşturdum. "Oranlar" işaretçisi, kullanıcıların kitap için derecelendirmeler girebileceği dinamik bir diziyi temsil eder. Dizi boyutunu takip etmek için bir "oranlar sayacı" da vardır. İşaretçilere ve dinamik dizilere aşina değilseniz, bu konudaki videomu izlemenizi tavsiye ederim (açıklamadaki bağlantı).
Başlık ve yazarı parametre olarak alan ve bu değerlere dayalı bir kitap nesnesi oluşturan Kitap sınıfı için parametreleştirilmiş bir oluşturucu uyguladım. Yapıcı tarafından ayrılan belleği serbest bırakmak için önemli olan bir yıkıcı da ekledim. Kodunuzdaki gizli hataları ve zayıflıkları tespit etmek için PVS-Studio gibi bir kod çözümleyici kullanmak çok önemlidir. Hataları bulmada ve bunları düzeltmek için önerilerde bulunmada etkili olduğu için PVS-Studio'yu kullanmanızı kişisel olarak tavsiye ederim. Açıklamadaki linkten ücretsiz olarak indirebilirsiniz.
Şimdi kopya oluşturucular konusuna odaklanalım. Bir kopya oluşturucunun amacı, mevcut bir nesneye dayalı olarak yeni bir nesne yaratmaktır. Bir nesnenin kopyasını oluşturmanıza ve onu yeni bir nesne oluşturmak için kullanmanıza olanak tanır. Varsayılan olarak, C++ varsayılan bir kopya oluşturucu sağlar. Ancak işaretçilerle çalışırken hatalardan kaçınmak için özel bir kopya oluşturucu oluşturmak gerekir.
Özel bir kopya oluşturucu olmadan, işaretçilerin kullanılması istisnalara ve hatalara yol açabilir. Şu senaryoyu ele alalım: "Kitap1"in verilerine dayanarak "Kitap3" oluşturmak istiyorum. "Kitap3" oluşturmak için "Kitap1"in tüm özelliklerini kopyalamak istiyorum. Kopya yapıcının devreye girdiği yer burasıdır.
Bir kopya oluşturucu oluşturmak için şu kuralları izleyin:
Kopya oluşturucuyu oluşturalım. Kopya oluşturucuda, orijinal nesneyi sabit bir referans olarak alacağız (const Book& original). Bu, kopya oluşturucunun içindeki orijinal nesnede herhangi bir değişiklik yapılmasını önler.
Şimdi, yeni başlayanların bir kopya oluşturucu oluştururken yaptığı yaygın bir hatayı ele alalım. Hata, yeni bellek ayırmak ve içeriği kopyalamak yerine işaretçiyi doğrudan kopyalamakta yatmaktadır. İşaretçiyi kopyalarsak, hem orijinal hem de kopya aynı hafıza konumuna işaret edecektir. Sonuç olarak, yıkıcı çağrıldığında, belleği iki kez serbest bırakmaya çalışacak ve bu da hatalara yol açacaktır.
Bu sorunu çözmek için, kopya için yeni bellek ayırmamız ve orijinal işaretçinin içeriğini kopyalamamız gerekir. İşaretçiyi doğrudan atamak yerine, yeni bir dinamik dizi oluşturacağız ve öğeleri kopyalayacağız. Bu, orijinalin ve kopyanın ayrı bellek konumlarına sahip olmasını sağlar.
Bu yönergeleri izleyerek, bellekle ilgili hataları önleyen doğru bir kopya oluşturucu oluşturabiliriz.
Umarım bu açıklama, kopya oluşturucu kavramını ve bunların önemini açıklığa kavuşturur.
Kendin Kodla! Tetris - Sıfırdan Programlama (Hızlı ve Basit C++)
Kendin Kodla! Tetris - Sıfırdan Programlama (Hızlı ve Basit C++)
Merhaba! Bugün, kendi Tetris versiyonumuzu yaratmanın heyecan verici yolculuğuna çıkacağız. Kodlamaya geçmeden önce, size ne inşa edeceğimize bir göz atmama izin verin.
Gördüğünüz gibi ekranda klasik bir Tetris şeklimiz var. Kodlamanın gücü sayesinde bu şekilleri döndürebileceğiz. Oyun, parçaların birbiriyle doğru şekilde etkileşime girmesini sağlayan çarpışma algılamayı içerir. Rastgele taşları stratejik olarak yerleştirerek bir çizgiyi tamamlamayı başarırsak, o kaybolacak ve puanımız buna göre artacaktır. Ancak dikkatli olmazsak ve taş yığını tepeye ulaşırsa oyun biter.
Şimdi, neden grafiklerden çok oyun motoruna odaklandığımızı merak ediyor olabilirsiniz. Estetik önemli olup oyuncuları cezbedebilse de, bir oyunun gerçek özü, oynanışı, mantığı, kuralları, zorlukları ve daha fazlasını uygulamaktan sorumlu olan motorunda yatar. Grafik motorları her zaman daha sonra eklenebilir ve hatta oyununuzu güzelleştirmek için bir sanatçı bile getirebilirsiniz. Ancak oyun geliştirmeyi gerçekten anlamak için bir oyun motoru oluşturmanın temellerini kavramanız gerekir.
Başlamak için bazı oyun varlıklarına ihtiyacımız var. Tetris'te bu varlıklar "tetromino blokları" adı verilen farklı şekillerdir. Bu şekilleri, görselleştirmemizi kolaylaştıracak dizeler olarak saklayacağız. Tetris'te kullanılan yedi yaygın şekil vardır ve bunları boş alanlar için nokta (.) ve şeklin kendisi için büyük X gibi karakterler kullanarak temsil edeceğiz. Bu karakterleri düzenleyerek şekilleri görsel olarak tasvir eden diziler oluşturuyoruz.
Şimdi, 2B şekilleri temsil etmek için çok boyutlu diziler kullanmak yerine, tek boyutlu bir dizi kullanacağız ve basit matematiksel hesaplamalar kullanarak indeksleri manipüle edeceğiz. Bu yaklaşım, şekillerin dönüşlerini ve yansımalarını daha verimli bir şekilde ele almamızı sağlar. Her dönüş için uygun dizinleri belirlemek için formüller kullanacağız. Örneğin X koordinatını 4 ile çarparak 90 derecelik dönüş için istenilen indeksi elde edebiliriz. Bu teknik, bizi olası her şekil varyasyonu için ayrı varlıklar oluşturmaktan kurtaracaktır.
Tetromino bloklarının dışında bir de oyun alanına ihtiyacımız var. Genişlik ve yükseklik değişkenlerini kullanarak alanın boyutlarını tanımlayacağız. Bu durumda, 12 hücre genişliğinde ve 18 hücre yüksekliğinde bir alan boyutu ile gideceğiz. Oyun alanının öğelerini temsil etmek için bir dizi işaretsiz karakter kullanacağız. Her hücreye, boş alan, bir şeklin parçası veya sınır duvarları gibi içeriğini belirtmek için bir değer atanacaktır.
Oyunumuzu görselleştirmek için komut istemini ekran arabelleği olarak kullanacağız. Komut istemi penceresinin boyutlarında bir dizi oluşturarak oyun elemanlarımızı bunun üzerine çizebiliriz. Oyunun şekiller, boş alanlar ve sınır duvarları gibi farklı unsurlarını temsil etmek için belirli karakterler kullanacağız. Ardından, dizinin içeriğini komut istemi ekranında görüntüleyeceğiz.
Şimdi oyun döngüsü hakkında konuşalım. Oyun döngüleri, oyunun öğelerinin sıralamasını kontrol ettikleri için herhangi bir oyun motorunun hayati bileşenleridir. Tetris söz konusu olduğunda, oyun döngümüz zamanlamayı, kullanıcı girdisini, oyun mantığını ve çıktı oluşturmayı ele alacaktır.
Farklı sistemlerde tutarlı oynanış sağlamak için zamanlama çok önemlidir. Bilgisayarın hızı ne olursa olsun oyunun aynı hızda çalışmasını istiyoruz. Şekillerin düştüğü ve oyunun güncellendiği hızı kontrol etmek için zamanlama mekanizmalarını kullanacağız.
Ardından, kullanıcı girişini ele alacağız. Tetris'in basit bir komut satırı sürümünü oluşturduğumuz için olay tabanlı girdiye güvenmeyeceğiz. Bunun yerine, ok tuşları veya diğer belirlenmiş tuşlar gibi temel kullanıcı girdilerini ele alacağız.
Bu kodda, özellikle dört tuşa odaklanarak bir oyun için klavye girişi işlemeyi uygulayacağız: sol ok, sağ ok, aşağı ok ve oyun parçasını döndürmek için "Z" tuşu.
Kullanıcı tarafından basılan tuşların mevcut durumunu elde etmek için "get async key state" fonksiyonunu kullanacağız. Tuşların durumunu temsil eden bir diziyi yineleyerek, her bir tuşa o anda basılıp basılmadığını belirleyebiliriz. Bu işlev bir boole değeri döndürür: tuşa basılırsa true, basılmazsa false. Belirli bir anahtarın durumunu kontrol etmek için, her bir anahtar için sanal anahtar kodlarını temsil eden sabit bir dize ifadesi kullanırız.
Bu dört tuşun durumunu kontrol ederek, her bir tuşa basılıp basılmadığını gösteren true veya false değerlerini tutan bir dizi oluşturabiliriz. Bu, süreci basitleştirir ve bize tuşların mevcut durumunu temsil eden bir dizi verir.
Örnek olarak sol tuşu ele alalım. Kullanıcı sol tuşa bastığında, oyun parçasının mevcut konumunun soluna sığıp sığmadığını kontrol etmemiz gerekiyor. Bunu yapmak için, geçerli parçayı, dönüşünü ve geçerli X konumunu dikkate alan "parça sığar" adlı bir işlev kullanırız. Geçerli X konumundan 1 çıkararak, parçanın sola uyup uymadığını belirleyebiliriz. Uygunsa, mevcut X konumunu buna göre güncelleriz.
Benzer şekilde sağ tuş için de benzer bir kontrol yaparak parçanın mevcut pozisyonunun sağına gelip gelmediğini kontrol ediyoruz. Yapabiliyorsa, mevcut X konumunu buna göre güncelleriz.
Kullanıcı aşağı tuşuna bastığında, parçanın dikey hareketini ele almamız gerekiyor. Oyun alanının sol üst konumu her zaman (0, 0) olduğundan, taşı aşağı taşımak için Y konumunu basitçe artırabiliriz. Taşı sola, sağa veya aşağı hareket ettirmenin onu oyun alanı sınırları içinde tutmasını sağlamak için kontroller yapıyoruz.
Kodu optimize etmek için iç içe geçmiş if ifadelerini mantıksal AND işleçleriyle değiştirebiliriz. Bu, kodu basitleştirir ve özlülüğünü artırır. Ek olarak, koşulun sonucuna göre geçerli X konumuna 1 eklemek veya çıkarmak için koşullu ifadeler kullanırız ve kodu daha da düzene sokarız. Kullanıcı "Z" tuşuna bastığında parçanın dönüşünü işlerken aynı optimizasyon uygulanır.
Tetris'te oyun, yerçekimini simüle ederek parçayı saniyenin onda birkaçında bir aşağı doğru hareket etmeye zorlar. Bunu oyun onay sayacını kullanarak başarıyoruz. Başlangıçta taş yavaş düşüyor, ancak oyun ilerledikçe her taş düşüşü arasındaki süreyi kısaltarak oyunu daha hızlı ve daha zorlu hale getiriyoruz. Oyun tiklerini toplayarak ve bunları mevcut hız ile karşılaştırarak, parçayı ne zaman indirmeye zorlayacağımızı belirliyoruz. Bu da taşın düzenli aralıklarla düşmesi ile sonuçlanır ve oyunda yerçekimi etkisi yaratır.
Geçerli taşı oyun alanına kilitlemek için alan dizisini tetromino dizisindeki değerlerle güncelleriz. Bu, tetromino dizisinin her öğesini yineleyerek ve alan dizisindeki karşılık gelen konumu güncelleyerek yapılır. Tetromino dizisindeki bir öğe bir "X" ise, alan dizisindeki karşılık gelen değeri 1 artırırız. Bu, o konumu geçerli parça tarafından işgal edilmiş olarak işaretler.
Oyun alanında bir çizgi oluştuğunda bunu oyuncuya görsel olarak belirtmek istiyoruz. Çizgiyi özel bir işaretleyici ile değiştiririz veya çizginin tamamlandığını belirtmek için başka herhangi bir görsel efekt uygularız.
Tamamlanan çizgiyi görsel olarak gösterdikten sonra, çizgiyi temizlemeyi ve oyun alanını buna göre güncellemeyi ele almamız gerekiyor. Alttan başlayarak oyun alanının her sırasını yineliyoruz ve satırın dolu olup olmadığını kontrol ediyoruz. Bir satır doluysa, tüm öğelerini 0'a ayarlayarak onu temizleriz. Ardından, temizlenen satırı doldurmak için üstündeki tüm satırları bir konum aşağı kaydırırız. Bu işlem, tüm dolu satırlar temizlenene kadar tekrarlanır.
Oyuncunun puanını takip etmek için, her satır temizlendiğinde puanı artırırız. Skor, temizlenen çizgilerin sayısına bağlı olabilir veya oyunun tasarımına bağlı olarak daha karmaşık bir puanlama sistemine sahip olabilir.
Oyun bitti koşullarının üstesinden gelmek için, mevcut taşın oyun alanının tepesindeki ilk konumuna sığıp sığmadığını kontrol etmemiz gerekiyor. Sığmazsa, oyun biter ve oyun döngüsünü durdurur veya gerekli herhangi bir oyun üzerinden eylemi tetikleriz.
Son olarak, oyun döngüsünü idare etmek için düzenli aralıklarla bir güncelleme işlevini tetikleyen bir zamanlayıcı veya benzer bir mekanizma kullanıyoruz. Bu işlev, kullanıcı girişinin kontrol edilmesi, parçanın aşağı kaydırılması ve mevcut oyun durumuna göre gerekli eylemlerin gerçekleştirilmesi dahil olmak üzere oyun durumunun güncellenmesini yönetir.
Özet olarak, bu kod, özellikle ok tuşları ve "Z" tuşu gibi tuşlara odaklanarak bir oyun için klavye girişi işlemeyi uygular. Bu tuşların durumunu kontrol eder, oyun taşının hareketini buna göre yönetir, yerçekimi ve taş kilitleme uygular, tamamlanmış çizgileri temizler, oyun alanını günceller, oyuncunun puanını takip eder ve oyun koşullarını kontrol eder. Oyun döngüsü, oyun durumunun düzenli aralıklarla güncellenmesini sağlayarak dinamik ve etkileşimli bir oyun deneyimi yaratır.
Yeni Başlayanlar İçin C++ TAM KURSU (10 saatte C++ öğrenin)
Yeni Başlayanlar İçin C++ TAM KURSU (10 saatte C++ öğrenin)
Bu tam bir C++ programlama kursu. Amacı sizi başlangıçtan ileri programlama seviyesine çıkarmak olan birçok dersten oluşur. Videonun tamamını izlemenizi tavsiye ederim çünkü sonraki dersler öncekilerden bilgi gerektirir.
içindekiler:00:00:00 – Kursun hedefleri
00:01:31 – Kursa başlamadan önce bunu yapın
00:02:41 – C++'a Giriş (C++ nedir? C++ ile ne tür uygulamalar derleyebilirsiniz? C++ neden oluşturuldu?)
00:06:39 – Kaynak kodu, nesne kodu, derleyici, algoritma nedir?
00:08:42 - Visual Studio 2019 – İlk projeyi oluşturma (kurulum)
00:11:32 - Visual Studio 2019 temelleri anlatıldı ve ilk “Merhaba Dünya” programı
00:29:51 - Değişkenlere giriş
00:44:36 – Değişkenleri adlandırma kuralları
00:52:15 – C++'da veri türleri ve sizeof operatörünün nasıl kullanılacağı
01:01:58 - Veri türü taşması
01:05:00 – ASCII tablosu nedir
01:09:50 - Kelimeleri ASCII'ye şifrelemek için basit, eğlenceli program
01:18:12 - If/else ifadesi (Tek/çift sayıları kontrol eden bir program oluşturun + akış şeması açıklaması)
01:35:52 - İç içe if/else ifadesi (Üçgenin türünü + akış şemasını belirleyen bir program oluşturun)
01:55:50 - C++'da işleçler (aritmetik, ilişkisel, mantıksal, atama işleçleri)
02:21:02 - İki değişkenin değerlerini üçüncü bir değişkenle veya üçüncü bir değişken olmadan değiştirme
02:29:20 – BMI Calculator uygulamasını oluşturun + akış şeması
02:49:55 - Üçlü (Koşullu) operatör (Bir Tahmin oyunu uygulaması oluşturun)
03:01:00 - Switch/case deyimi 1. bölüm (Hesap Makinesi Oluşturma uygulaması)
03:26:36 - Anahtar/vaka bildirimi bölüm 2 (Bir aydaki gün sayısını kontrol eden program oluşturun)
03:39:35 - While döngüsü 1. bölüm + sonsuz döngü örneği
03:53:39 - While döngüsü 2. bölüm (Bir sayının basamaklarını saymak için bir program oluşturun)
04:12:39 - While döngüsü 3. bölüm (Bir sayının basamaklarını tersine çevirmek için bir program oluşturun)
04:25:25 - Do while döngüsü (PIN doğrulama programı)
04:39:09 – While döngüsü ile Do While döngüsü arasındaki fark nedir?
04:40:34 - For döngüsü (Bir sayının faktöriyelini hesaplamak için bir program oluşturun)
04:58:12 – İç içe döngüler (do while döngüsü ve for döngüsü iç içe)
05:11:08 – Döngü için iç içe (Çarpım tablosu uygulaması oluşturun)
05:21:45 – Dikdörtgen şekli çizme programı
05:33:05 – Üçgen ve ters/ters üçgen şekilleri çizme programı
05:44:30 – Fonksiyonlara giriş
05:56:02 – Parametreli/argümanlı fonksiyonlar (çoklu ve varsayılan)
06:11:42 - İşlev dönüş bildirimi (Asal sayıları kontrol etmek için program oluşturun)
06:37:39 - İşlev aşırı yüklenmesi
06:48:06 – ATM uygulaması oluşturun
07:03:03 - Genel işlevler ve şablonlar
07:14:30 – Yineleme ve yinelemeli işlevler
07:30:01 – OOP'ye giriş, Sınıflar ve nesneler nelerdir
07:42:06 – OOP Oluşturucuları ve sınıf yöntemleri
07:57:10 – OOP Kapsülleme, GIT: https://github.com/TrueCodeBeauty/EncapsulationCpp
08:08:31 – OOP Mirası, GIT: https://github.com/TrueCodeBeauty/InheritanceCpp
08:24:59 – OOP Polymorphisam, GIT: https://github.com/TrueCodeBeauty/PolymorphismCpp
08:40:04 - İşaretçilere giriş
08:51:14 - Geçersiz işaretçiler
09:06:27 - İşaretçiler ve diziler
09:19:18 - İşaretçileri kullanarak bir işlevden birden çok değer döndürür
09:34:50 - Dinamik diziler, çalışma zamanında dizi oluşturma/değiştirme
09:48:35 – Çok boyutlu dinamik diziler, İki boyutlu dizi
10:07:00 - PVS Studio kullanarak koddaki hataları algılama
10:17:19 - Bellek Sızıntılarını Açıklama
10:26:25 - Hatalar
C++ FONKSİYONLARI (2020) - Fonksiyonlar nedir?
C++ FONKSİYONLARI (2020) - Fonksiyonlar nedir? PROGRAMLAMA EĞİTİMİ
Kanalımın ilk videosuna hoş geldiniz! C++'ta yeni başlayan biriyseniz, C++ ile çalışmak için anlamanız ve bilmeniz gereken önemli kavramları bulabileceğiniz yeni başlayanlar için C++ çalma listeme göz atmayı unutmayın. Bu videomuzda sadece C++'ta değil çoğu programlama dilinde iyi bir programcı olmak için gerekli olan C++ fonksiyonlarını ele alacağız.
Başlamadan önce, bir sonraki videomu yayınladığımda bildirim almak için lütfen kanalıma abone olun ve zil simgesini tıklayın. Kamera arkası içeriklerini ve geliştirici yaşamının gerçekte nasıl göründüğünü görmekle ilgileniyorsanız, "CodeBeauty" hesaplarım aracılığıyla beni Instagram ve Twitter'da takip edin.
Şimdi fonksiyonlar konusuna geçelim. İşlev, belirli bir sorunu çözmek veya belirli bir görevi gerçekleştirmek için gruplandırılmış bir kod bloğudur. Bir işlev içindeki kod, yalnızca işlev çağrıldığında veya çağrıldığında yürütülür. Her C++ programı, ana işlev olan en az bir işlev içerir. Programınızın yürütülmesi, ana işlevin ilk satırında başlar ve son satırda veya bir dönüş ifadesiyle karşılaşıldığında sona erer (dönüş ifadelerini bu kursun ilerleyen bölümlerinde ele alacağız).
Kendi fonksiyonunuzu oluşturmak için bilmeniz gereken birkaç şey var. İlk olarak, işlevin dönüş türünü belirtmeniz gerekir. Şimdilik, işlevin hiçbir şey döndürmediği anlamına gelen "void" dönüş türünü kullanacağız. Ardından, işlevinize bir ad verirsiniz. Parantezlerin içinde, işlevinizin aldığı tüm bağımsız değişkenleri veya parametreleri tanımlayabilirsiniz. Bu durumda herhangi bir argümanımız olmayacağından parantezler boştur. Son olarak, işlevin gövdesini süslü parantezler içinde tanımlarsınız.
Örneğimizde, "işlev" adında, geçersiz dönüş türü olan ve bağımsız değişken içermeyen bir işlev yarattık. Fonksiyonun gövdesinde, "işlevden merhaba" ifadesini görüntülemek ve bir bitiş çizgisi eklemek için "cout" ifadesini kullanırız. Ancak, yalnızca işlevi oluşturmak, kodunu yürütmez. İşlevi yürütmek için onu çağırmanız veya çağırmanız gerekir. Bizim durumumuzda, ana işlevdeki "cout" ifadesinden sonra işlevi adını ve ardından parantezler koyarak çağırıyoruz.
Programı derleyip çalıştırdıktan sonra, "Hello from main" çıktısını ve ardından "Hello from function" çıktısını göreceksiniz. Bunun nedeni, önce ana işlevin çalıştırılması ve ardından oluşturduğumuz işlevin çağrıldığında çalıştırılmasıdır.
Kodunuzu daha okunabilir hale getirmek için, fonksiyonlarınızı ayrı ayrı bildirmeniz ve tanımlamanız önerilir. Bildirim, dönüş türünü, işlev adını ve herhangi bir parametreyi içerir ve ana işlevden önce yerleştirilmelidir. Fonksiyonun gövdesini içeren tanım, ana fonksiyondan sonra gelir. Bu şekilde, kodunuzu başka biri okuyorsa, anlaması gereken belirli işleve kolayca gidebilir.
İşlevlerin kodunuzu yeniden kullanılabilir hale getirdiğini unutmayın. Aynı kodu birden çok kez yazmak yerine, bir işlevin içine bir kez yazabilir ve ihtiyacınız olduğunda bu işlevi çağırabilirsiniz. Bu uygulama fazlalığı azaltmaya yardımcı olur ve kodunuzun yönetimini kolaylaştırır.
Gelecek videolarda fonksiyonları daha detaylı inceleyeceğiz. Yeni içeriklerden haberdar olmak için kanalıma abone olmayı ve bildirimleri açmayı unutmayın. İzlediğiniz için teşekkürler, bir sonraki videoda görüşmek üzere!
C++ FONKSİYONLARI (2020) - Fonksiyon parametresi/argümanı nedir (çoklu, varsayılan) PROGRAMLAMA ÖĞRETİMİ
C++ FONKSİYONLARI (2020) - Fonksiyon parametresi/argümanı nedir (çoklu, varsayılan) PROGRAMLAMA ÖĞRETİMİ
Herkese merhaba! Kanalıma tekrar hoş geldiniz. C++'a yeni başlayan biriyseniz, burada olduğunuza sevindim. Bugünün konusuna girmeden önce, yeni başlayanlar için C++ çalma listeme göz atmanızı hatırlatmak istiyorum. Temel kavramları kapsar ve pratik yapmanıza yardımcı olacak birçok alıştırma içerir. Ayrıca kanalıma abone olmayı ve her yeni video yayınladığımda bildirim almak için zil simgesine tıklamayı unutmayın. Bir geliştiricinin hayatına göz atmak için beni sosyal medya profillerim CodeBeauty Instagram ve Twitter'dan da takip edebilirsiniz. Pekala, daha fazla uzatmadan bugünün dersine geçelim.
Bu videoda C++ fonksiyon parametrelerini veya argümanlarını tartışmak istiyorum. Peki, parametreler ve bağımsız değişkenler tam olarak nedir? C++ işlevleriyle ilgili önceki videomu izlemediyseniz, izlemenizi tavsiye ederim (bağlantı verilmiştir). Bazen, bir işlevin belirli bir görevi gerçekleştirmek için belirli bir değer veya değişken alması gerekir. Bu değerler veya değişkenler parametre olarak adlandırılır.
Şimdi, C++'da parametreleri kabul eden bir fonksiyonun nasıl oluşturulacağını öğrenelim. Bunu yapmak için, dönüş türü geçersiz olan bir işlev tanımlarız. Fonksiyona "tanıt beni" adını verelim. Parantez içinde fonksiyonun alacağı parametreleri belirtiyoruz. Fonksiyonumuzun gövdesi süslü parantezler içine alınacaktır.
Bir parametreyi tanımlamak için, parametrenin türünü ve ardından adını belirterek başlarız. Bizim durumumuzda, kullanıcımızın adını işleve iletmek istiyoruz, bu nedenle parametre string türünde olacaktır. Parametreye "name" adını vereceğiz. İşlev daha sonra "Benim adım" ve ardından verilen adı yazdırarak kullanıcımızı tanıtacaktır.
İşlevimizi çağırmak veya çağırmak için, "introduceMe" adını kullanırız. Fonksiyonumuz bir argüman (isim parametresi) gerektirdiğinden, fonksiyonu çağırırken bir değer iletmemiz gerekir. Bu durumda argüman olarak "Selena" ismini aktaralım.
Programı çalıştırdığımızda, işlev kullanıcıyı sağlanan adla başarıyla tanıtacaktır. Beklendiği gibi "Benim adım Selena" yazacaktır.
Eğer birden çok kullanıcıyı tanıtmak istiyorsak, farklı argümanlarla fonksiyonu tekrar çağırabiliriz. Örneğin, çağırma satırını kopyalayıp "Anna" gibi farklı bir ad iletebiliriz. İşlev daha sonra her iki kullanıcıyı da buna göre tanıtacaktır.
Şimdi, bir işleve birden çok bağımsız değişken geçirmeyi keşfedelim. Bunun için parametreleri virgülle ayırıyoruz. name parametresine ek olarak, iki parametre daha ekleyelim: şehir (string türünde) ve yaş (int türünde). İşlevi, kullanıcının şehri ve yaşı hakkında da bilgi içerecek şekilde değiştireceğiz.
İşlev içinde, kullanıcının adının yanı sıra şehrini ve yaşını yazdırmak için C++'ın "cout" özelliğini kullanacağız. Çıktıyı şu şekilde yapılandıracağız: "Ben [şehir]liyim ve [yaş] yaşındayım."
İşlevi çağırdığımızda, üç parametrenin de değerlerini iletiriz: ad, şehir ve yaş. Örneğin, işlevi çağırabilir ve ad olarak "Selena", şehir olarak "Moskova" ve yaş olarak 25'i geçirebiliriz. İşlev, kullanıcıyı sağlanan tüm bilgilerle tanıştıracaktır.
İkinci bir kullanıcı için işlemi tekrarlayabiliriz. İsim olarak "Anna", şehir olarak "New York" ve yaş olarak 27'yi geçelim. Programı çalıştırdığımızda, her iki kullanıcının da kendi detaylarıyla tanıtıldığını göreceğiz.
Ardından, varsayılan parametreleri keşfedelim. Bazen, bir parametre için varsayılan bir değer tanımlamak isteyebilirsiniz. İşlev çağrılırken o parametre için herhangi bir argüman sağlanmazsa bu değer kullanılacaktır.
Varsayılan bir değer belirtmek için, bunu parametre bildirimi sırasında atarız. Örneğin "age" parametresi için varsayılan değeri 18 olarak ayarlayalım. Şimdi, işlevi bir yaş vermeden çağırırsak, varsayılan değeri alacaktır.
Üçüncü bir kullanıcı için işlevi çağıralım, yalnızca adı ve şehri iletin, ancak yaşı atlayın. Beklendiği gibi, işlev kullanıcıya varsayılan yaş değeri olan 18'i tanıtacaktır.
Bu, C++ işlev parametreleri ve bağımsız değişkenleri hakkındaki tartışmamızı tamamlıyor. Umarım bu videoyu faydalı bulmuşsunuzdur ve C++'da fonksiyon parametreleriyle nasıl çalışılacağı konusunda sağlam bir anlayışa sahipsinizdir. Herhangi bir sorunuz varsa veya daha fazla açıklamaya ihtiyacınız varsa, lütfen aşağıya bir yorum bırakın, size yardımcı olmaktan memnuniyet duyarım. Daha fazla C++ eğitimi için bizi izlemeye devam edin ve bu videoyu değerli bulduysanız beğenmeyi ve paylaşmayı unutmayın. İzlediğiniz için teşekkürler ve mutlu kodlamalar!
C++ FONKSİYONLARI (2020) - İşlevler dönüş ifadesi, Asal sayı nasıl kontrol edilir
C++ FONKSİYONLARI (2020) - Fonksiyonlar dönüş ifadesi, Asal sayı nasıl kontrol edilir PROGRAMLAMA ÖĞRETİMİ
Herkese merhaba, kanalıma hoş geldiniz. Bu videoda C++'da return deyimlerini ve return fonksiyon tiplerini tartışmak istiyorum. Yeni başlayan biriyseniz, C++ öğrenmeye başlamanıza yardımcı olacak faydalı örnekler sunan yeni başlayanlar için C++ kursuma göz atmayı unutmayın. Yeni videolardan haberdar olmak için kanalıma abone olmayı ve bildirim ziline tıklamayı unutmayın. Ek olarak, bir geliştirici olmakla ve geliştiricinin hayatı hakkında fikir edinmekle ilgileniyorsanız, beni Instagram ve Twitter'da @truecodebeauty adresinden takip edin (bağlantılar video açıklamasındadır). Daha fazla uzatmadan bugünün konusuna geçelim.
Bir işlevin dönüş türü, int, float, bool, char, double ve hatta kullanıcı tanımlı veri türleri dahil olmak üzere herhangi bir veri türü olabilir. İşlevin hiçbir şey döndürmediğini belirten geçersiz de olabilir. Önceki videolarda, bir fonksiyonun belirli bir görevi gerçekleştirmek için tasarlanmış bir kod bloğu olduğunu açıklamıştım. İşlevler iki türe ayrılabilir: değer döndürenler ve döndürmeyenler.
Bir değer döndürmeyen işlevler, genellikle kullanıcıya bir menü görüntülemek gibi belirli bir eylemi gerçekleştirir. Öte yandan, bir değer döndüren işlevler, hesaplamaları veya işlemleri yapmak ve bir sonuç sağlamak için kullanılır. Bir işlevin yalnızca bir değer döndürebileceğini ve dönüş ifadesiyle karşılaşıldığında işlevin yürütülmesinin durduğunu unutmamak önemlidir.
Fonksiyonların önemini göstermek için fonksiyonları kullanmadan bir örnek ele alalım. Bir sayının asal olup olmadığını belirleyen bir program oluşturacağız. Bir asal sayı yalnızca bire ve kendisine bölünebilir. İlk olarak, kullanıcıdan bir sayı girmesini isteyeceğiz. Ardından, 2 ile kullanıcı tarafından girilen sayı eksi 1 arasındaki tüm sayıları yineleyeceğiz. Sayı bu değerlerden herhangi birine bölünebiliyorsa, asal değildir. Aksi takdirde, asaldır. Son olarak sonucu göstereceğiz.
Şimdi, kodu daha okunabilir ve yeniden kullanılabilir hale getirmek için işlevleri kullanarak programı yeniden düzenleyelim. Bir tamsayı argümanı alan ve sayının asal olup olmadığını gösteren bir boole değeri döndüren "isPrimeNumber" adında bir işlev yaratacağız. İşlevin içinde, öncekiyle aynı mantığı uygulayacağız, bölünebilirliği kontrol edeceğiz ve buna göre bir bayrak ayarlayacağız. Son olarak, bayrak değerini döndüreceğiz.
İşlevleri kullanarak, asal sayıları belirleme mantığını özetleyebilir, kodun anlaşılmasını ve yeniden kullanılmasını kolaylaştırabiliriz.
C++ FONKSİYONLARI (2020) - İşlev aşırı yüklemesi nedir? PROGRAMLAMA EĞİTİMİ
C++ FONKSİYONLARI (2020) - İşlev aşırı yüklemesi nedir? PROGRAMLAMA EĞİTİMİ
Herkese merhaba! Kanalıma tekrar hoş geldiniz. Bugünün videosunda, C++'da fonksiyon aşırı yüklemesi kavramını inceleyeceğiz. İşlev aşırı yüklemesi, aynı ada ancak farklı parametrelere sahip birden çok işlev oluşturmamızı sağlar. Öyleyse, aşırı yüklemenin ne olduğunu ve nasıl çalıştığını keşfedelim.
Başlamak için Visual Studio'muzu açalım ve "sum" adında bir fonksiyon oluşturalım. Bir tamsayı olacak işlevimizin dönüş türünü tanımlayarak başlayacağız. İade türlerine aşina değilseniz, konuyla ilgili videomu izlemenizi tavsiye ederim (bağlantı verilmiştir). Ardından, fonksiyonumuzun adını "toplam" olarak belirleyeceğiz ve iki parametre bildireceğiz. Her iki parametre de tamsayı türünde olacak ve bunları sırasıyla "a" ve "b" olarak adlandıracağız.
Şimdi, "toplam" adlı aynı ada sahip, ancak bu sefer dönüş türü çift olan başka bir işlev oluşturalım. "a" ve "b" adlı double türünde iki parametre bildireceğiz.
Ek olarak, "toplam" adında, dönüş türü float olan üçüncü bir işlev oluşturalım. Bu kez, tümü float türünde olacak üç parametreyi geçeceğiz. Bunları sırasıyla "a", "b" ve "c" olarak adlandıracağız.
Fonksiyonlarımızı tanımladıktan sonra altının çizildiğini fark ediyoruz, bu da tanımlarının eksik olduğunu gösteriyor. Her fonksiyon için tanımları vererek devam edelim. Bir tamsayı döndüren ilk işlevle başlayacağız.
Süslü parantezlerin içinde, int türünde "sonuç" adlı bir değişken tanımlayacağız. Ona, iki parametrenin toplamını temsil eden "a + b" değerini atayacağız. Son olarak, işlevden "result" değerini döndürmek için "return" anahtar kelimesini kullanacağız.
Alternatif olarak, ayrı bir değişken oluşturmak yerine, "a" ve "b" toplamını bir değişkene atamadan doğrudan döndürebiliriz. Bu, kodu daha kısa ve daha okunaklı hale getirebilir.
Ardından, bir çift döndüren ikinci işlevi tanımlayalım. Bildirimi kopyalayacağız, süslü parantezleri ekleyeceğiz ve içinde "return" anahtar kelimesini ve ardından "a + b" kullanacağız. Parametreler double türünde olduğundan, toplam çift kesinlik kullanılarak gerçekleştirilecektir.
Şimdi bir float döndüren üçüncü fonksiyonu tanımlayalım. Bildirimi kopyalayacağız, süslü parantezleri ekleyeceğiz ve içinde "return" anahtar kelimesini ve ardından "a + b + c" kullanacağız. Yine tüm parametreler float tipinde olduğu için toplam ona göre yapılacaktır.
İşlevlerimizi test etmek için onları "ana" işlevde çağıracağız. Sonuçları görüntülemek için "cout" ifadesini kullanacağız. İlk fonksiyon olan "toplam"ı çağırıp 4 ve 3 gibi iki tamsayı değeri ileterek başlayalım. Sonucu "cout" kullanarak çıkaracağız ve satırı bitireceğiz.
Programı çalıştırdığımızda 4 ve 3'ün toplamının 7 olması gereken sonucu görmeyi bekleyebiliriz. Eğer program başarılı bir şekilde çalışırsa ilk fonksiyonumuzu test etmiş oluyoruz.
Ardından, "toplamı" çağırarak ve 4.4 ve 3.3 gibi iki çift değeri geçerek ikinci işlevi test edelim. Yine, sonucu "cout" kullanarak çıkaracağız ve satırı sonlandıracağız.
Programı çalıştırdığımızda 4.4 ile 3.3'ü topladığımızda sonucun 7.7 olması gerektiğini görmeliyiz. Çıktı doğruysa, ikinci fonksiyonumuzu başarıyla test ettik.
Son olarak, "toplamı" çağırarak ve 4.4, 3.3 ve 2.2 gibi üç kayan değer ileterek üçüncü işlevi test edelim. Sonucu "cout" kullanarak çıkaracağız ve satırı sonlandıracağız.
Programı çalıştırmak, doğru toplam olması gereken 4.4, 3.3 ve 2.2 toplama sonucunu göstermelidir. Gerekirse bir hesap makinesi kullanarak çıktıyı doğrulayın.
Özetle, burada gösterdiğimiz şey, işlevin aşırı yüklenmesidir. Aynı "toplam" ada sahip, ancak farklı parametrelere ve dönüş türlerine sahip üç işlev oluşturduk. İlk işlev iki tamsayı alır, ikincisi iki çift alır ve üçüncüsü üç yüzer alır. Bu işlevleri çağırdığımızda, derleyici sağlanan argümanlara göre çağrılacak uygun işlevi belirler.
İşlev aşırı yüklemesi, benzer görevleri gerçekleştiren işlevler için aynı adı kullanarak daha özlü ve okunabilir kod yazmamızı sağlar. Her varyasyon için farklı adlarla ayrı işlevler oluşturmamıza gerek yok.
Umarım artık işlev aşırı yüklemesi kavramını ve bunun C++'da nasıl yararlı olabileceğini anlamışsınızdır. Bu videoyu beğendiyseniz, lütfen kanalıma abone olun ve gelecekteki videolardan haberdar olmak için zil simgesini tıklayın. Beni diğer sosyal medya platformlarımdan da takip edebilirsiniz (linkler açıklamada verilmiştir).
İzlediğiniz için teşekkür ederim, bir sonraki videomda görüşmek üzere. Hoşçakal!