Ejderha dili. Hibrit programlama dili dragon-si. Görsel mantık formülleri

  • 14.06.2019

En son düzenleyen PBworks 12 yıl 2 ay önce

DOSTU PROGRAMLAMA

DRAGON-C HİBRİT PROGRAMLAMA DİLİ

DRAKON-SI hibrit dilinde bir görsel programlama sistemi kurmanız gerektiğini varsayalım. Sorun, örneğin üç program kullanılarak çözülebilir: bir ejderha düzenleyicisi, bir ejderha dönüştürücüsü ve bir C dili derleyicisi. Kullanıcı, ejderha düzenleyiciyi kullanarak bilgisayar ekranında DRAKON-SI dilinde bir program çizer (Şekil 90, sağ sütun). Ejderha dönüştürücü daha sonra grafik kodlarının dahili temsilini C kaynak metnine dönüştürür (Şekil 90, ortadaki grafik), ardından standart C derleyicisi kaynak metni nesne koduna dönüştürür.

Bu nedenle, DRAKON-SI dilini inşa etmek için, belirli kurallara göre, DRAGON'un görsel sözdizimini C dilinin metinsel sözdizimi ile birleştirmek, C dilinin işlevleri tarafından gerçekleştirilen tüm unsurları ortadan kaldırmak gerekir. DRAGON'un görsel operatörleri. SI ve DRAKON-SI dilleri çifti, hem doğrudan hem de ters dönüşüm gerçekleştiren bir dönüştürücü oluşturulabilmesi anlamında eşdeğerdir. Böyle bir dönüştürücü, bir DRAKON-SI programının kaynak metnini (Şek. 90, sağ sütun) eşdeğer bir C programına (Şek. 90, orta sütun) dönüştürebilir ve bunun tersi de mümkündür.

Herhangi bir melez dilin yaratılması (örneğin, DRAKON-SI), orijinal dilin (SI) kavramını, yapısını, veri türlerini ve diğer özelliklerini neredeyse tamamen koruduğu için orijinal bir gelişme olarak kabul edilemez. Bir melez dilin (DRAKON-SI) inşasının, kesin olarak tanımlanmış sayıda durumda, kaynak dilin metinsel gösteriminin görsel olanla değiştirildiği bir teknik olduğunu söylemek daha doğru olacaktır. Ancak bu teknik, kaynak dilin ergonomik görünümünü önemli ölçüde iyileştirebilir.

HİBRİT PROGRAMLAMA DİLİ

DRAGON-MODULA

Şekildeki en üstteki örneğe bakalım. 91. Orta sütunda MODULA-2 dilinde bir program, sağ sütunda DRAKON-MODULA dilinde eşdeğer bir program var. Sol sütun, modül programında kullanılan ve MODULA dili için "gerekli" olan, ancak dragon programında tamamen gereksiz olan anahtar sözcüklerin bir listesini içerir.

Ergonomik açıdan bakıldığında, metin dillerinde bulunan bu ve diğer birçok anahtar kelime, okuyucunun dikkatini kendine çeken ve dikkatini konunun içerik yönünden başka yöne çeviren görsel engellerden başka bir şey değildir. DRAGON'un ergonomik avantajı, anahtar kelimeler yerine, okuyucu tarafından bilinçsizce, sezgisel bir düzeyde algılanan görsel bir görüntünün kullanılması ve bilinçli dikkat kanalının daha üretken olmasıdır - en önemli, anlamlı olanı algılamak için. görevin yönleri.

ERGONOMİK OPTİMİZASYON ÖRNEĞİ

PROGRAMLAR

Şek. 91 (altta, orta sütunda) PASCAL ile bir program yazılmıştır. Önceki örneklere benzeterek, kolayca bir DRAGON-PASCAL programına dönüştürülebilir. Bunu yapmak için görsel bir “çatal” operatörü çizeceğiz ve “soru” simgesine girişi yerleştireceğiz

K = 1 VEYA K = 2

“Soru” simgesinin alt çıktısını “evet” kelimesiyle işaretleyeceğiz ve ona iki “seçenek” simgeli bir anahtar ekleyeceğiz ve doğru çıktıyı (cevap “hayır”) “çıkış” simgesine bağlayacağız. , üstte YAZILI, altta HATA yazıyoruz. Sonuç olarak, şüphesiz soruna kesinlikle doğru çözüm olan bir ejderha şeması elde ediyoruz. (Açıklık olması için okuyucuya açıklanan yapıları kağıt üzerinde gerçekleştirmesini tavsiye ederiz.)

Ve şimdi problemin durumunu değiştirelim. Sadece Şekil 1'deki Pascal programına eşdeğer olmayacak bir program oluşturmaya çalışalım. 91, aynı zamanda Rusça konuşan okuyucular için ergonomik olarak en uygunudur. DRAKON-2 dilinde yazılmış istenilen program aynı şekilde sağ altta gösterilmiştir.

Programlar arasındaki yapısal farklılık dikkat çekicidir. Bir Pascal programı iki yapı içerir: if-then-else ve dan dolayı. Ergonomik optimizasyon, dragon programının yalnızca bir görsel operatör (üç seçenekli bir anahtar) kullanması ve bununla birlikte "tek başına" PASCAL dilinin iki metin operatörü ile aynı işlevleri yerine getirmesinden oluşur. Sonuç olarak, K = 1 VEYA K = 2 karmaşık koşulu ve Pascal programının diğer aşırılıkları ortadan kaldırılır ve ejderha şeması gözle görülür şekilde basitleştirilir ve özlü, şeffaf ve zarif hale gelir.

DİYALOG PROGRAMLARI

DRAKON-2 programlama dilinin oluşturulmasına yönelik olası yaklaşımlardan birinin sunumuna devam ediyoruz. Size bir kez daha hatırlatıyoruz: Okuyucu burada dilin bir tanımını bulamayacak. Amacımız çok daha mütevazı: DRAKON dili için metinsel sözdiziminin resmileştirilmesinin oldukça uygulanabilir olduğunu göstermek ve bu fikri doğrulayan birkaç örnek vermek.

Şekil l'deki diyalog programlarını düşünün. 92 ve 93, gelişmiş didaktik (pedagojik) özelliklere sahiptir. Bunun için geniş bir ergonomik alet seti kullanılır. Özellikle, "yorum" simgesini doldururken, metin imar. Algılamayı kolaylaştırmak için, yorum metni mekansal olarak, ilk olarak açıkça tanımlanmış ve kolayca ayırt edilebilir sınırlara sahip olan ve ikinci olarak arka plan renginde (beyaz ve gri) farklılık gösteren iki bölgeye ayrılmıştır. Gri alan bilgisayar ekranında görünen metni, beyaz alan ise açıklamalarını içerir. Ekran metnini açıklamalardan ayırmak, yorumların daha kolay okunmasını ve anlaşılmasını kolaylaştırır.

Ergonomik “metin bölgeleme” tekniği yalnızca yorumlarda değil, diğer durumlarda, örneğin G / Ç ifadelerinde de yararlıdır.

Operatör "Mesaj"

"Mesaj" operatörü, bilgisayar ekranında bilgileri görüntülemek için kullanılır. En üst katta “Mesaj” anahtar kelimesinin yerleştirildiği “çıkış” simgesini, altta çıktı bilgisini içerir. İkincisini tanımlarken, metin bölgeleme kullanılır: gri bölgede, değişkenlerin veya ifadelerin adlarını (değerleri görüntülenmesi gereken) yazarlar, beyaz bölgede - sabit bilgi (değişmeden görüntülenir). Yeni bir satır siyah bir daire ile gösterilir. Örneğin, Şek. 92 “Mesaj” operatörü kullanılarak “Sayıların toplamı eşittir” ibaresi ve m + n ifadesinin değeri ekrana gelir.

Operatör "Talep"

“Talep” operatörü, değişkenlerin değerlerini bilgisayara girer, sabit bilgileri, değişken adlarını ve girilen değerleri ekranda görüntüler. "Giriş" simgesinin üst kısmında, "Talep" anahtar kelimesi, alt kısmında - giriş ve çıkış bilgileri yazılır. Metin bölgeleme burada da mevcuttur: gri bölgede bilgisayara girilecek değişkenlerin adlarını gösterirler, beyaz bölgede kalıcı bilgiler yerleştirirler.

Diyelim ki m = 23 ve n = 45 değerlerini girmeniz gerekiyor (Şekil 92). Bu, örneğin şu şekilde yapılır: imleci m bölgesine getirin, klavyede 23 sayısını yazın ve “satır başı” tuşuna basın. Bu durumda ekrandaki m bölgesi söner ve onun yerine 23 sayısı yanar aynı şekilde n değeri girilir. Böylece, “Talep” operatörü, kullanıcıdan değişkenlerin değerlerini sorar, bunları belleğe yazar ve aynı anda kalıcı bilgilerle birlikte ekranda görüntüler (ikincisi “Talep” operatörünün alt katında belirtilmişse). beyaz bölge).

Veri tanımlaması

“Raf” simgesi verileri tanımlamaya yarar. En üst katta “Veri” anahtar kelimesini, altta ise verilerin bir tanımını yazıyorlar. Örneğin, Şek. 92 "raf" simgesi, m ve n değişkenlerinin "tamsayı" türünde olduğunu gösterir.

Başka bir yol önerilebilir: verilerin açıklaması ejderha şemasının kapsamından çıkarılır ve ayrı bir tabloya yerleştirilir.

TANIMLAYICILAR

İşte tanımlayıcı yazma kuralları.

  • Tanımlayıcının uzunluğu 1...32 karakterdir.
  • Herhangi bir Rus ve Latin harf, sayı, nokta ve muhtemelen özel karakterlerin kullanılmasına izin verilir.
  • İlk karakter bir harf olmalıdır (sayı veya nokta değil).
  • Tanımlayıcı içinde boşluklara izin verilmez.
  • Okumayı kolaylaştırmak için kelimeler noktalarla ayrılmalıdır.
  • Tanımlayıcının uzunluğu 32 karakterden az ise kelime kısaltmalarının kullanılması yasaktır.
  • Tanımlayıcının uzunluğu 32 karakterden fazlaysa, bazı kelimeleri kısaltmalarla değiştirmeniz veya kelime sayısını azaltmanız gerekir.
  • Okuyucunun konunun özünü çabucak anlaması için kavramın anlamını anlamayı kolaylaştıran anlaşılır tanımlayıcılar bulmaya çalışmalıyız.

Geçerli Tanımlayıcı Örnekleri

Araba.numara.of.hızlı.tren

Araba.number.of.yolcu.tren

Bilet.fiyat.tren.to.Magadan

Uçak.ticket.fiyat.to.Magadan

Geçersiz tanımlayıcı örnekleri

Karmaşık bir kavramın uzunluğunun azaltılmasına bir örnek

Aşağıdaki konsept için bir tanımlayıcı oluşturmak istediğinizi varsayalım: "İniş koordinat sisteminde pistin merkezinde Dünya'nın merkezinin yarıçap vektörü." Kavramın sözlü anlatımı 92 karakter içermektedir. Buradaki zorluk, kavramı olabildiğince açık tutarken 92 karakterlik açıklamayı 32 karaktere indirgemektir.

Azaltma aşağıdaki plana göre yapılacaktır:

  • “Yer merkezinin yarıçap vektörü”, “Yarıçap.Dünya” ile değiştirilecektir.
  • "Pistin ortasında" yerine "piste" yazacağız.
  • “İniş koordinat sisteminde” UCS ile değiştirilecektir, çünkü böyle bir kısaltma bu sistemin geliştiricileri ekibinde yaygın olarak kullanılmaktadır.

Sonuç olarak, 26 karakterlik bir tanımlayıcı elde ederiz.

orijinal konseptin neredeyse tüm anahtar kelimelerini bünyesinde barındıran ve oldukça yüksek bir anlaşılırlık sağlayan.

Aritmetik ifadeler yazma kuralları

atama ifadelerinde

İki durum ayırt edilmelidir. İfade basitse, Şekil 2'de gösterildiği gibi 32 karakterlik tanımlayıcıların ve matematiksel formüllerin "dikey" gösteriminin kullanılması önerilir. 94 ve 95.

