0Pricing
C++ Academy · Ders

Süreler ve Saatler

Zaman aralıklarını ölçün

Süreler ve Saatler, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Neden <chrono>?

<chrono> kütüphanesi, C++'ta zamanla çalışmak için tür güvenli bir yol sağlar. Ham tamsayılar yerine güçlü türlere sahip süreleri ve zaman noktalarını kullanırsınız; böylece derleyici birim hatalarını yakalar.

  • Saniyelerle milisaniyeleri artık karıştırmazsınız.
  • Birimler tür sisteminin bir parçasıdır.
#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    seconds s{5};
    std::cout << "Duration: " << s.count() << " seconds\n";
    return 0;
}

Süre Nedir

Bir std::chrono::duration, bir zaman aralığını temsil eder. Bir tik sayısını ve tik süresini açıklayan bir oranı saklar. Önceden tanımlanmış takma adlar yaygın birimleri kapsar.

  • hours, minutes, seconds
  • milliseconds, microseconds, nanoseconds
#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    milliseconds ms{1500};
    std::cout << ms.count() << " ms\n";
    return 0;
}

Süre Değişmezleri

std::chrono_literals ad alanı, 5s veya 200ms gibi son eklerle süreler yazmanızı sağlar; böylece kod, düz İngilizce gibi okunur.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono_literals;
    auto wait = 3s;
    auto blink = 250ms;
    std::cout << wait.count() << "s, " << blink.count() << "ms\n";
    return 0;
}

Süreleri Dönüştürme

duration_cast, birimler arasında dönüşüm yapar. Daha hassas bir birimden daha kaba bir birime dönüşüm yapmak keser; bu nedenle 1500 ms, 1 s olur.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    milliseconds ms{1500};
    seconds s = duration_cast<seconds>(ms);
    std::cout << s.count() << " whole seconds\n";
    return 0;
}

Süreler Üzerinde Aritmetik

Süreler +, -, * ve / işleçlerini destekler. Birimler karıştırıldığında sonuç otomatik olarak ortak daha hassas birime yükseltilir.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto total = minutes{2} + seconds{30};
    std::cout << total.count() << " seconds total\n";
    return 0;
}

Kayan Noktalı Süreler

Dönüştürme sırasında kesirli değerleri korumak için kayan noktalı bir gösterim kullanabilirsiniz; böylece tamsayı sürelerin kesilmesini önlersiniz.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    milliseconds ms{1500};
    duration<double> secs = ms;
    std::cout << secs.count() << " seconds\n";
    return 0;
}

Saat Nedir

Bir saat geçerli zamanı sağlar. Standart kütüphane üç saat sunar:

  • system_clock — duvar saati zamanı
  • steady_clock — asla geriye gitmez, zaman ölçümü için idealdir
  • high_resolution_clock — kullanılabilen en küçük tik aralığına sahiptir
#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto now = steady_clock::now();
    std::cout << "Got a time point: " << (now.time_since_epoch().count() > 0) << '\n';
    return 0;
}

system_clock

system_clock, gerçek dünyadaki takvim zamanını izler ve görüntülemek üzere bir time_t değerine dönüştürülebilir. Sistem saati ayarlanırsa ileri veya geri sıçrayabilir.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto tp = system_clock::now();
    auto secs = duration_cast<seconds>(tp.time_since_epoch());
    std::cout << "Seconds since epoch is positive: " << (secs.count() > 0) << '\n';
    return 0;
}

steady_clock

steady_clock tekdüzedir: sabit bir hızla yalnızca ileri gider. Geçen zamanı ölçtüğünüz her durumda bunu kullanın; system_clock kullanmayın.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto a = steady_clock::now();
    auto b = steady_clock::now();
    std::cout << "Monotonic: " << std::boolalpha << (b >= a) << '\n';
    return 0;
}

Saat Çözünürlüğü

Her saat, period değerini derleme zamanında hesaplanan bir oran olarak sunar. Bir saatin kararlı olup olmadığını da derleme zamanında inceleyebilirsiniz.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    std::cout << "steady_clock is_steady: " << std::boolalpha << steady_clock::is_steady << '\n';
    std::cout << "system_clock is_steady: " << system_clock::is_steady << '\n';
    return 0;
}

Hepsini Bir Araya Getirme

Saatleri ve süreleri birleştirin: iki zaman noktası okuyup aralarındaki farkı seçtiğiniz birimde süre olarak hesaplayın.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto start = steady_clock::now();
    long sum = 0;
    for (int i = 0; i < 1000000; ++i) sum += i;
    auto end = steady_clock::now();
    auto us = duration_cast<microseconds>(end - start);
    std::cout << "Loop took at least 0 us: " << (us.count() >= 0) << '\n';
    return 0;
}

Kısa Sınama

Zaman ölçümü için hangi saati kullanmanız gerektiği hakkındaki anlayışınızı sınayın.

Özet

<chrono> kütüphanesinin şunları sağladığını öğrendiniz:

  • süreler — 5s gibi değişmezlerle ifade edilen, tür güvenli zaman aralıkları
  • Birimleri dönüştürmek için duration_cast (tamsayıları keser)
  • saatler — system_clock, steady_clock, high_resolution_clock
  • Aralıkları ölçmek için steady_clock kullanın

Sonraki bölümde belirli zaman anlarını zaman noktaları ile temsil edeceksiniz.

Sıkça Sorulan Sorular

“Süreler ve Saatler” dersi ücretsiz mi?

Evet — “Süreler ve Saatler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Süreler ve Saatler” dersinde ne öğreneceğim?

Zaman aralıklarını ölçün C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Süreler ve Saatler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Süreler ve Saatler
  2. Zaman Noktaları
  3. Kod Performansını Ölçme
  4. Takvim ve Saat Dilimleri
← C++ Academy Sayfasına Dön