Cpp Sınıfı İçinde Global ve Yerel Değişken Kullanımı: Performans ve Hafıza Yönetimi

77 Kişi Okudu

Cpp Sınıfı İçinde Global ve Yerel Değişken Kullanımı: Performans ve Hafıza Yönetimi

Yazılım geliştirme sürecinde, performans ve hafıza yönetimi hayati öneme sahiptir. Bu yazımızda, C++ programlama dilinde sınıf içinde global ve yerel değişken kullanımının performans ve hafıza yönetimi üzerindeki etkilerini detaylı bir şekilde ele alacağız. Ayrıca, bu konseptleri anlamak için basit ancak etkili örnek kodlar ve bu kodların assembly diline çevrilmiş hallerini inceleyeceğiz.

C++ Örnek Kod

#include <stdint.h>

struct LargeStruct {
    uint64_t num1 = 0;
    uint64_t num2 = 0;
    uint64_t num3 = 0;    
    
    // Büyük bir veri bloğu
    uint8_t data[10000] = {0}; 
};

class MyClass {
public:
    void updateGlobalInstance();
    void updateLocalInstance();
    // Sınıf seviyesinde global bir örnek
    LargeStruct globalInstance = {0}; 
};

void MyClass::updateGlobalInstance() {
    // Global örneği güncelle
    globalInstance.num1 = 0; 
}

void MyClass::updateLocalInstance() {
   // Fonksiyon seviyesinde yerel bir örnek
    LargeStruct localInstance = {0}; 
    localInstance.num1 = 0;
}

Assembly Dilindeki İki Fonksiyonun Karşılaştırılması ve Performans Etkileri

Okumaya devam et Cpp Sınıfı İçinde Global ve Yerel Değişken Kullanımı: Performans ve Hafıza Yönetimi

PID Kontrolünün Temelleri: Grafikler ve C++ Kodu ile Basit ve Anlaşılır Bir Rehber

184 Kişi Okudu

Diyelim ki bir araba kullanıyorsun ve belirli bir hızda gitmek istiyorsun. Bu durumda, PID kontrolörünün üç bileşeni olan P (Proporsiyonel), I (İntegral) ve D (Türevsel) kontrolü, arabanın hızını ayarlamanıza yardımcı olur.

  1. P (Proporsiyonel Kontrol) – Hedefe Doğru İlk İvme: İlk olarak, hızınızı hedef hıza ulaştırmak için gaza basarsınız. Eğer hedef hızın altındaysanız daha fazla, hedef hızın üstündeyse daha az gaza basarsınız. Bu, ‘P’ kontrolünün işidir; hedefe ne kadar uzakta olduğunuza (hata miktarı) bağlı olarak bir tepki verir. Ancak, bu kontrol tek başına bazen hedef hıza tam olarak ulaşmanıza veya aşırı tepki vermenize sebep olabilir.
  2. I (İntegral Kontrol) – Küçük Düzeltmeler: Uzun bir süre hedef hızın altında kaldıysanız, ‘I’ kontrolü devreye girer. Bu, geçmişteki tüm hataları biriktirir ve hedefe ulaşmak için yavaş yavaş artan bir düzeltme yapar. Örneğin, rüzgar nedeniyle sürekli hafif bir ivme gerektiğinde bu önemlidir. Ancak, bu kontrol yavaş tepki verir ve aşırı düzeltmelere neden olabilir.
  3. D (Türevsel Kontrol) – Ani Değişikliklere Tepki: Eğer bir tepeye tırmanıyorsanız ve hızınız hızla düşmeye başlarsa, ‘D’ kontrolü devreye girer. Bu, hızdaki değişimin hızını algılar ve ona göre bir tepki verir, böylece ani değişikliklere hızla yanıt verebilirsiniz. Bu, aşırı tepkileri ve sarsıntıları önlemeye yardımcı olur.

Bu üç kontrol birlikte çalışarak, hedef hıza stabil ve verimli bir şekilde ulaşmanızı sağlar. Araba örneğinde, P hızınızı hedefe yaklaştırır, I uzun vadeli sapmaları düzeltir ve D ani değişikliklere hızlı bir şekilde yanıt verir. PID kontrolörü de benzer şekilde, sistemleri hedef değerlerine hızlı ve doğru bir şekilde ulaştırmak için bu üç kontrol mekanizmasını kullanır.

Okumaya devam et PID Kontrolünün Temelleri: Grafikler ve C++ Kodu ile Basit ve Anlaşılır Bir Rehber

MinGW İle Derlenmiş Programlarda libgcc_s_dw2-1.dll Hatası Nasıl Çözülür?

197 Kişi Okudu

libgcc_s_dw2-1.dll Hatası Çözümü