Ancak, karmaşık matematiksel hesaplamalar söz konusu olduğunda, açıklanan yöntem uygun değildir, çünkü 32 karakterlik tanımlayıcılara sahip “dikey” formüller, okuyucunun hesaplamaların matematiksel yapısını görmesine izin vermez ve dikkatini uzun tanımlayıcıları okumaya yönlendirir. paradoksal olarak yararlı bir ipucundan karşıtına dönüşür ve görsel müdahalenin olumsuz bir rolünü oynamaya başlar. Böylece, ergonomik bir çıkmaz ortaya çıkar: kısa tanımlayıcılar, kavramların anlamını hızlı bir şekilde anlamanıza izin vermez ve uzun tanımlayıcılar karmaşık formüllerin yapısını gizler.

Bu Gordian düğümünü çözmek için olası bir yaklaşım, üç noktalı bir plandır.

  • Her matematiksel kavram için iki tanımlayıcı sağlanır: uzun (32 karakter) ve kısa (takma ad).
  • Aritmetik ifadelerde yalnızca takma adlar kullanılır, bu da formüllerin yapısını şeffaf hale getirir.
  •  Programın başında, takma adlar ve uzun tanımlayıcılar arasındaki yazışmaların bir tablosunu içeren bir “yorum” simgesi vardır. Bu tablo, atama operatörleriyle aynı görüş alanında olan ve şu veya bu takma adın ne anlama geldiğini hızlı bir şekilde hatırlamanıza izin veren bir hile sayfası rolünü oynar.

DİZİ İŞLEME

Şek. 94 ve 95, dizilerle işlemlerin olduğu programların örnekleridir.

Verilerin açıklaması, "raf" simgesinin alt katına yerleştirilir.

her biri gerçek bir sayı olan 100 eleman içeren “Tavşan Ağırlığı” adlı tek boyutlu bir dizinin verildiği anlamına gelir.

Her iki programın da ana öğesi FOR döngüsüdür. Döngünün tasarımı için kuralları göz önünde bulundurun. Üst satırdaki “döngü başlangıcı” simgesine “Döngü” kelimesini ve bir boşluktan sonra döngü değişkenini gösteren tek karakterli bir takma ad yazın (Şekil 94, 95'te k harfi). Alt satır, değişikliğinin aralığını gösterir, örneğin,

Aynı eşitlik işareti ≡, onu bir isim-yorumun takip ettiğini gösterir, yani tanımlayıcı yazma kurallarına göre yazılmış bir yorum.

Resmileştirilmiş yorumun ergonomik "yağ"ının iki avantajı vardır. İlk olarak, programcıların geleneksel "unutkanlığını" ortadan kaldırmanıza ve okuyucuya soyut bir tanımlayıcının anlamını insani bir şekilde açıklamanıza izin verir: k, tavşan kafesinin sayısıdır derler. İkincisi ve en az değil, açıklama, “Mesih'in günü için pahalı testis” ilkesine göre, çizim alanına tam olarak ihtiyaç duyulan yere yerleştirilir (“İÇİN döngüsünün başlangıcı” simgesinde). Bu, okuyucunun anında bir yanıt aldığı anlamına gelir - k takma adını ilk gördüğü anda ve kafasında şu soru belirdi: k nedir?

“Çevrim sonu FOR” simgesinde bir giriş yapın

Dizilerin işlenmesini organize eden operatörlerin anlamı Şek. 94 ve 95 ve kendi kendini açıklayıcıdır.

ÖZET EJDERHA ŞEMALARI

Bu bölümde, DRAKON-2 dilinde bir görsel programın BASIC'te bir metin programına dönüştürülmesini ele alacağız. Bu dönüşüm iki açıdan faydalıdır: görselleştirmenin özü hakkında daha derin bir anlayış kazanmanıza ve soyut ejderha şemasının önemli konseptiyle tanışmanıza olanak tanır.

Örnek olarak “Tahmin Oyunu” adlı bir okul programını alalım ve DRAKON-2 dilinde yazalım (Şekil 96). Sonra metni ondan tamamen çıkarırız ve “soyut ejderha diyagramı” olarak adlandırılan kör bir çizim elde ederiz (Şekil 97). Bu şema, herhangi bir programlama dilinde iki adımda bir programa dönüştürülebilen bir program değişmezidir.

Hedef olarak BASIC dilini seçelim ve işe başlayalım. İlk adımda, soyut şemanın boş simgelerini BASIC dilinde metinle dolduracağız. Sonuç, DRAKON BASIC'te eşdeğer bir programdır (Şekil 98). İkinci adımda, normal bir BASIC programına geçiyoruz (bir değişiklik için bir ejderha programının eşdeğerini tanımlarken goto ifadelerinin kullanımını göstermek için kasıtlı olarak BASIC'in eski moda bir sürümünü seçtik) - bkz. 99.

DRAKON DİLİ FELSEFESİ

Herhangi bir zorunlu dil (SI, PASCAL, ADA, MODULA, BASIC, vb.) üç bölüme ayrılabilir, nispeten bağımsız üç dil: rota, komut ve bildirim.

Rota dili- kontrol operatörleri seti. komut dili atama operatörü, aritmetik ve mantıksal ifadeler, tanımlayıcılar, anahtar kelimeler vb. yazma kuralları gibi tüm kontrol dışı ifadeleri içerir. bildirim dili verileri, sınıfları vb. tanımlamaya yarar.

Söylenenleri bir örnekle açıklayalım. Şekil l'de gösterilen soyut ejderha diyagramı. 97, rota dilinin bazı "ifadeleri" var. Anlamlı hale getirmek için, simgelerin içine metin yerleştirilmelidir. Bu metin komut dilinde yazılmıştır. Bununla birlikte, veri ve sınıfların açıklamalarının bazen ejderha şemasının kapsamından çıkarılması ve örneğin ayrı bir kayıt veya tablo şeklinde başka bir yere yerleştirilmesi uygundur.

Bundan, üç alt dili ayırt etme ilkesi gelir. Güzergah dili, “resimlerin” dilidir (hiç metin olmayan soyut ejderha şemaları). Komut dili, ejderha şemasının içine metin yazmak için kullanılır, bildirim dili, ondan çıkarılabilen kayıtlar içindir.

Ejderha ailesinin bir sonraki dilini oluştururken, komut ve bildirim alt dillerini herhangi bir şekilde seçebilirsiniz (diğer dillerden ödünç alarak veya yeniden icat ederek). Bu, DRAKON'un yeteneklerinin zenginliğini ve çeşitli uygulamalar için esnek özelleştirmeyi sağlar. Bu nedenle, ejderha ailesinin yalnızca bir katı bağlantısı vardır - DRAGON'un görsel bileşenlerinden (görsel sözdizimi ve anlambilim) başka bir şey olmayan yol dili.

Rota dili, görsel ejderha düzenleyicisi tarafından desteklenen ejderha ailesinin görsel standardıdır (bkz. Bölüm 14), küçük ve hatırlanması kolaydır. Standartlaştırılmış görsel görüntüsü olan DRAGON'un değişmez özelliğidir (Şekil 97).

BİLGİ SINIFLANDIRMASI

Herhangi bir program, zorunlu ve bildirimsel bir bölüme ayrılabilen belirli bir bilgi miktarıdır. Yukarıdaki düşünceler bu tezi açıklığa kavuşturmayı mümkün kılmaktadır. Soruna yeni bir bakış Şekil 1'de sunulmaktadır. 100 ve aşağıdakilere kadar kaynar:

  •  Zorunlu bir dilde yazılmış bir bilgisayar programının kaynak metninde yer alan bilgileri analiz etmek için iki sınıflandırma kullanılması tavsiye edilir: temel ve alternatif./li>
  • Temel sınıflandırma orijinal programda yer alan tüm bilgilerin zorunlu ve bildirimsel olarak bölünmesi gerçeğinden oluşur.
  • Buna karşılık, zorunlu bilgi yönetim ve komuta ayrılmıştır.
  • Alternatif bir sınıflandırma için bir kriter olarak, şu soru önerilmiştir: bilgiyi temsil etmek için hangi araçlar daha iyidir - grafikler mi yoksa metin mi?
  • Cevap aşağıdaki gibidir. Kontrol bilgisini temsil etmek için, komut ve bildirim bilgisi - metin için grafikleri (rota dili) kullanmak daha iyidir.
  • Böylece alternatif bir sınıflandırma ile bilgi görsel (kontrol) ve metin (komut ve bildirimsel) olarak ikiye ayrılır.

Son bir not olarak, karmaşık kontrol bilgisini temsil etmek için metin kullanmak, bir haritayı kelimelerle tanımlamaya çalışmak kadar saçmadır. Metnin hala bu amaçla kullanılıyor olması tek bir şeyle açıklanabilir: Programlama coğrafyadan çok daha genç!

SONUÇLAR

  1. Elimizde resmi bir görsel sözdizimi varsa, o zaman görsel bir programlama dili oluşturmak için resmi bir metin sözdizimi oluşturmak yeterlidir. Bu sorunun oldukça çözülebilir olduğunu ve çeşitli şekillerde olduğunu gördük. Sonuç olarak, hem orijinal (DRAKON-2) hem de hibrit (DRAKON-SI, DRAKON-MODULA, DRAGON-PASCAL, DRAKON-BASIC, vb.) bir programlama dilleri ailesi oluşur.
  2. Görsel dillerin anlaşılırlığının, metin karşılıklarının anlaşılırlığından önemli ölçüde daha yüksek olduğu söylenebilir. Bu nedenle, programların kalitesi için anlaşılırlığın ana kriter olarak kabul edildiği tüm durumlarda (ve bunun gibi birçok durum vardır), görsel diller rekabet dışıdır. Burada bir uyarı uygundur: “görsel” teriminin kendisi hiçbir şeyi garanti etmez. Davanın başarısı, insan faktörleri biliminin (ergonomi) yöntemlerinin dikkatli ve titiz bir şekilde uygulanmasıyla elde edilir. Daha kesin olmak gerekirse, bilgisayar bilimi ve ergonomi yöntemlerinin sentezinden, disiplinler arası yeni bir yönün oluşumundan - bilgi ergonomisinden, modern programlamanın tüm yapısının ergonomik bir temelde yeniden yapılandırılmasından bahsediyoruz.
  3. Herhangi bir yeni nesil programlama dilinin oluşturulması, ergonomik gereksinimlerin analizi ile başlamalı ve dilin ortaya çıkan ergonomik özelliklerinin değerlendirilmesi ile sona ermelidir. Bu planın uygulanmasının önündeki ana engellerden biri, birçok uzmanın düşünme ataleti, ergonomik yöntemlerin öneminin hafife alınmasıdır. Hakim düşünce kalıplarını değiştirmek için okullarda ve üniversitelerde bilişim öğretim program ve yöntemlerinde ciddi değişiklikler yapılması gerekmektedir.

En son düzenleyen PBworks 12 yıl 3 ay önce

DRAKON DİLİNİN ÖZELLİKLERİ

AKIŞ DİYAGRAMININ ELEŞTİRİSİ

Algoritmaların anlaşılırlığını geliştirmek için etkili bir araç, programlamanın görselleştirilmesidir ve bu amaç için biraz daha önceki akış şemaları kullanılmıştır. Ancak son zamanlarda akış şemaları eleştirildi. Akış şemalarının karşıtları, yapılandırılmış programlama için uygun olmadıklarını, resmileştirmeye uygun olmadıklarını, bu nedenle "bir makineye doğrudan girdi için bir program olarak kullanılamayacaklarını" iddia ediyorlar. Birçok sayfa kaplarlar ve "akış şemalarının hücrelerine çok sınırlı bilgi girilebilir." Akış çizelgeleri "öğrenmeyi zorlaştırır ve anlama performansını düşürür." Ayrıca, herkes için uygun değildirler - akış şemaları ile çalışmak sadece "sağ beyinli, görsel bilgi odaklı, sezgisel, örüntü tanımalı" bireyler tarafından tercih edilirken, "sol beyinli, sözel bilgi yönelimli, eğilimli bireyler" tarafından kaçınılır. tümdengelimli muhakeme” vb.

1980'den önce akış şemaları en yaygın kullanılan araç olsa da, bugün artık gerekli görülmemekte ve popülerlikleri azalmaktadır. Akış şemalarını modern ihtiyaçlara (SDL dili, vb.) uyarlamak için bazı girişimler olsa da, genel olarak, akış şemaları açıkça hızla gelişen programlama görselleştirme sürecinin dışında kalmıştır ve muazzam potansiyelleri gerçekte kullanılmamaktadır. DRAKON dili, blok diyagramların belirtilen eksikliklerini ortadan kaldırmayı veya önemli ölçüde zayıflatmayı mümkün kılar.

DRAKON dilinin kurallarına göre oluşturulmuş blok diyagramları belirtmek için “ejderha diyagramları” terimi kullanılır.

