Taşmadan ilerleyen halka sensör tamponu
Son dört sensör ölçümünü sabit boyutlu dizide sakla. Dizi dolunca en eski değeri yenisiyle değiştir ve ortalamayı güncelle.
13+ yaş · 45 dakika · C++17
İnteraktif atölyede aç →Neler öğreneceğiz?
Son dört sensör ölçümünü sabit boyutlu dizide sakla. Dizi dolunca en eski değeri yenisiyle değiştir ve ortalamayı güncelle.
Bu atölyede yalnız sonuca değil, tahmininin neden doğru veya yanlış çıktığına da bak. Bir deney günlüğünde giriş, beklenen sonuç, gözlenen sonuç ve düzeltme olmak üzere dört sütun aç.
Öğrenme hedefleri
- Dört boş kutu çiz ve yazma imlecini ilkine koy.
- Boyutu tek constexpr sabitinde tutarak unutulan değişiklik riskini azalt.
Malzeme listesi
- C++17 derleyicisi bulunan bilgisayar
- Metin düzenleyici
- Deney günlüğü
Adım adım yapalım
- Dört boş kutu çiz ve yazma imlecini ilkine koy.
- 10,20,30,40 girildiğinde ortalamanın 25 olduğunu hesapla.
- 50 gelince çıkarılacak eski değerin 10 olduğunu bul.
- Kodu derleyip çalıştır; son ortalama 45 olmalı.
- count değerinin neden en fazla dört olduğunu açıkla.
- Dizi boyutunu değiştirirken sabit 4 geçen tüm yerleri bul.
Kod · C++17
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
int main(){
double a[4]={0};int index=0,count=0;double total=0;
for(double v:vector<double>{10,20,30,40,50,60}){
total-=a[index];a[index]=v;total+=v;index=(index+1)%4;count=min(count+1,4);
cout<<v<<" ortalama "<<total/count<<"\n";
}
}Kod nasıl çalışır?
Döngüsel tamponu burada standart C++ dizisiyle kuruyoruz. Kaynak deque kavramını karşılaştırmak içindir; C++ kodu özgündür.
Beklenen sonuç
Bilgisayarda çalıştırılan örneğin çıktısı:
10 ortalama 10
20 ortalama 15
30 ortalama 20
40 ortalama 25
50 ortalama 35
60 ortalama 45
Sıra sende
Boyutu tek constexpr sabitinde tutarak unutulan değişiklik riskini azalt.
Güvenli atölye
Bu çalışma düşük gerilimli eğitim içindir. Donanımı enerji kapalıyken, bir yetişkinle kur. Şebeke elektriği kullanma. Kodun derlenmesi fiziksel devrenin test edildiği anlamına gelmez.
Çalışmıyorsa kontrol et
- Sonucu alamıyorsan programın ilk satırından başlayıp girdileri tek tek kontrol et.
- Donanım varsa enerjiyi ayır; GND, sinyal uçları ve parça yönlerini bağlantı tablosundan doğrula.
- Aynı anda yalnız bir şeyi değiştir; değişiklik öncesi ve sonrası sonucu günlüğe yaz.
Kontrol noktaları
- Başlamadan önce: gerekli malzemeleri say ve giriş değerlerini deney günlüğüne yaz.
- Kurulumdan sonra: her bağlantıyı aşağıdaki tabloyla karşılaştır; yazılım projesinde giriş listesini kontrol et.
- Testten sonra: beklenen sonucu kendi çıktınla karşılaştır. Fark varsa ilk farklı adımı bul.
Kaynakların kullanımı
Kaynak, ilgili kavramı öğrenmek ve karşılaştırmak içindir. Türkçe görev, örnek kod ve görseller bu atölye için özgün hazırlanmıştır; kaynak makalenin çevirisi veya kopyası değildir.
https://docs.python.org/3/library/collections.html#collections.deque