FizzBuzz Nedir?
FizzBuzz, programlamayı öğrenmenin ve zorluğunu denemenin yaygın bilinen bir yoludur. Bu egzersiz, belirli bir sayıya kadar saymayı hedefler ve temel programlama kavramlarını güçlendirmek için tasarlanmış basit bir görevdir. Sayılar arasında gezinirken, 3'ün katları "Fizz" adını alırken, 5'in katları "Buzz" olarak adlandırılır ve hem 3 hem de 5'e bölünenler ise "FizzBuzz" olarak anılır. Bu görev, döngüler, koşullu ifadeler ve algoritmik düşünme gibi temel programlama yeteneklerini geliştirmeyi amaçlar. Genellikle kod mülakatlarında adayların kodlama yeteneklerini, problem çözme yeteneklerini ve temel programlama yapılarını ne kadar iyi bildiğini değerlendirmek için kullanılır.
FizzBuzz Oyunu
FizzBuzz Oyunu, bölünebilme kurallarını eğitimsel ve etkileşimli bir şekilde öğretmek için kullanılan eğlenceli bir araçtır. Bu oyun, temel çarpma kavramlarını öğrenmek isteyen çocuklar ve yeni başlayanlar için öğrenmeyi daha ilgi çekici ve katılımcı bir deneyim haline getirmek için yaygın olarak kullanılır. Katılımcılar bir daire içinde otururlar ve sırayla 1'den başlayarak sayıları sayarlar. Bir oyuncu 3'e bölünebilen bir sayıyı bulduğunda "Fizz" der, 5'e bölünebilen bir sayıyı bulduğunda "Buzz" der ve hem 3 hem de 5'e bölünen bir sayıyı bulduğunda "FizzBuzz" der. Bu oyun, matematik öğrenmeyi eğlenceli hale getirirken temel aritmetik kavramlarını öğrenmelerine yardımcı olur.
Fizz Buzz ne için kullanılır?
Fizzbuzz'un temel kullanımı, bilgisayar bilimi eğitimi ve programlama mülakatlarında öğretim ve değerlendirme aracı olarak hizmet etmektir. Bu egzersiz, mantıklı düşünme becerilerini, koşullu mantık uygulama yeteneklerini ve belirli bir kural setini takip ederek kod oluşturma yeteneklerini değerlendirmenin basit ve etkili bir yolunu sunar. Eğitim ortamlarında, Fizzbuzz, temel programlama kavramlarını anlamalarına yardımcı olurken problem çözme yeteneklerini geliştirmeye yardımcı olur. Kodlama mülakatlarında ise, adayların kodlama yeteneklerini ve algoritmik düşünme yeteneklerini hızlı bir şekilde değerlendirmeye yardımcı olur. Gerçek dünya uygulamaları açısından sınırlı bir kullanım alanına sahip olsa da, kodlama becerilerini geliştirmek için önemli bir egzersiz olarak değerini korur.
Detaylar ve Algoritma
-
Oyuncular 1'den saymaya başlarlar.
-
Eğer sayı 3'e bölünebiliyorsa, "Fizz" derler.
-
Eğer sayı 5'e bölünebiliyorsa, "Buzz" derler.
-
Eğer sayı hem 3'e hem de 5'e bölünebiliyorsa, "Fizz Buzz" derler.
-
Eğer hiçbiri geçerli değilse, sayıyı kendisi söylerler.
Oyun devam eder ve oyuncular sırayla bu kuralları takip ederler. Bu sıkça programlama kavramlarını öğretmek ve mülakatlarda kodlama becerilerini değerlendirmek için kullanılır. İşte bu oyunun algoritması.
Gerekli Malzemeler
1x PicoBricks
Devre Şeması
PicoBlockly Kodları
PicoBricks IDE ile yapabileceğiniz diğer Projeleri keşfedin!
MicroBlocks Kodları
MicroPython Kodları
from time import sleep
from machine import Pin
from machine import I2C
from picobricks import SSD1306_I2C
from picobricks import WS2812
import time
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000)
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
ws2812 = WS2812(6, brightness = 1)
def write_fizzbuzz():
global i
oled.fill(0)
oled.text("{}".format("FizzBuzz"), 0, 25)
oled.show()
ws2812.pixels_fill((255, 0, 0))
ws2812.pixels_show()
time.sleep((0.75))
def write_fizz():
global i
oled.fill(0)
oled.text("{}".format("Fizz"), 0, 25)
oled.show()
ws2812.pixels_fill((51, 255, 51))
ws2812.pixels_show()
time.sleep((0.75))
def write_i():
global i
oled.fill(0)
oled.text("{}".format(i), 0, 25)
oled.show()
ws2812.pixels_fill((0 ,0 ,0 ))
ws2812.pixels_show()
time.sleep((0.75))
def write_buzz():
global i
oled.fill(0)
oled.text("{}".format("Buzz"), 0, 25)
oled.show()
ws2812.pixels_fill((51, 51, 255))
ws2812.pixels_show()
time.sleep((0.75))
oled.fill(0)
while True:
for i in range((101)):
if (i % 15) == (0):
write_fizzbuzz()
elif (i % 3) == (0):
write_fizz()
elif (i % 5) == (0):
write_buzz()
else:
write_i()
oled.fill(0)
oled.text("{}".format("END"), 0, 25)
oled.show()
time.sleep((3))
Arduino C Kodları
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#include <Wire.h>
#include "ACROBOTIC_SSD1306.h"
void write_fizzbuzz() {
oled.clearDisplay();
oled.setTextXY(3, 1);
oled.putString("FizzBuzz");
pixels.setPixelColor(0,pixels.Color(255,0,0));
pixels.show();
delay(750);
}
void write_fizz() {
oled.clearDisplay();
oled.setTextXY(3, 1);
oled.putString("Fizz");
pixels.setPixelColor(0,pixels.Color(51,255,255));
pixels.show();
delay(750);
}
void write_buzz() {
oled.clearDisplay();
oled.setTextXY(3, 1);
oled.putString("Buzz");
pixels.setPixelColor(0,pixels.Color(51,51,255));
pixels.show();
delay(750);
}
void write_i(int i) {
oled.clearDisplay();
oled.setTextXY(3, 1);
oled.putString(String(i));
pixels.setPixelColor(0,pixels.Color(0,0,0));
pixels.show();
delay(750);
}
void setup() {
//define dht sensor and Oled screen
Serial.begin(115200);
Wire.begin();
oled.init();
oled.clearDisplay();
pixels.begin();
pixels.clear();
}
void loop() {
oled.clearDisplay();
for (int i = 1; i <= 100; i++) {
if (i % 15 == 0) {
write_fizzbuzz();
} else if (i % 3 == 0) {
write_fizz();
} else if (i % 5 == 0) {
write_buzz();
} else {
write_i(i);
}
}
oled.clearDisplay();
oled.setTextXY(3,1);
oled.putString("THE END");
delay(3000);
}