DRAGON PROGRAMLARININ AVANTAJLARI

Ejderha diyagramları ve akış şemaları arasındaki fark nedir? Akış çizelgeleri, algoritmayı otomatik olarak makine koduna dönüştürmez. Dragon şemaları ise resmileştirilmiş yazma, otomatik kod oluşturma ve bilgisayarda çalıştırma için uygundur. Ancak ikinci (bilişsel) fark daha önemlidir. Akış şemaları bazen programların anlaşılırlığını iyileştirse de, bu her zaman gerçekleşmez ve iyileştirme derecesi küçüktür. Ayrıca, kötü yürütülen akış şemalarının konuları karıştırdığı ve anlaşılmasını zorlaştırdığı birçok durum vardır. Buna karşılık, ejderha şemaları süper yüksek anlaşılabilirlik kriterini karşılar.

Özel resmi ve gayri resmi bilişsel tekniklerin kullanılması sayesinde, ejderha şemaları, ne kadar karmaşık olursa olsun, teknolojik problemlerin çözümünü son derece açık, görsel ve anlaşılır bir biçimde tasvir etmeyi mümkün kılar ve bu da entelektüel çabalarını önemli ölçüde azaltabilir. görsel algılama, anlama, doğrulama ve hatasız çözüm için gerekli personel.

İKONLAR VE MAKRO İKONLAR

DRAKON dilinin grafik öğelerine (grafik harfler) simgeler denir (Şekil 1). Harflerin sözcüklerde birleştirilmesi gibi, simgeler de bileşik simgelerde birleştirilir - makro simgeleri(İncir. 2).

Simgeleri ve makro simgeleri belirli kurallara göre bağlayarak, örnekleri Şekil 2'de gösterilen çeşitli algoritmalar oluşturmak mümkündür. 3, 4, 6, 8-11.

şiş blok- aynı dikeyde bulunan, yukarıdan bir girişi ve aşağıdan bir çıkışı olan ejderha düzeninin bir kısmı. Şiş bloklarına örnek olarak simgeler I3 - I10, I12 - I16, I18, I20, I21 (Şekil 1) ve makro simgeleri 2-20 (Şekil 2) verilebilir.

NEDEN BİR ŞUBE İHTİYACINIZ VAR?

Prenses Anne, Le Chatelier Markisi'nden boşandığında, mülkün bölünmesi konusunda bir anlaşmazlık ortaya çıktı. Yargıç, prensesin evlenmeden önce hangi satın alımlarını ve hangilerini sonra yaptığını belirtmesini istedi.

Şimdi bu aile dramını unutalım ve pirinci birbiriyle karşılaştıralım. 3a ve 3b. İlkinin hakimin sorusuna cevap vermeye izin vermediğini görmek kolaydır. İkincisine gelince, aksine, gerekli bilgileri içerir. Ayrıca, Şekil 2'deki algoritma. 3b, evlilik öncesi ve sonrası yapılan alımların açıkça iki listeye ayrılması için kasıtlı olarak çizilmiştir. Bu listeler görsel ve uzamsal olarak ayrılmıştır, bu nedenle algoritmanın okuyucunun iradesine bakılmaksızın iki bölüme ayrılması kelimenin tam anlamıyla göze çarpmaktadır. Bu tekniğe algoritmayı “bak - ve hemen netleşti!” ilkesine göre anlamsal parçalara bölme denir. Ve anlamsal blokların kendilerine denir dallar.

"Şube" kelimesinin iki anlamı vardır. Bir yandan, bu algoritmanın anlamsal bir "parçasıdır". Örneğin, Şekil 1'deki algoritma. 3b'nin iki şubesi vardır (“Evlilik öncesi alımlar” ve “Evlilik sonrası alımlar”). Şek. 4 - dört dal (“Balık tutmaya hazırlanıyor”, “Bir ısırık bekliyorum”, “Balık tutma işi”, “Arka yol”). Öte yandan dal, bilinen dillerde benzeri olmayan DRAKON dilinin bileşik operatörüdür. Şube operatörü üç bölümden oluşur: şube başlangıcı(simge “şube adı”), şube gövdesi(çok sayıda simge içerebilir) ve şube sonu(bir veya daha fazla "adres" simgesi veya bir "bitiş" simgesi içerir).

Peki neden bir şubeye ihtiyacımız var? Bir bilgi çalışanına, programcıya ve teknoloji geliştiricisine, bir problemin, programın veya sürecin anlamsal bölünmesini parçalara ayırmasına ve parçalara uygun anlamsal adlar vermesine yardımcı olmak. Aynı zamanda, sorunun bölünmesi N semantik parçalar, algoritma bölünerek uygulanır. N dallar.

ŞUBE NASIL ÇALIŞIR?

Bir dalın bir girişi ve bir veya daha fazla çıkışı vardır. Giriş, şube kimliğini içeren "şube adı" simgesidir. Görsel operatör “dal adı” herhangi bir işlem yapmaz, sadece programın anlamsal bölümünün adını bildiren bir etikettir. Ejderha algoritmasının yürütülmesi her zaman en soldaki daldan başlar (Şekil 3, 4).

Şubeden çıkış, yürütme sırasına göre bir sonraki şubenin adının yazıldığı “adres” simgesidir. "Adres" simgesi gizlenmiş bir atlama operatörüdür (goto), ancak kontrolü hiçbir yere aktarmaz, yalnızca seçilen dalın başlangıcına aktarır. Bir şubeye giriş ancak başlangıcından itibaren mümkündür. Son daldan çıkış “bitiş” ikonu ile gerçekleştirilir.

ÇEKİM ALANINDA ŞUBELER NASIL KONUMLANDIRILMALIDIR?

Dallar iki şekilde sıralanır: mantıksal ve uzamsal olarak. mantıklışubelerin yürütme sırası, “adres” simgelerine kaydedilen etiketlerle belirlenir. Ancak, mantıksal düzen her şey değildir. Şek. 5 üç farklı yolu gösterir uzaysal aynı mantıksal sıraya sahip şube konumları. Mekansal belirsizliği ortadan kaldırmak ve ejderha şemasının anlamının anlaşılmasını kolaylaştırmak için “daha ​​sağa - daha sonra” kuralı getirildi. Bunun anlamı: sağa çizilen dal, soldaki tüm dallardan daha sonra çalışır.

“Daha sağa - daha sonra” kuralına göre çizilen bir algoritma iyi, ergonomik olarak kabul edilir (Şekil 5c). Bu kuralın ihlal edildiği şemalar kötü olarak ilan edilir (Şekil 5a, b), kullanımları yasaktır.

İzin verilen (ergonomik) algoritmalarda aşağıdaki iş sırası gerçekleşir (Şekil 3, 4, 5c, 6a):

  • en soldaki dal önce çalışır, en sağdaki dal en son çalışır;
  • kalan dallar kontrolü soldan sağa doğru birbirine geçirir (bu durumda bazı dallar atlanmış olabilir);
  • bazen bir "dal döngüsü" oluşur. Bu, kendi adınızın veya sol dallardan birinin “adres” simgesinde belirtildiğinde olur. Şek. 4 ve 6a'da, dal döngüsü siyah üçgenlerle işaretlenmiştir.

ŞAPKA NEDİR?

Okuyucunun bakış açısından, tanıdık olmayan veya unutulmuş, önemsiz olmayan herhangi bir algoritma, güçlü “maddi direnci” aşarak umutsuzca anlamaya çalıştığı son derece zor bir problemdir. Konuyu basitleştirmek ve anlama görevini kolaylaştırmak için okuyucunun “ışığı görmesi” ve sorunu parçalara bölerek anlamsal yapısını konu alanı açısından görmesi gerekir. Ve kelimenin mecazi anlamda değil, hayal gücünün yardımıyla değil, manevi bir gözle değil, kendi iki gözümle - kağıt üzerinde veya ekranda gördüm.

Ama bunu nasıl yapmalı? Zorluk, mevcut dillerin hiçbirinin, karmaşık bir programı veya teknolojiyi inceleyen okuyucuya, yapısını anında (birkaç saniye içinde) anlamasını, yani anlamsal bloklara bölünmesini sağlayan etkili yardım sağlamamasıdır. DRAKON dili, soruna çözüm sağlayan özel araçlara sahiptir.

Başlık, algoritmanın başlığını ve bir dizi “dal adı” ikonunu içeren ejderha şemasının (Şekil 4) üst kısmıdır. Başlığın amacı, okuyucunun anında (birkaç saniyeden fazla olmamak kaydıyla) sorunu çözmesine ve güçlü bir ipucu almasına yardımcı olmaktır - en önemli üç sorunun yanıtı:

  1. sorunun adı ne
  2. kaç parçadan oluşur?
  3. her bölümün adı nedir?

Ne de olsa, bu sorularla, herhangi bir görevle tanışmamız, işe rasyonel bir yaklaşımla başlar.

İşte şekil için cevaplar. dört.

  • Sorunun adı nedir? Balık tutma.
  • Problemin kaç parçası var? Dört üzerinden.
  • Her bölümün adı nedir? 1. Balıkçılık için hazırlık. 2. Bir ısırık bekliyorum. 3. Balık tutma işi. 4. Geri dönüş.

Ek kolaylıklar, başlığın çizim alanında “tören” bir yer işgal etmesi ve anlamsal parçaların adlarının benzersiz bir şekle sahip özel çerçeveler içine yerleştirilmesi ve bu nedenle okuyucunun dikkatini anında çekmesi ile bağlantılıdır. onun tarafında.

Bu şekilde DRAKON, okuyucuya bilinmeyen veya unutulmuş bir problem hakkında bilgi edinmek için üç aşamalı etkili bir yöntem sunar. İlk aşamada, başlığı analiz eden okuyucu, algoritmanın amacını ve anlamsal parçalara (dallara) bölünmesini öğrenecektir. İkinci aşamada, her dalın derinlemesine bir analizi yapılır. Üçüncü aşamada, şubelerin etkileşimi analiz edilir.

HANGİSİ DAHA İYİ: İLKEL Mİ Mİ SİLÜET Mİ?

Dalları olan ejderha şemasına denir siluet, şubesiz - ilkel.Şekil l'de gösterilen siluet. 6a bir ilkel olarak gösterilebilir (Şekil 6b). İlkel, şiş bloklarının “başlığı” simgesinin ve “bitiş” simgesinin seri bağlantısıdır. İlkel olarak, “başlık” ve “son” simgeleri mutlaka aynı dikeyde bulunur; şiş. Aynı çizgide şiş bloklarının ana dikeyleri bulunur. Mecazi olarak konuşursak, şiş ilkel ikonlarına (belki de hepsi değil) gerçek bir şişin şiş kebap parçalarına nüfuz etmesiyle aynı şekilde nüfuz eder.

Ejderha şeması çok basitse (ilkel) ve 5...15'ten fazla simge içermiyorsa, bir ilkel kullanılması önerilir. Aksi takdirde programın okunabilirliğini arttırmak için silüet kullanmak daha faydalıdır. Bu kuralın ihlali genellikle sorunla doludur, çünkü okuyucunun çözülmekte olan sorunun özünü belirlemesini engeller ve bu nedenle programın anlamını anlamayı zorlaştırır ve yavaşlatır.

Örneğin, Şekil 1'deki algoritma. 6b hantal görünüyor ve okunması mantıksız bir şekilde zor. Bunun nedeni, 19 simge içermesi, ancak ilkel olarak tasvir edilmesidir. Suç, Şek. 6b, okuyucunun algoritmanın görsel-anlamsal yapısını anında (birkaç saniye içinde) tanımasına izin vermez. Aslında, çözülmekte olan problem kaç bölümden oluşmaktadır? Şek. 6b, bu soruyu cevaplamak oldukça zor ve hemen cevaplamak imkansız. Şekil 2'ye baktığımızda durum kökten değişiyor. 6a, aynı algoritma bir siluet olarak gösterilir. Burada, dedikleri gibi, hiç akıllıca değil: algoritma dört bölümden oluşur: "otobüs ara", "biniş için bekleme", "otobüse binme", "seyahat". Bununla birlikte, hepsi bu kadar değil: görsel desenin karmaşıklığının ortadan kalkması ve şemanın yeni bir estetik (ergonomik) kalite kazanması daha az önemli değil: zarafet, netlik ve şeffaflık.