libgcc_s_dw2-1.dll hatası, genellikle MinGW ile derlenmiş C/C++ programlarını çalıştırmaya çalışırken karşılaşılan bir hatadır. Bu hata, belirtilen DLL dosyasının eksik olduğunu veya bulunamadığını gösterir. Bu sorunu çözmek için aşağıdaki adımları takip edebilirsiniz:

libgcc_s_dw2-1.dll hatası ekran görüntüsü

MinGW’nin Doğru Kurulu Olduğundan Emin Olun

Eğer MinGW’yi bilgisayarınıza yeni kurduysanız, kurulumun doğru yapıldığından emin olun. Kurulum sırasında bazı bileşenlerin eksik olabileceğini unutmayın.

Okumaya devam et MinGW İle Derlenmiş Programlarda libgcc_s_dw2-1.dll Hatası Nasıl Çözülür?

Uzay Gemisi Operatörü – Üçlü Karşılaştırıcı (<=>) C++20

1.230 Kişi Okudu

Uzay Gemisi Operatörü Nedir?

Cpp 2020 ile gelen yeni özelliklerden bir tanesi de üçlü operatördür, bu operatöre uzay gemisine benzediği için uzay gemisi operatörü de denir. Uzay gemisi operatörü ile üçlü ve daha fazla karşılaştırmalar yapılabilmektedir. Klasik olarak == operatörünü ele alalım, bu operatör kullanıldığında true veya false değerlerinden biri dönecekti, ancak üçlü operatör ile karşılaştırmanın sonucundan daha fazla bilgi edinme şansı ediniyoruz.

Açıklama ve Örnekler

Bu operatör bool olarak true veya false tiplerini dönmez, aksine enum tipleri dönebilir. Eğer karşılaştırma sayısal bir tip için yapılacaksa;

Okumaya devam et Uzay Gemisi Operatörü – Üçlü Karşılaştırıcı (<=>) C++20

Doxygen Kullanımı

2.758 Kişi Okudu

Yazılım projelerinde dokümantasyon ihmal edilse de dokümantasyon gerçek bir ihtiyaçtır. 🙂

Yazılım geliştirici kendi yazdığı koda dahi zaman geçtikçe yabancılaşabiliyor. Sonradan katılan ekip üyelerinin projeye hızlı bir şekilde adapte olabilmesi ve projeyi doğru anlaması büyük önem taşımaktadır. 🤔🤔

Her iki sorununda çözümü hızlı ve basittir. Öncelikle projede yazılan koda yorum satırları eklemek daha sonra DOXYGEN gibi yazılan yorum satırlarını alarak web sayfası temelli anlaşılması kolay çıktılara dönüştürmeyi sağlayan yazılımlar kullanılabilir. 🤖🐱‍🏍

Bu tek videodan oluşan eğitim tüm yazılım geliştiricilere hitap etmektedir ve içerik olarak da yazılım geliştirirken dokümantasyon ve yorum satırlarının önemine vurgu yapılmıştır. 👍👍

Sizlere temel olarak bir C++ kodu üzerinde yazılan yorum yorum satırlarını nasıl web sayfası temelli anlaşılması kolay dokümana dönüştürülebileceğini anlatmaya çalıştım, umarım faydalı olur.👨‍💻☺👋 İzleyip vakit ayırdığınız için teşekkür ederi. Başarılar ve iyi çalışmalar diliyorum.

#doxygen #yazılımdokümantasyonu

Doxygen resmi sitesi. http://www.doxygen.nl/

Doxygen indirme linki. http://www.doxygen.nl/download.html

Doxygen Kullanımı Videolu Anlatım

Aşağıda yer alan videoda Doxygen yazılım dokümantasyon aracının kullanımı anlatılmıştır, iyi seyirler diliyorum.

STM32f0 UART Gelen Veri Okuma MİkroC

855 Kişi Okudu

STM32f0 içerisinde seri port üzerinden gelen veriyi okunan değişkeni içerisinde tutar

int okunan;
 void main() {

    UART2_Init(9600); // 9600 hız protokolünde seri port iletişimi sağlanacağını gösteriyor
    Delay_ms(10);    // Ayarlar yapılırken 100ms bekleme
    UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle); // SeriPort iletişimi aktive ediyor. Okuma,yazma gibi özellikleri açar.

   do
   {

   if (UART2_data_ready())
   { // Eğer seri portdan okunan veri varsa.
   
     okunan = Uart2_read(); 

  }

}while(1);


}

Visual Studio Faydalı Kısa Yollar

502 Kişi Okudu

Severek kullandığım kısa yolları buraya eklemek istiyorum;

Birinci sırayı yazmış olduğumuz kodları otomatik olarak sıralayan kısa yola ayırdık;

