Koddan bloğa
CPAL tek yönlü değildir. Bloklardan C üretildiği gibi, yazılmış bir C programı da bloklara geri çevrilebilir.
Neden önemli
Çocuk kodu değiştirdiğinde ne olduğunu bloklarda görebilmeli. Tek yönlü bir üreteçte kod bir kez düzenlendiğinde bloklarla bağı kopar ve iki temsil birbirine yabancılaşır.
Desteklenen yapılar
cpal_*çağrıları ve iç içe ifadeleriif/else- Sayaçlı
fordöngüleri (“%1 kez tekrarla”) while (1)(“sürekli tekrarla”)- Değişkenler:
static intbildirimleri ve atamalar - Aritmetik ve karşılaştırma:
+ - * / %,== != < <= > >=,&& || ! - Geçici bağlar:
int t0 = …;kullanıldığı yere yerleştirilir
Kapsam öğretim alt kümesidir
C’nin tamamı değil, öğretimde kullandığımız alt kümesi tanınır. İşaretçiler, diziler, kendi fonksiyonların ve switch bugün bloğa çevrilmez. Tanınmayan bir yapı sessizce atlanmaz, açık bir hata verir.
Örnek
Bu kod:
CC kodu
void cpal_loop(void)
{
if (cpal_obstacle(150)) {
cpal_stop();
cpal_play(CPAL_SOUND_ALARM);
} else {
cpal_forward(60);
}
}Şu bloklara çevrilir:
CPALBlok görünümü
sürekli tekrarla
eğer 150 mm'den yakın engel var mı ise
dur
ses çal alarm
değilse
ileri git hız 60Nasıl doğruluyoruz
Üretecin kendi çıktısı geri okunur ve aynı ara temsili vermesi beklenir: blok → C → blok turu programı değiştirmemelidir. Bu tur testlerle sabitlenmiştir.