Bu nedenle, karmaşık durumlarda siluet, algoritmayı anlamak için harcanan entelektüel çabayı önemli ölçüde azaltabilir. Siluette, programın büyük yapısal parçaları (dallar) açıkça ayırt edilir, çizim alanında mekansal olarak ayrılırlar, aynı zamanda kolayca tanınabilir, kararlı, öngörülebilir ve entegre bir görsel görüntü oluştururlar. Ve ilkelde, yapısal parçalar ayrılmamış ve karıştırılmamış (“her şey bir yığında”), bu da karmaşık algoritmaları okumayı ve analiz etmeyi zorlaştırıyor. Bununla birlikte, basit durumlar için (5...15 simgeden az), kural olarak ilkel daha çok tercih edilir.

BİR METİN DİLİ KULLANARAK BİR SİLUET NASIL TANIMLANIR?

Şek. Şekil 7, dalları tanımlamak için metin dilinde bir takım değişikliklerin yapılması gerektiğini göstermektedir. Özellikle, geleneksel dillerde bulunmayan iki yeni metin operatörü vardır:

DAL< идентификатор ветки >

ADRES< идентификатор ветки >

Metin dili operatörü BRANCH, şubenin adını duyurur (“şube adı” simgesinin içine görsel dilde yazılır). ADDRESS operatörü, kontrolü koşulsuz olarak ADDRESS operatörünün sağında adı yazan BRANCH metin operatörüne aktarır.

Sorunu düşünelim. Karmaşık bir algoritmanın başlangıcını ve sonunu birbirine bağlayan karmaşık bir labirentte, tek bir rotayı - problemde kolayca gezinmek ve kaybolmamak için diğer tüm rotaları görsel olarak karşılaştırabileceğiniz bir “yönlendirici iş parçacığı” seçmek gerekir. çatalların karmaşasında. Bu kılavuz ip (haydi “ana yol” diyelim) görsel olarak kolayca ayırt edilebilir olmalıdır. Başka bir deyişle, ejderha planına üstünkörü bir bakış attıktan sonra, “kraliyet” rotasını ve ona göre sıralanan diğer rotaları hemen ve doğru bir şekilde görebildiğimiz için net işaretler bulmalıyız.

Bunun için bir kural getirildi: "ilkelin ana yolu şişten gitmelidir."Çatallardaki “evet” ve “hayır” kelimelerini ve anahtarlardaki seçenekleri (ve bunlara bağlı simgelerin çelenklerini) değiştirerek, en büyük başarıyı sağlayan çatalın veya anahtarın çıkışının olduğundan emin olmalısınız. kraliyet yolunda (Şek. 8). Ve yan yolların kurala göre düzenlenmesi gerekir: “ne kadar sağa, o kadar kötü”(Şek. 9). Bu kurallar ihlal edilirse, ejderha şeması kötü kabul edilir (Şekil 10a). Ancak her zaman iyiye dönüştürülebilir (Şekil 10b).

“Daha iyi-kötü” özelliğinin çalışmadığı durumlarda, ana rotadan sağa geçişin her zaman keyfi ve kaotik değil, düşünceli ve düzenli olması için bunun yerine başka makul kriterler seçilmelidir. Örneğin, matematik problemlerini çözerken çatal çıkışları ve anahtar seçenekleri, bu çıkışlara karşılık gelen matematiksel değerin (karakteristik) artan veya azalan sırasına göre soldan sağa doğru düzenlenebilir (Şekil 11, 12).

ANA GÜZERGAH SİLUET

Bir önceki paragrafta, ilkellerin rotalarının nasıl sıralanacağını öğrendik. Şimdi siluetin sırası.

saptırılmış dallar“şube adı” simgesini “adres” simgesiyle ve dalın birkaç çıkışı varsa - soldakiyle birleştiren bir dikey denir. Şube için her iki “kraliyet” kuralı da geçerlidir:

  • şubenin ana yolu şiş boyunca ilerlemelidir;
  • bir dalın yan yolları bazı kriterlere göre soldan sağa doğru sıralanmalıdır.

Bir kriter olarak, “daha ​​fazla sağa - daha kötü” ilkesinin seçildiğini varsayalım. Bu durumda, siluetin her dalı tek bir kurala göre inşa edilmelidir: daha sağa (bu dalın şişinden ne kadar uzak) bir sonraki dikey bulunursa, o kadar az başarılı eylem gerçekleştirir.

Örneğin, Şek. 6a “otobüse binen” şubenin üç dikey yönü vardır. Sol dikey (ana rota), otobüste oturacağınız için en büyük başarıyı tanımlar. Doğru dikey, en az başarı anlamına gelir çünkü otobüsten indiniz ve yolculuk ertelendi. Orta dikey ("ayakta binmek ister misiniz?" simgesinin üzerinde bulunur) orta bir konumdadır, çünkü - cevaba bağlı olarak - kısmi başarı olabilir (bineceksiniz, ancak oturmayacaksınız, ayakta duracaksınız) veya başarısızlık, çünkü otobüsten özensiz bir slurp ile iniyorsun.

siluet ana rota- dönüşümlü olarak çalışan şubelerin ana yollarının seri bağlantısı. Böylece DRAKON, okuyucunun ne kadar karmaşık ve dallanmış olursa olsun herhangi bir algoritmanın ana yolunu anında görmesini sağlar ve dahası, tüm yan yolların “kraliyet” olana göre kaymasını rastgele değil, anlamlı ve öngörülebilir, yani. , anlaması kolay.

HAT GEÇİŞLERİ? - TANRI SEVİYOR!

Sert ifadelere eğilimli bazı uzmanlar, geleneksel algoritma akış şemalarını "çöp akış şemaları" olarak adlandırır, çünkü üzerlerinde gösterilen blokların karmaşıklığı, etrafta dolaşan pürüzlü bir çizgi kaosuyla birbirine bağlanır, normal bir yapıdan çok bir çöp yığını gibi görünür. . DRAKON, grafik deseninin katı bir matematiksel ve bilişsel-ergonomik gerekçeye sahip olması ve katı ve dikkatlice düşünülmüş kurallara tabi olması gerçeğiyle olumlu bir şekilde karşılaştırır. Bunlar arasında, kural tarafından özel bir yer işgal edilir: "bağlantı hatlarının kesişmesi ve kesilmesi yasaktır."

Geleneksel blok diyagramları çizerken, iki tür çizgi geçişine izin verilir: açık, çapraz çizgilerle gösterilen ve maskeli, sözde bağlayıcılar kullanılarak gerçekleştirilir. Bildiğiniz gibi bağlayıcı “hattı kırmak ve başka bir yerde devam ettirmek için… gereksiz kavşaklardan kaçınmak için kullanılır”.

DRAKON dilinde, listelenen tüm hileler (geçişler, molalar, konektörler) ergonomik nedenlerle zararlı olarak kabul edilir ve çizim alanını gereksiz ayrıntılarla tıkadığı, gözler için görsel parazit oluşturduğu ve dikkati asıldan uzaklaştırdığı için kesinlikle yasaktır. şey.

Kavşakların yasaklanması ciddi bir topolojik kısıtlama olduğu için şu soru ortaya çıkıyor: keyfi bir algoritma bir ejderha şeması olarak temsil edilebilir mi?

Teorem 1. Herhangi bir yapısal program DRAKON dilinde iki şekilde temsil edilebilir: ilkel ve siluet olarak.

Teorem 2. Bazı durumlarda keyfi (yapısal olmayan) bir program ilkel olarak temsil edilemez; ancak, ek değişkenlerin (dal tanımlayıcılar) girilmesine izin veren eşdeğer dönüşümlerin yardımıyla, her zaman bir siluet olarak gösterilebilir.

Konuyu netleştirmek için bazı örneklere bakalım. Şek. 13a, yasaklanmış bir ejderha şemasını göstermektedir: içinde kaldırılamaz (ek değişkenler eklemeden) bir kesişimin olduğu bir ilkel. Şek. 13b, kolayca görebileceğiniz gibi, Şekil l'deki ilkel ile eşdeğer olan bir silueti göstermektedir. 13a ve aynı zamanda tek bir kavşak içermez. Böylece, Şekil 1'deki örnek. 13 Teorem 2 1'in geçerliliğini doğrulamaktadır.

DRAGON'UN GÖRSEL VE ​​METİN SÖZ KONUSU

DRAKON, iki tür öğe kullanan görsel bir dildir: grafik şekiller ( grafik öğeleri) ve grafik şekillerin içinde veya dışında bulunan metin etiketleri ( metin öğeleri). Bu nedenle, DRAGON sözdizimi iki kısma ayrılır. Görsel sözdizimi, grafik öğelerin alfabesini, çizim alanına yerleştirme kurallarını ve grafik öğeleri bağlantı çizgilerini kullanarak bağlama kurallarını kapsar. Metin Sözdizimi sembollerin alfabesini, bunların kombinasyon kurallarını ve grafik öğelere bağlanmayı tanımlar (bağlama gereklidir, çünkü farklı grafik şekillerinde farklı ifade türleri kullanılır). DRAKON dil operatörü bir grafik öğesi veya metin etiketleriyle birlikte alınan grafik öğelerinin birleşimidir.

Grafiklerin ve metnin eşzamanlı kullanımı, DRAGON'un yalnızca yazarın ve programın okuyucusunun sözel ve mantıksal düşünmesine hitap etmediğini, ayrıca sezgisel, mecazi, sağ beyin düşüncesini harekete geçirdiğini ve onu olmayan bir programla uyardığını göstermektedir. yazılmış, ancak çizilmiş, yani program -resim.

EJDERHA DİLLERİ AİLESİ

DRAKON tek bir dil değil, tüm dilleri aynı görsel sözdizimine sahip (görsel olarak ailenin dillerini neredeyse ikiz yapar) ve metinsel sözdiziminde farklılık gösteren bütün bir ailedir.

Ejderha-1- görsel bir sözde dil, olağan metinsel sözde kodun görsel bir analogu. Faaliyetlerin yapısını tanımlamaya, teknolojiler, algoritmalar ve program projeleri oluşturmaya hizmet eder, adım adım detaylandırma yönteminde ve mesleki bilginin resmileştirilmesinde kullanılır.

DRAKON-2 gerçek zamanlı bir görsel programlama dilidir. O bir element DAVA- roketlerin ve uzay nesnelerinin kontrol sistemlerinin yanı sıra nükleer santraller, petrokimya ve metalurji tesisleri, biyoteknoloji endüstrileri vb. için yazılım geliştirme teknolojileri.

Ayrıca aile, hibrit görsel programlama dillerini içerir: DRAKON-BASIC, DRAGON-PASCAL, DRAKON-SI, vb. SI dilinin metin sözdiziminin kuralları.

Görsel ve metinsel sözdiziminin kesin olarak ayrılması, dilin kapsamını maksimum ölçüde genişletmeye izin vererek esnekliğini ve evrenselliğini sağlar. Aynı zamanda, DRAKON dil ailesinin görsel sözdizimi kurallarının tekdüzeliği, kavramsal bütünlüklerini sağlar ve metin kurallarının çeşitliliği (yani, herhangi bir metin sözdizimini seçme yeteneği) dilin esnekliğini ve kolaylığını belirler. çeşitli problem ve konu alanları için özelleştirme.

Bu kitap, DRAKON-1'in görsel sözde diline odaklanmaktadır. DRAKON ailesinin diğer dillerine gelince, sadece kısa açıklamalar verilmiştir.

SONUÇLAR

Ejderha diyagramlarının bilişsel kalitesini iyileştirmek ve algoritmaları, programları ve teknolojileri daha anlaşılır kılmak için ergonomik kuralların bir özetini burada bulabilirsiniz.

  1. Karmaşık bir algoritma bir siluet, basit bir - ilkel olarak çizilmelidir.
  2. “Başlık” simgesine “başlangıç” kelimesini yazmak yasaktır; bunun yerine algoritma için açık ve kesin bir ad sağlanmalıdır.
  3. Karmaşık bir algoritmayı parçalara ayırın, her parçayı bir dal olarak gösterin. Parçalara net ve özlü adlar verin ve bunları “dal adı” simgelerine yazın.
  4. Bir şubeye giriş ancak başlangıcından itibaren mümkündür.
  5. Şubelerden birinin adının “adres” simgesine yazılmasına izin verilir, diğer yazılar yasaktır.
  6. Dallar, kurala göre boşlukta yerleştirilmelidir: daha sağa, daha sonra. Bir dal döngüsünün varlığı bu kuralı değiştirir.
  7. İlkel olanın mutlaka bir şişi vardır. Bu, "başlık" ve "son" ilkel simgelerinin her zaman "şiş" olarak adlandırılan aynı dikey üzerinde bulunduğu anlamına gelir.
  8. Her dalın bir şiş olması gerekir. Sağ dalda, şiş “dal adı” ve “bitiş” simgelerini birbirine bağlayan dikeydir. Dalların geri kalanı için şiş, “şube adı” ve “adres” simgelerini ve birkaç adres varsa soldakiyle birleştiren dikey bir çizgidir.
  9. Algoritmanın her zaman şişin üzerinden geçmesi gereken bir ana yolu vardır.
  10. Yan yollar, seçilen kriterlerden birine göre soldan sağa sıralanmalıdır, örneğin: sağa ne kadar çoksa o kadar kötü.
  11. “End” ikonuna “end” kelimesi yazılmalıdır.
  12. Bağlantı hatları yatay veya dikey olarak çalışabilir. Eğimli çizgilere izin verilmez.
  13. Hat geçişleri yasaktır.
  14. Satır araları yasaktır.
  15. Konektörler yasaktır.