CTRL +  K + D

2-) Yazılan Kodun referanslarını arayıp bulan kısayolumuz;

CTRL + F12

3-) Yazılan Kodları Derleyen Kısa Yol ;

CTRL + SHIFT + B

4-) Bütün Satırları Sakla

CTRL + M + A

5-) Seçili olan kodları yorum satırına al;

CTRL + K + C

6-) Seçili Kodları Yorum Satırından Çıkart;

CTRL + K + U

FFMPEG Komut Satırı Video İşleme Programı İle Videolara Logo Eklmek.

1.070 Kişi Okudu

FFMPEG elinizdeki videoların formatını dönüştürmek, kırpmak ve yazı eklemek gibi birçok faydalı işlem yapma yeteneğine sahip ücretsiz bir komut satırı programıdır. FFMPEG birçok video işleme programında yardımcı program olarak çalışmakta ve bu programın kütüphanelerinden istifade edilmektedir.

FFmpeg
https://ffmpeg.org/

Detaylı bilgi
https://tr.wikipedia.org/wiki/FFmpeg

FFmpeg in kullanıldığı projeler
https://trac.ffmpeg.org/wiki/Projects

FFmpeg Türkçe Kaynak
http://web.archive.org/web/20130310141744/http://tr.pardus-wiki.org/FFmpeg_Dok%C3%BCmantasyon

Öncelikle severek ilgilendiğim facebook sayfam Robot Ve Teknoloji sayfasında paylaştığım videolara logo eklemek için kullanmak üzere, çok hızlı ve etkili bir program arayışına girdim öyle şatafatlı programlarla uğraşmak istemedim alt tarafı bir logo eklemek için koca bir video işleme programı çalıştırmak dert, kurmak dert. Bu iş için özelleştirilmiş bir program bulamayınca başladım kütüphane araştırmaya kafaya koydum kendi video logo ekleme programımı yazacağım sadece bu işe yarasın yeter. Biraz araştırma sonucu ffmpeg programının bu iş için biçilmiş kaftan olduğunu gördüm. Windows toplu iş dosyası oluşturdum içerisine ffmpeg için gerekli komutları da yazınca problemim çözülmüş oldu.

 

3 ADC kanalından okunan veriyi seri port üzerinden gönderen yazılım.

467 Kişi Okudu

MikroC dili ile yazılan bir program. ADC A0 A1 A3 pinlerinden okunan verileri seri port üzerinden göndere program. Seri porttan okunan veri int tipinden gelmekte biz bu verileri string tipine dönüştürerek gönderiyoruz.
UART 2 kullanılmıştır bu pin A2 de TX pinidir.

void main()
 {
 char txt1[12],txt2[12],txt3[12];
 int adc1=0,adc2=0,adc3=0;
 
  GPIO_Digital_Output(&GPIOc_ODR, _GPIO_PINMASK_8) ;
  GPIO_Digital_Input(&GPIOa_IDR, _GPIO_PINMASK_0);

  ADC_Set_Input_Channel(_ADC_CHANNEL_ALL); // adc kanalında 1. pini kullanacağımız belirtilde A1
  ADC1_Init();// Adc Ayarları yapıldı
  UART2_Init(9600);                    // initialize UART2 module
  Delay_ms(100);

  UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle ); // Uart modüllerini aktive ediyor...


   do  {
           adc1=ADC1_Get_Sample(0);
           IntToStr(adc1,txt1);
           
           adc2=ADC1_Get_Sample(1);
           IntToStr(adc2,txt2);
           
           adc3=ADC1_Get_Sample(3);
           IntToStr(adc3,txt3);
           
           UART2_Write_Text("ADC-1=");
           UART2_Write_Text(txt1);
           
           UART2_Write_Text("ADC-2=");
           UART2_Write_Text(txt2);
           
           UART2_Write_Text("ADC-3=");
           UART2_Write_Text(txt3);
           
           UART2_Write(13);
           UART2_Write(10);
           Delay_ms(500);

  }  while (1) ;
  
}

Java Dosya Klasör Yolu Öğrenme

1.874 Kişi Okudu

Aşağıda bulunan kod lar çalıştırıldığı zaman bilinmeyen bir bilgisayar üzerinde dosya dizini ulaşma veya dosya kaydetme işlemleri gerçekleştirilir.

public class pc_folder {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("İşletim Sisitemi		     :"+System.getProperty("os.name"));
		System.out.println("Kullanıcı Adı   		     :"+System.getProperty("user.name")); 		
		System.out.println("Kullanıcı Adı Ev Dizini          :"+System.getProperty("user.home"));
		System.out.println("Java Programını Çalıştığı Dizin  :"+System.getProperty("user.dir"));

		
		
	}

}