Dil EJDERHA- Entelektüel işçilerin ve öğrencilerin zihin çalışmalarını kolaylaştırmak ve geliştirmek için özel olarak tasarlanmış, özellikle mesleki bilgiyi sistematikleştirme ve otomatik olarak biçimlendirme, yapıyı tanımlayan zor ve süper zor görevleri çözmede yararlı olan yeni bir türde halka açık entelektüel bir araç insan faaliyeti ve daha sonra tartışılacak olan diğer birçok görev.

fark EJDERHA ancak metinsel değil, görsel (grafik) bir dildir. Mecazi anlamda, mantıksal-matematiksel, algoritmik ve teknolojik kayaları ve engelleri görsel resimlerin dinamitiyle havaya uçurarak hedefe giden en kısa yolu döşer. Bu ve diğer teknikler sayesinde, birçok (tabii ki, hepsi olmasa da) karmaşık problemler basit olanlara dönüşüyor, anlaşılmaz olanlar anlaşılabilir hale geliyor. Sonuç olarak, istenen kazanç elde edilir: verimlilik artar, kalite artar, zor iş daha kolay ve daha zevkli hale gelir, zihinsel aşırı yüklenme keskin bir şekilde azalır, tehlikeli çizginin çok altına düşer.

Dil EJDERHA Rus Uzay Ajansı (SPC of Automation and Instrumentation, Moskova) ve Rusya Bilimler Akademisi (M.V. Keldysh Uygulamalı Matematik Enstitüsü, Moskova) tarafından Buran uzay aracının yaratılmasındaki deneyimin bir genellemesi olarak ortaklaşa geliştirildi. tabanda EJDERHA ve yazılım sistemleri tasarlamak için otomatikleştirilmiş bir teknoloji (CASE teknolojisi) olarak adlandırılan " GRAFİT-FLOX". Bir dizi büyük uzay projesinde başarıyla kullanılmıştır: " deniz lansmanı", "Firkateyn", "Proton-M" ve benzeri.

EJDERHA- çok kolay bir dil. O kadar kolay ki, uzay roketleri için birçok bilgisayar programının pratikte geliştirilmesi, programcılar tarafından değil, sıradan uzmanlar tarafından "programcı olmadan programlama" ilkesine göre gerçekleştirilir. Programcıları terk etmenin nedeni basittir. Pratik uygulamalı problemleri çözerken, uzmanlar materyal hakkında kapsamlı bilgiye sahiptir ve problem ifadesinin farkındadır. Onlardan farklı olarak, programcılar "sürecin fiziğini" bilmezler ve onsuz yapmanın oldukça mümkün olduğu "gereksiz insanlar" olurlar. Bu, maliyetleri önemli ölçüde azaltmanıza, "maliyet-sonuç" oranını iyileştirmenize, işin ilerlemesini hızlandırmanıza ve PROGRAMCILAR ve UZMANLAR arasındaki karşılıklı yanlış anlamadan kaynaklanan "hasarlı telefon" hatalarından tamamen kurtulmanıza olanak tanır.

EJDERHA evrensel. Sadece "uzayda" değil, aynı zamanda "karasal" insan faaliyeti türlerinde de algoritmaların görsel temsili ve hızlı gelişimi için kullanılabilir. pratik fayda EJDERHA ve yüksek puan aldı. Milli Eğitim Bakanlığı dil öğrenimini dahil etti EJDERHA yüksek öğrenim bilgisayar bilimi dersi programında (bkz: “Bilişim” disiplininin yaklaşık programı. Resmi yayın. - M.: Goskomvuz, 1996. S. 3, 4, 15, 16).

DRAKON editörü

İHA

V.D. Parondzhanov "Zihnin çalışması nasıl geliştirilir" adlı kitabında yayın yapma olasılığını gösteriyor EJDERHA-düzenleri doğrudan program koduna üst düzey bir dilde. Bu durumda, hedef dilin kontrol yapıları tamamen atılır ve yerini dil yapıları alır. EJDERHA. Bu, hedef dilin bir alt kümesi olan yeni bir dille sonuçlanır. Dillerden böyle bahsedilir DRAKON-Deniz, DRAGON-Pascal.

8 Nisan 2008 Alexander İlyin forumda isim önerdi İHA olası dil için EJDERHA-Oberon.

D2O (Döteryum Oksit) - DRON => Aktif Oberon çeviricisi.

Dili uygulama hedefini belirledikten sonra İHA Formatı açma isteği ile Gennady Tyshov'a bir mektup yazdım EJDERHA- düzenleyicisinde kullanılan şemalar. Buna yanıt olarak bana tüm kaynak kodunu gönderdi :)

Başlamak için, oluşturmaya karar verdim EJDERHA-tamamen bir modüle çevrilebilecek bir şema Aktif Oberon.

Ve çok hızlı bir şekilde uygun tasarımla ikna oldum EJDERHA-şemaları görev oldukça gerçekleştirilebilir hale gelir.

Elbette "dekorasyonun" ana özellikleri, içinde bulunmayan bildirim kısmı ile ilgilidir. EJDERHA e.

İlk başta, bildirim kısmı için "yorumlar" bloğunu, karşılık gelen bölümlerin ayrılmasıyla "uyarlamak" zorunda kaldım, aslında: yorumlar, içe aktarmalar, sabitler, türler ve değişkenler. belirli bir bölüme ait olan, sırasıyla bloktan okunan ilk eleman tarafından belirlenir. (* , İÇE AKTARMAK, SABİT, TİP ve VAR.



Gerçek şu ki, bazı bölümlerin içeriği sadece referans bilgisi olarak gerekli olmayacak, aynı zamanda kod oluşturma aşamasında değişiklik için de mevcut olmalıdır.

Belki daha iyi bir çözüm, bildirimsel kısmı tablo biçiminde biçimlendirmektir.

AT TİP bölüm, tip bildirimleri ve "dummy" nesne bildirimleri (yöntemler ve gövdeler olmadan) verilir.

Her bir şema, dildeki bir prosedürün eşdeğeri olarak kabul edilir. Oberon. Ancak dil açısından Oberon Modülün gövdesi ve nesneler (kelimeden sonra) prosedürler olarak kabul edilebilir. BAŞLAMAK) ve ayrıca modül prosedürlerini nesne prosedürleri-yöntemlerinden bir şekilde ayırt etmek gerekir.

Karar verildi:

  • Modülün gövdesi, başlığı şu kelimeyi içeren bir diyagram olarak biçimlendirilmelidir: BAŞLAMAK
  • Bu nesnelerin adlarıyla nesne yöntemleriyle ilgili ön ek şema başlıkları. şunlar. Object.Proc1, Nesne BAŞLANGIÇ. Gördüğünüz gibi, nesnenin gövdesi de unutulmuyor.
  • Diğer tüm şemalar modül prosedürlerine karşılık gelir

İşte diyagram:



Devrelerin topolojisi, kesinlikle yukarıdan aşağıya ve soldan sağa kontrol akışı ile sınırlıdır. Ve bir istisna olarak, doğal olarak organize edilmiş, basit döngüler. Benim düşünceme göre, "siluet" şemasının gücü bu sınırlamayı ortadan kaldırıyor.

Sonuç, yayın yapmanızı sağlayan bir konsol uygulamasıdır. EJDERHA-şema (aslında, dilde bir şema İHA) dilde bir modüle Aktif Oberon.

İHA-çevirmenin mütevazı bir adı var D2Oşunlar. döteryum oksit veya Rusça Ağır Su :)

İHA-dilde çevirmen ve test kalıpları İHA ekli.

13 Temmuz 2008 Gennady Tyshov, editörün daha yeni bir versiyonunu yayınladı, ancak mevcut versiyona eklenen test şemaları D2O uyumsuz bir biçimdedir. Burada sitede sunulan editörün sürümünün, ekli şemaları açmanıza ve düzenlemenize izin vermesi garanti edilir. Formatların geriye dönük uyumluluğu veya yeni bir formatın açılması sorunları şu anda editörün yazarı ile tartışılmaktadır.

Programın itici gücü nedir? Yararlı bir sonuç ne üretir? Tabii ki, algoritma. Algoritma, programın yazıldığı etkiyi yaratır. Algoritma tek başına çalışmıyor. Veri yapıları ile birlikte çalışır. Ancak programın en büyük bölümünü oluşturan algoritmalardır.


Tarihsel olarak, programlardaki algoritmalar kaynak metinler şeklinde yazılır. Neredeyse hiç kimse metnin algoritmaları temsil etmenin en iyi yolu olduğunu sorgulamaz. Algoritma, C veya JavaScript gibi bir programlama dilinde işlevlerin içinde kodlanmıştır. Algoritmayı kuş bakışı anlamak isteyenler için pseudocode sağlanmıştır. Ancak metinde ciddi sorunlar var. Gerçek şu ki, bir kişi katı metin için optimize edilmemiştir. Bir kişi grafik algısı için optimize edilmiştir. Metin nispeten yeni bir buluş, ancak grafik bilgi organizmalar tarafından milyonlarca yıldır işleniyor.


Buna dayanarak, algoritmaları grafiksel olarak hazırlamak mantıklı olacaktır. Mühendislere bakın. Her yerde planlar kullanırlar. Programcılar neden daha kötü? Onlar da algoritmalar için planlar yapabilirler. Bazıları burada itiraz edecek: görsel programlamanın verimsiz olduğu iddia ediliyor. UML gariptir ve akış şemalarının karıştırılması kolaydır. Geleneksel şekilde programlamak daha iyidir - metinle. Yapılandırılmış programlamada en azından bir yapı vardır ve düzen ve tekdüzelik sağlar. Ayrıca diyagram çizmek uzun ve zordur. Yazmak, çizmekten daha hızlıdır.


Peki, programcılar tüm yaşamları boyunca yalnızca metinle çalışmaya mahkum mudur?
Belki de her şey o kadar da kötü değildir. DRAGON, BPMN ve LML Eylem Diyagramları gibi düzen ve yapıya da sahip olan algoritmaları temsil etmek için görsel diller bulunmaktadır. Burada görsel algoritmik dil DRAKON'u ele alacağız.

DRAKON dilinde nasıl programlanır

DRAKON bağımsız bir programlama dili değildir. JavaScript, Python veya C++ gibi metin tabanlı bir dille birlikte çalışır. DRAKON, metin diliyle birlikte karma bir dil oluşturur: DRAKON-JavaScript, DRAKON-Python veya DRAKON-C++.


Hibrit bir dilde programlama şu şekildedir:

  1. Bir DRAGON şeması çiziyoruz.
  2. Simgelerin içine, ilgili programlama dilinde küçük kod parçaları yerleştiriyoruz.
  3. Çevirmen programı, DRAKON şemasını kaynak kodlu bir metin dosyasına dönüştürür.
  4. Bu metin dosyası projeye olağan şekilde dahil edilmiştir.
    Diyagramlardan kod üretimi şu anda birkaç editör tarafından desteklenmektedir. Bu makaledeki örnekler DRAKON Editor'da yapılmıştır.

Bir diyagramdan kod oluşturma

Diyagramda, DRAGON, yürütme akışının kontrolünü ele alır. Bu nedenle, simgelerdeki kaynak kod parçaları, aşağıdaki gibi anahtar kelimeler içermemelidir: eğer, başka, değiştirmek, dava, için, süre vb.


Simgelerin içinde yalnızca basit, açık kod bulunmalıdır: aritmetik ifadeler, değer atamaları, işlev çağrıları, karşılaştırmalar. Ancak dallanma ve döngüler, DRAKON dilinin yapıları tarafından uygulanır.



Kod oluşturma aşağıdaki gibidir:

  • Her diyagramdan bir fonksiyon oluşturulur.
  • Diyagramın adı, işlevin adı olur.
  • Fonksiyon parametreleri, diyagram adının sağ tarafında bulunan "Formal parametreler" simgesinden alınır.
  • Fonksiyonun gövdesi, diyagramın yapısına ve simgelerin içeriğine göre oluşturulur.

Şek. 1, DRAKON-JavaScript hibrit dilinde ve oluşturulan JavaScript kodunda küçük bir diyagram örneğini gösterir:


Metin içeren dikdörtgen konsol günlüğü (kedi, köpek) incirde. 1, "Eylem" simgesidir. Bir Eylem simgesine ne kadar kod yerleştirilebilir? Bir simgenin bir düşünce içermesini sağlamak için çaba gösterilmelidir. Bazen bir kod satırı, bazen birkaç satır.
Oluşturulan kod, simgelerin numaralarını gösteren yorumlarla sağlanır. Düzenleyicideyken Ctrl+I tuşlarına basarak herhangi bir simgeye hızlıca atlayabilirsiniz.

Şekil 1. DRAKON-JavaScript diyagramı ve ondan oluşturulan kod.

Soru Simgesi

Dallanma için Soru ve Seçim simgeleri kullanılır.


Simge "Soru" (Şekil 2) tasarıma karşılık gelir if-then-else.


kelimeler yerine dikkat doğru ve yanlış kelimeler kullanılır Evet ve Değil(geçilebilir Evet ve hayır).


"Doğru" ve "yanlış" - bir bilim adamının tarzında muhteşem görünüyor. Ancak, bir kişi erken çocukluktan tanıdık “evet” ve “hayır” a daha yakındır.


yazıtlar Evet ve Değil takas edilebilir. “Soru” simgesinden çıkışların konumu değişmeden kalır. Bir çıkış aşağı iner ve diğeri sağa gider. DRAKON dilinde dallanma her zaman sağa yönlendirilir, bu nedenle simgenin sol tarafından çıkmak yasaktır. Bu öngörülebilirlik, okuyucunun çıkışları nerede arayacağını önceden bildiği için grafiğin daha kolay okunmasını sağlar.


DRAKON dilinin bir başka özelliği de dallanma için tam eşkenar dörtgen değil, kesik bir eşkenar dörtgen kullanılmasıdır. Bu, grafikte yerden tasarruf sağlar.




İncir. 2. Soru Simgesi

Görsel mantık formülleri

DRAKON dili mantıksal operatörleri gereksiz kılıyor Ve, VEYA ve OLUMSUZLUK, ayrıca "eşit değil" operatörü. Mantıksal işlemlerin kendileri elbette gereklidir. Ancak metin operatörleri yerine DRAKON görsel mantıksal formüller sunar.


Görsel bir mantıksal formül elde etmek için birkaç Soru ikonunu bağlamalısınız (Şekil 3'teki gibi).


İnkardan kurtulmak özellikle hoş. İnkar sezgisel değildir, hatalar ve rahatsızlık getirir. Olumsuzlama (mantıksal operatör OLUMSUZLUK) etiketleri yeniden düzenlenerek DRAKON dilinde elde edilir. Evet ve Değil.


Mantıksal ifadelerin metin gösterimi kesinlikle daha kompakttır. Ancak, görsel formüllerin okunması daha kolaydır. İşlenen değerlerinin olası kombinasyonlarının her biri bir parmakla izlenebilir.




Şek. 3. Görsel mantık formülleri

Bir ok ile döngü

DRAKON dilinde normal yürütme sırasını belirtmek için oklara gerek yoktur. Bir sonraki simge her zaman alttadır. Ok, yalnızca yürütme akışının diyagramı yukarı atlaması gerektiğinde gereklidir. Böyle bir yukarı sıçrama, bir döngü anlamına gelir. Bu nedenle DRAKON dilindeki ok bir döngünün işaretidir. DRAKON şemasına üstünkörü bir bakışla oklar hemen fark edilir. Bu, döngülerin hemen görünür olduğu anlamına gelir. Bu, diğer grafik dillerine kıyasla DRAKON'un ciddi bir avantajıdır. Döngü aramak zorunda değilsiniz.


Yani, “Soru” simgesini bir okla birleştirirseniz, bir döngü elde edersiniz. Bu yapıların bir analogudur. süre ve yaparken. Şekil 4, çeşitli ok döngülerini göstermektedir.
Döngüdeki oklu "Soru" simgesi, döngünün çıkış durumunu kontrol eder. Tabii ki, bir "Soru" simgesi yerine birkaç tane olabilir. Ardından, döngüden çıkmaktan görsel mantıksal formül sorumludur.




Şekil 4. Ok döngüleri

Seçim Simgesi

“Soru” simgesi mantıksal bir ifade içerir, yani iki değer alabilir: Evet ve Değil. Tipik bir örnek, iki nesneyi karşılaştırmaktır. Bazı ifadeleri birkaç değerle karşılaştırmanız gerekirse, "Seçim" simgesi kullanılır (Şekil 5). Bu tasarımla uyumludur cadı davası.


"Seç" simgesindeki ifadenin karşılaştırılacağı değerler "Seçenek" simgelerine yerleştirilir. En sağdaki seçenekte metin yoksa, "diğer tüm değerler" anlamına gelir. Böyle boş bir seçenek bir anahtar kelime gibidir varsayılan operatörün içinde değiştirmek.
En sağdaki seçenek, yukarı çıkan bir okla bitebilir. Bu durumda yine bir ok döngüsü ile uğraşıyoruz. Böyle bir döngüde, çıkış koşulundan “Soru” simgesi değil “Seçim” simgesi sorumlu olacaktır.




Şekil 5. Seçim Simgesi ve Seçenek Simgeleri

Simge "Çevrimi İÇİN"

Döngüler yerine için ve her biri için DRAGON-JavaScript "LOOP FOR" simgesini kullanır. "Çevrim İÇİ" (Şek. 6) simgesi birkaç türde olabilir.


anahtar kelimeden sonra ise her biri için ve noktalı virgülden önce bir değişken vardır, dizi üzerinde yineleme yapmak için kod oluşturulur. Dizi öğeleri (ancak dizinleri değil) değişkene yerleştirilecektir.


anahtar kelimeden sonra ise her biri için iki değişken vardır, DRAKON Editor nesnenin özellikleri (karma tablo girişleri) üzerinde yinelemenin gerekli olduğunu anlayacaktır. Numaralandırmaya yalnızca nesnelerin kendi özellikleri dahil edilecektir.


Döngünün üçüncü versiyonu, noktalı virgülle ayrılmış üç ifadenin varlığını ima eder. Bu geleneksel döngüdür. için C ve Java dilleri için tipik olan .


“Cycle FOR” simgesinin kontrolü altındaki döngüden “Soru” veya “Seçim” simgesi kullanılarak erken çıkış mümkündür. Bu çıktı kabaca anahtar kelimeye karşılık gelir kırmak.




Şekil 6. DRAGON-JavaScript'te "Döngü İÇİ" Simgesinin Farklı Görünümleri

Döngü başına yalnızca bir giriş

DRAKON dilinde çevrimlere bir kısıtlama getirilmiştir. Her çevrimin sadece bir girişi olabilir. Bu kısıtlamanın amacı okunabilirliği sağlamaktır. Bu kısıtlama, DRAKON'u Dijkstra'nın tanımladığı gibi yapılandırılmış programlama çerçevesinde tutar.


Birden çok döngü çıkışına izin verilir, ancak yalnızca bir giriş olmalıdır. Şek. 7, iki çıkışı olan döngüleri gösterir. İzin verilir. Şek. 8 yasak döngülerin örneklerini gösterir. Yasak çünkü farklı şekillerde girilebilirler.
Ancak bu yasak döngülerin görünümünü ezberlememelisiniz. DRAKON Editor bu tür döngüleri otomatik olarak algılayacak ve bir hata üretecektir.




Şekil 7.İki çıkışa sahip izin verilen döngüler


Şekil 8.İki girişli yasak döngüler

Metin yapılı programlamadan farklılıklar

Gördüğünüz gibi, DRAKON dilinin simgeleri ve makro simgeleri, metin tabanlı yapılandırılmış programlamanın standart yapılarına karşılık gelir. Bununla birlikte, farklılıklar da vardır. Metin, girintili olsa bile tek boyutlu bir nesnedir. Ve diyagram iki boyutludur. Diyagramda, ifade gücünü artıran ek bir serbestlik derecesi görünür. Örneğin, tekrarlamadan metin tabanlı bir programlama dilinde deneyin ve gitŞekil 1'deki gibi bir algoritmayı tasvir edin. 9.


Metne kıyasla ek özgürlüğe rağmen, DRAGON hala anarşiyi vurmanıza izin vermiyor. Kuralları düzensizliği önleyecek kadar katıdır. DRAKON, esneklik ve titizlik arasında makul bir uzlaşma sağlar.



Şekil 9. Yalnızca metinle tasvir edilmesi zor bir algoritma

Bir grafik dilin faydaları

DRAKON dilinin ilginç bir kaderi var. Temel ilkeleri Dijkstra'nın kendisi tarafından belirlendi. DRAKON, şu anki halini Rus uzay endüstrisinin derinliklerinde aldı. DRAKON dilinin kurallarının tesadüfen oluşmamış olması dikkat çekicidir. Önce odak gruplarında test edildiler ve ardından gerçek uzay projelerinde mükemmelleştirildiler.
Peki DRAGON'un güçlü yönleri tam olarak nedir?


DRAKON'un grafiksel bir dil olduğu gerçeğiyle başlayalım. Ve bir grafik dilin metne göre temel avantajları vardır.


İlk olarak, düşünceler çizgiler boyunca rastgele bulaşmaz, kareler veya simgeler içine alınır. Bir düşünce - bir kare. Farklı düşünceler bir karmaşada birbirine yapışmaz.


İkinci olarak, algoritmadan geçen yol bir parmakla (veya bir bakışla) izlenebilir. Sonrasında eğer aramaya gerek yok başka. Çizgiyi takip edin ve sağ kareye ulaşacaksınız. Şu soruya bir cevap aramak için gözlerinizi kaynak kodun üzerinde gezdirmeye gerek yok: Sonra ne oldu?


Grafiklerin de neredeyse sihirli bir özelliği vardır. Bir kişi bir şemaya bakar ve aniden ek bir anlayış gelir. Daha önce görünmeyen bağlantılar görünür hale gelir. Bu nadiren metinle olur.

Özel ergonomik kurallar

Ancak DRAKON sadece çizelgeler değil, ayrıntılı çizelgelerdir. DRAGON diyagramlarının anlaşılması, geleneksel akış şemalarından daha kolaydır. Bu, özel ergonomik tekniklerle sağlanır. İşte onlardan bazıları.

  • Hat geçişleri yasaktır. Genel olarak. Kavşaklar, görsel analizcimizi çizgilerin birbirine değdiğinden şüpheleniyor, bu da bir şekilde bağlantılı oldukları anlamına geliyor. Bu şüpheler ek zihinsel çalışma yaratır. Gereksiz işler atılmalıdır.
  • Başlangıç, algoritmanın adını içerir ve her zaman diyagramın sol üst köşesinde bulunur. Bu nedenle, başlangıç ​​için aramanıza bile gerek yoktur. Genelde olduğu yerdedir.
  • Diyagramın sadece bir ucu vardır. Yol boyunca ne olursa olsun (istisnalar hariç), her zaman sona geleceğiz.
  • Yalnızca düz çizgilere izin verilir. Eğriler ve kıvrımların yanı sıra gereksiz bükülmeler yok.
  • Yalnızca kesinlikle dikey ve kesinlikle yatay çizgilere izin verilir. Eğimli çizgiler yasaktır. Matematik hayranları için açıklama: DRAKON şeması düz bir dikdörtgen grafiktir (Manhattan grafiği). İnsan görsel aparatı, düz dikey çizgilerle birbirine bağlanan nesneleri anında kavrar. Ancak Amerikan Rüyası Eğrisinin nereye gideceğini takip etmek, okuyucunun ek konsantrasyonunu gerektirir.
  • DRAKON şeması yukarıdan aşağıya doğru yürütülür. Bu kural, bir sonraki simge için grafiği çılgınca tarama ihtiyacını ortadan kaldırır. Bir sonraki simge her zaman alttadır. Giriş, simgenin en üstünde, çıkış ise alttadır. Bir sonraki simgenin nerede olduğunu bildiğimiz için oklara gerek yoktur. Yeterince basit çizgiler. Her simgenin yanındaki oklar görsel gürültüdür. Oklardan simgeleri bağlama görevini kaldırdıktan sonra, onlara özel bir görev atayabilirsiniz. DRAKON'da ok, bir döngü anlamına gelir.
  • Dallanma sadece sağda gerçekleşir. Bu, öngörülebilirlik ve tekdüzelik açısından büyük bir yardımdır.
  • Aynı dikeyde bulunan simgeler aynı genişliğe sahip olmalıdır. Bu, simgelerin tek bir bütüne ait olduğu hissini verir. Herkes aynı genişliğe sahip olduğunda ve açılır simgeler olmadığında, göz diyagram üzerinde kolayca ve serbestçe kayar.

Yukarıdaki kurallar büyük pratik değere sahiptir. Bir yandan, sanatçının çılgınlığını dizginlemek için tasarlandılar. Onlarla karmaşık bir diyagram oluşturmak daha zordur. Öte yandan, çizelgelere tanınabilirlik getirirler. Diyagramlar sadece yazarları için netleşmez.


Şek. Şekil 10 ve 11, gerçek örnekler kullanarak DRAKON dilinin ergonomik tekniklerini göstermektedir.




Şekil 10. Bir örnek üzerinde DRAKON dilinin ergonomik teknikleri


Şekil 11. DRAKON dilinde başka bir diyagram örneği
Ergonomik tekniklerin yanı sıra DRAKON dili, başka hiçbir yerde bulunmayan benzersiz özelliklere sahiptir.

Ne kadar doğru, o kadar kötü

DRAGON'un görüntü için bir aracı var mutlu yol, veya Kraliyet Yolu. Kraliyet yolu, algoritmanın en başarılı yoludur. Bazı algoritmalarda “başarılı/başarısız”, “iyi/kötü” kavramları uygulanamaz. Onlarda kraliyet yolu en çok beklenen yolu gösterir. Kraliyet yolu, diyagramın sol tarafında bulunan dikey boyunca uzanır. Bu dikeye şiş denir. Daha az olası ve daha az başarılı senaryoların yanı sıra hata işleme, diyagramın sağ tarafında yer alır. Dahası, durum ne kadar kötüyse, o kadar sağa yerleştirilmelidir. İstisnalar atan veya diyagramın sağına bir hata kodu döndüren kodu yerleştirmek iyi bir stildir.


ortak kader

Bazen, algoritma boyunca farklı yollarda farklı, ancak bir şekilde ilgili eylemlerin gerçekleştirilmesi gerekir. Örneğin bir değişkene farklı değerler koyun. Ortak bir kader, ilgili eylemlerin farklı dikey çizgilerde, ancak aynı yatay çizgide yer almasıdır.


Pirinç. 12, kraliyet yolu ile bir şişin yanı sıra “ortak kader” tekniğinin kullanımını gösterir.




Şekil 12. Kraliyet yolu ve ortak kader

Siluet

Siluet, EJDERHA'nın gerçek bir pırlantasıdır. Siluet, diyagramı mantıksal parçalara ayırmanıza izin verir. Programlamada bu genellikle altyordam ayrıştırması kullanılarak yapılır. Alt programlar güçlü bir yöntemdir. Ancak bazen, alt programı görsel olarak ana programa yakın bir yere yerleştirmek ve ayrıca parametreleri geçmek ve değerleri döndürmek ile uğraşmaktan kaçınmak istenebilir. Bu amaçlar için siluet mükemmeldir. Siluetin başka bir kullanımı sonlu durum makineleridir. Ama bunu başka bir yerde konuşacağız.
Algoritma bir düzlemde ayrıştırılamaz, böylece çizgilerin kesişimi olmaz. Bu durumda, duruma bağlı olarak, ya altyordamlar kullanılarak ayrıştırma ya da bir siluet kullanılır.


Siluet, tek bir bütünleşik bloğa bağlanan birkaç küçük diyagramdan oluşur. Bu küçük diyagramlara siluet dalları denir. Her dalın üstünde "Şube Başlığı" simgesi, altta "Adres" simgesi bulunur. Şube başlığında şubenin adı, adreste ise bir sonraki şubenin adı belirtilir. Şube adları, diyagramın üst kısmındaki yatay bir satırda bulunur. Bu sayede sadece dal başlıklarından geçerek algoritmanın özünü yakalayabilirsiniz. Siluet üç asil soruyu yanıtlıyor:

  1. Sorunun adı nedir?
  2. Kaç parçadan oluşur?
  3. Bu parçalara ne ad verilir?

Şekildeki örneği düşünün. 13. Kraliyet sorularının cevapları:

  1. Sorunun adı nedir? Bağlantılı listeyi sıralayın.
  2. Kaç parçadan oluşur? Dört üzerinden.
  3. Bu parçalara ne ad verilir? Bir bağlantı matrisi oluşturun. Döngüleri kontrol edin. İlişki matrisini gözden geçirin. Tamamlamak.


Şekil 13. DRAGON-şeması "siluet"

Siluet döngüsü

Siluet dalları soldan sağa doğru sıralanmalıdır. Bazı durumlarda, bazı şubeleri veya şube gruplarını birkaç kez yürütmek gerekir. Bu tasarıma siluet döngüsü denir. "Adres" ikonu kendi şubesini veya solunda bulunan bir şubeyi gösteriyorsa, özel bir etiketle işaretlenmelidir. Aynı etiket ilgili "Dal Başlığı" simgesine de yerleştirilmelidir (bkz. Şekil 14). Etiketin amacı silüet döngüsünü görünür kılmaktır.




Şekil 14. Siluet döngüsü ve etiketleri

Siluet dallarının bağlanması yasaktır

İki siluet dalının bağlantıları (Şekil 15'teki gibi) yasaktır. Siluet içindeki her dal bağımsız olmalıdır.




Şekil 15. Siluet dallarının bağlanması yasaktır.

Grafik boyutu

DRAKON dilinde programlama yaparken şu soru ortaya çıkar: diyagramlar ne büyüklükte olmalıdır? Cevap: Ne kadar az, o kadar iyi. Görsel sahnede ne kadar az nesne olursa o kadar net olur. Metin programlamada böyle bir kılavuz vardır: tüm işlevin ekrana sığması iyidir. DRAKON şemaları için de benzer tavsiyeler verilebilir. Büyük çizelgelerden kaçının. Algoritmanın tamamı bir bütün olarak görüldüğünde, anlaşılması çok daha kolaydır.
DRAKON'da programlama yapmak için büyük bir monitöre sahip olmak daha iyidir. En az 1080 puan yüksekliğinde. O zaman DRAKON şemalarını yapay olarak kısaltmanız gerekmeyecek.


DRAGON şeması siluet ekrana yükseklikte sığmalıdır, ancak genişlik olarak olması gerekmez. diyagramlar siluet 2000 pikselden çok daha geniş olabilir. Bu iyi. Siluetin tüm dallarını aynı anda görmek gerekli değildir. Ana şey, şu anda üzerinde çalıştığınız dalın ekranda tam olarak görünmesi gerektiğidir.

DRAKON programlama eleştirisi

DRAKON programcılığına yönelik eleştirilerin ana yönlerini ele alalım ve bunlara cevap vermeye çalışalım.

  • "DRAGON şemaları, metin tabanlı programlardan daha fazla ekran alanı kaplar." Bu doğru. Ancak DRAGON'un görevinin karmaşıklığı olduğu gibi göstermek olduğunu unutmamalıyız. Programın okuyucusu karmaşık yapıları kafasında açmak zorunda değildir. Ona açıkça gösterilmelidirler.
  • "Basit algoritmalar metin biçiminde daha iyi görünür." Belki. Merhaba dünya herhangi bir dilde zarif görünüyor. Ancak gerçek hayatta her şey basit değildir. Biri ortaya çıkar çıkmaz eğer diğerinde yuvalanmış eğer, DRAGON kazanır.
  • "DRAGON'un istisnaları gösterecek bir yolu yok." Böyle bir sorun var. DRAKON diline son zamanlarda istisnalar eklendi, ancak tüm uygulamalar bunları desteklemez. Uygulamalar zamanında olmasa da uygun programlama dilinde try/catch blokları yazabilirsiniz.
  • "DRAGON şemalarının çizilmesi uzun zaman alır." DRAGON diyagramlarını özel düzenleyicilerde çizmek, örneğin Visio'da olduğundan çok daha kolaydır. Ve bazılarında çizim yapmak neredeyse yazmak kadar kolay hale geldi.
  • "Fark ve birleştirme için eksik araçlar." Bu maalesef böyle. Bir sürüm kontrol sistemi ile çalışırken, oluşturulan kaynak dosyaları karşılaştırmanız gerekir.
  • "DRAKON şemalarında hata ayıklamak için hiçbir araç yok." Bu doğru. Ancak oluşturulan kodda hata ayıklayabilirsiniz. Belirli bir kod parçasının diyagramda nereye ait olduğunu gösteren etiketlere sahiptir.

Dragon diline genel bakış

Şekil 16, DRAKON diline genel bir bakış sağlar.




Şekil 16. Dile genel bakış DRAKON

Ejderha dili araçları

DRAKON dilinin ilk uygulaması GRAPHITE-FLOX sistemiydi (Şekil 17). GRAPHITE-FLOX 1986-1996'da kuruldu. Federal Devlet Üniter Girişim NPT'lerinin uzmanları AP im. Pilyugin, V.D. Parondzhanov. Bu ortam, fırlatma araçları ve uzay araçları için kontrol sistemlerinin tasarımı için tasarlandı.


GRAPHITE-FLOX kapalı bir gelişmedir, bu nedenle bu konuda nispeten az şey bilinmektedir. GRAPHITE-FLOX kullanılarak oluşturulan bir uzay aracı listesi görüntülenebilir.


90'ların başında başka bir DRAKON editörü yaratıldı. Geliştirme, M.V.'nin adını taşıyan Uygulamalı Matematik Enstitüsü'nde gerçekleştirildi. Keldysh, L.K. Eisymont. Eisymont'un düzenleyicisi (Şekil 18) indirilebilir ve çalıştırılabilir, ancak artık desteklenmemektedir. Editör MS DOS altında yazılmıştır, bu nedenle DOSBox'ın modern bilgisayarlarda çalışması gerekebilir.


2008 yılında, Gennady Tyshov'dan IS Dragon'un editörü serbest bırakıldı (Şekil 19). IS Dragon aktif olarak desteklenir ve geliştirilir. IS Dragon, şemalardan program kodunun oluşturulmasını uygular. IS Dragon'un ilginç özelliklerinden biri, bir programlama dilinde bir kod ve doğal bir dilde bir açıklamayı tek bir simgeye yerleştirme yeteneğidir. IS Dragon'un koşulsuz saygınlığı, sözde "simgelerin hesabı"dır. Simge hesabı, kullanıcının diyagram çizmesine yardımcı olan ve diyagramın DRAKON dilinin kurallarını ihlal etmemesini sağlayan bir düzenleme tekniğidir. IS Dragon'un eksiklikleri arasında standart olmayan bir kullanıcı arayüzü ve kod oluşturmadaki bazı rahatsızlıklar not edilebilir. IS Dragon ticari bir üründür.


DRAKON Editor, başka bir modern DRAKON editörüdür (Şekil 20). DRAKON Editor, Stepan Mitkin liderliğindeki bir grup meraklı tarafından geliştirildi. DRAKON Editor simge hesabını desteklemez. Bu, DRAKON şemalarının, vektör grafik editörlerinde olduğu gibi, ilkellerden manuel olarak monte edildiği anlamına gelir. Ancak DRAKON Editor'daki kullanıcı arayüzü mümkün olduğu kadar basittir. IS Dragon'dan daha tanıdık bir düzende inşa edilmiştir. DRAKON Editor ortamının ana avantajı, programlama ve kod oluşturma kolaylığıdır. DRAKON Editor, C, C++, C#, Java, Processing, JavaScript, Lua, Erlang, Python, Tcl, Verilog, AutoHotkey, D ve Go dahil olmak üzere birden fazla programlama dilini destekler. Bazı diller için durum makineleri oluşturmak mümkündür. Nools uzman sistemi için kurallar desteklenir. E. Tyugu tarafından UTOPIST dilinin bir alt kümesini uyguladı. DRAKON Editor açık kaynak kodludur.


DRAKON dili için ilginç bir uygulama Oleg Garipov tarafından Integrator CodeView projesinde icat edildi. CodeView, mevcut kodu birbirine bağlı bir DRAGON şemaları seti olarak görselleştirmenizi sağlar. Entegratör CodeView'un özelliği, bireysel yöntemlerin değil, çağrı grafiği, yığın vb. dahil olmak üzere tüm projenin görselleştirilmesidir. Entegratör CodeView, yalnızca algoritmaları değil aynı zamanda verileri de görsel olarak göstermesi bakımından benzersizdir. Entegratör sistemindeki veri görselleştirme motoru DRAKON ile birlikte çalışır.


DRAKON Editor Web, DRAKON diline dayalı ticari bir bulut tabanlı çözümdür. DRAKON Editor Web, teknik özellikler, iş prosedürleri ve kontrol listeleri için tasarlanmıştır. DRAKON Editor Web, DRAKON Editor ile hiçbir şekilde bağlantılı değildir ve diyagramlardan kod oluşturmayı desteklemez. DRAKON Editor Web'in avantajları arasında uygun bir editör, işbirliği ve mobil cihazlar için destek belirtilmelidir.




Şekil 17. GRAPHITE-FLOX sisteminde DRAKON şeması


Şekil 18. DRAKON editörü Eisymont


Şekil 19. IS Dragon'da açıklamalar içeren program


Şekil 20. DRAKON Editörü

sonuçlar

Özetleyelim. DRAKON, uzayda sertleştirilmiş pratik bir dildir. Akış şemalarına yapı, düzen ve tekdüzelik getirdi. DRAGON şemalarının öngörülebilirliği ve temizliği görsel programlama yapar İşler.


Gerçek projelerin deneyimi, DRAKON üzerinde programlamanın mümkün olduğunu göstermiştir. Bir yandan, DRAGON metinden daha etkileyicidir. Diğer yandan programların okunabilirliğini arttırır. Ayrıca, DRAGON şemaları şeklindeki programlar, tıpkı bir uzaylı uzay gemisinden olduğu gibi görünüyor (birçok şey renk şemasına bağlı olsa da). Şahsen ben kolayca DRAKON'a geçtim. Aksine, bazen geleneksel metin stilinde programlamanız gerektiğinde sakıncalıdır.

Etiket ekle

Program geliştiricisi Tyshov Gennady Nikolaevich
Severodvinsk, OAO SPO Arktika, www.spoarktika.ru'da çalıştı.

IS Dragon programı şunlara yöneliktir:
- faaliyetlerinizin pratik algoritması,
- görevlerinizi formüle etmek,
- bilginizin resmileştirilmesi.

Program bir araçtır:
- görsel düşünme ve iletişim tekniği,
- aktivite algoritmalarının ve programlarının görsel tasarımı,
- görsel programlama,
- algoritmik aktivite temellerinin oluşumu.

"IS Dragon" (Entegre Ortam Dragon) programı, Dragon algoritmalarıyla çalışmak için bir ortamdır.
IS Dragon'un yardımıyla birçok aktiviteye algoritmik bir kültür tanıtılıyor.

"IS Dragon" programını indirin

Kullanıcı talimatları

    Kullanıcı Dragon Leaf veya Dragon Schematic'in grafik dosyasını kaydedebilir. Bir grafik düzenleyicide bir grafik dosyası açarak, örneğin kuruluşun grafik özelliklerini ekleyebilir, bir basılı kopya yazdırabilirsiniz.

    Kullanıcı Dragon Leaf veya Dragon Schematic görüntüsünü sistem panosuna kopyalayabilir. Sistem arabelleğinden bir görüntü, düzenlenebilir metin veya grafik belgelerine yapıştırılabilir. Görüntü, düzenleme sürecinin öğeleriyle (bir grafik imleç, simge giriş noktalarının seçilmesiyle) ekrandan panoya kopyalanabilir, bu, IS Dragon kullanımı için kılavuzlar ve Dragon algoritmaları kullanıcıları için kılavuzlar oluşturmanıza olanak tanır. .

    Kullanıcı, Dragon algoritmasının basılı kopyasına ek olarak, A-, B-, P-metinlerinden bilgi içeren bir metin dosyası alabilir. Bu, tam özellikli Dragon algoritmalarının yayınlanması olasılığını yaratır.

    Kullanıcı, Dragon Algoritmalarının metinlerinde dosya adları veya bir İnternet bağlantısı belirtebilir. Dosya adını vurguladığınızda, dosyayı yürütmek için çalıştırabilir veya dosyayı veya bağlantıyı açabilirsiniz. Açma, bilgisayarda yüklü olan dosya uzantıları ve uygulamaların ilişkilendirilmesi kullanılarak gerçekleştirilir. Dosya adında konum yolu yoksa, program klasöründe dosya aranarak dosya seçilir. Gelecekte, dosyanın alt klasörde de aranması planlanıyor " DDosyalar". İlerleyen zamanlarda parantez içinde dosya isimleri ve linklerin yerleştirilebilmesi öngörülmektedir. » metinde vurgulamadan kısayol tuşuyla yürütmek için.

    Kullanıcı, dosyaları belirleme yeteneğini kullanarak, algoritma için İnternet alanı da dahil olmak üzere harici ve bağlamsal bir bilgi ortamı yaratır.

Programcı için talimatlar

    Kullanıcı, seçilen programlama dilinde program kodu şablonları içeren bir metin dosyasına sahip olabilir, bunu mesaj penceresine kopyalayabilir. Mesaj penceresinde bir şablon seçin ve şablon metnini algoritmanın metinlerine aktarmak için sistem arabelleğini kullanın.

    Kullanıcı toplu iş dosyasının kullanımını ayarlayabilir " ejderha.bat» program kodunu bir programlama dilinde program dosyalarına monte ederken. Bu durumda, program dosyalarının bir listesi oluşturulur, bir toplu iş dosyasına aktarılır ve toplu iş dosyası yürütülmek üzere başlatılır. Bu, çeviri ve hata ayıklama ile programlamanın bir kombinasyonunu sağlar.

    Kullanıcı, program kodunun montaj modunu, simgelerde eksik olan R-metninin "" metniyle bir yorumla değiştirilmesiyle ayarlayabilir. ……Yazı yok". Bu, hata mesajlarını engellemenize ve algoritma geliştirmenin ilk aşamalarında çeviri yapmanıza olanak tanır.

    Kullanıcı, işaretli simgelerin yürütme izleme kodunun dahil edilmesiyle program kodu oluşturma modunu ayarlayabilir.

    Kullanıcı, Dragon listesi için algoritma listesinin metnini oluşturabilir. Algoritma listesinin metni, algoritmanın sürümlerini programlı olarak karşılaştırmanıza, değişiklik yerlerini bulmanıza olanak tanır.

    Kullanıcı Silhouette şeması için özelliği ayarlayabilir makine teknolojiye göre sonlu otomatların otomatik programlanmasını gerçekleştirmek DEĞİŞTİRMEK. Olasılık, S.D.'nin önerisiyle tanıtıldı. Efanova.

    Algoritmaları ve program kodlarını içeren Dragon listelerine ek olarak, kullanıcılar için yazılım çalıştırma talimatlarını içeren Dragon listelerinin de oluşturulması önerilir. Talimatlar, IS Dragon ile birlikte kullanıcılara iletilir. IS Dragon'da böyle bir çalışma pratiği A.A. Araptanov 1C sisteminde.

Program, çeşitli programlama dilleri için ayarlara sahiptir. Program, Dragon şemalarını operatörleri olan dillerdeki programların kaynak metinlerine birleştirmenize izin verir: yorum, etiket, koşulsuz atlama (GOTO), koşula göre atlama; örneğin, 1C, Delphi, C ailelerinin dilleri Simgelerin program kodunun bir dosyaya montajı dahili Rota çevirmeni tarafından gerçekleştirilir.

IS Dragon Ekran Koruyucu


Ejderha yaprağı nedir?


    Ejderha yaprağı programlama modunda görüntülenir.

    Metin giriş noktaları (4 kareye kadar) A, B, S, P metinleridir.

    A, B noktaları eşlik eden bilgileri girmek içindir, P noktası program kodunu girmek içindir, S noktası birleştirilmiş program kodunu görüntülemek içindir. Metnin varlığında kare kararır.

    tanıdık? simgelere metin girmek için zorunlu yerler işaretlenmiştir.

Ejderha Şemasını Düzenlemek

Düzenleme için Simge 3 seçilir.
İşaret "?" Adres ve Vetka simgelerinde kontrol devri yoktur. Kontrolün transferi, kesikli bir çizgi ile görsel olarak temsil edilir.


özellikler

Programın ayırt edici bir özelliği, grafik girişinin yüksek derecede otomasyonudur.

İkinci özellik, her simgenin birkaç (4'e kadar) metin girişi düzeyine sahip olmasıdır. Bu seviyelerden biri simgenin "gövdesinde" görüntülenir, diğeri program kodunun bir parçasını içerebilir. Kalan seviyeler (A-text, B-text, P-text, S-text), ayrıntılı yorumlar, bağlantılar ve destekleyici bilgiler gibi keyfi olarak kullanılabilir.

İş süreçlerini görüntülemek için simgeler, iş sürecindeki katılımcıların adlarıyla tamamlanır.

Görüntülenen tüm metinler çok satırlı ve büyük olabilir.
Simgedeki maksimum satır sayısı program ayarlarında belirlenir, tam metin sekmedeki metin düzenleyicide görüntülenir.

DRT biçimi açıklaması

IS Dragon ile çalışmak için yönergeler

Yazdırma şu şekilde yapılır: grafik dosyasını kaydedin, PAINT ile yazdırın. Birkaç A4 kağıda ölçekleme ve düzen ile yazdırma seçenekleri vardır, yazdırma ayarları vardır.

EJDERHA Dersleri

IS Dragon programı ile çalışma tekniklerine hakim olmak için video izlemekte fayda var. İşlem, düzenleyicinin ilk başlatılmasından alınan ürün yazılımının mikroişlemciye indirilmesine kadar gösterilir.

IS Dragon programının ek web sitesi

Metin seçenekleri ve dosyaları Dragon-ders şemaları

Gennady Tyshov'un taslakları

Eşlik eden bilgiler, yasal ve örgütsel ve idari belgelerin bir göstergesini içerebilir, belge parçalarını içerebilir.

Ekteki bilgilerin mevcudiyeti, yasal olarak önemli algoritmalarla çalışan kişiler için önemlidir. Simgeye eşlik eden bilgilerin varlığı, simgede görüntülenen yasal normun kökenini ve geçerliliğini haklı çıkarır. Yasal olarak önemli Dragon algoritmasının uygunluğunu belirleyen eşlik eden bilgilerin varlığıdır.

IS Dragon programı, V.D. tarafından oluşturulan görsel algoritmik diller Dragon ve Gnome temelinde geliştirildi. Parondzhanov ve devlet standardı GOST 19.701-90 (ISO 5807-85). Dragon dilinin fikirleri ve hedefleri pratik ve yaygın kullanım için geliştirilmiştir.

Prosedürel bilgi, algoritma - formun Dragon şemalarında görüntülenen nesneyle yapılan eylemlerin sırasını açıklar İlkel ve Siluet.
bildirimsel bilgi- görünümün Ejderha şemasında görüntülenen "Bu nedir?" Sorusunu yanıtlar Cüce.

Dragon şemalarının oluşturulması ve düzenlenmesi IS Dragon'da gerçekleştirilir.

Tabletlerde Dragon algoritmaları
IS Dragon'da oluşturulan Dragon algoritmalarını kullanmanın bazı sorunları forumda "IS Dragon ve Android" başlığında tartışılmaktadır.

IS Dragon diğer işletim sistemlerinde çalışır
UNIX benzeri işletim sistemlerinde Wine programı ile çalışır.
MacOS'ta Parallels Desktop ile çalışır.

Simge 19 ve 21'e yönelik eylemler, iş sürecindeki katılımcılar tarafından gerçekleştirilir.
Ejderha yaprağı programlama modunda görüntülenir.
Metin giriş noktaları (4 kareye kadar) A,B,S,P-metinleridir: A,B eşlik eden bilgileri girmek için, P program kodunu girmek için, S birleştirilmiş program kodunu görüntülemek için. Metin varsa, kare karanlıktır.
Sayfaya üstbilgiler ve altbilgiler eşlik edebilir: üst orta, sol alt, alt orta, sağ alt.
»?« işareti, bloğun işlevselliğini sağlamak için simgelere metin girmek için zorunlu yerleri, simgeler bloğunda simgeleri girmek için gerekli yerleri işaretler.